2013-03-12 59 views
0

在JavaScript中,是否可以使用其他正则表达式定义正则表达式,以便每个正则表达式都是递归定义的?定义彼此之间的正则表达式

例如,我想用这些正则表达式(在彼此来定义)来表示JavaScript编程语言的语法的一小部分:

<functionDefinition> = function <functionName>(<parameterList>){statementList} 
<statementList> = (<functionDefinition>| ... other valid statements go here ...) //a series of JavaScript statements or function definitions 

//each of these regular expressions are defined in terms of the others, allowing them to be infinitely nested 
+0

相互定义的正则表达式的另一个例子是在这里找到:http://en.wikipedia.org/wiki/Backus-Naur_form#示例我想知道是否可以在JavaScript中相互定义正则表达式。 – 2013-03-12 08:49:20

+1

你要求的是[*上下文无关文法*](http://en.wikipedia.org/wiki/Context-free_grammar)。一般来说,正则表达式并没有描述CFG,所以这里是错误的工具。你需要一个合适的解析器(虽然我不知道Javascript,但我有信心说现存的解析库必须存在......) – 2013-03-12 08:50:13

+0

@OliCharlesworth是否可以检查一个字符串是否与上下文无关语法匹配?我想我可能在我原来的问题中滥用了“正则表达式”一词。 – 2013-03-12 08:52:12

回答

1

在JavaScript中,是有可能根据其他正则表达式定义正则表达式,以便每个正则表达式都是递归定义的?

不,这是不可能的使用JavaScript的正则表达式实现。

你需要一个解析器(生成器)。可能的JS选项有: