Syntax diagram: Difference between revisions

Content deleted Content added
Xnft (talk | contribs)
m Example: "because is a metalanguage" -> "because it is a metalanguage"
SdkbBot (talk | contribs)
m General fixes, removed erroneous space
Line 1:
'''Syntax diagrams''' (or '''railroad diagrams''') are a way to represent a [[context-free grammar]]. They represent a graphical alternative to [[Backus–Naur form]], [[EBNF]], [[Augmented Backus–Naur form]], and other text-based grammars as [[metalanguages]]. Early books using syntax diagrams include the "Pascal User Manual" written by [[Niklaus Wirth]] <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> (diagrams start at page 47) and the Burroughs [[CANDE]] Manual.<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> 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]] data interchange format provides yet another example of a popular modern usage of these diagrams.
 
== Principle of syntax diagrams ==
Line 9:
== Example ==
 
We use arithmetic expressions as an example, in various grammar formats.
 
BNF:
Line 44:
Note that ABNF also supports ranges, e.g. '''DIGIT = %x30-39''', but it is not used here for consistency with the other examples.
 
[[Red_Red (programming_languageprogramming language)]] Parse Dialect:
<syntaxhighlight lang="Red">
expression: [term opt ["+" expression]]
Line 54:
</syntaxhighlight>
Note that this format also supports ranges, e.g. '''digit: charset [#"0" - #"9"]''', 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]].