【问题标题】:Interpretation of (opt) in C++standardC++标准中(opt)的解释
【发布时间】:2019-08-27 06:50:46
【问题描述】:

如何解释(opt)?它是应用于整个“复合”词还是仅应用于它所附加的词?

在下面的例子中,很明显它适用于整个“复合”词。但如果在所有情况下都是这样呢?我在哪里可以找到它的规则?

statement: labeled-statement attribute-specifier-seq(opt) expression-statement attribute-specifier-seq(opt) compound-statement attribute-specifier-seq(opt) selection-statement attribute-specifier-seq(opt) iteration-statement attribute-specifier-seq(opt) jump-statement declaration-statement attribute-specifier-seq(opt) try-block

【问题讨论】:

  • "选择ional"?
  • 属性说明符是可选的。在语句中并不常见,但是,例如,案例语句中的 [[fallthrough]] 或 if 语句中的 [[likely]]。
  • 一个字。
  • attribute-specifier-seq 是语法特定元素的名称

标签: c++ syntax language-lawyer grammar


【解决方案1】:

它适用于整个单词。例如,

foo-baroptbaz

等价于

baz
foo-bar baz

而不是

foo baz
foo-bar baz

[syntax]/1:

在本文档中使用的语法符号中,语法类别是 由 italic 类型表示,字面的单词和字符在 constant width 类型。替代品列在单独的行上 除非在少数情况下,一长串备选方案被标记为 短语“一个”。如果替代文本太长而无法容纳 在一行上,文本从缩进的后续行继续 第一。 可选的终结符或非终结符由 下标“opt”,所以

{ 表达式opt}

表示用大括号括起来的可选表达式。

整个复合词是非终结符。 seq 之类的东西不是终结符或非终结符。

【讨论】:

  • @L.F.I 在“而不是”之后做了一个小修正(bar baz-->foo baz)。请检查是否正确。
猜你喜欢
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-21
  • 2014-07-20
相关资源
最近更新 更多