一个使用现代C++20实现的Pineapple语言解释器,具有高性能、内存安全和良好的错误处理特性。
Pineapple是一种简单的脚本语言,支持变量赋值和打印功能。本项目是其C++实现,采用了现代C++20特性,包括:
std::string_view用于零拷贝字符串处理std::variant实现类型安全的AST节点std::optional处理可选值- 结构化绑定和移动语义
- RAII资源管理
- 异常安全的错误处理
原项目地址:https://github.com/karminski/pineapple
- 🚀 高性能:使用现代C++优化,零拷贝字符串处理
- 🛡️ 内存安全:RAII资源管理,无内存泄漏
- 🎯 错误处理:详细的错误信息和异常安全保证
- 📖 简单易用:简洁的语法和直观的API
- 🔧 现代构建:使用xmake构建系统,支持多种配置
- C++20兼容编译器(推荐Clang 12+或GCC 10+)
- xmake构建系统
- CMake(可选,用于IDE集成)
- 克隆仓库:
git clone https://github.com/your-username/pineapple.git
cd pineapple- 构建项目:
xmake build- 运行示例:
xmake run pineapple hello-world.pineapplePineapple支持两种基本操作:变量赋值和打印。
# 变量赋值
$a = "Hello, World!"
# 打印变量
print($a)
创建一个名为example.pineapple的文件:
# 基本示例
$greeting = "Hello, Pineapple!"
print($greeting)
# 多行字符串
$multiline = "
This is a
multi-line string
example.
"
print($multiline)
# 变量重新赋值
$message = "Original message"
$message = "Updated message"
print($message)
运行示例:
./pineapple example.pineapplepineapple/
├── src/
│ ├── main.cpp # 主程序入口
│ ├── pineapple.h # 核心实现(头文件)
│ └── tests.cpp # 测试代码
├── hello-world.pineapple # 示例代码
├── xmake.lua # 构建配置
└── README.md # 项目文档
本项目采用经典解释器架构:
- 词法分析器(Lexer):将源代码转换为标记流
- 语法分析器(Parser):构建抽象语法树(AST)
- 解释器(Interpreter):执行AST节点
- Token系统:使用强类型枚举定义标记类型
- AST节点:使用
std::variant实现类型安全的节点表示 - 访问者模式:使用
std::visit和重载函数对象实现AST遍历
项目采用RAII原则,确保资源自动释放:
- 使用智能指针管理动态内存
- 移动语义减少不必要的拷贝
string_view避免字符串拷贝
运行测试:
xmake build tests
./tests使用Valgrind进行内存泄漏检测:
xmake f -m valgrind
xmake build
valgrind --tool=memcheck --leak-check=full ./pineapple欢迎贡献代码!请遵循以下步骤:
- Fork本项目
- 创建特性分支:
git checkout -b feature/amazing-feature - 提交更改:
git commit -m 'Add amazing feature' - 推送到分支:
git push origin feature/amazing-feature - 创建Pull Request
- 遵循现代C++最佳实践
- 使用clang-format格式化代码
- 添加适当的注释和文档
- 确保所有测试通过
本项目采用MIT许可证 - 查看LICENSE文件了解详情。
- 感谢karminski创建的原始Pineapple项目
- 感谢所有贡献者的努力
如有问题或建议,请通过以下方式联系:
- 提交Issue
⭐ 如果这个项目对你有帮助,请给它一个星标!