编译原理上机实验 - 范文中心

编译原理上机实验

12/27

实验1简单的词法分析子程序

【实验目的】

● 理解词法分析在编译程序中的作用

● 初步了解和掌握词法分析程序的实现方法和技术 【实验内容】

1. 编写程序,输入一串字符,判断该字符串是否为合法标识符或合法整型常量。 2. 无符号数的算术四则运算中的各类单词的识别。

输入:由无符号数、+、-、*、/、(、)构成的算术表达式。 输出:对识别出的每一单词均单行输出。 如,输入:

8*2.5-1.0e2

则,输出:

8 * 2.5 -

1.0e2

描述无符号数的确定的、最小化的状态转换图如图1所示。其中编号1,2和6为终态,分别代表整数、小数和科学计数的识别结束状态。

图1 文法G[]的状态转换图

实验2词法分析程序设计

【实验目的】

● 理解词法分析中的正规式和自动机 ● 掌握词法分析程序的实现方法和技术 【实验内容】

某一高级程序设计语言的部分语言子集定义如下: (1)关键字:

for if then else while do (所有关键字都是小写) (2)运算符和分隔符:

+ - * / : = >= == ; ( ) #

(3)其他标识符(ID )和整型常数(NUM ),通过以下正规式定义:

ID=letter(letter|digit)* NUM=digit·digit*

(4)空格由空白、制表符和换行符组成。空格一般用来分隔ID 、NUM 、运算符、分隔符和关键字,词法分析阶段通常被忽略。 各种词法单元对应的词法记号如下:

编写程序,实现词法分析功能。 输入:源程序

输出:二元组(词法记号,属性值/其在符号表中的位置)构成的序列。 例如:输入源程序

x=5;

if (x>0)then

x=2*x+1/3; else

x=2/x; #

(# 表示输入结束)

经词法分析后输出如下序列:

(10,x) (18,=) (11,5) (26,;) (2,if) (27,()

说明:关键字表的初值。

关键字作为特殊标识符处理,把它们预先安排在一张表格中(称为关键字表),当扫描程序识别出标识符,查关键字表。如能查到匹配的单词,则该单词的关键字,否则为一般标识符。关键字表为一个字符串数组,其描述如下: char *keyword[6]={”for”,”if”,”then”,”else”, ”while”, ”do”};

图2-1主程序示意图

图2-2 扫描子程序主要部分流程图

实验3语法分析程序设计

【实验目的】

● 理解语法分析在编译程序中的作用

● 在词法分析的基础上进行语法检查和结构分析 ● 掌握语法分析程序的实现方法和技术 【实验内容】

某一高级程序设计语言的部分语法规则用扩充的BNF 表示如下: ⑴ ::=beginend ⑵ ::={;} ⑶ ::=

⑷ ::=ID=

⑸ ::={+ | -} ⑹ ::={* | /} ⑺ ::=ID | NUM | ()

要求:输入单词串,以“#”结束,如果是文法正确的句子,则输出“success”,否则输出“error”。 例如:

输入 begin a=9; x=2*3; b=a+x end # 输出 success ! 输入 x=a+b*c end # 输出 error !

实验4语义分析及中间代码生成程序设计

【实验目的】 ● ● ● ●

理解语义分析及中间代码生成在编译程序中的作用 在语法分析的基础上进行语义检查并生成中间代码 加深对语法制导翻译的理解

掌握将语法分析所识别的语法成分变换为中间代码的语义翻译方法

【实验内容】

某一高级程序设计语言的部分词法、语法规则同以上实验,在实验3语法分析程序基础上,设计和实现该语言的语义分析程序。

要求:输入是一段语句串,输出为三地址指令形式的四元式代码 例如:

对于语句串

Begin a=2+3*4; x=(a+b)/c end # 输出的三地址码为:

t1 = 3*4 t2 = 2+t1 a = t2 t3 = a + b t4 = t3/c x = t4


相关内容

  • 多通道混频器电路的设计
    成绩评定表 课程设计任务书 摘 要 混频是一种频率变换过程,是将信号从某一频率变换为另一频率,把已调制信号(调幅波或调频波)的载波频率从高频变换成固定的中频. 设计的混频器电路,带有8个输入通道,2个输出通道.利用多通道设计方法,子图上建立 ...
  • EDA实验七人表决器的操作步骤
    写出了综合设计的第一个实验的详细步骤,主要是介绍用QuartusII 软件设计由多个模块构成的数字系统的主要步骤,及注意事项.希望对前几个实验未能完全掌握的同学有所帮助. 3.3.2实验内容 基于QuartusII 软件及VHDL 语言实现 ...
  • 微处理器与应用实验报告
    微处理器原理与应用实验日志 微处理器原理与应用实验日志一 指导教师 实验时间: 学院 专业 班级 学号 姓名 实验室 实验题目: 熟悉并使用传送类指令 实验目的: 1. 熟悉并掌握Keil C51 的基本用法: 2. 掌握MCS-51 传送 ...
  • [弹性力学及有限元]教学大纲
    <弹性力学及有限元>教学大纲 大纲说明 课程代码:5125004 总学时:40学时(讲课32学时,上机8学时) 总学分:2.5学分 课程类别:必修 适用专业:土木工程专业(本科) 预修要求:高等数学.理论力学.材料力学 课程的性 ...
  • 写给计算机专业的大学生
    写给计算机专业的大学生(转) 252538746 偶尔在网上看见了这样的一篇文章,希望正在学习计算机的大家可以认真的把它看完 1416718715 "首先说一说进入计算机专业的目的,我个人是因为十分喜欢IT业,很喜欢折腾电脑,所以 ...
  • 加法器实验报告
    实验三 加法器的设计与仿真 一.实验目的 熟悉quartus ⅱ仿真软件的基本操作,用逻辑图和vhdl 语言设计加法器并验证. 二.实验内容 1.熟悉quartus ⅱ软件的基本操作,了解各种设计输入方法(原理图设计.文本设计. 波形设计) ...
  • 线性表及其应用实验报告
    数据结构实验报告 实验名称:线性表及其应用 班 级:12级电气本2 学 号:2012081227 姓 名:赵雪磊 指导教师:梁海丽 日 期:2013年9月9日 数学与信息技术学院 一. 实验目的 1.掌握线性表的概念,理解线性表的顺序.链式 ...
  • 交通灯课程设计内容
    硬件大型实验周设计说明书11.1引言设计背景 自从 1886 两个德国人发明了第一辆汽车交通灯改变了交通路况,交通问题也渐渐被人们所重视.从英国伦敦街头的第一个以燃煤气为光源的红,蓝两色的机械 扳手式信号灯,到现在以电为光源的红黄绿三色交通 ...
  • 基于825x的几个相关实验包括课程设计
    实验 一 可编程并行接口 一. 实验目的 1. 掌握8255方式0的工作原理及使用方法 二. 实验内容 1. 实验电路如下图,8255C口接逻辑电平开关K0-K7,A口接LED显示电路L0- L7. 2. 编程从8255C口输入数据,再从A ...
  • 网络协议分析实验报告
    课 程 设 计 课程设计题目 学 生 姓 名 : 学 号: 专 业: 2014年 6 月 29日 实验1 基于ICMP的MTU测量方法 实验目的 1) 掌握ICMP协议 2) 掌握PING程序基本原理 3) 掌握socket编程技术 4) ...