词法分析程序的设计与实现研究

2014-04-22 06:31胡建陶兰美辉
科技视界 2014年24期
关键词:分析程序词法编译器

杨 平 胡建陶 兰美辉

(曲靖师范学院计算机科学与工程学院,云南 曲靖655011)

0 引言

词法分析是编译程序的第一阶段的工作,对输入的源程序进行词法分析,产生与其等价的属性自流作为输出[1-2]。编译程序在完成词法分析后,就进入语法分析阶段。词法分析是实现编译第一个核心阶段。本实验的程序设计语言用C语言,因为C语言是本科生最熟悉的语言,C语言编译器一般都是以汇编语言作为目标语言,汇编语言学生也相对熟悉,用C编程出现的系统报告的出错信息可作为教学中的实例,而且通过编写程序,学生对C语言的掌握能达到一个新的高度。

1 词法分析程序的设计

词法分析的功能是对输入的源程序,按照构词规则分解成一系列单词符号。单词是语言中具有独立意义的最小单位[3-5]。用C语言编写的源代码,包括如下单词:关键字、标识符、常数、运算符、界限符。程序的输入为用C编写的源程序,输出为属性字流,为二元组形式(syn,token),syn为单词种别码,token为识别出的单词。

1.1 设计词法分析规则

单词的构词规则如下(用扩充的BNF表示)

<关键字>→int/float/if/for……

<标识符>→<字母>|<_>{<字母>|<数字>|<_>}

<常数>→<数字>|<数字><数字串>

<运算符>→+|-|*|/|=……

<界限符>→(|)|[|]|{|}|;……

<数字>→0|1|2|3|4|5|6|7|8|9

<字母>→a|b|……|z|A|B|……|Z

1.2 设计状态转换图

根据构词规则(词法规则),设计的状态转换图如图1:

图1 状态转换图

1.3 设计各种单词符号对应的种别码

表1 单词符号对应的种别码

2 词法分析程序的实现

2.1 词法分析程序算法流程图

2.2 词法分析过程中的关键算法实现

2.2.1 空格处理算法

for(n=0;n<8;n++)token[n]=NULL;

ch=prog[p++];

while(ch=='')

{

ch=prog[p];p++;

}

图2 词法分析程序算法流程图

2.2.2 关键字、标识符的判定算法

if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')||(ch='_')

{

m=0;

while((ch>='0'&&ch<='9')||(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))

{

token[m++]=ch;

ch=prog[p++];

}

token[m++]='';

p--;

syn=41;

for(n=0;n<32;n++)//将识别出来的字符和已定义的关键字作比较

if(strcmp(token,rwtab[n])==0)

{

syn=n+1;

break;

}

}

2.2.3 数字的判定算法

if((ch>='0'&&ch<='9'))//数字

{

sum=0;

while((ch>='0'&&ch<='9'))

{

sum=sum*10+ch-'0';

ch=prog[p++];

}

p--;

syn=40;

}

3 结束语

词法分析是对输入的符号串形式的源程序进行最初的加工处理,是实现编译第一个核心阶段。本文对词法分析对词法分析程序进行了设计与实现,并给出了词法分析过程中的关键算法。词法分析的设计与实现对编译器的实现有着至关重要的作用。

[1]陈英,陈朔鹰.编译原理[M].北京:清华大学出版社,2009:58-74.

[2]童亚拉.分布式编译的方法和系统研究[J].计算机技术与发展,20(5):79-82.

[3]张岚,武保锭.类高级语言编译器的设计与实现[J].内蒙古科技与经济,2009:194(16):75-77.

[4]高攀.C 语言安全编译器研究[D].成都:电子科技大学,2004:24-56.

[5]项炜.微型编译器的实现及优化讨论[D].成都:电子科技大学,2004:4-51.

猜你喜欢
分析程序词法编译器
管控经营风险,以分析程序提升企业财务报表审计效能
管控经营风险,以分析程序提升企业财务报表审计效能
基于相异编译器的安全计算机平台交叉编译环境设计
谈对外汉语“词法词”教学
基于小波包变换的乐音时—频综合分析程序的开发
通用NC代码编译器的设计与实现
2010年高考英语“相似”考题例析
编译器词法分析程序实现探讨
浅析分析程序的应用效率
编译器无关性编码在微控制器中的优势