语 法 分 析

语法分析器功能

语法分析的工作是分析一个个独立的单词之间的组合规则从而获得文本的含义,检查错误

步骤:产生文法–>消除二义性–>消除左递归–>提取左因子–>写成巴克斯范式–>编程语言实现

产生文法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

消除二义性(改写文法)

二义性:产生的分析树不止一棵
产生二义性的原因是文法缺少对文法符号结合性和优先级的规定

消除二义性的步骤:

1.分析运算符的优先级和结合性
在这里插入图片描述
2.引入新的非终结符,增加一个结构并提高优先级、
高于二元加减的运算符共有四类,所以要引入四个新的非终结符,依次是Term,Factor,Compomnent,Atom
3**.确定结合性**
在这里插入图片描述
因此Expression在+或-的左边出现,Term在*或/的左边出现,Factor在-或+的右边出现,Power在**de 右边出现,从而得到产生式:
在这里插入图片描述






消除直接左递归

消除方法:例如A->Aa|b这个产生式中有直接左递归,消除左递归后文法为A->b**A* A->aA|e(空产生式的符号)
构造的文法中以下产生式均含有直接左递归
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
消除左递归后的产生式:
在这里插入图片描述
在这里插入图片描述
至此左递归消除完毕







提取左因子

在这里插入图片描述
Component产生式中含有左因子Atom
在这里插入图片描述![

将文法的各产生式写成扩展的巴科斯范式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章