怎样把c语言的源文件和html的源文件编译成一个opk文件,语言词法分析器和C语言语法分析器编译原理课程设计.doc...

语言词法分析器和C语言语法分析器编译原理课程设计

《编译原理课程设计》课程报告

题目 C语言词法分析器和C-语言语法分析器

学生姓名

学生学号

指导教师

提交报告时间 2019 年 6 月 8 日

C语言词法分析器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 STRING

3.2 tokenType类型代码

4 DFA设计

4.1 注释的DFA设计

注释的DFA如下所示,一共分为5个状态,在开始状态1时,如果输入的字符为/,

则进入状态2,此时有可能进入注释状态,如果在状态2时,输入的字符为*,则进入注释状态,状态将转到3,如果在状态3时,输入的字符为*,则有可能结束注释状态,此时状态将转到状态4,如果在状态4时输入的字符为/,则注释状态结束,状态转移到结束状态。

4.2 词法分析的DFA设计

词法分析的DFA如下所示,一共分为10个状态:START、INNUM、INNUM1、INNUM2、INID、INCOMPARE、INOPERATE、INSTRING、INCHAR、DONE。状态START表示开始状态,状态INNUM,INNUM1,INNUM2表示数字类型(NUM)Token的状态,状态INID表示标示符(ID)类型Token的状态,状态INOPERATE表示算数运算符型Token的状态,状态INOCOMPARE表示比较运算符型Token的状态,INSTRING表示字符串(STRING)类型Token的状态,INCHAR表示字符(CHAR

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值