此表叫作保留字表)。当转换图识别出一个标识符时,就去查对这张表,确定它是否为一个关键字。再次,如果关键字、标识符和常数之间没有确定的运算符或界符作间隔,则必须至少用一个空白符作间隔(此时,空白符不再是完全没有意义的了)。例如,一个条件语句应写为
IFi0i1而绝对不要写成
IFi0i1因为对于后者,我们的分析器将无条件地将IFI看成一个标识符。
f精选
24详细设计
状态转换图2
词法分析器的流程图3
f精选
开始
输入源文件路径
否路径是否有
效是打开源文件
初始化文件指针
识别指针内容
文件结束?
是
结束
否
是空格,空白或换行吗
否
是字母吗
否
是数字吗否
是界符吗
否
将字符加入字符数组Word
是跳过该字符
指向下一字符
是
将字符加入字符数组Word
将字符加入字符数组Word
指向下一字符
是字母惑数字吗
是指向下一字符是
识别指针内容
是
将字符加入字符数组Word
输出word为界符
将字符加入字符数组Word
输出Word内容为不可识别
回退
否
将word与关键
是数字吗
字表key进行匹
配
否
输出word为普通标示符
否
匹配?
是
输出word为关键字
输出word为常数
指向下一字符
f精选
25测试数据与结果
26心得体会
设计该词法分析器的过程中虽然没有实际将所有的状态转移表建立出来,但是所用的思想是根据状态转移表实现对单词的识别。首先构造一个保留字表然后每输入一个字符就检测
f精选
应该进入什么状态并将该字符连接到d串后继续输入如此循环最后根据所在的接受状态以及保留字表识别单词
3简单语法分析器设计与实现31基础理论说明
在计算机科学和语言学中,语法分析(英:Sy
tactica
alysis,也叫Parsi
g)是根据某种给定的形式文法对由单词序列(如英语单词序列)构成的输入文本进行分析并确定其语法结构的一种过程。
语法分析器(Parser)通常是作为编译器或解释器的组件出现的,它的作用是进行语法检查、并构建由输入的单词组成的数据结构(一般是语法分析树、抽象语法树等层次化的数据结构)。语法分析器通常使用一个独立的词法分析器从输入字符流中分离出一个个的“单词”,并将单词流作为其输入。实际开发中,语法分析器可以手工编写,也可以使用工具(半)自动生成。
32需求分析
语法分析是编译过程的核心部分。它的任务是在词法分析识别出单词符号串的基础上,分析并判定程序的语法结构是否符合语法规则。语法分析器的工作本质上是按文法的产生式,识别输入串是否是一个句子。自上而下分析法的主旨r