用 C++ 从零实现的脚本语言解释器,参考Python架构设计,实现了完整的图灵完备执行能力。
理解编程语言从源代码到执行结果的完整链路:词法分析、语法解析、AST 构建、运行时求值。
核心能力:
1.完整的解释执行流程:词法分析→语法解析→AST→树遍历执行,支持变量、条件、循环、函数定义与调用
2.模块系统:支持import导入其他脚本文件,实现代码复用和模块化组织
3.C++DLL扩展机制:支持加载原生C++动态库作为扩展模块,脚本可直接调用DLL中导出的函数,实现了脚本语言与原生代码的互操作
4.标准库:内置数学库等基础功能模块
词法分析器(Lexer):手写tokenizer,逐字符扫描源码,识别关键字、标识符、字符串、数字、运算符等token类型,处理字符串转义、多行表达式等边界情况。
语法解析器(Parser):采用递归下降方式,将token流解析为抽象语法树(AST)。支持表达式优先级(算术→比较→逻辑)、函数定义、控制流语句、赋值与复合赋值等语法结构。
运行时(Runtime):树遍历式求值,维护作用域链实现变量查找和函数调用的栈帧管理。支持动态类型(整数、浮点、字符串、布尔、列表、None),运行时类型检查和自动类型转换。
模块与 DLL 机制:import语句触发文件加载→独立解析→执行并将导出符号注入当前作用域。