Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2087126
  • 博文数量: 909
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 12260
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-06 20:50
文章分类

全部博文(909)

文章存档

2008年(909)

我的朋友

分类:

2008-05-06 21:48:26

一起学习
一个小语言的词法分析程序
作者: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,以及其他一些特殊符号,然后再构造一个分析表,如下表:

单词符号 下载本文示例代码


一个小语言的词法分析程序一个小语言的词法分析程序一个小语言的词法分析程序一个小语言的词法分析程序一个小语言的词法分析程序一个小语言的词法分析程序一个小语言的词法分析程序一个小语言的词法分析程序一个小语言的词法分析程序一个小语言的词法分析程序一个小语言的词法分析程序一个小语言的词法分析程序
阅读(478) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~