2013-03-04 1 views
-1

Я пишу токенизатор C, и я хочу иметь полный список всех символов, которые распознаются C, такие как '+', '-', '*', '/ ','! ','! = ',' == ',' ++ 'и т. д. Обратите внимание, что я не имею в виду ключевые слова (я уже нашел их список). Я огляделся, но не нашел ни одного исчерпывающего списка, и я не верю себе, что перечисляю их все. Любая помощь? Благодаря!Полный список символов, распознанных C

+5

Ум, что случилось, если посмотреть на стандарт C? (Вы должны выбрать, какой из них). –

+3

Вы можете посмотреть в Приложении А в стандарте. – cnicutar

+1

вы забыли скобки '(' и '{' и '[sowie the komma и точка с запятой.Тильда и амперсанд, может быть, даже # -значный –

ответ

2

Lex список сканер маркеров для ANSI C 2011 можно найти здесь: http://www.quut.com/c/ANSI-C-grammar-l-2011.html

Отредактировано:

Как отметил Jens: список делает ни показать орграф, ни триграф лексем:

enter image description here enter image description here

Столы из "C in a Nutshell"

+0

+1, но в этом списке отсутствуют токены '#', '##' и их эквиваленты орграфа. –

1

Если у вас есть K & R (библия, в зависимости от версии (f.e. ANSI)), у вас есть полный список с приоритетом в конце книги (в моем немецком издании это приложение A).

Вы также можете посмотреть источник gnu-c-компилятора, в котором есть сканер/грамматика, в которую вы можете заглянуть.

1

wikipedia article содержит следующий список

пунктуацию: ~! @ #%^& *() - + =:; " '<>, |.?/\ {} []

хотя окончательный авторитетный источник является стандартом C, ISO IEC 9899. Будучи стандартом ISO, это стоит денег, чтобы получить, хотя есть некоторые проекты версии, свободно доступные в Интернете.

Чертежи почти такие же, как и окончательный стандарт, но не совсем. Вообще, поскольку вы не знаете точно, в чем разница, не имея стандартного для сравнения, вы должны ограничить свое доверие проекты и, по крайней мере, ищут дополнительные источники информации. Хотя для чего-то такого же синтаксиса должно быть хорошо.

Альтернативный способ (и, вероятно, лучший, на мой взгляд) получения стандарта C - получить книгу The New C Standard: An Economic and Cultural Commentary, которая свободно доступна и содержит весь (окончательный) стандарт вместе с большим количеством комментариев по стандарту.

0

Поскольку это коротко, позвольте мне представить полный список здесь. От стандарта C11:

(6.4.6) punctuator: один из

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

, в частности, уведомления на # и ## лексемы, которые пропустили другие ответы, а орграфа лексемы в конце ,