- •Отчет по курсовой работе
- •Языки программирования и методы трансляции
- •1. Описание входного языка.
- •1.2. Формализм для описания синтаксиса.
- •1.3. Лексика языка.
- •1.3.1. Терминальные символы языка.
- •1.3.2. Лексемы и соглашения о разделителях.
- •1.3.4. Идентификаторы.
- •1.3.5. Константы.
- •1.3.6. Ключевые слова.
- •Int float bool void main goto length for if else scanf printf vector const true false
- •1.3.7. Строки.
- •1.4. Описания и типы.
- •1.4.2. Выражения.
- •1.4.3. Описания.
- •1.4.4 Правила преобразования типов.
- •1.5. Операторы.
- •4. Описание этапа синтаксического анализа
1.3.5. Константы.
Константы подразделяются на целые, вещественные, перечислимые (в данном случае булевские). Значение константы определяется единожды и не может изменяться.
<константа>::=<десятичная константа>|<вещественная константа>|<булевская константа>
<вещественная константа>::=<дробная константа>[<экспоненциальная часть>][<суффикс вещественной константы>]
<дробная константа>::= <последовательность цифр>.[<последовательность цифр>]
<экспоненциальная часть>::=’e’[<знак>]<последовательность цифр>|’E’[<знак>]<последовательность цифр>
<знак>::='+'|'-'
<последовательность цифр>::=<цифра>{<цифра>}
<десятичная константа>::=[<знак>]<последовательность цифр>
<булевская константа>::=’true’|’false’
1.3.6. Ключевые слова.
Следующие ключевые слова считаются зарезервированными и не могут использоваться в качестве идентификаторов:
Int float bool void main goto length for if else scanf printf vector const true false
Ключевые слова воспринимаются как единые символы с фиксированным смыслом, который задан в определении языка.
1.3.7. Строки.
Строками считаются последовательность любых символов, заключенных в
"кавычки".
1.4. Описания и типы.
Целочисленный знаковый тип int : размер 2 байта, диапазон -32768..32767.
Вещественный тип float : размер 4 байта, диапазон +-3.4*10**(+-38)
Булевый тип (логический) bool : размер 1 байт , диапазон True-False (1-0)
Тип вектора vector с вещественными компонентами: максимальное число компонент 16383.
Операции:
Оператор |
тип оператора |
допустимые типы параметров |
+ |
унарный |
int, float, vector |
- |
унарный |
int, float, vector |
+ |
бинарный |
int, float, vector |
- |
бинарный |
int, float, vector |
* |
бинарный |
int, float, vector |
/ |
бинарный |
int, float |
[ ] |
унарный |
Vector |
Length |
унарный |
Vector |
&& |
бинарный |
Int, bool |
|| |
бинарный |
Int, bool |
==, !=, <, >, <=, >= |
бинарные |
int, float, bool |
! |
унарный |
Int,bool |
1.4.2. Выражения.
Арифметические выражения.
<арифметическое_выражение>::=[<знак>]<терм>|<арифметическое_выражение><знак>
<терм>
<терм>::=<множитель>|<терм>’*’<множитель>|<терм>’/’<множитель>
<множитель>::='('<аpифметическое_выpажение>')'|<идентификатор>|<константа>|
<оператор_длина_вектора>|<оператор_элемента_вектора>|’++’<идентификатоp>| ‘--‘<идентификатоp>|<идентификатоp>‘++’|<идентификатоp>‘--’
<знак>::='+'|'-'
<оператор_длина_вектора>::='length('< идентификатор>')'
<оператор_элемента_вектора>::=<идентификатор>'['<последовательность цифр>']'
++,-- операции инкрементации и декрементации
Логические выражения.
<логическое_выражение>::=<логич_терм>{’||’<логич_терм>}
<логич_терм>::=<логич_терм>’&&’<логич_множитель>|<логич_множитель>
<логич_множитель>::=<идентификатор>|<арифметическое_выражение><отношение>
<арифметическое_выражение>|<арифметическое_выражение>|
’!’<логич_множитель>|’(‘<логическое_выpажение>’)’
<отношение>::='=='|'<'|'>'|'<='|'>=’
1.4.3. Описания.
Любое описание сопоставляет с описываемым понятием некоторый идентификатор - имя переменной.