《编译原理课程设计》课程报告
题目
C语言词法分析器和C语言语法分析器
学生姓名
学生学号
指导教师提交报告时间
2019年6月8日
fC语言词法分析器
1实验目的及意义
1熟悉C语言词法2掌握构造DFA的过程3掌握利用DFA实现C语言的词法分析器4理解编译器词法分析的工作原理
2词法特点及正则表达式
21词法特点
211保留字
AUTO
BREAK
CASE
CHAR
CONST
CONTINUEDEFAULTDO
DOUBLEELSE
ENUMEXTERNFLOATFORGOTO
IFINT
LONGREGISTERRETURN
SHORTSIGNEDSIZEOFSTATICSTRUCT
SWITCHTYPEDEFUNIONUNSIGNEDVOID
VOLATILEWHILE
212符号
22正则表达式
whitespace
ewli
ebla
ktabcomme
t
digit09
atdigit
sig
edNat
at
NUMsig
edNat“”
at
letterazAZ
IDletterletterdigit“_”
CHARotherSTRING“other”
3Toke
定义
31toke
类型
第1页
f保留字
autoco
ti
uee
umifshortswitchvolatile
breakdefaultexter
i
tsig
edtypedefwhile
casedofloatlo
gsizeofu
io
char
co
st
doubleelse
for
goto
redisterretur
staticstruct
u
sig
edvoid
特殊符号
文件结束、错误EOFERROR
其它toke
NUMIDCHARACTERSTRING
32toke
Type类型代码
typedefe
um
错误、结束ENDFILEERROR保留字AUTOBREAKCASECHARCONSTCONTINUEDEFAULTDODOUBLEELSEENUMEXTERNFLOATFORGOTOIFINTLONGREGISTERRETURNSHORTSIGNEDSIZEOFSTATICSTRUCTSWITCHTYPEDEFUNIONUNSIGNEDVOIDVOLATILEWHILE其他toke
IDNUMCHARACTERSTRING特殊符号、、、、、、、、、、、、、、、、、、、、、、、、、、PLUSMINUSTIMESOVERSELFPLUSSELFMINUSPLUSASSIGNMINUSASSIGNTIMESASSIGNLTLEQGTGEQEQNEQASSIGNSEMICOMMALPARENMINUSASSIGNTIMESASSIGNLTLEQGTGEQEQNEQASSIGNSEMICOMMALPARENRPARENLBRACKETRBRACKETLCBRACKETRCBRACKETLCOMMENTRCOMMENTCOLONToke
Type
4DFA设计
41注释的DFA设计
注释的DFA如下所示,一共分为5个状态,在开始状态1时,如果输入的字符为则进入状态2,此时有可能进入注释状态,如果在状态2时,输入的字符为,则进入注释
第2页
f状态,状态将转到3,如果在状态3时,输入的字符为,则有可能结束注释状态,此时状态将转到状态4,如果在状态4时输入的字符为,则注释状态结束,状态转移到结束状态。
42词法分析的DFA设计
词法分析的DFA如下所示,一共分为10个状态:START、INNUM、INNUM1、INNUM2、INID、INCOMPARE、INOPERATE、INSTRING、INCHAR、DONE。状态START表示开始状态,状态INNUM,INNUM1,INNUM2表示数字类型(NUM)Toke
的状态,状态INID表r