Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -1- Compiler Construction Principles & Implementation.

Slides:



Advertisements
Similar presentations
第十二章 常微分方程 返回. 一、主要内容 基本概念 一阶方程 类 型 1. 直接积分法 2. 可分离变量 3. 齐次方程 4. 可化为齐次 方程 5. 全微分方程 6. 线性方程 类 型 1. 直接积分法 2. 可分离变量 3. 齐次方程 4. 可化为齐次 方程 5. 全微分方程 6. 线性方程.
Advertisements

数据挖掘实验 1 Apriori 算法编程实现. 数据挖掘实验一 (20’) 实验目的:了解关联规则在数据挖掘中的 应用,理解和掌握关联挖掘的经典算法 Apriori 算法的基本原理和执行过程并完成程 序设计。 实验内容:对给定数据集用 Apriori 算法进行 挖掘,找出其中的频繁集并生成关联规则。
Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -1- 编译程序的面向对象设计与实现 Dr. Zheng Xiaojuan Associate.
4 第四章 矩阵 学时:  18 学时。 教学手段:  讲授和讨论相结合,学生课堂练习,演练习题与辅导答疑相结合。 基本内容和教学目的:  基本内容: 矩阵的运算,可逆矩阵,初等矩阵及其性质和意义, 分块矩阵。  教学目的:  1 .使学生理解和掌握矩阵等价的相关理论  2 .能熟练地进行矩阵的各种运算.
编译程序 构造原理和实现技术 授课教师:吕江花. 第一章 编译程序概述 主要内容: 几个基本概念 编译器的工作过程概述 编译器各个阶段的功能描述 编译程序的实现途径.
第二十三讲 7.3 利用频率采样法设计 FIR 滤波器. 回顾窗函数设计法: 得到的启发:能否在频域逼近? 用什么方法逼近? 通过加窗实 现时域逼近.
两极异步电动机示意图 (图中气隙磁场形象地 用 N 、 S 来表示) 定子接三相电源上,绕组中流过三相对称电流,气 隙中建立基波旋转磁动势,产生基波旋转磁场,转速 为同步速 : 三相异步电动机的简单工作原理 电动机运行时的基本电磁过程: 这个同步速的气隙磁场切割 转子绕组,产生感应电动势并在 转子绕组中产生相应的电流;
主要内容  LR(0) 分析. 0 S→  E # E→  E+T E→  T T→  id T→  ( E ) 1 S→E  # E→E  +T 5 T→id  3 E→E+  T T→  id T→  (E) 4 E→E+T  9 E→T  6 T→(  E) E→
嵌入式操作系统 陈香兰 Fall 系统调用 10/27/09 嵌入式 OS 3/12 系统调用的意义  操作系统为用户态进程与硬件设备进行交互提供 了一组接口 —— 系统调用  把用户从底层的硬件编程中解放出来  极大的提高了系统的安全性  使用户程序具有可移植性.
吉林大学远程教育课件 主讲人 : 杨凤杰学 时: 64 ( 第六十二讲 ) 离散数学. 最后,我们构造能识别 A 的 Kleene 闭包 A* 的自动机 M A* =(S A* , I , f A* , s A* , F A* ) , 令 S A* 包括所有的 S A 的状态以及一个 附加的状态 s.
Viterbi 算法 viterbi 实验要求:见 experiment3.doc – 将 TRUNC_LENGTH 取值为 4 , 8 , 16 , 32 , 64 ,看看程序运行结果会有什么变化并分析原 因。 – 将 NUMSIM 取值为 10 1 , 10.
分析化学与无机化学中溶液 pH 值计算的异同比较 谢永生  分析化学是大学化学系的一门基础课,课 时较少,其内容主要是无机物的化学分析。 分析化学是以无机化学作为基础的,我们 都是在已掌握一定的无机化学知识后才学 习分析化学 。所以在分析 化学的学习中会 重复许多无机化学内容,造成学习没有兴.
有限自动机 (Finite Automata) 描述程序设计语言中的单词的识别过程。 主要内容: 确定有限自动机 DFA(Deterninistic FA) 确定有限自动机 DFA 的实现 非确定有限自动机 NFA(Nondeterninistic FA) NFA 到 DFA 的转换 DFA 的化简.
例9:例9: 第 n-1 行( -1 )倍加到第 n 行上,第( n-2 ) 行( -1 )倍加到第 n-1 行上,以此类推, 直到第 1 行( -1 )倍加到第 2 行上。
主讲教师:陈殿友 总课时: 124 第八讲 函数的极限. 第一章 机动 目录 上页 下页 返回 结束 § 3 函数的极限 在上一节我们学习数列的极限,数列 {x n } 可看作自变量 为 n 的函数: x n =f(n),n ∈ N +, 所以,数列 {x n } 的极限为 a, 就是 当自变量 n.
第十一章 曲线回归 第一节 曲线的类型与特点 第二节 曲线方程的配置 第三节 多项式回归.
第三章 C 数据及其表达式 2 回顾  程序是为执行一项任务而编写的有序指令集  算法是解决问题的具体方法和步骤  流程图是算法的图形化表现形式  C 程序的编译和运行过程  编译器将源程序转换成机器能理解的程序  连接器用于连接相关的目标文件以生成可执行程序  进制间的转换  补码.
线性代数习题课 吉林大学 术洪亮 第一讲 行 列 式 前面我们已经学习了关 于行列式的概念和一些基本 理论,其主要内容可概括为:
吉林大学远程教育课件 主讲人 : 杨凤杰学 时: 64 ( 第二十五讲 ) 离散数学. 定理 群定义中的条件 ( 1 )和( 2 )可以减弱如下: ( 1 ) ’ G 中有一个元素左壹适合 1 · a=a; ( 2 ) ’ 对于任意 a ,有一个元素左逆 a -1 适 合 a -1 ·
自顶向下分析 —— 递归下降法 递归下降法 (Recursive-Descent Parsing) 对每个非终极符按其产生式结构产生相应语 法分析子程序. 终极符产生匹配命令 非终极符则产生调用命令 文法递归相应子程序也递归,所以称这种方 法为递归子程序方法或递归下降法。
吉林大学远程教育课件 主讲人 : 杨凤杰学 时: 64 ( 第三十九讲 ) 离散数学. 例 设 S 是一个集合, ρ ( S )是 S 的幂集合,集合 的交( ∩ ),并(∪)是 ρ ( S )上的两个代数运算, 于是,( ρ ( S ), ∩ ,∪) 是一个格。而由例 知.
语义分析 主要内容:  语义分析概述 ( 必要性、功能、描述方法 )  符号表  类型表达式  声明和程序体的语义分析.
吉林大学远程教育课件 主讲人 : 杨凤杰学 时: 64 ( 第四十五讲 ) 离散数学 模 格 定义 设( L , ≤ ) 是一个格,对任意 a , b , c ∈ L , 如果 a≤b ,都有 a  ( b×c ) = b× ( a  c ) 则称( L , ≤ )为模格。
第六章 文件管理. 程序设计中,文件是十分重要的,许多情况下, 使用文件可以高效地解决实际问题。有用的数据在后 备存储器上以文件的形式存储后,我们就可以通过文 件对数据进行访问、操作以及检索,这称为文件管理。 6.1 文件的分类 根据文件访问类型的不同,可以将文件分为三类: 顺序文件、随机文件和二进制文件。
第二章 贝叶斯决策理论 3学时.
非均相物系的分离 沉降速度 球形颗粒的 :一、自由沉降 二、沉降速度的计算 三、直径计算 1. 试差法 2. 摩擦数群法 四、非球形颗粒的自由沉降 1. 当量直径 de :与颗粒体积相等的圆球直径 V P — 颗粒的实际体积 2. 球形度  s : S—— 与颗粒实际体积相等的球形表面积.
数 学 系 University of Science and Technology of China DEPARTMENT OF MATHEMATICS 第 4 章 非线性方程求根 非线性科学是当今科学发展的一个重要研究方向,而非线性 方程的求根也成了一个不可缺的内容。但是,非线性方程的求根 非常复杂。
量子化学 第四章 角动量与自旋 (Angular momentum and spin) 4.1 动量算符 4.2 角动量阶梯算符方法
从 Postscript 格式文献中提取 数学公式的方法. 概述 从 Postscript 格式文献中提取识别数学公式, 是数学公式识别领域的一个研究方向。主要针对 以 Word 和 Latex 为生成源的 Postscript 文档, 提出 基于内容的数学公式提取方法。首先重载 Postscript.
主讲教师:陈殿友 总课时: 124 第十一讲 极限的运算法则. 第一章 二、 极限的四则运算法则 三、 复合函数的极限运算法则 一 、无穷小运算法则 机动 目录 上页 下页 返回 结束 §5 极限运算法则.
在发明中学习 线性代数 概念的引入 李尚志 中国科学技术大学. 随风潜入夜 : 知识的引入 之一、线性方程组的解法 加减消去法  方程的线性组合  原方程组的解是新方程的解 是否有 “ 增根 ” ?  互为线性组合 : 等价变形  初等变换  高斯消去法.
主要内容 :  SLR(1) 分析方法. LR(0) 分析方法的不足  LR(0) 方法对文法的要求严格。  LR(0) 方法容易出现冲突状态。
第一节 相图基本知识 1 三元相图的主要特点 (1)是立体图形,主要由曲面构成; (2)可发生四相平衡转变; (3)一、二、三相区为一空间。
第5章 键盘与鼠标接口 5.1 键盘概述 5.2 键盘的工作原理 5.3 PC扩展键盘接口 5.4 键盘中断与键盘I/O 5.5 鼠标接口.
导体  电子导体  R   L  i 离子导体  ( 平衡 ) mm   .
第 3 章 控制流分析 内容概述 – 定义一个函数式编程语言,变量可以指称函数 – 以 dynamic dispatch problem 为例(作为参数的 函数被调用时,究竟执行的是哪个函数) – 规范该控制流分析问题,定义什么是可接受的控 制流分析 – 定义可接受分析在语义模型上的可靠性 – 讨论分析算法.
吉林大学远程教育课件 主讲人 : 杨凤杰学 时: 64 ( 第五十三讲 ) 离散数学. 定义 设 G= ( V , T , S , P ) 是一个语法结构,由 G 产生的语言 (或者说 G 的语言)是由初始状态 S 演绎出来的所有终止符的集合, 记为 L ( G ) ={w  T *
编译原理总结. 基本概念  编译器 、解释器  编译过程 、各过程的功能  编译器在程序执行过程中的作用  编译器的实现途径.
周期信号的傅里叶变换. 典型非周期信号 ( 如指数信号, 矩形信号等 ) 都是满足绝对可 积(或绝对可和)条件的能量信号,其傅里叶变换都存在, 但绝对可积(或绝对可和)条件仅是充分条件, 而不是必 要条件。引入了广义函数的概念,在允许傅里叶变换采用 冲激函数的前提下, 使许多并不满足绝对可积条件的功率.
§8-3 电 场 强 度 一、电场 近代物理证明:电场是一种物质。它具有能量、 动量、质量。 电荷 电场 电荷 电场对外的表现 : 1) 电场中的电荷要受到电场力的作用 ; 2) 电场力可移动电荷作功.
College of Computer Science & Technology Compiler Construction Principles & Implementation Techniques -1- Compiler Construction Principles & Implementation.
 符号表  标识符的作用: 声明部分:定义了各种对象及对应的属性和 使用规则。 程序体:对所定义的对象进行各种操作。 $ididname IdnameAttributeIR  必要性 Token : 新表-符号表(种类、类型等信息):
Chapter 3 Chang Chi-Chung Parse tree intermediate representation The Role of the Parser Lexical Analyzer Parser Source Program Token Symbol.
Department of Mathematics 第二章 解析函数 第一节 解析函数的概念 与 C-R 条件 第二节 初等解析函数 第三节 初等多值函数.
网上预约集港操作指南 一、登录系统 登陆下面图片显示网址:输入堆场用户名、密码和校验码登陆系统.
Introduction to Automatic Control The Laplace Transform Li Huifeng Tel:
1 Signals and Systems Lecture 25 The Laplace Transform ROC of Laplace Transform Inverse Laplace Transform.
1 、如果 x + 5 > 4 ,那么两边都 可得 x >- 1 2 、在- 3y >- 4 的两边都乘以 7 可得 3 、在不等式 — x≤5 的两边都乘以- 1 可得 4 、将- 7x — 6 < 8 移项可得 。 5 、将 5 + a >- 2 a 移项可得 。 6 、将- 8x < 0.
1 Signals and Systems Lecture 26 Properties of Laplace Transform Analysis LTI System using LT System Function.
项目七: PLC 功能指令应用 带进位循环左移指令 XXXXX. 项目七: PLC 功能指令应用 FX2 系列可编程控制器移位控制指令有移位、循环移位、字移位 及先进先出 FIFO 指令等 10 条指令。 带进位循环右移指令 RCR 带进位循环左移指令 RCL 字右移位指令 WSFR 先入先出读出指令.
§10.2 对偶空间 一、对偶空间与对偶基 二、对偶空间的有关结果 三、例题讲析.
表单自定义 “ 表单自定义 ” 功能是用于制作表单的 工具,用数飞 OA 提供的表单自定义 功能能够快速制作出内容丰富、格 式规范、美观的表单。
7 生产费用在完工产品与在产 品之间分配的核算. 2 第七章 生产费用在完工产品与在产品之 间的分配  知识点 :  理解在产品的概念  掌握生产费用在完工产品与在产品之间的分 配.
力的合成 力的合成 一、力的合成 二、力的平行四边形 上一页下一页 目 录 退 出. 一、力的合成 O. O. 1. 合力与分力 我们常常用 一个力来代替几个力。如果这个 力单独作用在物体上的效果与原 来几个力共同作用在物体上的效 果完全一样,那么,这一个力就 叫做那几个力的合力,而那几个 力就是这个力的分力。
要求: 熟练掌握发动机的基本术语。 结合实物可以说出发动机大致组成。 掌握发动机的基本工作原理。 掌握发动机各系统的作用。
逻辑设计基础 1 第 7 章 多级与(或)非门电路 逻辑设计基础 多级门电路.
1 第 4 章 速度瞬心及其应用 ● 利用速度瞬心进行机构的速度分析 ● 将低副机构转变为高副机构 ( 瞬心线机 构,共轭曲线机构) ● 用低副机构的分析方法对高副机构进 行结构和运动分析 ( 高副低代 )
一、 版 面 构 成 的 概 念 版 面 构 成 的 概 念 二、 版 面 构 成 的 发 展 趋 势 版 面 构 成 的 发 展 趋 势 三、 广 告 文 字 的 版 面 构 成 广 告 文 字 的 版 面 构 成 四、 广 告 版 面 的 视 觉 流 程 广 告 版 面 的 视 觉 流 程.
§5.6 利用希尔伯特 (Hilbert) 变换 研究系统的约束特性 希尔伯特变换的引入 可实现系统的网络函数与希尔伯特变换.
欢 迎 使 用 《工程流体力学》 多媒体授课系统 燕 山 大 学 《工程流体力学》课程组. 第九章 缝隙流动 概述 9.1 两固定平板间的层流流动 9.2 具有相对运动的两平行平板 间的缝隙流动 9.3 环形缝隙中的层流流动.
1 第三章 数列 数列的概念 考点 搜索 ●数列的概念 ●数列通项公式的求解方法 ●用函数的观点理解数列 高考 猜想 以递推数列、新情境下的 数列为载体, 重点考查数列的通 项及性质, 是近年来高考的热点, 也是考题难点之所在.
第二节. 广告牌为什么会被风吹倒? 结构的稳定性: 指结构在负载的作用下 维持其原有平衡状态的能力。 它是结构的重要性质之一。
准备工作:文件-〉 “Word 选项 ” 表格的高级应用 设置多级标题 用 E - Learning 插入参考文献 设置个性化页眉、页脚 修订与批注 设置多序列页码 活用题注、尾注、脚注及交叉引用.
Innovation Intelligence ® Workshop – Riser VIV. Copyright © 2015 Altair Engineering, Inc. Proprietary and Confidential. All rights reserved. 学习内容 实用流固耦合的设置方法.
§9. 恒定电流场 第一章 静电场 恒定电流场. 电流强度  电流:电荷的定向移动  正负电荷反方向运动产生的电磁效应相同 ( 霍尔效应 特例 ) 规定正电荷流动的方向为正方向  电流方向:正方向、反方向  电流强度 ( 电流 ) A 安培 标量 单位时间通过某一截面的电荷.
目录 上页 下页 返回 结束 二、无界函数反常积分的审敛法 * 第五节 反常积分 无穷限的反常积分 无界函数的反常积分 一、无穷限反常积分的审敛法 反常积分的审敛法  函数 第五章 第五章.
§7.2 估计量的评价标准 上一节我们看到,对于总体 X 的同一个 未知参数,由于采用的估计方法不同,可 能会产生多个不同的估计量.这就提出一 个问题,当总体的一个参数存在不同的估 计量时,究竟采用哪一个好呢?或者说怎 样评价一个估计量的统计性能呢?下面给 出几个常用的评价准则. 一.无偏性.
SME.USTB Human Factors 人机工程学 By Wei Dong Department of Industry Design, SME, USTB.
元 胞 自 动 机. 一. 元胞自动机的定义及构成 元胞自动机 (Cellular Automata ,简称 CA ,也有 人译为细胞自动机、点格自动机、分子自动机 或单元自动机 ) 。 是一时间和空间都离散的动力系统。散布在规 则格网 (Lattice Grid) 中的每一元胞 (Cell) 取有限.
Revision ? E  TE  E   + TE  |  T  FT  T   * FT  | 
Presentation transcript:

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -1- Compiler Construction Principles & Implementation Techniques Dr. Zheng Xiaojuan Associate Professor Software College of Northeast Normal University April. 2008

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -2- Knowledge Relation Graph Develop a Parser Syntax definition basing on Context Free Grammar using implement Top-down Bottom-up

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -3- §4 Top-down Parsing 4.1 Overview of Top-down Parsing 4.2 Three Important Sets 4.3 Left Recursion Removal & Left Factoring 4.4 Recursive-Descent Parsing 4.5 LL(1) Parsing    

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques LL(1) Parsing Main idea of LL(1) Parsing Method LL(1) Grammar (LL(1) 文法 ) LL(1) Parsing Table (LL(1) 分析表 ) LL(1) Parsing Engine (LL(1) 分析驱动程序 ) LL(1) Parsing Process (LL(1) 分析过程 ) LL(1) Parser Generator – LLGen (LL(1) 分析程序的自动生成器 )

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -5- Main idea of LL(1) Parsing Method LL(1) Parsing –Left-to-right parsing, Left-most derivation, 1-symbol look ahead ; –Requires the same precondition( 和递归下降法要求相同 的前提条件 ) G = (V T, V N, S, P) For any A  V N, For any two productions of A, Predict(A   1)  Predict(A   2) = 

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -6- Main idea of LL(1) Parsing Method LL(1) Parsing –LL(1) parsing table to record predict sets for each production; (LL(1) 分析表 ) –A general engine( 一个通用的驱动程序 )

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -7- Example P: (1) Z  aBd (2) B  d (3) B  c (4) B  bB a b c d 句型输入动作 ZabcdDerive (1) aBdabcdMatch BdbcdDerive(4) bBdbcdMatch BdcdDerive(3) cd Match dd Succeed

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -8- LL(1) Parsing Mechanism Stack Input #dcba 驱动程序 Z LL[1] 分析表

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -9- LL(1) Parsing Mechanism Stack Input #………a 驱动程序 :  栈为空情形的处理  X  V T 情形的处理  X  V N 情形的处理 X … … LL[1] 分析表

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques LL(1) Parsing Main idea of LL(1) Parsing Method LL(1) Grammar (LL(1) 文法 ) LL(1) Parsing Table (LL(1) 分析表 ) LL(1) Parsing Engine (LL(1) 分析驱动程序 ) LL(1) Parsing Process (LL(1) 分析过程 ) LL(1) Parser Generator – LLGen (LL(1) 分析程序的自动生成器 )

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -11- LL(1) Grammar If a CFG G meets the precondition below, we will call G is a LL(1) Grammar; G = (V T, V N, S, P) For any A  V N, For any two productions of A, Predict(A   1 )  Predict(A   2 ) = 

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -12- LL(1) Grammar Some features of a LL(1) Grammar –No ambiguity( 无二义性 ) –No left recursion( 无左递归 ) –For a non-terminal symbol, there is at most one empty production( 对于一个非终极符来讲, 最多只有一个空产生 式 )

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques LL(1) Parsing Main idea of LL(1) Parsing Method LL(1) Grammar (LL(1) 文法 ) LL(1) Parsing Table (LL(1) 分析表 ) LL(1) Parsing Engine (LL(1) 分析驱动程序 ) LL(1) Parsing Process (LL(1) 分析过程 ) LL(1) Parser Generator – LLGen (LL(1) 分析程序的自动生成器 )

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -14- LL(1) Parsing Table (LL(1) 分析表 ) The purpose of LL(1) Parsing Table –According to, decide that which production of current non-terminal symbol can be used to derive; – 根据当前的非终极符和当前的输入符决定用哪一个产生 式来进行推导 ; If current non-terminal symbol is X, current input symbol is a, we can use X  if and only if a  predict(X  );

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -15- LL(1) Parsing Table (LL(1) 分析表 ) How to build LL(1) Parsing Table for a LL(1) Grammar? –For a LL(1) Grammar G = (V T, V N, S, P) –V T = {a 1, …, a n } –V N = {A 1, …, A n } –LL(A i, a i ) = [A i   ], if a i  predict(A i   ) –LL(A i, a i ) = error, if a i not belong to the predict set of any production of A i a1a1 …anan # A1A1 ……. … AnAn

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -16- Example 产生式 Predict 集 (1){a} (2){d} (3){c} (4){b} P: (1) Z  aBd (2) B  d (3) B  c (4) B  bB abcd# Z(1) B(4)(3)(2)

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -17- Example (1) E  TE’ { i, n, ( } (2) E’  + TE’ {+} (3) E’   {#, )} (4) T  FT’ {i,n,(} (5) T’  * F T’ {*} (6) T’   {),+, # } (7) F  (E) { ( } (8) F  i {i} (9) F  n {n} +*()in# E(1) E’(2)(3) T(4) T’(6)(5)(6) F(7)(8)(9)

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques LL(1) Parsing Main idea of LL(1) Parsing Method LL(1) Grammar (LL(1) 文法 ) LL(1) Parsing Table (LL(1) 分析表 ) LL(1) Parsing Engine (LL(1) 分析驱动程序 ) LL(1) Parsing Process (LL(1) 分析过程 ) LL(1) Parser Generator – LLGen (LL(1) 分析程序的自动生成器 )

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -19- LL(1) Parsing Engine 分析驱动程序 Stack Input #………a 驱动程序 :  栈为空情形的处理  X  V T 情形的处理  X  V N 情形的处理 X … … LL[1] 分析表

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -20- LL(1) Parsing Engine Configuration( 格局 ): 可能的情形 – 栈为空情形的处理 :, succeed, if a=#, else error; –X  V T 情形的处理 :, match; else error; –X  V N 情形的处理 :, derive if there is a production X  such that a  predict(X  ), else error;

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -21- LL(1) Parsing Engine [1] 初始化: Stack := [ ] ; Push(S) ; [2] 读下一个输入符: Read(a) ; [3] 若当前格局是 (, # ) ,则成功结束;否则转下; [4] 设当前格局为(..... X, a.....) ,则  若 X  V T & X= a ,则 { Pop(1) ; Read(a) ; goto [3] }  若 X  V T & X  a ,则 Error ;  若 X  V N ,则: if LL(X, a)=X→Y 1 Y Y n then { Pop(1) ; Push(Y n,.....,Y 1 ) ; goto[3] } else Error

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques LL(1) Parsing Main idea of LL(1) Parsing Method LL(1) Grammar (LL(1) 文法 ) LL(1) Parsing Table (LL(1) 分析表 ) LL(1) Parsing Engine (LL(1) 分析驱动程序 ) LL(1) Parsing Process (LL(1) 分析过程 ) LL(1) Parser Generator – LLGen (LL(1) 分析程序的自动生成器 )

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -23- LL(1) Parsing Process P: (1) Z  aBd (2) B  d (3) B  c (4) B  bB abcd# Z(1) B(4)(3)(2) a b c d a c c d

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques LL(1) Parsing Main idea of LL(1) Parsing Method LL(1) Grammar (LL(1) 文法 ) LL(1) Parsing Table (LL(1) 分析表 ) LL(1) Parsing Engine (LL(1) 分析驱动程序 ) LL(1) Parsing Process (LL(1) 分析过程 ) LL(1) Parser Generator – LLGen (LL(1) 分析程序的自动生成器 )

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -25- Dealing with If-Then-Else CFG for If-Then-Else V T = {if, then, else, other, ;, exp} V N = {S, Stm, ElsePart} P: (1) S  Stm ; (2) Stm  if exp then Stm ElsePart (3) Stm  other (4) ElsePart  else Stm (5) ElsePart   (1){if, other} (2){if} (3){other} (4){else} (5){;, else} Predict set:

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -26- Dealing with If-Then-Else LL(1) parsing table ifthenelseotherexp;# S(1) Stm(2)(3) ElsePart(4) (5)(5) (4) 每个 else 与其前面未匹配的最近的 then 相匹配 !

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -27- Dealing with If-Then-Else stackinputaction Sif exp then if exp then other else other ;(1) Stm ;if exp then if exp then other else other;(2) if exp then Stm ElsePart;if exp then if exp then other else other; Stm ElsePart ElsePart; if exp then other else other; if exp then Stm ElsePart ElsePart; if exp then other else other; Match(3 次 ) (2) Match(3 次 ) other else other;(3) other ElsePart ElsePart;other else other;Match ElsePart ElsePart;else other;(4) Stm ElsePart;

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -28- Dealing with If-Then-Else stackinputaction succeed ElsePart ElsePart;else other;(4) else Stm ElsePart;else other;match Stm ElsePart;other; other ElsePart;other;match ElsePart;; (3) (5) ;;match

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -29- S Stm; if expthenStm ElsePart ifexp then StmElsePart other else Stm other

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -30- Building Parse Tree During LL(1) [1] 初始化: Stack := [ ] ; root=BuildOneNode(S); Push(S, root) ; [2] 读下一个输入符: Read(a) ; [3] 若当前格局是 (, # ) ,则成功结束;否则转下; [4] 设当前格局为(..... X, a.....) ,则  若 X  V T & X= a ,则 { Pop(1) ; Read(a) ; goto [3] }  若 X  V T & X  a ,则 Error ;  若 X  V N ,则: if LL(X, a)=X→Y 1 Y Y n then { (X, ptr) = Pop(1); for i=n to 1 { p[i] = BuildOneNode(Yi), Push(Y i, p[i]) ; } AddSons(ptr, p, n); goto[3] } else Error

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -31- LL(1) Parser Generator – LLGen LLGen 终极符 / 产生式个数 产生式右部长度 LL( 分析表 ) 可导空串的符号表 文法中所有符号 非 LL(1) 表的冲突

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -32- §4 Top-down Parsing 4.1 Overview of Top-down Parsing 4.2 Three Important Sets 4.3 Left Recursion Removal & Left Factoring 4.4 Recursive-Descent Parsing 4.5 LL(1) Parsing

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -33- Knowledge Relation Graph Top-down parsing Syntax definition basing on CFG using check precondition Predict(A  ) first(  ) follow(A) Yes Recursive-descent LL(1) Implement 文法等价 变换

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -34- Summary What is the main idea of Top-down parsing? What is the precondition of recursive-descent and LL(1) parsing? The definitions of three sets ? For a given CFG, calculate three sets? The main idea of recursive-descent parsing? ※

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -35- Summary For a given CFG, develop recursive-descent parser? –Calculate predict set for each production; –Check whether meets the precondition; –If yes, develop function for each non-terminal symbol; –Build parse tree during parsing;

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -36- Summary The main idea of LL(1) parsing? LL(1) Grammar? The mechanism of LL(1) parsing? For a given CFG, develop LL(1) parser? –Calculate predict set for each production; –Check whether meets the precondition; –If yes, generate LL(1) parsing table; –LL(1) parser = LL(1) parsing table + LL(1) parsing engine –Build parse tree; Give the LL(1) parsing process?

Software College of Northeast Normal University Compiler Construction Principles & Implementation Techniques -37- Assignment G = {V T, V N, S, P} V T = {-, (, ), id} V N = {E, ET, V, VT} S = E P = { E  -E ET   E  (E) V  id VT E  V ET VT  (E) ET  -E VT   } (1)Generate LL(1) Parsing table; (2) “ -(id--id) ” 的 分析过程 ;