regex - 如何识别一段代码中的变量名

标签 regex axapta x++

我正在尝试用 X++ 编写一个 halstead 复杂性度量(语言并不重要),我认为最好的方法是在源代码上使用正则表达式。

我已经完成了其中的 90%,但在变量名上遇到困难。

如何识别一段代码中的变量名。

给定以下代码

public void main()
{
    int a, b, c, av;
    className class;
    strFmt("%1 %2 %3", a, b, c);
    av = (a + b + c) / 3;
    info("avg = %1");*/

    if(a)
    {
        a++;
        class.add(a);
    }
    else
    {
        b++;
        class.subtract(b)
    }

    this.main();
}

我希望返回“a”“b”“c”“av”“class”

有了 halstead,它需要计算它们的实例。我的想法是将上面的内容存储在列表中,然后在正则表达式查询中使用列表中的任何内容。迎合变量的所有可能用途将是疯狂的。

最佳答案

我认为您必须反射(reflection) AOT 才能获得不同的变量。

您可以将反射与 TreeNode 一起使用,或者您可以使用 XPPCompiler 来获取有关您正在处理的对象的信息以提供帮助:

info(strFmt("%1", new xppCompiler().dumpClass('salesformletter')));

关于regex - 如何识别一段代码中的变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25384113/

相关文章:

javascript - 简单的Regex空白检查器

Axapta:从容器字段加载和保存文件

file - 如何获取文件的文件创建日期?

axapta - 如何在 ax 2012 中查找表中的所有字段?

javascript - 从 'one behind' 到 'one before'(之间)

php - 如果 REGEX 没有任何匹配项,如何设置 NULL?

axapta - AX 中的数据透视表

axapta - 填充临时表的最快 X++ 代码

axapta - 如何在Microsoft Dynamic AX的AOT中查找合适的EDT?

javascript - 如何正则表达式方括号?