抽象语法树——菜鸟级(试着看懂)
Abstract Syntax Tree - Rookie level (Trying to understand)
所以我现在正在尝试学习 AST,并一直在练习一些简单的函数,例如
var a;
var b;
b = 666
a = b;
print a;
结局是这样的:
所以在试图理解它之后。我几乎开始理解它,但是当我尝试执行这样的功能时,问题就来了:
var a;
var b;
b = 666;
a = b+42*6;
print a;
我遇到麻烦的地方是 a=b+42*6 我不知道应该如何制作它的树。如果其中只有一个像 + 或 *,我知道该怎么办,但当它们都在一起时就不知道了。我一直在尝试查看 YouTube 剪辑、其他网站的教程等等,但找不到类似的内容。
所以我需要你们的帮助!
总之。我也有一个语法,但它看起来像图片中的样子:)
编辑:
我就这样结束了。感觉不对...?
编辑 2:
由于表达式是 a = b + 42 * 6
,您必须首先考虑自己如何做。第一部分是 42 * 6
基于数学规则,所以你把它写成一个表达式(使用与你使用的相同的术语):
expr
/ | \
42 * 6
这个结果将被添加到 b
,所以这是下一个:
expr
/ | \
b + \
expr
/ | \
42 * 6
然后你想把它全部分配给a
,所以加上:
assign
/ | \
a = \
expr
/ | \
b + \
expr
/ | \
42 * 6
所以我现在正在尝试学习 AST,并一直在练习一些简单的函数,例如
var a;
var b;
b = 666
a = b;
print a;
结局是这样的:
所以在试图理解它之后。我几乎开始理解它,但是当我尝试执行这样的功能时,问题就来了:
var a;
var b;
b = 666;
a = b+42*6;
print a;
我遇到麻烦的地方是 a=b+42*6 我不知道应该如何制作它的树。如果其中只有一个像 + 或 *,我知道该怎么办,但当它们都在一起时就不知道了。我一直在尝试查看 YouTube 剪辑、其他网站的教程等等,但找不到类似的内容。
所以我需要你们的帮助!
总之。我也有一个语法,但它看起来像图片中的样子:)
编辑:
我就这样结束了。感觉不对...?
编辑 2:
由于表达式是 a = b + 42 * 6
,您必须首先考虑自己如何做。第一部分是 42 * 6
基于数学规则,所以你把它写成一个表达式(使用与你使用的相同的术语):
expr
/ | \
42 * 6
这个结果将被添加到 b
,所以这是下一个:
expr
/ | \
b + \
expr
/ | \
42 * 6
然后你想把它全部分配给a
,所以加上:
assign
/ | \
a = \
expr
/ | \
b + \
expr
/ | \
42 * 6