LR(1)分析方法.

Slides:



Advertisements
Similar presentations
专题复习 --- 走进名著 亲近经典 读完《鲁滨孙漂流记》这本精彩的小说 后,一个高大的形象时时浮现在我的眼 前,他就是勇敢的探险家、航海家鲁滨 孙。他凭着顽强的毅力,永不放弃的精 神,实现了自己航海的梦想。 我仿佛看到轮船甲板上站着这样的一 个人:他放弃了富裕而又舒适的生活, 厌恶那庸庸碌碌的人生,从而开始了一.
Advertisements

用藥常識知多少? 五乙李麗娜 心寶的故事 心寶哪裡錯了? 說一說藥袋上有什麼資訊? 姓名 怎麼用(一天使用幾次? ) 藥的用途對症嗎? 藥品和外觀 副作用 注意事項 保存期限與方法 成藥有沒有衛生署許可證字號.
林園高中適性入學 高雄區免試入學 及 特色招生介紹 1. 國中學生 國中教育會考 1 ( 每年五月 ) 特色招生 術科考試 五專 免試入學 ( 每年六月 ) 特色招生 甄選入學 高中高職 免試入學 擇一報到 林園高中適性入學  入學管道流程 2.
2016/9/41 12 年國教 入學方案宣導資料. 2016/9/42 安全快樂 健康發展 活力多元 創意發展 適性揚才 特色發展 務實致用 卓越發展 學前教育 國中小教育 高級中等教育 大專以上教育 教育促進個人向上發展教育促進個人向上發展 教育是國家最有利的投資教育是國家最有利的投資.
实数与代数式是初中数学中重要的基础知识, 是中考的必考内容.这部分知识散布于多个章节之中, 知识点琐碎,但概念性强,在中考试卷中多以填空题、 选择题、化简、探索或求值的形式出现.在复习中, 一定要加强对各个概念、性质和公式的辨析和理 解.注重让学生在实际背景中理解基本的数量关系和 变化规律,注重使学生经历从实际问题中建立数学模.
第二節-諧聲修辭 一、生活中的音近諧聲 ( 1 )忌諱語及吉祥話 人們因著趨吉避凶的普遍心理,對於有 災厄的諧音,或有吉祥祈福的近音字, 在詞語的使用上,呈現了特殊的習慣和 文化。
說 劍 《莊子‧雜篇》─ 第 一 組 賴泊錞 謝孟儒 張維真 羅苡芸
郑州新世纪女子医院是一家专业治乳腺疾病的特色专科医院,巨资引进一系列全进口尖端设备,汇集全国著名乳腺病专家及知名乳腺病外科专家组,以"打造专业品牌、创建专科名院"的办院方针,以科学规范防治乳腺病与乳腺癌为重点,以女性身心健康为目标,遵循"敬爱生命","亲情、温馨、真诚"的人性化理念服务于患者,提供系统、全面、专业化的医疗服务,构建女人的温馨家园。
控制方长投下的子公司,需要编制合并报表的演示思路
苏教版小学语文 二年级下册(五~八)单元教材分析
性质形容词 软、硬、甜、苦、好、坏、远、近、斜、直、伟大、勇敢、优秀、聪明、大方
温 度 定义: 表示物体冷热程度的物理量。 国际单位:开尔文(K) 单位 常用单位:摄氏度(℃) 原理: 根据液体热胀冷缩的性质制成的。
第十二章 小组评估 本章重点问题: 评估的设计 测量工具的选择和资料的收集 与分析.
判断推理,必须学会这些 主讲老师:小胡胡 2016年3月25日20:00 YY频道:
103年桃連區適性入學宣導說明會 桃園縣十二年國民教育宣導團 講 師:大成國中蔡聖賢 校長 時 間:103 年 12月 9日.
9 有理数的乘方.
不会宽容人的人, 是不配受到别人的宽容的。 贝尔奈.
复习回顾 a a×a a×a×a a a×a×a= a×a= 1.如图,边长为a厘米的正方形的面积 为 平方厘米。
巧用叠词,妙趣横生.
忠孝國小自立午餐老師的叮嚀 教師指導手冊.
危害辨識、分析講解及實作演練.
保育员职业技能鉴定.
成功教育研究的新进展 上海市闸北八中新校、闸北八中校长 上海市田家炳中学董事长 刘京海 2003年3月14日.
血 液 循 环.
六年级上册 第三单元 比的意义 江苏省电化教育馆制作.
104年振聲國中 志願選填個別序位 說明會 104年06月08日 輔導室關心您.
华东师范大学 软件工程硕士答辩名单 时间:2016年5月14日、15日.
民法总论 北京师范大学珠海分校 法律与行政学院 白 非.
第2章 LR分 析 法 LR分析法是一种自下而上进行规范归约的语法分析方法,LR指“自左向右扫描和自下而上进行归约”。LR分析法比递归下降分析法、LL(1)分析法和算符优先分析法对文法的限制要少得多,对大多数用无二义的上下文无关文法描述的语言都可以用LR分析器予以识别,而且速度快,并能准确、及时地指出输入串的任何语法错误及出错位置。LR分析法的一个主要缺点是,若用手工构造分析器则工作量相当大,因此必须求助于自动产生LR分析器的产生器。
输血与血型.
第四章 时间序列的分析 本章教学目的:①了解从数量方面研究社会经济现象发展变化过程和发展趋势是统计分析的一种重要方法;②掌握时间数列编制的基本要求;③理解和掌握水平速度两方面指标的计算及运用④理解和掌握长期趋势分析和预测的方法。 本章教学重点:现象发展的水平指标和速度指标。 本章教学难点:现象变动的趋势分析。
“08高考化学学业水平(必修科目)测试的命题和教学对策研究”
苏教版小学数学六年级(下册) 认识正比例的量 执教者:朱勤.
等差数列的应用 虎山中学高一文科备课组 黄小辉.
编译原理与技术 课程总结.
大綱: AAA 性質 SAS 性質 SSS 性質 顧震宇 台灣數位學習科技股份有限公司
1-2 正負數的乘除法.
Part5语法分析 授课:胡静.
平興國中數學週記 作者:孫藝庭 班級:817 指導老師: 阿寶老師.
编译原理与技术 词法分析(1) 2018/11/28 《编译原理与技术》讲义.
如何寫工程計畫書 臺北市童軍會考驗委員會 高級考驗營 版.
語法與修辭 骨&肉 老師:歐秀慧.
Part5语法分析 授课:胡静.
第五章 语法分析——自下而上分析 自上而下分析法(Top-down) 自下而上分析法(Bottom-up) 国防科技大学计算机系602教研室.
第三课时 匀变速直线运动的位移与时 间的关系
第三章 文法和语言 本章目的为语言的语法描述寻求工具,以便: 对源程序给出精确无二义的语法描述。(严谨、简洁、易读)
12.3.1运用公式法 —平方差公式.
第五章 自底向上分析方法 LR(0)分析法 1 LR(K)分析法 第一个L表示:相应的语法分析将按自左至右的顺序扫描输入符号串;
苏 教 版 五 年 级 数 学(上) 用字母表示数 青阳体仁小学 胡春雅.
材料二甲 授課教師:王致傑 老師 (學420、分機5305)
第二部分 集合论 第六章 集合代数 主要内容 集合的基本概念 属于、包含 幂集、空集 文氏图等 集合的基本运算 并、交、补、差等 集合恒等式
第十章 格与布尔代数 10.1 格的定义与性质 1.定义 与群,环,域,不同,格与布尔代数的基集都是一个偏序集,格是具有两个二元运算的代数系统,是一个特殊的偏序集,布尔代数是一个特殊的格。 定义10.1:设是偏序集,若 都有上下确界,则称为格(Lattice) (1)偏序集的任一子集并非都有上下确界,
107上五年級〈社會科〉學校日簡報 教師個人檔案 ★民國77年8月開始任職本校 ★在本校擔任自然科任1年、導師8年、
感 恩 祭 以主為基,毋須過慮 常年期第十五主日 感恩是基督徒生命的「基調」 主 題 2009年7月12日
第五章 自底向上分析方法 LR(0)分析法 1 LR(K)分析法 第一个L表示:相应的语法分析将按自左至右的顺序扫描输入符号串;
大綱:整數的加法 整數的減法 蘇奕君 台灣數位學習科技股份有限公司
大綱: 母子相似性質 內、外分比性質 重點複習 顧震宇 台灣數位學習科技股份有限公司
SLR(1)分析方法.
例  一导体球半径为 R ,带电量 q ,在离球心 O
第2节 向心力与向心加速度.
§12-5 同方向同频率两个简谐振动的合成 一. 同方向同频率的简谐振动的合成 1. 分振动 : 2. 合振动 : 解析法
1.8 完全平方公式(一) 锦州市实验学校 数学组(3).
第2讲 实数的运算及大小比较 考点知识精讲 中考典例精析 举一反三 考点训练.
數列 等差數列 等差中項 自我評量.
1.1.3集合的基本运算 全集与补集.
同底数幂的乘法.
集合的基数 (Cardinal Number)
编译原理 第一章 编译程序概述 第二章 PL/0编译程序的实现 第三章 文法和语言 第四章 词法分析 第五章 自顶向下语法分析方法
以下資料極度機密 使用手冊 1.謹慎閱讀並熟記在心… 因為你可能只有這次機會 2.分析方式,為本門絕招,盡量外傳!! 3.可反覆練習熟練!
用字母表示数(一).
Presentation transcript:

LR(1)分析方法

问题的引入 例1: S → AaAb S → BbBa A →  B →  ZS [1] SAaAb [2] ZS [1] SAaAb [2] SBbBa [3] A  [4] B  [5] Follow(S)={#} Follow(A)={a,b} Follow(B)={b,a} 存在归约-归约冲突 该文法不是SLR(1)文法。 a b # R4/R5 ...

LR(1)方法 LR(0)方法不依赖输入流,直接判定归约,容易出现冲突。 SLR(1)方法简单的把非终极符的Follow集做为可归约的依据,并不精确。 一个非终极符在不同的位置不同状态上出现,它所允许的后继符是不同的。针对产生式的非终极符在不同位置上,分别定义其归约后继符集(展望符集Reducelookup),减少了移入/归约冲突。 LR(0)状态 LR(1)状态 ZS SAaAb SBbBa A  B  # a b ZS SAaAb SBbBa A  B 

LR(1)的基本概念 LR(1)项目:[A→, a ]。LR(0)项目及一个VT{#}的展望符。 IS:LR(1)项目集 IS(X): LR(1)项目集IS对文法符号X的投影 IS(X) = {[A→X,a] |[A→X,a]IS }

LR(1)的基本概念(续) CLOSURE ( IS ) = IS∪ {[B→,b] |[A→B,a] CLOSURE(IS), ZS SAaAb SBbBa A  B  # a b CLOSURE ( IS ) = IS∪ {[B→,b] |[A→B,a] CLOSURE(IS), B→是产生式 , bFirst(a)} GO:若IS是一个LR(1)项目集,X是一个文法符号,则 GO(IS, X)=CLOSURE(IS(X))

构造LR(1)活前缀状态机LRSM1的算法 Step1.构造初始状态IS0:IS0 = CLOSURE({ [Z→ S,#] })。 Step2.从已构造的LRSM1部分图选择未处理的任一状态IS,对每个符号XVTVN,求其后继状态ISj = CLOSURE( IS(X)),同时在IS和ISj之间画有向X边。 重复Step2 ,直至所有状态结点处理完为止。

例:构造下列文法的LR(1)状态机。 1 Z → S 2 S → AaAb 3 S → BbBa 4 A →  5 B →  S a a ZS SAaAb SBbBa A  B  # a b 1 ZS # S 2 SAaAb # 4 SAa Ab A   # b a a 5 SAaA b # A A b B 6 SAaAb # 3 SBbBa # 7 SBb Ba B   # a b 8 SBbB a # 9 SBbBa  # B a

LR(1) 分析表的构造 LR(1)的项目分为两部分:[A→, a ],即项目的心LR(0)项目部分和一个终极符的展望集。展望符望符集{a}是在心的项目分析完,归约到A后,当前输入可能出现的终极符集。{a}在整个项目的投影分析过程都不会改变。 所以,对LR(1)分析表的构造和LR(0)分析表大部分相同,只是在归约动作Ri的矩阵元素的确定上,需要通过展望符集中的字符来确定列项。

S a a A A b B b B a 例:构造下列文法的LR(1)状态机。 1 Z → S 2 S → AaAb 3 S → BbBa ZS SAaAb SBbBa A  B  # a b 1 ZS # S a b # S A B R4 R5 S1 S2 S3 1 Acc 2 S4 3 S7 4 S5 5 S6 6 R2 7 S8 8 S9 9 R3 2 SAaAb # 4 SAa Ab A   # b a a 5 SAaA b # A A b B 6 SAaAb # 3 SBbBa # 7 SBb Ba B   # a b 8 SBbB a # 9 SBbBa  # B a

S a a A A b B b B a 例:构造下列文法的LR(1)状态机。 1 Z → S 2 S → AaAb 3 S → BbBa # S A B R4 R5 S1 S2 S3 1 Acc 2 S4 3 S7 4 S5 5 S6 6 R2 7 S8 8 S9 9 R3 ZS SAaAb SBbBa A  B  # a b 1 ZS # S 2 SAaAb # 4 SAa Ab A   # b a a 5 SAaA b # A A b B 6 SAaAb # 3 SBbBa # 7 SBb Ba B   # a b 8 SBbB a # 9 SBbBa  # B a

LR(1)文法的定义 对于一个文法,若按照上述算法构造的分析表中没有冲突动作,则称该文法为LR(1)文法。

LR(1)分析条件 LR1的活前缀状态机中存在着状态: A1 →1,{a11,a12,…} …, An →n, {an1,an2,…} B1→1 c1r1, {b11,b12,…} Bm→ mcmrm , {bm1,bm2,…} 则集合: {a11,a12,…} 、…、{an1,an2,…}、{c1, …, cm} 两两相交为空。 注: {an1,an2,…} 为A1项的展望符集。 c1, …, cm为可移入终极符,可以有相同者。

Z → S S → L= R S → R L → aR L → b R → L 例:构造下列文法的LR(1)状态机,判断是否为LR(1)文法。 Z → S S → L= R S → R L → aR L → b R → L

L = L a a L L Follow(R)={#,=} 6 ZS # SL=  R # SL=R # R  L # 6 ZS # SL=  R # SL=R # R  L # SR # L = LaR # 2 L LaR = # Lb # SL=R # Lb = = # a a RL # RL # 9 RL # 5 8 L LaR LaR # =# G[Z]: 1. Z → S 2. S → L= R 3. S → R 4. L → aR 5. L → b 6. R → L RL =# RL # LaR =# LaR # Lb =# Lb # L 11 Follow(R)={#,=} RL =#

S R L = L a a b R b a a L b R b R L ZS SL=R SR LaR Lb RL # ZS SL=R SR LaR Lb RL # = # 1 ZS # 6 SL=  R R  L LaR Lb # 7 SL=R  # S R L = 2 SL=R RL # L a a b 9 RL # R b a a 8 LaR RL LaR Lb # 5 LaR RL LaR Lb # = 3 SR # L b R 4 Lb =# b R L 13 LaR # 12 Lb # 10 LaR #= 11 RL # =

没有冲突,是LR(1)文法 a b = # S L R S5 S4 1 2 3 1 Acc 2 S6 R6 3 R3 4 R5 R5 5 S5 S4 1 2 3 1 Acc 2 S6 R6 3 R3 4 R5 R5 5 S5 S4 11 10 6 S8 S12 9 7 没有冲突,是LR(1)文法 7 R2 8 S8 S12 9 13 9 R6 10 R4 R4 11 R6 R6 示例2 12 R5 13 R4

LR(1)驱动程序 LR(1)的驱动程序与SLR(1)的驱动程序是相同的,可共用一个。

例: 设文法G[S]为: SAS |  A aA | b 证明G[S]是LR(1)文法; 构造它的LR(1)分析表; 给出符号串abab#的分析过程

G[Z]: Z → S[0] SAS[1] S [2] A aA[3] A  b[4] S A A S b a b a A a b 1 ZS # 5 S ZS[0] # S AS[1] # A SA S [1] # S [2] # 2 S AaA[3] # ab A SA S[1] # Ab[4] # ab S AS[1] # b G[Z]: Z → S[0] SAS[1] S [2] A aA[3] A  b[4] b a S [2] # AaA[3] ab# Ab[4] ab# a 3 AaA[3] ab# 6 A a AaA[3] ab# AaA [3] ab# Ab[4] ab# b 4 Ab [4] ab#

S A A S b a b a A a b 1 ZS # 5 ZS[0] # S AS[1] # SA S [1] # 1 ZS # 5 S ZS[0] # S AS[1] # A SA S [1] # S [2] # 2 S A AaA[3] # ab SA S[1] # Ab[4] # ab S AS[1] # b a b # s3 s4 R2 1 Acc 2 3 4 R4 5 R1 6 R3 A S 2 1 5 3 6 4 b a S [2] # AaA[3] ab# Ab[4] ab# a 3 AaA[3] ab# 6 A a AaA[3] ab# AaA [3] ab# Ab[4] ab# b 4 Ab [4] ab#

Action Goto 状态栈 符号栈 输入流 动作 G[Z]: Z → S[0] SAS[1] S [2] A aA[3] b # S3 S4 R2 1 Acc 2 3 4 R4 5 R1 6 R3 A S 2 1 5 3 6 4 # abab# 移入S3 03 #a bab # 移入S4 034 #ab ab # 归约R4转S6 036 #aA ab # 归约R3转S2 02 #A ab # 移入S3 023 #Aa b # 移入S4 0234 #Aab # 归约R4转S6 0236 #AaA # 归约R3转S2 022 #AA # 归约R2转S5 G[Z]: Z → S[0] SAS[1] S [2] A aA[3] A  b[4] 0225 #AAS # 归约R1转S5 025 #AS # 归约R1转S1 01 #S # 成功

例: 非LR(1)文法 设有下列文法: LMLb|a M 说明上述文法是否为LR(1)文法,若不是,请说明理由。 Z  L # 非LR(1)文法 Z  L # L  MLb # L  a # M   a

(1) 构造该文法的LR(1)可归活前缀状态机,并构造LR(1)分析表。 练习: 设有文法G[Z]如下: Z AB [1] A aB [2] | b [3] B aB [4] | b [5] (1) 构造该文法的LR(1)可归活前缀状态机,并构造LR(1)分析表。 (2) 试应用LR(1)分析技术,使用下表格式识别输入符号串abb是否为文法G[Z]的句子。 表2 状态栈 符号栈 输入串 分析动作 转向状态 # abb#   ...