2016-05-01 34 views
0

標識符的EBNF定義是(a-zA-Z, _){a-zA-Z0-9, _ }。有人可以解釋這個定義,並通過這個定義給我一個有效的標識符。EBNF標識符的定義

+2

這只是表示它必須以字母或下劃線開頭,後跟任意數量的字母數字字符和下劃線。 '_'是有效的,'_a_var'是有效的,'_____'也是有效的,'aVar_'也是有效的,'9_var'不是 – Alex

+0

@Alex謝謝,得到了解釋。這個字符串_4H_2也是有效的 –

+1

嚴格說來,沒有辦法從給出的信息中知道。該規則使用3個未定義的非終端('a-zA-Z','_','a-zA-Z0-9')(參見ISO 14977 - 標準[EBNF](https://en.wikipedia。組織/維基/ Extended_Backus%E2%80%93Naur_Form))。此外,逗號表示排序,括號分組和括號可重複的材料。假設非終端以正則表達式擴展爲'[a-zA-Z]'和'[a-zA-Z0-9]',則標識符以字母和下劃線開頭,並以交替的字母數字和下劃線。因此'a_'和'a_A_'是有效的; 'a'和'_2_'不是。 –

回答

0

類似語言EBNF的語法差別很大。 通常我會定義是這樣的:

letter = "a" | "b" | ... | "z" | "A" | ... | "Z"; 
digit = "0" | "1" | "2" | ... | "9"; 
identifier = letter , { letter | digit | "_" } ; 

你的形式看起來像EBNFregex的混合物。 如果我不知道我們在談論哪種語言,很難說這意味着什麼。

但是,通過純粹的猜測,我會說它描述了類似於「myVar_0123ab」的類似C的標識符(例如變量名稱)。 標識符必須以字母或下劃線'_'開頭,後跟字母,下劃線和數字。