C语言词法分析器

时间:2014-09-28 17:53:56   收藏:0   阅读:390

概述

词法分析是编译阶段的第一步。这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。词法分析程序实现这个任务。词法分析程序可以使用Lex等工具自动生成。

本项目实现了一个简单C语言词法分析器。现已托管在git@OSC网站上,主页:http://git.oschina.net/kinegratii/Lexer

 

项目特性

项目结构

Lexer

-- com.kinegratii.lexer  主包
     |--- Analyzer.java      分析器及其回调接口
     |--- Lexer.java         项目启动类
     |--- MainFrame.java     界面类
     |--- SoftwareInfo.java  软件信息常量定义
 
-- com.kinegratii.token 词素包
     |--- DoubleToken.java      浮点数
     |--- DotToken.java         分隔符
     |--- IdentifiterToken.java 标志符  
     |--- IntegerToken.java     整型数字
     |--- ReservedToken.java    关键字
-- com.kinegatii.utils  工具包 
     |--- BareBonesBrowserLaunch.java 调用浏览器

项目截图

词法单元序列

bubuko.com,布布扣

符号表

bubuko.com,布布扣

项目开发

本项目是《编译课程》的一个实践项目,初步代码完成于2012年4月,也经历过几次小的变动,版本到了1.2.4(那时版本比较随意)。前些时间进行了整体上的重构,就有了这次的v1.3.0 版本。

v1.3.0 2014-09-24

所谓语言改造部分,就是这个分析器当中一些自定义的规则,比如有连续下划线的标识符应该只保留一个,如“a__b" => "a_b"等等。这些都不是标准分析器的一部分,之所以有这么个东西在,是为了防止全文复制,每年的语言改造都不一样,即使拿到了往届的代码也要改动一下,这就要熟悉整个项目代码了。

后续计划

 

原文:http://my.oschina.net/kinegratii/blog/322944

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!