0 标识符的EBNF定义是(a-zA-Z, _){a-zA-Z0-9, _ }。有人可以解释这个定义,并通过这个定义给我一个有效的标识符。EBNF标识符的定义 来源 2016-05-01 faisal abdulai +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 | "_" } ; 你的形式看起来像EBNF和regex的混合物。 如果我不知道我们在谈论哪种语言,很难说这意味着什么。 但是,通过纯粹的猜测,我会说它描述了类似于“myVar_0123ab”的类似C的标识符(例如变量名称)。 标识符必须以字母或下划线'_'开头,后跟字母,下划线和数字。 来源 2017-10-16 07:40:20 Traummaennlein
这只是表示它必须以字母或下划线开头,后跟任意数量的字母数字字符和下划线。 '_'是有效的,'_a_var'是有效的,'_____'也是有效的,'aVar_'也是有效的,'9_var'不是 – Alex
@Alex谢谢,得到了解释。这个字符串_4H_2也是有效的 –
严格说来,没有办法从给出的信息中知道。该规则使用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_'不是。 –