当前位置: 首页 > 图文教程 > 开发语言 > VC++ > 一个小语言的词法分析程序

VC++
用VC实现支持多语言的程序
用鼠标手势动作来发送命令
在VC中使用MATLAB C/C++函数库
水晶报表在VC++6.0中的简单使用方法
关于限次软件的制作
可定制大小和数量的随机数函数
用vc.net实现记录开关机时间的程序
隐藏你的鼠标
一个黑客程序开发实例 -- IE终结者
修改QQ的程序
ACE自适配通信环境
超频软件原理探析
OutlookGrid:以Outlook样式分组和排列数据项(C#)
遍历和查找外部程序 Tree-View 中的项目
用 Win API 实现自绘按钮类
VC++ 6.0使用复选框和单选钮
对C#中的TreeView加背景图
在MFC中应用CTreeCtrl控件的技巧
CSortListCtrl 加强版
使用 VC.net 轻松实现按钮控件自绘

VC++ 中的 一个小语言的词法分析程序


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 72 ::
收藏到网摘: n/a

一个小语言的词法分析程序
作者:loyalzu

下载本文示例代码

前些天写了个小语言的词法分析程序,因为前些天在VC知识库看到一个pascal词法分析的程序,觉得写得挺复杂的。其实词法分析程序的原理都是一样的,所以我想只要搞明白了简单的词法分析程序,再写复杂的就不难了,无非是多加几个关键字,多写几个条件判断语句而已。词法分析是编译程序的基础,也是最简单的。好,现在让我们看程序吧。
先让我们看看这个小语言的文法吧。

G[<程序>]:
<程序>∷=<程序首部>;<分程序>.
<程序首部>∷=program<标识符>
<分程序>∷=<复合语句>
<复合语句>∷=begin<语句序列>end
<语句序列>∷=<语句>{;<语句>}
<语句>∷=<赋值语句>|<复合语句>|<条件语句>
<赋值语句>∷=<标识符>:=<表达式>
<条件语句>∷=if <布尔表达式> then <语句> else <语句>
<表达式>∷=<项>{(+|-)<项>}
<项>∷=<因式>{(*|/)<因式>}
<因式>∷=<标识符>|<无正负号常量>|’(’<表达式>’)’
<布尔表达式>∷=<表达式><关系运算符><表达式>
<关系运算符>∷= =|<|<=|>|>=|<>
<标识符>∷=<字母>{<字母>|<数字>}
<无正负号常量>∷=<数字>{<数字>}[.<数字>{<数字>}]
<字母>∷=a|b|c|d|e|f|g|……|u|v|w|x|y|z
<数字>∷=0|1|2|3|4|5|6|7|8|9

根据此文法,构造一词法分析程序。输入以“#”为结束符
按照这个文法,找出该语言的关键字,如program,begin,end ,if,then,else,以及其他一些特殊符号,然后再构造一个分析表,如下表:

单词符号  类别编号
标识符 1
常数 2
if 3
then 4
else 5
program 6
begin 7
end 8
+ 9
- 10
* 11
/ 12
( 13
) 14
> 15
>= 16
< 17
<= 18
<> 19
:= 20
; 21
. 22