我正在使用AntlrWords 2.1为antlr v4创建语法。无论出于何种原因,都无法识别rParanthesis。我搜索了很多,但找不到原因。你能找到任何错误吗?
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>)
正如您所看到的,[和]都是输出的一部分,但我的rParanthesis无法识别。
感谢您的帮助 曼努埃尔
答案 0 :(得分:0)
词法分析器中有skip
个空格,但在解析器规则中使用WS
标记:删除它们。
不应该是:
parenthesizedWord : lParanthesis WS+ WORD WS+ rParanthesis ;
但:
parenthesizedWord : lParanthesis WORD rParanthesis ;
代替。
然后将创建以下解析树: