我希望使用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”。
你能帮我解密一下错误信息和我做错了吗?
感谢
答案 0 :(得分:1)
虽然ANTLRWorks不是一个编写良好的工具,但您可以使用其调试器来查看输入中的哪个令牌导致此异常,然后您可以查看需要修改的规则(因为您没有发布完整的语法)