I am very new to the whole concept of context-free grammars to represent the syntax tree of formal languages (i.e., programming languages). It seems that the Backus–Naur form (BNF) is the oldest of all possible notations and the most prevalent one. Though it looks like to be an ancient piece of art. Now I'm wondering that if you want to invent a new programing language what modern alternative you should use and why?
These are what I have found so far:
- ISO extended Backus–Naur form (EBNF)
- augmented Backus–Naur form (ABNF)
- Extreme BNF (XBNF)
- Translational Backus–Naur form
- ANother Tool for Language Recognition (ANTLR)
- Wirth syntax notation (WSN)
- Van Wijngaarden grammar
- Microsoft “M” modeling language
- Compiler Description Language (CDL)
- Xtext grammar language
- definite clause grammar (DCG)
- META II
I would like to know what are the advantages and disadvantages of these options?