編譯器
下列何者是用來表示許多程式語言的文法、並成為語法分析之基礎的文法種類?
- A僅有正規文法
- B自然語言的文法
- C脈絡無關文法(context-free grammar)
查看答案與解析
正確答案:C. 脈絡無關文法(context-free grammar)
括號的巢狀結構,或if敘述裡面還有if敘述的結構,無法用正規表示式表示。許多程式語言的文法是用脈絡無關文法表示的,它是像「運算式 → 運算式 + 項」這樣的改寫規則的集合,語法分析就是依據這種文法來進行。解析方法有從上往下套用規則的LL法,以及從下往上組建的LR法等,也有能從文法自動產生解析器的工具。正規文法適用於詞法分析,無法處理巢狀結構。
- A. 正規文法無法表示括號巢狀這類結構。
- B. 程式語言不是以自然語言的文法來定義的。
- C. 正確。語法分析是以脈絡無關文法為基礎。