带括号和空格的Antlr语法

时间:2014-01-23 12:56:16

标签: antlr antlr4

我正在使用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无法识别。

感谢您的帮助 曼努埃尔

1 个答案:

答案 0 :(得分:0)

词法分析器中有skip个空格,但在解析器规则中使用WS标记:删除它们。

不应该是:

parenthesizedWord : lParanthesis WS+ WORD WS+ rParanthesis ;

但:

parenthesizedWord : lParanthesis WORD rParanthesis ;

代替。

然后将创建以下解析树:


enter image description here