[英]ANTLR4: How to parse non-root node?
給定語法
script: statement*;
statement: do | check;
do: 'do';
check: 'check';
如何解析非根節點? 換一種說法,
ScriptParser sp = new ScriptParser();
StatementContext sc = sp.parse<StatementContext>("do");
我簡化了上面的示例。
一種解決方案是使所有節點成為根節點,例如
rootNode: script | statement | do | check;
但我不希望這樣,因為它污染了我的語法,並且是維護的噩夢(每當語法添加/刪除一個節點時,必須更新rootnode,這很容易出錯)。 另一個解決方案是使用rootnode規范編寫另一個派生語法。 這不會污染主要的語法,但是仍然存在維護問題。
有一個更好的方法嗎? 我想使用我的許多節點(*** Context類),並將它們傳遞到我的域模型類的構造函數中。
謝謝@Jiri Tousek! 答案的確是
ScriptParser sp = new ScriptParser();
StatementContext sc = sp.statement();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.