Saipan编译器结构

原创 2006年05月19日 23:46:00
我开发中的编译器名字暂时叫"Saipan" ,就是塞班岛的意思,那是个美丽的地方.

目前它分为已下几个模块
预处理->词法分析->语法分析->语义分析->字节码生成    以及 符号管理,类型系统,属性管理,错误处理 等几个部分,并在语法分析和语义分析中完成一些属性的计算.

各个模块大概功能如下:
预处理:         目前只是简单的去注释  (已完成)
词法分析:     将源代码拆分成一个个的标识符,并判断出基本类型,例如关键字,运算符,立限数 (已完成)
语法分析:     分析已拆分出来的标识符,检查是否有语法错误,并成生语法树.
语义分析:     在语法树的基础上检查语义.
字节码生成: 生成自己的虚拟机可以运行的字节码.
没有单独的属性计算步骤,为了编程上的方便,将属性计算放在语法分析和语义分析部分一起进行.

其它的模块包括:
符号管理:   管理词法分析中拆分出来的标识符. (已完成)
类型系统:   管理类型信息,包括标准类型和构造类型(类,接口,枚举之类)的信息,比如此类型所占用字节长度,是否能显示或 隐式的转换成某个其它类型.当某二个类型经过某种运算符的运算,会得到什么样的类型等等. (完成一部分)
属性管理:   管理编译过程中所计算出来的某个语法元素的属性,比如一个参数的类型,在栈上寻址的偏移地址等.
错误处理:    对源代码中各种错误的处理. (完成一部分)

编译器基本结构

我们可以把编译器看作一个 黑盒子,它能将源程序映射为在语意上等价的目标程序。如果把这个盒子稍微打开一点,我们可以看到这个映射过程由两部分组成:分析部分(编译器前端)和综合部分(编译器后端)。 分析部分...
  • u013778960
  • u013778960
  • 2014年12月01日 14:48
  • 627

编译器架构的王者LLVM——(1)现代编译器架构

LLVM平台,短短几年间,改变了众多编程语言的走向,也催生了一大批具有特色的编程语言的出现,不愧为编译器架构的王者,也荣获2012年ACM软件系统奖。...
  • sun_xiaofan
  • sun_xiaofan
  • 2015年11月06日 18:45
  • 4189

编译原理之编译器的结构

中间代码生成 生成中间代码有易于目标机器语言上的生成,在本篇中将采用三地址法的中间表示形式,很像汇编语言,每个指令具有三个运算分量,每个运算分量都像一个寄存器。 t1=intofloat(60) ...
  • xiaoseqingchun
  • xiaoseqingchun
  • 2014年12月01日 13:22
  • 928

自引用结构

自引用结构兼谈Malloc和Free函数一、自引用结构1、 什么事自引用结构?自引用结构(Self-Referential Structure)是一种特殊的结构。主要特征:一个或多个自身的变量是指向自...
  • lichengyu
  • lichengyu
  • 2011年02月18日 21:41
  • 2573

Windows与Linux编译器的区别

转自:http://hi.baidu.com/savagert/blog/item/c7e8318bb39b57d6fd1f10fa.html移植工作开始后的第一步就是在目标平台Linux上进行编译,...
  • ayw_hehe
  • ayw_hehe
  • 2011年01月31日 15:08
  • 1639

编译器架构的王者LLVM——(9)栈式符号表的构建

栈式符号表对于一款编译器,无疑是核心的组件。 无论你在做什么符号扫描,那么都离不开符号表,如何得知一个符号是否定义,以及它的类型,那么唯有查看符号表中的记录。 栈式符号表并不复杂,但思想精妙,本文,将...
  • sun_xiaofan
  • sun_xiaofan
  • 2015年11月14日 11:36
  • 2331

编译器的结构——词法分析

编译器的结构——词法分析
  • shallowinggg
  • shallowinggg
  • 2017年12月10日 21:37
  • 24

编译器的结构

编译器的结构
  • shallowinggg
  • shallowinggg
  • 2017年12月09日 22:54
  • 24

编译器的结构(2)

语法分析 编译器的第二个步骤成为语法分析或解析。语法分析器使用由词法分析器生成的各个词法单元的第一个分量来创建树形的中间表示。该中间表示给出了词法分析产生的词法单元流的语法结构。一个常用的表示方法是...
  • shallowinggg
  • shallowinggg
  • 2017年12月10日 22:09
  • 28

【开源】司马编译器结构

编译器前段部分:源代码经过预处理模块处理之后,剔除了一些空格,跟注释,把源代码重新组织给了词法分析器,词法分析器处理后形成了记号流,记号(终结符、非终结符)被存放到了词法表中。语法分析器根据词法表中的...
  • webpla
  • webpla
  • 2009年02月22日 17:30
  • 1199
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Saipan编译器结构
举报原因:
原因补充:

(最多只允许输入30个字)