我有非常簡單的XML(HTML)解析ANTLR語法:ANTLR中的空白有什麼問題?
wiki: ggg+;
ggg: tag | text;
tag: '<' tx=TEXT { System.out.println($tx.getText()); } '>';
text: tx=TEXT { System.out.println($tx.getText()); };
CHAR: ~('<'|'>');
TEXT: CHAR+;
有了這樣輸入:"<ggg> fff"
它工作正常。
但是當我開始處理空白時失敗。例如:
" <ggg> fff "
- 失敗在beggining"<ggg> <hhh> "
- 工作正常"<ggg> "
- -<ggg>
"<ggg> fff "
失敗後,未能在年底
我不知道是什麼錯誤。也許有一些特殊的語法選項來處理這個問題。 ANTLRWorks給我NoViableAltException
。
空白字符對我很重要。 您寫道,詞法分析器的空間與其他任何字符沒有區別。 但在我的示例中,CHAR令牌應該匹配任何空格字符。所以它應該有效,但它不會。結論:詞法分析器的空白不同於其他字符! – pablo
而你給的是錯誤的,因爲有多種選擇(WHITESPACE和CHAR)。 – pablo
@pablo,你說得對,因爲你的詞法分析規則CHAR代表空格字符,但你的結論是錯誤的。我會在一個答案中很快解釋。 –