巴科斯范式BNF: Backus-Naur Form介紹

巴科斯范式(BNF: Backus-Naur Form. 的縮寫)是由 John Backus 和 Peter Naur 首次引入一種形式化符號來描述給定語言的語法(最早用于描述ALGOL 60 編程語言)。

現在,幾乎每一位新編程語言書籍的作者都使用巴科斯范式來定義編程語言的語法規則。

巴科斯范式的內容

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

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

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

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

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

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

::= 是“被定義為”的意思。


巴科斯范式示例


這是用BNF來定義的Java語言中的For語句的實例:

FOR_STATEMENT ::=

"for" "(" ( variable_declaration |

( expression ";" ) | ";" )

[ expression ] ";"

[ expression ]

")" statement

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/255972.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255972.shtml
英文地址,請注明出處:http://en.pswp.cn/news/255972.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2017-2018-1 20155229 《信息安全系統設計基礎》第十三周學習總結

2017-2018-1 20155229 《信息安全系統設計基礎》第十三周學習總結 對“第二章 信息的表示和處理”的深入學習 這周的任務是選一章認為最重要的進行學習&#xff0c;我選擇了第二章。當今的計算機存儲和處理信息基本上是由二進制&#xff08;位&#xff09;組成&#xff0c;二進…

【VOC格式xml文件解析】——Python

#!/usr/bin/env python # -*- coding: utf-8 -*- # Time : 2021/4/26 12:49 # Author : linlianqin # Site : # File : test1.py # Software: PyCharm # description: import xml.etree.ElementTree as ETdef xmli(xmlpath):xmlTree ET.parse(xmlpath) # 解析xml文…

C—的BNF語法

近期用到ABB機器人&#xff0c;RAPID使用BNF語法規則描述&#xff0c;所以不得不復習了一下BNF語法描述規則&#xff0c;通過C的BNF描述&#xff0c;喚醒我的記憶 %>_<% C—的BNF語法如下&#xff1a; 1. program → declaration-list 2. declaration-list → decla…

Warning: Attempt to present on whose view is not in模態跳轉問題

錯誤分析&#xff1a; controller A present controller B ,前提是A的view要存在&#xff0c;如果不存在&#xff0c;就會報這個錯。解決方法&#xff1a; 將原來的present語句由 viewDidLoad方法中移到 viewDidAppear中&#xff0c;問題就可以解決。但是這樣的話&#xff0c;畫…

Reflector7及破解

Reflector7開始收費&#xff0c;前面的版本都已經過期&#xff0c;在網上下載了Reflector7&#xff0c;并找到了破解軟解&#xff0c;特在此分享。 下載地址&#xff1a; Reflector7.1.0.143.zip&Red.Gate_.NET_.Reflector.7.1.0.143.patch-SND.zip 本文轉自xwdreamer博客園…

win7系統的右鍵菜單只顯示一個白色框不顯示菜單項 解決辦法

如上圖所示&#xff0c;桌面或其他大部分地方點擊右鍵菜單&#xff0c;都只顯示一個白色框&#xff0c;鼠標移上去才有菜單項看&#xff0c;并且效果很丑 解決辦法&#xff1a; 計算機—右鍵—屬性—高級—性能—設置—視覺效果—淡入淡出或滑動菜單到視圖&#xff0c;將其前面…

【setup.py編譯出錯】——提示無法查找到powershell.exe

https://www.cnblogs.com/wind-chaser/p/11359521.html pytorch fasterrcnn訓練自己數據集文章鏈接 在進行faster rcnn pytorch跑通的時候遇到的&#xff0c;我是直接在pycharm中的終端上進行運行的&#xff0c;但是一直會跳出powershell.exe無法查找的錯誤&#xff0c; pytho…

同工不同酬,年薪 50 萬美金的工程師到底有什么神本事?

同工不同酬&#xff0c;年薪 50 萬美金的工程師到底有什么神本事&#xff1f;投遞人 itwriter 發布于 2014-05-10 23:09 評論(6) 有6066人閱讀 原文鏈接 [收藏] 英文原文&#xff1a;What kind of jobs do the software engineers who earn $500K a year do? 他們究竟是作…

201671010117 2016-2017-2 《Java程序設計》Java第十七周學習心得

Java第十七周學習心得 這一周老師對線程的內容進行了詳細講解&#xff0c;包括線程創建的兩種技術&#xff0c;和線程的優先級屬性及調度方法&#xff0c;對于布置的實驗作業中&#xff0c;實驗九中存在一點問題&#xff0c;程序運行不出來&#xff0c;后來跟同學商量探討沒有…

ACM數論之旅4---擴展歐幾里德算法(歐幾里德(???)?是誰?)

為什么老是碰上 擴展歐幾里德算法 ( ????? )最討厭數論了 看來是時候學一學了 度娘百科說&#xff1a; 首先&#xff0c; axby gcd(a, b) 這個公式肯定有解 &#xff08;( ????? )她說根據數論中的相關定理可以證明&#xff0c;反正我信了&#xff09; 所以 axby g…

艾里斑大小與像元尺寸的匹配問題

寫給自己看的學習記錄&#xff1a; 光具有波粒二象性&#xff0c;由此衍生出了幾何光學與衍射光學。在光學設計軟件中&#xff0c;最常用的判斷標準是查看點列圖的RMS半徑以及MTF圖的曲線&#xff0c;這兩者分別代表了兩種傳播性質的評價方式。 在剛接觸光學設計時&#xff0…

Android 保持Service不被Kill掉的方法--雙Service守護 Android實現雙進程守護

本文分為兩個部分&#xff0c;第一部分為雙Service守護&#xff0c;第二部分為雙進程守護 第一部分&#xff1a; 一、Service簡介&#xff1a;Java.lang.Object ?Android.content.Context ?android.content.ContextWrapper ?android.app.Service Service是應用程序Applicati…

【mmdetection2.0錯誤】——ModuleNotFoundError: No module named ‘mmdet‘

一開始以為是安裝包導入的相對路徑的問題&#xff0c;結果鼓搗了一上午都沒有用&#xff0c;最后才發現再進行mmdet2.0環境配置的時候忘記編譯了 也就是如下語句&#xff1a; python setup.py develop

聊聊分布式事務

事務就是一個會話過程中&#xff0c;對上下文的影響是一致的&#xff0c;要么所有的更改都做了&#xff0c;要么所有的更變都撤銷掉。就要么生&#xff0c;要么死。沒有半死不死的中間不可預期狀態。參考下薛定諤的貓。 事務是為了保障業務數據的完整性和準確性的。分布式事務&…

PLSQL DBMS_DDL.ANALYZE_OBJECT

http://space.itpub.net/11893231/viewspace-683241 本文轉自健哥的數據花園博客園博客&#xff0c;原文鏈接&#xff1a;http://www.cnblogs.com/gaojian/archive/2012/11/30/2795775.html&#xff0c;如需轉載請自行聯系原作者

【深度學習mmdetection錯誤】——mmdetection 運行報錯KeyError:‘ConvWS is already registered in conv layer‘

于是修改以下mmdetection的安裝文件&#xff1a; site-packages/mmdet-2.1.0unknown-py3.7-linux-x86_64.egg/mmdet/ops/conv_ws.py" 把 CONV_LAYERS.register_module(ConvWS) 修改為&#xff1a; CONV_LAYERS.register_module(nameConvWS, forceTrue)

ABB RAPID 在 Notepad++ 中語法高亮的實現

ABB RAPID 在 Notepad 中語法高亮的實現 分類&#xff1a; Misc2014-04-08 15:43 145人閱讀 評論(0) 收藏 舉報notepadNotepad 內置了一個稱為 UDL2.0 (User Defined Language) 的引擎&#xff0c;來實現用戶自定義語法高亮&#xff0c;使用它&#xff0c;可以定制自己的代碼語…

Redis服務器的啟動過程分析

轉載于&#xff1a;http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/127.html?1455808771 本文將通過分析代碼來介紹Redis的啟動過程&#xff0c;通過查看Redis 的啟動腳本&#xff0c;得知Redis的啟動時從Redis.c的main方法開始的。Redis啟動可以分為以下幾個步驟…

MyEclipse運行時自動保存

今天第一次用MyEclipse&#xff0c;我發現我的代碼明明修改了&#xff0c;但運行結果發現總是修改前的代碼結果。后來發現&#xff0c;是代碼修改后必須保存&#xff0c;再點運行。這個功能明顯不合適&#xff0c;所以需要更改MyEclipse的配置。紅框是修改后的結果。 轉載于:ht…

PLSQL中INDEX BY TABLE 的 prior 和 next 操作學習

開始 --INDEX BY Table SET SERVEROUTPUT ON;DECLARETYPE enm_tab_type IS TABLE OFemp.ename%TYPEINDEX BY BINARY_INTEGER;enm_table enm_tab_type; BEGINenm_table(1):1001;enm_table(2):1002;enm_table(3):1003;enm_table(4):1004;enm_table(6):1006;dbms_output.put_line(…