标签:控制 statement style 语义分析 代码生成 代码注释 序列 声明 导入
上一章我们得到了Token序列,而语法分析就是根据Token序列构造抽象语法树的过程,抽象语法树是一种用来描述程序代码语法 结构的树形表示方式,这种结构化的表示方式将为后面语义分析、代码生成阶段提供极大的便利。语法树的每一个节点都代表了程序代码中的一个语法结构,如包、类型、修饰符、运算符、接口、返回值甚至代码注释等都可以是一个语法结构。Javac中,每个语法树节点都对应着一个具体的实现类,这一章将重点介绍抽象语法树上的各个语法树节点,只有认清了抽象语法树上的构造节点才能根据根据一定规则将token序列转换为抽象语法树。
由于语法树中涉及到的节点众多,我们可以大概将这些节点归纳为如下3类:
(1)定义及声明 例如编译单元的定义、方法的定义、import导入包的声明等
(2)语句 例如一些流程控制的if语句、while语句、do-while语句及for语句等
(3)表达式 如两个数值相加x+y等
Javac中有几个定义及声明,下面给出了涉及到的主要的几个语法树节点的继承关系图。
可以看到Javac语法树上的每个节点实现类都继承了一个抽象实现类JCTree,同时也实现了与自己想对应的接口,如JCxxx实现类实现xxxTree接口,而xxxTree接口与JCTree又同时实现了
Tree接口,可以说这个接口是一个顶层接口,代表了任意一个语法树节点。类似的,后面的语句及表达式实现类也遵循了这样的继承原则,只是语句是通过JCStatement间接继承了JCTree,而表达式是通过JCExpression抽象类间接继承了JCTree。
(1)
2、语句的分析
3、表达式的分析
标签:控制 statement style 语义分析 代码生成 代码注释 序列 声明 导入
原文地址:https://www.cnblogs.com/extjs4/p/9697692.html