使用ANTLR执行词法分析

词法分析

输入c语言代码,输出是词法单元流,用于给语法分析器使用。语法分析器会按需向词法分析器一个个索要token

image.png

词法单元规约:有一个很小很小的语言来规定词法的构成,一般为lex语法

词法分析器的三种分析方法:

  1. ANTLR(最简单):使用ANTLR自动构建,十分傻瓜
  2. 手写词法分析器(中等):
    • 自己实现一个字符串匹配算法,不难但是很繁琐。
    • 一般生产环境下也是这样写,gcc中c语言的词法分析器有1k行,而cpp的有4k行。
  3. 手写自动化词法分析器(最难):自己写一个ANTLR

ANTLR

  • 输入:词法单元的规约(正则表达式
  • 输出:词法分析器
    • Tokens文件:词法单元规约
    • Java/c/go文件:词法分析器

Example