递归下降分析
2017-05-12 12:58
120 查看
递归下降分析算法,也称为预测分析
优点:
1).分析高效(线性时间)2).容易实现(方便手工编码)
3).错误定位和诊断信息准确
4).被很多开源和商业的编译器所采用(如GCC 4.0, LLVM,。。。)
算法基本思想:
1).每个非终结符构造一个分析函数2).用前看符号指导产生式规则的选择
————————————————————————————————————————————
伪代码:
parse_S() parse_N() parse_V() parse_N() parse_N() token = tokens[i++] if (token==s||token==t||token==g||token==w) return; else error(“…”); parse_V() token = tokens[i++] …// leave this part to you
summary:采用了“分治”思想
————————————————————————————————————————————
一般的算法框架:
parse_X() token = nextToken() switch(token) case …: // β 11 … β 1i case …: // β 21 … β 2j case …: // β 31 … β 3k … default: error (“…”);
————————————————————————————————————————————
对算术表达式的递归下降分析:
// a first try parse_E() token = tokens[i++] if (token==num) ? // E+T or T else error(“…”); //this is a problem
// a second try parse_E() parse_T() token = tokens[i++] while (token == +) parse_T() token = tokens[i++] parse_T() parse_F() token = tokens[i++] while (token == *) parse_F() token = tokens[i++]
相关文章推荐
- 递归下降分析子程序
- 递归下降语法分析程序的设计与实现
- 简单的递归下降分析
- 编译原理实验3——递归下降分析
- 递归下降的语法分析
- 递归下降语法分析程序
- 1220-递归下降语义分析程序
- 编译原理学习笔记05——(识别孙悟空72变之魔鬼特训—递归下降分析程序构造)——2014_1_20
- 语法分析:算术表达式递归下降分析程序设计
- +递归下降语法分析程序设计
- 自顶向下的语法分析–递归下降分析–表达式求值
- 利用递归下降分析解决表达式求值问题之noj35
- Java实现C语言语义分析(递归下降)
- 递归下降语法分析
- 【现代编译器】语法分析——正则表达式,上下文无关文法,递归下降分析,分析树
- 递归下降语法分析程序
- 使用递归下降算法分析数学表达式 -- 基于堆栈的计算器实现算法
- 编译原理--递归下降语法分析源代码(C Language)
- 【编译原理】自顶向下的语法分析之递归下降分析法
- 递归下降分析法--算数语法分析