Ini adalah perintah flexml yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa workstation online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS
PROGRAM:
NAMA
flexml - menghasilkan prosesor dan aplikasi XML yang memvalidasi dari DTD
RINGKASAN
flexml [-ASHDvdnLXV] [-skerangka] [-pkemaluan] [-iinit_header] [-us] [-rrootag] [-atindakan]
nama[.dtd]
DESKRIPSI
fleksibel membaca nama.dtd yang harus berupa DTD (Definisi Jenis Dokumen) yang menjelaskan format
dokumen XML (Extensible Markup Language), dan menghasilkan XML "memvalidasi" prosesor
dengan antarmuka untuk mendukung XML aplikasiS. Aplikasi yang tepat dapat dihasilkan
opsional dari "file tindakan" khusus, baik untuk menghubungkan atau kombinasi tekstual dengan
prosesor.
Prosesor yang dihasilkan hanya akan memvalidasi dokumen yang benar-benar sesuai dengan DTD,
tanpa memperpanjang it, lebih tepatnya kami dalam praktiknya membatasi aturan XML [28] untuk
[28r] doctypedecl ::= ' '
di mana "ExternalId" menunjukkan DTD yang digunakan. (Orang mungkin mengatakan, pada kenyataannya, bahwa flexml
mengimplementasikan markup "non-extensible". :)
Prosesor yang dihasilkan adalah melenturkan(1) pemindai, secara default bernama nama.l dengan yang sesuai
File header C nama.h untuk kompilasi terpisah dari aplikasi yang dihasilkan. Opsional
flexml membutuhkan tindakan file dengan tindakan per-elemen dan menghasilkan file C dengan elemen
fungsi untuk aplikasi XML dengan titik masuk yang dipanggil dari prosesor XML (dapat
juga melipat aplikasi XML ke dalam prosesor XML untuk membuat aplikasi XML yang berdiri sendiri
tapi ini mencegah berbagi prosesor antar aplikasi).
Dalam "OPSI" kami mencantumkan opsi yang memungkinkan, dalam "FORMAT FILE TINDAKAN" kami menjelaskan cara menulis
aplikasi, dalam "KOMPILASI" kami menjelaskan cara mengkompilasi prosesor yang diproduksi dan
aplikasi menjadi executable, dan dalam "BUGS" kami mencantumkan batasan sistem saat ini
sebelum memberikan referensi standar.
PILIHAN
fleksibel mengambil opsi berikut.
--berdiri sendiri, -A
Hasilkan a berdiri sendiri aplikasi pemindai. Jika digabungkan dengan -atindakan maka
aplikasi akan dinamai sebagai tindakan dengan ekstensi diganti oleh .l, jika tidak
akan masuk nama.l. Konflik dengan -S, -H, dan -D.
--tindakan tindakan, -a tindakan
Menggunakan tindakan file untuk menghasilkan aplikasi XML dalam file dengan nama yang sama dengan
tindakan setelah mengganti ekstensi dengan .c. Jika digabungkan dengan -A maka sebagai gantinya
aplikasi yang berdiri sendiri akan mencakup fungsi tindakan.
--contoh [nama aplikasi], -D [nama aplikasi]
Hasilkan aplikasi dummy hanya dengan fungsi kosong untuk dipanggil oleh XML
prosesor. Jika nama aplikasi tidak ditentukan pada baris perintah, defaultnya adalah
nama-dummy.c. Jika digabungkan dengan -a tindakan maka aplikasi akan memasukkan
tindakan tertentu dan diberi nama sebagai tindakan dengan ekstensi diganti oleh .c.
Konflik dengan -A; tersirat oleh -a kecuali salah satu dari -SHD ditentukan.
--debug, -d
Mengaktifkan mode debug di pemindai fleksibel dan juga mencetak detail DTD
analisis yang dilakukan oleh flexml.
--tajuk [nama_header], -H [nama_header]
Menghasilkan file header. jika nama_header tidak ditentukan pada baris perintah,
default ke nama.h. Konflik dengan -A; aktif secara default jika tidak ada -SHD ditentukan.
--lineno, -L
Membuat prosesor XML (seperti yang dihasilkan oleh melenturkan(1)) hitung baris di input dan simpan
itu tersedia untuk tindakan aplikasi XML dalam bilangan bulat "yylineno". (Ini tidak aktif oleh
default karena overhead kinerja signifikan.)
--diam, -q
Mencegah prosesor XML (seperti yang dihasilkan oleh melenturkan(1)) dari melaporkan kesalahan yang dijalankannya
ke dalam stderr. Sebagai gantinya, pengguna harus mengumpulkan pesan kesalahan dengan
parse_err_msg() fungsi. Secara default, pesan kesalahan ditulis di stderr.
--lari-kering, -n
"Dry-run": jangan menghasilkan file output apa pun.
--pubid kemaluan, -p kemaluan
Menyetel jenis dokumen menjadi "PUBLIK" dengan pengenal kemaluan alih-alih "SISTEM",
default.
--init_header init_header, -i init_header
Letakkan baris yang berisi "#include "init_header"" di bagian "%{...%}" di bagian atas
file .l yang dihasilkan. Ini mungkin berguna untuk membuat berbagai "#define", untuk
contoh "YY_INPUT" atau "YY_DECL".
--sysid=sysid
Mengganti id "SYSTEM" dari DTD yang diterima. Terkadang berguna saat dtd Anda
ditempatkan dalam subdirektori.
--root-tag roottag, -r roottag
Membatasi prosesor XML untuk memvalidasi hanya dokumen dengan salah satu elemen root
tercantum dalam dipisahkan koma roottag.
--pemindai [pemindai_nama], -S [pemindai_nama]
Hasilkan pemindai. Jika pemindai_nama tidak diberikan pada baris perintah, defaultnya adalah
nama.l. Konflik dengan -A; aktif secara default jika tidak ada -SHD ditentukan.
--kerangka kerangka, -s kerangka
Gunakan pemindai kerangka kerangka alih-alih default.
--bertindak-bin flexml-bertindak, -T flexml-bertindak
Ini adalah opsi internal yang terutama digunakan untuk menguji versi flexml yang belum diinstal.
--peningkatan tumpukan tumpukan_peningkatan, -b tumpukan_peningkatan
Setel FLEXML_BUFFERSTACKSIZE ke stack_increment (100000 secara default). Ini mengontrol
berapa banyak tumpukan data tumbuh di masing-masing alokasi ulang().
--tag-awalan STRING, -O STRING
Gunakan STRING untuk membedakan beberapa versi flexml dalam kode C yang sama, seperti
argumen fleksibel -P.
--uri s, -u s
Menyetel URI DTD, yang digunakan di header "DOCTYPE", ke yang ditentukan s (The
default adalah nama DTD).
--bertele-tele, -v
Jadilah verbose: echo setiap deklarasi DTD (setelah ekspansi parameter).
--Versi: kapan, -V
Cetak versi flexml dan keluar.
AKSI FILE FORMAT
File tindakan, diteruskan ke -a pilihan, apakah dokumen XML sesuai dengan DTD
flexml-act.dtd yang berikut ini:
Elemen-elemen tersebut harus digunakan sebagai berikut:
"atas"
Gunakan untuk kode C tingkat atas seperti deklarasi global, fungsi utilitas, dll.
"Mulailah"
Melampirkan kode sebagai tindakan ke elemen dengan nama ""tag"" yang diperlukan
atribut. Komponen ""%C-code;"" harus berupa kode C yang sesuai untuk dimasukkan dalam C
blok (yaitu, dalam "{"..."}" sehingga mungkin berisi variabel lokal); selanjutnya
ekstensi berikut tersedia:
"{"atribut"}": Dapat digunakan untuk mengakses nilai atribut seperti yang diatur dengan
atribut"="nilai di tag awal. Dalam C, "{"atribut"}" akan ditafsirkan
tergantung pada deklarasi atribut. Jika atribut dideklarasikan sebagai
jenis enumerasi seperti
maka nilai atribut C adalah tipe enumerasi dengan elemen tertulis
"{"atribut"="alt1"}", "{"atribut"="alt2"}", dll.; selanjutnya dan tidak disetel atribut
memiliki "nilai" "{!"atribut"}". Jika atributnya bukan enumerasi maka
"{"atribut"}" adalah string C yang diakhiri null (bertipe "char*") dan "{!"atribut"}"
adalah "NULL".
"akhir"
Demikian pula melampirkan kode sebagai tindakan ke tag akhir dengan nama yang diperlukan
atribut ""tag""; juga di sini komponen ""%C-code;"" harus kode C yang cocok untuk
dimasukkan ke dalam blok C. Jika elemen memiliki konten "Campuran", yaitu, dideklarasikan
untuk mengizinkan "#PCDATA", maka variabel berikut tersedia:
"{#PCDATA}": Berisi teks ("#PCDATA") elemen sebagai C yang diakhiri dengan nol
string (dari tipe "char*"). Jika elemen Konten campuran benar-benar mencampur teks dan
elemen anak lalu "pcdata" berisi rangkaian sederhana dari fragmen teks sebagai
satu tali.
"utama"
Terakhir, elemen ""utama"" opsional dapat berisi fungsi C "utama" dari XML
aplikasi. Biasanya fungsi "utama" harus menyertakan (setidaknya) satu panggilan dari
Prosesor XML:
"yylex()": Memanggil prosesor XML yang dihasilkan oleh melenturkan(1) pada dokumen XML yang ditemukan di
input standar (sebenarnya pegangan file "yyin": lihat manual untuk melenturkan(1) untuk
informasi tentang cara mengubah ini serta nama "yylex").
Jika tidak ada tindakan "utama" yang diberikan maka yang berikut ini digunakan:
int main() { keluar(yylex()); }
Disarankan untuk menggunakan bagian XML <"![CDATA[" ... "]]"> untuk kode C untuk memastikan bahwa
semua karakter diteruskan dengan benar ke file output.
Akhirnya perhatikan bahwa fleksibel menangani elemen kosonglabel"/"> sebagai setara denganlabel><"/"label>.
KOMPILASI
Berikut ini membuat(1) fragmen file menunjukkan bagaimana seseorang dapat mengkompilasi flexml-program yang dihasilkan:
# Program.
FLEXML = flexml -v
# Hasilkan prosesor XML yang dapat ditautkan dengan header untuk aplikasi.
%.l %.h: %.dtd
$(FLEXML) $
# Hasilkan sumber C dari pemindai fleksibel.
%.c: %.l
$(FLEX) -Bs -o"$@" "$<"
# Hasilkan sumber C aplikasi XML untuk ditautkan dengan prosesor.
# Catatan: Dependensi harus dalam bentuk "appl.c: appl.act proc.dtd".
%.c: %.bertindak
$(FLEXML) -D -a $^
# Generasi langsung dari prosesor + aplikasi XML yang berdiri sendiri.
# Catatan: Dependensi harus dalam bentuk "appl.l: appl.act proc.dtd".
%.l: %.bertindak
$(FLEXML) -A -a $^
Gunakan flexml online menggunakan layanan onworks.net