编译原理(语法分析)
文章目录 上下文无关文法 下推自动机PDA 自上而下语法分析 二义性 消除左递归 提取公共左因子 预测分析程序 自下而上语法分析 LR(0) 活前缀 项目 SLR(1) 如何判断一个文法是不是SLR(1)? 上下文无关文法 与正规式属于同一层面,表达语法分析的基本单元 越接近根节点的运算优先级越低 运算符左结合和右结合的判断: S=A+S 则+是右结合 A=A*id 则*是左结合 CSL上下文有关文法,sensitive CFL上下文无关文法,free 下推自动机PDA 相比NA自动机,多了下推栈和下推栈内字母表 给定语言,如何写出他的下推自动机? 例如L={a n cb n ,n>=0} 写出他对应的文法,S→aSb | c 生成相应的PDA M 这4个映射关系的含义 1,2,3的映射代表了栈顶是a,读头指向了a,用空串替换了栈里的a 4的映射代表了读头指向了S,栈中没有与之匹配的,故用空串表示,然后向栈里压入S的文法表达,aSb或者c PDA的推导过程,首先收到语言aacbb,栈内是S,表头指向a,因此用aSb替换掉栈内的S,此时栈顶变为a,a对a,抵消,以此类推,如果能抵消掉整个字符串,即最后#对#,代表这个语言符合语法,与定义的文法保持一致; 自上而下语法分析 自上而下分析的含义 从符号开始 从左到右 推导出最后的句子, 自上而下 建立它的分析树