這裏是例子。這個($ type)不被ANTLR4識別。
Number //options { backtrack=true; }
: IntegerLiteral { $type = IntegerLiteral; }
| FloatLiteral { $type = FloatLiteral; }
| IntegerLiteral { $type = IntegerLiteral; }
;
這可以替換爲什麼?
謝謝。
這裏是例子。這個($ type)不被ANTLR4識別。
Number //options { backtrack=true; }
: IntegerLiteral { $type = IntegerLiteral; }
| FloatLiteral { $type = FloatLiteral; }
| IntegerLiteral { $type = IntegerLiteral; }
;
這可以替換爲什麼?
謝謝。
在ANTLR V4,這樣做:
Number
: IntegerLiteral {setType(IntegerLiteral);}
| ...
在ANTLR 4,這是新的語法:
Foo
: Bar -> type(SomeType)
| ...
;
但是,你有你上面的規則應該只是刪除Number
規則確保FloatLiteral
和IntegerLiteral
規則不是分段規則。
啊,是的,我知道我在Terence的新書中縮短了一些東西。也許提到' - >'不是舊v3人的AST重寫操作符? :) –
@ 280Z28你是什麼意思的「只刪除'數字'規則」和不碎的規則?你能否爲我澄清這一點,因爲這有我的問題的答案 –
你能接受280Z28的答案嗎?這是首選的方式(不依賴於目標)。 –