2013-03-07 29 views
0

我查看了EBNF here的ISO規範pdf(除了在ISO網站上看起來花錢的官方網站外,我找不到官方網站),並且我不太瞭解空白。EBNF在元標識符中的空白

有誰知道官方標準是否允許在元標識符空間?根據標準文檔中的元標識符(8.1節),我會說不,但是如果您在同一個標​​準文檔中查看同一個示例,它似乎在說是。

在在8.1該文件頂部的評論,這似乎是說,它正在使用自己定義EBNF。我感到困惑,這是行像這樣:

meta identifier = letter, {letter | decimal digit} 
(* A <meta identifier> is the name of a 
syntactic element of the language being 
defined *); 

元標識應在自身,即元標識符,但據我所看到的,它不適合元標識符(信然任何數字或字母的數量)。

有誰知道發生了什麼事?

回答

1

實際上,正式的ISO規格EBNF(ISO/IEC 14977:1996)可以自由地從ISO網站here下載。 這實際上元標識符定義如下:

meta identifier = letter, {meta identifier character}; 

meta identifier character = letter | decimal digit; 

它指的是4.14和4.15在該定義中。在那裏它清楚地表明一個元標識符字符僅由字母和十進制數字組成。

這確實是奇怪的是,他們使用指定的EBNF EBNF確實允許在標識符空間。我始終認爲EBNF允許在標識符中使用空格。這也是維基百科說什麼(雖然語法有不完整的在其他方面):

identifier = letter , { letter | digit | " " } ; 

因此,也許他們在標準都忽略了這一點?或者我們都錯過了一些東西。無論如何,我希望你現在可以弄清楚你有官方標準。

+0

對,我想我是在一個看起來像官方網站的網站,但實際上有所不同。但是,無論如何,這是令人困惑的,所以感謝澄清:) – matts1 2013-03-11 07:49:21

0

標準的第6條規定你的答案:

從6.1:

6.2至6.4定義一個非打印字符,如空格或新行對語法沒有正式生效如果該字符在終端字符串或構成單個終端字符的字符對之外。

因此,本質上,白色空間被忽略。

8.1節將語法分解爲4部分。

語法的第三部分限定從無間隙符號去除括號-文本 - 符號:元標識符在所述第三部分,其帶有前綴下面的評論(我的粗體編輯)中所定義形成語法的

方式8.1作品是該部分的部分的1定義終端的字符和間隙,其被饋送到部分2,然後除去其中饋入部3其除去,其饋入部4的評論間隙分隔它建立你的語法。