获取运行时 ColdFusion 语法树?
Get runtime ColdFusion syntax trees?
是否可以在 运行 时访问/修改 ColdFusion 语法树?
我敢打赌,10 分钟的搜索 google 没有找到任何东西。摆弄闭包和编写元数据转储,我们可以看到对象的字符串化版本,例如 [runtime expression]
,例如:
function x(a=b+1) {}
WriteDump(getMetaData(x).parameters[1]["default"]);
它是否让我们不能比这更深入,或者也许有人知道如何继续挖掘并开始行走树木?
如您所见,默认 UDF 参数表达式在函数元数据中不可用。其他实现了某种形式的 CFML 解析器的库是
CFLint(用Java编写并使用ANTLR)
https://github.com/cflint/CFLint
CFFormat(也使用从 Rust 编译的二进制文件)
https://www.forgebox.io/view/commandbox-cfformat
函数 LineNums(纯 CFML)
还有一个函数 callStackGet() 文档:https://cfdocs.org/callstackget 这可能对您尝试做的任何事情都有用。
还有另一个 CFML 解析器(用 CFML 编写):https://github.com/foundeo/cfmlparser
是否可以在 运行 时访问/修改 ColdFusion 语法树?
我敢打赌,10 分钟的搜索 google 没有找到任何东西。摆弄闭包和编写元数据转储,我们可以看到对象的字符串化版本,例如 [runtime expression]
,例如:
function x(a=b+1) {}
WriteDump(getMetaData(x).parameters[1]["default"]);
它是否让我们不能比这更深入,或者也许有人知道如何继续挖掘并开始行走树木?
如您所见,默认 UDF 参数表达式在函数元数据中不可用。其他实现了某种形式的 CFML 解析器的库是
CFLint(用Java编写并使用ANTLR)
https://github.com/cflint/CFLint
CFFormat(也使用从 Rust 编译的二进制文件)
https://www.forgebox.io/view/commandbox-cfformat
函数 LineNums(纯 CFML)
还有一个函数 callStackGet() 文档:https://cfdocs.org/callstackget 这可能对您尝试做的任何事情都有用。
还有另一个 CFML 解析器(用 CFML 编写):https://github.com/foundeo/cfmlparser