You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
The text was updated successfully, but these errors were encountered:
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
end
The text was updated successfully, but these errors were encountered: