HOME

TheInfoList



OR:

Syntax diagrams (or railroad diagrams) are a way to represent a
context-free grammar In formal language theory, a context-free grammar (CFG) is a formal grammar whose production rules are of the form :A\ \to\ \alpha with A a ''single'' nonterminal symbol, and \alpha a string of terminals and/or nonterminals (\alpha can be ...
. They represent a graphical alternative to
Backus–Naur form In computer science, Backus–Naur form () or Backus normal form (BNF) is a metasyntax notation for context-free grammars, often used to describe the syntax of languages used in computing, such as computer programming languages, document format ...
, EBNF, Augmented Backus–Naur form, and other text-based grammars as
metalanguages In logic and linguistics, a metalanguage is a language used to describe another language, often called the ''object language''. Expressions in a metalanguage are often distinguished from those in the object language by the use of italics, quo ...
. Early books using syntax diagrams include the "Pascal User Manual" written by Niklaus WirthNiklaus Wirth: ''The Programming Language Pascal.'' (July 1973)
/ref> (diagrams start at page 47) and the Burroughs CANDE Manual.Burroughs B6700/B7700 ''Command AND Edit (CANDE) Language: Information Manual''
/ref> In the compilation field, textual representations like BNF or its variants are usually preferred. BNF is text-based, and used by compiler writers and parser generators. Railroad diagrams are visual, and may be more readily understood by laypeople, sometimes incorporated into graphic design. The canonical source defining the
JSON JSON (JavaScript Object Notation, pronounced ; also ) is an open standard file format and data interchange format that uses human-readable text to store and transmit data objects consisting of attribute–value pairs and arrays (or other s ...
data interchange format provides yet another example of a popular modern usage of these diagrams.


Principle of syntax diagrams

The representation of a grammar is a set of syntax diagrams. Each diagram defines a "nonterminal" stage in a process. There is a main diagram which defines the language in the following way: to belong to the language, a word must describe a path in the main diagram. 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. Historically, terminals have been represented by round boxes and nonterminals by rectangular boxes but there is no official standard.


Example

We use arithmetic expressions as an example, in various grammar formats. BNF: ::= , "+" ::= , "*" ::= , , "(" ")" ::= "x" , "y" , "z" ::= , ::= "0" , "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" EBNF: expression = term , "+" , expression term = factor , "*" , term factor = constant , variable , "(" , expression , ")"; variable = "x" , "y" , "z"; constant = digit , ; digit = "0" , "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9"; ABNF: expression = term +" expressionterm = factor *" termfactor = constant / variable / "(" expression ")" variable = "x" / "y" / "z" constant = 1*digit DIGIT = "0" / "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9" Note that ABNF also supports ranges, e.g. , but it is not used here for consistency with the other examples. Red (programming language) Parse Dialect: Red itle: "Parse Dialect"expression: erm opt ["+" expression term: [factor opt ["*" term">quot;+"_expression.html" ;"title="erm opt erm opt term: factor: [constant "> variable "> "(" expression ")"variable: ["x" "> "y" "> "z"constant: [some digitdigit: ["0" , "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" Note that this format also supports ranges, e.g. , but it is not used here for consistency with the other examples. One possible syntax diagram for the example grammars is below. Note that 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.


See also

* Recursive transition network * Extended Backus–Naur form (EBNF)


References

{{reflist Note: the first link is sometimes blocked by the server outside of its domain, but it is available o
archive.org
The file was also mirrored a
standardpascal.org


External links


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



(ASD) Augmented Syntax Diagram Application Demo Site

SRFB Syntax Diagram representation by Function Basis + svg generation
Formal languages Diagrams