JAVA版 C语言词法分析器

    本题目是编译原理实验,现在只发布核心代码,仅供交流,欢迎评论!

 

    实验要求:

根据编译中的分词原理,编写一个词法分析程序:

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 不加双引号的汉字误判为标识符,应为非法字符 ;加双引号的汉字,正确的判断为字符串常数
 */

二、词法分析器核心代码

 

三、运行结果

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值