Cトークナイザーを作成していますが、「+」、「-」、「*」、「/」、「!」、「!=」など、Cが認識するすべての記号の完全なリストが必要です。 、'=='、'++'など。私はキーワードを意味しないことに注意してください(私はすでにそれらのリストを見つけました)。私は周りを見回しましたが、包括的なリストは1つも見つかりませんでした。また、それらすべてを列挙することを自分自身に完全に信頼しているわけではありません。何か助けはありますか?ありがとう!
4 に答える
ANSI C 2011 のトークンの Lex スキャナー リストは、http ://www.qut.com/c/ANSI-C-grammar-l-2011.html にあります。
編集:
Jens が指摘したように: リストには digraph も trigraph トークンも表示されません。
「C in a Nutshell」の表
K&R(聖書、どちらの版(fe ANSI))をお持ちの場合は、本の最後に優先順位の付いた完全なリストがあります(私のドイツ語版では付録Aです)。
また、覗き見できるスキャナー/文法を備えたgnu-c-compilerソースもご覧ください。
ウィキペディアの記事には、次のリストが含まれています
句読点: ~ ! @ # % ^ & * ( ) - + = : ; " ' < > , . ? | / \ { } [ ]
ただし、決定的な信頼できるソースは C 標準である ISO IEC 9899 です。ISO 標準であるため、入手には費用がかかりますが、インターネット上で自由に入手できるドラフト バージョンがいくつかあります。
ドラフトは最終標準とほぼ同じですが、完全ではありません。一般に、比較する標準がなければ違いが正確にわからないため、ドラフトに対する信頼を制限し、少なくとも追加の情報源を探す必要があります。構文と同じくらい基本的なものでは問題ありませんが。
C 標準を取得する別の方法 (そしておそらく私の意見では最良の方法) は、The New C Standard: An Economic and Cultural Commentaryという本を入手することです。この本は無料で入手でき、(最終的な) 標準全体と多くの解説が含まれています。標準。
短いので、ここで完全なリストを提供させてください。C11標準から:
(6.4.6) 句読点: のいずれか
[ ] ( ) { } . ->
++ -- & * + - ~ !
/ % << >> < > <= >=
==
!=
^
|
&&
||
? : ; ...
= *= /= %= += -= <<=
>>=
&=
^=
|=
, # ##
<: :> <% %> %: %:%:
特に、他の回答が見逃した#
and##
トークンと、最後の有向グラフ トークンに注目してください。