在源代码中检测和匹配函数的开始和结束大括号



我想知道是否已经有很好的算法来检测函数声明,函数内容,其开括号和闭括号。对于开发、调试和测试错误,在某些情况下,当您需要在大多数函数中添加大量代码时,它可能会很好。

示例源代码:

Test.onLoad=function(event){
    Test.initialize();
};
结果:

  • 功能名称:Test.onLoad
  • 内容:Test.initialize();
  • 左括号在行:1 .
  • 3行找到右括号。
例如,有了上面的信息,我们可以很容易地在所有函数的开始和结束处添加一行来记录一些参数:
Test.onLoad=function(event){
    Log("LogInit","function:Test.onLoad","openbraceline:1","content: Test.initialize();");
    Test.initialize();
    Log("LogEnd ","function:Test.onLoad","endbraceline :5","content: Test.initialize();");
};

我知道这个功能也可以用一个简单的全局日志和调用堆栈来实现,但是仍然有很多例子,这可能是非常有用的。


制作一个简单的算法来检测和匹配大括号,并获得函数信息可能很容易,但有很多例外,这可能是非常复杂的,这就是为什么我问是否已经有很好的方法来检测它。
我不介意例子算法或技巧是用任何语言,只是想看看最好的方法。

notepad++就是一个很好的例子,因为它有一个插件,可以检测许多不同的源代码语言,并为每个部分使用颜色来解析代码,并匹配大括号。

使用真正的解析器是在所有情况下都有效的唯一解决方案。

这似乎是关于Javascript的,所以我的建议是使用Rhino,它非常容易使用,但工具最终将是一个java工具,当然。

如果解决方案也需要在Javascript中,那么你可以看看这个关于Javascript中的解析器的问题

如果你想让它完美,你将需要一个真正的语言解析器。如果没有,您可以设计一个简化的CFG并为此编写解析器(我见过的许多语法高亮笔都是这样工作的)

相关内容

  • 没有找到相关文章

最新更新