Difference between revisions of "Backus-Naur form"
Jump to navigation
Jump to search
Line 5: | Line 5: | ||
<symbol> ::= __expression__ | <symbol> ::= __expression__ | ||
</syntaxhighlight> | </syntaxhighlight> | ||
In the example shown above, <code><symbol></code> denotes a key, and the <code>__expression__</code> denotes a value. | |||
* <[[symbol]]>is a ''[[nonterminal]]'' (variable) and the [[expression (mathematics)|__expression__]] consists of one or more sequences of either terminal or nonterminal symbols; | * <[[symbol]]>is a ''[[nonterminal]]'' (variable) and the [[expression (mathematics)|__expression__]] consists of one or more sequences of either terminal or nonterminal symbols; | ||
Line 12: | Line 13: | ||
Symbols that never appear on a left side are ''[[Terminal symbol|terminal]]s''. On the other hand, symbols that appear on a left side are ''[[nonterminal symbol|non-terminal]]s'' and are always enclosed between the pair <>. | Symbols that never appear on a left side are ''[[Terminal symbol|terminal]]s''. On the other hand, symbols that appear on a left side are ''[[nonterminal symbol|non-terminal]]s'' and are always enclosed between the pair <>. | ||
<noinclude> | <noinclude> | ||
Line 20: | Line 19: | ||
<references/> | <references/> | ||
==Related Pages== | ==Related Pages== | ||
[[Category:Meta Language]] [[Category:Universal Data Abstraction]] [[Category:Key-value pair]] | [[Category:Meta Language]] | ||
[[Category:Universal Data Abstraction]] | |||
[[Category:Key-value pair]] | |||
</noinclude> | </noinclude> |
Revision as of 11:55, 13 May 2022
Backus-Naur Form(Q211577), often abbreviated as BNF, is one of the two main notation techniques for context-free grammars in computer science.
BNF is a formal language that can be denoted in a collection of key-value pairs. For instance:
<symbol> ::= __expression__
In the example shown above, <symbol>
denotes a key, and the __expression__
denotes a value.
- <symbol>is a nonterminal (variable) and the __expression__ consists of one or more sequences of either terminal or nonterminal symbols;
=::=
means that the symbol on the left must be replaced with the expression on the right.- more sequences [of symbols] are separated by the vertical bar "|", indicating a choice, the whole being a possible substitution for the symbol on the left.
Symbols that never appear on a left side are terminals. On the other hand, symbols that appear on a left side are non-terminals and are always enclosed between the pair <>.