一个小语言的词法分析程序
作者:loyalzu
下载本文示例代码
前些天写了个小语言的词法分析程序,因为前些天在VC知识库看到一个pascal词法分析的程序,觉得写得挺复杂的。其实词法分析程序的原理都是一样的,所以我想只要搞明白了简单的词法分析程序,再写复杂的就不难了,无非是多加几个关键字,多写几个条件判断语句而已。词法分析是编译程序的基础,也是最简单的。好,现在让我们看程序吧。
先让我们看看这个小语言的文法吧。
G[<程序]:
<程序∷=<程序首部;<分程序.
<程序首部∷=program<标识符
<分程序∷=<复合语句
<复合语句∷=begin<语句序列end
<语句序列∷=<语句{;<语句}
<语句∷=<赋值语句|<复合语句|<条件语句
<赋值语句∷=<标识符:=<表达式
<条件语句∷=if <布尔表达式 then <语句 else <语句
<表达式∷=<项{(+|-)<项}
<项∷=<因式{(*|/)<因式}
<因式∷=<标识符|<无正负号常量|’(’<表达式’)’
<布尔表达式∷=<表达式<关系运算符<表达式
<关系运算符∷= =|<|<=||=|<
<标识符∷=<字母{<字母|<数字}
<无正负号常量∷=<数字{<数字}[.<数字{<数字}]
<字母∷=a|b|c|d|e|f|g|……|u|v|w|x|y|z
<数字∷=0|1|2|3|4|5|6|7|8|9
根据此文法,构造一词法分析程序。输入以“#”为结束符
按照这个文法,找出该语言的关键字,如program,begin,end ,if,then,else,以及其他一些特殊符号,然后再构造一个分析表,如下表: