Include only local subsections into TOC. This prevent duplication of
TOC when build single page HTML document. Also this make unnecessary CSS hack
to hide document title as top level section.
.. -*- coding: utf-8; -*-
.. include:: HEADER.rst
=====
BNF
=====
What is BNF?
============
.. contents::
:local:
BNF is an acronym for "Backus Naur Form". John Backus and Peter Naur introduced
for the first time a formal notation to describe the syntax of a given language
(ALGOL 60 programming language).
See: :rfc:`2234`.
BNF syntax
==========
The meta-symbols of BNF are:
``::=``
Meaning "is defined as".
``|``
Meaning "or".
``<``, ``>``
Angle brackets used to surround category names (some times skipped).
``[``, ``]``
Optional items are enclosed in.
``{``, ``}``
Repetitive items (zero or more times) are enclosed in.
``"abc..."``
Terminals are enclosed in to distinguish them from meta-symbols.
BNF in BNF
==========
::
syntax ::= { rule }
rule ::= identifier "::=" expression
expression ::= term { "|" term }
term ::= factor { factor }
factor ::= identifier |
quoted_symbol |
"(" expression ")" |
"[" expression "]" |
"{" expression "}"
identifier ::= letter { letter | digit }
quoted_symbol ::= """ { any_character } """