銆銆
宸寸鏂寖寮?/font>鍙婂叾鎵╁睍
銆銆BNF & Augmented BNF
銆銆浠涔堟槸宸寸鏂寖寮忥紵
銆銆宸寸鏂寖寮?BNF: Backus-Naur Form 鐨勭緝鍐?鏄敱 John Backus 鍜?Peter Naur 棣栨寮曞叆涓縐嶅艦寮忓寲絎﹀彿鏉ユ弿榪扮粰瀹氳璦鐨勮娉曪紙鏈鏃╃敤浜庢弿榪癆LGOL 60 緙栫▼璇█錛夈傜‘鍒囧湴璇達紝鏃╁湪UNESCO錛?a target="_blank">
鑱斿悎鍥芥暀縐戞枃緇勭粐錛夊叧浜嶢LGOL 58鐨勪細璁笂鎻愬嚭鐨勪竴綃囨姤鍛婁腑錛孊ackus灝卞紩鍏ヤ簡澶ч儴鍒咮NF絎﹀彿銆傝櫧鐒舵病鏈変粈涔堜漢璇昏繃榪欑瘒鎶ュ憡錛屼絾鏄湪Peter Naur璇昏繖綃囨姤鍛婃椂錛屼粬鍙戠幇Backus瀵笰LGOL 58鐨勮В閲婃柟寮忓拰浠栫殑瑙i噴鏂瑰紡鏈変竴浜涗笉鍚屼箣澶勶紝榪欎嬌浠栨劅鍒板緢鎯婂銆傞嬈¤璁LGOL鐨勬墍鏈夊弬涓庤呴兘寮濮嬪彂鐜頒簡浠栫殑瑙i噴鏂瑰紡鐨勪竴浜涘急鐐癸紝鎵浠ヤ粬鍐沖畾瀵逛簬浠ュ悗鐗堟湰鐨凙LGOL搴旇浠ヤ竴縐嶇被浼肩殑褰㈠紡榪涜鎻忚堪錛屼互璁╂墍鏈夊弬涓庤呮槑鐧戒粬浠湪瀵逛粈涔堣揪鎴愪竴鑷存剰瑙併備粬鍋氫簡灝戦噺淇敼錛屼嬌鍏跺嚑涔庡彲浠ラ氱敤錛屽湪璁捐ALGOL 60鐨勪細璁笂浠栦負ALGOL 60鑽夋嫙浜嗚嚜宸辯殑BNF銆傜湅浣犲浣曠湅寰呮槸璋佸彂鏄庝簡BNF浜嗭紝鎴栬呰涓烘槸Backus鍦?959騫村彂鏄庣殑錛屾垨鑰呰涓烘槸Naur鍦?960騫翠腑鍙戞槑銆傦紙鍏充簬閭d釜鏃舵湡緙栫▼璇█鍘嗗彶鐨勬洿澶氱粏鑺傦紝鍙傝1978騫?鏈堬紝銆奀ommunications of the ACM錛堢編鍥借綆楁満瀛︿細閫氳錛夈嬶紝絎?1鍗鳳紝絎?鏈熶腑浠嬬粛Backus鑾峰浘鐏靛鐨勬枃绔犮傝繖涓敞閲婃槸鐢辨潵鑷狶os Alamos Natl.瀹為獙瀹ょ殑William B. Clodius寤鴻鐨勶級銆?
銆銆鐜板湪錛屽嚑涔庢瘡涓浣嶆柊緙栫▼璇█涔︾睄鐨勪綔鑰呴兘浣跨敤宸寸鏂寖寮忔潵瀹氫箟緙栫▼璇█鐨勮娉曡鍒欍?
銆銆-----------------------------------------------------------------------------
銆銆宸寸鏂寖寮忕殑鍐呭
銆銆鍦ㄥ弻寮曞彿涓殑瀛?"word")浠h〃鐫榪欎簺瀛楃鏈韓銆傝宒ouble_quote鐢ㄦ潵浠h〃鍙屽紩鍙楓?
銆銆鍦ㄥ弻寮曞彿澶栫殑瀛楋紙鏈夊彲鑳芥湁涓嬪垝綰匡級浠h〃鐫璇硶閮ㄥ垎銆?
銆銆灝栨嫭鍙? < > )鍐呭寘鍚殑涓哄繀閫夐」銆?
銆銆鏂規嫭鍙? [ ] )鍐呭寘鍚殑涓哄彲閫夐」銆?
銆銆澶ф嫭鍙? { } )鍐呭寘鍚殑涓哄彲閲嶅0鑷蟲棤鏁版鐨勯」銆?
銆銆绔栫嚎( | )琛ㄧず鍦ㄥ叾宸﹀彸涓よ竟浠婚変竴欏癸紝鐩稿綋浜?OR"鐨勬剰鎬濄?
銆銆::= 鏄?#8220;琚畾涔変負”鐨勬剰鎬濄?
銆銆宸寸鏂寖寮忕ず渚?
銆銆榪欐槸鐢˙NF鏉ュ畾涔夌殑
Java璇█涓殑For璇彞鐨勫疄渚嬶細
銆銆FOR_STATEMENT ::=
銆銆"for" "(" ( variable_declaration |
銆銆( expression ";" ) | ";" )
銆銆[ expression ] ";"
銆銆[ expression ]
銆銆")" statement
銆銆榪欐槸Oracle packages鐨凚NF瀹氫箟錛?
銆銆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 { "," argument } ")" ]
銆銆"return" return_type
銆銆"is"
銆銆[ "declare" declare_spec ";" { 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
銆銆榪欐槸鐢˙NF鏉ュ畾涔夌殑BNF鏈韓鐨勪緥瀛愶細
銆銆syntax ::=
銆銆rule ::= identifier "::=" expression
銆銆expression ::= term { "|" term }
銆銆term ::= factor
銆銆factor ::= identifier |
銆銆quoted_symbol |
銆銆"(" expression ")" |
銆銆"[" expression "]" |
銆銆"{" expression "}"
銆銆identifier ::= letter { letter | digit }
銆銆quoted_symbol ::= """ """
銆銆鎵╁睍鐨勫反縐戞柉鑼冨紡 Augmented BNF
銆銆RFC2234 瀹氫箟浜嗘墿灞曠殑宸寸鏂寖寮?ABNF)銆傝繎騫存潵鍦↖nternet鐨勫畾涔変腑ABNF琚箍娉涗嬌鐢ㄣ侫BNF鍋氫簡鏇村鐨勬敼榪涳紝姣斿璇達紝鍦ˋBNF涓紝灝栨嫭鍙蜂笉鍐嶉渶瑕併?