Backus Naur Form (BNF)
aka Context Free Grammar
Notation:
- Grammar: Collection of Rules
- Rule/Production: LHS -> RHS
- LHS: Non-terminal
- RHS: Terminals + Non-terminals
- Non-terminal: <Abstraction>
- Terminal: Lexeme
- Rule Alternatives: |
- List Description: Recursion
Example:
<declaration> -> <data-type> <variable-list> ;
<data-type> -> int | float | char
<variable-list> -> <one-variable>
| <one-variable> , <variable-list>
<one-variable> -> <variable>
| <variable> = <value>
<variable> -> count | index | num | sum | var
<value> -> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Deriving Sentence from Grammar:
- <Start> Non-terminal -> Sentential forms -> Sentence
Example: <declaration> ->
int count, index = 1, num;
- Order