韩天峰
|
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 |
韩天峰
|
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 |
韩天峰
|
cf5e889a75
|
refactor(php): 重构PHP编译器函数声明解析和包装生成逻辑
- 修改parseFunctionDeclaration方法移除name参数,直接从节点获取函数名
- 修复错误消息中的变量引用,使用$v->name替代传入的$name参数
- 统一FunctionDef创建时的名称解析,使用parseIdentifier处理节点名称
- 更新parseFunctionDeclaration调用处,传递节点对象而非名称字符串
- 重命名genMethodWrapper为genWrapperFunctionArgs并重构参数处理逻辑
- 添加对方法和函数的不同参数处理逻辑,区分是否包含this_参数
- 重构genMethodWrapper方法以复用新的genWrapperFunctionArgs功能
- 在Constants.php中添加char关键字到保留字列表
|
7 months ago |
韩天峰
|
f38098523f
|
refactor(compiler): 重构PHP编译器参数类型解析逻辑
- 移除未使用的 $varTypes 属性
- 将 parseType 方法重命名为 parseParameterType 并添加参数支持
- 修复 void 类型作为参数类型的错误处理
- 更新模块注册方式从临时模块到持久模块
- 添加目标名称中特殊字符的替换处理
- 为参数类型解析添加更准确的对象类型映射
|
7 months ago |
韩天峰
|
37d0172164
|
```
refactor(build): 优化编译链接逻辑并更新错误检查方式
- 修改 parseLibs 方法,根据构建模式动态添加 php 库依赖
- 将链接命令中的库解析移到条件判断内部,避免不必要的参数传递
- 添加新的 AST 转储脚本用于调试目的
- 更新弃用警告处理,在 gen_stub.php 中屏蔽 E_DEPRECATED 错误
- 修复 Translator 中的链接命令构造,移除重复的库解析调用
- 改进 arginfo 头文件生成的输出验证逻辑,使用 str_contains 替代 str_starts_with
```
|
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 |
韩天峰
|
e824c5d7c0
|
fix(compiler): 修复变量赋值和属性访问的类型检查问题
- 添加了对属性赋值操作的类型检测支持
- 实现了模运算符的类型安全处理
- 添加了布尔值转义函数 escapeBool
- 修改 parsePropertyFetch 方法以支持赋值操作标识
- 优化 foreach 循环中的变量检查逻辑
- 添加引用赋值的类型验证
- 将 writeFile 方法改为公有以便外部调用
- 添加 checkVar 方法进行变量类型安全检查
- 更新测试文件中的变量命名以避免冲突
- 修复对象链接测试中的属性访问问题
|
7 months ago |
韩天峰
|
a529ccf306
|
fix(php): 修复对象值解析和函数参数处理问题
- 修复了对象值解析时未正确解析标识符的问题
- 为 FunctionDef 类的 argInfoList 属性添加了 PHPDoc 注释
- 在示例文件中添加了测试函数来验证参数处理功能
- 实现了对带默认值参数的正确处理逻辑
|
7 months ago |
韩天峰
|
51f039e6b4
|
refactor(Php): 优化对象值解析逻辑并添加方法标识支持
- 简化 CompilerBase.php 中的对象值解析条件判断
- 在 FunctionDef.php 中添加 method 属性用于标识是否为方法
- 在 MethodDef.php 构造函数中设置 functionDef 的 method 标志
- 在 Translator.php 参数列表生成时为方法添加 this_ 对象参数
|
7 months ago |
韩天峰
|
0f3ccb98cd
|
feat(php): 添加属性偏移量支持和性能优化
- 引入 Node 类型导入并添加 isIdExpr 方法用于标识符检查
- 新增 PROPERTY_OFFSETS 常量和 getPropertyOffset 方法用于属性偏移量计算
- 重构命名空间相关方法,统一使用 getNativeName 替代 getNativeFunctionName
- 优化属性获取逻辑,在特定条件下使用属性偏移量提升性能
- 在模板中生成属性偏移量声明和初始化代码
- 添加性能测试脚本 prof.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 |
韩天峰
|
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 |
韩天峰
|
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 |
韩天峰
|
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 |
韩天峰
|
8e7d39d7fe
|
fix(translator): 当接口和类定义均为空时提前返回
|
8 months ago |
韩天峰
|
689b59bbda
|
处理继承或实现内置类和接口
|
8 months ago |
韩天峰
|
6ff687e1da
|
Interface,ce 依赖关系处理,排序
|
8 months ago |
韩天峰
|
f8100988c4
|
update mixed
|
8 months ago |
韩天峰
|
af9ecf336f
|
feat(php): 添加方法和函数上下文跟踪功能
- 新增 method 和 function 属性用于跟踪当前解析的方法和函数名
- 在解析函数时设置函数名并清空函数上下文
- 实现类中 this_ 参数的自动注入
- 添加魔术常量 Method 和 Function 的支持
- 实现父类方法调用的特殊处理逻辑
- 添加静态变量赋值引用的变量声明
- 实现 __call 魔术方法参数验证
- 重构注释生成逻辑到独立方法
- 启用 noLiteralStrings 优化选项
|
8 months ago |
韩天峰
|
8b0c3d2b72
|
refactor(php): 重构PHP编译器基础功能并优化代码结构
- 移除不支持函数列表的硬编码定义
- 添加对不支持函数调用的运行时检查和错误报告
- 简化静态属性和类常量解析中的self关键字处理逻辑
- 修复类方法调用中self关键字的替换逻辑
- 将扩展模块入口声明从static改为全局作用域
- 重写gen_stub.php脚本的主函数结构和命令行参数处理
- 添加类信息和函数信息的独立生成选项
- 优化桩文件生成时的跳过提示输出
- 重构翻译器中的类解析方法实现
- 更新不支持函数列表包含更多动态函数
|
8 months ago |
韩天峰
|
ec106db274
|
refactor(compiler): 将全局变量生成改为扩展生成
- 修改编译器脚本中的文件名从 global_vars.cc 到 extension.cc
- 将 Translator 类中的 genGlobalVars 方法重命名为 genExtension
- 更新编译流程以生成扩展文件而不是全局变量文件
- 调整相关变量命名以反映功能变更
|
8 months ago |
韩天峰
|
9702529c0f
|
feat(compiler): 添加类常量获取支持并优化参数信息处理
- 在 CompilerBase.php 中添加对 Expr_ClassConstFetch 类型的支持
- 修改 getArgInfo 方法签名以接收 Node 参数并添加参数不存在时的错误处理
- 修复三元运算符解析逻辑以正确处理省略中间表达式的情况
- 将 null 常量映射从 nullptr 改为 php::null
- 扩展 hasVar 方法以支持更多变量类型包括静态属性和对象属性
- 添加 parseClassConstFetch 方法用于处理类常量获取表达式
- 在 gen_stub.php 中修复缺少可见性修饰符和参数类型的处理
- 跳过生成 ext_functions 条目当类名不存在时
- 在 Translator.php 中添加存根文件生成的状态检查和错误报告
|
8 months ago |
韩天峰
|
e1bb057420
|
feat(compiler): 添加缓存机制和强制编译选项
- 在Preprocessor类中添加enableCache属性控制缓存功能
- 实现getCppFile和getObjectFile方法用于文件路径处理
- 添加hasCppFileCache方法检查C++文件缓存是否存在
- 在prepare方法中集成缓存检查逻辑跳过已存在的缓存文件
- 在Translator类中添加force参数支持强制编译模式
- 移除原有的hasCache方法并优化convert方法的缓存处理
- 添加hasObjectFileCache方法检查对象文件缓存状态
- 更新compileFile方法集成对象文件缓存检查功能
- 在帮助信息中显示新的force选项说明
|
8 months ago |
韩天峰
|
f3944a5259
|
refactor(compiler): 重构PHP到C++编译器实现
- 修改编译流程,添加对象文件路径管理功能
- 实现缓存检查机制,跳过已存在的编译文件
- 重命名MethodDef中的def属性为functionDef
- 提取表达式类型转换逻辑到独立方法convertExprFromType
- 添加扩展模板文件extension.cc.php,使用模板渲染替代手动代码生成
- 修改main.cc文件结构,使用模块注册方式替代函数注册
- 更新编译参数,添加-Wall编译选项
- 实现方法调用参数传递的动态构建机制
- 优化全局变量初始化和清理函数的实现
|
8 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 |
韩天峰
|
d24c8be049
|
feat(php): 添加命名空间支持和类继承功能
- 在 ClassDef 中添加 namespace、implements 和 extends 属性
- 实现 getNamespacedName 方法用于获取带命名空间的类名
- 在 CompilerBase 中添加 classes 属性存储类定义
- 修复函数名解析时的大小写转换问题
- 添加对 __CLASS__ 魔术常量的支持
- 移除废弃的 stub 文件常量初始化函数
- 更新命名空间定义的解析逻辑
- 在 Translator 中实现完整的命名空间解析功能
- 添加类继承关系的支持和注册机制
- 实现在全局变量生成中包含类定义入口
- 添加标识符列表解析辅助方法
- 更新示例文件以测试继承功能
|
8 months ago |
韩天峰
|
ca1ee88d5f
|
支持 class 处理,初步版本
|
8 months ago |
韩天峰
|
da9b944099
|
重构类结构,拆分成多个类,避免单个类的尺寸过大
|
8 months ago |
韩天峰
|
8327e198ed
|
重构类结构,拆分成多个类,避免单个类的尺寸过大
|
8 months ago |
韩天峰
|
07c7abffd7
|
类处理代码
|
8 months ago |
韩天峰
|
16787142d6
|
修复错误,增加单测
|
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 |
韩天峰
|
185c5a75dc
|
添加 NAMESPACE_SEPARATOR 常量用于统一分隔符定义
|
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 |
韩天峰
|
ba3ffd885f
|
支持 C++ Native 函数注入,stub 存根文件
|
8 months ago |
韩天峰
|
04f265ae24
|
全局变量
|
8 months ago |
韩天峰
|
730e0e45f1
|
支持 empty 语法
|
8 months ago |