2016-04-13 37 views
0

我沒有經歷過且仍在學習語法。我只需要一個支持空格和特殊字符的示例語法,比如!,「#,$,^,&。 因爲使用我當前的語法和規則,我不能打印出一些支持空格和特殊符號的字符串。我知道空白拋給)ANTLR 4 - 用於支持空格和特殊字符的字符串的語法規則

例如,如果我給輸入:的Hello World !!!!!
輸出的HelloWorld < - 空白& CHAR()拋出

!看看這個圖片: problem

爲什麼??

這裏是我目前的語法example.g4

string 
    : '"' (~'"'|'\"')* '"' 
    ; 

Id 
    : Letter(Letter|Digit)* 
    ; 

Num 
    : Digit 
    ; 

fragment 
    Digit 
    : [0-9]+ 
    ; 

Letter 
    : [a-zA-Z] 
    ; 


LINE_COMMENT 
    : '//' ~[\r\n]* -> skip 
    ; 

我是讀此鏈接: ANTLR parse strings (keep whitespaces) and parse normal identifiers

,但我不能明白髮生什麼事。我需要一個建議。謝謝。

+0

語法中沒有可匹配空格的詞法分析器規則。添加類似'WS:[\ t \ r \ n] +;' –

+0

親愛的朋友,感謝您來這裏並試圖幫助我。 但是在添加WS之後,我在parsetreewalker上出錯了:[\ t \ r \ n] +;語法, 我的字符串變爲空。 未將對象引用設置爲對象的實例。 –

回答

1

Finnaly我發現有人給我解決方案。 他是jim

在這裏他的解決方案: 您正在聲明您的規則爲字符串作爲解析器規則。 STRING:
詞法規則應以大寫字母開頭....

感謝信規則不是一個片段,因此它可以與標識
您還沒有指定什麼在你的詞法分析器做空白衝突,所以它會只是不匹配,並給出錯誤。
找到其中一本在線教程,或購買本書,或者更好的是,同時做兩本書。

吉姆


現在我的問題解決了,我可以在裏面有空白打印出字符串。

相關問題