获取运行时 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)

https://www.forgebox.io/view/funclinenums

还有一个函数 callStackGet() 文档:https://cfdocs.org/callstackget 这可能对您尝试做的任何事情都有用。

还有另一个 CFML 解析器(用 CFML 编写):https://github.com/foundeo/cfmlparser