Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
_Распределение тем на курсовую работу.doc
Скачиваний:
24
Добавлен:
20.11.2019
Размер:
141 Кб
Скачать
☆

3. Грамматика языка милан

Начальным символом грамматики естественно выбран нетерминал <программа>. Каждая программа на языке МИЛАН начинается со слова BEGIN и заканчивается словом END. Между этими словами расположены операторы, разделенные символом «;». Типов операторов в МИЛАНе четыре: вывод, присваивание, развилка, цикл. Будем считать, что в качестве условия в МИЛАНе можно использовать пару выражений, разделенных знаками отношения. Терминалы грамматики языка МИЛАН приведены в таблице.

Терминалы грамматики языка милан

Терминалы

Обозначения

ключевые слова

BEGIN, END, IF, THEN, ENDIF, ELSE, WHILE, DO, ENDDO,OUTPUT, READ;

знаки операций и отношений

+, -, *, /, =, >, <, >=, <=, <>;

латинские буквы в нижнем регистре

a, b, ..., z;

цифры

0, 1, ..., 9;

знак присваивания

:= ;

разделитель операторов

; .

Правила грамматики в нормальной форме Бекуса-Наура:

W= <программа> ::= BEGIN <последовательность операторов> END

L= <последовательность операторов> ::= <оператор>|

<оператор>;<последовательность операторов>

S= <оператор> ::= <идентификатор>:=<выражение> |

OUTPUT(<выражение>) |

WHILE <условие> DO <последовательность операторов> ENDDO |

IF <условие> THEN <последовательность операторов> ENDIF |

IF <условие> THEN <последовательность операторов>

ELSE <последовательность операторов> ENDIF

B = <условие> ::= <выражение> <знак отношения> <выражение>

E= <выражение> ::= <терм> | <операция типа сложения> <терм> |

<терм> <операция типа сложения> <терм> |

<операция типа сложения> <терм> <операция типа сложения><терм>

T=<терм> ::= <множитель> | <множитель> <операция типа умножения> <множитель>

P=<множитель> ::= <идентификатор> | <константа> | READ | (<выражение>)

I=<идентификатор> ::= <буква> | <идентификатор> <буква> |

<идентификатор> <цифра>

K=<константа> ::= <цифра> | <константа> <цифра>

O=<знак отношения> ::= > | < | >= | <= | = |<>

M=<операция типа умножения> ::= * | /

N=<операция типа сложения> ::= + | -

A= <буква> ::= a | b | ...| z

C= <цифра> ::= 0 | 1 | ...| 9

4. Варианты заданий

Грамматика языка МИЛАН должна быть расширена оператором-переключателем, оператором цикла, комментариями и дополнительными операциями (инкремент, декремент).

Рассмотрим варианты реализации конструкции <оператор-переключатель>:

1) <оператор-переключатель>::= SWITCH (<выражение>) {

CASE <константа> : <последовательность операторов>

{ CASE <константа> : <последовательность операторов> }

[ DEFAUT : <последовательность операторов> ] }

2) <оператор-переключатель>::= DO CASE

CASE <условие> <последовательность операторов>

{ CASE <условие> <последовательность операторов> }

[ OTHERWISE <последовательность операторов> ]

ENDCASE

3) <оператор-переключатель>::= CASE <идентификатор> OF

<константа> {, <константа>} :

<последовательность операторов>

{ <константа> {, <константа>} :

<последовательность операторов> }

[ ELSE <последовательность операторов> ]

ENDCASE

Рассмотрим варианты реализации дополнительных операторов цикла:

1) <цикл-FОR>::= FOR <идентификатор> := <выражение> TO <выражение> [STEP <выражение>]

<последовательность операторов>

ENDFOR

2) <цикл-REPEAT>::= REPEAT <последовательность операторов> UNTIL <условие>

Рассмотрим варианты реализации комментариев:

1) Комментарий в фигурных скобках.

Пример: { раздел описания переменных }

2) Комментарий в круглых скобках со звездочкой.

Пример: (* раздел описания переменных *)

3) Комментарий за двойной косой чертой до конца строки.

Пример: // раздел описания переменных

4) Комментарий внутри косых черт со звездочкой.

Пример: /* раздел описания переменных */

Рассмотрим варианты реализации дополнительных операций:

1) ++ : инкремент (увеличение значения переменной на 1)

2) -- : декремент (уменьшение значения переменной на 1)

Условия модификации грамматики языка МИЛАН (по вариантам) приведены в таблице.

Таблица