-
Notifications
You must be signed in to change notification settings - Fork 22
Open
Description
Hi Michael,
Any idea how to do list flattening in a straightforward way with nested rules? If I use the construct below with the input "foo1 foo2 foo3" and then call the value method on my tree, I get "Stack level too deep". Seems that Things will call the morethings method on itself instead of on the matched substring. This appears to be a bug, but maybe I've missed something here...
I can make it work if I add a second rule so that the two rules alternate, but it sure does make the grammar file ugly!
Many thanks,
Dan
grammar SampleGrammar
rule ROOT
(things:Things WS* EOF)
{
def value
list = []
list += things.value
return list
end
}
end
rule Things
(thing:THING WS* (morethings:Things)?)
{
def value
list = []
list << thing.value
list += morethings.value unless morethings.nil?
return list
end
}
end
rule THING
[a-zA-Z0-9]+
end
rule EOF
!.
end
rule WS
[\s\t\r\n\f]
end
end
Metadata
Metadata
Assignees
Labels
No labels