2010-06-08 93 views
1

我需要解析一个括号内的字符串,它看起来像(A,B,C),其中A,B和C是可以包含任何合法JavaScript代码的字符串。例如,B可能是一个非常长的字符串,嵌套结构类似于(A,B,C)。解析这样一个字符串的最好方法是什么?JavaScript解析括号

字符串到分析器的一个例子是调用函数:

FUNC(参数1,参数2,参数3)

其中所有的三个参数可以是其他函数定义。

+0

你能举一个真实的例子吗? – dcp 2010-06-08 00:32:14

+0

太糟糕了,您无法将该字符串作为JSON传送给您!但是,是的,如果我们能看到一个样本字符串,这将有所帮助。 – Funka 2010-06-08 01:05:14

回答

1

创建这种解析器的最简单方法之一是编写一个recursive descent parser。这种类型的解析器相对容易创建,并且比更复杂的解析器生成器(如“yacc”等)更容易理解。

+0

是否有任何这样的解析器在JavaScript中实现? – Paul 2010-06-08 00:35:05

+0

@Paul:我发现了一些Google搜索“javascript递归下降”。但是,通常递归下降解析器是您为特定语法编写的东西。语法的结构与解析器本身的结构密切相关(如您可以从维基百科的示例中看到的那样)。 – 2010-06-08 00:42:06

+1

@Paul:如果您需要解析实际的JavaScript源代码,那么构建一个处理所有情况的解析器本身就可以是一个相当项目。如果您可以将输入限制为JavaScript的一个子集,则可能会有相当简单的时间。另外,关于正则表达式:正则表达式可以解析[正式语言](http://en.wikipedia.org/wiki/Regular_language),它是形式语言理论中的一个特定术语。具有任意深度嵌套结构的任何语言(如JavaScript)都不是常规语言。 – 2010-06-08 01:55:55