用于识别语法产生正确性的标准算法

时间:2012-12-28 15:16:01

标签: grammar

我确信有一种标准方法可以做到这一点,但我甚至不知道从哪里开始搜索它。

我如何以任何语言识别结构(语法),例如:

Exp ::= Number |(Exp) | Exp + Exp 
Number ::= Number Digit | Digit
Digit ::= 0 | ... | 9

我的意思是,给定一个像32 + (43 + 23)这样的字符串,如何判断它是否合法?有标准算法还是什么?我不知道要搜索什么,所以我也无法搜索这个网站。

1 个答案:

答案 0 :(得分:1)

您正在寻找解析算法(成员资格算法)。解析是在形式语言中分析一串语言符号的过程。并且是的,对于任何无上下文语法有一种可能的解析算法 - Brute-Force一个基本算法但效率低,就像短语结构解析一样,它最差 - 案例复杂性为O(n 3 (您将从这里开始) REFF1。但是如果语法是标准(限制)形式,那么更有效的算法是可能的。存在各种解析算法,例如LL解析器和LR解析器..等。 REFFRENCE