2012-12-28 38 views
0

我確定有一個標準的方法來做到這一點,但我甚至不知道從哪裏開始搜索它。識別語法產生正確性的標準算法

我怎麼能認識到,在任何語言,結構(語法)的形式,例如:

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

我的意思是,給定一個字符串像32 + (43 + 23),我怎麼能知道它是合法的嗎?有沒有標準的算法或什麼?我不知道要搜索什麼,所以我也無法搜索此網站。

+0

如果可以將語法轉換爲LL1語法,則可以使用LL1分析器。 –

回答

1

您正在尋找解析算法(會員算法)。解析是分析形式語言中的一串語言符號的過程。而是任何上下文無關文法有可能的分析算法,即蠻力的基本算法,但效率不高,像短語結構解析,其最壞情況下的複雜度爲O(n ) (你要從這裏開始)REFF1。但是,如果語法是標準(限制)形式,那麼更有效的算法是可能的。有各種解析算法,例如LL解析器和LR解析器等。 REFFRENCE