see formal-language for parsers
Backus–Naur Form (BNF) is a notation that formally defines a context free grammar.
Extended Backus–Naur Form (EBNF) was adopted as ISO 14977.
1. Introduction — Python documentation
IETF defines Augmented BNF (ABNF) to be used in RFC documents.
BNF and EBNF: What are they and how do they work?
Grammar: The language of languages (BNF, EBNF, ABNF and more)
http://www.cs.cmu.edu/~pattis/misc/ebnf.pdf
BNF/EBNF variants compares the syntax of different dialects
Parser
Visualizer
Railroad Diagram Generator
EBNF Parser & Syntax Diagram Renderer [karmin.ch]