韩天峰
|
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 |
韩天峰
|
288f1dddef
|
feat(closure): 实现闭包功能支持类内部方法访问$this
- 添加closure_005.phpt和closure_006.phpt测试用例验证闭包功能
- 修改CompilerBase.php中函数定义相关属性为可空类型并添加methodDef
- 实现resetMethod方法重置方法定义状态
- 优化函数参数和局部变量处理逻辑
- 添加genLocalVarDecl和genReturnCode方法生成变量声明和返回代码
- 改进闭包解析逻辑支持返回类型声明
- 更新newClosure调用传递this_参数支持类内闭包访问实例
- 重构MethodDef构造函数移除FunctionDef参数依赖
|
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 |
韩天峰
|
7e5b6ef045
|
fix(const): 修复命名空间常量定义和引用问题
- 在常量名称前添加命名空间前缀以支持命名空间常量
- 将常量信息存储结构扩展为包含命名空间和名称字段
- 使用转义后的命名空间名称作为常量查找键值
- 更新模板中常量遍历变量名以避免混淆
- 修复常量定义时的字符串转义处理
- 添加命名空间常量测试用例验证功能
- 实现参数信息存根文件名生成方法
|
7 months ago |
韩天峰
|
9118fc4e33
|
feat(compiler): 支持函数别名和命名空间功能
- 实现了函数导入别名功能,解决命名冲突问题
- 添加了命名空间支持,包括嵌套命名空间解析
- 更新了函数定义实体类以支持命名空间属性
- 修改了编译器基础类中的函数解析逻辑
- 调整了扩展模板中函数注册的命名空间处理
- 优化了预处理器中的命名空间定义逻辑
- 完善了翻译器中函数包装器的命名空间支持
- 新增了函数别名查找和解析功能
- 添加了相关测试用例验证功能正确性
|
7 months ago |
韩天峰
|
288021d16c
|
feat(compiler): 添加对孤立代码的检测和错误处理
- 在 CompilerBase 中添加 foundStrayCode 方法用于报告孤立代码错误
- 在 Preprocessor 中为 Stmt_Expression 类型添加孤立代码检测
- 防止在扩展模式下生成名为 main 的函数
- 添加 empty-2.phpt 测试用例验证空值合并操作符功能
|
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 |
韩天峰
|
d81c4cda62
|
fix(core): 修复数字文件名编译问题并优化代码结构
- 在run-tests.php中为数字文件名添加'app_'前缀以避免命名冲突
- 在Translator.php中为数字目标名称添加'app_'前缀以确保有效标识符
- 重构NativeCallToCDecl函数中的参数列表构建逻辑,调整代码顺序以提高可读性
- 添加测试用例验证岛屿周长计算算法的正确性
|
7 months ago |
韩天峰
|
a39a2e389a
|
fix(php): 修复字符串偏移设置功能
- 移除了调试用的 var_dump 语句
- 在数组维度存储解析中正确管理 inAssignExpr 状态
- 修正测试文件中的测试名称描述
|
7 months ago |
韩天峰
|
2d81a3975d
|
feat(php): 添加字符串数组索引赋值支持
- 实现字符串类型的数组维度获取解析功能
- 添加字符串索引赋值的类型检测和错误处理
- 支持字符串的 offsetSet 操作转换
- 新增字符串数组索引赋值的功能测试用例
- 处理字符串索引为 null 时的错误情况
- 实现字符串变量类型检查机制
|
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 |
韩天峰
|
c3eb2d2f3f
|
refactor(php): 重构 isset 和 empty 表达式解析逻辑
- 将 parseIsset 方法重构为只支持单个变量检查
- 添加 parseVarCheckExpr 通用方法处理 isset 和 empty 操作
- 移除 parseEmpty 方法中的重复代码逻辑
- 支持静态属性获取表达式的 isset 和 empty 检查
- 更新错误消息模板以反映正确的操作符名称
- 添加 isset-test.phpt 测试文件验证功能
- 扩展 empty-test.phpt 包含静态属性测试用例
|
7 months ago |
韩天峰
|
423c10fe47
|
feat(compiler): 实现空值检查表达式解析功能
- 添加了对复杂嵌套表达式的 empty() 函数支持
- 实现了数组维度获取和属性访问的解析逻辑
- 添加了 SkipException 类用于跳过错误节点处理
- 优化了全局变量访问的错误处理机制
- 增强了类型转换和函数调用的参数处理
- 更新了测试用例验证空值检查功能正确性
- 修复了编译器在处理未定义类时的错误判断
|
7 months ago |
韩天峰
|
57e1790639
|
feat(compiler): 实现对静态属性和常量的原生支持
- 添加 hasConstant、getMethod 和 getConstant 方法到 ClassDef 类
- 在 CompilerBase 中实现静态属性和常量的原生解析功能
- 添加 parseNativeStaticPropertyFetch 和 findNativeStaticProperty 方法
- 修改 getFuncPtr 方法以支持宏参数
- 实现对类常量和静态属性的直接访问优化
- 添加对后置操作符中属性获取的支持
- 更新 examples/micro_bench.php 测试用例以验证功能
- 在 PropertyDef 中添加 isStatic 方法判断静态属性
- 重构预处理器对常量定义的处理逻辑
|
7 months ago |
韩天峰
|
38110f67d5
|
refactor(php): 重构PHP到C++编译器实现细节
- 更新PHP CS Fixer配置中的类属性分离规则
- 简化ArgInfo、ClassDef、ClassLikeDef等数据结构定义
- 重命名CLASS_ENTRY_MAP为CLASS_MAP并更新相关引用
- 移除多余变量声明并优化全局变量处理逻辑
- 实现超级全局变量检测和初始化功能
- 添加对$GLOBALS数组访问的支持
- 优化函数调用代码生成逻辑
- 添加全局变量测试用例验证功能
- 清理无用常量和变量声明简化代码结构
|
7 months ago |
韩天峰
|
1c074d140e
|
feat(php): 实现PHP右结合赋值操作符支持
- 添加isArrayDimFetch方法用于检查数组维度获取表达式
- 实现parseRightAssociativeAssign方法处理右结合赋值链
- 重构parseAssign方法以支持嵌套赋值表达式解析
- 更新parseArrayDimStore方法处理空维度读取错误
- 添加右结合赋值功能的测试用例和示例文件
|
7 months ago |
韩天峰
|
9465caea14
|
feat(php): 添加属性访问控制和对象类型检查功能
- 在 ClassDef 中添加 hasProperty 和 getProperty 方法用于属性访问
- 在 CompilerBase 中添加 isTypedObject 方法检查对象类型
- 将 offsetGetIndirect 替换为 item 方法统一访问接口
- 实现 getPropertyIdentifier 方法支持属性标识符解析
- 添加对私有/受保护属性访问权限的检查和错误处理
- 将 getPropertyIndirect 替换为 attr 方法进行属性访问
- 添加属性引用访问支持通过 attrRef 方法实现
- 更新 identifierToStr 参数类型为 NodeAbstract
- 在 PropertyDef 中添加访问修饰符检查方法(isPrivate/isProtected/isPublic)
- 添加属性引用测试用例验证功能正确性
|
7 months ago |
韩天峰
|
d3360d2f38
|
fix(php): 修复数组类型返回和include表达式处理
- 将 Expr_Array 的类型返回从 'php::Array' 改为 self::TYPE_ARRAY
- 将字符串 'array' 的类型映射从 'php::Array' 改为 self::TYPE_ARRAY
- 更新 parseInclude 方法参数类型为 Node\Expr\Include_
- 添加对不同 include 类型 (include, require, include_once, require_once) 的支持
- 在 include 表达式中传递正确的类型参数
- 添加 include 测试用例和相关测试文件
|
7 months ago |
韩天峰
|
f38098523f
|
refactor(compiler): 重构PHP编译器参数类型解析逻辑
- 移除未使用的 $varTypes 属性
- 将 parseType 方法重命名为 parseParameterType 并添加参数支持
- 修复 void 类型作为参数类型的错误处理
- 更新模块注册方式从临时模块到持久模块
- 添加目标名称中特殊字符的替换处理
- 为参数类型解析添加更准确的对象类型映射
|
7 months ago |
韩天峰
|
11828d3b5a
|
feat(compiler): 添加对 any 函数的支持
- 在编译器中实现 any 函数的解析和处理逻辑
- 添加对 var 类型常量的支持
- 扩展测试用例以验证 any 函数的功能
|
7 months ago |
韩天峰
|
e824c5d7c0
|
fix(compiler): 修复变量赋值和属性访问的类型检查问题
- 添加了对属性赋值操作的类型检测支持
- 实现了模运算符的类型安全处理
- 添加了布尔值转义函数 escapeBool
- 修改 parsePropertyFetch 方法以支持赋值操作标识
- 优化 foreach 循环中的变量检查逻辑
- 添加引用赋值的类型验证
- 将 writeFile 方法改为公有以便外部调用
- 添加 checkVar 方法进行变量类型安全检查
- 更新测试文件中的变量命名以避免冲突
- 修复对象链接测试中的属性访问问题
|
7 months ago |
韩天峰
|
58f9cb4c28
|
fix(php): 修复PHP引用类型处理问题
- 将TYPE_REF常量值从'php::Var'更改为'php::Ref'
- 修改引用参数传递逻辑,使用'&'操作符而不是解引用
- 将post-increment操作符错误处理从parsePostOp改为fatalError
- 修复变量赋值时的引用处理逻辑
- 添加引用操作符测试用例
|
7 months ago |
韩天峰
|
abb5dbc6d8
|
fix(php): 修复后置递增递减操作符解析问题
- 使用 str_repeat($op, 2) 正确生成后置操作符代码
- 修复非变量表达式的错误处理逻辑
- 添加后置递增递减操作符的测试用例
|
7 months ago |
韩天峰
|
3959fee828
|
test(zend): 添加heredoc语法和半保留字测试用例
- 添加GH-16630 UAF漏洞相关编码转换和heredoc测试
- 添加基本heredoc语法测试用例
- 添加二进制heredoc语法测试用例
- 添加变量替换相关heredoc测试用例
- 添加复杂变量替换相关heredoc测试用例
- 添加半保留字作为静态类方法的测试用例
- 添加公共测试辅助文件nowdoc.inc
- 添加示例代码文件lv3_prop.php和prop.php
|
7 months ago |
韩天峰
|
166f53f28e
|
fix(php): 修复编译器中的变量声明和属性获取问题
- 在循环中为键变量和值变量添加本地变量声明检查
- 确保变量在使用前已正确定义
- 添加对属性获取表达式的处理支持
- 为递增递减操作添加新的测试用例
- 包括64位平台整数溢出处理的测试
- 添加布尔类型递增递减异常处理测试
- 添加引用属性递增递减功能测试
|
7 months ago |
韩天峰
|
f48b1f4781
|
refactor(php): 重构PHP编译器中的赋值表达式处理逻辑
- 添加 inAssignExpr 属性来跟踪赋值表达式状态
- 修改 parseAssign 和 parseAssignRef 方法以设置赋值表达式标志
- 将 parseAssign 中的数组维度赋值逻辑提取到 parseAssignArrayDim 方法
- 将属性获取逻辑从 offsetGet 更改为 offsetGetIndirect
- 移除不正确的静态属性获取处理代码
- 添加 object link 和 property assign op 测试用例
|
7 months ago |
韩天峰
|
3dc79d2074
|
fix(parser): 修复抽象类实例化和空语句处理问题
- 添加抽象类无法实例化的测试用例
- 修复doc注释解析器返回空数组的问题
- 添加对Stmt_Nop语句类型的处理支持
- 确保预处理器正确处理空语句类型
|
7 months ago |
韩天峰
|
43b9797df8
|
test(classes): 添加魔术方法相关测试用例
- 添加 __call 方法异常处理测试
- 添加 __set 和 __get 魔术方法功能测试
- 添加魔术方法签名检查测试
- 添加抽象类和抽象方法调用测试
- 添加对象转数组键名转换测试
- 添加赋值操作符属性测试
- 添加数据损坏相关测试
fix(compiler): 禁止在 echo 中使用赋值表达式
- 在 parseEcho 方法中检测赋值表达式并报错
- 修复属性赋值操作符解析逻辑
refactor(stub): 优化全局变量默认值处理
- 统一数组类型默认值处理方式
- 移除特殊空数组处理逻辑
feat(magic): 添加魔术方法参数数量检测机制
- 实现 MagicMethodDetector trait
- 集成到 Translator 类中使用
|
7 months ago |
韩天峰
|
66249916f5
|
fix(php): 修复$this变量重新赋值检查并添加类功能测试
- 添加对$this变量重新赋值的错误检查,防止Cannot re-assign $this错误
- 新增destructor异常处理测试用例验证析构函数中的异常捕获
- 添加工厂模式测试用例验证对象创建功能
- 新增final方法测试用例验证最终方法重写规则
- 添加abstract与final冲突测试用例验证编译时错误处理
- 新增__toString与__destruct交互测试用例验证字符串转换功能
|
7 months ago |
韩天峰
|
a6826d5fd0
|
feat(compiler): 添加PHP语法错误处理和类常量重复定义检查
- 在编译器中引入SyntaxError异常类用于处理PHP语法错误
- 修改预处理器捕获PHP解析错误并转换为SyntaxError异常
- 实现类常量重复定义的检测逻辑并抛出致命错误
- 添加多个测试用例验证类常量相关错误场景
- 更新编译器跳过包含语法错误的文件处理流程
|
7 months ago |
韩天峰
|
d90bf8a5fd
|
feat(compiler): 添加类常量支持和优化代码生成
- 引入 NodeAbstract 类型用于对象转换
- 移除 Stmt_Nop 语句的空注释生成
- 为 Foreach 循环体添加前置语句解析
- 简化对象类型检查逻辑
- 添加多个类常量测试用例
- 在预处理器和翻译器中处理 Stmt_Nop 语句类型
- 完善类常量声明、继承和访问功能
|
7 months ago |
韩天峰
|
25e567b3db
|
feat(php): 添加类定义功能支持
- 实现了 StaticPropertyFetch 类型检查方法
- 扩展了 ClassDef 构造函数以支持 flags 参数
- 添加了类继承时对 final 类的检查逻辑
- 更新了示例文件 call3.php 中的类结构
- 增加了多个类相关的测试用例文件
- 修改了后置操作解析逻辑以支持静态属性访问
- 在编译器基类中添加了类声明的错误处理
- 实现了对象包装器数组初始化
- 添加了对类可见性构造函数的支持测试
- 更新了接口定义的构造函数实现
|
7 months ago |
韩天峰
|
4ed56de30e
|
feat(php): 实现PHP编译器对引用参数的支持
- 修改CompilerBase.php以支持函数引用参数的正确处理
- 添加Reflection::isReferenceArg方法用于检查函数参数是否为引用类型
- 在处理函数调用时针对引用参数创建临时变量并正确传递引用
- 扩展支持对象属性获取作为引用参数的功能
- 添加iterators_006.phpt和iterators_007.phpt测试用例验证迭代器功能
- 添加ref_prop.php示例文件展示引用属性功能
- 重构多个算法示例文件以改进代码结构和可读性
|
7 months ago |
韩天峰
|
715abf458d
|
refactor(php): 重构 foreach 循环解析逻辑以支持对象迭代器
- 将原 parseForeach 方法拆分为 parseForeach 和 parseForeachArray 两个方法
- 添加对 Iterator 和 IteratorAggregate 接口的支持
- 实现对象属性遍历的备用方案,使用 get_object_vars 函数
- 添加新的测试用例 iterators_004.phpt 验证迭代器功能
- 添加新的测试用例 iterators_005.phpt 验证 Traversable 接口实现检查
- 为对象迭代创建临时变量并设置正确的类型标识
|
7 months ago |
韩天峰
|
749b4ec00d
|
修复迭代器实现,continue 时执行 next()
|
7 months ago |
韩天峰
|
c9d6e93f40
|
支持 Iterator/IteratorAggregate 对象 foreach 操作
|
7 months ago |
韩天峰
|
689b59bbda
|
处理继承或实现内置类和接口
|
7 months ago |
韩天峰
|
f8100988c4
|
update mixed
|
7 months ago |
韩天峰
|
bdea6f77cc
|
添加类的单元测试
|
7 months ago |
韩天峰
|
7ae7e12ad8
|
增加标准库单测文件
|
8 months ago |