Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа по ТЯП. / готовый курсовик.doc
Скачиваний:
36
Добавлен:
01.05.2014
Размер:
1.2 Mб
Скачать

2.2.2.Операции входного языка и их приоритет

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

2.2.3.Конструкции входного языка

Оператор цикла с параметром for.

< оператор цикла с параметром>::=

for(<оператор присваивания>;<логическое выражение>;<оператор присваивания>)

<составной оператор>

  1. Параметр цикла инициализируется первым оператором присваивания.

  2. Вычисляется логическое выражение для текущего значения параметра цикла.

Если получившееся логическое выражение ИСТИНА:

  1. Выполняется тело цикла.

  2. Выполняется оператор присваивания над текущим значением параметра цикла.

  3. Переход к пункту 1.

Если получившееся логическое выражение ЛОЖЬ:

6. Выход из цикла.

Значение параметра цикла при корректном завершении цикла определяется логическим выражением из описания цикла.

Оператор присваивания

<оператор присваивания >::=< переменная ><отношение присваивания>< выражение >

< отношение присваивания>::= = | += | -= | *= | /=

1.Вычисляется арифметическое выражение в правой части и, в случае соответствия типов, запоминается в переменной(для =), указанной в левой части. Если отношение операции отлично от =, то переменная в левой части модифицируется (согласно виду отношения присваивания) с учетом вычисленного арифметического выражения и сохраняется в переменной левой части.

Каждая переменная, используемая в программе, должна быть предварительно описана.

В одном блоке не может объявляться две переменных с одним именем.

Имя переменной не может совпадать с зарезервированными языком словами.

Оператор безусловного перехода goto.

<оператор безусловного перехода>::=goto <метка>

Выполняется переход на метку.

Метка должна встречаться в теле программы один раз.

Условный оператор if-else

< условный оператор >::= if (<логическое выражение>) <составной оператор1>

[else <составной оператор2> ]

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

Если результат FALSE, то происходит переход на составной оператор2, в противном случае выполняется составной оператор1 и происходит переход в конец оператора if -else.

Условный оператор присваивания

< условный оператор присваивания>::=

(<логическое выражение>)?< выражение1>:< выражение2 >

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

Если результат TRUE, то происходит присваивание значения выражения1, в противном случае выполняется присваивание значения выражения2 и происходит переход в конец оператора условного присваивания.

3 Описание этапа лексического анализа

На входе лексического анализатора находится последовательность ASCII символов представляющая программу на входном языке. Задача ЛА состоит в разделении этой последовательности на слова языка (лексемы).

  • чтение исходной программы и выделение из нее лексем;

  • построение таблиц идентификаторов и констант;

  • преобразование входной программы (поток символов) в поток токенов, в котором каждый токен представляет лексему.