यह कमांड फ्लेक्सएमएल है जिसे हमारे कई मुफ्त ऑनलाइन वर्कस्टेशन जैसे कि उबंटू ऑनलाइन, फेडोरा ऑनलाइन, विंडोज ऑनलाइन एमुलेटर या मैक ओएस ऑनलाइन एमुलेटर का उपयोग करके ऑनवर्क्स फ्री होस्टिंग प्रदाता में चलाया जा सकता है।
कार्यक्रम:
नाम
फ्लेक्सएमएल - डीटीडी से मान्य XML प्रोसेसर और एप्लिकेशन जेनरेट करें
SYNOPSIS
फ्लेक्सएमएल [-ASHDvdnLXV] [-sझालर] [-pप्रकाशक-आईडी] [-iinit_header] [-uउड़ी] [-rरूटैग्स] [-aकार्रवाई]
नाम[.dtd]
वर्णन
फ्लेक्सएमएल पढ़ता नाम.dtd जो प्रारूप का वर्णन करने वाला एक DTD (दस्तावेज़ प्रकार परिभाषा) होना चाहिए
XML (एक्स्टेंसिबल मार्कअप लैंग्वेज) दस्तावेजों का, और एक "मान्य" XML तैयार करता है प्रक्रमक
XML का समर्थन करने वाले इंटरफ़ेस के साथ आवेदनएस। उचित अनुप्रयोग उत्पन्न किये जा सकते हैं
वैकल्पिक रूप से विशेष "एक्शन फ़ाइलों" से, या तो लिंक करने के लिए या पाठ्य संयोजन के लिए
प्रोसेसर।
जेनरेट किया गया प्रोसेसर केवल उन दस्तावेजों को मान्य करेगा जो डीटीडी के अनुरूप हैं,
बिना का विस्तार it, अधिक सटीक रूप से हम व्यवहार में XML नियम [28] को प्रतिबंधित करते हैं
[28आर] doctypedecl ::= ' '
जहां "एक्सटर्नलआईडी" प्रयुक्त डीटीडी को दर्शाता है। (वास्तव में, कोई कह सकता है कि फ्लेक्सएमएल
"नॉन-एक्स्टेंसिबल" मार्कअप लागू करता है। :)
उत्पन्न प्रोसेसर एक है झुकाना(1) स्कैनर, डिफ़ॉल्ट नाम से नाम.एल एक अनुरूप के साथ
सी हेडर फ़ाइल नाम.एच उत्पन्न अनुप्रयोगों के अलग संकलन के लिए। वैकल्पिक रूप से
फ्लेक्सएमएल एक लेता है कार्रवाई प्रति-तत्व क्रियाओं के साथ फ़ाइल और तत्व के साथ एक सी फ़ाइल तैयार करता है
XML प्रोसेसर से बुलाए गए प्रवेश बिंदुओं वाले XML एप्लिकेशन के लिए फ़ंक्शंस (यह हो सकता है
स्टैंड-अलोन XML एप्लिकेशन बनाने के लिए XML एप्लिकेशन को XML प्रोसेसर में भी फोल्ड करें
लेकिन यह अनुप्रयोगों के बीच प्रोसेसर को साझा करने से रोकता है)।
"विकल्प" में हम संभावित विकल्पों को सूचीबद्ध करते हैं, "एक्शन फ़ाइल फॉर्मेट" में हम बताते हैं कि कैसे लिखना है
एप्लिकेशन, "संकलन" में हम बताते हैं कि उत्पादित प्रोसेसर को कैसे संकलित किया जाए और
अनुप्रयोगों को निष्पादनयोग्य में, और "बग्स" में हम सिस्टम की वर्तमान सीमाओं को सूचीबद्ध करते हैं
मानक सन्दर्भ देने से पहले.
विकल्प
फ्लेक्सएमएल निम्नलिखित विकल्प लेता है.
--अकेले, -A
उत्पन्न करें खड़े अकेले स्कैनर अनुप्रयोग. अगर साथ मिला दिया जाए -aकार्रवाई फिर
एप्लिकेशन का नाम होगा कार्रवाई द्वारा प्रतिस्थापित एक्सटेंशन के साथ .l, अन्यथा यह
में होगा नाम.एल. के साथ संघर्ष -S, -H, तथा -D.
--कार्रवाई कार्रवाई, -a कार्रवाई
का उपयोग करता है कार्रवाई फ़ाइल में उसी नाम से एक XML एप्लिकेशन तैयार करने के लिए
कार्रवाई एक्सटेंशन को बदलने के बाद .c. अगर साथ मिला दिया जाए -A फिर इसके बजाय
स्टैंड-अलोन एप्लिकेशन में एक्शन फ़ंक्शंस शामिल होंगे।
-- डमी [एप्लिकेशन का नाम], -D [एप्लिकेशन का नाम]
XML द्वारा कॉल किए जाने वाले केवल खाली फ़ंक्शंस के साथ एक डमी एप्लिकेशन जेनरेट करें
प्रोसेसर. अगर एप्लिकेशन का नाम कमांड लाइन पर निर्दिष्ट नहीं है, यह डिफ़ॉल्ट है
नाम-dummy.c. अगर साथ मिला दिया जाए -a कार्रवाई फिर एप्लिकेशन सम्मिलित करेगा
निर्दिष्ट क्रियाएँ और नाम दिया जाएगा कार्रवाई द्वारा प्रतिस्थापित एक्सटेंशन के साथ .c.
के साथ संघर्ष -A; द्वारा अंतर्निहित -a जब तक कि इनमें से कोई भी न हो -एसएचडी अधिकृत है।
- दाढ़, -d
फ्लेक्स स्कैनर में डिबग मोड चालू करता है और डीटीडी का विवरण भी प्रिंट करता है
द्वारा किया गया विश्लेषण फ्लेक्सएमएल.
--हेडर [शीर्षलेख_नाम], -H [शीर्षलेख_नाम]
हेडर फ़ाइल जनरेट करें. यदि शीर्षलेख_नाम कमांड लाइन पर निर्दिष्ट नहीं है,
करने के लिए चूक नाम.एच. के साथ संघर्ष -A; यदि कोई नहीं तो डिफ़ॉल्ट रूप से चालू -एसएचडी निर्दिष्ट।
--लिनेनो, -L
XML प्रोसेसर बनाता है (जैसा कि निर्मित किया गया है झुकाना(1)) इनपुट में लाइनें गिनें और रखें
यह पूर्णांक "yylineno" में XML अनुप्रयोग क्रियाओं के लिए उपलब्ध है। (यह बंद है
डिफ़ॉल्ट क्योंकि प्रदर्शन ओवरहेड महत्वपूर्ण है।)
--शांत, -q
XML प्रोसेसर को रोकता है (जैसा कि निर्मित किया गया है झुकाना(1)) त्रुटि की रिपोर्ट करने से यह चलता है
stderr पर. इसके बजाय, उपयोगकर्ताओं को त्रुटि संदेशों के लिए पूल करना होगा
parse_err_msg() समारोह। डिफ़ॉल्ट रूप से, त्रुटि संदेश stderr पर लिखे जाते हैं।
--पूर्वाभ्यास, -n
"ड्राई-रन": कोई भी आउटपुट फ़ाइल उत्पन्न न करें।
--प्यूबिड प्रकाशक-आईडी, -p प्रकाशक-आईडी
पहचानकर्ता के साथ दस्तावेज़ प्रकार को "सार्वजनिक" पर सेट करता है प्रकाशक-आईडी "सिस्टम" के बजाय,
डिफ़ॉल्ट।
--init_header init_header, -i init_header
शीर्ष पर "%{...%}" अनुभाग में "#include "init_header" वाली एक पंक्ति डालता है
उत्पन्न .l फ़ाइल। यह विभिन्न फ्लेक्स "#define" बनाने के लिए उपयोगी हो सकता है
उदाहरण "YY_INPUT" या "YY_DECL"।
--सिसिड=सिसिड
स्वीकृत DTD की "सिस्टम" आईडी को ओवरराइड करता है। कभी-कभी तब उपयोगी होता है जब आपका डीटीडी होता है
एक उपनिर्देशिका में रखा गया।
--रूट-टैग रूटटैग, -r रूटटैग
XML प्रोसेसर को केवल किसी एक मूल तत्व वाले दस्तावेज़ों को मान्य करने के लिए प्रतिबंधित करता है
अल्पविराम से अलग करके सूचीबद्ध किया गया है रूटटैग.
--चित्रान्वीक्षक [स्कैनर_नाम], -S [स्कैनर_नाम]
स्कैनर उत्पन्न करें. अगर स्कैनर_नाम कमांड लाइन पर नहीं दिया गया है, यह डिफ़ॉल्ट है
नाम.एल. के साथ संघर्ष -A; यदि कोई नहीं तो डिफ़ॉल्ट रूप से चालू -एसएचडी निर्दिष्ट।
--स्केले झालर, -s झालर
स्केलेटन स्कैनर का प्रयोग करें झालर डिफ़ॉल्ट के बजाय।
--एक्ट-बिन flexml-act, -T flexml-act
यह एक आंतरिक विकल्प है जिसका उपयोग मुख्य रूप से अभी तक स्थापित नहीं किए गए फ्लेक्सएमएल के संस्करणों का परीक्षण करने के लिए किया जाता है।
--स्टैक-वृद्धि स्टैक_इंक्रीमेंट, -b स्टैक_इंक्रीमेंट
FLEXML_BUFFERSTACKSIZE को stack_increment (डिफ़ॉल्ट रूप से 100000) पर सेट करता है। ये नियंत्रित करता है
प्रत्येक में डेटा स्टैक कितना बढ़ता है रीयलोक ().
--टैग-उपसर्ग STRING है, -O STRING है
एक ही सी कोड में फ्लेक्सएमएल के कई संस्करणों को अलग करने के लिए STRING का उपयोग करें
-पी फ्लेक्स तर्क।
--उरी उड़ी, -u उड़ी
"DOCTYPE" हेडर में प्रयुक्त DTD के URI को निर्दिष्ट पर सेट करता है उड़ी (
डिफ़ॉल्ट DTD नाम है)।
--शब्दशः, -v
क्रियात्मक बनें: प्रत्येक DTD घोषणा को प्रतिध्वनित करें (पैरामीटर विस्तार के बाद)।
--संस्करण, -V
का संस्करण प्रिंट करें फ्लेक्सएमएल और बाहर निकलें
कार्य फ़ाइल FORMAT
कार्रवाई फ़ाइलें, को पास कर दी गईं -a विकल्प, क्या XML दस्तावेज़ DTD के अनुरूप हैं
flexml-act.dtd जो निम्नलिखित है:
तत्वों का उपयोग इस प्रकार किया जाना चाहिए:
"ऊपर"
वैश्विक घोषणाओं, उपयोगिता कार्यों आदि जैसे शीर्ष-स्तरीय सी कोड के लिए उपयोग करें।
"शुरू करना"
कोड को आवश्यक ""टैग"" के नाम के साथ तत्व के साथ एक क्रिया के रूप में जोड़ता है
गुण। ""%C-code;"" घटक C कोड होना चाहिए जो C में शामिल करने के लिए उपयुक्त हो
ब्लॉक करें (अर्थात, "{"..."}" के भीतर ताकि इसमें स्थानीय चर शामिल हो सकें); इसके अलावा
निम्नलिखित एक्सटेंशन उपलब्ध हैं:
"{"गुण"}": का मूल्य तक पहुंचने के लिए उपयोग किया जा सकता है गुण जैसा कि सेट किया गया है
गुण"="मूल्य प्रारंभ टैग में. सी में, "{"गुण"}" की व्याख्या की जाएगी
विशेषता की घोषणा के आधार पर। यदि विशेषता को एक के रूप में घोषित किया गया है
जैसे प्रगणित प्रकार
तब C विशेषता मान लिखित तत्वों के साथ एक गणना प्रकार का होता है
"{"गुण"="alt1"}", "{"गुण"="alt2"}", वगैरह।; इसके अलावा एक सेट नहीं गुण
का "मान" है "{!"गुण"}"। यदि विशेषता एक गणना नहीं है तो
"{"गुण"}" एक शून्य-समाप्त सी स्ट्रिंग है (प्रकार "char*") और "{!"गुण"}"
शून्य है"।
"अंत"
इसी प्रकार कोड को आवश्यक के नाम के साथ अंतिम टैग में एक क्रिया के रूप में जोड़ता है
""टैग"" विशेषता; यहां भी ""%C-code;"" घटक के लिए C कोड उपयुक्त होना चाहिए
सी ब्लॉक में शामिल करना। यदि तत्व में "मिश्रित" सामग्री है, अर्थात, घोषित किया गया था
"#PCDATA" को अनुमति देने के लिए, निम्नलिखित चर उपलब्ध है:
"{#PCDATA}": तत्व का टेक्स्ट ("#PCDATA") एक शून्य-समाप्त सी के रूप में शामिल है
स्ट्रिंग (प्रकार "char*"). यदि मिश्रित सामग्री तत्व वास्तव में मिश्रित पाठ और है
चाइल्ड एलिमेंट्स के बाद "पीसीडेटा" में टेक्स्ट अंशों का सादा संयोजन शामिल होता है
एक तार.
"मुख्य"
अंत में, एक वैकल्पिक ""मुख्य" तत्व में XML का C "मुख्य" फ़ंक्शन शामिल हो सकता है
आवेदन पत्र। आम तौर पर "मुख्य" फ़ंक्शन में (कम से कम) एक कॉल शामिल होनी चाहिए
एक्सएमएल प्रोसेसर:
"yylex()": द्वारा निर्मित XML प्रोसेसर को आमंत्रित करता है झुकाना(1) XML दस्तावेज़ पर पाया गया
मानक इनपुट (वास्तव में "yyin" फ़ाइल हैंडल: इसके लिए मैनुअल देखें झुकाना(1) के लिए
इसे बदलने के तरीके के साथ-साथ "yylex" नाम) के बारे में जानकारी)।
यदि कोई "मुख्य" कार्रवाई प्रदान नहीं की गई है तो निम्नलिखित का उपयोग किया जाता है:
int मुख्य() { बाहर निकलें(yylex()); }
यह सुनिश्चित करने के लिए C कोड के लिए XML <"![CDATA[" ... "]]"> अनुभागों का उपयोग करना उचित है
सभी अक्षर आउटपुट फ़ाइल में ठीक से पास हो गए हैं।
अंत में उस पर ध्यान दें फ्लेक्सएमएल खाली तत्वों को संभालता हैटैग"/"> के बराबर के रूप मेंटैग<"/"टैग>.
संकलन
निम्नलिखित बनाना(1) फ़ाइल खंड दिखाता है कि कोई कैसे संकलित कर सकता है फ्लेक्सएमएल-जनित कार्यक्रम:
# कार्यक्रम.
फ्लेक्सएमएल = फ्लेक्सएमएल -v
# एप्लिकेशन के लिए हेडर के साथ लिंक करने योग्य XML प्रोसेसर जेनरेट करें।
%.l .h: .dtd
$(FLEXML) $
# फ्लेक्स स्कैनर से सी सोर्स जेनरेट करें।
%सी: %एल
$(FLEX) -Bs -o"$@" "$<"
# प्रोसेसर के साथ लिंक करने के लिए XML एप्लिकेशन C स्रोत जेनरेट करें।
# नोट: निर्भरता "appl.c: appl.act proc.dtd" फॉर्म की होनी चाहिए।
%c: %act
$(FLEXML) -D -a $^
# स्टैंड-अलोन XML प्रोसेसर+एप्लिकेशन की सीधी पीढ़ी।
# नोट: निर्भरता "appl.l:appl.act proc.dtd" फॉर्म की होनी चाहिए।
%.l: %act
$(फ्लेक्सएमएल) -ए -ए $^
onworks.net सेवाओं का उपयोग करके ऑनलाइन flexml का उपयोग करें