自上而下分析法

来源:互联网 发布:南宁广电网络收费标准 编辑:程序博客网 时间:2024/06/06 13:18

归约:
 -- 自下而上的语法分析过程
 -- 分类: 简单优先分析法,算符优先分析法,LR分析法

1.自下而上的语法分析过程思想
 -- 是一个最左归约的过程, 从输入串开始, 朝着文法的开始符号进行规约,直到

文法到达文法的开始符号为止的过程。
 -- 工作方式: 移进--规约
 -- 即: 自左至右把输入串的符号以一个移进栈,在移进过程中不断查看栈顶符号

串,一旦形成某个巨型的句柄时,就将此句柄用相应的产生式左部替换(规约), 若

形成句柄就继续替换,知道栈顶不在形成句柄为止.然后继续移进符号,重复上面的

过程知道栈顶只剩下文法的开始符号.
1.简单有限分析法
 *句柄内各相邻符号之间具有相同的优先级
 *句柄两端符号的优先级高于句柄之外的相邻符号
 *产生式不含任何右部相同的不同产生式, 也不包含空串
优点: 技术简单
缺点: 使用范围小,分析表尺寸大(罗列出所有符号之间的优先级关系)

2. 算符优先分析法
* 仿效四则运算的计算过程而构造的一种语法分析方法
* 简单直观,特别方便表达式分析,易于手工实现,自下而上归约,但未必按照句柄

归约
3.算符优先分析法的关键
* 规定算符的优先级及结合性
* 比较两个相继出现的终结符的优先级而决定应采取的动作
* 先定义各种可能相继出现的运算符优先级,用矩阵表示.查询矩阵元素而得到算

符之间的优先关系(二元矩阵, 行列为各终结符,元素为优先级关系)
优点: 简单,易于手工实现,适用于分析各种算术表达式
      很方便的把表达式译成目标指令
缺点: 用两个堆栈,会把错误句子当成合法句子,无法指出输入串错误位置
      单目算术不好处理
算符文法: 两个算符之间只有一个操作符,产生式右部都不含两个相继的非终结符
      G中任何两个终结符(a,b),最多只有一种关系.称G为算符优先文法(OPG)
      两个终结符之间只有一个非终结符

 

原创粉丝点击