云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 编译原理课程设计-词法分析器(附含源代码)

编译原理课程设计-词法分析器(附含源代码)

  • 62 次阅读
  • 3 次下载
  • 2025/6/14 0:31:18

.

编译原理-词法分析器的设计

一. 设计说明及设计要求

一般来说,编译程序的整个过程可以划分为五个阶段:词法分析、语法分析、中间代码生成、优化和目标代码生成。本课程设计即为词法分析阶段。词法分析阶段是编译过程的第一个阶段。这个阶段的任务是从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词(也称单词符号或符号)。如保留字(关键字或基本字)、标志符、常数、算符和界符等等。

二. 设计中相关关键字说明

1. 基本字:也称关键字,如C语言中的 if , else , while , do ,for,case,break,

return 等。

2. 标志符:用来表示各种名字,如常量名、变量名和过程名等。 3. 常数:各种类型的常数,如12,6.88,和“ABC”等。 4. 运算符:如 + ,- , * , / ,%, < , > ,<= , >= 等。

5. 界符,如逗点,冒号,分号,括号,# ,〈〈 , 〉〉等。

三 、程序分析

词法分析是编译的第一个阶段,它的主要任务是从左到右逐个字符地对源

程序进行

扫描,产生一个个单词序列,用以语法分析。词法分析工作可以是独立的一遍,把字符流的源程序变为单词序列,输出在一个中间文件上,这个文件做为语法分析程序的输入而继续编译过程。然而,更一般的情况,常将词法分析程序设计成一个子程序,每当语法分析程序需要一个单词时,则调用该子程序。词法分析程序每得到一次调用,便从源程序文件中读入一些字符,直到识别出一个单词,或说直到下一个单词的第一个字符为止。

可编辑

.

四 、模块设计 下面是程序的流程图

五 、 程序介绍

在程序当前目录里建立一个文本文档,取名为infile.txt,所有需要分析的程序都写在此文本文档里,程序的结尾必须以“@”标志符结束。程序结果输出在同一个目录下,文件名为outfile.txt,此文件为自动生成。本程序所输出的单词符号采用以下二元式表示:(单词种别,单词自身的值)如程序输出结果 (57,\等。

程序的功能:(1) 能识别C语言中所有关键字(共32个)(单词种别分别为1 — 32 ,详情见程序代码相关部分,下同)

(2) 能识别C语言中自定义的标示符 (单词种别为 33) (3) 能识别C语言中的常数 (单词种别为0)

可编辑

.

(4) 能识别C语言中几乎所有运算符(单词种别分别为41 — 54) (5) 能识别C语言中绝大多数界符 (单词种别分别为 55 — 66) 六 、运行结果 输入文件infile.txt

运行结果(输出文件 outfile.txt) 七 、 设计体会

八、附录部分(程序代码) 单词符号 if then else while do begin end long switch case 3 4 5 6 7 8 9 10 11 12 类别编码 单词符号 float short 类别编码 21 22 单词符号 + - * / < > = := ( ) 类别单词类别编码 62 63 64 65 39 38 41 42 40 1 编码 符号 31 32 33 34 35 36 37 51 52 53 # . , : >= <= == != % 标识符 unsigned 23 continue 24 for signed void default goto sizeof 25 26 27 28 29 30 enum register typedef char 13 14 15 16 volatile auto double int 43 44 45 46 ; [ ] { 54 55 56 57 常数 2 可编辑

.

extern return union const

17 18 19 20 struct break static 47 48 49 } << >> “ 58 59 60 61 提示:文件的打开和读写函数: FILE *fp,*out; //定义文件指针 fp=fopen(\

如果打开文件\失败,则函数返回NULL,即fp=NULL,第二个参数“r”表示以只读方式打开,如果为”w”, 则以可写方式打开 调用fgetc(fp)这个函数一次从fp所指向的文件读取一个字符 char ch=fgetc(fp);

想文件写字符的函数为fprintf(FILE * fp,写进的内容)

比如下面的调用fprintf(outfile,\是把字符串“abcd”写到文件outfile的末尾,并且在后面加上了一个换行标志 文件读写完成后要用函数fclose(fp)关闭。 源代码

#include \ #include \ #include \

void analzid(FILE *output,char *p) {

int i=0;

可编辑

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

. 编译原理-词法分析器的设计 一. 设计说明及设计要求 一般来说,编译程序的整个过程可以划分为五个阶段:词法分析、语法分析、中间代码生成、优化和目标代码生成。本课程设计即为词法分析阶段。词法分析阶段是编译过程的第一个阶段。这个阶段的任务是从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词(也称单词符号或符号)。如保留字(关键字或基本字)、标志符、常数、算符和界符等等。 二. 设计中相关关键字说明 1. 基本字:也称关键字,如C语言中的 if , else , while , do ,for,case,break, return 等。 2. 标志符:用来表示各种名字

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com