我开发中的编译器名字暂时叫"Saipan" ,就是塞班岛的意思,那是个美丽的地方.
目前它分为已下几个模块
预处理->词法分析->语法分析->语义分析->字节码生成 以及 符号管理,类型系统,属性管理,错误处理 等几个部分,并在语法分析和语义分析中完成一些属性的计算.
各个模块大概功能如下:
预处理: 目前只是简单的去注释 (已完成)
词法分析: 将源代码拆分成一个个的标识符,并判断出基本类型,例如关键字,运算符,立限数 (已完成)
语法分析: 分析已拆分出来的标识符,检查是否有语法错误,并成生语法树.
语义分析: 在语法树的基础上检查语义.
字节码生成: 生成自己的虚拟机可以运行的字节码.
没有单独的属性计算步骤,为了编程上的方便,将属性计算放在语法分析和语义分析部分一起进行.
其它的模块包括:
符号管理: 管理词法分析中拆分出来的标识符. (已完成)
类型系统: 管理类型信息,包括标准类型和构造类型(类,接口,枚举之类)的信息,比如此类型所占用字节长度,是否能显示或 隐式的转换成某个其它类型.当某二个类型经过某种运算符的运算,会得到什么样的类型等等. (完成一部分)
属性管理: 管理编译过程中所计算出来的某个语法元素的属性,比如一个参数的类型,在栈上寻址的偏移地址等.
错误处理: 对源代码中各种错误的处理. (完成一部分)
目前它分为已下几个模块
预处理->词法分析->语法分析->语义分析->字节码生成 以及 符号管理,类型系统,属性管理,错误处理 等几个部分,并在语法分析和语义分析中完成一些属性的计算.
各个模块大概功能如下:
预处理: 目前只是简单的去注释 (已完成)
词法分析: 将源代码拆分成一个个的标识符,并判断出基本类型,例如关键字,运算符,立限数 (已完成)
语法分析: 分析已拆分出来的标识符,检查是否有语法错误,并成生语法树.
语义分析: 在语法树的基础上检查语义.
字节码生成: 生成自己的虚拟机可以运行的字节码.
没有单独的属性计算步骤,为了编程上的方便,将属性计算放在语法分析和语义分析部分一起进行.
其它的模块包括:
符号管理: 管理词法分析中拆分出来的标识符. (已完成)
类型系统: 管理类型信息,包括标准类型和构造类型(类,接口,枚举之类)的信息,比如此类型所占用字节长度,是否能显示或 隐式的转换成某个其它类型.当某二个类型经过某种运算符的运算,会得到什么样的类型等等. (完成一部分)
属性管理: 管理编译过程中所计算出来的某个语法元素的属性,比如一个参数的类型,在栈上寻址的偏移地址等.
错误处理: 对源代码中各种错误的处理. (完成一部分)