编译基础
约 333 字大约 1 分钟
2025-12-08
编译器与解释器
编译器和解释器都要经过词法分析和语法分析,主要的不同在于编译的过程生成机器代码然后执行出结果,而解释器则直接进行求值的过程。这是一个已经简化了的过程,主要是为了引出后面的词法分析和语法分析的程序部分。
词法分析和语法分析
当词法分析器收到一个表达式 33 + 5 + 17 的时候,它会将它转换为一连串的 token。如果出现了不应出现的字符,或者字符组合,那么程序就会报错。
语法分析器将 token 序列转换成抽象语法树 AST。如果 token 序列出现了类似 33 +,虽然词法分析器可以转换,但是无法匹配到合法的 AST 规则中去,也会报错。根据 AST 规则,33 + 5 + 17 可以被解析为下面的 AST。
