跳转至

语法分析

约 233 个字 预计阅读时间 1 分钟

语法分析器的基本作用

从词法分析器获得 Token 序列,确认该序列是否可以由语言的文法生成

  • 对于语法错误的程序,报告错误信息
  • 对于语法正确的程序,生成语法分析树(简称语法树)
    • 通常产生的是抽象语法树 (AST)

Parse Tree 不是 AST

语法分析器

目前语法分析器的实现有下面两种方法:

  • By-hand (recursive descent)
    • Clang, gcc (Since 3.4)
    • Libraries can make this easier (e.g.,parser combinators-parsec)
  • Use a parser generator
    • Much easier to get right ("Specification is the implementation")
    • Gcc (Before 3.4), Glasgow Haskell Compiler, OCaml
    • Parser generator: Yacc, Bison, ANTLR, menhir

手写的原因可能包括语法太过复杂,手写反而方便一些 (GCC 3.4 later)

由于语法分析的内容比较多,本章将分为四部分进行记录:


最后更新: 2024年4月23日 16:17:02
创建日期: 2024年4月23日 16:17:02