编译原理:文法和语言总结与梳理
1. 梳理第二章的内容,写一篇理解与总结。 一、 对程序设计语言的描述从语法、语义和语用三个因素考虑: 语法:对语言结构的定义; 语义:语言的含义; 语用:从使用的角度描述语言。 形式语言理论是编译的理论基础。 二、 字母表:元素的非空有穷集合; 符号/字符:字母表中的元素; 符号串:符号的有穷序列。 三、 符号串运算: 符号串的连接:εx=xε=x; 集合的乘积:AB={xy|x∈A,y∈B};{ε}A=A{ε}=A; 符号串的幂运算:x=abc,x^2=abcabc; 集合的幂运算 正闭包A+与闭包A*:A*={ε}∪A+ 四、 形式语言:字母表上按照某种规则构成的所有符号串的集合,其不考虑语义。描述形式语言的方式有两种: 枚举——当语言为有穷集合时; 文法——描述了无穷集合的语言。 五、 文法:G=(Vn,Vt,P,S) 规则P:也称为产生式,是一个符号与一个符号串的有序对(A,β) A→β i. 一组规则定义了一个语言的语法结构; ii. 规则中出现的符号分为终结符号和非终结符号 b) Vn为非终结符(non-terminate); c) Vt为终结符(terminate); d) S为非终结符号,称为文法的开始符号/识别符号,至少要在一条规则的左部出现。 六、 推导:推导的依据是规则 a) 直接推导:仅使用一次规则; b) 推导:至少使用一次规则; c)