基于Lex和Yacc的C_Minus编译器.pdf
文本预览下载声明
2011年第5期
中图分类号:TP313文献标识码:A 文章编号:1009-2552(2011)05-0122—03
臧秀娟,刘维亭
(江苏科技大学电子信息学院,镇江212003)
摘要:基于Windows环境下的Lex和Yacc集成环境Parser
语言子集)语言为源语言的编译器。主要从编译技术的角度对C—Minus语言的词法分析、语法
分析、符号表的建立以及目标代码生成的过程进行详细的阐述。
Generator
关键词:C—Minus编译器;YACC;LEX;目标代码;Parser
Lex
C—Minus basedon andYacc
compiler
ZANG
Xiu-juan.LIUWei.ting
and
Information,JmgmUniversity荫Science
(Sch砌0f日印咖岫岱and
onParser WindowsofLexandYacc
Abstract:Based
Generator,thesystem integrationenvironment,
the is used subsetofC source
completedC—Minus(a language)language鹊thelanguage.This
compiler
article focusesonthe lexical and
C—.Minus
mainly languageanalysisgrammaticalanalysis,thesymbol
tableand ofcode inthis fromthe ofthe
target generationprocess perspectivecompilationtechnique.
Generator
wordb:C—Minus code;Parser
Key compiler;YACC;LEX;object
0 引言 精度型等,支持二维数组,不支持指针,支持全局变
编译程序是计算机系统软件的重要组成部分, 量和局部变量;支持负数及负数运算;支持算术运
其基本原理和实现技术也适应于一般软件的设计和 算、关系运算和逻辑运算;支持C语言的大部分语
实现,而且在软件工程、软件自动化、程序分析等领 句;支持通用函数和系统函数等。
域有着广泛的应用。通常把编译程序视为高级语言 C—Minus语言的编译模型可如下设计:
到机器语言的转换程序,这种转换不是结构上的变 控制区:存储配置信息
换,而是基于语言语义的等价变换,因此编译程序设 程序区:存储指令代码
计的难度和复杂性是极高的【lJ。在自动化软件编 数据区:存储常量等,变量配置等
程领域中涉及较多的高级语言为C语言、C++语言堆栈区:作为程序内部的
显示全部