阿摩線上測驗 登入

申論題資訊

試卷:104年 - 104年地方四等-程式設計概要#35322
科目:程式設計
年份:104年
排序:0

題組內容

一、請試述下列名詞之意涵:(每小題 4 分,共 24 分)

申論題內容

⑶ BNF Grammar

詳解 (共 2 筆)

詳解 提供者:牛奶鍋
是一種用於表示上下文無關文法的語言,上下文無關文法描述了一類形式語言。

BNF 規定是推導規則(產生式)的集合,寫為:
<符號> ::= <使用符號的表達式>
這裡的 <符號> 是非終結符,而表達式由一個符號序列,或用指示選擇的豎槓 '|' 分隔的多個符號序列構成,每個符號序列整體都是左端的符號的一種可能的替代。從未在左端出現的符號叫做終結符。
詳解 提供者:hchungw

BNF(巴科斯-諾爾範式,Bacchus-Naur Form)文法是一種用於表示上下文無關文法的符號系統,廣泛應用於電腦科學中,特別是在編程語言的語法描述、數據結構的規範化表示以及通信協議的規範中。它通過一系列的規則定義了語言的語法結構,使得語法的描述既精確又簡潔。
BNF文法的基本組成:
終結符(Terminal symbols):語言的基本符號,直接出現在語言中的字元或詞,比如編程語言中的關鍵字、識別字、運算符等。
非終結符(Non-terminal symbols):用於表示語言結構的符號,它們通過終結符和其他非終結符的組合定義。
產生式(Productions):一系列的規則,形式為<非終結符> ::= 運算式,表示非終結符可以由運算式中的符號序列替換。
運算式:由終結符和非終結符組成的序列,可以包含選擇(用|表示)、重複和分組等操作。
BNF語法規則示例:
假設我們要定義一個簡單的算術運算式語法,包括加法和乘法操作,可以使用如下的BNF文法:
<expression> ::= <term> | <expression> "+" <term>
<term> ::= <factor> | <term> "*" <factor>
<factor> ::= <number> | "(" <expression> ")"
<number> ::= <digit> | <number> <digit>
<digit> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
在這個例子中:
終結符包括數字"0"到"9"、加號"+"和乘號"*"以及括弧"("和")"。
非終結符包括<expression>、<term>、<factor>和<number>。
產生式描述了如何通過加法和乘法操作組合數字來形成運算式。
通過這些規則,我們可以精確地描述如何構造有效的算術運算式,例如"(2+3)*5"。
BNF文法通過其簡潔明瞭的規則,為編程語言設計、編譯器開發和協議規範提供了一種強有力的工具。