我正在编写一个 C 分词器,我想要一个 C 识别的所有符号的完整列表,例如'+'、'-'、'*'、'/'、'!'、'!=' , '==', '++' 等。请注意,我不是指关键字(我已经找到了这些关键字的列表)。我环顾四周,但没有找到一个完整的列表,而且我不太相信自己会列举所有这些。有什么帮助吗?谢谢!
4 回答
可在此处找到 ANSI C 2011 令牌的 Lex 扫描仪列表:http ://www.quut.com/c/ANSI-C-grammar-l-2011.html
编辑:
正如 Jens 所指出的:该列表既不显示二合字母也不显示三合字母标记:
“ C in a Nutshell ”中的表格
如果你有 K&R(圣经,无论哪个版本(fe ANSI)),你有一个完整的列表,在书的末尾有优先级(在我的德文版中是附录 A)。
您还可以查看 gnu-c-compiler 源代码,其中包含您可以查看的扫描仪/语法。
维基百科文章包含以下列表
标点:~!@ # % ^ & * ( ) - + = : ; " ' < > , . ? | / \ { } [ ]
尽管最终的权威来源是 C 标准 ISO IEC 9899。作为 ISO 标准,获得它需要花钱,尽管互联网上有一些免费的草稿版本。
草案与最终标准几乎相同,但不完全一致。通常,由于没有可比较的标准,您无法确切知道差异是什么,因此您应该限制对草稿的信任,并至少寻求其他信息来源。虽然对于像语法这样基本的东西应该没问题。
获得 C 标准的另一种方法(在我看来可能是最好的)是获得《新 C 标准:经济和文化评论》一书,该书可免费获得,包含整个(最终)标准以及大量关于标准。
由于它很短,让我在这里提供一个完整的列表。来自 C11 标准:
(6.4.6) 标点符号:其中之一
[ ] ( ) { } . ->
++ -- & * + - ~ !
/ % << >> < > <= >=
==
!=
^
|
&&
||
? : ; ...
= *= /= %= += -= <<=
>>=
&=
^=
|=
, # ##
<: :> <% %> %: %:%:
特别注意其他答案错过的#
和##
标记,以及最后的有向图标记。