- 1、本文档共80页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【精编完整版】C语言词法分析器和C-语言语法分析器编译原理毕业论文.doc
(此文档为w?ord格式?,下载后您可?任意编辑修?改!)
《编译原理课?程设计》课程报告
题目 C语言词法?分析器和C?-语言语法分?析器
学生姓名
学生学号
指导教师
提交报告时?间 2019 年 6 月 8 日
C语言词法?分析器FA的过程?
2 词法特点及?正则表达式?
2.1词法特点?
2.1.1 保留字
AUTO, BREAK? , CASE , CHAR , CONST? ,
CONTI?NUE , DEFAU?LT , DO , DOUBL?E , ELSE,
ENUM , EXTER?N , FLOAT? , FOR , GOTO,
IF , INT , LONG , REGIS?TER , RETUR?N,
SHORT? , SIGNE?D , SIZEO?F , STATI?C , STRUC?T ,
SWITC?H , TYPED?EF , UNION? , UNSIG?NED , VOID,
VOLAT?ILE , WHILE?,
2.1.2 符号
+ - * ++ -- += -= *= = = == != = ; , ( ) [ ] { } * * :
2.2 正则表达式?
white?space? = (newli?ne|blank?|tab|comme?nt)+
digit?=0|..|9
nat=digit?+
signe?dNat=(+|-)?nat
NUM=signe?dNat(“.”nat)?
lette?r = a|..|z|A|..|Z
ID = lette?r(lette?r|digit?|“_”)+
CHAR = other?+ STRIN?G = “other?+”
3 Token?定义
3.1 token?类型
保留字 auto break? case char const?
conti?nue defau?lt do doubl?e else
enum exter?n float? for goto
if int long redis?ter retur?n
short? signe?d sizeo?f stati?c struc?t
switc?h typed?ef union? unsig?ned void
volat?ile while? 特殊符号 + - * ++ -- += -= *= = = == != = ; , ( ) [ ] { } * * : 文件结束、错误 EOF ERROR? 其它tok?en NUM ID CHARA?CTER STRIN?G
3.2 token?Type类?型代码
4 DFA设计?
4.1 注释的DF?A设计
注释的DF?A如下所示?,一共分为5?个状态,在开始状态?1时,如果输入的?字符为,
则 进入状态2?,此时有可能?进入注释状?态,如果在状态?2时,输入的字符?为*,则进入注释?状态,状态将转到?3,如果在状态?3时,输入的字符?为*,则有可能结?束注释状态?,此时状态将?转到状态4?,如果在状态?4时输入的?字符为,则注释状态?结束,状态转移到?结束 状态。
4.2 词法分析的?DFA设计?
词法分析的?DFA如下?所示,一共分为1?0个状态:START?、INNUM?、INNUM?1、INNUM?2、INID、INCOM?PARE、INOPE?RATE、INSTR?ING、INCHA?R、DONE。状态STA?RT表示开?始状态,状态INN?UM,INNUM?1,INNUM?2表示数字?类型(NUM)Token?的状态,状态INI?D表示标示?符(ID)类型Tok?en的状态?,状态INO?PERAT?E表示
文档评论(0)