सिंटेक्स आरेख
सिंटैक्स आरेख (या रेलरोड आरेख) संदर्भ-मुक्त व्याकरण का प्रतिनिधित्व करने का एक विधि है। वे बैकस-नौर फॉर्म, ईबीएनएफ, संवर्धित बैकस-नौर फॉर्म और धातुभाषाओं के रूप में अन्य टेक्स्ट -आधारित व्याकरणों के लिए एक ग्राफिकल विकल्प का प्रतिनिधित्व करते हैं। सिंटैक्स आरेखों का उपयोग करने वाली प्रारंभिक पुस्तकों में निकोलस विर्थ द्वारा लिखित पास्कल उपयोगकर्ता मैनुअल सम्मिलित है[1] (आरेख पृष्ठ 47 से प्रारंभ होते हैं) और बरोज़ कैंडे मैनुअल[2] संकलन क्षेत्र में, बीएनएफ या इसके वेरिएंट जैसे टेक्सटुअल प्रतिनिधित्व को समान्यत: प्राथमिकता दी जाती है। बीएनएफ टेक्स्ट-आधारित है, और कंपाइलर लेखकों और पार्सर जेनरेटर द्वारा उपयोग किया जाता है। रेलरोड आरेख दृश्य हैं, और समान्य लोगों द्वारा अधिक सरलता से समझे जा सकते हैं, जिन्हें कभी-कभी ग्राफिक डिज़ाइन में सम्मिलित किया जाता है। जेएसओएन डेटा विनिमय प्रारूप को परिभाषित करने वाला विहित स्रोत इन आरेखों के लोकप्रिय आधुनिक उपयोग का एक और उदाहरण प्रदान करता है।
सिंटैक्स आरेख का सिद्धांत
व्याकरण का प्रतिनिधित्व सिंटैक्स आरेखों का एक सेट है। प्रत्येक आरेख एक प्रक्रिया में एक गैर-टर्मिनल चरण को परिभाषित करता है। एक मुख्य आरेख है जो लैंग्वेज को निम्नलिखित विधि से परिभाषित करता है: लैंग्वेज से संबंधित होने के लिए, एक शब्द को मुख्य आरेख में एक पथ का वर्णन करना होगा।
प्रत्येक आरेख में एक प्रवेश बिंदु और एक अंत बिंदु होता है। आरेख अन्य गैर-टर्मिनलों और टर्मिनलों से होकर इन दो बिंदुओं के बीच संभावित पथों का वर्णन करता है। ऐतिहासिक रूप से, टर्मिनलों को गोल बक्सों द्वारा और गैर-टर्मिनलों को आयताकार बक्सों द्वारा दर्शाया गया है, किंतु कोई आधिकारिक मानक नहीं है।
उदाहरण
हम विभिन्न व्याकरण प्रारूपों में उदाहरण के रूप में अंकगणितीय अभिव्यक्तियों का उपयोग करते हैं।
बीएनएफ:
<expression> ::= <term> | <term> "+" <expression>
<term> ::= <factor> | <factor> "*" <term>
<factor> ::= <constant> | <variable> | "(" <expression> ")"
<variable> ::= "x" | "y" | "z"
<constant> ::= <digit> | <digit> <constant>
<digit> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
ईबीएनएफ:
expression = term , [ "+" , expression ];
term = factor , [ "*" , term ];
factor = constant | variable | "(" , expression , ")";
variable = "x" | "y" | "z";
constant = digit , { digit };
digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9";
एबीएनएफ:
expression = term ["+" expression]
term = factor ["*" term]
factor = constant / variable / "(" expression ")"
variable = "x" / "y" / "z"
constant = 1*digit
DIGIT = "0" / "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9"
एबीएनएफ श्रेणियों का भी समर्थन करता है, उदा. DIGIT = %x30-39
, किंतु इसका उपयोग यहां अन्य उदाहरणों के साथ संगति के लिए नहीं किया गया है।
लाल (प्रोग्रामिंग भाषा) पार्स बोली:
Red [Title: "Parse Dialect"]
expression: [term opt ["+" expression]]
term: [factor opt ["*" term]]
factor: [constant | variable | "(" expression ")"]
variable: ["x" | "y" | "z"]
constant: [some digit]
digit: ["0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"]
यह प्रारूप श्रेणियों का भी समर्थन करता है, उदा. digit: charset [#"0" - #"9"]
, किंतु इसका उपयोग यहां अन्य उदाहरणों के साथ संगति के लिए नहीं किया गया है।
उदाहरण व्याकरण के लिए एक संभावित सिंटैक्स आरेख नीचे है। जबकि टेक्स्ट -आधारित व्याकरणों के लिए सिंटैक्स भिन्न होता है, उन सभी के लिए सिंटैक्स आरेख समान हो सकता है क्योंकि यह एक धातुभाषा है।
यह भी देखें
- पुनरावर्ती संक्रमण नेटवर्क
- विस्तारित बैकस-नौर फॉर्म (ईबीएनएफ)
संदर्भ
Note: the first link is sometimes blocked by the server outside of its domain, but it is available on archive.org. The file was also mirrored at standardpascal.org.
बाहरी संबंध
- JSON website including syntax diagrams
- Generator from EBNF
- From EBNF to a postscript file with the diagrams
- EBNF Parser & Renderer
- SQLite syntax diagram generator for SQL
- Online Railroad Diagram Generator
- Augmented Syntax Diagram (ASD) grammars
- (ASD) Augmented Syntax Diagram Application Demo Site
- SRFB Syntax Diagram representation by Function Basis + svg generation