四川大学《编译原理课程设计》 学号2012141461017
PAGE \* MERGEFORMAT 64
PAGE \* MERGEFORMAT 0
《编译原理课程设计》课程报告
题目 C语言词法分析器和C-语言语法分析器
学生姓名 学生学号 指导教师
提交报告时间 2019 年 6 月 8 日C语言词法分析器1 实验目的及意义熟悉C语言词法掌握构造DFA的过程掌握利用DFA实现C语言的词法分析器理解编译器词法分析的工作原理
2 词法特点及正则表达式2.1词法特点2.1.1 保留字AUTO, BREAK , CASE , CHAR , CONST , CONTINUE , DEFAULT , DO , DOUBLE , ELSE, ENUM , EXTERN , FLOAT , FOR , GOTO, IF , INT , LONG , REGISTER , RETURN, SHORT , SIGNED , SIZEOF , STATIC , STRUCT , SWITCH , TYPEDEF , UNION , UNSIGNED , VOID, VOLATILE , WHILE,2.1.2 符号 + - * ++ -- += -= *= < <= > >= == != = ; , ( ) [ ] { } * * : 2.2 正则表达式 whitespace = (newline|blank|tab|comment)+ digit=0|..|9 nat=digit+ signedNat=(+|-)?nat NUM=signedNat(“.”nat)? letter = a|..|z|A|..|Z ID = letter(letter|digit|“_”)+ CHAR = 'other+' STRING = “other+”3 Token定义3.1 token类型保留字auto break case char const continue default do double elseenum extern float for gotoif int long redisterreturnshort signed sizeof static struct switch typedef union unsignedvoid volatile while特殊符号+ - * ++ -- += -= *= < <= > >= == != = ; , ( ) [ ] { } * * :文件结束、错误EOF ERROR其它tokenNUM ID CHARACTER STRINGtypedef enum{ //错误、结束 ENDFILE,ERROR, //保留字 AUTO,BREAK,CASE,CHAR,CONST,CONTINUE ,DEFAULT , DO ,DOUBLE, ELSE, ENUM, EXTERN , FLOAT ,FOR , GOTO,IF, INT, LONG,REGISTER , RETURN, SHORT, SIGNED ,SIZEOF ,STATIC, STRUCT ,SWITCH, TYPEDEF ,UNION, UNSIGNED , VOID,VOLATILE , WHILE, //其他token I