Matrix calculusExternal link, GENOExternal link, and LinAExternal link require formally specified linear algebra expressions as input. The correct form of expressions is defined by a grammar. To check if a given input conforms to the grammar, we use a parser. Whenever we change the grammar, for instance by adding new function symbols, we also have to change the parser. Changing the parser manually can be a tedious and error-prone process. Therefore, it is convenient to have a tool that generates a parser from the grammar.
We have developed ParsGenExternal link, which translates an arbitrary LL(1) grammar into a respective parser. The parser can then be used to check whether a given input string matches the grammar. Furthermore, ParsGen can also generate examples that conform to the grammar and display the grammar as a railroad diagram, allowing a better understanding of the grammar itself.
ParsGen is a result of the BSc thesis of Oliver Berteit.