Content deleted Content added
Gregg-Irwin (talk | contribs) Update syntax diagram to match all example grammars. |
Undid revision 1293116503 by Jmason37 (talk) spam; we do not need two links to the same site |
||
(22 intermediate revisions by 13 users not shown) | |||
Line 1:
{{Short description|Visual description of context-free grammar}}
'''Syntax diagrams''' (or '''railroad diagrams''') are a way to represent a [[context-free grammar]]. They represent a graphical alternative to [[Backus–Naur form]]
== Principle
The representation of a grammar is
Each diagram has an entry point and an end point. The diagram describes possible paths between these two points by going through other nonterminals and terminals.
== Example ==
We use arithmetic expressions as an example, in various grammar formats.
BNF:
Line 34 ⟶ 35:
ABNF:
<syntaxhighlight lang="abnf" highlight="6">
expression = term ["+" expression]
term = factor ["*" term]
Line 42 ⟶ 43:
DIGIT = "0" / "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9"
</syntaxhighlight>
[[Red
<syntaxhighlight lang="Red" highlight="7">
Red [Title: "Parse Dialect"]
expression: [term opt ["+" expression]]
term: [factor opt ["*" term]]
Line 53 ⟶ 55:
digit: ["0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"]
</syntaxhighlight>
One possible syntax diagram for the example grammars is below. While the syntax for the text-based grammars differs, the syntax diagram for all of them can be the same because it is a [[metalanguage]].
▲[[File:Syntax-diagram-example.png|thumb|"Railroad" syntax diagram]]
==See also==
Line 74 ⟶ 75:
* [https://karmin.ch/ebnf/index EBNF Parser & Renderer]
* [https://www.sqlite.org/docsrc/finfo?name=art/syntax/bubble-generator.tcl SQLite syntax diagram generator for SQL]
* [https://www.bottlecaps.de/rr Online Railroad Diagram Generator]
* [https://www.yorku.ca/jmason/asdgram.htm Augmented Syntax Diagram (ASD) grammars]
* [http://www.asd-networks.com (ASD) '''Augmented''' Syntax Diagram Application Demo Site ]
|