Antlr lexer / parser异常理解

时间:2012-02-13 08:03:32

标签: antlr

我希望使用antlr 1.2.2解析以下语言。

TEST <name>
{
   <param_name> = <param value>;
}

而 &LT; ...&GT; - 表示用户值,不是语言关键字的一部分

例如

TEST myTest
{
   my_param = 1.0;
}

值可以是整数,实数或quated字符串 my_param = 1.0;my_param = 1;my_param = "myStringValue";都是有效的输入。

这是解析的语法。

parse_test  : TESTKEYWORD TEST_NAME '{' param_value_def '}';
param_value_def : ID EQUALS param_value ';';
param_value : REAL|INTEGER|QUOTED_STRING;


TESTKEYWORD : 'TEST';

QUOTED_STRING   :  '"' ~('"')* '"';

INTEGER     :  MINUS? DIGIT DIGIT*

REAL        :  INTEGER '.' DIGIT DIGIT*;

EQUALS      : '=';

fragment
MINUS       : '-';

fragment
DIGIT       : '0'..'9';

当我将示例输入提供给antlr解释器时,我得到一个与param_value规则相关的“MismatchedTokenException”。

你能帮我解密一下错误信息和我做错了吗?

感谢

1 个答案:

答案 0 :(得分:1)

虽然ANTLRWorks不是一个编写良好的工具,但您可以使用其调试器来查看输入中的哪个令牌导致此异常,然后您可以查看需要修改的规则(因为您没有发布完整的语法)

http://www.antlr.org/works/index.html