韩天峰
|
8ec0723ed5
|
feat(php): 添加匿名类支持和常量数据处理功能
- 添加 ANON_CLASS 常量用于生成匿名类名称
- 添加 constData 数组用于存储常量数据
- 实现 genAnonClassName 方法生成唯一匿名类名
- 修复 Stmt_Class 处理中的 break 语句缺失问题
- 扩展 parsePostOp 方法支持数组维度获取并检查未定义变量
- 实现 packData 和 addConstData 方法处理字节数据打包
- 在 parseNew 方法中实现对匿名类的完整支持
- 在生成的 C++ 代码中添加常量数据段输出
|
7 months ago |
韩天峰
|
aa6be88c6c
|
feat(php): 添加对PHP枚举类型的支持
- 在ClassDef实体中添加enum属性用于标识枚举类
- 修改编译器基类以支持枚举常量访问的特殊处理
- 移除旧的枚举示例文件并添加新的测试用例
- 更新翻译器以识别和标记枚举类型的类定义
|
7 months ago |
韩天峰
|
9de6ca6a41
|
feat(php): 添加枚举支持并优化代码打印功能
- 引入 PhpParser\PrettyPrinter 用于代码格式化
- 添加 PrettyPrinter 实例变量用于代码美化输出
- 实现 parseEnum 方法处理枚举语法解析
- 添加 genEmbeddedCode 方法生成嵌入式代码
- 在语法解析器中添加 Stmt_Enum 分支处理
- 修复 parseStatic 方法参数类型声明
- 优化原生静态方法调用逻辑增加空值检查
- 添加枚举功能的测试用例文件
|
7 months ago |
韩天峰
|
a72752828f
|
feat(php): 添加对 match 表达式的支持
- 实现了 match 表达式的解析和编译功能
- 添加了多个测试用例验证 match 表达式的基本功能
- 包括基本匹配、默认情况、多条件匹配等功能测试
- 实现了 match 表达式的错误处理机制
- 添加了对重复条件和尾随逗号的支持测试
- 更新了 AST 节点类型检查以支持 Match_ 表达式
- 在常量列表中添加 bool 类型支持
|
7 months ago |
韩天峰
|
46e15ca247
|
feat(compiler): 添加对 Match 表达式和枚举的支持
- 在 CompilerBase 中添加了对 Expr_Match 节点的解析支持
- 修改 parseTernary 方法参数类型为 Node\Expr\Ternary
- 添加了 parseMatch 方法用于处理 Match 表达式
- 在 Preprocessor 中添加对 Stmt_Enum 和 Stmt_EnumCase 的预处理支持
- 扩展 prepareClass 方法以支持枚举类型的处理
- 在 Translator 中添加对 Stmt_Enum 的翻译支持
- 修改 parseClass 方法以正确处理枚举定义
- 添加测试文件 closure_016.phpt 和 closure_017.phpt 验证闭包功能
- 添加枚举示例文件 enum1.php 展示枚举用法
|
7 months ago |
韩天峰
|
bd06dcf0a5
|
fix(compiler): 修复返回语句缺少分号及未定义变量错误提示问题
- 修复了编译器中return语句缺少分号的问题
- 修正了未定义变量错误提示中的变量名显示格式
- 统一使用errorUndefinedVariable方法处理闭包中未定义变量的情况
- 添加了对closure_011和closure_013测试用例的支持
|
7 months ago |
韩天峰
|
67427f342d
|
feat(closure): 添加闭包功能支持并完善相关测试用例
- 添加了嵌套lambda表达式的支持,实现类中的闭包嵌套功能
- 实现了preg_replace_callback中lambda表达式的使用场景
- 支持在lambda内部使用静态变量的功能
- 完善了闭包自调用的实现逻辑
- 添加了四个新的闭包测试用例(closure_007-010)
- 在编译器基类中增加了inClosure状态标识
- 修复了return语句在闭包中的处理逻辑
- 更新了闭包函数体的返回值处理方式
|
7 months ago |
韩天峰
|
be22aa751f
|
refactor(php): 使用常量替换硬编码的 php::null 值
- 添加 VALUE_NULL 常量用于表示 php::null
- 将 offsetSet 方法中的硬编码 null 替换为常量引用
- 将函数返回语句中的硬编码 null 替换为常量引用
- 将数组赋值中的硬编码 null 替换为常量引用
- 将常量解析中的硬编码 null 替换为常量引用
- 修复函数末尾缺失返回语句时使用 NaN 常量作为默认返回值
|
7 months ago |
韩天峰
|
288f1dddef
|
feat(closure): 实现闭包功能支持类内部方法访问$this
- 添加closure_005.phpt和closure_006.phpt测试用例验证闭包功能
- 修改CompilerBase.php中函数定义相关属性为可空类型并添加methodDef
- 实现resetMethod方法重置方法定义状态
- 优化函数参数和局部变量处理逻辑
- 添加genLocalVarDecl和genReturnCode方法生成变量声明和返回代码
- 改进闭包解析逻辑支持返回类型声明
- 更新newClosure调用传递this_参数支持类内闭包访问实例
- 重构MethodDef构造函数移除FunctionDef参数依赖
|
7 months ago |
韩天峰
|
8bc3c66499
|
feat(examples): 添加PHP扩展示例和曼德布罗特集计算功能
- 新增 myext/test.php 文件,包含基本的PHP函数示例
- 添加 bench/test1.cc 文件,实现曼德布罗特集图像生成功能
- 实现复数迭代算法用于绘制曼德布罗特分形图像
- 添加文件输出和内存流处理功能
- 集成PHPX库进行原生C++与PHP交互
- 实现命令行参数解析和图像尺寸控制
- 添加二进制和文本格式输出支持
|
7 months ago |
韩天峰
|
51939af82f
|
test(closures): 添加闭包词法变量测试用例并修复引用转换逻辑
- 添加 closure_003.phpt 测试本地作用域词法变量的闭包功能
- 添加 closure_004.phpt 测试作用域生命周期词法变量的闭包功能
- 修改 convertToRef 方法修复原生类型变量引用转换检查逻辑
- 更新编译器基类中的引用转换实现以正确处理变量类型检查
|
7 months ago |
韩天峰
|
b3dc15a55f
|
feat(closures): 实现闭包功能支持
- 添加了闭包类型常量 php::Args
- 实现了原生类型检查方法 isNativeType
- 添加了引用转换方法 convertToRef 处理变量引用
- 修改闭包函数签名使用 php::Args 类型
- 实现了闭包 use 子句中引用传递的支持
- 添加了两个闭包测试用例验证基本功能和引用传递
|
7 months ago |
韩天峰
|
752767012f
|
feat(compiler): 添加对goto语句的支持
- 引入OP_NOP常量用于处理标签后的空操作
- 修改语句解析循环以跟踪最后一条语句
- 在标签语句后添加空操作防止代码优化问题
- 添加jump02和jump03测试用例验证goto功能
- 创建mv.php脚本用于文件重命名和git添加操作
|
7 months ago |
韩天峰
|
82e13b62f1
|
test(increment): 添加字符串和类型递增递减操作测试
- 添加字符串递增递减功能测试用例
- 添加各种数据类型递增递减操作测试
- 添加goto跳转语句基础功能测试
- 验证不同字符串值的递增递减行为
- 测试数组对象资源等类型的递增递减错误处理
- 包含空值布尔值数字等基本类型的操作验证
|
7 months ago |
韩天峰
|
e0a4e2f977
|
feat(compiler): 添加空合并赋值运算符支持并优化变量检查
- 实现了 ??= 运算符的解析和编译功能
- 添加了变量存在性检查的改进实现
- 增加了左值有效性验证确保赋值操作合法
- 更新了测试用例覆盖空合并赋值的各种场景
- 修复了 stray code 检查的错误定位问题
- 在编译器基类中增加了 isset 和 empty 操作常量定义
|
7 months ago |
韩天峰
|
f2e7b70043
|
feat(compiler): 添加闭包表达式支持
- 在 CompilerBase.php 中添加对 Expr_Closure 节点类型的解析处理
- 实现 parseClosure 方法来编译 PHP 闭包为 C++ 代码
- 添加临时变量生成和缩进级别管理逻辑
- 处理闭包参数和 use 子句中的变量捕获
- 验证闭包中使用的变量是否已定义
- 添加闭包示例文件 closure.php 和对应测试文件
- 修复 fcall.php 中的调试输出注释问题
|
7 months ago |
韩天峰
|
60ba3da404
|
fix(php): 修复编译器中未定义变量检查和引用参数处理逻辑
- 重构引用参数处理逻辑,统一处理未定义变量作为引用的情况
- 添加对属性访问和数组索引操作中未定义变量的检查
- 修复临时变量创建和替换逻辑,确保引用类型参数正确传递
- 修改未定义变量错误报告机制,增强编译时错误检测
- 优化变量引用转换流程,提高代码生成的准确性
|
7 months ago |
韩天峰
|
7e5b6ef045
|
fix(const): 修复命名空间常量定义和引用问题
- 在常量名称前添加命名空间前缀以支持命名空间常量
- 将常量信息存储结构扩展为包含命名空间和名称字段
- 使用转义后的命名空间名称作为常量查找键值
- 更新模板中常量遍历变量名以避免混淆
- 修复常量定义时的字符串转义处理
- 添加命名空间常量测试用例验证功能
- 实现参数信息存根文件名生成方法
|
7 months ago |
韩天峰
|
0c02958589
|
feat(php): 添加复杂命名空间规则支持并优化函数名转义
- 实现复杂命名空间组合规则,支持 use foo\bar; bar\fn() 形式的调用
- 新增 escapeZendFnName 方法用于函数名转义处理
- 使用统一的函数名转义机制替换模板中的硬编码逻辑
- 移除函数定义中的静态关键字以提高灵活性
|
7 months ago |
韩天峰
|
9118fc4e33
|
feat(compiler): 支持函数别名和命名空间功能
- 实现了函数导入别名功能,解决命名冲突问题
- 添加了命名空间支持,包括嵌套命名空间解析
- 更新了函数定义实体类以支持命名空间属性
- 修改了编译器基础类中的函数解析逻辑
- 调整了扩展模板中函数注册的命名空间处理
- 优化了预处理器中的命名空间定义逻辑
- 完善了翻译器中函数包装器的命名空间支持
- 新增了函数别名查找和解析功能
- 添加了相关测试用例验证功能正确性
|
7 months ago |
韩天峰
|
ca4a34204c
|
feat(compiler): 添加对 main 函数的特殊支持和参数验证
- 在编译器中实现 main 函数的特殊处理逻辑
- 验证 main 函数的参数必须为 (int $argc, array $argv) 格式
- 确保 main 函数返回类型为 void
- 在扩展模板中添加 main 函数调用支持
- 根据构建模式条件编译模块入口点
- 移除旧的静态 main 函数调用方式
- 更新示例项目以使用正确的 main 函数签名
|
7 months ago |
韩天峰
|
288021d16c
|
feat(compiler): 添加对孤立代码的检测和错误处理
- 在 CompilerBase 中添加 foundStrayCode 方法用于报告孤立代码错误
- 在 Preprocessor 中为 Stmt_Expression 类型添加孤立代码检测
- 防止在扩展模式下生成名为 main 的函数
- 添加 empty-2.phpt 测试用例验证空值合并操作符功能
|
7 months ago |
韩天峰
|
4b42419be4
|
feat(php): 添加对空合并运算符的支持
- 在编译器中实现对 Expr_BinaryOp_Coalesce 节点类型的解析
- 添加 parseBinaryOpCoalesce 方法处理空合并运算符逻辑
- 使用 isset 检查左侧表达式并返回相应的三元运算符结构
- 将左侧标识符解析为变量检查表达式,右侧作为默认值
|
7 months ago |
韩天峰
|
668f440254
|
refactor(php): 移除循环变量声明的特殊处理逻辑
- 删除了对 Expr_Assign 类型表达式的特殊处理
- 移除了循环变量声明的本地变量添加逻辑
- 简化了条件表达式解析流程
- 统一了表达式处理方式,不再区分赋值表达式类型
|
7 months ago |
韩天峰
|
209b9cb81d
|
test(aot): 添加对象链接操作符测试用例
- 创建了 TestAttrRef 类用于测试属性引用功能
- 实现了构造函数中的数组排序和切片操作逻辑
- 添加了主函数用于实例化测试对象并传入参数
- 定义了预期输出验证数组操作结果的正确性
|
7 months ago |
韩天峰
|
548f7ce496
|
fix(php): 修复数组赋值表达式中的变量检测和返回值处理
- 修复了数组项解析时的变量作用域问题
- 添加了赋值表达式状态的临时保存和恢复机制
- 改进了变量表达式的类型检查逻辑
- 修复了void类型函数的返回值处理
- 确保非void类型的函数返回正确的空值表示
|
7 months ago |
韩天峰
|
2acc84659a
|
feat(compiler): 添加原生静态方法查找和数组维度引用功能
- 新增 getNativeStaticMethod 方法用于查找原生静态方法
- 添加对数字类型变量使用 [] 操作的错误检查
- 实现数组维度获取的引用参数处理逻辑
- 支持静态方法调用时的原生函数优化
- 添加 item-ref 测试用例验证数组引用功能
|
7 months ago |
韩天峰
|
8fd83ae8b0
|
feat(trie): 添加字典树数据结构实现
- 实现了Node和Trie类的基本结构
- 添加了insert方法用于插入单词
- 添加了search方法用于搜索完整单词
- 添加了startsWith方法用于前缀匹配
- 实现了字典树的完整功能逻辑
fix(compiler): 修复变量声明和数组访问的代码生成问题
- 为int、float、bool类型变量添加默认初始化值0
- 修复数组维度解析中的括号处理逻辑
- 解决赋值表达式上下文中的数组访问问题
example(prime): 添加素数计算性能测试示例
- 实现了NthPrime函数计算第n个素数
- 添加了时间测量功能
- 提供了30000个素数计算的性能测试用例
|
7 months ago |
韩天峰
|
75a9309801
|
feat(php): 添加标量类型检查和yield表达式支持
- 新增AstNodeType::isScalar方法用于检查标量类型
- 在CompilerBase中添加对Expr_Yield和Expr_YieldFrom表达式的错误处理
- 修改变量表达式判断逻辑,排除标量类型的情况
- 添加digit_count示例程序用于数字位数计算性能测试
|
7 months ago |
韩天峰
|
d81c4cda62
|
fix(core): 修复数字文件名编译问题并优化代码结构
- 在run-tests.php中为数字文件名添加'app_'前缀以避免命名冲突
- 在Translator.php中为数字目标名称添加'app_'前缀以确保有效标识符
- 重构NativeCallToCDecl函数中的参数列表构建逻辑,调整代码顺序以提高可读性
- 添加测试用例验证岛屿周长计算算法的正确性
|
7 months ago |
韩天峰
|
92bd1fe56c
|
refactor(php): 优化编译器基础类的类型声明和控制流逻辑
- 将stop方法的返回类型从void改为never
- 简化多个条件分支中的else语句和break语句
- 更新parseFunction方法参数类型并添加异常注解
- 修改parseIdentifier方法参数类型为NodeAbstract
- 添加对continue语句的循环上下文检查
- 移除未使用的NodeAbstract导入
- 为Skip异常类添加文件头注释
- 重构函数调用优化器中的条件逻辑
|
7 months ago |
韩天峰
|
b39c2c4891
|
fix(php): 修复字符串数组访问语法错误
- 移除无效的 offsetSet 方法调用
- 解决字符串无法使用 [] 操作符的问题
|
7 months ago |
韩天峰
|
fe34c72c87
|
feat(compiler): 添加调试信息生成功能
- 在编译器选项配置中新增 debug-info 参数支持
- 在编译器基类中实现 genDebugInfo 方法用于生成调试信息
- 修改 parseAssignPropertyArrayDim 和 parseParentMethodCall 方法为受保护访问级别
- 在翻译器中集成 debug-info 命令行参数处理逻辑
- 更新属性赋值方式从 getPropertyIndirect 改为 attr 方法
- 在 C++ 主程序中添加异常处理时的未清理关闭标记
|
7 months ago |
韩天峰
|
a39a2e389a
|
fix(php): 修复字符串偏移设置功能
- 移除了调试用的 var_dump 语句
- 在数组维度存储解析中正确管理 inAssignExpr 状态
- 修正测试文件中的测试名称描述
|
7 months ago |
韩天峰
|
2d81a3975d
|
feat(php): 添加字符串数组索引赋值支持
- 实现字符串类型的数组维度获取解析功能
- 添加字符串索引赋值的类型检测和错误处理
- 支持字符串的 offsetSet 操作转换
- 新增字符串数组索引赋值的功能测试用例
- 处理字符串索引为 null 时的错误情况
- 实现字符串变量类型检查机制
|
7 months ago |
韩天峰
|
8257f8a1c4
|
feat(generator): 添加常量符号注册功能
- 启用数组和对象常量定义支持
- 实现符号注册函数自动生成
- 添加 register_symbols 扩展模板支持
- 优化常量解析跳过复杂类型处理
- 新增模块符号注册函数匹配逻辑
|
7 months ago |
韩天峰
|
47e85c9de4
|
refactor(Php): 移除 strlen 等函数的特殊优化处理
- 从 FuncCallOptimizer 中移除了对 strlen、sizeof、count 函数的特殊转换逻辑
- 在 MagicMethodDetector 中为 __call 方法添加了参数类型验证
- 为 __toString、__serialize、__unserialize 等魔术方法添加了返回值和参数类型验证
- 为 __isset、__unset、__set_state、__debugInfo 等魔术方法添加了类型检查规则
- 添加了字符串类型参数验证以确保魔术方法符合 PHP 规范
- 添加了数组类型返回值验证以确保序列化相关方法正确实现
|
7 months ago |
韩天峰
|
1d6e7522ab
|
refactor(php): 将PHP实体类移动到Entity子命名空间
- 将ClassDef.php移至src/Php/Entity/ClassDef.php并更新命名空间
- 将ClassLikeDef.php移至src/Php/Entity/ClassLikeDef.php并更新命名空间
- 将ConstantDef.php移至src/Php/Entity/ConstantDef.php并更新命名空间
- 将FunctionDef.php移至src/Php/Entity/FunctionDef.php并更新命名空间
- 将InterfaceDef.php移至src/Php/Entity/InterfaceDef.php并更新命名空间
- 将MethodDef.php移至src/Php/Entity/MethodDef.php并更新命名空间
- 将PropertyDef.php移至src/Php/Entity/PropertyDef.php并更新命名空间
- 更新CompilerBase.php中的实体类引用路径
- 更新MagicMethodDetector.php中的MethodDef引用路径
- 更新Translator.php中的所有实体类引用路径
|
7 months ago |
韩天峰
|
67ace98bb6
|
refactor(php): 将异常类移动到Exception命名空间
- 将RedoException重命名为Redo并移至PhpAot\Php\Exception命名空间
- 将SkipException重命名为Skip并移至PhpAot\Php\Exception命名空间
- 将SyntaxError移至PhpAot\Php\Exception命名空间
- 将Unsupported移至PhpAot\Php\Exception命名空间
- 更新所有相关文件中的use语句和异常引用
- 移除不再使用的PrettyPrinter导入
|
7 months ago |
韩天峰
|
d91362c032
|
refactor(Php): 简化属性引用方法并重构测试代码结构
- 将 getPropertyReference 方法调用替换为 attrRef 方法
- 移除全局作用域中的实例化和调用代码
- 将测试代码封装到 main 函数中
- 保持原有的全排列算法功能不变
|
7 months ago |
韩天峰
|
c3eb2d2f3f
|
refactor(php): 重构 isset 和 empty 表达式解析逻辑
- 将 parseIsset 方法重构为只支持单个变量检查
- 添加 parseVarCheckExpr 通用方法处理 isset 和 empty 操作
- 移除 parseEmpty 方法中的重复代码逻辑
- 支持静态属性获取表达式的 isset 和 empty 检查
- 更新错误消息模板以反映正确的操作符名称
- 添加 isset-test.phpt 测试文件验证功能
- 扩展 empty-test.phpt 包含静态属性测试用例
|
7 months ago |
韩天峰
|
0723e9f01f
|
feat(php): 添加对引用参数和命名参数的错误检查
- 在参数解析过程中添加了对引用参数(byRef)的支持检查
- 在函数调用中添加了对命名参数的支持检查
- 当遇到引用参数时抛出致命错误
- 当遇到命名参数时抛出致命错误
- 更新示例文件以注释相关测试代码
|
7 months ago |
韩天峰
|
120e89ac79
|
feat(examples): 添加多个示例文件演示核心功能
- 添加 autoload_class.php 示例演示类自动加载功能
- 添加 check_parser_api.php 示例验证 PHP 解析器 API 正确性
- 添加 file_scanner_example.php 示例展示文件扫描器基本用法
- 添加 file_scanner_usage.php 示例演示文件扫描器高级用法
- 添加 scan_with_exclusions.php 示例展示排除模式功能
- 添加 simple_scan.php 示例演示简单扫描操作
- 添加 test_exclusions.php 示例测试排除模式有效性
- 添加 test_fnmatch.php 示例验证路径匹配函数行为
- 添加 test_php_parser_check.php 示例测试 PHP 解析器语法检查
- 添加 test_php_syntax_check.php 示例验证 PHP 语法检查功能
- 添加 trait.php 示例演示 trait 特性用法
|
7 months ago |
韩天峰
|
423c10fe47
|
feat(compiler): 实现空值检查表达式解析功能
- 添加了对复杂嵌套表达式的 empty() 函数支持
- 实现了数组维度获取和属性访问的解析逻辑
- 添加了 SkipException 类用于跳过错误节点处理
- 优化了全局变量访问的错误处理机制
- 增强了类型转换和函数调用的参数处理
- 更新了测试用例验证空值检查功能正确性
- 修复了编译器在处理未定义类时的错误判断
|
7 months ago |
韩天峰
|
4ce8c24765
|
refactor(php): 优化编译器中的赋值表达式处理逻辑
- 移除重复的变量检查函数,简化右关联赋值解析
- 重构赋值表达式中的临时变量生成逻辑
- 改进数组维度获取的变量验证流程
- 修复变量作用域管理中的状态恢复问题
- 优化未定义变量错误处理与本地变量添加逻辑
|
7 months ago |
韩天峰
|
3c63ff2cfd
|
feat(stub): 优化常量表达式打印逻辑
- 添加对常量表达式类型的支持
- 实现整数常量的类型后缀处理
- 添加对PHP_INT_MIN和PHP_INT_MAX的特殊处理
- 保留原有表达式打印功能的兼容性
- 提升代码的可读性和维护性
|
7 months ago |
韩天峰
|
625604d375
|
refactor(php): 优化编译器基础类中的变量赋值和数组维度获取逻辑
- 简化 Expr_Assign 和 Expr_AssignRef 的返回逻辑
- 在 checkVarFn 回调函数中添加对 isVarExpr 的检查以确保变量存在
- 移除 parseAssign 函数中关于数组维度获取和静态属性获取的特殊处理逻辑
- 在 parseArrayDimFetch 方法中添加对未定义变量的错误检查
- 添加对全局常量的处理支持
- 更新主函数中的全局变量声明以包含 definedConstants
- 在启动时初始化 definedConstants 变量
|
7 months ago |
韩天峰
|
b57ff37b18
|
refactor(php): 重构PHP编译器中的静态属性赋值解析逻辑
- 将静态属性赋值解析提取为独立的parseAssignStaticProperty方法
- 修改parseAssign方法以使用新的辅助方法进行静态属性检查
- 添加函数定义存在性验证以避免未定义函数的致命错误
- 使用独立的函数名存在性检查替代直接数组访问
- 改进了代码结构和可读性
|
7 months ago |
韩天峰
|
2963e0b4ad
|
refactor(Php): 优化函数调用解析器并重构测试代码
- 引入 getArg 函数简化参数解析逻辑
- 为 abs、ord、chr 和 array_key_exists 函数添加优化支持
- 激活 micro_bench.php 中被注释的性能测试用例
- 为 LeetCode 示例文件添加 main 函数结构
- 在单词接龙算法中改进条件判断的可读性
- 移除 PHP 标签并优化二叉树遍历的条件表达式
|
7 months ago |
韩天峰
|
1596c58da6
|
refactor(Php): 重构编译器基础类和类定义结构
- 移除 ClassDef.php 中的多余空行
- 将 isSuperGlobal 方法从 CompilerBase.php 的中间位置移动到文件末尾附近
- 统一注释中的引号格式,使用单引号替代双引号
- 改进 parseExit 方法,添加对空表达式的处理逻辑
- 优化 findNativeMethod 方法的参数类型声明
- 添加方法调用时参数数量的验证检查,确保符合函数定义要求
|
7 months ago |