Return to Contents


While this package can be used to construct recognisers easily, this would likely not be very efficient compared to a library more specialised for that purpose.

Cyclic Grammars

Grammars that have cycles in them will be treated as any other form of left recursion and eventually be curtailed. This means that the resulting parse graph will not have any cycles. If you want a cyclic grammar to result in a cyclic result, then this library is not what you are after.


This library makes very heavy use of generics. If your Ada compiler has any issues handling generics then you may experience suboptimal performance.

Parse Graph Data Structure

In order to keep the parse graph to polynomial space complexity, it is a specialised data structure and is not the same thing as a more standard directed graph.

Piecewise Parsing

Due to the possibility of incomplete parses, in the worst case using piecewise parsing can result in the lexer or parser holding the entire input in memory before returning a result.

Error Recovery

While error messages can be informative, there is currently no consideration given to being able to recover from an error and continue parsing.