【问题标题】:EBNF Definition of Identifier标识符的EBNF定义
【发布时间】:2016-05-01 00:33:16
【问题描述】:

标识符的 EBNF 定义是(a-zA-Z, _ ){a-zA-Z0-9, _ }。有人可以解释这个定义并通过这个定义给我一个有效的标识符。

【问题讨论】:

  • 这只是意味着它必须以字母或下划线开头,后跟任意数量的字母数字字符和下划线。 _ 有效,_a_var 有效,_____ 也有效,aVar_ 也有效,9_var 无效
  • @Alex 谢谢,得到了解释。这个字符串_4H_2也是有效的
  • 严格来说,从给出的信息中无法判断。该规则使用 3 个未定义的非终结符(a-zA-Z_a-zA-Z0-9)(参见 ISO 14977 — 标准 EBNF)。此外,逗号表示排序、括号分组和大括号可重复材料。假设非终结符以正则表达式扩展为[a-zA-Z][a-zA-Z0-9],则标识符以字母和下划线开头,并以交替的字母数字和下划线继续。因此a_a_A_ 是有效的; a_2_ 不是。

标签: bnf ebnf


【解决方案1】:

EBNF 类似语言的语法差异很大。 通常我会这样定义:

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

您的表单看起来像是EBNFregex 的混合体。 如果我不知道我们在谈论哪种语言,就很难说出这意味着什么。

但通过纯粹的猜测,我会说它描述了一个类似 C 的标识符(例如变量名),如“myVar_0123ab”。 标识符必须以字母或下划线“_”开头,后跟字母、下划线和数字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 1970-01-01
    相关资源
    最近更新 更多