0
我掙扎瞭解ANTLR,我試圖匹配這樣一句話:ANTLR令牌匹配,而不是文本
name "some_name" module ....
的grammare文件看起來像這樣的:
swdFile : nameDecl module* EOF;
nameDecl: NAME DBL_QUOTE appName DBL_QUOTE;
appName: TEXT;
module: MODULE;
DBL_QUOTE : '\"';
NAME:'name';
MODULE:'module';
TEXT : ('a'..'z'|'A'..'Z')+ ;
該作品很好,但有一個我似乎無法理解的小故障。如果我試圖解析這段文字,它會失敗,因爲它將引用文本與令牌匹配:
name "module" module ...
爲什麼?我明確告訴過,引號之間的內容是純文本,它應該匹配TEXT標記。
行,所以詞法「標記化」我在「獨立」與分析器輸入莫名其妙:字符串文本通常是由詞法分析器,在這種情況下,你不會有一個問題來處理。感謝Bart的回答,我需要將引號移動到令牌中,以便antlr可以正確識別引用的「STRING」。仍然爲什麼antlr試圖匹配每個TOKEN,只有在它匹配解析器語法之後? – victor
我想如何處理案件,當我想解析的東西沒有引號 - >'名稱模塊模塊',我想模塊的第一次出現是名稱,第二個模塊是好的..模塊令牌。謝謝 ! – victor