《编译原理课程设计》课程报告
题目 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
其它token
NUM ID CHARACTER STRING
typedef
typedef 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
ID,NUM,CHARACTER,STRING,
//特殊符号
//+、-、*、/、++、--、+=、-=、*=、、>=、==、!=、=、;、,、(、)、[、]、//{、}、/*、*/、:
PLUS,MINUS,TIMES,OV