语法分析--编译原理

语法分析

语法分析在词法分析之后,采用上下文无关文法来描述程序语言的语法结构,主要是将现行的单词符号序列转换为分析树

1.1 自顶向下

  • 采用深度延伸的方法来完成推导(从头到尾,直到发现不行)
    语法分析--编译原理
  • 存在的问题:左递归带来的死循环
  • 左递归种类和消除
    (1)直接左递归:A→Aa
             消除:将A变成A,A’
    语法分析--编译原理
    (2)间接左递归:A→Ba,B→A
    (3)隐性左递归:A→aA,a→ε
             两者都是用代入
    语法分析--编译原理
  • 具体操作:
    (1)排序
    (2)代入处理间接和隐性递归(将前面的带入后面的)
    (3)解决直接递归
    语法分析--编译原理
语法分析--编译原理S,A过程
语法分析--编译原理A,S过程
语法分析--编译原理对比