码迷,mamicode.com
首页 > 其他好文 > 详细

第四章-语法分析之认识树节点

时间:2018-09-25 10:14:13      阅读:572      评论:0      收藏:0      [点我收藏+]

标签:控制   statement   style   语义分析   代码生成   代码注释   序列   声明   导入   

 

 

上一章我们得到了Token序列,而语法分析就是根据Token序列构造抽象语法树的过程,抽象语法树是一种用来描述程序代码语法 结构的树形表示方式,这种结构化的表示方式将为后面语义分析、代码生成阶段提供极大的便利。语法树的每一个节点都代表了程序代码中的一个语法结构,如包、类型、修饰符、运算符、接口、返回值甚至代码注释等都可以是一个语法结构。Javac中,每个语法树节点都对应着一个具体的实现类,这一章将重点介绍抽象语法树上的各个语法树节点,只有认清了抽象语法树上的构造节点才能根据根据一定规则将token序列转换为抽象语法树。

 

 

由于语法树中涉及到的节点众多,我们可以大概将这些节点归纳为如下3类:

(1)定义及声明 例如编译单元的定义、方法的定义、import导入包的声明等

(2)语句 例如一些流程控制的if语句、while语句、do-while语句及for语句等

(3)表达式 如两个数值相加x+y等

 

1、定义及声明

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!