Hello I have idea similar to NFA idea about year ago on p...@lists.csail.mit.edu.
We can easily support left recursion and eliminate problems of type X | X Y and X* X In following way In grammar we restrict recursion to left and rigth recursion(which we can rewrite as iteration) and well nested recursion. Well nested recursion means that recursive rule application must occur only in area surrounded by keyword nested. This area will have deterministic result. As example we show arithmetic parser mul = number mul "*" mul | nested("(" add ")") add = add "+" mul Notice that if we treat nested(expression) as oracle and inline other rules we get regular language. We use NFA and relax ordered choice to match first choice which has continutation to accepted state and repetition to match most repetitions that we can still accept input. Another nice thing is that we get code completition and error detection almost for free. I am working to create program in ruby with syntax similar to ometa. -- stop bit received _______________________________________________ PEG mailing list PEG@lists.csail.mit.edu https://lists.csail.mit.edu/mailman/listinfo/peg