一. 实验题目和要求
题目:设计 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 里进行词法分析,若符合语言的规则,则打印出相关的说明信息,即该字符或字符串的二元式信息,可以清楚的明白该字符的种别和属性值
如果读入的字符或字符串是 非 法的,即不是 语法规定或是 没 有 意 义的字符或字符串,程序会提 示 相关的错 误 信息并进行一定的说明
四 . 程序子函数功能说明
void getChar( ) 将下 一个输入字符读到 ch 中 ,搜 索 指 示 器前 移 一个字符的位 置
void getBc( ) 检 查ch 中 的字符是 否 为 空 白,若是 ,则调 用