编译原理实践 6.程序设计语言PL/0.

Slides:



Advertisements
Similar presentations
组长:倪运超 小组成员:徐悦、曹吕卿、孙浩、徐圣尧.  上海的历史 上海的历史  上海的历史 上海的历史  上海的文化 —— 建筑 上海的文化 —— 建筑  上海的文化 —— 美食 上海的文化 —— 美食  香港的历史 香港的历史  香港的历史 香港的历史  香港的文化 —— 建筑 香港的文化.
Advertisements

一、 突出解析几何复习中的重点问题的通法通解 解析几何中的重点问题 一、 突出解析几何复习中的重点问题的通法通解 直线与圆锥曲线的位置关系 重点一.
导 游 基 础 知 识.
传道书 12种虚空 9处不可知 23样价值观 7个小结论 人生是虚空的虚空! (没有神的人生)
第十三章 中国的传统科学技术 中国古代的科技曾经长期处于世界领先地位,对人类文明的进步作出过重要贡献,并形成了富有特色的科技文化。在今天,源自中国古代科技文化的中医学仍然在现实生活中发挥着积极的作用。
性教育教學模組設計 主題:身體自主權 台中市忠明國小 巫偉鈴.
整体销售方案 中山市美好物业代理有限公司
臺中市頭家國小 生理衛生講座 青春期的奧秘 ‧說到青春期,你會想到? ‧班級表現最好的,有獎徵答有優先權。 葉孟娟老師、黃文玲老師.
中國古典文獻學 主講:羅積勇教授.
外国小说话题突破系列之七 情感.
一般纳税人增值税 纳税申报表填写指引 白银高新区国税局 纳税服务科 2016年5月.
第7课 古罗马的政制与法律.
第二单元 商鞅变法 第1课 改革变法风潮与秦国历史机遇(背景) 第2课 “为秦开帝业”──商鞅变法(内容)
内 容 ● 民间非营利组织会计实务操作 ● 项目会计核算中注意事项 ● 社会组织年检报告的填列 ● 社会组织评估中财务资产指标的解释
荆轲刺秦王 《战国策》.
初探逻辑推理 提高思维水平 ——《逻辑和语文学习》
樂 樂 西 玩 西 玩 門 門.
雄伟的金字塔.
Tool Command Language --11级ACM班 金天行.
列王紀下8章 啟示錄12章 書念婦人 婦人 死裡復活的兒子 被提的男孩子 七年饑荒 三年半大災難 非利士地 曠野 歸還房屋田地
佛教既是外來宗教, 為何盛行於中國?.
情緒行為障礙之教學與輔導 新竹縣情緒障礙巡迴教師 陳弘念.
1. 民主社會裡,公民的參與有其重要性,而透過政治參與無法達成下列哪一項目的?
开 学 第 一 课 六年级3班.
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
第八章 符号表 符号表的作用: 一致性检查和作用域分析; 辅助代码生成..
第二讲 (PL/0) PL/0 编译程序导读.
2.2 语法分析器生成器YACC 分析器的构造步骤: 产生式→识别活前缀的DFA→分析表(+驱动器) YACC概述
陳維魁 博士 儒林圖書公司 第七章 參數的傳遞 陳維魁 博士 儒林圖書公司.
第一次随堂作业(10.16) 请用扩展的 BNF 描述 C语言里语句的结构; 请用扩展的 BNF 描述 C++语言里类声明的结构;
C++中switch语句的BNF 否极泰来 ——《周易》.
EBNF 请用扩展的 BNF 描述 C语言里语句的结构; 请用扩展的 BNF 描述 C++语言里类声明的结构;
编译原理课程设计.
第2次课 上下文无关文法
编译原理实践 5.给定语法的语法分析程序构造.
本章中將會更詳細地考慮有關重複的概念,並且會 介紹for和do…while等兩種用來控制重複的敘述 式。 也將會介紹switch多重選擇敘述式。 我們會討論直接和迅速離開某種控制敘述式的 break敘述式,以及用來跳過重複敘述式本體剩餘 部份的continue敘述式。 本章會討論用來組合控制條件的邏輯運算子,最後.
第二章 Java语言基础.
第2章 PL/0编译程序 2.1 PL/0语言和类pcode的描述 2.2 PL/0编译程序的结构 2.3 PL/0编译程序的语法语义分析
动态规划(一).
编译原理实践 11.语义分析与代码生成.
1.3 C语言的语句和关键字 一、C语言的语句 与其它高级语言一样,C语言也是利用函数体中的可执行 语句,向计算机系统发出操作命令。按照语句功能或构成的不 同,可将C语言的语句分为五类。 goto, return.
C语言程序设计 主讲教师:陆幼利.
软件设计任务 从工程管理的角度来看,软件设计分两步完成。 概要设计,将软件需求转化为数据结构和软件的系统结构。
陳維魁 博士 儒林圖書公司 第三章 變數與繫結 陳維魁 博士 儒林圖書公司.
考前总结 背景 必要性 作用 新旧版交替面临一些问题 从教学目标和要求说起 知识梳理 可能有助于提高考试成绩 或者让知识掌握得更好.
Instructor:Po-Yu Kuo 教師:郭柏佑
第3 语言翻译问题 [学习目标]:学习和掌握语言的语法的基本概念和基本要素,理解翻译的步骤;学习和掌握BNF文法。
第3章 JavaScript基本语句.
第九章 运行时存储空间组织 网上教学系统: : 编译原理
第九节 赋值运算符和赋值表达式.
現代專案管理教材 第一章 專案與專案管理 博碩文化出版發行.
中五級電腦科 PASCAL檔案處理.
埃及永生之旅 報告者:陳菱霙.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
编译原理课程设计 2017年4月.
ASP.NET实用教程 清华大学出版社 第4章 C#编程语言 教学目标 教学重点 教学过程 2019年5月5日.
编译原理课程设计 课程设计内容 扩展PL/0语言的实现(含编译器和解释器)  编译器:把源程序翻译成中间语言程序
Do While 迴圈 東海大學物理系‧資訊教育 施奇廷.
主讲教师 欧阳丹彤 吉林大学计算机科学与技术学院
數學遊戲二 大象轉彎.
第6章 详细设计 Detailed Design
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
五 循环结构程序设计 厦大附中信息技术.
厉害了,我的国! 15会计2班团支部 2018年4月20日.
C语言基本语句 判断循环.
学习数据结构的意义 (C语言版) 《数据结构》在线开放课程 主讲人:李刚
编译原理实践 7.PL/0的词法分析程序构造.
PASCAL语言 吉林大学计算机科学与技术学院.
PASCAL语言 吉林大学计算机科学与技术学院.
编译原理与实现 河北科技大学 信息科学与工程学院计算机系 杨奎河
Presentation transcript:

编译原理实践 6.程序设计语言PL/0

PL/0语言概述 EBNF定义的PL/0语法 PL/0语法图 判断是否符合2条限制规则

1.PL/0语言概述 由著名计算机科学家、PASCAL语言的创始人 N.Wirth教授选择提供的 在其专著 Algorithms + Data Structures = Programs 一书(译著书名:算法+数据结构=程序)中给出

1.1PL/0语言的功能 1.语句类型 2.数据类型 只有整数类型 3.说明部分类型 1)赋值语句 2)语句串,begin…end 3)条件语句,即if语句 4)循环语句,即while语句 5)过程调用语句,即call语句 2.数据类型 只有整数类型 3.说明部分类型 1)常量说明 2)变量说明 3)过程说明 4)在一个过程内说明常量、变量和过程 PL/0允许递归调用,既可以间接递归也可以直接递归

1.2PL/0语言实例 var i; begin i:=0; while i < 12 do i := i + 2; end. var a, b; begin a:=10; if a < 12 then b := a/2; end.

CONST A=10; (. 常量说明部分. ) VAR B,C; (. 变量说明部分. ) PROCEDURE P; (. 过程说明部分 CONST A=10; (* 常量说明部分 *) VAR B,C; (* 变量说明部分 *) PROCEDURE P; (* 过程说明部分 *) VAR D; PROCEDURE Q; VAR X; BEGIN READ(X); D:=X; WHILE X#0 DO CALL P; END; BEGIN WRITE(D); CALL Q; END; BEGIN CALL P; END. Q的过程体 p的过程体 主程序体

保留字: begin, call, const, do, end, if, odd, procedure, then, var, while 符号: . , ; := + - * / ( ) 标识符:以字母开头的,任意字母和数字组成的序 列 数:阿拉伯数字的序列 关系运算符: < > <= >= # =

2.EBNF定义的PL/0语法 program = block ".". A program is a block. block = [ "const" ident "=" number { "," ident "=" number } ";" ] [ "var" ident { "," ident } ";" ] { "procedure" ident ";" block ";" } statement. A block is a sequence of constant, variable and procedure declarations followed by a statement.

statement = [ident ":=" expression | "call" ident | "begin" statement { ";" statement } "end" | "if" condition "then" statement | "while" condition "do" statement]. A statement is an assignment statement, a procedure call, a compound statement, an if statement, a while statement, or empty. Both if and while statements have conditionals

condition = "odd" expression A conditional is a relational expression or an "odd" test.

expression = ["+"|"-"] term { ("+" | "-") term }. term = factor { ("*"|"/") factor }. factor = ident| number | "(" expression ")". ident = letter {(digit | letter)} number = digit {digit}

3. PL/0语法图

部分非终结符的含义 block—分程序 statement—语句 condition---条件 expression---表达式 term---项 factor---因子

4.判别是否符合两条限制规则 方法: 1)找出图中每一个分支点,考察每一个分支点的各 个分支的头符号是否相异 2)找出图中每一个透明结构,考察每个透明结构, 考察每个透明结构的头符号集合与其跟随符号集合 是否相异 结论:PL/0语言文法符合两条限制规则,可以应 用简单辨认算法的LL(1)文法。