मैं वर्तमान में वाक्य रचनात्मक विश्लेषण सीख रहा हूं।मेटाग्राम कैसे बनाएं?
A ⇒ A '+' C | C ;
C ⇒ C * Q ;
C ⇒ Q ;
Q ⇒ a | b | 'A' | "B" | "(" A ")" | <num> ;
<num> ⇒ <Signed Int> | Float ;
<Signed Int> ⇒ Signe Int ;
Signe ⇒ '-' | '+' | ~eps~
<Int> ⇒ Digit Int | Digit ;
Digit ⇒ '1' | '2' | '3' | '4' | 5 | 6 | 7 | 8 | "9" | "0" ;
Float ⇒ Int '.' Int ;
कहाँ <>
अनदेखी कर रहे हैं (अर्थात <int>
int
के समान है), सिंगल/डबल उद्धरण, एक स्ट्रिंग के लिए कर रहे हैं ~eps~
एप्सिलॉन के लिए है: मैं एक metagrammar जो उस विशेष व्याकरण उत्पन्न कर सकता है बनाने की कोशिश कर रहा हूँ। बाकी सब कुछ एक प्रतीक माना जाता है (चाहे वह टर्मिनल या nonterminal है)।
वर्तमान में मैं कुछ इस तरह है:
S ⇒ left "⇒" right ";" | ε
left ⇒ symb | "<"symb">"
right ⇒ QP
Q ⇒ symb | """symb""" | "'"symb"'" | "<"symb">" | ε
P ⇒ symb | '|' Q | ε
लेकिन यह मेरे लिए इतना गलत लगता है और मैं क्या करने के लिए क्या पर इतना यकीन नहीं है। मेटाग्रामर को निर्धारित करने के लिए कोई तरीका है? मैं इस बारे में कैसे जा सकता हूं?
'साइन ⇒' - 'के साथ लाइन के अंत में '' 'होना चाहिए। '+' | ~ Eps ~ '? –