韩天峰
|
1b78fc7fd9
|
feat(php): 添加PHP编译器基础功能和八皇后问题示例
- 在CompilerBase中初始化result变量以避免未定义变量错误
- 优化Stmt_Nop节点处理逻辑,移除不必要的赋值操作
- 添加对空结果和空后续语句行的条件判断,避免向输出添加空内容
- 实现parseAssignPropertyArrayDim方法用于处理对象属性数组维度赋值操作
- 在parseAssign方法中添加属性获取检查,支持属性赋值操作解析
- 添加dump调试方法用于在指定行号时输出节点信息
- 新增EightQueue.php示例文件,实现优化版八皇后问题求解算法
- 修改Preprocessor以支持Trait语句的预处理
- 更新Translator以支持Trait语句的转换处理
- 扩展类相关方法签名以接受Trait节点类型参数
|
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 |
韩天峰
|
9ca07388bc
|
refactor(php): 重构PHP编译器中的变量表达式判断逻辑
- 引入AstNodeType trait来统一处理变量表达式判断
- 将原来基于getType()方法的判断改为使用isVarExpr()方法
- 在CompilerBase类中使用新的trait来检测变量表达式
- 更新类型映射表以支持更多PHP类型转换
- 优化变量赋值、函数调用、静态调用等场景下的变量检测逻辑
- 统一代码中多处重复的变量表达式判断逻辑为单一实现
|
7 months ago |
韩天峰
|
8e7d39d7fe
|
fix(translator): 当接口和类定义均为空时提前返回
|
7 months ago |
韩天峰
|
689b59bbda
|
处理继承或实现内置类和接口
|
7 months ago |
韩天峰
|
6ff687e1da
|
Interface,ce 依赖关系处理,排序
|
7 months ago |
韩天峰
|
f8100988c4
|
update mixed
|
7 months ago |
韩天峰
|
bdea6f77cc
|
添加类的单元测试
|
7 months ago |
韩天峰
|
c3f5aca1a8
|
feat(generator): 添加变量名参数支持PHP全局变量初始化
- 为initializeZval方法添加varName参数以支持全局变量赋值
- 在ZVAL初始化后添加php::global_vars映射设置
- 重置ZVAL类型标志确保正确的内存管理
- 更新函数调用以传递变量名称信息
|
7 months ago |
韩天峰
|
af9ecf336f
|
feat(php): 添加方法和函数上下文跟踪功能
- 新增 method 和 function 属性用于跟踪当前解析的方法和函数名
- 在解析函数时设置函数名并清空函数上下文
- 实现类中 this_ 参数的自动注入
- 添加魔术常量 Method 和 Function 的支持
- 实现父类方法调用的特殊处理逻辑
- 添加静态变量赋值引用的变量声明
- 实现 __call 魔术方法参数验证
- 重构注释生成逻辑到独立方法
- 启用 noLiteralStrings 优化选项
|
7 months ago |
韩天峰
|
612d60d158
|
feat(examples): 添加PHP微基准测试脚本
|
7 months ago |
韩天峰
|
8b0c3d2b72
|
refactor(php): 重构PHP编译器基础功能并优化代码结构
- 移除不支持函数列表的硬编码定义
- 添加对不支持函数调用的运行时检查和错误报告
- 简化静态属性和类常量解析中的self关键字处理逻辑
- 修复类方法调用中self关键字的替换逻辑
- 将扩展模块入口声明从static改为全局作用域
- 重写gen_stub.php脚本的主函数结构和命令行参数处理
- 添加类信息和函数信息的独立生成选项
- 优化桩文件生成时的跳过提示输出
- 重构翻译器中的类解析方法实现
- 更新不支持函数列表包含更多动态函数
|
7 months ago |
韩天峰
|
ec106db274
|
refactor(compiler): 将全局变量生成改为扩展生成
- 修改编译器脚本中的文件名从 global_vars.cc 到 extension.cc
- 将 Translator 类中的 genGlobalVars 方法重命名为 genExtension
- 更新编译流程以生成扩展文件而不是全局变量文件
- 调整相关变量命名以反映功能变更
|
7 months ago |
韩天峰
|
9702529c0f
|
feat(compiler): 添加类常量获取支持并优化参数信息处理
- 在 CompilerBase.php 中添加对 Expr_ClassConstFetch 类型的支持
- 修改 getArgInfo 方法签名以接收 Node 参数并添加参数不存在时的错误处理
- 修复三元运算符解析逻辑以正确处理省略中间表达式的情况
- 将 null 常量映射从 nullptr 改为 php::null
- 扩展 hasVar 方法以支持更多变量类型包括静态属性和对象属性
- 添加 parseClassConstFetch 方法用于处理类常量获取表达式
- 在 gen_stub.php 中修复缺少可见性修饰符和参数类型的处理
- 跳过生成 ext_functions 条目当类名不存在时
- 在 Translator.php 中添加存根文件生成的状态检查和错误报告
|
7 months ago |
韩天峰
|
e1bb057420
|
feat(compiler): 添加缓存机制和强制编译选项
- 在Preprocessor类中添加enableCache属性控制缓存功能
- 实现getCppFile和getObjectFile方法用于文件路径处理
- 添加hasCppFileCache方法检查C++文件缓存是否存在
- 在prepare方法中集成缓存检查逻辑跳过已存在的缓存文件
- 在Translator类中添加force参数支持强制编译模式
- 移除原有的hasCache方法并优化convert方法的缓存处理
- 添加hasObjectFileCache方法检查对象文件缓存状态
- 更新compileFile方法集成对象文件缓存检查功能
- 在帮助信息中显示新的force选项说明
|
7 months ago |
韩天峰
|
f3944a5259
|
refactor(compiler): 重构PHP到C++编译器实现
- 修改编译流程,添加对象文件路径管理功能
- 实现缓存检查机制,跳过已存在的编译文件
- 重命名MethodDef中的def属性为functionDef
- 提取表达式类型转换逻辑到独立方法convertExprFromType
- 添加扩展模板文件extension.cc.php,使用模板渲染替代手动代码生成
- 修改main.cc文件结构,使用模块注册方式替代函数注册
- 更新编译参数,添加-Wall编译选项
- 实现方法调用参数传递的动态构建机制
- 优化全局变量初始化和清理函数的实现
|
7 months ago |
韩天峰
|
e4505c2ef1
|
refactor(php): 重构函数和方法定义解析逻辑
- 修改 parseFunctionDeclaration 方法参数类型,支持 Function_ 和 ClassMethod
- 简化函数定义创建流程,直接在构造函数中初始化 name 和 returnType
- 更新 parseParams 方法接受 FunctionDef 参数,避免使用全局变量
- 重命名格式化提示信息从 formatting 为 format
- 重构 FunctionDef 类添加构造函数并调整属性初始化
- 修改 MethodDef 类结构,使用 FunctionDef 对象替代单独的 returnType 属性
- 更新 Translator 中的方法调用以适配新的 MethodDef 结构
- 调整类方法解析流程以兼容新的数据结构
|
8 months ago |
韩天峰
|
5fd9215509
|
refactor(Php): 重构类定义和编译器实现
- 修改 ClassDef 中 methods、properties 和 constants 的类型为关联数组
- 在 CompilerBase 中添加 TYPE_VOID 常量并修改函数名获取逻辑
- 将 escapeClass 方法改为小写转换
- 使用 climate 库替换日志输出方法
- 更新 MethodDef 构造函数以支持返回类型
- 重构 Translator 中的类包装器生成逻辑
- 实现原生方法包装器和类包装器功能
- 修改常量和属性存储方式为键值对形式
- 添加方法包装器以支持返回类型处理
|
8 months ago |
韩天峰
|
d21e7c13bf
|
refactor(Php): 优化Translator类中的方法以提高代码可读性
- 添加getRegisterClassFunction方法用于生成类注册函数名
- 添加getClassCe方法用于生成类条目名称
- 添加getParentClassCe方法用于获取父类条目名称
- 使用新方法替换原有的硬编码字符串拼接
- 简化类定义中的变量命名和逻辑结构
|
8 months ago |
韩天峰
|
29bd55ccd3
|
feat(php): 添加类定义文件映射功能
- 在 CompilerBase 中新增 classesDefineInFile 属性用于存储文件中的类定义
- 初始化时清空 classesDefineInFile 数组
- 在 Translator 中为每个类定义生成注册函数
- 将当前解析的类同时添加到 classes 和 classesDefineInFile 数组中
- 优化类定义创建逻辑,移除重复检查代码
|
8 months ago |
韩天峰
|
eaf2418313
|
refactor(Php): 优化 CompilerBase 类中的方法参数类型声明
- 将 parseBinaryOpSmallerOrEqual 方法参数类型从 Node 更新为 Node\Expr\BinaryOp\SmallerOrEqual
- 将 parseBinaryOpGreaterOrEqual 方法参数类型从 Node 更新为 Node\Expr\BinaryOp\GreaterOrEqual
- 将 parsePrint 方法参数类型从 Node 更新为 Node\Expr\Print_
- 将 parseDo 方法参数类型从 Node 更新为 Node\Stmt\Do_
- 将 parseBinaryOpIdentical 方法参数类型从 Node 更新为 Node\Expr\BinaryOp
- 将 parseBinaryOpSpaceship 方法参数类型从 mixed 更新为 Node\Expr\BinaryOp\Spaceship
- 将 parseBinaryOpNotIdentical 方法参数类型从 mixed 更新为 Node\Expr\BinaryOp
- 将 parseNew 方法参数类型从 Node 更新为 Node\Expr\New_
- 将 parseClone 方法参数类型从 Node 更新为 Node\Expr\Clone_
- 将 parseInstanceof 方法参数类型从 Node 更新为 Node\Expr\Instanceof_
- 将 parseCastInt 方法参数类型从 Node 更新为 Node\Expr\Cast\Int_
- 将 parseCastString 方法参数类型从 mixed 更新为 Node\Expr\Cast\String_
- 将 parseCastBool 方法参数类型从 mixed 更新为 Node\Expr\Cast\Bool_
- 将 parseCastObject 方法参数类型从 mixed 更新为 Node\Expr\Cast\Object_
- 将 parseConstFetch 方法参数类型从 Node 更新为 Node\Expr\ConstFetch
- 将 parseBinaryOpDiv 方法参数类型从 Node 更新为 Node\Expr\BinaryOp\Div
- 将 parseBinaryOpMinus 方法参数类型从 Node 更新为 Node\Expr\BinaryOp\Minus
- 将 parseInterpolatedString 方法参数类型从 Node 更新为 Node\Scalar\InterpolatedString
- 将 escapeString 方法参数类型从 $str 更新为 string
|
8 months ago |
韩天峰
|
d24c8be049
|
feat(php): 添加命名空间支持和类继承功能
- 在 ClassDef 中添加 namespace、implements 和 extends 属性
- 实现 getNamespacedName 方法用于获取带命名空间的类名
- 在 CompilerBase 中添加 classes 属性存储类定义
- 修复函数名解析时的大小写转换问题
- 添加对 __CLASS__ 魔术常量的支持
- 移除废弃的 stub 文件常量初始化函数
- 更新命名空间定义的解析逻辑
- 在 Translator 中实现完整的命名空间解析功能
- 添加类继承关系的支持和注册机制
- 实现在全局变量生成中包含类定义入口
- 添加标识符列表解析辅助方法
- 更新示例文件以测试继承功能
|
8 months ago |
韩天峰
|
64d18db7e3
|
移除 for/foreach 的 key/value 变量的全局变量重复检测,在 C++ 中使用变量遮蔽(variable shadowing)不覆盖global/local var
|
8 months ago |
韩天峰
|
f7132da93b
|
for/foreach 的 key/value 变量作为 scope var 而不是 local var
|
8 months ago |
韩天峰
|
ecbb00542e
|
fix(compiler): 修复PHP到C++编译器中的类型解析问题
- 在循环中添加键值引用以支持数组元素删除操作
- 当遇到不支持的语法时从列表中移除对应文件
- 添加varTypes属性用于存储变量类型信息
- 为parseType方法添加返回类型声明
- 将未知类型默认处理为对象类型并记录到varTypes中
- 在示例代码中添加测试函数验证类型解析功能
|
8 months ago |
韩天峰
|
ca1ee88d5f
|
支持 class 处理,初步版本
|
8 months ago |
韩天峰
|
53a8e64b03
|
修改 gen_stub.php, 未设置类型默认为 mixed
|
8 months ago |
韩天峰
|
02ce29ba97
|
added gen_stub.php
|
8 months ago |
韩天峰
|
a7d3cb323a
|
更新 main.cc
|
8 months ago |
韩天峰
|
da9b944099
|
重构类结构,拆分成多个类,避免单个类的尺寸过大
|
8 months ago |
韩天峰
|
8327e198ed
|
重构类结构,拆分成多个类,避免单个类的尺寸过大
|
8 months ago |
韩天峰
|
07c7abffd7
|
类处理代码
|
8 months ago |
韩天峰
|
bfc1d8b2c7
|
类处理代码
|
8 months ago |
韩天峰
|
7ae7e12ad8
|
增加标准库单测文件
|
8 months ago |
韩天峰
|
16787142d6
|
修复错误,增加单测
|
8 months ago |
韩天峰
|
0033a243d0
|
添加更多测试,php std 标准库测试,支持 list 语法
|
8 months ago |
韩天峰
|
a54b04118d
|
支持错误抑制操作符,但仅支持控制一个函数
|
8 months ago |
韩天峰
|
3c89f98296
|
code-format
|
8 months ago |
韩天峰
|
a085c33208
|
refactor(Php): 优化 MagicConst 和 Foreach 语句解析
- 修复 MagicConst 解析函数的类型声明
- 修复 Line 常量解析的返回值类型转换
- 修复 Foreach 语句解析函数的类型声明
- 更新 PhpParser 导入以支持 MagicConst 和 Foreach_ 节点类型
|
8 months ago |
韩天峰
|
185c5a75dc
|
添加 NAMESPACE_SEPARATOR 常量用于统一分隔符定义
|
8 months ago |
韩天峰
|
68c272355c
|
命名空间和 use 语法支持 [1] ,仅 function,TODO class
|
8 months ago |