Я пишу токенизатор C, и я хочу иметь полный список всех символов, которые распознаются C, такие как '+', '-', '*', '/ ','! ','! = ',' == ',' ++ 'и т. д. Обратите внимание, что я не имею в виду ключевые слова (я уже нашел их список). Я огляделся, но не нашел ни одного исчерпывающего списка, и я не верю себе, что перечисляю их все. Любая помощь? Благодаря!Полный список символов, распознанных C
ответ
Lex список сканер маркеров для ANSI C 2011 можно найти здесь: http://www.quut.com/c/ANSI-C-grammar-l-2011.html
Отредактировано:
Как отметил Jens: список делает ни показать орграф, ни триграф лексем:
Столы из "C in a Nutshell"
+1, но в этом списке отсутствуют токены '#', '##' и их эквиваленты орграфа. –
Если у вас есть K & R (библия, в зависимости от версии (f.e. ANSI)), у вас есть полный список с приоритетом в конце книги (в моем немецком издании это приложение A).
Вы также можете посмотреть источник gnu-c-компилятора, в котором есть сканер/грамматика, в которую вы можете заглянуть.
wikipedia article содержит следующий список
пунктуацию: ~! @ #%^& *() - + =:; " '<>, |.?/\ {} []
хотя окончательный авторитетный источник является стандартом C, ISO IEC 9899. Будучи стандартом ISO, это стоит денег, чтобы получить, хотя есть некоторые проекты версии, свободно доступные в Интернете.
Чертежи почти такие же, как и окончательный стандарт, но не совсем. Вообще, поскольку вы не знаете точно, в чем разница, не имея стандартного для сравнения, вы должны ограничить свое доверие проекты и, по крайней мере, ищут дополнительные источники информации. Хотя для чего-то такого же синтаксиса должно быть хорошо.
Альтернативный способ (и, вероятно, лучший, на мой взгляд) получения стандарта C - получить книгу The New C Standard: An Economic and Cultural Commentary, которая свободно доступна и содержит весь (окончательный) стандарт вместе с большим количеством комментариев по стандарту.
Поскольку это коротко, позвольте мне представить полный список здесь. От стандарта C11:
(6.4.6) punctuator: один из
[ ] () { } . ->
++ -- & * + - ~ !
/% << >> < > <= >=
==
!=
^
|
&&
||
? : ; ...
= *= /= %= += -= <<=
>>=
&=
^=
|=
, # ##
<: :> <% %> %: %:%:
, в частности, уведомления на #
и ##
лексемы, которые пропустили другие ответы, а орграфа лексемы в конце ,
Ум, что случилось, если посмотреть на стандарт C? (Вы должны выбрать, какой из них). –
Вы можете посмотреть в Приложении А в стандарте. – cnicutar
вы забыли скобки '(' и '{' и '[sowie the komma и точка с запятой.Тильда и амперсанд, может быть, даже # -значный –