我想知道是否已经有很好的算法来检测函数声明,函数内容,其开括号和闭括号。对于开发、调试和测试错误,在某些情况下,当您需要在大多数函数中添加大量代码时,它可能会很好。
示例源代码:
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并为此编写解析器(我见过的许多语法高亮笔都是这样工作的)