我想解析以下输入:antlr4 - 如何实现递归
<name 1> WITH <name 2> WITH <name 3> WITH <name 4> ...
我尝试以下语法:
WITH : 'WITH'
;
NAME : ('a'..'z' | 'A'..'Z' | '0'..'9' | '-' | '_')+
;
query : NAME (WITH query)?
;
但这似乎并没有工作。我怎样才能实现递归?
为您的信息
我的最终目标是解析树状结构是这样的:
<name 1> WITH (<name 2> WITH <name 3> WITH <name 4>) WITH <name 5>
这将产生以下树:
<name 1>
<name 2>
<name 3>
<name 4>
<name 5>
但是我们首先从第一个表达式开始。
我的代码:
new TParser(new CommonTokenStream(new TLexer(new ANTLRInputStream("hello WITH world")))).query()
导致在消息中:
line 1:16 no viable alternative at input '<EOF>'
@BartKiers:我添加它作为你的答案评论。再次感谢。 – 2015-02-05 20:28:05
很酷,谢谢,在原始文章中复制粘贴确切的错误信息总是一个好主意(你可以在提交后编辑你的问题)。 – 2015-02-05 20:36:11
我会在未来做到这一点。我是新来的,谢谢指出。也感谢您将它添加到我的消息中。 – 2015-02-05 20:48:10