Ini ialah arahan flexml yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS.
JADUAL:
NAMA
flexml - menjana pemproses dan aplikasi XML yang mengesahkan daripada DTD
SINOPSIS
flexml [-ASHDvdnLXV] [-stengkorak] [-ppubid] [-iinit_header] [-uuri] [-rrootags] [-atindakan]
nama[.dtd]
DESCRIPTION
Flexml dibaca nama.dtd yang mestilah DTD (Definisi Jenis Dokumen) yang menerangkan format
dokumen XML (Extensible Markup Language) dan menghasilkan XML "mengesah". pemproses
dengan antara muka untuk menyokong XML permohonans. Aplikasi yang betul boleh dihasilkan
pilihan daripada "fail tindakan" khas, sama ada untuk memaut atau gabungan teks dengan
pemproses.
Pemproses yang dihasilkan hanya akan mengesahkan dokumen yang mematuhi sepenuhnya DTD,
tanpa memanjangkan it, lebih tepat lagi kami dalam amalan menyekat peraturan XML [28] kepada
[28r] doctypedecl ::= ' '
di mana "ExternalId" menandakan DTD yang digunakan. (Seseorang mungkin berkata, sebenarnya, itu flexml
melaksanakan penanda "tidak boleh dilanjutkan". :)
Pemproses yang dihasilkan ialah a flex(1) pengimbas, secara lalai dinamakan nama.l dengan sepadan
Fail pengepala C nama.h untuk penyusunan berasingan aplikasi yang dihasilkan. Secara pilihan
flexml mengambil sebuah tindakan fail dengan tindakan per-elemen dan menghasilkan fail C dengan elemen
berfungsi untuk aplikasi XML dengan titik masuk yang dipanggil daripada pemproses XML (ia boleh
juga lipat aplikasi XML ke dalam pemproses XML untuk membuat aplikasi XML yang berdiri sendiri
tetapi ini menghalang perkongsian pemproses antara aplikasi).
Dalam "OPTIONS" kami menyenaraikan pilihan yang mungkin, dalam "FORMAT FAIL TINDAKAN" kami menerangkan cara menulis
aplikasi, dalam "COMPILATION" kami menerangkan cara menyusun pemproses yang dihasilkan dan
aplikasi ke dalam boleh laku, dan dalam "BUGS" kami menyenaraikan had semasa sistem
sebelum memberikan rujukan standard.
PILIHAN
Flexml mengambil pilihan berikut.
--berdiri sendiri, -A
Menjana a bersendirian aplikasi pengimbas. Jika digabungkan dengan -atindakan maka
permohonan akan dinamakan sebagai tindakan dengan sambungan digantikan dengan .l, jika tidak
akan masuk nama.l. Konflik dengan -S, -H, dan -D.
--tindakan tindakan, -a tindakan
Menggunakan tindakan fail untuk menghasilkan aplikasi XML dalam fail dengan nama yang sama seperti
tindakan selepas menggantikan sambungan dengan .c. Jika digabungkan dengan -A maka sebaliknya
aplikasi yang berdiri sendiri akan merangkumi fungsi tindakan.
--bodoh [nama_apl], -D [nama_apl]
Hasilkan aplikasi dummy dengan hanya fungsi kosong untuk dipanggil oleh XML
pemproses. Jika nama_apl tidak dinyatakan pada baris arahan, ia lalai kepada
nama-dummy.c. Jika digabungkan dengan -a tindakan maka aplikasi akan memasukkan
tindakan yang ditentukan dan dinamakan sebagai tindakan dengan sambungan digantikan dengan .c.
Konflik dengan -A; tersirat oleh -a melainkan salah satu daripada -SHD dinyatakan.
--nyahpepijat, -d
Menghidupkan mod nyahpepijat dalam pengimbas fleksibel dan juga mencetak butiran DTD
analisis yang dilakukan oleh flexml.
--kepala [nama_pengepala], -H [nama_pengepala]
Hasilkan fail pengepala. Sekiranya nama_pengepala tidak dinyatakan pada baris arahan,
lalai kepada nama.h. Konflik dengan -A; hidup secara lalai jika tiada -SHD dinyatakan.
--lineno, -L
Membuat pemproses XML (seperti yang dihasilkan oleh flex(1)) kira baris dalam input dan simpan
ia tersedia untuk tindakan aplikasi XML dalam integer "yylineno". (Ini dimatikan oleh
lalai kerana overhed prestasi adalah penting.)
--senyap, -q
Menghalang pemproses XML (seperti yang dihasilkan oleh flex(1)) daripada melaporkan ralat yang dijalankan
ke dalam stderr. Sebaliknya, pengguna perlu mengumpulkan mesej ralat dengan
parse_err_msg() fungsi. Secara lalai, mesej ralat ditulis pada stderr.
--lari kering, -n
"Dry-run": jangan menghasilkan sebarang fail output.
--pubid pubid, -p pubid
Menetapkan jenis dokumen menjadi "AWAM" dengan pengecam pubid bukannya "SISTEM",
lalai.
--init_header init_header, -i init_header
Meletakkan baris yang mengandungi "#include "init_header"" dalam bahagian "%{...%}" di bahagian atas
fail .l yang dijana. Ini mungkin berguna untuk membuat pelbagai flex "#define", untuk
contoh "YY_INPUT" atau "YY_DECL".
--sysid=sysid
Mengatasi id "SYSTEM" DTD yang diterima. Kadang-kadang berguna apabila dtd anda adalah
diletakkan dalam subdirektori.
--root-tags tag akar, -r tag akar
Mengehadkan pemproses XML untuk mengesahkan hanya dokumen dengan salah satu elemen akar
disenaraikan dalam dipisahkan koma tag akar.
--pengimbas [nama_pengimbas], -S [nama_pengimbas]
Hasilkan pengimbas. Jika nama_pengimbas tidak diberikan pada baris arahan, ia lalai kepada
nama.l. Konflik dengan -A; hidup secara lalai jika tiada -SHD dinyatakan.
--skel tengkorak, -s tengkorak
Gunakan pengimbas rangka tengkorak bukannya lalai.
--act-bin flexml-act, -T flexml-act
Ini ialah pilihan dalaman yang digunakan terutamanya untuk menguji versi flexml yang belum dipasang lagi.
--peningkatan-timbunan stack_increment, -b stack_increment
Tetapkan FLEXML_BUFFERSTACKSIZE kepada stack_increment (100000 secara lalai). Ini mengawal
berapa banyak timbunan data berkembang dalam setiap realloc().
--teg-awalan TALI, -O TALI
Gunakan STRING untuk membezakan berbilang versi flexml dalam kod C yang sama, sama seperti
hujah lentur -P.
--uri uri, -u uri
Menetapkan URI DTD, yang digunakan dalam pengepala "DOCTYPE", kepada yang ditentukan uri (Yang
lalai ialah nama DTD).
--verbose, -v
Beverbose: bergema setiap pengisytiharan DTD (selepas pengembangan parameter).
--versi, -V
Cetak versi flexml dan keluar.
TINDAKAN FAIL FORMAT
Fail tindakan, diserahkan kepada -a pilihan, adalah dokumen XML yang mematuhi DTD
flexml-act.dtd yang berikut:
Elemen harus digunakan seperti berikut:
"atas"
Gunakan untuk kod C peringkat atas seperti pengisytiharan global, fungsi utiliti, dsb.
"mula"
Melampirkan kod sebagai tindakan pada elemen dengan nama ""tag"" yang diperlukan
atribut. Komponen ""%C-code;"" mestilah kod C yang sesuai untuk dimasukkan dalam C
blok (iaitu, dalam "{"..."}" supaya ia mungkin mengandungi pembolehubah setempat); tambahan pula
sambungan berikut tersedia:
"{"atribut"}": Boleh digunakan untuk mengakses nilai atribut seperti yang ditetapkan dengan
atribut"="nilai dalam teg permulaan. Dalam C, "{"atribut"}" akan ditafsirkan
bergantung pada pengisytiharan atribut. Jika atribut diisytiharkan sebagai
jenis terbilang seperti
maka nilai atribut C adalah daripada jenis terhitung dengan unsur ditulis
"{"atribut"="alt1"}", "{"atribut"="alt2"}", dan lain-lain.; tambahan pula an tidak tenteram atribut
mempunyai "nilai" "{!"atribut"}". Jika atribut itu bukan penghitungan maka
"{"atribut"}" ialah rentetan C yang ditamatkan nol (jenis "char*") dan "{!"atribut"}"
ialah "NULL".
"akhir"
Begitu juga melampirkan kod sebagai tindakan pada teg akhir dengan nama yang diperlukan
""tag"" atribut; juga di sini komponen ""%C-code;"" mestilah kod C yang sesuai untuknya
dimasukkan ke dalam blok C. Sekiranya elemen mempunyai kandungan "Campuran", iaitu, telah diisytiharkan
untuk membenarkan "#PCDATA", maka pembolehubah berikut tersedia:
"{#PCDATA}": Mengandungi teks ("#PCDATA") elemen sebagai C yang ditamatkan nol
rentetan (jenis "char*"). Sekiranya elemen Kandungan Campuran sebenarnya bercampur teks dan
elemen anak kemudian "pcdata" mengandungi gabungan biasa serpihan teks sebagai
satu rentetan.
"utama"
Akhir sekali, elemen ""utama"" pilihan boleh mengandungi fungsi "utama" C XML
permohonan. Biasanya fungsi "utama" harus termasuk (sekurang-kurangnya) satu panggilan daripada
Pemproses XML:
"yylex()": Menjemput pemproses XML yang dihasilkan oleh flex(1) pada dokumen XML yang terdapat pada
input standard (sebenarnya pemegang fail "yyin": lihat manual untuk flex(1) untuk
maklumat tentang cara menukar ini serta nama "yylex").
Jika tiada tindakan "utama" disediakan maka yang berikut digunakan:
int main() { exit(yylex()); }
Adalah dinasihatkan untuk menggunakan bahagian XML <"![CDATA[" ... "]]"> untuk kod C untuk memastikan bahawa
semua aksara dihantar dengan betul ke fail output.
Akhirnya ambil perhatian bahawa Flexml mengendalikan elemen kosongtag"/"> sama dengantag><"/"tag>.
PENGESAHAN
Berikut membuat(1) serpihan fail menunjukkan bagaimana seseorang boleh menyusun flexml-program yang dihasilkan:
# Program.
FLEXML = flexml -v
# Hasilkan pemproses XML boleh dipautkan dengan pengepala untuk aplikasi.
%.l %.h: %.dtd
$(FLEXML) $
# Hasilkan sumber C daripada pengimbas fleksibel.
%.c: %.l
$(FLEX) -Bs -o"$@" "$<"
# Jana sumber C aplikasi XML untuk dipautkan dengan pemproses.
# Nota: Kebergantungan mestilah dalam bentuk "appl.c: appl.act proc.dtd".
%.c: %.bertindak
$(FLEXML) -D -a $^
# Penjanaan langsung pemproses+aplikasi XML yang berdiri sendiri.
# Nota: Kebergantungan mestilah dalam bentuk "appl.l: appl.act proc.dtd".
%.l: %.bertindak
$(FLEXML) -A -a $^
Gunakan flexml dalam talian menggunakan perkhidmatan onworks.net