语法分析-自上而下分析

前言

  语法:语言学的一个分支,研究按确定用法来运用的"词类"、"词"的屈折变化表示相互关系的其他手段以及词在句中的功能和关系。也就是说,语法的意义更多的是用来表达“词”的功能和属性

     语法分析器:将词法分析程序所产生的的单词符号流作为输入串,按一定的规则分析检查是否构成合法的句子,(通俗的点说,在单词没有写错的基础上,检查单词组合是否出现问题)


自上而下分析的基本问题

  • 自上而下分析,字面意思从语法树的底部向上分析(也即归约)至语法树的顶部,从而确定语法的正确性。
  • 实现自上而下分析关键问题如何找到“可规约串”,如何判断栈顶的字符串的可归约性及与候选式匹配(自上而下分析是一边输入一边规约的),及实现如下效果:

  

  • 一般对于句子的理解,都是由左向右开始解读,如同生活中阅读一样,同样语法分析只是模拟了这个过程,观察如下图的语法树,其语法为S->xAy,观察的过程即模拟语法分析器的工作过程,从最左边开始逐步向右分析。所以对于语法树能找到最左边的归约项是由为重要的,也即句柄,下面是关于句柄定义的介绍。

    1)短语:对于文法S=>abc,若S=>aAc,且A=+>b,则称b是句型abc相对于非终结符A的短语(语法树中句型不含有”开叉“的非终结符)

    2)直接短语:对于文法S=>abc,若S=>aAc,且A=>b,则称b是句型abc相对于非终结符A的短语

    3)句柄:一个句型最左边的直接短语称之为句柄

运用句柄对句子进行规约:1,短语有,"x*y",”*“。直接短语,“*”,也即句柄。

            2,当识别到“*”时与候选式A->*匹配规约,

            3,规约后识别到字符串xAy时与候选式S->xAy进行匹配规约为S结束。

  •  规范规约

a是文法G的一个句子,序列an......a0是a的一个规范规约

对于规范归约而言,最关键的就是确定一个句型的句柄,不同的寻找句柄的算法即不同的规范归约方法

PS:若文法G是无二意的,则规范退到的逆过程必然是规范归约。


算符优先分析

LR分析法

语法分析器的自动生成工具

总结

猜你喜欢

转载自www.cnblogs.com/MrHCD/p/10896090.html