韩天峰
|
1c074d140e
|
feat(php): 实现PHP右结合赋值操作符支持
- 添加isArrayDimFetch方法用于检查数组维度获取表达式
- 实现parseRightAssociativeAssign方法处理右结合赋值链
- 重构parseAssign方法以支持嵌套赋值表达式解析
- 更新parseArrayDimStore方法处理空维度读取错误
- 添加右结合赋值功能的测试用例和示例文件
|
7 months ago |
韩天峰
|
96ecb8aae0
|
feat(php): 支持联合类型并优化编译器状态管理
- 添加 UnionType 支持以处理 PHP 联合类型语法
- 实现 resetClass 和 resetFunction 方法来重置编译器状态
- 在适当位置调用状态重置方法确保编译器状态一致性
- 修复类方法定义中的访问修饰符处理逻辑
- 更新示例文件以演示联合类型功能
- 调整项目配置文件中的源码路径设置
|
7 months ago |
韩天峰
|
1a8082ce2f
|
fix(build): 修复源文件路径解析和编译选项配置问题
- 修复相对路径和绝对路径的处理逻辑
- 添加对不存在源文件的错误检查和提示
- 支持 cxxflags 和 ldflags 配置为数组格式
- 改进路径规范化和文件存在性验证
|
7 months ago |
韩天峰
|
8cf58ebf70
|
feat(build): 支持项目配置文件中定义源文件路径
- 添加 sources 字段支持在 project.yml 中指定源文件
- 实现相对路径转换为绝对路径的功能
- 支持单个文件和目录的混合配置
- 优化文件列表生成逻辑
- 修复源文件路径解析问题
- 更新项目构建流程以使用新配置格式
|
7 months ago |
韩天峰
|
09af173013
|
feat(compiler): 添加项目配置文件支持和编译选项扩展
- 在 CompilerBase 中新增 cxxflags 和 ldflags 属性用于编译选项配置
- 集成 symfony/yaml 依赖以支持 YAML 配置文件解析
- 实现 project.yml 配置文件格式用于定义项目构建参数
- 添加 parseProjectYaml 方法解析 YAML 配置并设置编译标志
- 修改 getFiles 方法以支持目录扫描和 YAML 配置文件处理
- 更新 composer.json 和 composer.lock 文件添加新依赖项
|
7 months ago |
韩天峰
|
1fc07ee729
|
feat(compiler): 添加对mixed类型支持和优化函数调用解析
- 在解析函数声明时调整了返回类型检查逻辑,先验证类型存在性再进行类型转换
- 新增对mixed类型的参数类型解析,映射到TYPE_VAR类型
- 添加对resource类型的错误处理机制
- 将原parseCallArgs方法替换为专门的parseNativeCallArgs方法用于本地函数调用
- 在C++主程序中添加php::request_init()初始化调用
- 新增埃拉托斯特尼筛法求素数示例程序及对应的vector扩展实现
- 添加vector.stub.php存根文件定义vector相关函数接口
|
7 months ago |
韩天峰
|
c7c375019d
|
refactor(compiler): 重构编译器配置和代码逻辑
- 将命令行参数配置提取到独立的配置文件 compiler_options.php
- 添加新的调试选项包括 debug-line 和 force 参数
- 替换 var_dump 为 symfony/var-dumper 的 dump 函数
- 优化赋值表达式处理逻辑,改进 inAssignExpr 状态管理
- 修复返回语句中间接引用可能导致的内存安全问题
- 添加临时变量确保返回值的内存安全
- 重构属性访问解析方法,传入赋值状态参数
- 更新 composer 依赖,添加 symfony/var-dumper 支持
- 移除调试相关的 var_dump 输出语句
- 优化数组维度获取和属性访问的解析流程
|
7 months ago |
韩天峰
|
a6a06ca859
|
feat(translator): 增强PHP到C++编译器功能
- 在ClassLikeDef中添加getNamespacedName方法的symbolic参数支持
- 简化compiler.php中的文件扫描逻辑并移除冗余代码
- 在CompilerBase中添加函数定义存储数组和相关属性
- 更新错误处理方法结构并分离基本错误和致命错误处理
- 在extension.cc模板中移除类信息函数声明并添加函数入口表
- 修改属性偏移获取逻辑以支持非符号化命名空间
- 添加嵌入式模块获取函数实现
- 重构gen_stub.php中的类和函数信息生成逻辑
- 移除全局变量genClass并更新命令行选项处理
- 重命名examples/class/test.php为examples/appx/test.php并添加测试常量和函数
- 在Translator中添加PHP源文件和arginfo头文件数组管理
- 更新目标名称验证以检查C++保留关键字
- 实现getFiles方法统一文件路径处理逻辑
- 添加函数包装器生成功能和类注册函数提取
- 优化类CE列表生成逻辑并修复头文件包含顺序问题
- 重构存根文件生成流程并改进错误报告机制
|
7 months ago |
韩天峰
|
ea77b6d746
|
feat(compiler): 添加编译模式支持和目标名称配置
- 实现二进制文件和PHP扩展两种编译模式
- 添加目标名称配置功能
- 支持通过命令行参数指定编译模式
- 更新编译选项以支持不同的构建模式
- 添加main函数存在性检查确保二进制构建完整性
- 修改链接过程以支持共享库生成
- 添加示例文件array_append.php和ref.php用于测试
- 更新帮助文档和命令行参数说明
|
7 months ago |
韩天峰
|
9499aac142
|
refactor(php): 更新PHP编译器中的类型转换函数命名
- 将php::to_int重命名为php::toInt以符合驼峰命名规范
- 将php::to_float重命名为php::toFloat以符合驼峰命名规范
- 将php::to_string重命名为php::toString以符合驼峰命名规范
- 将php::to_object重命名为php::toObject以符合驼峰命名规范
- 将php::to_array重命名为php::toArray以符合驼峰命名规范
- 将php::to_bool重命名为php::toBool以符合驼峰命名规范
- 移除examples/ns.cc文件中的测试代码
|
7 months ago |
韩天峰
|
a529ccf306
|
fix(php): 修复对象值解析和函数参数处理问题
- 修复了对象值解析时未正确解析标识符的问题
- 为 FunctionDef 类的 argInfoList 属性添加了 PHPDoc 注释
- 在示例文件中添加了测试函数来验证参数处理功能
- 实现了对带默认值参数的正确处理逻辑
|
7 months ago |
韩天峰
|
9b94b287cb
|
refactor(php): 移除属性赋值解析方法并优化对象初始化
- 删除了 Expr_PropertyFetch 类型的属性赋值解析逻辑
- 在 Test 类中添加构造函数以简化对象初始化
- 更新示例代码使用构造函数进行对象创建和属性赋值
|
7 months ago |
韩天峰
|
f8be1767e6
|
feat(php): 添加对象类型推断和方法调用优化功能
- 新增 isNewExpr、isNameExpr、isScalarString、isFuncCallExpr 等 AST 节点类型判断方法
- 移除 PROPERTY_OFFSETS 常量并优化变量声明结构
- 添加 objects 属性用于存储变量对应的对象类型信息
- 实现对象创建和函数调用时的类型推断逻辑
- 扩展 convertObjectExpr 方法支持指定类名参数
- 重构原生方法调用检查逻辑,实现更精确的方法查找机制
- 添加访问权限检查功能确保私有方法不被外部调用
- 优化 FuncCallOptimizer 支持 strval 和 objval 函数转换
- 添加示例文件展示对象操作功能
|
7 months ago |
韩天峰
|
0f3ccb98cd
|
feat(php): 添加属性偏移量支持和性能优化
- 引入 Node 类型导入并添加 isIdExpr 方法用于标识符检查
- 新增 PROPERTY_OFFSETS 常量和 getPropertyOffset 方法用于属性偏移量计算
- 重构命名空间相关方法,统一使用 getNativeName 替代 getNativeFunctionName
- 优化属性获取逻辑,在特定条件下使用属性偏移量提升性能
- 在模板中生成属性偏移量声明和初始化代码
- 添加性能测试脚本 prof.php 和性能分析配置调整
|
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 |
韩天峰
|
1b78fc7fd9
|
feat(php): 添加PHP编译器基础功能和八皇后问题示例
- 在CompilerBase中初始化result变量以避免未定义变量错误
- 优化Stmt_Nop节点处理逻辑,移除不必要的赋值操作
- 添加对空结果和空后续语句行的条件判断,避免向输出添加空内容
- 实现parseAssignPropertyArrayDim方法用于处理对象属性数组维度赋值操作
- 在parseAssign方法中添加属性获取检查,支持属性赋值操作解析
- 添加dump调试方法用于在指定行号时输出节点信息
- 新增EightQueue.php示例文件,实现优化版八皇后问题求解算法
- 修改Preprocessor以支持Trait语句的预处理
- 更新Translator以支持Trait语句的转换处理
- 扩展类相关方法签名以接受Trait节点类型参数
|
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 |
韩天峰
|
f8100988c4
|
update mixed
|
7 months ago |
韩天峰
|
bdea6f77cc
|
添加类的单元测试
|
7 months ago |
韩天峰
|
612d60d158
|
feat(examples): 添加PHP微基准测试脚本
|
7 months ago |
韩天峰
|
d24c8be049
|
feat(php): 添加命名空间支持和类继承功能
- 在 ClassDef 中添加 namespace、implements 和 extends 属性
- 实现 getNamespacedName 方法用于获取带命名空间的类名
- 在 CompilerBase 中添加 classes 属性存储类定义
- 修复函数名解析时的大小写转换问题
- 添加对 __CLASS__ 魔术常量的支持
- 移除废弃的 stub 文件常量初始化函数
- 更新命名空间定义的解析逻辑
- 在 Translator 中实现完整的命名空间解析功能
- 添加类继承关系的支持和注册机制
- 实现在全局变量生成中包含类定义入口
- 添加标识符列表解析辅助方法
- 更新示例文件以测试继承功能
|
8 months ago |
韩天峰
|
ecbb00542e
|
fix(compiler): 修复PHP到C++编译器中的类型解析问题
- 在循环中添加键值引用以支持数组元素删除操作
- 当遇到不支持的语法时从列表中移除对应文件
- 添加varTypes属性用于存储变量类型信息
- 为parseType方法添加返回类型声明
- 将未知类型默认处理为对象类型并记录到varTypes中
- 在示例代码中添加测试函数验证类型解析功能
|
8 months ago |
韩天峰
|
ca1ee88d5f
|
支持 class 处理,初步版本
|
8 months ago |
韩天峰
|
da9b944099
|
重构类结构,拆分成多个类,避免单个类的尺寸过大
|
8 months ago |
韩天峰
|
0033a243d0
|
添加更多测试,php std 标准库测试,支持 list 语法
|
8 months ago |
韩天峰
|
a54b04118d
|
支持错误抑制操作符,但仅支持控制一个函数
|
8 months ago |
韩天峰
|
a085c33208
|
refactor(Php): 优化 MagicConst 和 Foreach 语句解析
- 修复 MagicConst 解析函数的类型声明
- 修复 Line 常量解析的返回值类型转换
- 修复 Foreach 语句解析函数的类型声明
- 更新 PhpParser 导入以支持 MagicConst 和 Foreach_ 节点类型
|
8 months ago |
韩天峰
|
68c272355c
|
命名空间和 use 语法支持 [1] ,仅 function,TODO class
|
8 months ago |
韩天峰
|
c601729ddc
|
feat(translator): 更新编译器生成全局变量和常量功能
- 修改编译器将函数声明生成到构建目录的 include/php_func_decl.h 文件
- 添加全局变量源文件生成功能,输出到构建目录的 global_vars.cc 文件
- 添加 main.cc 文件到源文件列表中
- 将全局常量注册到 PHP 环境中
- 修改链接器合并二进制文件的方式,使用动态对象文件列表
- 添加文件写入安全检查和目录自动创建功能
- 移除独立的链接器脚本文件
- 添加常量示例文件用于测试
|
8 months ago |
韩天峰
|
1036317e74
|
Update
|
8 months ago |
韩天峰
|
ba3ffd885f
|
支持 C++ Native 函数注入,stub 存根文件
|
8 months ago |
韩天峰
|
04f265ae24
|
全局变量
|
8 months ago |
韩天峰
|
5824e859e6
|
赋值操作作为右值,修复 try/catch 没有 finally 无法跳出循环的问题
|
8 months ago |
韩天峰
|
122e43b679
|
添加 'examples/bench/test1.php'
|
8 months ago |
韩天峰
|
4f095c301d
|
添加更多單元測試
|
8 months ago |
韩天峰
|
739152ba14
|
支持语法 **=
|
8 months ago |
韩天峰
|
4162b79113
|
try/catch 语法支持
|
8 months ago |
韩天峰
|
ec836bcb31
|
nbody-php-3 算法
|
8 months ago |
韩天峰
|
74a3778426
|
禁止 foreach 中添加全局变量的同名变量
|
8 months ago |
韩天峰
|
c9c558103c
|
数组操作处理
|
8 months ago |
韩天峰
|
bf69a539a1
|
字面量字符串优化,增加字面量表
|
8 months ago |
韩天峰
|
a25fe02e09
|
更新
|
8 months ago |
韩天峰
|
6ac8494173
|
update
|
8 months ago |
韩天峰
|
e867d32e60
|
命令行参数
|
8 months ago |
韩天峰
|
9c72ef6ff4
|
bench.php
|
8 months ago |
韩天峰
|
0447e73214
|
add bench.php
|
8 months ago |
韩天峰
|
013addcafd
|
Update
|
8 months ago |
韩天峰
|
348641cf01
|
优化运算逻辑代码,左值和右值均为 var 类型时,直接用映射方法而不是转为整数
|
8 months ago |
韩天峰
|
023c017112
|
链式赋值语法
|
8 months ago |