यहाँ एक है:
bnf = rules ;
rules = rule ;
rules = rules rule ;
rule = lefthandside EQUAL righthandside SEMICOLON ;
lefthandside = IDENTIFIER ;
righthandside = ;
righthandside = righthandside token ;
token = IDENTIFIER ;
token = QUOTEDLITERAL ;
इस पत्ते पहचानकर्ता, QUOTEDLITERAL, समान और SEMICOLON अपरिभाषित, के तहत इस धारणा है कि BNF भाषा के टोकन से अधिक परिभाषित किया गया है।
आप बीएनएफ को पात्रों पर परिभाषित कर सकते हैं। बस जोड़ें:
EQUAL = '=' ;
SEMICOLON = ';' ;
IDENTIFIER = letter ;
IDENTIFIER = IDENTIFIER letterordigit ;
letterordigit = letter ;
letterordigit = digit ;
letter = 'A' ;
...
letter = 'Z' ;
digit = '0' ;
...
digit = '9' ;
वाम पाठक के लिए एक व्यायाम के रूप: विकल्प जोड़ने (|) EBNF के लिए यह एक BNF बनाने के लिए, एक से अधिक नियम, और क्लीन तारा; यह उत्तर स्पष्ट रूप से रिक्त स्थानों को संभालने पर वीज़ल है, लेकिन जहां भी रिक्त स्थान की अनुमति है (icky लेकिन काम करता है) आप "रिक्त स्थान" nonterminal डालने से इसे संभाल सकते हैं। बीएनएफ विनिर्देश प्रणाली हैं जिनमें आप वास्तव में वर्णों पर व्याकरण को अनिवार्य रूप से लिखते हैं, और उस तरह के निहित खाली nonterminal सम्मिलन आपके लिए किया जाता है (उदाहरण के लिए, Stratego's "Syntax Definition Formalism")।
यदि आप बीएनएफ-के-बीएनएफ में दिमागी बहने वाले सबक चाहते हैं, तो आपको बीएनएफ-प्रोसेसिंग सिस्टम के लिए paper/do the tutorial को ईमानदार-से-गोश 1 9 65 से "मेटाआई" कहा जाना चाहिए। यह पत्र बताता है कि बीएनएफ में बीएनएफ कैसे करें और 10 पृष्ठों में दो कंपाइलर्स कैसे बनाएं।
(यहां एक बड़ा सबक: 60 और 70 के दशक से सभी कंप्यूटर विज्ञान सामग्री पढ़ें। इसमें बहुत कुछ नहीं है, और आप आश्चर्यचकित होंगे कि कितनी अच्छी सामग्री है)।
स्रोत
2012-02-29 14:23:30
आपका प्रश्न [BNF पर विकिपीडिया लेख] (http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form#Further_examples) द्वारा उत्तर दिया जा रहा है। –
@GregHewgill दिलचस्प। मुझे फ्रैंक डी रेमर द्वारा सिखाया गया था कि बीएनएफ खुद का वर्णन नहीं कर सकता है। – EJP
@EJP: डी रेमर था (है?) पार्सर जेनरेटर और व्याकरण के साथ बहुत शानदार है, मुझे विश्वास नहीं है कि वह उसे सिखाता। मुझे संदेह है कि आपने जो कुछ सीखा है उसे याद किया है। –