语法分析
语法分析,词法分析,语义分析直接将我拍在了沙滩上,我已经懵了,这篇不建议看,我只是从书中取出一个大概的框架,深层次的东西还没有挖掘。
-
简介
- 作为编译过程的核心部分,语法分析根据一定的语法规则,通过语法分析程序进行分析,识别出各类语法成分,进行语法检查。
-
语法分析程序
- 作用
- 输入:记号流/记号序列
- 输出:分析树
- 功能:将记号组合成语法成分,语法检查
- 作用
-
分析方法
-
自顶向下的方法
-
递归下降分析
- 从文法的开始符号出发,视图推出要分析的输入串的过程,自顶向下的为输入串建立一棵分析树
- 文法的每一个非终结符号对应一个递归过程,即可实现这种带回溯的递归下降分析方法。
- 每个过程作为一个布尔过程,一旦发现它的某个产生式与输入串匹配,则用该产生式展开分析树,并返回true,否则分析树不变,返回false。
-
递归调用预测分析
- 特点:确定的,不带回溯的递归下降分析方法
- 牵涉到转换图,不展开来说了
-
非递归预测分析
- 使用一张分析表和一个栈联合控制,实现对输入符号串的自顶向下分析。
- 模型
- 输入缓冲区:存放用于分析的符号串
- 符号栈:存放文法符号,$存放栈底,作为标识
- 分析表:在分析表中找到被调用的产生式
- 输出流:用于不断产生的产生式序列
-
-
-
自底向上的方法
- 分析方法:
- 从输入符号串开始分析
- 查找当前句型的可归约串
- 使用规则,将其规约成相应的非终结符号
- 分析方法:
-
LR分析法
- 简介
- L——表示自左至右扫描
- R——表示输入符号串构造一个最右腿到的逆过程
- K——表示做出分析决定,向前看的输入符号个数
- 作用
- 无回溯
- 能分析无关上下文
- 及时发现错误
- 模型
- 简介
-
软件工具
- YACC(Yet Another Compiler-Compiler)
- 过程