全球旧事资料 分类
CDDDDFLOATCDDDDDEeλDOPADDOPSUBOPMULOPDIVLPAREN‘’RPAREN‘’LINE‘
’ASSIGN
正则表达式把能够把各词法元素的格式用形式化的方法表示出来,是格式的判断能够用程序来完成,但最终写程序时,用正则表达式直接分析对人来说仍然是不太直接,不方便,所以把正则表达式转化为有限自动机,以是写程序实现词法分析方便。如图11为四则混合运算的有限自动机。
7
fD
1EeEe
INTC
5D
D0

D
2
4
D
6
D
D
FLOATC
FLOATC
3789101112‘
’1314ASSIGNLINERPARENLPARENOPDIVOPSUBOPADD
OPMUL
图21四则混合运算的有限自动机
22语法分析四则混合运算算术表达式符合SLR1文法但不符合LR0文法,所以语法分析采用SLR1语法分析方法。四则混合运算算术表达式的产生式如下:
8
f01SE02ET03EEOPADDT04EEOPSUBT05TP06TTOPMULP07TTOPDIVP08PINTC09PFLOATC10PLPARENERPAREN
通过文法的产生式可以把四则混合运算算术表达式的文法中各个非终极符的FIRST集合和FOLLOW集合一一求出来,以便进行下一步分析。其FIRST集和FOLLOW
集如表11所示:
表21四则混合运算算术表达式文法中非终极符的FIRST集和FOLLOW集
符号SET
FIRST集合INTCFLOATCLPARENINTCFLOATCLPARENINTCFLOATCLPARENASSIGN
FOLLOW集合
ASSIGNOPADDOPSUBRPARENASSIGNOPADDOPSUBRPARENOPMULOPDIV
P
INTCFLOATCLPAREN
ASSIGNOPADDOPSUBRPARENOPMULOPDIV
根据文法的产生式和FIRST集、FOLLOW集即可确定文法的规约活前缀DFA(SLR1_DFA),如图12所示。
9
f0SEETEEOPADDTSEEEOPADDTEEOPSUBTASSIGNOPADDOPSUBR1S7S8
1
EEOPSUBTTPTTOPMULPTTOPDIVPPINTCPFLOATCPLPARENETPINTCFLOATCLPARENS1S2S3S4S5S6ERPAREN
2ETTTOPMULPTTOPDIVPASSIGNOPADDOPSUBRPARENOPMULOPDIV3R2R2R2R2S9S10
TPASSIGNOPADDOPSUBRPARENOPMULOPDIVR5R5R5R5R5R5PINTCASSIGNOPADDOPSUBRPARENOPMULOPDIV5PFLOATCASSIGNOPADDOPSUBRPARENOPMULOPDIVR9R9R9R9R9R9R8R8R8R8R8R8
4
6PLPARENERPARENETEEOPADDT
EEOPSUBTTPTTOPMULP7TTOPDIVPPINTCPFLOATCPLPARENETPERPARENINTCFLOATCLPARENS11S2S3S4S5S6ERPAREN
EEOPADDTTPTTOPMULPTTOPDIVPPINTCPFLOATCPLPARENTPINTCFLOATCLPARENS12S3S4S5S6
1
f8EEOPSUBTTPTTOPMULPTTOPDIVPPINTCPFLOATCPLPARENTPIr
好听全球资料 返回顶部