2012-02-13 153 views
0

我有以下語言,我希望使用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異常」。

你能幫我解密錯誤信息嗎?我做錯了什麼?

感謝

+0

這是不可能的,告訴了什麼,因爲你貼失誤規則的語法錯了,你沒有考慮空格(和換行符),並有一個分號'INTEGER'後失蹤規則。 – 2012-02-13 14:51:03

回答

1

雖然ANTLRWorks是不是寫得很好的工具,你可以使用它的調試器,看看哪些令牌輸入導致這個異常,然後就可以看到哪些規則需要修改,(因爲你沒有沒有發佈完整的語法)。

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

+0

即使你的答案沒有提供直接的答案,而且我已經是新的東西了。我感謝您的幫助。 – NirMH 2012-02-13 10:00:55

+0

我用你的語法的一部分來測試,但不能重現異常。所以下次你可以發佈更多的信息(至少應該幫助他人重現這個問題)。 – 2012-02-14 02:29:06