Hi, > It flattens until you have a list where each element either: > 1. Is an atom. > or 2. Is a list whose first element is in the list of keywords. > > So the car of the argument will change if it's a list that doesn't > start with the right keyword. E.g.: > (keyword-flatten '(a) '((c (a b)) (a b) (b a))) -> > (c (a b) (a b) b a)
I see. > That's odd. Could you paste in the lambda expression it generates? Wait, actually, I realized it was my own error. My test function was using nonterminals, but I had only done (define grammar-string ....), not (define-grammar grammar-string). I think the generated code tried to call the nonterminals that should have been there, and threw an error when it didn't find them. The peg matcher is really awesome. I am glad to be able to use it soon. Noah