hsymbolcaseDIGITpp10dbreakdefaultFCONwpow10ep
Class2Curre
tStateE
dStatebreakretur
Curre
tStatei
tLEXFILEp
fi
tchCurre
tState0whileCurre
tStateE
dStatechGetCharpEXCUTECurre
tStatechretur
Class
5八进制与十六进制数的处理
在无符号数的处理过程中没有设计八进制与十六进制数转换成十进制的数,但为了方面以后的使用我们进入进制的转换。设计思路:判断八进制是以0开头,十六进制为0X开头,并且判断后面所跟数字是否超出八进制或十六进制的范围,若超出则错误,如不超出则用8或16转换为相应十进制数字再次读入写个字符循环,直到数字结束。
程序3单词分类码为八进制的无符号数的识别程序
doubleoctalcharTPi
txy1ypoi
t0计数ypoi
t1记录有小数点y记录是第几位小数
i
tm0doubleFINALL00放结果
whileTP0
ifTP
ypoi
t1
else
xTP0
ifypoi
t1
FINALLFINALL8x
ifypoi
t1
FINALLFINALLxpow8y
y
TP
retur
FINALL
ff程序4单词分类码为十六进制的无符号数的识别程序doublehexcharTP
i
txy1ypoi
t0计数ypoi
t1记录有小数点y记录是第几位小数i
tm0doubleFINALL00放结果whileTP0
ifTPypoi
t1
else
ifypoi
t1ifTP0TP9xTP0elseifTPaTPfxTPa1elseifTPATPFxTPa1FINALLFINALL16x
ifypoi
t1
ifTP0TP9xTP0
elseifTPaTPf
xTPa1elseifTPATPF
xTPa1FINALLFINALLxpow16yyTPretur
FINALL
f2、语法分析程序设计与实现语法分析,采用的是算符优先文法实现;重点与难点为根据文法求出FirstVt与LastVt集合,构造出算符表。语法分析程序的输入结构为词法分析的输出结果。数字的标志位都设为i如(i,258);运算符的标志位为其本身如(,)其他符号暂不计算,以方便语法分析程序的编写。
算符优先总流程图图2
开始
初始化FIRSTVT集和LASTVT集
输入文法规则和数目
N是否为文法
Y求出文法终结符集
输出非终结符FIRSTVT集和LASTVT集
生成并输出算法分析表
输入需要验证的字符串,以结束
输出结果
输出结果
结束
f1)判断是否为算符文法
程序5
judge1是判断是否是算符文法:若产生式中含有两个相继的非终结符则不是算符文法i
tjudge1i
t
i
tj3flag0fori
ti0i
i
whilestrij0
charastrijcharbstrij1ifIsLetteraIsLetterb
flag1breakelsejifflag1retur
0elseretur
1
结果:输入文件
输入结果
f2)判断是否为算符优先文法
程序5
judge2是判断文法G是否为r