BNF(巴科斯正規化)

2021-08-20 21:56:31 字數 1826 閱讀 3516

巴科斯正規化(bnf: backus-naur form 的縮寫)是由 john backus 和 peter naur 首次引入一種形式化符號來描述給定語言的語法(最早用於描述algol 60 程式語言)。

在雙引號中的字(「word」)代表著這些字元本身。而double_quote用來代表雙引號。

在雙引號外的字(有可能有下劃線)代表著語法部分。

尖括號( < > )內包含的為必選項。

方括號( [ ] )內包含的為可選項。

大括號( )內包含的為可重複0至無數次的項。

豎線( | )表示在其左右兩邊任選一項,相當於"or"的意思。

::= 是「被定義為」的意思。

for_statement ::=

"for" "(" ( (variable_declaration ";") |

( expression ";" ) | ";" )

[ expression ] ";"

[ expression ]

")" statement

package_body ::= "package" package_name "is"

package_obj_body

[ "begin" seq_of_statements ]

"end" [ package_name ] ";"

package_obj_body ::= variable_declaration

| subtype_declaration

| cursor_declaration

| cursor_body

| exception_declaration

| record_declaration

| plsql_table_declaration

| procedure_body

| function_body

procedure_body ::= "procedure" procedure_name

[ "(" argument ")" ]

"return" return_type

"is"

[ "declare" declare_spec ";" ]

"begin"

seq_of_statements

[ "exception" exception_handler ]

"end" [ procedure_name ] ";"

statement ::= comment

| assignment_statement

| exit_statement

| goto_statement

| if_statement

| loop_statement

| null_statement

| raise_statement

| return_statement

| sql_statement

| plsql_block

syntax ::=

rule ::= identifier "::=" expression

expression ::= term

term ::= factor

factor ::= identifier |

quoted_symbol |

"(" expression ")" |

"[" expression "]" |

""identifier ::= letter

quoted_symbol ::= """ """

巴科斯正規化BNF

巴科斯正規化的英文縮寫為bnf,它是以美國人巴科斯 backus 和丹麥人諾爾 naur 的名字命名的一種形式化的語法表示方法,用來描述語法的一種形式體系,是一種典型的元語言。又稱巴科斯 諾爾形式 backus naur form 它不僅能嚴格地表示語法規則,而且所描述的語法是與上下文無關的。它具有...

擴充套件巴科斯正規化

維基百科,自由的百科全書 擴充套件巴科斯 瑙爾正規化 ebnf 是表達作為描述計算機程式語言 和形式語言 的正規方式的上下文無關文法 的元語法 符號表示法。它是基本巴科斯正規化 bnf 元語法 符號表示法的一種擴充套件。它最初由尼克勞斯 維爾特 開發,最常用的 ebnf 變體由標準,特別是 iso ...

巴庫斯正規化

首先講講這麼東西是幹嘛的。它的英文名叫backus naur form,簡寫做bnf,是用發明這種格式的兩位開發者的名字所命名。rfc2234 定義了擴充套件的巴科斯正規化 abnf,argumented bnf 近年來在internet的定義中abnf被廣泛使用。abnf做了更多的改進,比如說,在...