На
<константа> → <константа целая> | <константа вещественная>
<константа целая> → <константа целая> <цифра> | <цифра>
<константа вещественная> → <константа целая>.<константа целая>
| .<константа целая>
<экспоненциальная форма> → [<знак>] <константа вещественная> E <знак> <константа целая>
<программа> → <программа><описание> | ε
<описание> → <класс> | <данные> | <функция>
<класс> → class <идентификатор> {тело класса};
<тело класса> → <тело класса><данные> | <тело класса><функция> | ε
<данные> → <тип><список>;
<тип> → int | short int | long int | double | <идентификатор>
<список> → <список>, <переменная> | <переменная> | ε
<присваивание> → <идентификатор>=<выражение>
| <поле класса>=<выражение>
<switch> → switch(<выражение>){<кейсы>}
| switch(<выражение>){<кейсы> <default>}
<кейсы> → <кейсы> <кейс> | ε
<кейс> → case <константа>: <выражение кейса>
<default> → default:<выражение кейса>
<выражение кейса> → <выражение кейса> <оператор>
| <выражение кейса> <break> | ε
Программа: главная программа языка C++. Допускается описание классов. Методы классов не имеют параметров, но возвращают значение.
Типы данных: int (short и long), double.
Операции: все арифметические, сравнения и логические.
Операторы: пустой, составной, присваивания и switch.
Операнды: простые переменные, данные классов и константы.
Константы: целые и вещественные в экспоненциальной форме.
Фрагменты кс-грамматики:
<константа> → <константа целая> | <константа вещественная>
<константа целая> → <константа целая> <цифра> | <цифра>
<константа вещественная> → <константа целая>.<константа целая>
| .<константа целая>
<экспоненциальная форма> →
<константа вещественная> E <знак> <константа целая>
<программа> → <программа><описание> |
<описание> → <класс> | <данные> | <функция>
<класс> → class <идентификатор> {тело класса};
<тело класса> → <тело класса><данные> | <тело класса><функция> |
<данные> → <тип><список>;
<тип> → int | short int | long int | double | <индентификатор>
<список> → <список>, <переменная> | <переменная>
<присваивание> → <идентификатор>=<выражение>
| <поле класса>=<выражение>
<switch> → switch(<выражение>){<кейсы>}
| switch(<выражение>){<кейсы> <default>}
<кейсы> → <кейсы> <кейс> |
<кейс> → case <константа>: <выражение кейса>
<default> → defaut:<выражение кейса>
<выражение кейса> → <выражение кейса> <оператор>
| <выражение кейса> <break> | ε