用C++编写一个词法分析器

文法如下:
<程序>PROGRAM<标识符>’(’<标识符>{, <标识符>}’)’;<分程序>.
<分程序>〔<常数说明>〕〔<变量说明>〕BEGIN<语句>{; <语句>}END
<常数说明>CONST<常量标识符>=<常量>{; <常量标识符>=<常量>};
<变量说明>VAR<变量标识符>{,<变量标识符>}:<类型>{; <变量标识符>{,<变量标识符>}:<类型>};
<类型><简单类型>|ARRAY’〔’<无符号整数>..<无符号整数>’〕’OF <简单类型>
<简单类型>REAL|INTEGER|CHAR|BOOLEAN
<语句><赋值语句>|<I/O语句>|<空语句>|<复合语句>|<条件语句>|<FOR语句>|<WHILE语句>
<赋值语句><变量>:=<表达式>
<I/O语句><读语句>|<写语句>
<读语句>READ’(’ <变量标识符>{,<变量标识符>}’)’|READLN〔’(’ <变量标识符>{,<变量标识符>}’)’ 〕
<写语句>WRITE’(’ <表达式>{,<简单表达式>}’)’|WRITELN〔’(’ <表达式>{,<表达式>}’)’ 〕
<空语句>ε
<复合语句>BEGIN<语句>{;<语句>}END
<条件语句>IF<布尔表达式>THEN<语句>〔ELSE<语句>〕
<FOR语句>FOR<变量标识符>:=<算术表达式>(TO|DOWNTO)<算术表达式>DO<语句>
<WHILE语句>WHILE<布尔表达式>DO<语句>
<表达式>-><算术表达式>|<布尔表达式>
<算术表达式>-><项>[(+|-)<项>]
<项>-><因子>[(*|/|DIV|MOD)<因子>]
<因子>-><无符号整数>|<变量标识符>|’(‘<算术表达式>’)’
<关系表达式>->TRUE | FALSE | <算术表达式> <关系运算符> <算术表达式>
<关系运算符><|<= |= |<>|>= |>
<常量><数值常量>|<字符串常量>
<数值常量>(ε|+|-)(<常量标识符>|<无符号数>)
<字符串常量>’{<字符>}’
<字符><字母>|<数字>|+|-|*|/|(|)|=|:|;|,|.|<|>|[|]
<无符号数><无符号整数>[.<数字>{<数字>}][E(ε|+|-)<无符号整数>]
<无符号整数><数字>{<数字>}
<变量标识符><标识符>
<常量标识符><标识符>
<标识符><字母>{<字母>|<数字>}
<字母><大写字母>|<小写字母>
<大写字母> A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z
<小写字母> a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z
<数字>0|1|2|3|4|5|6|7|8|9
根据上述文法 编写词法分析器

记得大学时开《编译原理》时做过类似的实验程序,现在都忘光了。帮顶!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-06-04
词法分析器我还给老师了,忘光了。
第2个回答  2008-06-04
相似回答