[英]Antlr AST tree construction
我正在嘗試使用ANTLR樹語法創建AST。
給出如下語法:
rule : head ':-' litlist (';' ':-' litlist)* DOT_END
我想創建一個像下面的樹
^(RULES ^(head litlist)+)
也就是說,我希望(head litlist)
重復語法中的litlist
數量。 我嘗試了類似上面的操作,但是出現了這樣的錯誤:
語法錯誤:必需(...)+循環在輸入EXPR處不匹配任何內容,其中EXPR是語法中的另一術語。
基本上我想要類似以下內容:
a : type ID (',' ID)* ';' -> ^(type ID)+;
在樹構建中描述。
但是我的語法在重復子句中有多個標記,這似乎是一個問題。
什么是正確的方法?
您是否嘗試過另一種間接方式? 如:
rule : clauses DOT_END -> ^(RULES clauses)
clauses : head ':-' litlist (';' ':-' litlist)* -> ^(head litlist)+
語法可能還不正確。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.