1

我已經創建了一個使用Java的Parboiled library的PEG。
我基於this example使用Parboiled生成AST(Java)

它工作正常,但現在我需要實際創建AST。

我的問題是我該如何使用庫來做到這一點?

在環視了一下Google之後,看了一下Github上的例子,我發現你打算使用push,pop,swap等來創建AST,但我很難找出如何用我的解析器來做到這一點。我的解析器與Java的解析器相似,如果你能幫助我理解它是如何爲Java的工作的,我可以適應它。

回答

1

基本上PEG解析器會堆棧值,可以壓入和彈出的值作爲您匹配輸入。您將推送堆棧中的值(AST節點),並在解析完成時從解析器中獲取AST的根節點。

檢查https://github.com/sirthias/parboiled/blob/master/examples-java/src/main/java/org/parboiled/examples/calculators/CalculatorParser4.java作爲一個例子,如何使用push和pop。

檢查也(很不錯!)Parboiled項目的文檔。這裏是AST創建的具體部分https://github.com/sirthias/parboiled/wiki/Working-with-the-Value-Stack