解释器 #编译原理 #概述文档

概述

项目源于我希望去弥补自己在计算机方面的知识不足,开始在极客时间学习编译器原理。
课程在: 编译原理之美
课程的源码:PlayWithCompiler

项目是课程: 01 ~ 05 之间的内容的一个整合实现
我的实现: https://gitee.com/kmyss/yss-compiler/tree/master/03-%E8%84%9A%E6%9C%AC%E8%A7%A3%E9%87%8A%E5%99%A8
对源项目的解析在 【分析-编译原理】编译原理之美手动实现脚本解释器源码分析

项目设计目标

下面内容摘录自课程

实现一个简单的脚本解释器。

  • 支持变量声明和初始化语句,就像“int age” “int age = 45”和“int age = 17+8+20”
  • 支持赋值语句“age = 45”
  • 支持括号的运算
  • 在表达式中可以使用变量,例如“age + 10 * 2”
  • 支持加减乘除四则运算。
  • 实现一个命令行终端,能够读取输入的语句并输出结果。

编译器的基础原理

编译器包括如下技术知识点:可以划分为前端和后端两个部分,对于简易脚本解释器只需要了解前端技术即可。
简易脚本解释器 - 图1

  • 词法分析(Lexical Analysis)

利用状态机分析出所有的 词法记号(Token)。

  • 语法分析 (Syntactic Analysis, or Parsing)

根据语法规则形成抽象树 AST 。构造语法数可以利用递归下降算法。

  • 语义分析(Semantic Analysis)

对上下文内容进行分析。

实战开发

构建词法分析器
构建语法解析器