Skip to content

DavideYang125/LoxSharp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

LoxSharp — 基于《Crafting Interpreters》用 C# 开发的解释器语言

LoxSharp 是基于 Robert Nystrom 《Crafting Interpreters》一书的经典脚本语言 Lox 的 C# 实现。
项目通过逐步实现词法分析器(Scanner)、语法解析器(Parser)、抽象语法树(AST)、解释器(Interpreter)等模块,打造一门完整的解释型脚本语言。


🚀 功能特色

  • 词法分析:将源码拆分成词法单元(Token)
  • 语法分析:递归下降解析生成抽象语法树(AST)
  • 解释执行:树遍历解释器,支持表达式求值、变量、控制流等
  • 作用域管理:环境链实现局部变量和全局变量
  • 支持常见语言特性:变量声明、赋值、条件判断、循环、函数调用等

🛠️ 开发计划

  • 完成基础词法分析(Scanner)

    • 支持单字符符号(括号、运算符、分号等)
    • 支持数字字面量(整数和浮点数)
    • 支持字符串字面量
    • 支持标识符(变量名)和关键字识别
    • 处理注释和空白字符
  • 实现基础语法分析器(Parser)

    • 递归下降解析表达式(加减乘除、括号)
    • 解析变量声明和赋值语句
    • 支持条件语句(if/else)
    • 支持循环语句(while)
    • 语法错误检测与报告
  • 实现树遍历解释器(Interpreter)

    • 表达式求值(算术、比较、逻辑运算)
    • 变量绑定和作用域管理
    • 执行语句(打印、条件、循环)
    • 函数声明和调用
    • 返回值和调用栈管理
  • 扩展完整语法特性

    • 支持类和对象的声明与实例化
    • 实现继承和方法重写
    • 支持闭包和匿名函数(Lambda)
    • 实现异常处理机制(try/catch)
  • 错误处理和调试支持

    • 运行时错误捕获与详细信息输出
    • 语法和词法错误高亮和定位
    • 调试功能(断点、单步执行,简单堆栈跟踪)
  • 未来性能优化方向

    • 实现字节码生成器和字节码虚拟机
    • 栈帧和寄存器优化
    • 引入垃圾回收机制(标记-清扫GC)
    • 即时编译(JIT)技术探索

项目结构规划

我们会逐步构建如下模块:

LoxSharp/
├── Program.cs                // 主入口
├── Scanner.cs               // 词法分析器
├── Token.cs                 // 词法标记定义
├── Parser.cs                // 语法解析器
├── Ast/                     // 抽象语法树(AST)节点
│   ├── Expr.cs
│   ├── Stmt.cs
├── Interpreter.cs           // 执行 AST 的解释器
├── Environment.cs           // 变量作用域管理
├── RuntimeError.cs          // 运行时错误处理
└── LoxException.cs          // 自定义异常

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages