韩天峰
|
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 |
韩天峰
|
955a3b0e4f
|
refactor(compiler): 优化路径验证逻辑
- 将路径验证和赋值逻辑分离,提高代码可读性
- 使用临时变量存储realpath结果,避免重复调用
- 先验证路径存在性再进行赋值操作
|
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 |
韩天峰
|
730e0e45f1
|
支持 empty 语法
|
8 months ago |
韩天峰
|
73f84217db
|
支持静态类属性读写语法
|
8 months ago |
韩天峰
|
5824e859e6
|
赋值操作作为右值,修复 try/catch 没有 finally 无法跳出循环的问题
|
8 months ago |
韩天峰
|
b0d261576f
|
Merge remote-tracking branch 'origin/master'
|
8 months ago |
韩天峰
|
5f14139ace
|
Native 常量处理
|
8 months ago |
韩天峰
|
122e43b679
|
添加 'examples/bench/test1.php'
|
8 months ago |
韩天峰
|
4dd4b61218
|
添加更多單元測試
|
8 months ago |
韩天峰
|
4f095c301d
|
添加更多單元測試
|
8 months ago |
韩天峰
|
c1d759de57
|
动态函数调用语法 [2]
|
8 months ago |
韩天峰
|
fb10132b6c
|
动态函数调用语法
|
8 months ago |
韩天峰
|
739152ba14
|
支持语法 **=
|
8 months ago |
韩天峰
|
4162b79113
|
try/catch 语法支持
|
8 months ago |
韩天峰
|
ec836bcb31
|
nbody-php-3 算法
|
8 months ago |
韩天峰
|
5f1fe2e2a4
|
禁止 for 循环中覆盖全局变量
|
8 months ago |
韩天峰
|
74a3778426
|
禁止 foreach 中添加全局变量的同名变量
|
8 months ago |
韩天峰
|
bf09f600ba
|
全局变量 unset
|
8 months ago |
韩天峰
|
2ce0791299
|
优化代码
|
8 months ago |