2016-05-01 35 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的标识符(例如变量名称)。 标识符必须以字母或下划线'_'开头,后跟字母,下划线和数字。