我知道可以在ANTLR語法中在默認和隱藏令牌通道之間切換,但可以說我想要第三個通道。我如何在Gramar中定義一個新的令牌頻道?例如,可以說我想要一個名爲ALTERNATIVE的頻道。ANTLR:在語法中定義新通道
1
A
回答
2
他們只是final int
的在Token
class ,所以你可以簡單地在你的詞法分析器引入額外的int
這樣的:
grammar T;
@lexer::members {
public static final int ALTERNATIVE = HIDDEN + 1;
}
// parser rules ...
FOO
: 'foo' {$type=ALTERNATIVE;}
;
// other lexer rules ...
一個相關的Q &答:How do I get an Antlr Parser rule to read from both default AND hidden channel
1
對於C你可以使用的目標
//This must be assigned somewhere
@lexer::context {
ANTLR3_UINT32 defaultChannel;
}
TOKEN : 'blah' {$channel=defaultChannel;};
這會得到每一個規則後重置,所以如果你想要一個頻道分配可以在不同規則之間持續存在,您可能需要重寫nextTokenStr()。
相關問題
- 1. antlr語法定義
- 2. 定義關鍵詞在ANTLR語法
- 3. ANTLR語法中的歧義
- 4. 在ANTLR語法
- 5. Antlr:導入語法 - 重新定義標題錯誤
- 6. 有條件地在ANTLR語法中添加自定義代碼
- 7. ANTLR語義斷言
- 8. ANTLR語義評估
- 9. 在antlr中處理隱藏通道3
- 10. C#ANTLR語法?
- 11. ANTLR語法pred
- 12. CIL ANTLR語法?
- 13. ANTLR中的語法和選定的詞
- 14. ANTLR version2語法語法?
- 15. 在Emacs中定義新的語法
- 16. ANTLR語法教程
- 17. ANTLR的箭語法
- 18. ANTLR的樹語法
- 19. Antlr Left Factoring語法
- 20. 測試ANTLR語法
- 21. ANTLR語法變量
- 22. ANTLR語法問題
- 23. ANTLR V3 SQL語法
- 24. ANTLR語法錯誤
- 25. ANTLR語法if語句
- 26. ANTLR是否提供語義
- 27. 轉換ANTLR 3語法ANTLR 4
- 28. 將ANTLR v3語法遷移到ANTLR v4
- 29. 爲自定義腳本編寫antlr語法
- 30. 用於定義/調用多參數函數的ANTLR語法
您必須在某處定義「ALTERNATIVE」類型,當然...... –