I have to write a JavaCUP specification, and I’ve been given an EBNF grammar. However, I don’t know how to convert between the two. I’ve heard the basic ideas, but I don’t really understand what I need to change, what would be the “terminals”, etc.
Can anyone explain how to convert from one to another, or if there’s somewhere where I can read about it?
EBNF grammars are similar to normal BNF, but with some extra features (similar to regular expression operators) as syntax sugar. Since you did not show your grammar, I can only guess at what parts you need to desugar to convert to normal BNF, but here are the most common (for a LALR generator like JavaCUP):
The
epsilonidentifier here is however your parser generator denotes the empty string.