随笔分类 - 编译原理
摘要:中间代码生成器一、实验目的掌握中间代码生成器的构造原理和编程方法。二、实验内容用自顶向下方法或Yacc进行语法分析的基础上,编写一个中间代码生成程序。(见教材附录 A.1,p394)program → blockblock → { decls stmts }decls → decls decl | edecl → type id ;type → type [num] //数组可以不做| basic //四种基本数据类型 int | float | char | boolstmts → stmts stmt | e stmt → id=...
阅读全文
摘要:用Yacc实现语法分析器一、实验目的掌握语法分析器的构造原理,掌握Yacc的编程方法。二、实验内容用Yacc编写一个语法分析程序,使之与词法分析器结合,能够根据语言的上下文无关文法,识别输入的单词序列是否文法的句子。program → blockblock → { stmts }stmts → stmt stmts | e stmt → id= expr ; | if ( bool ) stmt | if ( bool) stmt else stmt| while (bool) stmt | do stmt while (bool ) ;| break ;| blockbool →...
阅读全文
摘要:递归下降法的语法分析器一、实验目的掌握语法分析器的构造原理,掌握递归下降法的编程方法。二、实验内容用递归下降法编写一个语法分析程序,使之与词法分析器结合,能够根据语言的上下文无关文法,识别输入的单词序列是否文法的句子。(注意,需要改写文法,消除左递归等)为减轻实验编程负担,这里只要求实现部分产生式,文法的开始符号为program。(完整的源语言的文法定义见教材附录 A.1,p394)program → blockblock → { stmts }stmts → stmt stmts | e stmt → id= expr ; | if ( bool ) stmt | if ( boo...
阅读全文
摘要:递归下降法的语法分析器一、实验目的掌握语法分析器的构造原理,掌握递归下降法的编程方法。二、实验内容用递归下降法编写一个语法分析程序,使之与词法分析器结合,能够根据语言的上下文无关文法,识别输入的单词序列是否文法的句子。(注意,需要改写文法,消除左递归等)program → blockblock → { stmts }stmts → stmt stmts | e stmt → id= expr ; | if ( bool ) stmt | if ( bool) stmt else stmt| while (bool) stmt | do stmt while (bool ) ;| b...
阅读全文
摘要:词法分析器一、实验目的掌握词法分析器的构造原理,掌握手工编程或LEX编程方法之一。二、实验内容编写一个LEX源程序,使之生成一个词法分析器,能够输入的源程序转换为单词序列输出。三、实验指南1.可以采用手工或LEX开发工具,采用VC环境。2.源语言定义见教材附录 A.1,其中的终结符即词法分析需要得到的tokens。(1)该语言的关键字:if while do break real true false int char bool float (其中,int、char、bool、float在产生式中为basic)所有的关键字都是保留字,并且必须是小写。(2)id和num的正则表达式定义;(3)专
阅读全文
摘要:表达式翻译器一、实验目的构造一个中缀表达式到后缀表达式的翻译器,初步了解递归下降语法分析原理及语法制导翻译的过程。1实现的功能:数字相加(包括多位数字),与字母相加(包括多字母),乘除,加减有优先级顺序的翻译.编程使用的语言:涉及的算法:词法分析 左递归下降法2.结果显示: 3.关键代码:词法分析:View Code int isdigit(int t){ if(t>='0'&&t<='9') return 1; else return 0;}int ischar(int t){ if(t>=...
阅读全文

浙公网安备 33010602011771号