सिंटेक्स आरेख: Difference between revisions
(Created page with "{{Short description|Visual description of context-free grammar}} सिंटैक्स आरेख (या रेलरोड आरेख) संदर्भ-मुक...") |
No edit summary |
||
Line 1: | Line 1: | ||
{{Short description|Visual description of context-free grammar}} | {{Short description|Visual description of context-free grammar}} | ||
सिंटैक्स आरेख (या रेलरोड आरेख) [[संदर्भ-मुक्त व्याकरण]] का प्रतिनिधित्व करने का एक | '''सिंटैक्स आरेख''' (या रेलरोड आरेख) [[संदर्भ-मुक्त व्याकरण]] का प्रतिनिधित्व करने का एक विधि है। वे बैकस-नौर फॉर्म, [[ईबीएनएफ]], संवर्धित बैकस-नौर फॉर्म और धातुभाषाओं के रूप में अन्य टेक्स्ट -आधारित व्याकरणों के लिए एक ग्राफिकल विकल्प का प्रतिनिधित्व करते हैं। सिंटैक्स आरेखों का उपयोग करने वाली प्रारंभिक पुस्तकों में [[ निकोलस विर्थ ]] द्वारा लिखित पास्कल उपयोगकर्ता मैनुअल सम्मिलित है<ref name="Wirth1974">[http://e-collection.library.ethz.ch/eserv/eth:3059/eth-3059-01.pdf Niklaus Wirth: ''The Programming Language Pascal.'' (July 1973)]</ref> (आरेख पृष्ठ 47 से प्रारंभ होते हैं) और बरोज़ [[कैंडे]] मैनुअल<ref name="burroughs71">[http://bitsavers.org/pdf/burroughs/B6500_6700/5000318_B6700_CANDE_Oct72.pdf Burroughs B6700/B7700 ''Command AND Edit (CANDE) Language: Information Manual'']</ref> संकलन क्षेत्र में, बीएनएफ या इसके वेरिएंट जैसे टेक्सटुअल प्रतिनिधित्व को समान्यत: प्राथमिकता दी जाती है। बीएनएफ टेक्स्ट-आधारित है, और कंपाइलर लेखकों और पार्सर जेनरेटर द्वारा उपयोग किया जाता है। रेलरोड आरेख दृश्य हैं, और समान्य लोगों द्वारा अधिक सरलता से समझे जा सकते हैं, जिन्हें कभी-कभी ग्राफिक डिज़ाइन में सम्मिलित किया जाता है। [[JSON|जेएसओएन]] डेटा विनिमय प्रारूप को परिभाषित करने वाला विहित स्रोत इन आरेखों के लोकप्रिय आधुनिक उपयोग का एक और उदाहरण प्रदान करता है। | ||
== | == सिंटैक्स आरेख का सिद्धांत == | ||
व्याकरण का प्रतिनिधित्व | व्याकरण का प्रतिनिधित्व सिंटैक्स आरेखों का एक सेट है। प्रत्येक आरेख एक प्रक्रिया में एक गैर-टर्मिनल चरण को परिभाषित करता है। एक मुख्य आरेख है जो लैंग्वेज को निम्नलिखित विधि से परिभाषित करता है: लैंग्वेज से संबंधित होने के लिए, एक शब्द को मुख्य आरेख में एक पथ का वर्णन करना होगा। | ||
प्रत्येक आरेख में एक प्रवेश बिंदु और एक अंत बिंदु होता है। आरेख अन्य गैर-टर्मिनलों और टर्मिनलों से होकर इन दो बिंदुओं के बीच संभावित पथों का वर्णन करता है। ऐतिहासिक रूप से, टर्मिनलों को गोल बक्सों द्वारा और गैर-टर्मिनलों को आयताकार बक्सों द्वारा दर्शाया गया है, | प्रत्येक आरेख में एक प्रवेश बिंदु और एक अंत बिंदु होता है। आरेख अन्य गैर-टर्मिनलों और टर्मिनलों से होकर इन दो बिंदुओं के बीच संभावित पथों का वर्णन करता है। ऐतिहासिक रूप से, टर्मिनलों को गोल बक्सों द्वारा और गैर-टर्मिनलों को आयताकार बक्सों द्वारा दर्शाया गया है, किंतु कोई आधिकारिक मानक नहीं है। | ||
== उदाहरण == | == उदाहरण == | ||
Line 32: | Line 32: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
एबीएनएफ: | एबीएनएफ:<syntaxhighlight> | ||
<सिंटैक्सहाइलाइट लैंग= एबीएनएफ हाइलाइट= 6 > | 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" | |||
</syntaxhighlight>'''<सिंटैक्सहाइलाइट लैंग= एबीएनएफ हाइलाइट= 6 > | |||
अभिव्यक्ति = पद [+ अभिव्यक्ति] | अभिव्यक्ति = पद [+ अभिव्यक्ति] | ||
पद = कारक [* पद] | पद = कारक [* पद] | ||
Line 40: | Line 46: | ||
स्थिरांक = 1*अंक | स्थिरांक = 1*अंक | ||
अंक = 0/1/2/3/4/5/6/7/8/9 | अंक = 0/1/2/3/4/5/6/7/8/9 | ||
</सिंटैक्सहाइलाइट> | </सिंटैक्सहाइलाइट>''' | ||
[[लाल (प्रोग्रामिंग भाषा)]] पार्स बोली: | एबीएनएफ श्रेणियों का भी समर्थन करता है, उदा. {{code|2=abnf|1=DIGIT = %x30-39}}, किंतु इसका उपयोग यहां अन्य उदाहरणों के साथ संगति के लिए नहीं किया गया है। | ||
<सिंटैक्सहाइलाइट लैंग= लाल हाइलाइट= 7 > | |||
[[लाल (प्रोग्रामिंग भाषा)]] पार्स बोली:<syntaxhighlight> | |||
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"] | |||
</syntaxhighlight> | |||
'''<सिंटैक्सहाइलाइट लैंग= लाल हाइलाइट= 7 > | |||
लाल [शीर्षक: पार्स बोली] | लाल [शीर्षक: पार्स बोली] | ||
अभिव्यक्ति: [शब्द ऑप्ट [+ अभिव्यक्ति | अभिव्यक्ति: [शब्द ऑप्ट [+ अभिव्यक्ति | ||
Line 52: | Line 69: | ||
स्थिरांक: [कुछ अंक] | स्थिरांक: [कुछ अंक] | ||
अंक: [ 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ] | अंक: [ 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ] | ||
</सिंटैक्सहाइलाइट> | </सिंटैक्सहाइलाइट>''' | ||
यह प्रारूप श्रेणियों का भी समर्थन करता है, उदा. {{code|2=red|digit: charset [#"0" - #"9"]}}, | |||
यह प्रारूप श्रेणियों का भी समर्थन करता है, उदा. {{code|2=red|digit: charset [#"0" - #"9"]}}, किंतु इसका उपयोग यहां अन्य उदाहरणों के साथ संगति के लिए नहीं किया गया है। | |||
उदाहरण व्याकरण के लिए एक संभावित | उदाहरण व्याकरण के लिए एक संभावित सिंटैक्स आरेख नीचे है। जबकि टेक्स्ट -आधारित व्याकरणों के लिए सिंटैक्स भिन्न होता है, उन सभी के लिए सिंटैक्स आरेख समान हो सकता है क्योंकि यह एक [[धातुभाषा]] है। | ||
[[Image:Syntax-diagram-example.png|रेलमार्ग सिंटैक्स आरेख]] | [[Image:Syntax-diagram-example.png|रेलमार्ग सिंटैक्स आरेख]] |
Revision as of 09:37, 8 August 2023
सिंटैक्स आरेख (या रेलरोड आरेख) संदर्भ-मुक्त व्याकरण का प्रतिनिधित्व करने का एक विधि है। वे बैकस-नौर फॉर्म, ईबीएनएफ, संवर्धित बैकस-नौर फॉर्म और धातुभाषाओं के रूप में अन्य टेक्स्ट -आधारित व्याकरणों के लिए एक ग्राफिकल विकल्प का प्रतिनिधित्व करते हैं। सिंटैक्स आरेखों का उपयोग करने वाली प्रारंभिक पुस्तकों में निकोलस विर्थ द्वारा लिखित पास्कल उपयोगकर्ता मैनुअल सम्मिलित है[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"
<सिंटैक्सहाइलाइट लैंग= एबीएनएफ हाइलाइट= 6 >
अभिव्यक्ति = पद [+ अभिव्यक्ति] पद = कारक [* पद] कारक = स्थिर / परिवर्तनशील / (अभिव्यक्ति) चर = x / y / z स्थिरांक = 1*अंक अंक = 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"]
<सिंटैक्सहाइलाइट लैंग= लाल हाइलाइट= 7 >
लाल [शीर्षक: पार्स बोली]
अभिव्यक्ति: [शब्द ऑप्ट [+ अभिव्यक्ति
अवधि: [कारक विकल्प [* अवधि
कारक: [स्थिर | परिवर्तनशील | ( अभिव्यक्ति ) ]
चर: [x | य | z ]
स्थिरांक: [कुछ अंक]
अंक: [ 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