资源描述:
《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.掌握自顶向下分析、了解自底向上分析,LL
2、(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.outa.out输入输出图3.23用Yacc建立翻译器8
3、.掌握运行时内存空间的划分(见图6.6),函数调用及栈式存储分配的基本思想。代码静态区堆空闲内存栈图6.631.结合实验,掌握表达式、声明语句、赋值语句、if语句和while语句的翻译。结合myc源代码,了解函数调用的翻译。熟悉短路运算的原理。(详见简单C编译器.ppt)//expression3voidstatement(){if(token.type==IF){returnifStatement();}elseif(token.type==WHILE){returnwhileStatement();}elseif(token.type==ID){assignS
4、tatement();}elseif(token.type==LB){returncompoundStatement();}elseif(token.type==PRINTF){returnprintfStatement();}else{printf("%d",token.type);syntaxError("illegalheaderofastatement");}}//if语句voidifStatement(){match(IF);match(LP);ExprNodenode=expr();gen("JTRUE",InsJtrue,node.addr,0,
5、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].result=csIndex;}//while语句voidwhileStatement(){match(WHILE);match(LP);Expr
6、Nodenode=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=csIndex;}//赋值语句voidassignStatement(){intindex=lookup(token.id);intaddress=0;if(index==0)
7、{syntaxError("undeclaredvariable.");}else{address=table.entries[index].address;}match(ID);match(ASSIGN);ExprNodenode=expr();gen("MOV",InsMov,address,node.addr,0);decrementIfTemp(node);match(SEMICOLON);}1.熟悉C语言的编译系统(见图11.1)预处理器编译器汇编器连接器源程序修改后的源程序汇编程序可重定位的目标程序库可重定位的目标文件图11.12.掌握面向对象中“继承
8、”(掌握单