
Compiler Technology
dyson.zhang
信心是命运的主宰!
展开
-
编译原理(一) Chomsky文法
一、明确定义0型文法:对任一产生式α→β,都有α∈(VN∪VT)+, β∈(VN∪VT)*1型文法:对任一产生式α→β,都有|β|≥|α|, 仅仅 α→ε除外2型文法:对任一产生式α→β,都有α∈VN , β∈(VN∪VT)*3型文法:任一产生式α→β的形式都为A→aB或A→a,其中A∈VN,B∈VN,a∈VT。上述叫做右线性文法,另有左线性文法,二者等价。二、基本思路转载 2017-10-09 15:46:57 · 1808 阅读 · 0 评论 -
编译原理(五) LL(1)文法分析法-预测分析表的构造
基本定义FIRST(α):令G是一个不含左递归的文法,对G的所有非终结符的每个候选α定义它的终结首符集FIRST(α)为: FIRST(α)={a | α=>*a…, a∈VT} 若α=>*ε,则规定ε∈FIRST(α)FIRST(α)是α的所有可能推导的开头终结符或可能的ε 如果非终结符A的所有候选首符集两两不相交,即A的任何两个不同候选αi和αj FIRST(αi)转载 2017-10-09 16:37:23 · 24010 阅读 · 1 评论 -
编译原理(十) SLR文法分析法-算法原理
前情提要因为SLR文法分析法就是对LR(0)的一种优化,它提供了一种解决冲突的方法,所以很多之前在LR(0)提及的东西,在此只提供一个引用。 LR(0)文法分析法算法描述SLR文法构造分析表的主要思想是:许多冲突性的动作都可能通过考察有关非终结符的FOLLOW集而获解决。 解决冲突的方法:解决冲突的方法是分析所有含A和B的句型,考察集合FOLLOW(A)和FOLLOW(B),如转载 2017-10-09 18:03:42 · 7007 阅读 · 0 评论 -
编译原理(九) LR(0)文法分析法-算法描述
概念梳理最左推导:每一步替换最左边的非终结符 最右推导:每一步替换最右边的非终结符,最右推导称为规范推导 短语:令G是一个文法,S是文法的开始符号,假定αβδ是文法G的一个句型,如果有S⇒∗αAδ且A⇒+β则称 β是相对于非终结符A的, 句型αβδ的短语。 直接短语:令G是一个文法,S是文法的开始符号,假定αβδ是文法G的一个句型,如果有S⇒∗αAδ且A⇒β转载 2017-10-09 18:02:02 · 15886 阅读 · 6 评论 -
编译原理(八) 算符优先分析法-分析过程
前情提要算符优先分析法(构造算法优先关系表)算法描述算符优先关系主要用于界定右句型的句柄:标记句柄的左端; =出现在句柄的内部; >标记句柄的右端。发现句柄的过程:从左端开始扫描串,直到遇到第一个>为止。向左扫描,跳过所有的=,直到遇到一个句柄包括从上一步遇到的左部之间的所有符号,包括介于期间或者两边的非终结符非终结符的处理: 因为非终结符不能影转载 2017-10-09 17:23:12 · 6020 阅读 · 0 评论 -
编译原理(六) LL(1)文法分析法-分析过程
前情了解快速通道算法分析预测分析程序的总控程序在任何时候都是按STACK栈顶符号X和当前的输入符号a行事的。如下图所示,对于任何(X,a),总控程序每次都执行下述三种可能的动作之一:若X = a = ‘#’,则宣布分析成功,停止分析过程。若X = a ≠‘#’,则把X从STACK栈顶弹出,让a指向下一个输入符号。若X是一个非终结符,则查看分析表M。 若M[X,a]中转载 2017-10-09 16:44:10 · 2435 阅读 · 1 评论 -
编译原理(四) 消除回溯提取左因子法
概念简述回溯:分析工作部分地或全部地退回到之前的一个阶段,在当前阶段采取与之前不同的决策重新推进工作 FIRST(α):令G是一个不含左递归的文法,对G的所有非终结符的每个候选α定义它的终结首符集FIRST(α)为:FIRST(α)={a | α=>*a…, a∈VT} 若α=>*ε,则规定ε∈FIRST(α)FIRST(α)是α的所有可能推导的开头终结符或可能的ε消除回溯转载 2017-10-09 16:19:07 · 8084 阅读 · 0 评论 -
编译原理(三) 消除文法左递归
算法的功能对于任意上下文无关的文法消除左递归问题分析一、产生式直接消除左递归形如P→Pα|β可以通过直接消除转化为:P→βP′P′→αP′|ϵ二、产生式间接消除左递归有时候虽然形式上产生式没有递归,但是因为形成了环,所以导致进行闭包运算后出现左递归,如下:S→Qc|cQ→Rb|bR→Sa|a虽不具有左递归,但S、Q、R都是左递归的,因为经过若干次推导转载 2017-10-09 16:09:40 · 5033 阅读 · 0 评论 -
编译原理(二) NFA的确定化及DFA的最小化
1. NFA的确定化1.1. 明确NFA的定义一个非确定的有穷自动机(NFA)M是一个五元式:M=(S,∑,δ,S0,F)S是一个有限集,它额每个元素称为一个状态。∑是一个有穷字母表,它的每个元素称为一个输入字符δ是一个从S×∑∗至S子集额单值映射。即:δ:S×∑∗→2⋅SS0⊆S,是一个非空的初态集F⊂ S , 是一个终态集(可空)1.2. 定义运算定转载 2017-10-09 15:55:41 · 10700 阅读 · 0 评论 -
编译原理(七) 算符优先分析法-构造算符优先关系表算法
概念简述移动归约分析法:自底向上的语法分析方法,也称为移动归约分析法。最易于实现的一种移动归约分析方法,叫做算符优先分析法,而更一般的移动归约分析方法叫做LR分析法,LR分析法可以用作许多自动的语法分析器的生成器。短语:文法G[S],αβδ是文法G的一个句型,S=>*αAδ且A=>+β则称β是句型αβδ相对于非终结符A的短语。直接短语:若有A ⇒+β则称β是句型αβδ相转载 2017-10-09 17:03:14 · 12557 阅读 · 0 评论