簡體   English   中英

ANTLR - 如何使用生成的AST樹?

[英]ANTLR - How to use generated AST tree?

我有兩個問題:

在我的ANTLR解析器中,我有這個重寫規則:

msg: msg_content (COMMA msg_content)* -> ^(MSG_CTS msg_content+);

在我的樹語法中,如何使用收集的msg_content標記? $ msg_content.text返回一個空異常。


更一般地說,關於如何使用生成的AST樹,您能為我提供一些指導嗎? 我基本上想要遍歷節點並為不同的東西創建Java類,例如

我有這個簡單的樹被打印:

(MSG (AGENTS A B) (MSG_CTS x y))

我想要一些Java類“Message”,其中包含“Agents”的字段,其中包含A,B和一些將包含X,Y的Content字段。

我已經閱讀了ANTLR權威指南,但是沒有關於如何使用組合標記的參考文獻,甚至沒有關於如何沿着我想要的樹向下導航的參考文獻。 就好像每個ANTLR教程都有關於表達式評估器的內容!

我已經看到:“AN與Java接口”和ANTLR在線手冊中的“表達式評估器”,但我不太明白如何將這些應用到我的問題中。 如果你能提供一個簡單的例子,它會非常有用!

請幫忙......謝謝!

$ msg_content.text返回一個空異常

如果不看到所有涉及的規則和代碼,就無法評論。 你能編輯你的問題並包含一個自包含的例子我或其他人可以運行再現錯誤/異常嗎?

(MSG(AGENTS AB)(MSG_CTS xy))

我想要一些Java類“Message”,其中包含“Agents”的字段,其中包含A,B和一些將包含X,Y的Content字段。

看看這個教程列表: https//stackoverflow.com/questions/278480/antlr-tutorials ,並非所有都是關於表達式評估者。 我的教程演示了如何在樹步行器中使用自定義Node類。

另請參閱此Q&A ,其中還顯示了如何在樹步行器中使用自定義節點類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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