Railroad Diagram(鐵路圖)是描述形式文法的一種方式。它是巴科斯範式或擴展巴科斯範式的圖形化表示。最早使用語法圖的書包括Niklaus Wirth寫的“Pascal User Manual”和the Burroughs CANDE manual。
基本介紹
- 中文名:鐵路圖
- 外文名:Railroad Diagram
基本介紹,準則,規則,例子,
基本介紹
在編譯領域,像BNF和它的變體這樣的文字式表示法都是首選的。BNF能很好的被編譯器作者和編譯器理解,但是不能很好的被這些語言的大部分用戶理解。鐵路圖能更容易被大多數人理解。數據交換格式JSON之所以流行的部分原因就是它用鐵路圖來表示。
準則
一個語法的表示法是由一套語法圖組成。每個圖定義了一個非終結符。有一個主圖通過下面方式定義了這門語言:屬於這門語言的每句話都必須在主圖上描繪一個路徑。
每個圖都有一個起始點和一個終點。這個圖通過穿過其他的非終結符和終結符描繪了這些兩點之間的可能路徑。終結符用圓形區域表示,同時非終結符用方形區域表示。
規則
- 1.從左邊界開始沿著軌道去到右邊界。
- 2.沿途,你將在圓框中遇到的是字面量,在方塊中遇到的是規則或者描述。
- 3.任何沿著軌道能走通的序列都是合法的。
- 4.任何不能沿著軌道走通的序列都是非法的。
- 5.每個末端只有一個豎條的鐵路圖允許在任何一對標記中間插入空白。而在末端有兩個豎條的鐵路圖是不允許的。
例子
我們用一個算術表達式作為一個例子。首先我們提供一段簡單的BNF語法:
Html代碼:
<expression>::= <term> | <term> "+" <expression><term>::= <factor> | <factor> "*" <term><factor>::= <constant> | <variable> | "(" <expression> ")"<variable>::= "x" | "y" | "z"<constant>::= <digit> | <digit> <constant><digit>::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
這段語法也能在EBNF中被表示:
Html代碼:
expression = term , {"+" term};term = factor , {"*" factor};factor = constant | variable | "(" , expression , ")";variable = "x" | "y" | "z";constant = digit , {digit};digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9";
關於這段語法的一組可能的語法圖: