# SmallLang **Repository Path**: zmcp/small-lang ## Basic Information - **Project Name**: SmallLang - **Description**: 这个是一个编程语言 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-15 - **Last Updated**: 2026-06-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SmallLang - 轻量级脚本语言 SmallLang 是一个简单、易学的解释型编程语言,支持变量、函数、循环、条件判断等基本特性。语法清晰,适合学习编译器原理或作为脚本工具使用。 ## ✨ 特性 - 变量定义:`let x = 10` - 数学运算:`+ - * /` - 输出函数:`print(x)` - 条件判断:`if x > 5 then ... end` - 循环结构:`while x < 10 do ... end` - 函数定义:`func add(a, b) return a + b end` - 函数调用:`add(3, 5)` ## 📦 安装 ### 1. 下载解释器 将 `sl_runner.py` 放到 `C:\Program Files\SmallLang\` 目录下。 ### 2. 注册文件关联(Windows) 双击 `install.reg` 文件导入注册表: ```reg Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\.sl] @="SmallLangFile" [HKEY_CLASSES_ROOT\SmallLangFile\shell\open\command] @="python \"C:\\Program Files\\SmallLang\\sl_runner.py\" \"%1\"" ``` ### 3. 将 Python 加入 PATH(如果未安装) 确保系统已安装 Python 3.6+,并能通过 `python` 命令调用。 ## 🚀 快速开始 创建 `hello.sl` 文件: ```small let name = "World" print("Hello, " + name) let x = 10 let y = 20 print(x + y) func square(n) return n * n end print(square(5)) ``` 双击运行或在命令行执行: ```bash python sl_runner.py hello.sl ``` 输出: ``` Hello, World 30 25 ``` ## 📖 语法手册 ### 变量 ```small let a = 10 let b = a + 5 let c = a * b ``` ### 输出 ```small print(100) print("text") print(a + b) ``` ### 条件判断 ```small if score >= 60 then print("及格") else print("不及格") end ``` ### 循环 ```small let i = 1 while i <= 5 do print(i) let i = i + 1 end ``` ### 函数 ```small func add(a, b) return a + b end let result = add(3, 7) print(result) ``` ### 运算符 | 类型 | 运算符 | |------|--------| | 算术 | `+` `-` `*` `/` | | 比较 | `>` `<` `==` `!=` `>=` `<=` | ## 🧪 运行测试 创建一个 `test.sl` 文件: ```small func factorial(n) if n <= 1 then return 1 else return n * factorial(n - 1) end end print(factorial(5)) ``` 预期输出:`120` ## 🛠️ 项目结构 ``` SmallLang/ ├── sl_runner.py # 解释器主程序 ├── install.reg # Windows 注册表文件 ├── README.md # 本文件 └── examples/ # 示例代码 ├── hello.sl ├── factorial.sl └── loop.sl ``` ## 🧩 扩展开发 SmallLang 基于 Python 实现,包含三个核心模块: - **Lexer**:词法分析,将代码转为 Token - **Parser**:语法分析,生成 AST - **Interpreter**:执行 AST,管理变量和函数 想要添加新特性?修改对应的模块即可: - 添加字符串类型:修改 Lexer 和 Interpreter - 添加数组:扩展 Parser 和 Interpreter - 添加 `for` 循环:在 Parser 中添加新规则 ## 📄 许可证 MIT License ## 🤝 贡献 欢迎提交 Issue 和 Pull Request! ## 📧 联系方式 如有问题,请在 GitHub Issues 中提出。 ## ⚠️ 已知限制 - 仅支持整数运算(除法返回浮点数) - 字符串仅支持字面量输出,不支持拼接 - 全局变量与局部变量共享同一命名空间 - 暂不支持 `else if` 链式判断 ## 🔮 未来计划 - [ ] 支持字符串拼接 - [ ] 增加 `for` 循环 - [ ] 添加数组类型 - [ ] 实现 `else if` - [ ] 模块化支持 - [ ] 编译为字节码