编译原理课程设计-词法分析器设计(C语言)

来源:百度知道 编辑:UC知道 时间:2024/05/06 20:43:18
实验任务:完成下述文法所描述的单词符号的词法分析程序。
<标识符>--><字母>|<标识符><字母>|<标识符><数字>
<无符号整数>--><数字>|<无符号整数><数字>
<分界符>-->+|-|*|/|;|(|)|{|}|<|<=|=|!=|>=|>|:=|<空格>
<字母>-->a|…|z|A|…|Z
<数字>-->0|…|9
<空格>-->’ ’
说明:
(1) 假定该语言对字母的大小写不敏感,由指定文件读入预分析的源程序,分析结果再写入指定文件;
(2) 假定语言的关键字为"begin","if","end","else","then","for","while","to","do","and","not","or","write";
程序的功能描述
从左至右扫描源程序的字符串,按照词法规则(正则文法规则)识别出一个个正确的单词,并转换成该单词相应的二元式(种别码、属性值)交给语法分析使用。
本程序规定输出用KeyWord代表关键字,Word代表普通标识符,Digit代表阿拉伯数字,SingleWord代表单分界符,DoubleWord代表双分界符,ERROR代表无法识别的字符。
例如读入下面一段程序:
if(i>1)
return 1;
else
return 0;
输出结果为:
KeyWord if
SingleWord (
Word i
SingleWord >
Digit 1
Si

#include "stdio.h"                  /*定义I/O库所用的某些宏和变量*/

#include "string.h"                 /*定义字符串库函数*/

#include "conio.h"                  /*提供有关屏幕窗口操作函数*/

#include "ctype.h"                  /*分类函数*/

char prog[80]={'\0'},

     token[8];                     /*存放构成单词符号的字符串*/

char ch;

int syn,