EBNF

The extended Backus–Naur form (EBNF) is a family of meta-syntax notations can be used to express a context-free grammar. EBNF is used to make a formal description of a formal language such as a computer programming language. 
```
|   alternation
()  grouping
[]  option (0 or 1 times)
{}  repetition (0 to n times)
```