文法分析小结:自底向上的分析方法和自顶向下的分析方法有哪些
来源:互联网 发布:java 读取文本文件 编辑:程序博客网 时间:2024/05/30 02:24
首先注意一点:无论是那种语法分析,语法都是从左至右的读入符号!
自底向上分析法,也称移进-归约分析法。
它的实现思想是对输入符号串自左向右进行扫描,并将输入符逐个移入一个后进先出栈中,边移入边分析,一旦栈顶符号串形成某个句型的句柄时,(该句柄对应某产生式的右部),就用该产生式的左部非终结符代替相应右部的文法符号串,这称为一步归约。重复这一过程直到归约到栈中只剩文法的开始符号时则为分析成功,也就确认输入串是文法的句子。
总结了一下子,方便做题的时候查一下,省的总是翻书找半天,而且书上也没有很明确的总结和说明。
自底向上的分析技术 有:
( 1 )简单优先分析法
( 2 )算符优先分析法
( 3 )优先函数
( 4 ) LR 分析法
确定的自顶向下分析方法
是从某文法的开始符号出发,考虑如何根据当前的输入符号(单词符号)唯一地确定选用哪个产生式替换相应非终结符往下推导,或如何构造一棵相应的语法树,其末端结点以从左向右的顺序连接正好为给定的输入符号串,则所给的输入符号串为该文法的句子。
自顶向下的分析技术 有:
( 1 )LL(1)分析法
( 2 )递归下降分析法
其中如何判断是LL(1)文法:
我们可以用 LL(1) 法来解析的语法被称为 LL(1) 语法( LL(1) grammar ),当且仅当一种语法具有以下特性时,此语法才是 LL(1) 语法:
对该语法中的任何非终结符 A ,若其所有产生式为: A -> u1 | u2 | ... | un ,则:
(1) First(u1), First(u2), ... First(un) 互不相交;
(2) 若有一个 First(ui) 中含 ε ,则 Follow(A), First(u1), First(u2), ... First(un) 互不相交。
判别一种语法是否是 LL(1) 语法的方法就是构造其分析表,若构造过程中没有发现冲突,也就是表中的任何元素 M[X, a] 最多只有一个动作,那么此语法就是 LL(1) 语法。
递归下降分析法用的比较少,在自底向上的分析法中,我们用的比较多的是LR分析法,构建LR分析表都是编译原理的重点。
嗯,先总结到这。
- 文法分析小结:自底向上的分析方法和自顶向下的分析方法有哪些
- 不确定的自顶向下的分析思想和确定的自顶向下的分析方法
- python自顶向下的设计方法进行体育竞技分析
- 自顶向下语法分析方法:LL(1)文法的判别
- 自顶向下和自底向上测试的优缺点
- 自顶向下设计, 自底向上的执行, 软件开发方法
- 语法分析 自顶向下分析
- 【软件测试】简述自顶向下和自底向上两种集成测试方法
- 《数据结构与算法分析》详细对比自顶向下与自底向上红黑树——C实现自顶向下插入与删除
- LL(1)文法分析,自上向下
- 自顶向下的设计方法
- 自顶向下的归并排序和自底向上的归并排序
- 实验二——自顶向下分析方法之表驱动LL(1)分析程序
- C++数据结构--自顶向下和自底向上的动态编程思想
- 自顶向下和自底向上的归并排序区别
- 怎么求编译原理自顶向下分析的first集follow集和select
- 自顶向下向底向上开发信息系统的优缺点
- 编译原理之自顶向下分析
- 详解UCOS中的内存管理
- Spring--AOP-引入
- 程序之缘,程序之美,缘来很美
- android 完美解决ListView + editText
- JavaScript简单的函数练习
- 文法分析小结:自底向上的分析方法和自顶向下的分析方法有哪些
- Unity中使用命令模式,实现撤销、回放的操作
- windows远程连接问题
- uboot命令行模式run_command函数的实现
- oracle自定义table在存储过程里面的使
- VTK 数据结构
- 3、远程连接、vmware网卡(桥接、nat..)
- js继承
- 迁移mysql数据目录