我有以下語言,我希望使用antlr 1.2.2解析。Antrl詞法分析器/解析器異常瞭解
TEST <name>
{
<param_name> = <param value>;
}
而 < ...> - 意味着用戶值,而不是語言關鍵字的一部分
例如
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異常」。
你能幫我解密錯誤信息嗎?我做錯了什麼?
感謝
這是不可能的,告訴了什麼,因爲你貼失誤規則的語法錯了,你沒有考慮空格(和換行符),並有一個分號'INTEGER'後失蹤規則。 – 2012-02-13 14:51:03