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