求编译原理-词法分析程序源程序,想了好久了,无法解决
题目如下:
<标识符>::=<字母>|<标识符><字母>|<标识符><字母><数字>
<无符号数>::=<数字>|<无符号数><数字>
<字母>::=A|B|…….|Z|a|b|……… y|z
<数字>::=0|1|…..|9
<关系运算符>::= =|<|>|<=|>=|<>
<算术运算符>::=+|-|*|/|**|(|)
<赋值好>::= :=
<语句隔符>::= ;
空格和回车符可作为单词分隔符
关键字:"Begin","char","else","do","end","if","int","for","procedure",
"real","type","var","while"
阅读源程序(文件file1.txt),识别单词,若有合法单词则生成二元组(种别码,值)
输出(至数组或文件)。若有非法单词则在单词位置处给出错误标记
例:if x2<>y3 then A1:=x*4 else A2:=x**5;
都是 合法单词,生成二个表格:名字表和常数表。输出二元数组如下:
常数表
0 4
1 5
2 :
3 :
:
名字表
0 X1
1 Y3
2 A1
3 A2
: :
输出代码
0 $if
1 $id
2 $then
3 $else
: :
若有错误发生,则输出源程序下面对应位置上作标记:
If x{2}<>y_3 then a=x*4 ;
^ ^ ^ ^
望解答,谢谢