本题目是编译原理实验,现在只发布核心代码,仅供交流,欢迎评论!
实验要求:
根据编译中的分词原理,编写一个词法分析程序:
1. 输入:任意一个C语言程序的源代码。
2. 处理:对输入进行分析,分离出保留字、标识符、常量、算符和界符。
3. 输出:对应的二元式(种别编码自定,可暂编为一类对应一个编码)。
一、说明
/**
*
* @author 刘小文
* 本词法分析器只对一部分进行了分析,并没有包含全部的信息,暂编一类对应一个编码
* (1)关键字:二元式定义如下:(单词种别为1,关键字名称) yes
* 关键字表:"auto","break","case","char","const","continue","default","do","double","else","enum","extern","float","for","goto","if","int","long","register","return","short","signed","static", "sizeof","struct","switch","typedef","union","unsigned","void","volatile","while"
*
* (2)标识符:二元式定义如下:(单词种别为2,标识符名称) yes
*
* (3)常 数:二元式定义如下:(单词种别3,常数值) yes
* 常数表:整型常数、浮点型常数、布尔型常数、字符型常数、字符串
*
* (4)运算符:二元式定义如下:(单词种别4,运算符) no 三目运算符没有判断
* 运算符表:+、+=、++、-、-=、--、*、*=、/、/=、%、%=、>、>=、<、<=、=、==、!、!= 、. 、->、>>、<<、&、&&、||、||、~、^
*
* (5)界 符:二元式定义如下:(单词种别5,界符) yes
* 界符表:#、;、,、(、)、{、}、[、]
*
* no 不加双引号的汉字误判为标识符,应为非法字符 ;加双引号的汉字,正确的判断为字符串常数
*/
二、词法分析器核心代码
三、运行结果