标签: grammar
我确信有一种标准方法可以做到这一点,但我甚至不知道从哪里开始搜索它。
我如何以任何语言识别结构(语法),例如:
Exp ::= Number |(Exp) | Exp + Exp Number ::= Number Digit | Digit Digit ::= 0 | ... | 9
我的意思是,给定一个像32 + (43 + 23)这样的字符串,如何判断它是否合法?有标准算法还是什么?我不知道要搜索什么,所以我也无法搜索这个网站。
32 + (43 + 23)
答案 0 :(得分:1)
您正在寻找解析算法(成员资格算法)。解析是在形式语言中分析一串语言符号的过程。并且是的,对于任何无上下文语法有一种可能的解析算法 - Brute-Force一个基本算法但效率低,就像短语结构解析一样,它最差 - 案例复杂性为O(n 3 )(您将从这里开始) REFF1。但是如果语法是标准(限制)形式,那么更有效的算法是可能的。存在各种解析算法,例如LL解析器和LR解析器..等。 REFFRENCE