討論區快速選單
知識庫快速選單
程式設計俱樂部Facebook粉絲團 最紅的App開發語言:Kotlin 想要資料分析就學Python
[ 回上頁 ] [ 討論區發言規則 ]
有人可以解釋一下BNF嗎??
更改我的閱讀文章字型大小
作者 : janice80(janice) 貼文超過200則人氣指數超過30000點
[ 貼文 260 | 人氣 31404 | 評價 100 | 評價/貼文 0.38 | 送出評價 7 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/5/6 下午 01:06:33
請問什麼是BNF?? 還有它的符號??
我看書看不太懂耶~~能不能請先進給予指導~~ THK
作者 : sunny_gong(simula)討論區板主 C++頂尖高手貼文超過500則人氣指數超過30000點
[ 貼文 892 | 人氣 45047 | 評價 7220 | 評價/貼文 8.09 | 送出評價 108 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/5/7 上午 01:59:54

>請問什麼是BNF?? 還有它的符號??
>我看書看不太懂耶~~能不能請先進給予指導~~ THK
>
BNF的歷史如下:
1950年左右,第一種高階語言 Fortran 被開發出來。大約在同一時期,語言學家喬姆斯基﹝Noam Chomsky﹞發明了 context-free grammar (CFG),用來描述其自然語言理論中的深層結構。1960年,Fortran 的開發者 John Backus 被邀請參加 ALGOL 程式語言的開發,Backus 發現 CFG 的衍生語法很適合用來描述高階程式語言的 statements,在那篇著名的 ALGOL60 Report 中,他稍微修改了了 CFG 的衍生語法,用來描述 ALGOL60 的語言結構以及 statement 的衍生方式。該篇報告的負責編輯是 Peter Naur,所以 ALGOL60 的 CFG 衍生語法就被稱為 Backus-Naur Form﹝BNF﹞。CFG 所描述的是英文的階層結構與衍生方式,BNF 則是 CFG 的程式語言版本。CFG 的例子如下:
sentence -> NP VP (NP = noun phrase, VP = verb phrase)
NP -> article adjective noun | article noun
VP -> verb NP
noun -> house | boy | gurl
verb -> likes | hits
........
只要有英文文法基礎,就可以知道上面的公式是在說什麼了。
作者 : stelin(Stelin)
[ 貼文 16 | 人氣 191 | 評價 20 | 評價/貼文 1.25 | 送出評價 15 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人janice80註記此篇回應為最佳解答 2005/3/20 下午 09:22:15
(恕刪)
CFG 的例子如下:
>sentence -> NP VP (NP = noun phrase, VP = verb phrase)
>NP -> article adjective noun | article noun
>VP -> verb NP
>noun -> house | boy | gurl
>verb -> likes | hits
>........
>只要有英文文法基礎,就可以知道上面的公式是在說什麼了。
可能還要講解一下" | "這個符號的意義,
這個符號是"或者"的意思,
比如說:
noun -> house | boy | gurl
這句的意思就是noun這東西可以是house 或者 boy 或者 gurl


謝謝您幫我複習BNF~~ :-)
作者 : 113(113)
[ 貼文 22 | 人氣 4520 | 評價 30 | 評價/貼文 1.36 | 送出評價 6 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/4/16 上午 01:50:39
您好,我最近因專題需要,正在搞編譯器

EBNF為一種用來描述程式語言的標準型式,可以讓規格保持簡潔。如XML規格即是用「EBNF」來撰寫的。
以上來自xml 台灣資訊網

其實pascal,java,ada,pyton,C 這些都有bnf
另外還有一種叫做 EBNF,就我所知道C是沒有EBNF,因為C是蠻橫的語言^^
EBNF ,BNF 我也不太分的清楚...

google 可以找到很多她的規則

關於實作有Coco\r lex yacc bison 這些coco\r 採用LL(1),不支援C (花了我一個春假測它)
coco有一個好處,他用EBNF 做標準形式,架構可以通吃C#,java...etc

lex yacc 是gnu 拿來發展他們的編譯器,採用LALR,支援C 也有for java C#的版本


參考書籍有 lex & yacc 歐來裡的書, C程式語言 k & R 有BNF,林煙桂 系統程式

總而言之 BNF可以拿來搞編譯器 ,腳本編譯器,還可以開發一堆有規則描述的東西
以上有不對的請指教摟!!
 
     唸資管的學生敬上^^
作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4466 | 人氣 37262 | 評價 10860 | 評價/貼文 2.43 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/11/26 下午 10:17:49
the best way of developing a compiler is to refer to an implementation of compilers , such as gcc ; its site as following
http://gcc.gnu.org/ or more projects ,e.g. LLVM - http://llvm.org/
 板主 : simula , 小朱
 > 資訊工程與科學 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - 資訊工程與科學 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
資訊工程與科學
1 長長 240 
2 HKLN.net 240 
3 青衫 210 
4 速定 150 
5 simula 150 
6 aming 110 
7 arios 90 
8 80 
9 DEMO999 70 
10 ozzy 60 
資訊工程與科學
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
0.046875