抽象语法树讲义.

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5
T T (S) 12
S+E
E
T
只有Nnumber应该被
T
4
看作一个叶子结点。 3
抽象语法树
1 + 2 * (3 + 4) + 5
S
SE|S+E
S +E
S+E
T
ET|E*T
E E*T
5
T (S) | Number
T T (S) 12
S+E
不重要的运算符在AST中 E
T
不出现。
T
4
3
抽象语法树
1 + 2 * (3 + 4) + 5
变量variable 数字 number 等 一般来说: 一个文法规则,如果右侧产生式仅仅含有终 结符,其将会成为AST的叶子结点。
这些规则将会首先进行归约。
抽象语法树
画这颗语法分析树 1 + 2 * (3 + 4) + 5
S S +E
SE|S+E ET|E*T T (S) | Number
S+E
T
E E*T
5
T T (S) 12
S+E
Eቤተ መጻሕፍቲ ባይዱ
T
T
4
3
抽象语法树
画这颗语法树 1 + 2 * (3 + 4) + 5
S S +E
SE|S+E
S+E
T
E E*T
5
ET|E*T
T T (S)
T (S) | Number
12
S+E
在AST中,哪些规则
E
T
应该被表示出来?
T
4
3
抽象语法树
1 + 2 * (3 + 4) + 5
S+E
E
4
3
抽象语法树 (ASTs)
为了表达这个表达
S
式,是否真的需要 S + E
如此复杂的树结构 S + E
5

E (S)
NO! 只需要使用
Abstract Syntax Trees 来替代.
1 S+E
E (S) 2
S+E
E
4
www.hzdiy an.com www.sy smk120.com www.qcxgqt.com www.tcsac.com http://sj.39.net/dx http://www.tuloutours.com/ http://sj .39.ne t/dx/151125/4733052.htm l http://sj .39.ne t/dx/151004/4705363.htm l http://sj .39.ne t/dx/151001/4705150.htm l http://sj .39.ne t/dx/151001/4705149.htm l http://sj .39.ne t/dx/150928/4703086.htm l http://sj .39.ne t/dx/150928/4703069.htm l http://sj .39.ne t/dx/150920/4698999.htm l http://sj .39.ne t/dx/150920/4698980.htm l http://sj .39.ne t/dx/151127/4734142.htm l http://sj .39.ne t/dx/151127/4734143.htm l http://sj .39.ne t/dx/151127/4734145.htm l http://sj .39.ne t/dx/151127/4734146.htm l http://sj .39.ne t/dx/150919/4698851.htm l http://sj .39.ne t/dx/151128/4734512.htm l http://sj .39.ne t/dx/150919/4698845.htm l http://sj .39.ne t/dx/150918/4698449.htm l http://sj .39.ne t/dx/151129/4734707.htm l http://sj .39.ne t/dx/151129/4734708.htm l http://sj .39.ne t/dx/151129/4734711.htm l http://sj .39.ne t/dx/151129/4734713.htm l
S S +E
SE|S+E ET|E*T T (S) | Number
S+E
T
E E*T
5
T T (S) 12
S+E
E
T
只有Nnumber应该被
T
4
看作一个叶子结点。 3
抽象语法树
1 + 2 * (3 + 4) + 5
S S +E
SE|S+E ET|E*T T (S) | Number
S+E
T
E E*T
抽象语法树
语法分析树
句子:
S
1 + (2 + (3 + 4)) + 5 S + E
文法:
S+E
5
SE|S+E
E (S)
1
E (S) | Number
S+E
E (S)
2
S+E
E
4
3
语法分析树
S
为了表达这个表达 S + E
式,是否真的需要 S + E
5
如此复杂的树结构 E ( S )

1 S+E
E (S) 2
S S +E
SE|S+E ET|E*T
S+E 5
E*T
T (S) | Number
12
S+E
从AST中可以移除这些
4
内容,直接从子树连接 3
到父亲结点。
抽象语法树
1 + 2 * (3 + 4) + 5
S
SE|S+E ET|E*T
S +E
S+E 5
E*T
T (S) | Number
S
SE|S+E
S +E
S+E
T
ET|E*T
E E*T
5
T (S) | Number
T T (S) 12
S+E
不重要的运算符在AST中 E
T
不出现。
T
4
3
抽象语法树
1 + 2 * (3 + 4) + 5
S
SE|S+E
S +E
S+E
T
ET|E*T
E E*T
5
T (S) | Number
T T (S) 12
3
+ +5 1+ 2+
34
如何来构建AST?
构建抽象语法树的最佳途径是伴随句子的语法 分析过程;
为每个“重要的”产生式规则构建内部的树结 点,使用指针指向其叶子结点规则。
需要能够掠过那些不重要的规则(例如一个直 接的转换)或者以后的分析中不要的部分(括 号;变量声名等)
AST的结构
AST的叶子结点是什么?
S+E
不重要的运算符在AST中 E
T
不出现。.
T
4
3
抽象语法树
1 + 2 * (3 + 4) + 5
S
SE|S+E ET|E*T T (S) | Number
S +E
S+E
T
E E*T
5
T T (S) 12
S+E
E
T
从AST中可以移除这些 T
4
内容,直接从子树连接 3
到父亲结点。
抽象语法树
Draw the tree for: 1 + 2 * (3 + 4) + 5
相关文档
最新文档