簡體   English   中英

ANTLR4:如何解析非根節點?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM