A syntax highlighter for a simple grammar format inspired by Flex and Bison. Format is modelled after Flex and Bison, but EBNF conveniences are also allowed.
Recognition works on finding 2 types of productions, terminal and nonterminals. Terminals are recognized as an all capital string followed by
::=. Immediately afterwards until an empty line, an enumerated-like structure will be recognized. The line can start with an optional
| and then any text afterwards is assumed to be a literal. These literals can be single quoted or not.
Nonterminals are recognized as a mix of upper and lower case characters followed by
::=. Immediately afterwards until an empty line, productions will be recognized. Each production can be started with a
|. The characters
} are recognized as grammar operators and are highlighted as such. Terminals and nonterminals will be recognized and highlighted according to their spelling. Literals are single quoted and any unquoted non-word characters are assumed to be literals.
Within terminals and nonterminals, grammar attributes can be included with
>> surrounding them. These rules have no syntax highlighting. Any integers are considered terminals if alone. They can be mixed with terminals and nonterminals, alongside underscores.
Good catch. Let us know what about this package looks wrong to you, and we'll investigate right away.