-1
有什麼辦法來匹配ANTLR令牌除了特定的一種?ANTLR匹配所有令牌除了
我有其中指出一個'_'
可以是ID的規則。現在,我有我想匹配ID的具體情況,但在這種特殊情況下,我希望它忽略'_'
替代。可能嗎?
有什麼辦法來匹配ANTLR令牌除了特定的一種?ANTLR匹配所有令牌除了
我有其中指出一個'_'
可以是ID的規則。現在,我有我想匹配ID的具體情況,但在這種特殊情況下,我希望它忽略'_'
替代。可能嗎?
我認爲像
(ID {!$ID.text.equals("_")}?)
應該這樣做(如果你使用的是Java爲目標語言)。否則,您必須以您的語言能夠理解的方式編寫semantic predicate。
總之,這將檢查文本是否不等於「_」只有這樣,子規則的匹配。
另一種可能的方式做到這一點:
id: ID
| '_'
;
ID: // lexer rule to match every valid identifier EXCEPT '_' ;
這樣一來,當你的意思是「無論是‘_’或任何其它ID」,你用id
匹配這一點,如果你不允許「_」,你可以使用_
。
我通過你的問題,瀏覽了一下,很多人似乎有像樣的答案,但他們大部分都是不能接受的。您_do_似乎有利於自己的答案,你提供給您的問題... :) –
@halfwarp其答案是否有資格作爲接受嗎?如果是,請接受它。 –