Skip to content

Latest commit

 

History

History
43 lines (32 loc) · 1.54 KB

README.md

File metadata and controls

43 lines (32 loc) · 1.54 KB

🧐 Let’s Build A Simple Interpreter.

“不闻不若闻之,闻之若不见之,见之不若知之,知之不若行之。” —— 荀子

仓库名称 lsbasi 是 Let’s Build A Simple Interpreter 首字母缩写。

原作者的 repo 。由于我想自己实现一遍,所以并没有直接 fork 。

顺便写了一个踩坑记录,主要记录学习过程中遇到问题的解决方案以及一些心得体会。

🥳 Commit

常用 emoji 含义如下:

  • ✨ 引入新功能。
  • 🐛 解决 bug 。
  • 📝 更新文档。

🎉 TODO

从算术表达式开始逐步扩展,几乎任何语言都支持算术表达式。

  • 算术表达式。

    • 不带空格的一位整数加法。
    • 支持多位整数,跳过空格功能。支持减法。
    • 多个多位整数的加减法。
    • 乘除实现。
    • 加减乘除混合后的优先级处理。
    • 支持括号。
    • 语法分析树改为抽象语法树(AST)。
    • 观察者模式。
    • 支持一元表达式。
  • Pascal 解释器:

    • 处理 Pascal 关键字 token。
    • 支持解析 Pascal header 。
    • 采用 div 来做整数除法,采用 / 来做浮点数除法。
    • 支持 Pascal 注释。
    • 支持函数。
    • 符号表管理。
    • 嵌套作用域。
    • 报错处理。(提供行号和列号以及错误类型等信息)
    • Executing Procedure Calls。