实验二:消除文法左递归
实验日期:2012427教师签字:
成绩:
实验名称:由正规文法构造正规式
实验目的:
一掌握上下文无关文法类型的定义,及与其他类型文法的区
别;
二熟悉上下文无关文法类型的判断,能够快速按照要求写出
对应文法类型的文法用例;
三给出一个上下文无关文法类型,能够正确判断其是否存在
左递归,若存在则消除直接、间接左递归。
实验内容:
运行结果:
1消除直接左递归:
f2消除间接左递归:
程序代码:
Copyrightc2012PartofElimi
atio
ofLeftRecursio
File
ame
killzdgcpp
Author
Ya
gxia
gyu
Sid
E10914012
Descriptio
20120425
i
cludeiostream
fi
cludecstdioi
cludemapi
cludestri
gi
cludevectori
cludealgorithmdefi
e_CLRamemseta0sizeofausi
g
amespacestdclassgrammarprivate
typedefu
sig
edcharuchartypedefmultimapucharstri
giteratorMMAPItypedefpairi
tstri
gMMAPEtypedefmapi
tuchariteratorMAPItypedefpairMMAPIMMAPIMMAPRa
geprivatemultimapucharstri
gproductio
keyisthe
o
termi
almapuchari
tsymbolidxmapi
tucharsymboltablemapucharboolsymbolmarki
tsymb
umi
tge
i
t
fvoidaddSymboluchar_c
ifsymbolidx_c0retur
symb
umsymbolidx_csymb
umsymboltablesymb
um_csymbolmark_cfalseucharge
Symbolge
i
taddSymbolge
i
tretur
ge
i
tboolelimi
atProductio
ucharkeyboolmarkfalseforMMAPIsproductio
lower_bou
dkeysproductio
upper_bou
dkeys
ifsseco
d0key
fmarktruebreakifmarkretur
falseucharge
keyge
Symbolproductio
i
sertMMAPEge
key