अंग्रेज़ीफ्रेंचस्पेनिश

Ad


ऑनवर्क्स फ़ेविकॉन

yaccposix - क्लाउड में ऑनलाइन

उबंटू ऑनलाइन, फेडोरा ऑनलाइन, विंडोज ऑनलाइन एमुलेटर या मैक ओएस ऑनलाइन एमुलेटर पर ऑनवर्क्स मुफ्त होस्टिंग प्रदाता में yaccposix चलाएं

यह कमांड yaccposix है जिसे हमारे कई मुफ्त ऑनलाइन वर्कस्टेशन जैसे कि उबंटू ऑनलाइन, फेडोरा ऑनलाइन, विंडोज ऑनलाइन एमुलेटर या मैक ओएस ऑनलाइन एमुलेटर का उपयोग करके ऑनवर्क्स फ्री होस्टिंग प्रदाता में चलाया जा सकता है।

कार्यक्रम:

नाम


yacc - एक और कंपाइलर कंपाइलर (विकास)

SYNOPSIS


याक [−dltv] [बी फ़ाइल_उपसर्ग] [-पी sym_prefix] व्याकरण

वर्णन


RSI याक उपयोगिता संदर्भ-मुक्त व्याकरण का विवरण पढ़ेगी व्याकरण और C लिखें
स्रोत कोड, आईएसओ सी मानक के अनुरूप, एक कोड फ़ाइल और वैकल्पिक रूप से हेडर
वर्तमान निर्देशिका में हेडर फ़ाइल में जानकारी। उत्पन्न स्रोत कोड होगा
को छोड़कर, किसी भी अपरिभाषित, अनिर्दिष्ट या कार्यान्वयन-परिभाषित व्यवहार पर निर्भर नहीं है
ऐसे मामले जहां इसे सीधे आपूर्ति किए गए व्याकरण से कॉपी किया गया है, या ऐसे मामलों में
कार्यान्वयन द्वारा प्रलेखित। सी कोड एक फ़ंक्शन और संबंधित रूटीन को परिभाषित करेगा
और एक ऑटोमेटन के लिए मैक्रोज़ जो आवश्यकताओं को पूरा करते हुए एक पार्सिंग एल्गोरिदम निष्पादित करता है
एल्गोरिदम.

व्याकरण के स्वरूप और अर्थ का वर्णन विस्तारित विवरण अनुभाग में किया गया है।

सी स्रोत कोड और हेडर फ़ाइल को सी के लिए इनपुट के रूप में उपयुक्त रूप में तैयार किया जाएगा
कंपाइलर (देखें c99).

विकल्प


RSI याक उपयोगिता POSIX.1‐2008 की आधार परिभाषाओं की मात्रा के अनुरूप होगी, अनुभाग
12.2, उपयोगिता वाक्य - विन्यास दिशानिर्देश, दिशानिर्देश 9 को छोड़कर।

निम्नलिखित विकल्पों का समर्थन किया जाएगा:

बी फ़ाइल_उपसर्ग
उपयोग फ़ाइल_उपसर्ग के बजाय y सभी आउटपुट फ़ाइल नामों के लिए उपसर्ग के रूप में। कोड
पट्टिका y.tab.c, हेडर फ़ाइल वाई.टैब.एच (जब बनाया गया -डी निर्दिष्ट है), और
विवरण फ़ाइल y.आउटपुट (जब बनाया गया -v निर्दिष्ट है), में बदला जाएगा
फ़ाइल_उपसर्ग.टैब.सी, फ़ाइल_उपसर्ग.टैब.एच, तथा फ़ाइल_उपसर्ग.आउटपुट, क्रमशः।

-डी हेडर फ़ाइल लिखें; डिफ़ॉल्ट रूप से केवल कोड फ़ाइल लिखी जाती है। #define
कथन द्वारा निर्दिष्ट टोकन कोड को संबद्ध करते हैं याक उपयोगकर्ता द्वारा घोषित के साथ
सांकेतिक नाम. यह इसके अलावा अन्य स्रोत फ़ाइलों की अनुमति देता है y.tab.c टोकन तक पहुँचने के लिए
कोड।

-एल एक कोड फ़ाइल तैयार करें जिसमें कोई भी शामिल न हो #रेखा निर्माण यदि यह विकल्प
मौजूद नहीं है, यह अनिर्दिष्ट है कि कोड फ़ाइल या हेडर फ़ाइल में शामिल है या नहीं
#रेखा निर्देश इसका प्रयोग व्याकरण और संबंधित के बाद ही किया जाना चाहिए
क्रियाएँ पूरी तरह से डीबग की गई हैं।

-पी sym_prefix
उपयोग sym_prefix के बजाय yy द्वारा निर्मित सभी बाहरी नामों के उपसर्ग के रूप में
याक. प्रभावित नामों में कार्य शामिल होंगे य्यपारसे(), yylex(), तथा
yyerror(), और चर yylval, yychar, तथा yydebug. (शेष में
इस खंड में, उद्धृत छह प्रतीकों को उनके डिफ़ॉल्ट नामों का उपयोग करके संदर्भित किया गया है
केवल सांकेतिक सुविधा के रूप में।) स्थानीय नाम भी इससे प्रभावित हो सकते हैं -पी
विकल्प; हालांकि -पी विकल्प प्रभावित नहीं होगा #define द्वारा उत्पन्न प्रतीक
याक.

आयकर डिबगिंग के संकलन की अनुमति देने के लिए सशर्त संकलन निर्देशों को संशोधित करें
कोड फ़ाइल में कोड. रनटाइम डिबगिंग स्टेटमेंट हमेशा इसमें शामिल रहेंगे
कोड फ़ाइल, लेकिन डिफ़ॉल्ट रूप से सशर्त संकलन निर्देश उन्हें रोकते हैं
संकलन।

-v पार्सर का विवरण और विरोधों की रिपोर्ट वाली एक फ़ाइल लिखें
व्याकरण में अस्पष्टताओं से उत्पन्न।

ऑपरेंड


निम्नलिखित ऑपरेंड आवश्यक है:

व्याकरण निर्देशों वाली फ़ाइल का पथनाम, जिसे इसके बाद कहा जाएगा व्याकरणके लिए,
जिसका एक पार्सर बनाया जाना है। व्याकरण का प्रारूप इसमें वर्णित है
विस्तारित विवरण अनुभाग।

एसटीडीआईएन


उपयोग नहीं किया।

इनपुट फ़ाइलें


फ़ाइल व्याकरण विस्तारित विवरण में निर्दिष्ट अनुसार स्वरूपित एक टेक्स्ट फ़ाइल होगी
अनुभाग।

वातावरण चर


निम्नलिखित पर्यावरण चर के निष्पादन को प्रभावित करेगा याक:

लैंग अंतरराष्ट्रीयकरण चर के लिए एक डिफ़ॉल्ट मान प्रदान करें जो सेट नहीं हैं या
शून्य। (POSIX.1‐2008 की बेस डेफिनिशन वॉल्यूम देखें, अनुभाग 8.2,
अंतर्राष्ट्रीयकरण चर अंतर्राष्ट्रीयकरण की प्राथमिकता के लिए
स्थानीय श्रेणियों के मूल्यों को निर्धारित करने के लिए उपयोग किए जाने वाले चर।)

LC_ALL यदि एक गैर-रिक्त स्ट्रिंग मान पर सेट है, तो अन्य सभी के मानों को ओवरराइड करें
अंतर्राष्ट्रीयकरण चर।

एलसी_CTYPE पाठ डेटा के बाइट्स के अनुक्रमों की व्याख्या के लिए स्थान निर्धारित करें
वर्णों के रूप में (उदाहरण के लिए, एकल-बाइट बहु-बाइट वर्णों के विपरीत
तर्क और इनपुट फ़ाइलें)।

एलसी_MESSAGES
उस स्थान का निर्धारण करें जिसका उपयोग प्रारूप और सामग्री को प्रभावित करने के लिए किया जाना चाहिए
मानक त्रुटि के लिए लिखे गए नैदानिक ​​संदेश।

एनएलएसपीएटीएच के प्रसंस्करण के लिए संदेश कैटलॉग का स्थान निर्धारित करें एलसी_MESSAGES.

RSI लैंग और एलसी_* चर निष्पादन को प्रभावित करते हैं याक उपयोगिता जैसा बताया गया है। मुख्य()
फ़ंक्शन परिभाषित किया गया है याक पुस्तकालय कॉल करेगा:

सेटलोकेल(LC_ALL, "")

और इस प्रकार प्रोग्राम उत्पन्न होता है याक इनकी सामग्री से भी प्रभावित होगा
रनटाइम पर चर।

अतुल्यकालिक पत्रिका


चूक।

एसटीडीओयूटी


उपयोग नहीं किया।

एसटीडीईआरआर


यदि शिफ्ट/कम या कम/घटाने में टकराव का पता चलता है व्याकरण, याक एक लिखूंगा
अनिर्दिष्ट प्रारूप में मानक त्रुटि के लिए उन संघर्षों की रिपोर्ट।

डायग्नोस्टिक संदेशों के लिए मानक त्रुटि का भी उपयोग किया जाएगा।

आउटपुट फ़ाइलें


कोड फ़ाइल, हेडर फ़ाइल और विवरण फ़ाइल टेक्स्ट फ़ाइलें होंगी। सभी हैं
निम्नलिखित अनुभागों में वर्णित है।

कोड पट्टिका
इस फ़ाइल में इसके लिए C स्रोत कोड होगा य्यपारसे() समारोह। इसमें शामिल होगा
मैक्रो प्रतिस्थापन के साथ विभिन्न अर्थ संबंधी क्रियाओं के लिए कोड उन पर किया जाता है
विस्तारित विवरण अनुभाग में वर्णित है। इसमें इसकी एक प्रति भी शामिल होगी #define
हेडर फ़ाइल में कथन. यदि एक %संघ घोषणा का उपयोग किया जाता है, घोषणा के लिए
YYSTYPE को भी इस फ़ाइल में शामिल किया जाएगा।

हैडर पट्टिका
हेडर फ़ाइल में शामिल होगा #define ऐसे कथन जो टोकन संख्याओं को इसके साथ जोड़ते हैं
सांकेतिक नाम. यह कोड फ़ाइल के अलावा अन्य स्रोत फ़ाइलों को टोकन कोड तक पहुंचने की अनुमति देता है।
एक तो %संघ घोषणा का उपयोग किया जाता है, YYSTYPE और a के लिए घोषणा बाहरी YYSTYPE yylval
इस फ़ाइल में घोषणा भी शामिल की जाएगी।

Description पट्टिका
विवरण फ़ाइल एक टेक्स्ट फ़ाइल होगी जिसमें राज्य मशीन का विवरण होगा
एक अनिर्दिष्ट प्रारूप का उपयोग करते हुए, पार्सर के अनुरूप। आंतरिक तालिकाओं के लिए सीमाएँ (देखें
सीमाएं) को कार्यान्वयन-परिभाषित तरीके से भी रिपोर्ट किया जाएगा। (कुछ कार्यान्वयन
गतिशील आवंटन तकनीकों का उपयोग किया जा सकता है और रिपोर्ट करने के लिए कोई विशिष्ट सीमा मान नहीं है।)

विस्तारित वर्णन


RSI याक कमांड उस भाषा को स्वीकार करता है जिसका उपयोग लक्ष्य भाषा के लिए व्याकरण को परिभाषित करने के लिए किया जाता है
तालिकाओं और उत्पन्न कोड द्वारा पार्स किया जाना है याक. द्वारा स्वीकृत भाषा याक एक के रूप में
लक्ष्य भाषा के लिए व्याकरण का वर्णन नीचे दिया गया है याक इनपुट भाषा ही.

इनपुट व्याकरण लक्ष्य भाषा की इनपुट संरचना का वर्णन करने वाले नियम शामिल हैं
जब इन नियमों को संबंधित अर्थ प्रदान करने के लिए मान्यता दी जाती है तो कोड लागू किया जाना चाहिए
कार्रवाई। निष्पादित किया जाने वाला कोड पाठ के मुख्य भाग के रूप में दिखाई देगा जिसका उद्देश्य C- होना है
भाषा कोड. पाठ के इन निकायों में सी-भाषा ट्रिग्राफ़ नहीं होंगे। सी-भाषा
यह माना जाता है कि जब इसे संसाधित किया जाता है तो समावेशन एक सही कार्य बनाता है याक इसके आउटपुट में
फ़ाइलें. इस तरह से शामिल कोड को मान्यता के दौरान निष्पादित किया जाएगा
लक्ष्य भाषा।

एक व्याकरण दिया गया, याक उपयोगिता आउटपुट फ़ाइलों में वर्णित फ़ाइलें उत्पन्न करती है
अनुभाग। कोड फ़ाइल को संकलित और लिंक किया जा सकता है c99. यदि घोषणा और
व्याकरण फ़ाइल के प्रोग्राम अनुभागों में इसकी परिभाषाएँ शामिल नहीं थीं मुख्य(), yylex(), तथा
yyerror(), संकलित आउटपुट को बाहरी रूप से आपूर्ति किए गए संस्करणों के साथ लिंक करने की आवश्यकता होती है
कार्य. के डिफ़ॉल्ट संस्करण मुख्य() तथा yyerror() में आपूर्ति की जाती है याक पुस्तकालय और
का उपयोग करके लिंक किया जा सकता है -एल y संकार्य को c99याक लाइब्रेरी इंटरफ़ेस की आवश्यकता नहीं है
डिफ़ॉल्ट के अलावा अन्य इंटरफ़ेस का समर्थन करें yy प्रतीक उपसर्ग. एप्लिकेशन प्रदान करता है
शाब्दिक विश्लेषक समारोह, yylex(); लेक्रस उपयोगिता विशेष रूप से डिज़ाइन की गई है
ऐसी दिनचर्या उत्पन्न करें.

निवेश भाषा
एप्लिकेशन यह सुनिश्चित करेगा कि प्रत्येक विनिर्देश फ़ाइल में तीन खंड हों
आदेश: घोषणाओं, व्याकरण नियम, तथा कार्यक्रमों, डबल द्वारा अलग किया गया
पात्र ("%%"). घोषणाएँ और कार्यक्रम अनुभाग खाली हो सकते हैं। यदि उत्तरार्द्ध है
खाली, पूर्ववर्ती "%%" इसे नियम अनुभाग से अलग करने वाले चिह्न को छोड़ा जा सकता है।

नीचे परिभाषित व्याकरण की संरचना के अनुसार इनपुट मुक्त रूप वाला टेक्स्ट है।

शब्द-भांडार का संरचना of la व्याकरण
, , और चरित्र को नजरअंदाज कर दिया जाएगा, सिवाय इसके कि
आवेदन यह सुनिश्चित करेगा कि वे नाम या बहु-वर्ण आरक्षित में प्रकट न हों
प्रतीक. टिप्पणियाँ संलग्न की जाएंगी "/* ... */", और नाम जहां भी हो वहां प्रकट हो सकता है
वैध।

नाम मनमानी लंबाई के होते हैं, जो अक्षरों, अवधियों से बने होते हैं ('.'), अंडरस्कोर ('_'), और
गैर-प्रारंभिक अंक. अपरकेस और लोअरकेस अक्षर अलग-अलग हैं। अनुरूप अनुप्रयोग
से शुरू होने वाले नामों का उपयोग नहीं करेंगे yy or YY के बाद से याक पार्सर ऐसे नामों का उपयोग करता है। के कई
नाम अंतिम आउटपुट में दिखाई देते हैं याक, और इस प्रकार उन्हें अनुरूप चुना जाना चाहिए
सी कंपाइलर द्वारा उपयोग किए जाने वाले किसी भी अतिरिक्त नियम के साथ। विशेष रूप से वे प्रकट होते हैं
in #define बयान।

एक शाब्दिक में एकल-उद्धरण वर्णों में संलग्न एक एकल वर्ण शामिल होगा। के सभी
आईएसओ सी मानक द्वारा वर्ण स्थिरांक के लिए समर्थित एस्केप अनुक्रम होंगे
द्वारा समर्थित याक.

शाब्दिक विश्लेषक के साथ संबंध पर नीचे विस्तार से चर्चा की गई है।

एप्लिकेशन यह सुनिश्चित करेगा कि एनयूएल वर्ण का उपयोग व्याकरण नियमों में नहीं किया जाता है
शाब्दिक।

घोषणाओं अनुभाग
घोषणा अनुभाग का उपयोग लक्ष्य भाषा को परिभाषित करने के लिए उपयोग किए जाने वाले प्रतीकों को परिभाषित करने के लिए किया जाता है
और एक दूसरे के साथ उनका रिश्ता। विशेष रूप से, बहुत सारी अतिरिक्त जानकारी
लक्ष्य भाषा के लिए संदर्भ-मुक्त व्याकरण में अस्पष्टताओं को हल करना आवश्यक है
यहाँ प्रदान किया गया।

आमतौर पर याक इसके द्वारा उत्पन्न प्रतीकात्मक नामों और उनके बीच संबंध निर्दिष्ट करता है
अंतर्निहित संख्यात्मक मान. घोषणा अनुभाग इसे नियंत्रित करना संभव बनाता है
इन मूल्यों का असाइनमेंट।

वर्तमान में मौजूद टोकन से जुड़ी अर्थ संबंधी जानकारी रखना भी संभव है
उपयोगकर्ता द्वारा परिभाषित सी-भाषा में पार्स स्टैक संघ, यदि संघ के सदस्य हैं
व्याकरण में विभिन्न नामों से संबद्ध। घोषणा अनुभाग इसके लिए प्रावधान करता है
ये भी.

नीचे दिए गए घोषणाकर्ताओं का पहला समूह तर्क के रूप में नामों की एक सूची लेता है। वह सूची हो सकती है
वैकल्पिक रूप से सी यूनियन सदस्य के नाम से पहले लिखा जाना चाहिए (जिसे ए कहा जाता है)। टैग नीचे) दिखाई दे रहा है
अंदर '<' और '>'. (इसके बाकी हिस्सों की टाइपोग्राफ़िकल परंपराओं के अपवाद के रूप में
इस मामले में, POSIX.1-2008 की मात्राटैग> एक मेटावेरिएबल का प्रतिनिधित्व नहीं करता है, लेकिन
किसी प्रतीक के चारों ओर शाब्दिक कोण कोष्ठक वर्ण।) का उपयोग टैग निर्दिष्ट करता है कि
इस लाइन पर नामित टोकन उसी सी प्रकार के होंगे जैसा कि यूनियन सदस्य द्वारा संदर्भित किया गया है
टैग. इसकी नीचे अधिक विस्तार से चर्चा की गई है।

टोकन को परिभाषित करने के लिए उपयोग की जाने वाली सूचियों के लिए, किसी दिए गए टोकन की पहली उपस्थिति का अनुसरण किया जा सकता है
एक धनात्मक पूर्णांक (दशमलव अंकों की एक स्ट्रिंग के रूप में)। यदि ऐसा किया जाता है, तो अंतर्निहित मूल्य
शाब्दिक प्रयोजनों के लिए इसे सौंपी गई संख्या को वही संख्या माना जाएगा।

निम्नलिखित घोषणा करता है नाम एक प्रतीक होना:

% टोकन [<टैग>] नाम [संख्या] [नाम [संख्या]]...

If टैग मौजूद है, तो इस लाइन पर सभी टोकन के लिए सी प्रकार को प्रकार घोषित किया जाएगा
द्वारा संदर्भित टैग. यदि एक धनात्मक पूर्णांक, संख्या, अनुसरण करता है ए नाम, वह मान होगा
टोकन को सौंपा गया।

निम्नलिखित घोषणा करता है नाम एक टोकन होना, और इसे प्राथमिकता देना:

%बाएं [<टैग>] नाम [संख्या] [नाम [संख्या]]...
%सही [<टैग>] नाम [संख्या] [नाम [संख्या]]...

इनमें से किसी एक प्रतीक से शुरू होने वाली एक या अधिक पंक्तियाँ इस अनुभाग में दिखाई दे सकती हैं।
एक ही पंक्ति के सभी टोकन में समान प्राथमिकता स्तर और सहयोगीता होती है; रेखाएं
बढ़ती प्राथमिकता या बाध्यकारी शक्ति के क्रम में हैं। %बाएं दर्शाता है कि
उस लाइन पर ऑपरेटरों को सहयोगी छोड़ दिया गया है, और %सही इसी तरह सही को दर्शाता है
सहयोगी संचालक. अगर टैग मौजूद है, यह सी प्रकार की घोषणा करेगा नामजैसा वर्णन किया गया है
एसटी % टोकन.

निम्नलिखित घोषणा करता है नाम एक टोकन होना, और इंगित करता है कि इसका उपयोग नहीं किया जा सकता है
साहचर्यपूर्वक:

%nonassoc [<टैग>] नाम [संख्या] [नाम [संख्या]]...

यदि पार्सर को इस टोकन के सहयोगी उपयोग का सामना करना पड़ता है तो यह एक त्रुटि की रिपोर्ट करता है। अगर टैग is
वर्तमान में, यह सी प्रकार की घोषणा करेगा नामजैसा कि वर्णित है % टोकन.

निम्नलिखित उस संघ सदस्य की घोषणा करता है नामs गैर-टर्मिनल हैं, और इसलिए इसकी आवश्यकता है
प्राप्त करने टैग इसकी शुरुआत में फ़ील्ड:

%प्रकार <टैग> नाम...

क्योंकि यह केवल गैर-टर्मिनलों से संबंधित है, एक टोकन नंबर निर्दिष्ट करना या शाब्दिक उपयोग करना है
भी वर्जित है. यदि यह निर्माण मौजूद है, याक प्रकार की जाँच करेगा; यदि यह हो तो
निर्माण मौजूद नहीं है, पार्स स्टैक केवल धारण करेगा int प्रकार।

प्रत्येक नाम का उपयोग किया जाता है व्याकरण ए द्वारा परिभाषित नहीं % टोकन, %बाएं, %सहीया, %nonassoc
घोषणा को एक गैर-टर्मिनल प्रतीक का प्रतिनिधित्व करने वाला माना जाता है। याक उपयोगिता रिपोर्ट करेगी
किसी भी गैर-टर्मिनल प्रतीक के लिए एक त्रुटि जो कम से कम एक के बाईं ओर दिखाई नहीं देती है
व्याकरण नियम.

एक बार नाम का प्रकार, प्राथमिकता या टोकन नंबर निर्दिष्ट हो जाने पर, यह नहीं होगा
बदला हुआ। यदि किसी टोकन की पहली घोषणा में कोई टोकन नंबर निर्दिष्ट नहीं किया गया है, याक करेगा
एक टोकन नंबर निर्दिष्ट करें. एक बार यह असाइनमेंट हो जाने के बाद, टोकन नंबर नहीं बदला जाएगा
स्पष्ट असाइनमेंट द्वारा.

निम्नलिखित घोषणाकर्ता पिछले पैटर्न का पालन नहीं करते हैं।

निम्नलिखित गैर-टर्मिनल घोषित करता है नाम होना के लिए प्रारंभ प्रतीक, जो का प्रतिनिधित्व करता है
व्याकरण नियमों द्वारा वर्णित सबसे बड़ी, सबसे सामान्य संरचना:

%शुरू नाम

डिफ़ॉल्ट रूप से, यह पहले व्याकरण नियम का बाईं ओर है; यह डिफ़ॉल्ट हो सकता है
इस घोषणा के साथ ओवरराइड किया गया।

निम्नलिखित की घोषणा करता है याक वैल्यू स्टैक विभिन्न प्रकार के मूल्यों का एक संघ होना
चाहा हे।

%संघ { परिवर्तन of संघ (in C)}

यूनियन के निकाय में असंतुलित घुंघराले ब्रेस प्रीप्रोसेसिंग टोकन शामिल नहीं होंगे।

डिफ़ॉल्ट रूप से, क्रियाओं द्वारा लौटाए गए मान (नीचे देखें) और शाब्दिक विश्लेषक होंगे
प्रकार का intयाक उपयोगिता प्रकारों का ट्रैक रखती है, और यह संबंधित सम्मिलित करेगी
परिणामी पार्सर की सख्त प्रकार की जाँच करने के लिए यूनियन सदस्य के नाम।

वैकल्पिक रूप से, यह देखते हुए कि कम से कम एकटैग> निर्माण का उपयोग किया जाता है, संघ घोषित किया जा सकता है
एक हेडर फ़ाइल में (जिसे ए का उपयोग करके घोषणा अनुभाग में शामिल किया जाएगा)। # शामिल
भीतर निर्माण करें %{ और %}), और ए टंकण प्रतिनिधित्व करने के लिए प्रतीक YYSTYPE को परिभाषित करने के लिए उपयोग किया जाता है
यह संघ. का असर %संघ सीधे YYSTYPE की घोषणा प्रदान करना है
la याक इनपुट।

सी-भाषा घोषणाएँ और परिभाषाएँ संलग्न घोषणा अनुभाग में दिखाई दे सकती हैं
निम्नलिखित चिह्नों द्वारा:

%{ ... %}

इन कथनों को कोड फ़ाइल में कॉपी किया जाएगा, और इसमें वैश्विक दायरा होगा
उनका उपयोग नियमों और कार्यक्रम अनुभागों में किया जा सकता है। बयानों में शामिल नहीं होगा
"%}" किसी टिप्पणी के बाहर, स्ट्रिंग शाब्दिक, या बहु-वर्ण स्थिरांक।

एप्लिकेशन यह सुनिश्चित करेगा कि घोषणा अनुभाग टोकन द्वारा समाप्त हो गया है %%.

व्याकरण नियम in याक
नियम अनुभाग फ़ंक्शन द्वारा स्वीकार किए जाने वाले संदर्भ-मुक्त व्याकरण को परिभाषित करता है याक
सी-भाषा क्रियाओं और अतिरिक्त प्राथमिकता को उत्पन्न करता है और उन नियमों के साथ जोड़ता है
जानकारी। व्याकरण का वर्णन नीचे किया गया है, और एक औपचारिक परिभाषा इस प्रकार है।

नियम अनुभाग में एक या अधिक व्याकरण नियम शामिल हैं। एक व्याकरण नियम का रूप इस प्रकार है:

A : शरीर ;

प्रतीक A एक गैर-टर्मिनल नाम का प्रतिनिधित्व करता है, और शरीर शून्य या के अनुक्रम का प्रतिनिधित्व करता है
अधिक नामs, शाब्दिकएस, और अर्थ कार्यइसके बाद वैकल्पिक का पालन किया जा सकता है
प्रधानता शासनएस। के निर्माण में केवल नाम और अक्षर ही भाग लेते हैं
व्याकरण; अर्थ संबंधी क्रियाएँ और पूर्वता नियम अन्य तरीकों से उपयोग किए जाते हैं। और
हैं याक विराम चिह्न. यदि कई क्रमिक व्याकरण नियम हैं
वही बाएँ हाथ की ओर, ('|') का उपयोग दोबारा लिखने से बचने के लिए किया जा सकता है
बाएं हाथ की ओर; इस मामले में अंतिम नियम के बाद ही प्रकट होता है। शरीर
गैर-टर्मिनल को इंगित करने के लिए भाग खाली (या नाम और अक्षर से खाली) हो सकता है
प्रतीक खाली स्ट्रिंग से मेल खाता है।

RSI याक उपयोगिता प्रत्येक नियम के लिए एक अद्वितीय संख्या निर्दिष्ट करती है। ऊर्ध्वाधर पट्टी का उपयोग करने वाले नियम
अंकन विशिष्ट नियम हैं। नियम को निर्दिष्ट संख्या विवरण में दिखाई देती है
फ़ाइल.

एक शरीर में शामिल तत्व हैं:

नाम, शाब्दिक
ये व्याकरण के नियम बनाते हैं: नाम या तो ए टोकन या एक गैर टर्मिनल;
शाब्दिक स्वयं के लिए खड़ा है (शाब्दिक रूप से आवश्यक उद्धरण चिह्नों को घटाकर)।

अर्थ कार्य
प्रत्येक व्याकरण नियम के साथ, उपयोगकर्ता हर बार की जाने वाली क्रियाओं को जोड़ सकता है
नियम को इनपुट प्रक्रिया में पहचाना जाता है। (ध्यान दें कि शब्द ``कार्रवाई'' हो सकता है
पार्सर की क्रियाओं का भी संदर्भ लें - शिफ्ट, कम करना, इत्यादि।)

ये क्रियाएं मान लौटा सकती हैं और पिछले द्वारा लौटाए गए मान प्राप्त कर सकती हैं
कार्रवाई. ये मान YYSTYPE प्रकार की वस्तुओं में रखे जाते हैं (देखें)। %संघ).
कार्रवाई का परिणाम मान बाएं हाथ से पार्स स्टैक पर रखा जाएगा
नियम के किनारे, उनके दाहिने हाथ के हिस्से के रूप में अन्य कटौती द्वारा पहुँचा जा सकता है
ओर। का उपयोग करकेटैग> घोषणा अनुभाग में दी गई जानकारी
द्वारा उत्पन्न कोड याक सख्ती से टाइप की जाँच की जा सकती है और इसमें मनमानी शामिल हो सकती है
जानकारी। इसके अलावा, शाब्दिक विश्लेषक समान प्रकार प्रदान कर सकता है
यदि वांछित हो, तो टोकन के लिए मान।

एक क्रिया एक मनमाना सी कथन है और इस प्रकार इनपुट या आउटपुट, कॉल कर सकता है
उपप्रोग्राम, और बाह्य चरों को परिवर्तित करते हैं। एक क्रिया एक या अधिक C कथन है
घुंघराले ब्रेसिज़ में संलग्न '{' और '}'. बयानों में शामिल नहीं होगा
असंतुलित घुंघराले ब्रेस प्रीप्रोसेसिंग टोकन।

कार्रवाई में कुछ छद्म चर का उपयोग किया जा सकता है। ये पहुंच के लिए मैक्रोज़ हैं
आंतरिक रूप से ज्ञात डेटा संरचनाओं के लिए याक.

$$ कार्रवाई का मूल्य इसे $$ निर्दिष्ट करके निर्धारित किया जा सकता है। यदि टाइप करें
जाँच सक्षम है और निर्दिष्ट किए जाने वाले मान का प्रकार नहीं किया जा सकता है
निर्धारित, एक निदान संदेश उत्पन्न हो सकता है।

$संख्या यह द्वारा निर्दिष्ट घटक द्वारा लौटाए गए मान को संदर्भित करता है
टोकन संख्या किसी नियम के दाईं ओर, बाएँ से दाएँ पढ़ना;
संख्या शून्य या ऋणात्मक हो सकता है. अगर संख्या शून्य या ऋणात्मक है, यह
पार्सर के स्टैक पर नाम से जुड़े डेटा को संदर्भित करता है
वर्तमान नियम के सबसे बाएँ प्रतीक से पहले। (वह है, "$ 0"
में सबसे बाएँ नाम से ठीक पहले वाले नाम को संदर्भित करता है
वर्तमान नियम पार्सर के स्टैक पर पाया जाएगा और "$−1" यह आपकी जानकारी के लिए है
करने के लिए प्रतीक इसके बाएँ।) यदि संख्या वर्तमान से परे एक तत्व को संदर्भित करता है
नियम में बिंदु, या स्टैक के नीचे से परे, परिणाम है
अपरिभाषित. यदि प्रकार जांच सक्षम है और मूल्य का प्रकार होना चाहिए
असाइन किया गया निर्धारित नहीं किया जा सकता, एक निदान संदेश उत्पन्न हो सकता है।

$<टैग>संख्या
ये बिल्कुल बिना संबंधित प्रतीकों से मेल खाते हैं टैग
समावेशन, लेकिन सख्त प्रकार की जाँच की अनुमति दें (और अवांछित को रोकें)।
रूपांतरण प्रकार)। इसका प्रभाव यह है कि मैक्रो का उपयोग करने के लिए विस्तार किया जाता है टैग
YYSTYPE यूनियन से एक तत्व का चयन करने के लिए (का उपयोग करके)। dataname.tag).
यह विशेष रूप से उपयोगी है यदि संख्या सकारात्मक नहीं है.

$<टैग>$ यह संदर्भ पर संदर्भित यूनियन सदस्य के प्रकार को लागू करता है
by टैग. यह निर्माण बाईं ओर के संदर्भ में लागू होता है
संदर्भ मूल्य व्याकरण में होता है, और प्रदान करता है याक एक साधन के साथ
एक प्रकार का चयन करने के लिए.

नियम में क्रियाएँ कहीं भी हो सकती हैं (सिर्फ अंत में नहीं); एक क्रिया पहुंच सकती है
इसके बाईं ओर की क्रियाओं द्वारा लौटाए गए मान, और बदले में यह जो मान लौटाता है वह हो सकता है
इसके दाहिनी ओर की क्रियाओं द्वारा पहुँचा जा सकता है। किसी नियम के बीच में दिखाई देने वाली क्रिया
कार्रवाई को एक नए गैर-टर्मिनल प्रतीक के साथ बदलने के बराबर होगा और
बाईं ओर उस गैर-टर्मिनल प्रतीक के साथ एक खाली नियम जोड़ना।
नये नियम से जुड़ी शब्दार्थ क्रिया मूल के समतुल्य होगी
कार्रवाई। नियमों के अंतर्गत कार्यों का उपयोग संघर्ष उत्पन्न कर सकता है जो नहीं होगा
अन्यथा मौजूद है.

डिफ़ॉल्ट रूप से, किसी नियम का मान उसमें पहले तत्व का मान होगा।
यदि पहले तत्व का कोई प्रकार नहीं है (विशेषकर a के मामले में)।
शाब्दिक) और प्रकार की जाँच चालू है %प्रकार, एक त्रुटि संदेश आएगा।

प्रधानता
कीवर्ड %prec a से संबद्ध प्राथमिकता स्तर को बदलने के लिए उपयोग किया जा सकता है
विशेष व्याकरण नियम. इसके उदाहरण ऐसे मामलों में हैं जहां एक यूनरी और बाइनरी
ऑपरेटर का प्रतीकात्मक प्रतिनिधित्व समान है, लेकिन अलग-अलग दिए जाने की आवश्यकता है
पूर्वताएँ, या जहाँ एक अस्पष्ट यदि-अन्यथा निर्माण का संचालन होता है
ज़रूरी। आरक्षित प्रतीक %prec के शरीर के तुरंत बाद प्रकट हो सकता है
व्याकरण नियम का पालन सांकेतिक नाम या शाब्दिक रूप से किया जा सकता है। यह करेगा
व्याकरण नियम की पूर्वता को निम्नलिखित टोकन में बदल दें
नाम या शाब्दिक. समग्र रूप से नियम के लिए कार्रवाई का पालन किया जा सकता है %prec.

यदि कोई प्रोग्राम अनुभाग अनुसरण करता है, तो एप्लिकेशन यह सुनिश्चित करेगा कि व्याकरण नियम हैं
द्वारा समाप्त किया गया %%.

प्रोग्राम्स अनुभाग
RSI कार्यक्रमों अनुभाग में शाब्दिक विश्लेषक की परिभाषा शामिल हो सकती है yylex(), और कोई भी
अन्य कार्य; उदाहरण के लिए, जिनका उपयोग व्याकरण नियमों में निर्दिष्ट क्रियाओं में किया जाता है। यह
यह निर्दिष्ट नहीं है कि प्रोग्राम अनुभाग अर्थ संबंधी क्रियाओं से पहले आता है या उनका अनुसरण करता है
आउटपुट फ़ाइल; इसलिए, यदि एप्लिकेशन में कोई मैक्रो परिभाषाएँ शामिल हैं और
सिमेंटिक क्रियाओं में कोड पर लागू होने वाली घोषणाओं को यह उन्हें रखेगा
अंदर "%{ ... %}" घोषणा अनुभाग में.

निवेश व्याकरण
निम्नलिखित इनपुट याक इनपुट के लिए एक पार्सर उत्पन्न करता है याक. यह औपचारिक वाक्यविन्यास
पूर्ववर्ती पाठ वाक्यविन्यास विवरण पर प्राथमिकता लेता है।

शाब्दिक संरचना को कम सटीक रूप से परिभाषित किया गया है; शब्द-भांडार का संरचना of la व्याकरण परिभाषित करता है
अधिकांश शर्तें. पिछली शर्तों और नीचे दिए गए टोकन के बीच पत्राचार इस प्रकार है
इस प्रकार है।

पहचानकर्ता यह की अवधारणा से मेल खाता है नाम, पहले दिया गया। इसमें ये भी शामिल है
जैसा कि पहले परिभाषित किया गया है शाब्दिक।

C_पहचानकर्ता
यह एक नाम है, और इसके अतिरिक्त यह ज्ञात है कि इसके बाद a लगाया जाता है . ए
शाब्दिक रूप से यह टोकन प्राप्त नहीं हो सकता.

नंबर अंकों की एक श्रृंखला (एक गैर-नकारात्मक दशमलव पूर्णांक)।

TYPE, बायाँ, निशान, LCURL, आरसीयूआरएल
ये सीधे तौर पर मेल खाते हैं %प्रकार, %बाएं, %%, %{, तथा %}.

{ ... } यह संभावित समावेशन के साथ सी-भाषा स्रोत कोड को इंगित करता है ''
मैक्रोज़ जैसा कि पहले चर्चा की गई है।

/* व्याकरण एसटी la निवेश सेवा मेरे हाँ */
/* बुनियादी प्रविष्टियों। */
/* RSI निम्नलिखित रहे मान्यता प्राप्त by la शाब्दिक विश्लेषक। */

%टोकन पहचानकर्ता /* पहचानकर्ता और अक्षर शामिल हैं */
%टोकन C_IDENTIFIER /* पहचानकर्ता (लेकिन शाब्दिक नहीं)
इसके बाद एक :. */
%टोकन संख्या /* [0-9][0-9]* */

/* आरक्षित शब्द : %प्रकार=>प्रकार %बाएं=>बाएं, इत्यादि */

%टोकन बाएँ दाएँ नॉनसॉस्क टोकन प्रीक टाइप स्टार्ट यूनियन

%टोकन मार्क /* %% मार्क। */
%टोकन LCURL /* %{ चिह्न। */
%टोकन RCURL /* %} चिह्न। */

/* 8-बिट वर्ण अक्षर स्वयं के लिए खड़े हैं; */
/* मल्टी-बाइट वर्णों के लिए टोकन को परिभाषित करना होगा। */

%प्रारंभ विशिष्टता

%%

युक्ति: डीईएफ़ मार्क नियम पूंछ
;
पूँछ : मार्क
{
/* इस क्रिया में, शेष फ़ाइल सेट करें। */
}
| /* खाली; दूसरा मार्क वैकल्पिक है. */
;
डीईएफ़: /* खाली. */
| डीईएफ़ डीईएफ़
;
डीईएफ़: प्रारंभ पहचानकर्ता
| मिलन
{
/* यूनियन परिभाषा को आउटपुट में कॉपी करें। */
}
| LCURL
{
/* C कोड को आउटपुट फ़ाइल में कॉपी करें। */
}
आरसीयूआरएल
| rword टैग nlist
;
शब्द: टोकन
| बाएं
| सही
| नॉनसॉस्क
| प्रकार
;
टैग: /* खाली: यूनियन टैग आईडी वैकल्पिक। */
| '<' पहचानकर्ता '>'
;
सूची: एनएमएनओ
| nlist
;
एनएमएनओ: पहचानकर्ता /* नोट: % प्रकार के साथ शाब्दिक रूप से अमान्य। */
| पहचानकर्ता संख्या /* नोट: % प्रकार के साथ अमान्य। */
;

/*नियम अनुभाग*/

नियम: C_IDENTIFIER rbody prec
| नियम नियम
;
नियम: C_IDENTIFIER rbody prec
| '|' आरबॉडी प्री
;
आरबॉडी: /*खाली*/
| शरीर पहचानकर्ता
| आरबॉडी एक्ट
;
कार्य : '{'
{
/* कार्रवाई कॉपी करें, $$ का अनुवाद करें, इत्यादि। */
}
'}'
;
सटीक: /*खाली*/
| सटीक पहचानकर्ता
| सटीक पहचानकर्ता अधिनियम
| सटीक ';'
;

Conflicts
इनपुट व्याकरण के लिए निर्मित पार्सर में ऐसी स्थितियाँ हो सकती हैं जिनमें टकराव होता है।
टकराव इसलिए होता है क्योंकि व्याकरण नहीं है एलएएलआर(1). व्याकरण में हमेशा अस्पष्टता होती है
कम से कम एक एलएएलआर(1) संघर्ष. याक उपयोगिता इनमें से किसी एक का उपयोग करके सभी विवादों का समाधान करेगी
डिफ़ॉल्ट नियम या उपयोगकर्ता-निर्दिष्ट प्राथमिकता नियम।

संघर्ष या तो संघर्षों को स्थानांतरित करना/कम करना है या संघर्षों को कम करना/कम करना है। एक बदलाव/कमी
संघर्ष वह है, जहां किसी दिए गए राज्य और भविष्य के प्रतीक के लिए, एक शिफ्ट कार्रवाई और एक दोनों
कार्रवाई में कमी संभव है. किसी दिए गए राज्य के लिए, संघर्ष को कम करना/कम करना है
लुकअहेड प्रतीक, दो अलग-अलग नियमों द्वारा कटौती संभव है।

नीचे दिए गए नियम बताते हैं कि कैसे निर्दिष्ट किया जाए कि कोई विरोध होने पर क्या कार्रवाई की जाए। नहीं
सभी बदलाव/कमी संघर्षों को इस तरह सफलतापूर्वक हल किया जा सकता है क्योंकि संघर्ष हो सकता है
अस्पष्टता के अलावा किसी और चीज़ के कारण हो सकता है, इसलिए इन सुविधाओं का असावधानीपूर्वक उपयोग इसका कारण बन सकता है
पार्सर द्वारा स्वीकार की गई भाषा इच्छित भाषा से बहुत भिन्न है।
विवरण फ़ाइल में इसका कारण समझने के लिए पर्याप्त जानकारी होनी चाहिए
टकराव। जहां अस्पष्टता कारण है वहां या तो डिफ़ॉल्ट या स्पष्ट नियम होने चाहिए
एक कार्यशील पार्सर तैयार करने के लिए पर्याप्त है।

घोषित प्राथमिकताएँ और संबद्धताएँ (देखें घोषणाओं अनुभाग) आदत है
पार्सिंग विवादों को इस प्रकार हल करें:

1. प्रत्येक व्याकरण नियम के साथ एक प्राथमिकता और संबद्धता जुड़ी होती है; यह है
नियम के मुख्य भाग में अंतिम टोकन या शाब्दिक की प्राथमिकता और संबद्धता। अगर
la %prec कीवर्ड का उपयोग किया जाता है, यह इस डिफ़ॉल्ट को ओवरराइड करता है। कुछ व्याकरण नियम संभवतः नहीं होंगे
प्राथमिकता और साहचर्य दोनों हैं।

2. यदि कोई बदलाव/घटाव है, और व्याकरण नियम और इनपुट प्रतीक दोनों हैं
उनके साथ पूर्वता और संबद्धता जुड़ी हुई है, तो संघर्ष हल हो जाता है
उच्च प्राथमिकता से जुड़ी कार्रवाई (स्थानांतरण या कमी) के पक्ष में। यदि
प्राथमिकताएँ समान हैं, तो साहचर्य का उपयोग किया जाता है; वाम साहचर्य का तात्पर्य है
कम करें, सही साहचर्य का अर्थ है बदलाव, और गैर-सहयोगी का अर्थ है एक त्रुटि
स्ट्रिंग को पार्स किया जा रहा है।

3. जब कोई बदलाव/घटाव होता है जिसे नियम 2 द्वारा हल नहीं किया जा सकता है, तो बदलाव होता है
हो गया। इस तरह से हल किए गए संघर्षों को वर्णित नैदानिक ​​आउटपुट में गिना जाता है
त्रुटि हैंडलिंग.

4. जब द्वंद्व को कम/घटाना हो तो व्याकरण नियम के द्वारा न्यूनीकरण किया जाता है
इनपुट अनुक्रम में पहले होता है। इस तरह से सुलझाए गए संघर्षों को इसमें गिना जाता है
डायग्नोस्टिक आउटपुट में वर्णित है त्रुटि हैंडलिंग.

प्राथमिकता या सहयोगीता द्वारा हल किए गए संघर्षों को बदलाव/घटाने में नहीं गिना जाएगा
और द्वारा रिपोर्ट किए गए संघर्षों को कम/कम करें याक या तो मानक त्रुटि पर या में
विवरण फ़ाइल.

त्रुटि हैंडलिंग
टोकन त्रुटि त्रुटि प्रबंधन के लिए आरक्षित रखा जाएगा। नाम त्रुटि में इस्तेमाल किया जा सकता है
व्याकरण के नियम। यह उन स्थानों को इंगित करता है जहां पार्सर सिंटैक्स त्रुटि से उबर सकता है।
का डिफ़ॉल्ट मान त्रुटि 256 होगा। इसका मान a का उपयोग करके बदला जा सकता है % टोकन घोषणा।
शाब्दिक विश्लेषक को इसका मान वापस नहीं करना चाहिए त्रुटि.

पार्सर एक वाक्यविन्यास त्रुटि का पता लगाएगा जब यह उस स्थिति में होगा जहां कार्रवाई जुड़ी हुई है
लुकअहेड प्रतीक के साथ है त्रुटि. एक अर्थ संबंधी क्रिया पार्सर को आरंभ करने का कारण बन सकती है
मैक्रो YYERROR निष्पादित करके त्रुटि प्रबंधन। जब YYERROR निष्पादित किया जाता है, तो अर्थपूर्ण
कार्रवाई नियंत्रण को पार्सर को वापस भेज देती है। YYERROR का प्रयोग शब्दार्थ के बाहर नहीं किया जा सकता
कार्रवाई।

जब पार्सर एक सिंटैक्स त्रुटि का पता लगाता है, तो यह सामान्य रूप से कॉल करता है yyerror()चरित्र के साथ
स्ट्रिंग "वाक्य - विन्यास गलती" इसके तर्क के रूप में. यदि पार्सर स्थिर है तो कॉल नहीं की जाएगी
त्रुटि का पता चलने पर पिछली त्रुटि से उबरना। पार्सर को माना जाता है
पिछली त्रुटि से तब तक उबरना होगा जब तक कि पार्सर कम से कम तीन से अधिक स्थानांतरित न हो जाए
अंतिम त्रुटि का पता चलने या कोई सिमेंटिक क्रिया निष्पादित होने के बाद से सामान्य इनपुट प्रतीक
मैक्रो yyerrok. पार्सर कॉल नहीं करेगा yyerror() जब YYERROR निष्पादित होता है।

यदि सिंटैक्स त्रुटि का पता चला है तो मैक्रो फ़ंक्शन YYRECOVERING 1 लौटाएगा और
पार्सर अभी तक इससे पूरी तरह उबर नहीं पाया है। अन्यथा, शून्य लौटा दिया जाएगा.

जब पार्सर द्वारा एक सिंटैक्स त्रुटि का पता लगाया जाता है, तो पार्सर यह जांच करेगा कि क्या कोई पिछला सिंटैक्स है
त्रुटि का पता चला है. यदि पिछली त्रुटि का पता चला था, और यदि कोई सामान्य इनपुट प्रतीक नहीं था
पिछली त्रुटि का पता चलने के बाद से स्थानांतरित कर दिया गया है, पार्सर जाँच करता है कि क्या
लुकअहेड प्रतीक एक एंडमार्कर है (देखें)। इंटरफेस सेवा मेरे la शब्द-भांडार का विश्लेषक). यदि यह है,
पार्सर गैर-शून्य मान के साथ वापस आएगा। अन्यथा, आगे की ओर देखने का प्रतीक होगा
खारिज कर दिया गया और सामान्य पार्सिंग फिर से शुरू होगी।

जब YYERROR निष्पादित होता है या जब पार्सर एक सिंटैक्स त्रुटि का पता लगाता है और कोई पिछली त्रुटि नहीं होती है
का पता लगाया गया है, या कम से कम एक सामान्य इनपुट प्रतीक को पिछले से स्थानांतरित कर दिया गया है
त्रुटि का पता चला है, पार्सर स्टैक होने तक पार्सर एक समय में एक स्थिति को वापस पॉप करेगा
खाली या वर्तमान स्थिति बदलाव की अनुमति देती है त्रुटि. यदि पार्सर पार्स को खाली कर देता है
स्टैक, यह गैर-शून्य मान के साथ वापस आएगा। अन्यथा, यह स्थानांतरित हो जाएगा त्रुटि और
फिर सामान्य पार्सिंग फिर से शुरू करें। यदि पार्सर त्रुटि होने से पहले एक लुकअहेड प्रतीक पढ़ता है
पता चला, पार्सिंग फिर से शुरू होने पर वह प्रतीक अभी भी आगे का प्रतीक होगा।

स्थूल yyerrok एक सिमेंटिक एक्शन में पार्सर को ऐसे कार्य करने के लिए प्रेरित करेगा जैसे कि उसने पूरी तरह से किया हो
पिछली किसी भी त्रुटि से उबर गया। स्थूल yyclearin पार्सर को त्यागने का कारण बनेगा
वर्तमान लुकअहेड टोकन. यदि वर्तमान लुकहेड टोकन अभी तक पढ़ा नहीं गया है,
yyclearin कोई प्रभाव नहीं पड़ेगा.

मैक्रो YYACCEPT पार्सर को मान शून्य के साथ वापस लौटने का कारण बनेगा। मैक्रो YYABORT
पार्सर को गैर-शून्य मान के साथ वापस लौटने का कारण बनेगा।

इंटरफेस सेवा मेरे la शब्द-भांडार का विश्लेषक
RSI yylex() फ़ंक्शन एक पूर्णांक-मूल्यवान फ़ंक्शन है जो रिटर्न देता है टोकन संख्या
टोकन पढ़ने के प्रकार का प्रतिनिधित्व करना। यदि टोकन के साथ कोई मूल्य जुड़ा हुआ है
द्वारा लौटा yylex() (की चर्चा देखें टैग ऊपर), इसे सौंपा जाएगा
बाह्य चर yylval.

यदि पार्सर और yylex() इन टोकन नंबरों पर सहमत नहीं हैं, विश्वसनीय संचार
उनके बीच घटित नहीं हो सकता. (एकल-बाइट वर्ण) शाब्दिक के लिए, टोकन बस है
वर्तमान वर्ण सेट में वर्ण का संख्यात्मक मान. अन्य टोकन के लिए नंबर
या तो द्वारा चुना जा सकता है याक, या उपयोगकर्ता द्वारा चुना गया। किसी भी मामले में, #define निर्माण
C का उपयोग अनुमति देने के लिए किया जाता है yylex() इन नंबरों को प्रतीकात्मक रूप से वापस करने के लिए। #define बयान
कोड फ़ाइल में डाल दिया जाता है, और यदि उस फ़ाइल का अनुरोध किया जाता है तो हेडर फ़ाइल में डाल दिया जाता है। के समुच्चय
द्वारा अनुमत वर्ण याक एक पहचानकर्ता में सी. टोकन द्वारा अनुमत पहचानकर्ता से बड़ा है
ऐसे अक्षर पाए जाने वाले नामों को इसमें शामिल नहीं किया जाएगा #define घोषणाएं

यदि टोकन नंबरों का चयन किया जाता है याक, अक्षरशः के अलावा अन्य टोकन आवंटित किए जाएंगे
संख्याएँ 256 से अधिक हैं, हालाँकि कोई आदेश निहित नहीं है। एक टोकन स्पष्ट रूप से सौंपा जा सकता है
किसी संख्या के साथ घोषणा अनुभाग में उसकी पहली उपस्थिति का अनुसरण करके।
इस प्रकार परिभाषित नहीं किए गए नाम और अक्षर अपनी डिफ़ॉल्ट परिभाषा बनाए रखते हैं। सभी टोकन नंबर
द्वारा सौंपा याक शाब्दिक और के लिए उपयोग किए जाने वाले टोकन नंबरों से अद्वितीय और अलग होगा
उपयोगकर्ता द्वारा निर्दिष्ट टोकन। यदि डुप्लिकेट टोकन नंबर पार्सर पीढ़ी में विरोध का कारण बनते हैं,
याक एक त्रुटि की रिपोर्ट करेगा; अन्यथा, यह निर्दिष्ट नहीं है कि टोकन असाइनमेंट है या नहीं
स्वीकार कर लिया गया है या त्रुटि की सूचना दी गई है।

इनपुट के अंत को एक विशेष टोकन द्वारा चिह्नित किया जाता है जिसे कहा जाता है अंतिम चिह्नक, जिसमें एक टोकन है
वह संख्या जो शून्य या ऋणात्मक हो। (ये मान किसी अन्य टोकन के लिए अमान्य हैं।) सभी
लेक्सिकल विश्लेषक अंत तक पहुंचने पर एक टोकन संख्या के रूप में शून्य या नकारात्मक लौटाएंगे
उनका इनपुट. यदि टोकन तक, लेकिन छोड़कर, एंडमार्कर एक संरचना बनाता है
प्रारंभ प्रतीक से मेल खाता है, पार्सर इनपुट स्वीकार करेगा। यदि एंडमार्कर दिखाई देता है
किसी अन्य संदर्भ में, इसे एक त्रुटि माना जाएगा।

पूर्ण कर रहा है la कार्यक्रम
करने के लिए इसके अलावा में य्यपारसे() तथा yylex(), कार्य yyerror() तथा मुख्य() के लिए अपेक्षित है
पूरा प्रोग्राम बनाओ. एप्लिकेशन आपूर्ति कर सकता है मुख्य() तथा yyerror(), या वो
से दिनचर्या प्राप्त की जा सकती है याक पुस्तकालय।

याक पुस्तकालय
निम्नलिखित फ़ंक्शन केवल इसमें दिखाई देंगे याक पुस्तकालय के माध्यम से पहुँचा जा सकता है -एल y
संकार्य को c99; इसलिए उन्हें एक अनुरूप अनुप्रयोग द्वारा पुनः परिभाषित किया जा सकता है:

int मुख्य(शून्य)
यह फ़ंक्शन कॉल करेगा य्यपारसे() और अनिर्दिष्ट मान के साथ बाहर निकलें। अन्य कार्रवाई
इस फ़ंक्शन के भीतर अनिर्दिष्ट हैं।

int yyerror(const टैंक *s)
यह फ़ंक्शन मानक त्रुटि के लिए एनयूएल-समाप्त तर्क लिखेगा, उसके बाद
ए .

का क्रम -एल y और -एल l ऑपरेंड को दिया गया c99 महत्वपूर्ण है; आवेदन करेगा
या तो अपना खुद का प्रदान करें मुख्य() कार्य करें या सुनिश्चित करें -एल y पछाड़ -एल l.

डीबगिंग la पार्सर
द्वारा उत्पन्न पार्सर याक इसमें नैदानिक ​​सुविधाएं होंगी जो वैकल्पिक हो सकती हैं
संकलन समय पर या रनटाइम पर सक्षम (यदि संकलन समय पर सक्षम है)।
रनटाइम डिबगिंग कोड का संकलन YYDEBUG, एक प्रीप्रोसेसर के नियंत्रण में है
प्रतीक। यदि YYDEBUG का मान शून्य नहीं है, तो डिबगिंग कोड शामिल किया जाएगा। अगर यह है
मान शून्य है, कोड शामिल नहीं किया जाएगा।

पार्सर्स में जहां डिबगिंग कोड शामिल किया गया है, external int yydebug हो सकता है
रनटाइम पर डिबगिंग को चालू (गैर-शून्य मान के साथ) और बंद (शून्य मान) करने के लिए उपयोग किया जाता है।
का प्रारंभिक मूल्य yydebug शून्य होगा.

. आयकर निर्दिष्ट है, कोड फ़ाइल इस तरह बनाई जाएगी कि, यदि YYDEBUG पहले से नहीं है
संकलन समय पर परिभाषित (का उपयोग करके) c99 -डी YYDEBUG विकल्प, उदाहरण के लिए), YYDEBUG करेगा
स्पष्ट रूप से 1. कब पर सेट किया जाए आयकर निर्दिष्ट नहीं है, कोड फ़ाइल इस प्रकार बनाई जाएगी कि,
यदि YYDEBUG पहले से परिभाषित नहीं है, तो इसे स्पष्ट रूप से शून्य पर सेट किया जाएगा।

डिबगिंग आउटपुट का प्रारूप अनिर्दिष्ट है लेकिन इसमें कम से कम पर्याप्त जानकारी शामिल है
बदलाव निर्धारित करने और क्रियाओं को कम करने और इनपुट प्रतीकों के लिए। यह भी प्रदान करता है
त्रुटि सुधार के बारे में जानकारी.

एल्गोरिदम
पार्सर द्वारा निर्मित याक एक लागू करता है एलएएलआर(1) दस्तावेज़ के अनुसार पार्सिंग एल्गोरिदम
साहित्य। यह निर्दिष्ट नहीं है कि पार्सर टेबल-चालित है या डायरेक्ट-कोडित है।

द्वारा उत्पन्न एक पार्सर याक से कभी भी इनपुट प्रतीक का अनुरोध नहीं किया जाएगा yylex() जबकि ए में
बताएं कि त्रुटि कार्रवाई के अलावा एकमात्र क्रियाएं एक नियम द्वारा कटौती हैं।

पार्सिंग सिद्धांत का साहित्य इन अवधारणाओं को परिभाषित करता है।

सीमाएं
RSI याक उपयोगिता में कई आंतरिक तालिकाएँ हो सकती हैं। इन तालिकाओं के लिए न्यूनतम अधिकतम
निम्नलिखित तालिका में दिखाया गया है। इन मूल्यों का सटीक अर्थ कार्यान्वयन है-
परिभाषित। कार्यान्वयन इन मूल्यों के बीच के संबंध को परिभाषित करेगा
उन्हें और कार्यान्वयन से उत्पन्न होने वाले किसी भी त्रुटि संदेश के समाप्त होने पर
किसी भी आंतरिक संरचना के लिए स्थान। एक कार्यान्वयन इन संसाधनों के समूहों को जोड़ सकता है
जब तक उपयोगकर्ता के लिए उपलब्ध कुल योग से कम न हो जाए, तब तक इसे एक ही पूल में रखा जाएगा
इस अनुभाग द्वारा निर्दिष्ट आकारों में से.

तालिका: आंतरिक सीमाएं in याक

┌───────────┬─────────┬──────────── ────────── ─────┐
मैं न्यूनतम मैं
सीमाअधिकतमDescription
├───────────┼─────────┼──────────── ────────── ─────┤
│{NTERMS} │ 126 │ टोकन की संख्या। │
│{NNONTERM} │ 200 │ गैर-टर्मिनलों की संख्या। │
│{NPROD} │ 300 │ नियमों की संख्या। │
│{NSTATES} │ 600 │ राज्यों की संख्या। │
│{MEMSIZE} │ 5200 │ नियमों की लंबाई। कुल │
│ │ │ लंबाई, नामों में (टोकन और │
│ │ │ गैर-टर्मिनल), सभी │ में से
│ │ │ व्याकरण के नियम। │
│ │ │ बाईं ओर की गिनती │ के लिए की जाती है
│ │ │ प्रत्येक नियम, भले ही वह │ न हो
│ │ │ स्पष्ट रूप से दोहराया गया, │ के रूप में
│ │ │ में निर्दिष्ट व्याकरण नियम in
│ │ │ याक. │
│{ACTSIZE} │ 4000 │ क्रियाओं की संख्या। ``कार्य'' │
│ │ │ यहां (और विवरण में │
│ │ │ फ़ाइल) पार्सर क्रियाओं को देखें │
│ │ │ (शिफ्ट, कम करना, इत्यादि) नहीं │
│ │ │ में परिभाषित शब्दार्थ क्रियाओं के लिए
│ │ │ व्याकरण नियम in याक. │
└───────────┴─────────┴──────────── ────────── ─────┘

बाहर निकलें स्थिति


निम्नलिखित निकास मान लौटाए जाएंगे:

0 सफल समापन।

> 0 एक त्रुटि हुई।

परिणामों OF त्रुटियों


यदि कोई त्रुटि सामने आती है, तो रन निरस्त कर दिया जाता है याक गैर-शून्य स्थिति के साथ बाहर निकलता है।
आंशिक कोड फ़ाइलें और हेडर फ़ाइलें उत्पादित की जा सकती हैं। में सारांश जानकारी
विवरण फ़ाइल हमेशा तैयार की जाएगी यदि -v झंडा मौजूद है.

RSI निम्नलिखित वर्गों रहे जानकारीपूर्ण।

आवेदन उपयोग


ऐतिहासिक कार्यान्वयन में नामों पर टकराव का अनुभव होता है yacc.tmp, yacc.acts,
yacc.debug, y.tab.c, वाई.टैब.एच, तथा y.आउटपुट यदि एक से अधिक प्रतियाँ हों याक में चल रहा है
एक समय में एकल निर्देशिका. बी इस समस्या को दूर करने के लिए विकल्प जोड़ा गया।
एकाधिक अनुमति देने की संबंधित समस्या याक पार्सर्स को एक ही फ़ाइल में रखा जाना था
एक जोड़कर संबोधित किया गया -पी पहले से हार्ड-कोडित को ओवरराइड करने का विकल्प yy परिवर्तनशील उपसर्ग.

का वर्णन है -पी विकल्प फ़ंक्शन और वेरिएबल नामों का न्यूनतम सेट निर्दिष्ट करता है
जब एकाधिक पार्सर्स एक साथ जुड़े होते हैं तो संघर्ष उत्पन्न होता है। YYSTYPE की आवश्यकता नहीं है
बदला हुआ। इसके बजाय, प्रोग्रामर उपयोग कर सकता है बी विभिन्न पार्सर्स के लिए हेडर फ़ाइलें देने के लिए
अलग-अलग नाम, और फिर फ़ाइल के साथ yylex() किसी दिए गए पार्सर के लिए शामिल हो सकता है
उस पार्सर के लिए हेडर. जैसे नाम yyclearr उन्हें बदलने की आवश्यकता नहीं है क्योंकि वे
केवल क्रियाओं में ही प्रयुक्त होते हैं; उनमें लिंकेज नहीं है. यह संभव है कि ए
कार्यान्वयन के अन्य नाम हैं, या तो चीजों को लागू करने के लिए आंतरिक नाम हैं
yyclearr, या गैर-मानक सुविधाएँ प्रदान करना जिनके साथ वह बदलना चाहता है -पी.

यूनरी ऑपरेटर जो सामान्यतः बाइनरी ऑपरेटर के समान टोकन होते हैं, उन्हें उनकी आवश्यकता होती है
प्राथमिकता समायोजित. यह द्वारा नियंत्रित किया जाता है %prec के साथ संबद्ध सलाहकार चिह्न
उस यूनरी ऑपरेटर को परिभाषित करने वाला विशेष व्याकरण नियम। (देखना व्याकरण नियम in याक.)
यूनरी ऑपरेटरों के लिए एप्लिकेशन को इस ऑपरेटर का उपयोग करने की आवश्यकता नहीं है, बल्कि व्याकरण की आवश्यकता है
जिनकी आवश्यकता नहीं होती, वे दुर्लभ हैं।

उदाहरण


इस तक पहुंच याक लाइब्रेरी को लाइब्रेरी सर्च ऑपरेंड के साथ प्राप्त किया जाता है c99। का उपयोग करने के लिए
याक पुस्तकालय मुख्य():

c99 y.tab.c -एल y

दोनों लेक्रस पुस्तकालय और याक पुस्तकालय में शामिल हैं मुख्य(). तक पहुँचने के लिए याक मुख्य():

c99 y.tab.c लेक्स.yy.c -एल y -एल l

यह सुनिश्चित करता है कि याक सबसे पहले लाइब्रेरी की खोज की जाती है, ताकि मुख्य() प्रयोग किया जाता है।

ऐतिहासिक याक पुस्तकालयों में दो सरल कार्य होते हैं जिन्हें सामान्यतः कोडित किया जाता है
एप्लिकेशन प्रोग्रामर द्वारा. ये फ़ंक्शन निम्नलिखित कोड के समान हैं:

# शामिल
int मुख्य(शून्य)
{
बाहरी int yyparse();

सेटलोकेल(LC_ALL, "");

/* यदि निम्नलिखित पार्सर लेक्स द्वारा बनाया गया है, तो
एप्लिकेशन को यह सुनिश्चित करने में सावधानी बरतनी चाहिए कि LC_CTYPE
और LC_COLLATE को POSIX लोकेल पर सेट किया गया है। */
(शून्य) yyparse();
वापसी (0);
}

#शामिल

int yyerror (स्थिरांक चार * संदेश)
{
(शून्य) fprintf(stderr, "%s\n", संदेश);
वापसी (0);
}

औचित्य


में सन्दर्भ संदर्भित दस्तावेज़ पार्सर के निर्माण में सहायक हो सकता है
जेनरेटर. संदर्भित डेरेमर और पेनेलो लेख (इसके कार्यों के साथ)।
references) इस वॉल्यूम के अनुरूप पार्सर उत्पन्न करने की एक तकनीक का वर्णन करता है
POSIX.1-2008. इस क्षेत्र में काम जारी है, इसलिए कार्यान्वयनकर्ताओं को परामर्श लेना चाहिए
कोई भी नया कार्यान्वयन करने से पहले वर्तमान साहित्य। मूल नुथ लेख है
इस प्रकार के पार्सर के लिए सैद्धांतिक आधार, लेकिन इससे उत्पन्न तालिकाएँ अव्यावहारिक हैं
उचित व्याकरण के लिए बड़ा और इसका उपयोग नहीं किया जाना चाहिए। ``समतुल्य'' शब्द है
यह आश्वस्त करने का इरादा है कि सर्वोत्तम तालिकाएँ हैं एलएएलआर(1) उत्पन्न किया जा सकता है।

व्याकरण के वर्ग, उत्पन्न करने के लिए आवश्यक एल्गोरिदम के बीच भ्रम हो गया है
पार्सर्स, और भाषाओं को पार्स करने के लिए आवश्यक एल्गोरिदम। वे सभी उचित हैं
ओर्थोगोनल. विशेष रूप से, एक पार्सर जनरेटर जो की पूरी श्रृंखला को स्वीकार करता है LR(1)
व्याकरण को स्वीकार करने वाली तालिका से अधिक जटिल तालिका बनाने की आवश्यकता नहीं है एसएलआर(1) (ए
एलआर व्याकरण का अपेक्षाकृत कमजोर वर्ग) एक व्याकरण के लिए होता है एसएलआर(1). इस तरह के एक
कार्यान्वयन को मामले को पहचानने की आवश्यकता नहीं है; तालिका संपीड़न उत्पन्न कर सकता है एसएलआर(1)
व्याकरण को पहचाने बिना तालिका (या उससे भी छोटी तालिका)। एसएलआर(1)।
एक की गति LR(1) किसी भी वर्ग के लिए पार्सर तालिका प्रतिनिधित्व पर अधिक निर्भर है
वर्ग की तुलना में संपीड़न (या यदि प्रत्यक्ष पार्सर उत्पन्न होता है तो कोड जनरेशन)।
व्याकरण का जिसे टेबल जनरेटर संभालता है।

पार्सर जनरेटर की गति कुछ हद तक व्याकरण की कक्षा पर निर्भर करती है
हैंडल. हालाँकि, एलआर पार्सर के निर्माण के लिए मूल नथ लेख एल्गोरिदम थे
इसके लेखक द्वारा उस समय इसे अव्यावहारिक रूप से धीमा माना गया। हालांकि फुल एलआर ज्यादा है
से जटिल एलएएलआर(1), जैसे-जैसे कंप्यूटर की गति और एल्गोरिदम में सुधार होता है, अंतर (शब्दों में)
स्वीकार्य दीवार-घड़ी निष्पादन समय का) कम महत्वपूर्ण होता जा रहा है।

संभावित लेखकों को सावधान किया जाता है कि संदर्भित डेरेमर और पेनेलो लेख
पहले उद्धृत एक बग की पहचान करता है (गणना का अति-सरलीकरण)। एलएएलआर(1)
कुछ में लुकहेड सेट) एलएएलआर(1) एल्गोरिथम कथन जो इससे पहले आए थे
प्रकाशन. उन्हें उस पेपर को ढूंढने के लिए समय निकालना चाहिए, साथ ही वर्तमान प्रासंगिक भी
काम, विशेषकर अहो का।

RSI बी अनुमति देने के लिए एक पोर्टेबल विधि प्रदान करने के लिए विकल्प जोड़ा गया था याक जिसपे काम करना
एक ही निर्देशिका में एकाधिक अलग-अलग पार्सर। यदि किसी निर्देशिका में एक से अधिक हैं
याक व्याकरण, और दोनों व्याकरण एक ही समय में निर्मित होते हैं (उदाहरण के लिए, ए द्वारा)।
समानांतर बनाना कार्यक्रम), संघर्ष परिणाम। हालाँकि समाधान ऐतिहासिक अभ्यास नहीं है,
यह ऐतिहासिक कार्यान्वयन में ज्ञात कमी को ठीक करता है। तदनुरूप परिवर्तन थे
फ़ाइल नामों को संदर्भित करने वाले सभी अनुभागों में बनाया गया y.tab.c (अब ``कोड फ़ाइल''),
वाई.टैब.एच (अब ``हेडर फ़ाइल''), और y.आउटपुट (अब ``विवरण फ़ाइल'')।

व्याकरण के लिए याक इनपुट सिस्टम V दस्तावेज़ीकरण पर आधारित है। पाठ्य विवरण
वहां दिखाता है कि ';' नियम के अंत में आवश्यक है. व्याकरण और
कार्यान्वयन के लिए इसकी आवश्यकता नहीं है. (का उपयोग C_पहचानकर्ता में कमी का कारण बनता है
सही जगह।)

इसके अलावा, उस कार्यान्वयन में, जैसे निर्माण % टोकन ए द्वारा समाप्त किया जा सकता है
, लेकिन व्याकरण इसकी अनुमति नहीं देता। कीवर्ड जैसे % टोकन कर सकते हैं
अपरकेस में भी दिखाई देते हैं, जिस पर फिर से चर्चा नहीं की गई है। ज्यादातर जगहों पर जहां '%' प्रयोग किया जाता है,
प्रतिस्थापित किया जा सकता है, और कुछ प्रतीकों के लिए वैकल्पिक वर्तनी हैं
(उदाहरण के लिए, %बाएं हो सकता है "%<" या यहाँ तक "\<").

ऐतिहासिक रूप से,टैग> को छोड़कर कोई भी वर्ण शामिल हो सकता है '>', सफेद स्थान सहित, में
कार्यान्वयन। हालाँकि, जब से टैग इसमें आईएसओ सी मानक यूनियन सदस्य का संदर्भ होना चाहिए
अभ्यास अनुरूप कार्यान्वयन को आईएसओ सी के लिए केवल वर्णों के सेट का समर्थन करने की आवश्यकता है
इस संदर्भ में मानक पहचानकर्ता।

कुछ ऐतिहासिक कार्यान्वयन उन कार्रवाइयों को स्वीकार करने के लिए जाने जाते हैं जिन्हें a द्वारा समाप्त कर दिया जाता है
अवधि। ऐतिहासिक कार्यान्वयन अक्सर अनुमति देते हैं '' नामों में. एक अनुरूप कार्यान्वयन
इनमें से किसी भी व्यवहार का समर्थन करने की आवश्यकता नहीं है।

कब उपयोग करना है यह निर्णय लेना %prec के व्यवहार को निर्दिष्ट करने में कठिनाई को दर्शाता है याक.
ऐसी स्थितियाँ हो सकती हैं जिनमें व्याकरण सच कहूँ तो, गलती से नहीं है, और फिर भी
याक इसकी स्पष्ट व्याख्या नहीं कर सकते। व्याकरण में अस्पष्टताओं का समाधान हो सकता है
कई मामलों में अतिरिक्त जानकारी प्रदान करके समाधान किया जा सकता है, जैसे कि उपयोग करना %प्रकार or
%संघ घोषणाएँ यह अक्सर आसान होता है और आमतौर पर इसे लेने के लिए एक छोटा पार्सर मिलता है
यह विकल्प जब उपयुक्त हो।

रनटाइम डिबगिंग कोड के बिना निर्मित प्रोग्राम का आकार और निष्पादन समय है
ऐतिहासिक कार्यान्वयन में आमतौर पर छोटा और थोड़ा तेज़।

कई ऐतिहासिक कार्यान्वयनों के सांख्यिकी संदेशों में निम्नलिखित प्रकार शामिल हैं
जानकारी:

n/512 टर्मिनल, n/300 गैर-टर्मिनल
n/600 व्याकरण नियम, n/1500 राज्य
n शिफ्ट/कम करें, n रिपोर्ट किए गए संघर्षों को कम करें/कम करें
n/350 वर्किंग सेट का उपयोग किया गया
मेमोरी: अवस्थाएँ, आदि। n/15000, पार्सर n/ 15000
n/600 विशिष्ट लुकहेड सेट
n अतिरिक्त समापन
n प्रविष्टियाँ बदलें, n अपवाद
n गोटो प्रविष्टियाँ
n प्रविष्टियाँ गोटो डिफ़ॉल्ट द्वारा सहेजी गईं
ऑप्टिमाइज़र स्थान का उपयोग किया गया: इनपुट n/15000, आउटपुट n/ 15000
n तालिका प्रविष्टियाँ, n शून्य
अधिकतम प्रसार: n, अधिकतम ऑफसेट: n

विवरण फ़ाइल में आंतरिक तालिकाओं की रिपोर्ट कार्यान्वयन-परिभाषित छोड़ दी गई है
क्योंकि इन सीमाओं के सभी पहलू कार्यान्वयन-परिभाषित भी हैं। कुछ कार्यान्वयन
गतिशील आवंटन तकनीकों का उपयोग कर सकते हैं और रिपोर्ट करने के लिए कोई विशिष्ट सीमा मान नहीं हैं।

का प्रारूप y.आउटपुट फ़ाइल नहीं दी गई है क्योंकि प्रारूप का विवरण नहीं था
एप्लिकेशन पोर्टेबिलिटी को बढ़ाने के लिए देखा गया। सूची का मुख्य उद्देश्य मानव की सहायता करना है
उपयोगकर्ता पार्सर को समझते हैं और डीबग करते हैं; का उपयोग y.आउटपुट एक अनुरूप अनुप्रयोग स्क्रिप्ट द्वारा
असामान्य होगा. इसके अलावा, कार्यान्वयन ने लगातार आउटपुट नहीं दिया है और नहीं
लोकप्रिय प्रारूप स्पष्ट था। कार्यान्वयन द्वारा चयनित प्रारूप मानवीय होना चाहिए-
पठनीय, इस आवश्यकता के अतिरिक्त कि यह एक पाठ फ़ाइल हो।

मानक त्रुटि रिपोर्टों का विशेष रूप से वर्णन नहीं किया गया है क्योंकि वे शायद ही कभी उपयोग में आती हैं
अनुरूप अनुप्रयोग और कार्यान्वयन को प्रतिबंधित करने का कोई कारण नहीं था।

कुछ कार्यान्वयन पहचानते हैं "={" के बराबर के रूप में '{' क्योंकि यह ऐतिहासिक रूप से प्रकट होता है
दस्तावेज़ीकरण. इस निर्माण को बहुत पहले ही अप्रचलित मान लिया गया था और दस्तावेज़ीकृत भी कर दिया गया था
1978, संदर्भित में याक: अभी तक अन्य संकलक-संकलक. POSIX.1-2008 का यह खंड
इसे अप्रचलित मानकर छोड़ देने का निर्णय लिया।

मल्टी-बाइट वर्णों को लेक्सिकल विश्लेषक द्वारा पहचाना जाना चाहिए और टोकन के रूप में लौटाया जाना चाहिए।
उन्हें मल्टी-बाइट वर्ण शाब्दिक के रूप में वापस नहीं किया जाना चाहिए। टोकन त्रुटि जिसका उपयोग किया जाता है
त्रुटि पुनर्प्राप्ति के लिए ऐतिहासिक कार्यान्वयन में सामान्यतः मान 256 निर्दिष्ट किया जाता है।
इस प्रकार, टोकन मान 256, जिसका उपयोग कई मल्टी-बाइट कैरेक्टर सेट में किया जाता है, नहीं है
उपयोगकर्ता द्वारा परिभाषित टोकन के मूल्य के रूप में उपयोग के लिए उपलब्ध है।

भविष्य दिशानिर्देश


कोई नहीं.

onworks.net सेवाओं का उपयोग करके yaccposix का ऑनलाइन उपयोग करें


फ्री सर्वर और वर्कस्टेशन

विंडोज और लाइनेक्स एप डाउनलोड करें

लिनक्स कमांड

Ad