सिंटेक्स आरेख: Difference between revisions
No edit summary |
No edit summary |
||
(4 intermediate revisions by 3 users not shown) | |||
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|जेएसओएन]] डेटा विनिमय प्रारूप को परिभाषित करने वाला विहित स्रोत इन आरेखों के लोकप्रिय आधुनिक उपयोग का एक और उदाहरण प्रदान करता है। | '''सिंटैक्स आरेख''' (या रेलरोड आरेख) [[संदर्भ-मुक्त व्याकरण]] का प्रतिनिधित्व करने का एक विधि है। वे बैकस-नौर फॉर्म, [[ईबीएनएफ]], संवर्धित बैकस-नौर फॉर्म और धातुभाषाओं के रूप में अन्य टेक्स्ट -आधारित व्याकरणों के लिए एक ग्राफिकल विकल्प का प्रतिनिधित्व करते हैं। सिंटैक्स आरेखों का उपयोग करने वाली प्रारंभिक पुस्तकों में [[ निकोलस विर्थ |निकोलस विर्थ]] द्वारा लिखित पास्कल उपयोगकर्ता मैनुअल सम्मिलित है<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 6: | Line 6: | ||
व्याकरण का प्रतिनिधित्व सिंटैक्स आरेखों का एक सेट है। प्रत्येक आरेख एक प्रक्रिया में एक गैर-टर्मिनल चरण को परिभाषित करता है। एक मुख्य आरेख है जो लैंग्वेज को निम्नलिखित विधि से परिभाषित करता है: लैंग्वेज से संबंधित होने के लिए, एक शब्द को मुख्य आरेख में एक पथ का वर्णन करना होगा। | व्याकरण का प्रतिनिधित्व सिंटैक्स आरेखों का एक सेट है। प्रत्येक आरेख एक प्रक्रिया में एक गैर-टर्मिनल चरण को परिभाषित करता है। एक मुख्य आरेख है जो लैंग्वेज को निम्नलिखित विधि से परिभाषित करता है: लैंग्वेज से संबंधित होने के लिए, एक शब्द को मुख्य आरेख में एक पथ का वर्णन करना होगा। | ||
प्रत्येक आरेख में एक प्रवेश बिंदु और एक अंत बिंदु होता है। आरेख अन्य गैर-टर्मिनलों और टर्मिनलों से होकर इन दो बिंदुओं के बीच संभावित पथों का वर्णन करता है। ऐतिहासिक रूप से, टर्मिनलों को गोल बक्सों द्वारा और गैर-टर्मिनलों को आयताकार बक्सों द्वारा दर्शाया गया है, किंतु | प्रत्येक आरेख में एक प्रवेश बिंदु और एक अंत बिंदु होता है। आरेख अन्य गैर-टर्मिनलों और टर्मिनलों से होकर इन दो बिंदुओं के बीच संभावित पथों का वर्णन करता है। ऐतिहासिक रूप से, टर्मिनलों को गोल बक्सों द्वारा और गैर-टर्मिनलों को आयताकार बक्सों द्वारा दर्शाया गया है, किंतु कोई आधिकारिक मानक नहीं है। | ||
== उदाहरण == | == उदाहरण == | ||
Line 39: | Line 39: | ||
constant = 1*digit | constant = 1*digit | ||
DIGIT = "0" / "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9" | DIGIT = "0" / "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9" | ||
</syntaxhighlight> | </syntaxhighlight> | ||
एबीएनएफ श्रेणियों का भी समर्थन करता है, उदा. {{code|2=abnf|1=DIGIT = %x30-39}}, किंतु | एबीएनएफ श्रेणियों का भी समर्थन करता है, उदा. {{code|2=abnf|1=DIGIT = %x30-39}}, किंतु इसका उपयोग यहां अन्य उदाहरणों के साथ संगति के लिए नहीं किया गया है। | ||
[[लाल (प्रोग्रामिंग भाषा)]] पार्स बोली:<syntaxhighlight> | [[लाल (प्रोग्रामिंग भाषा)]] पार्स बोली:<syntaxhighlight> | ||
Line 60: | Line 53: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
यह प्रारूप श्रेणियों का भी समर्थन करता है, उदा. {{code|2=red|digit: charset [#"0" - #"9"]}}, किंतु इसका उपयोग यहां अन्य उदाहरणों के साथ संगति के लिए नहीं किया गया है। | |||
यह प्रारूप श्रेणियों का भी समर्थन करता है, उदा. {{code|2=red|digit: charset [#"0" - #"9"]}}, किंतु | |||
उदाहरण व्याकरण के लिए एक संभावित सिंटैक्स आरेख नीचे है। जबकि टेक्स्ट -आधारित व्याकरणों के लिए सिंटैक्स भिन्न होता है, उन सभी के लिए सिंटैक्स आरेख समान हो सकता है क्योंकि यह एक [[धातुभाषा]] है। | उदाहरण व्याकरण के लिए एक संभावित सिंटैक्स आरेख नीचे है। जबकि टेक्स्ट -आधारित व्याकरणों के लिए सिंटैक्स भिन्न होता है, उन सभी के लिए सिंटैक्स आरेख समान हो सकता है क्योंकि यह एक [[धातुभाषा]] है। | ||
Line 96: | Line 78: | ||
* [http://www.asd-networks.com (ASD) '''Augmented''' Syntax Diagram Application Demo Site ] | * [http://www.asd-networks.com (ASD) '''Augmented''' Syntax Diagram Application Demo Site ] | ||
* [https://github.com/gbrault/railroad-diagrams/blob/gh-pages/live/doc/readme.md/ SRFB Syntax Diagram representation by Function Basis + svg generation] | * [https://github.com/gbrault/railroad-diagrams/blob/gh-pages/live/doc/readme.md/ SRFB Syntax Diagram representation by Function Basis + svg generation] | ||
[[Category:Created On 24/07/2023]] | [[Category:Created On 24/07/2023]] | ||
[[Category:Lua-based templates]] | |||
[[Category:Machine Translated Page]] | |||
[[Category:Pages with script errors]] | |||
[[Category:Pages with syntax highlighting errors]] | |||
[[Category:Short description with empty Wikidata description]] | |||
[[Category:Templates Vigyan Ready]] | |||
[[Category:Templates that add a tracking category]] | |||
[[Category:Templates that generate short descriptions]] | |||
[[Category:Templates using TemplateData]] | |||
[[Category:औपचारिक भाषाएँ]] | |||
[[Category:चित्र]] |
Latest revision as of 19:17, 22 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"
एबीएनएफ श्रेणियों का भी समर्थन करता है, उदा. 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