7
這應該相當簡單。 我正在使用ANTLR處理詞法分析器語法,並希望將變量標識符的最大長度限制爲30個字符。我試圖用這條線來完成這個(以下正常的正則表達式 - 除了「」的事情 - 語法):ANTLR中的範圍量詞語法正則表達式
ID : ('a'..'z'|'A'..'Z') ('a'..'z'|'A'..'Z'|'0'..'9'|'_'){0,29} {System.out.println("IDENTIFIER FOUND.");}
;
代碼生成沒有錯誤,但編譯生成的代碼,這是根本原因未能行:
0,29
顯然ANTLR走的是括號內文字的部分,將其放置在接受國家區域與打印線一起。我搜查了ANTLR網站,並且沒有找到相關表達的例子或參考。 這個表達式的語法應該是什麼?
謝謝你的幫助。 – user1634761
如果ANTLR僅用於爲編程語言生成編譯器,那麼對於量詞可能幾乎沒有用處。但是用於驗證任何類型的結構化數據的語法(模式)肯定需要它們 - 信用卡號碼是16位數字,而不是13或25. ANTLR4書籍具有JSON和XML語法,但沒有基本的標記約束,將很難使用ANTLR語法作爲JSON Schema和XSD的抽象(獨立於編解碼器)版本。 – Dave
「現在很少有理由限制某種語言的標識符」 - 這並不意味着沒有限制標識符的語言存在,人們也不需要爲它們編寫解析器。 –