
编译原理
Jane_96
谁说妹子不可以写代码的
展开
-
编译原理之证明LL(1)文法
LL(1)文法的证明方法一个文法G是LL(1)的,当且仅当G的任意两个不同的产生式A -> α | β 满足下面的条件: 1. 不存在终结符号a使得α 和 β 都能够推导出以a开头的串。 2. α 和 β中最多只有一个可以推导出空串。 3. 如果 β =>* ε,那么α不能推导出任何以FOLLOW(A)中某个终结符号开头的串。类似的,如果 α =>* ε,那么β不能推导...原创 2018-04-11 15:25:30 · 19868 阅读 · 5 评论 -
编译原理之文法的分类和判别
1.文法的分类Chomsky文法分类将文法分为四种,逐渐对产生式施加限制形成一个层次:0型:G = (VT , VN , S , P) 规则形式:α → β ,α,β∈(VT , VN) *,α ≠ ε 推导:γαδ ⇒ γβδ1型(上下文有关):规则α → β 有|α|≤|β| 规则形式:ξAη→ξγη,A ∈ VN,ξ , γ , η ∈(VT , VN) * , γ ≠ ...原创 2018-04-21 16:48:35 · 12509 阅读 · 12 评论 -
编译原理之最左推导和最右推导
1.定义最左推导:任何一步α => β都是对阿尔法中的最左非终结符进行替换左右推导:任何一步α => β都是对阿尔法中的最右非终结符进行替换2.抛出一个小栗子文法G(E)为:E -> T | E + T |E - TT -> F | T * F | T / FF -> (E) | i给出i + i * i 的最左推导和最右推导。思...原创 2018-04-20 21:15:13 · 57071 阅读 · 25 评论 -
编译原理之找短语、句柄、素短语等
1.定义句型、句子、语言 设文法G=(VT,VN,S和P)。如果S =>* α,则称α是一个句型。仅含终结符号的句型是一个句子。语言 L(G)是有文法G产生的所有句子组成的集合:L(G) = {α | S =>* α,且α∈VT* }短语、直接短语、句柄 令G是一个文法,S是文法的开始符号,假定αβδ是文法G的一个句型,如果有S =>* αAδ 且 A =>+ ...原创 2018-04-20 20:13:59 · 3804 阅读 · 1 评论 -
编译原理之构造预测分析表
构造预测分析表算法对于文法G的每个产生式A -> α ,进行如下处理: 1. 对于FIRST(α)中的每个终结符号α,将A -> α加入到M[A , a]中。 2. 如果 ε 在FIRST(α) 中,那么对于FOLLOW(A)中的每个终结符号b,将A -> α加入到M[A , b]中。如果 ε 在FIRST(α) 中,且$在FOLLOW(A)中,也将A -> α加入...原创 2018-04-11 15:59:08 · 13890 阅读 · 1 评论 -
编译原理之基本概念
前缀移走s的尾部的零个或者多于零个符号所得子串后缀删去s的头部的零个或多个零个符号所得子串子串从s中删去一个前缀和一个后缀所得子串真前缀、真后缀和真子串不是s和ε的前缀、后缀和子串子序列从s中删去零个或多于零个符号(不要求是连续)逆转将s中的符号按相反次序写出而得到的符号串长度符号串中符号的数目语言确定字符表上字符串的集合。字符表上所有字...原创 2018-04-24 16:40:07 · 1047 阅读 · 0 评论 -
编译原理之识别FORTRAN实型常数的DFA模拟过程
识别FORTRAN实型常数的转换图 模拟过程:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>int main(){ char digits[100]; enum States{Start,One,Two,Three,...原创 2018-04-11 21:25:04 · 1255 阅读 · 1 评论 -
编译原理之不带回溯的递归子程序
文法G1: S -> a | ∩ | (T) T -> T , S | S(1) 消去G1的左递归。 S -> a | ∩ | (T) T -> ST’ T -> ,ST’ | ε(2)写出不带回溯的递归子程序PROCEDURE S;BEGIN IF SYM = 'a' OR SYM = '∩' THEN BEG...原创 2018-04-11 19:40:37 · 7497 阅读 · 0 评论 -
编译原理之算符优先分析的两个有趣小栗子
今天上编译原理课时,老师讲了些非常有意思的知识,总结一下,也分享给大家~先抛出一个小栗子大家思考一下,i + i - i * (i + i)这个运算表达式先算哪部分?此处思考三分钟。。。。 我相信,大多数人和博主一样第一感觉先算括号 里面的,但是理智又告诉我,应该先算左边第一个加号更合适。但是,博主却不能清晰的说出原因。。,,ԾㅂԾ,,那么我们先来分析,为什么第一感觉会是...原创 2018-04-17 11:25:12 · 651 阅读 · 0 评论 -
编译原理之计算FIRST集合和FOLLOW集合
FIRST集合的求解规则计算各个文法符号X的FIRST(X)时,不断应用下列规则,直到再没有新的终结符号或者ε可以被加入到任何FIRST集合中为止。 如果X是一个终结符号,那么FIRST(X) = X。 如果X是一个非终结符号,且X -> Y1Y2 …Yk是一个产生式,其中k ≥ 1,那么如果对于某个i , a 在FIRST(Yi)中且ε在所有的FIRST(Y1)、FI...原创 2018-04-11 13:24:00 · 16588 阅读 · 16 评论 -
编译原理小练习附带答案
编译程序中词法分析阶段的主要任务是把高级语言源程序变成单词字符串删除多余的空格、回车、注释指出源程序的错误在文法的分类中,识别上下文相关文法的自动机是线性界限自动机LBA;识别2型文法的自动机是下推自动机PDA在自下而上的语法分析方法中,LR分析方法中的核心问题是句柄识别问题,而在算符优先分析法中主要识别的是最左素短语。在LL(1)分析法中,要求文法是LL(1)的,则必须解决的问题...原创 2018-07-06 17:02:17 · 3845 阅读 · 0 评论