Мы надеемся, что эта краткая сводка синтаксиса C++ поможет пониманию. Она не является точным изложением языка.
Выражения
выражение: терм выражение бинарная_операция выражение выражение ? выражение : выражение список_выражений терм: первичный * терм & терм - терм ! терм ~ терм ++терм --терм терм++ терм-- ( имя_типа) выражение имя_простого_типа ( список_выражений) sizeof выражение sizeof ( имя_типа ) new имя_типа new ( имя_типа ) первичный: id :: идентификатор константа строка this ( выражение ) первичный[ выражение ] первичный ( список_выражений opt ) первичный.id первичный->id id: идентификатор typedef-имя :: идентификатор список_выражений: выражение список_выражений, выражение операция: унарная_операция бинарная_операция специальная_операция
Бинарные операции имеют приоритет, убывающий в указанном порядке:
бинарная_операция: * / % + - << >> < > == != & ^ | && || = += -= *= /= %= ^= &= |= >>= <<= унарная_операция: * & - ~ ! ++ -- специальная_операция: () [] имя_типа: спецификаторы_описания абстрактный_описатель абстрактный_описатель: пустой * абстрактный_описатель абстрактный_описатель ( список_описаний_параметров ) абстрактный_описатель [ константное_выражение opt ] ( абстрактный_описатель ) простое_имя_типа: typedef-имя char short int long unsigned float double typedef-имя: идентификатор
Описания
описание: спецификаторы_описания opt список_описателей opt ; описание_имени asm-описание описание_имени: агрег идентификатор ; enum идентификатор ; агрег: class struct union asm-описание: asm ( строка ); спецификаторы_описания: спецификатор_описания спецификатор_описания opt спецификатор_описания: имя_простого_типа спецификатор_класса enum_спецификатор sc_спецификатор фнк_спецификатор typedef friend const void sc_спецификатор: auto extern register static фнк-спецификатор: inline overload virtual список_описателей: иниц-описатель иниц-описатель , список_описателей иниц-описатель: описатель инициализатор opt описатель: оп_имя ( описатель ) * const opt описатель & const opt описатель описатель ( список_описаний_параметров ) описатель [ константное_выражение opt ] оп_имя: простое_оп_имя typedef-имя . простое_оп_имя простое_оп_имя: идентификатор typedef-имя - typedef-имя имя_функции_операции имя_функции_операции: операция операция список_описаний_параметров: список_описаний_прм opt ... opt список_описаний_прм : список_описаний_прм , описание_параметра описание_параметра описание_параметра: спецификаторы_описания описатель спецификаторы_описания описатель = константное_выражение спецификатор_класса: заголовок_класса {список_членов opt } заголовок_класса {список_членов opt public : список_членов opt } заголовок_класса : агрег идентификатор opt агрег идентификатор opt : public opt typedef-имя список_членов : описание_члена список_членов opt описание_члена: спецификаторы_описания opt описатель_члена ; описатель_члена: описатель идентификатор opt : константное_выражение инициализатор: = выражение = { список_инициализаторов} = { список_инициализаторов, } (список_выражений ) список_инициализаторов : выражение список_инициализаторов , список_инициализаторов { список_инициализаторов } enum-спецификатор: enum идентификатор opt { enum-список } enum-список: перечислитель enum-список , перечислитель перечислитель: идентификатор идентификатор = константное_выражение
Операторы
составной_оператор: { список_описаний opt список_операторов opt } список_описаний: описание описание список_описаний список_операторов: оператор оператор список_операторов оператор: выражение ; if ( выражение ) оператор if ( выражение ) оператор else оператор while ( выражение ) оператор do оператор while ( выражение ) ; for ( выражение opt ; выражение opt ; выражение opt ) оператор switch ( выражение ) оператор case константное выражение : оператор default : оператор break; continue; return выражение opt ; goto идентификатор ; идентификатор : оператор delete выражение ; asm ( строка ) ; ;
Внешние определения
программа: внешнее_определение внешнее_определение программа внешнее_определение: определение_функции описание определение_функции: спецификаторы_описания opt описатель_функции инициализатор_базового_класса opt тело_функции описатель_функции: описатель ( список_описаний_параметров) тело_функции: составной_оператор инициализатор_базового_класса: : ( список_параметров opt )
Препроцессор
#define идент строка_символов #define идент( идент,...,идент ) строка символов #else #endif #if выражение #ifdef идент #ifndef идент #include "имя_файла" #include <имя_файла> #line константа "имя_файла" #undef идент
8 8 8
|