【问题标题】:Full list of symbols recognized by C [closed]C识别的符号的完整列表[关闭]
【发布时间】:2013-03-04 07:42:33
【问题描述】:

我正在编写一个 C 分词器,我想要一个 C 识别的所有符号的完整列表,例如'+'、'-'、'*'、'/'、'!'、' !='、'=='、'++' 等。请注意,我不是指关键字(我已经找到了这些关键字的列表)。我环顾四周,但没有找到一个完整的列表,而且我不太相信自己会列举所有这些。有什么帮助吗?谢谢!

【问题讨论】:

  • 嗯,看C标准有什么问题? (你必须选择哪一个)。
  • 标准的附件A可以看。
  • 你忘记了大括号 '(' 和 '{' 和 '[' 是逗号和分号。波浪号和 & 符号,甚至可能是 #-sign
  • @PeterMiehle "sowie the komma"?
  • 更新。对不起。 “也是逗号”。

标签: c symbols


【解决方案1】:

可在此处找到 ANSI C 2011 的 Lex 扫描器令牌列表:http://www.quut.com/c/ANSI-C-grammar-l-2011.html

已编辑:

正如 Jens 所指出的:该列表既不显示二合字母也不显示三合字母标记:

来自“C in a Nutshell”的表格

【讨论】:

  • +1,但该列表缺少标记 ### 及其对应的二合字母。
【解决方案2】:

wikipedia article 包含以下列表

标点符号:~! @ # % ^ & * ( ) - + = : ; " ' , . ? | / \ { } [ ]

虽然最终的权威来源是 C 标准 ISO IEC 9899。作为 ISO 标准,获得它需要花钱,尽管互联网上有一些免费的草稿版本。

草案与最终标准几乎相同,但不完全一致。通常,由于没有可比较的标准,您无法确切知道差异是什么,因此您应该限制对草稿的信任,并至少寻求其他信息来源。 虽然对于像语法这样基本的东西应该没问题。

获取 C 标准的另一种方法(在我看来可能是最好的方法)是获取免费提供的书The New C Standard: An Economic and Cultural Commentary,其中包含整个(最终)标准以及对该标准的大量评论。

【讨论】:

    【解决方案3】:

    如果你有 K&R(圣经,无论哪个版本(f.e. ANSI)),你有一个完整的列表,在书的末尾有优先级(在我的德文版中,它是附录 A)。

    您还可以查看 gnu-c-compiler 源代码,其中包含可以查看的扫描器/语法。

    【讨论】:

      【解决方案4】:

      由于它很短,让我在这里提供一个完整的列表。来自 C11 标准:

      (6.4.6) 标点符号:之一

      [ ] ( ) { } . ->
      ++ -- & * + - ~ !
      / % << >> < > <= >=
       ==
       !=
       ^
       |
       &&
       ||
      ? : ; ...
      = *= /= %= += -= <<=
       >>=
       &=
       ^=
       |=
      , # ##
      <: :> <% %> %: %:%:
      

      特别注意其他答案遗漏的 ### 标记,以及末尾的二合字母标记。

      【讨论】:

        最近更新 更多