簡體   English   中英

在Erlang中創建AST節點

[英]Creating an AST node in Erlang

我正在玩Erlang,我正在嘗試編寫一個簡單的算術解析器。

我想嘗試解析以下表達式:

((12+3)-4)

我想將表達式解析為AST節點的堆棧。 在解析這個表達式時,我首先要為(12 + 3)表達式創建一個二進制表達式,它在C#中看起來像這樣:

var binaryStructure = new BinaryStructure();
binaryStructure.Left = IntegerLiteralExpression(12);
binaryStructure.Right = IntegerLiteralExpression(4);
binaryStructure.Operator = binaryExpression.Operator != BinaryOperatorType.Addition;

我對Erlang很陌生,我想知道如何在Erlang中創建這樣的結構,我可以放在一個List上,我將它用作表達式的堆棧。

任何人都可以建議如何創建這樣的樹狀結構? 功能是否合適?

在像Erlang這樣的函數式語言中,它簡單得多。 做吧

{'+', 12, 3}

以更抽象的方式

A = 12,
B = 3,
OP = '+',
{OP, A, B}.

另外,請查看stdlib應用程序中的erl_parse.erl模塊。

mkop函數讀取:

mkop(L, {Op,Pos}, R) -> {op,Pos,Op,L,R}.                                        

mkop({Op,Pos}, A) -> {op,Pos,Op,A}.

暫無
暫無

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

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