> First, a trivially evil left-recursive grammar:
> S <- S > For example, does your parser detect and reject this somehow, or does it > behave the same as 'S <- f'? (I hope it doesn't result in an infinite loop > at runtime anyway. :) ) The same as 'S <- f'. > Now a grammar that's weird, not necessarily evil, in a slightly more subtle > way: > S <- S / a > Does this behave the same as 'S <- a', or do something else? How should it > behave? The same as 'S <- a'. > Cranking up the evilness factor one notch with a mutually left-recursive > grammar… > S <- T / a > T <- S / &a > Given the input string "a", does this behave the same as 'S <- a' (succeeding > and consuming) or the same as 'S <- &a' (succeeding but consuming no input)? > Do S and T > behave the same way or differently? Should they? The same as 'S <- &a'. > Now, another grammar that's not necessarily evil but strange in a slightly > different way: > S <- Saa / a / > Given the input string 'aaaa', for example, does/should this grammar consume > just 3 or all 4 a's, or does it do something else? What should it do? It consumes just 3 a's. The general behavior is like this: * If the input has 2n a's, then 2n-1 a's are matched. * If the input has 2n+1 a's, then 2n+1 a's are matched. Sérgio _______________________________________________ PEG mailing list PEG@lists.csail.mit.edu https://lists.csail.mit.edu/mailman/listinfo/peg