2009级_编译原理期末复习

2009级_编译原理期末复习

ID:15218462

大小:72.50 KB

页数:3页

时间:2018-08-02

2009级_编译原理期末复习_第1页
2009级_编译原理期末复习_第2页
2009级_编译原理期末复习_第3页
资源描述:

《2009级_编译原理期末复习》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、1.第一章概述,结合书中例子了解词法分析、语法分析、语义分析、中间代码生成、符号表管理、错误诊断和报告等基本概念。例:position=initial+rate*60的翻译(假定变量都是实型)(详见课件chapter1)2.要求能写出给定正规式对应的NFA要求能把NFA确定化要求能把把DFA化简(例见RE_NFA_DFA.doc)了解词法分析器的生成器LEX的基本原理(见图2.21)Lex编译器Lex源程序lex.llex.yy.cC编译器lex.yy.ca.outa.out输入流记号序列图2.21用Lex建立词法分析器3.掌握自顶向下

2、分析、了解自底向上分析,LL(1)文法,LR分析的相关概念。4.结合书中第55页,给定LL(1)文法,要求能写出相应的递归下降分析程序。5.能根据所给First和Follow集(了解First集和Follow集的含义),求出文法的非递归预测分析表。掌握如何由预测分析表来进行语法分析。(详见例3.13,例3.12,P56算法3.1)6.能根据所给LR分析表,进行语法分析。(详见例3.22)7.了解语法分析器的生成器Yacc的基本原理(见图3.23)Yacc编译器Yacc规范translately.yy.tab.cC编译器y.tab.ca.

3、outa.out输入输出图3.23用Yacc建立翻译器8.掌握运行时内存空间的划分(见图6.6),函数调用及栈式存储分配的基本思想。代码静态区堆空闲内存栈图6.631.结合实验,掌握表达式、声明语句、赋值语句、if语句和while语句的翻译。结合myc源代码,了解函数调用的翻译。熟悉短路运算的原理。(详见简单C编译器.ppt)//expression3voidstatement(){if(token.type==IF){returnifStatement();}elseif(token.type==WHILE){returnwhileS

4、tatement();}elseif(token.type==ID){assignStatement();}elseif(token.type==LB){returncompoundStatement();}elseif(token.type==PRINTF){returnprintfStatement();}else{printf("%d",token.type);syntaxError("illegalheaderofastatement");}}//if语句voidifStatement(){match(IF);match(L

5、P);ExprNodenode=expr();gen("JTRUE",InsJtrue,node.addr,0,csIndex+2);intmarkFalse=csIndex;gen("JMP",InsJmp,0,0,-1);match(RP);statement();intmarkTrue=csIndex;if(token.type==ELSE){match(ELSE);gen("JMP",InsJmp,0,0,-1);cs[markFalse].result=csIndex;statement();}cs[markTrue].res

6、ult=csIndex;}//while语句voidwhileStatement(){match(WHILE);match(LP);ExprNodenode=expr();intwhile_begin=csIndex;gen("JTRUE",InsJtrue,node.addr,0,csIndex+2);intmark=csIndex;gen("JMP",InsJmp,0,0,-1);match(RP);statement();gen("JMP",InsJmp,0,0,while_begin);3cs[mark].result=csIn

7、dex;}//赋值语句voidassignStatement(){intindex=lookup(token.id);intaddress=0;if(index==0){syntaxError("undeclaredvariable.");}else{address=table.entries[index].address;}match(ID);match(ASSIGN);ExprNodenode=expr();gen("MOV",InsMov,address,node.addr,0);decrementIfTemp(node);mat

8、ch(SEMICOLON);}1.熟悉C语言的编译系统(见图11.1)预处理器编译器汇编器连接器源程序修改后的源程序汇编程序可重定位的目标程序库可重定位的目标文件图11.12.掌握面向对象中“继承”(掌握单

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。