下载此文档

内容:选择部分C语言的语法成分,设计其词法分析程序,要求能够处理.doc


文档分类:IT计算机 | 页数:约9页 举报非法文档有奖
1/9
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/9 下载此文档
文档列表 文档介绍
编译原理实验报告
题目:词法分析器
实验内容
选择部分C语言的语法成分,设计其词法分析程序,要求能够处理注释、部分复合运算符(如++等)。
实验要求
要给出所分析语言的词法说明,相应的状态转换图,单词的种别编码方案,词法分析程序的主要算法思想等。
例C源程序待分析段:
main()
{
int A,B,C,D; /*类型说明*/
A=2; B=4; C=10; D=100;
while (A<C and B<D)
{
if (A==1) C=C-1;
else while (A<D)
{A=A+2;}
}
}
实验分析:

用C语言编写一个词法分析器,使之能够识别输入串,并把分析结果(单词符号,标识符,关键字等等)输出。输入源程序,输入单词符号,本词法分析器可以辨别关键字,标识符,常数,运算符号和某些界符,利用手工输入获取源程序代码,再核对该源程序代码进行词法分析,这就是词法分析器的基本功能,当词法分析器调用预处理子程序处理出一串输入字符放进扫描缓冲区之后,分析器就从此缓冲区中逐一识别单词符号,当缓冲区里的字符串处理完之后,它又调用预处理子程序类似处理新串。
1)实验要求及设计方案:
关键字:"if","else","for","do","while","switch","case","int","char","main"
运算符和界符:; = - + / < > { } ( ) * # , ! ++ --
其他符号:
ID = letter( letter | digit)*
NUM = digit digit*
空格由空白、制表符和换行符组成。空格ID、NUM、运算符、界符、关键字有空格隔开,但空格在分析中忽略。
2)单词符号的种别编码方案 :

单词符号
种别码
单词符号
种别码
if
1
*
15
else
2
/
16
for
3
=
17
do
4
<
18
while
5
<=
19
case
6
>
20
switch
7
>=
21
int
8
,
25
char
9
;
26
main
10
(
27
letter(letter|digit)*
11
)
28
digit digit*
12
{
29
}
30
+
13
++
36
-
14
--
35
3)程序的主要算法思想和主要函数的算法思想及流程:
算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。
词法分析主程序示意图:
三个变量:token存放单词字符串;sum存放整形单词;syn存放单词种别码
流程图:
程序代码:
#include""
#include""
#include""
#include""
char prog[120],token[8];
char ch;
int syn,p,m,n,sum;
char *rwtab[10]={"if","else","for","d

内容:选择部分C语言的语法成分,设计其词法分析程序,要求能够处理 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数9
  • 收藏数0 收藏
  • 顶次数0
  • 上传人n22x33
  • 文件大小225 KB
  • 时间2018-06-25