编译原理:文法和语言总结与梳理
2020-12-13 15:31
标签:过程调用 相同 文法 ash 形式语言 mic spl 说明 连接 一、 对程序设计语言的描述从语法、语义和语用三个因素考虑: 形式语言理论是编译的理论基础。 二、 字母表:元素的非空有穷集合; 三、 符号串运算: 四、 形式语言:字母表上按照某种规则构成的所有符号串的集合,其不考虑语义。描述形式语言的方式有两种: 五、 文法:G=(Vn,Vt,P,S) A→β 六、 推导:推导的依据是规则 七、 句型、句子和语言: 八、 递归: i. 规则左递归:A->A…; 九、 短语、直接短语和句柄:都是针对某一句型的 十、 文法的二义性: 定义:如果一个文法存在某个句子对应两棵不同的语法树|包含两个或两个以上的最右(最左)推导(规约),则该文法是二义性的,可以利用文法之间的等价性来消除二义性。 十一、 文法的分类: i. 右线性文法:只能对推出式的右边展开,A->αB|α,A,B∈Vn,α∈Vt*。 PL/0语言文法的BNF表示: 〈程序〉→〈分程序〉. 〈分程序〉→ [][][]〈语句〉 → CONST{ ,}; → = → {} → VAR{ ,}; → {|} → ;{} → procedure; → ||||| || → := → begin{;}end → |odd → [+|-]{} → {} → ||() → +|- → *|/ → =|#||>= → ifthen → call → whiledo → read({,}) → write({,}) → a|b|c…x|y|z → 0|1|2…7|8|9 如果一个文法存在某个句子对应两棵不同的语法树|包含两个或两个以上的最右(最左)推导(规约),则该文法是二义性的,可以利用文法之间的等价性来消除二义性。 编译原理:文法和语言总结与梳理 标签:过程调用 相同 文法 ash 形式语言 mic spl 说明 连接 原文地址:https://www.cnblogs.com/zhif97/p/11583562.html
1. 梳理第二章的内容,写一篇理解与总结。
i. 一组规则定义了一个语言的语法结构;
ii. 规则中出现的符号分为终结符号和非终结符号
ii. 规则右递归:A->…A;
iii. 规则递归:A->…A…;
ii. 左线性文法:只能对推出式的左边展开,A->Bα|α,A,B∈Vn,α∈Vt*。
2. 尝试写出PL/0 语言的文法。(或者你认为比较好的语言规则)