我正在写一个C tokenizer,我希望得到C识别的所有符号的完整列表,例如'+',' - ','*','/','!',' !=','==','++'等。请注意,我不是指关键字(我已经找到了这些关键字的列表)。我环顾四周,但没有找到一个完整的清单,我不太相信自己列举所有这些清单。有帮助吗?谢谢!
答案 0 :(得分:2)
可以在此处找到ANSI C 2011的Lex扫描仪令牌列表:http://www.quut.com/c/ANSI-C-grammar-l-2011.html
<强>编辑:强>
正如Jens所指出的那样:该列表既没有显示有向图也没有显示三角形标记:
中的表格
答案 1 :(得分:1)
如果您有K&amp; R(圣经,无论哪个版本(f.e.ANSI)),您在本书末尾都有一个优先顺序的完整列表(在我的德语版本中是附录A)。
您还可以查看gnu-c-compiler源代码,它具有您可以查看的扫描程序/语法。
答案 2 :(得分:1)
wikipedia article包含以下列表
标点符号:〜! @#%^&amp; *() - + = :; “'&lt;&gt;,。?| / \ {} []
尽管最终的权威来源是C标准,ISO IEC 9899.作为ISO标准,它需要花钱才能获得,尽管互联网上有一些免费提供的草稿版本。
草稿与最终标准几乎相同但不完全相同。一般来说,如果没有标准可供比较,你不确切地知道差异是什么,你应该限制你对草稿的信任,至少寻求其他信息来源。 虽然对于语法这样基本的东西应该没问题。
获得C标准的另一种方式(可能是我认为最好的)是获得免费提供的书籍The New C Standard: An Economic and Cultural Commentary并包含整个(最终)标准以及对标准的大量评论
答案 3 :(得分:0)
由于它很短,让我在这里提供完整的清单。从C11标准:
(6.4.6)标点符号:
之一
[ ] ( ) { } . ->
++ -- & * + - ~ !
/ % << >> < > <= >=
==
!=
^
|
&&
||
? : ; ...
= *= /= %= += -= <<=
>>=
&=
^=
|=
, # ##
<: :> <% %> %: %:%:
特别注意其他答案错过的#
和##
令牌,以及最后的有向图标记。