Michael Wayne Goodman
Michael Wayne Goodman
A parser is used to read pe grammars, so invalid grammars will raise a `ParseError` just as a valid grammar with bad input: ```pycon >>> pe.match('"a"+', 'b', flags=pe.STRICT|pe.MEMOIZE) # valid...
The machine parser, in pure python mode, is currently about 10% slower than the packrat parser on the JSON benchmark. In PyPy, however, the machine parser is roughly twice as...
The machine parser is currently working well, except that it doesn't do memoization so it is susceptible to bad performance on some kinds of grammars. Memoization needs to be added.
Values are now computed as soon as an expression succeeds, even if that value will later be discarded. Since a parse is inherently a tree, a stack should be able...
So far I have not seen a need for left recursion, particularly because **pe** emits values in a flat list. But some people seem to really care about it, so...
This sounds like it might be a bad idea, but it could be very useful for an expression or an action to have direct access to the memo for storing...
Rules in **pe** are just expressions with actions and they can be embedded in other expressions, but often they are only named expressions in a grammar. The specification, however, anticipates...
For a serious user of **pe** in some other package, the startup time to parse and optimize a grammar can become significant, particularly for larger grammars. It would therefore be...
Being able to ignore whitespace when parsing without explicitly putting it in the grammar can make the grammars much shorter and easier to write and comprehend (assuming one understands the...
Add an operator that computes the first character of each alternative of a Choice and then does an immediate jump when one is unambiguous. E.g., ``` A "abc" 'x' >>...