在Erlang中创建一个AST节点

问题描述:

我在玩Erlang,我正在尝试编写一个简单的算术分析器。在Erlang中创建一个AST节点

我想尝试和解析下面的表达式:

((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}. 

而且,看看到erl_parse.erl模块中的stdlib应用。

从到mkop功能阅读:

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

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