# LoxSharp **Repository Path**: dayang1415/lox-sharp ## Basic Information - **Project Name**: LoxSharp - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-04 - **Last Updated**: 2026-01-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LoxSharp — 基于《Crafting Interpreters》用 C# 开发的解释器语言 LoxSharp 是基于 Robert Nystrom 《Crafting Interpreters》一书的经典脚本语言 Lox 的 C# 实现。 项目通过逐步实现词法分析器(Scanner)、语法解析器(Parser)、抽象语法树(AST)、解释器(Interpreter)等模块,打造一门完整的解释型脚本语言。 --- ## 🚀 功能特色 - 词法分析:将源码拆分成词法单元(Token) - 语法分析:递归下降解析生成抽象语法树(AST) - 解释执行:树遍历解释器,支持表达式求值、变量、控制流等 - 作用域管理:环境链实现局部变量和全局变量 - 支持常见语言特性:变量声明、赋值、条件判断、循环、函数调用等 --- ## 🛠️ 开发计划 - [x] 完成基础词法分析(Scanner) - [x] 支持单字符符号(括号、运算符、分号等) - [x] 支持数字字面量(整数和浮点数) - [x] 支持字符串字面量 - [x] 支持标识符(变量名)和关键字识别 - [x] 处理注释和空白字符 - [ ] 实现基础语法分析器(Parser) - [ ] 递归下降解析表达式(加减乘除、括号) - [ ] 解析变量声明和赋值语句 - [ ] 支持条件语句(if/else) - [ ] 支持循环语句(while) - [ ] 语法错误检测与报告 - [x] 实现树遍历解释器(Interpreter) - [x] 表达式求值(算术、比较、逻辑运算) - [ ] 变量绑定和作用域管理 - [ ] 执行语句(打印、条件、循环) - [ ] 函数声明和调用 - [ ] 返回值和调用栈管理 - [ ] 扩展完整语法特性 - [ ] 支持类和对象的声明与实例化 - [ ] 实现继承和方法重写 - [ ] 支持闭包和匿名函数(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 // 自定义异常 ```