Antlr 带括号和空格的Antl语法

Antlr 带括号和空格的Antl语法,antlr,antlr4,Antlr,Antlr4,我正在使用AntlWords 2.1为AntlrV4创建语法。无论出于何种原因,都不承认这种现象。我找了很多,但找不到原因。你能找到错误吗 grammar bracketsGrammar; OPENINGBRACKET : '['; CLOSINGBRACKET : ']'; lParanthesis : OPENINGBRACKET ; rParanthesis : CLOSINGBRACKET ; WS : ' ' ->skip; WORD : ~[ "]+ ; parenth

我正在使用AntlWords 2.1为AntlrV4创建语法。无论出于何种原因,都不承认这种现象。我找了很多,但找不到原因。你能找到错误吗

grammar bracketsGrammar;

OPENINGBRACKET : '[';
CLOSINGBRACKET : ']';

lParanthesis : OPENINGBRACKET ;
rParanthesis : CLOSINGBRACKET ;

WS : ' ' ->skip;
WORD : ~[ "]+ ;

parenthesizedWord : lParanthesis WS+ WORD WS+ rParanthesis ;

fullfile: parenthesizedWord EOF ;
我的意见是

[ Manuel ]
输出是

(fullfile (parenthesizedWord (lParanthesis [) Manuel ]) <EOF>)
(完整文件(括号中的单词(lpranthesis[)Manuel]))
正如您所看到的,[和]都是输出的一部分,但我的rParanthesis未被识别

谢谢你的帮助
Manuel

跳过lexer中的空格,但正在解析器规则中使用
WS
标记:删除它们

它不应该是:

parenthesizedWord : lParanthesis WS+ WORD WS+ rParanthesis ;
但是:

相反

然后将创建以下解析树:



您考虑过和吗?我在这里没有看到任何关于“输出”的内容。您到底是如何生成输出的?输出是使用AntlWorks 2.1创建的,在那里您可以选择Run->Run in TestRig。。。这将为您提供生成的令牌列表和生成的treeThank,就是这样。虽然我仍然需要考虑这些空白,但是如果跳过这些语句,将它们从解析器规则中排除,这是有意义的。
parenthesizedWord : lParanthesis WORD rParanthesis ;