编译原理_词法分析器实验报告.docVIP

  • 14
  • 0
  • 约7.81千字
  • 约 8页
  • 2018-01-02 发布于河南
  • 举报
编译原理_词法分析器实验报告

实验题目和要求。 题目:设计PL / 0语言的词法分析器。 要求: 单词(关键字); begin end if then else while write read do call const var procedure repeat until 运算符:+ - * / := = (#) = = 界符: , . ; ( ) 标识符:字母打头的字母数字串,长度不超过10. 常数:整数,所含数字的个数不超过14. 返回单词形式: 二元式(种别,属性值) 实验平台。 PC机: Windows XP操作系统 编程环境: Turbo C 2.0 编程语言: C语言 实验算法说明。 定义2个全局变量char ch和char strtoken分别用来存放最新读入的源 程序字符和构成单词符号的字符串。然后用各个子函数的功能和读文件内容的操作,实现对源程序的词法分析,分别进行关键字,标识符,常数,运算符和界符的分析确认,然后将对应的二元式结果输出。 首先用户输入要读文件的名称,然后程序会把文件的内容读到定义的够大的字符数组str(相当于词法分析的一个缓冲区)里,然后开始从str里一个一个的读出字符并放在专门用来暂时存放单词数组strtoken里进行词法分析,若符合语言的规则,则打印出相关的说明信息,即该字符或字符串的二元式信息,可以清楚的明白该字符的种别和属性值。如果读入的字符或字符串是非法的,即不是语法规定或是没有意义的字符或字符串,程序会提示相关的错误信息并进行一定的说明。 程序子函数功能说明。 1. void getChar( ) 将下一个输入字符读到ch中,搜索指示器前移一个字符的位置。 2. void getBc( ) 检查ch中的字符是否为空白,若是,则调用getChar( ),直到ch中进入一个非空的字符。 3. void retract( ) 将搜索指示器回调一个字符位置,将ch置为空白字符。 4. void concat( ) 将ch中的字符连接到strtoken之后。 5.int Isletter( ) 子函数过程,判断ch中的字符是否为字母。 6.int Isdigit( ) 子函数过程,判断ch中的字符是否为数字。 7. int Iskey_ch( ) 子函数过程,判断strtoken中的字符串是否为程序设计语言的关键字,若是,打印并返回它的二元式。 8. void Isident( ) 子函数过程,判断strtoken中的字符串是否为程序设计语言规定的标识符。 9. void empty( ) 将strtoken字符数组置空,然后接收下一个字符并分析。 10. void Isnum( ) 子函数过程,判断strtoken中的字符串是否为数字串常量, 若是,打印并返回它的二元式。 11. void error( ) 子函数过程,判断ch中的字符是否为非法字符,若是,则打印该非法字符并提示。 12. int Isjiefu( ) 子函数过程,判断strtoken中的字符串是否为程序设计语言语法规定的界符。 13. int Issuanfu( ) 子函数过程,判断strtoken中的字符串是否为程序设计语言语法规定的运算符号。 14. void readfile( ) 子函数过程,用户输入要分析的文件名,然后读文件操作,把文件内容读入到字符数组。 程序源代码(C语言): #include stdio.h #include conio.h #include stdlib.h typedef char CH1[15]; typedef char CH2[2]; typedef char NUM[25]; CH1 key_ch[15]={begin,end,if,then,else,while,write,read, do,call,const,var,procedure,repeat,until}; CH1 Id[15]={}; //定义数组,存放读出的标识符 NUM num[20]; //定义数组,存放读出的常数 CH2 key1[12]={+,-,*,/,:=,=,,=,,=,,#}; CH1 key1name[12]={Add,Subtract,Multiple,Devide,Evaluate, Equal,Smaller,Small_equal,Bigger,Bigger_equal, Not_equal,Not_equal}; char key2[5]={,,.,;,(,)}; CH1 key2name[5]={Comma,Period,Semicolon,Lparenthesis, Rparenthesis}; char ch

文档评论(0)

1亿VIP精品文档

相关文档