1

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

示例源代码:

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

结果:

  • 函数名称:Test.onLoad
  • 内容:Test.initialize();
  • 在以下行找到左大括号:1
  • 在 line 找到右大括号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++ 就是一个很好的例子,因为它有一个插件,可以检测许多不同的源代码语言,并使用每个部分的颜色解析代码并匹配大括号。

4

2 回答 2

2

使用真正的解析器是唯一适用于所有情况的解决方案。

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

如果解决方案也需要使用 Javascript,那么您可以查看关于 javascript 中的解析器的这个问题

于 2013-04-18T14:05:12.680 回答
1

如果您希望它完美,您将需要一个真正的解析器用于您的语言。如果不是,您可以设计一个简化的CFG并为此编写一个解析器(我见过很多语法高亮器都是这样工作的。)

于 2013-04-18T13:01:54.820 回答