|
Программируем по-русски
|
Основная задача Глагола — дать человеку возможность воплощать свои мысли на языке, близком к его родному языку. Издатель Глагола
|
(******************************************************************************) (**) ОТДЕЛ Слова; (******************************************************************************) (* НАЗНАЧЕНИЕ: основные задачи для ОберГла.отд *) (******************************************************************************) ИСПОЛЬЗУЕТ Читать ИЗ "...\Отделы\Обмен\", Писать ИЗ "...\Отделы\Обмен\", Знак ИЗ "...\Отделы\Иное\", Буква ИЗ "...\Отделы\Иное\", Цепь ИЗ "...\Отделы\Иное\", Ряд ИЗ "...\Отделы\Иное\"; ПОСТ ЗапасСлов=100; (* запас ключевых слов *) ДлСлова=32; (* наибольшая длина слова *) ВИД (* Слово Глагола и соответствующее ему слово языка Оберон *) ВСлово=НАБОР(Ряд.Вид) г,о:ЦЕПЬ[ДлСлова] КОН; ДСлово=ДОСТУП К ВСлово; ПЕР слова:РЯД ЗапасСлов ИЗ Ряд.Доступ; (* ключевые слова *) слов:ЦЕЛ; (* число ключевых слов *) (******************************************************************************) ЗАДАЧА Сравнить(с1-,с2-:Ряд.Вид):ЦЕЛ; УКАЗ ВОЗВРАТ Цепь.Сравнить(с1(ВСлово).о,с2(ВСлово).о) КОН Сравнить; (******************************************************************************) ЗАДАЧА Перевод-(ч:Читать.Поток; п:Писать.Поток); ПЕР з:ЗНАК; (* следующий знак *) слово:ВСлово; (* пробное слово *) нашли:Ряд.Доступ; ЗАДАЧА Пропуск; (* Пропуск знака без обработки *) УКАЗ Писать.ЗнакЦепи(п,з); з:=Читать.ЗнакЦепи(ч) КОН Пропуск; ЗАДАЧА ЧитатьСлово(ц+:ЦЕПЬ); (* Чтение слова в цепочку знаков *) ПЕР п:ЦЕЛ; (* позиция для чтения в цепочку *) УКАЗ п:=0; ПОВТОРЯТЬ ЕСЛИ п < ДлСлова-1 ТО ц[п]:=з; УВЕЛИЧИТЬ(п) КОН; з:=Читать.ЗнакЦепи(ч) ДО НЕ Знак.ВСлове(з); ц[п]:=0X КОН ЧитатьСлово; УКАЗ з:=Читать.ЗнакЦепи(ч); ПОКА НЕ Читать.Конец(ч) ВЫП ПОКА (НЕ Читать.Конец(ч)) И (з <= " ") ВЫП Пропуск КОН; ЕСЛИ Буква.Известная(з) ИЛИ (з = "_") ТО ЧитатьСлово(слово.о); нашли:=Ряд.Поиск(слово,слова,слов,Сравнить); ЕСЛИ нашли # ПУСТО ТО Писать.Цепь(п,нашли(ДСлово).г) ИНАЧЕ Писать.Цепь(п,слово.о) КОН АЕСЛИ з = "&" ТО Писать.ЗнакЦепи(п,"И"); з:=Читать.ЗнакЦепи(ч); ЕСЛИ Знак.ВСлове(з) ТО Писать.ЗнакЦепи(п," ") КОН АЕСЛИ з = "~" ТО Писать.Цепь(п,"НЕ"); з:=Читать.ЗнакЦепи(ч); ЕСЛИ Знак.ВСлове(з) ТО Писать.ЗнакЦепи(п," ") КОН ИНАЧЕ Пропуск КОН КОН; КОН Перевод; (******************************************************************************) ЗАДАЧА ВводСл(г-,о-:ЦЕПЬ); ПЕР слово:ДСлово; УКАЗ СОЗДАТЬ(слово); СПИСАТЬ(о,слово.о); СПИСАТЬ(г,слово.г); Ряд.Вставка(слово,слова,слов,Сравнить) КОН ВводСл; (******************************************************************************) УКАЗ слов:=0; ВводСл("АЕСЛИ", "ELSIF"); ВводСл("БЕГУНОК", "RIDER"); ВводСл("В", "IN"); ВводСл("ВИД", "TYPE"); ВводСл("ВОЗВРАТ", "RETURN"); ВводСл("ВЫБРАТЬ", "CASE"); ВводСл("ВЫП", "DO"); ВводСл("ВЫХОД", "EXIT"); ВводСл("ДЕЛИТЬ", "DIV"); ВводСл("ДЛЯ", "WITH"); ВводСл("ДО", "UNTIL"); ВводСл("ДОСТУП", "POINTER"); ВводСл("ЕСЛИ", "IF"); ВводСл("ЯВЛЯЕТСЯ", "IS"); ВводСл("ЗАДАЧА", "PROCEDURE"); ВводСл("И", "&"); ВводСл("ИЗ", "OF"); ВводСл("ИЛИ", "OR"); ВводСл("ИНАЧЕ", "ELSE"); ВводСл("ИСПОЛЬЗУЕТ","IMPORT"); ВводСл("К", "TO"); ВводСл("КОЛЬЦО", "LOOP"); ВводСл("КОН", "END"); ВводСл("НАБОР", "RECORD"); ВводСл("НЕ", "~"); ВводСл("ОСТАТОК", "MOD"); ВводСл("ОТ", "FOR"); ВводСл("ОТДЕЛ", "MODULE"); ВводСл("ПЕР", "VAR"); ВводСл("ПО", "BY"); ВводСл("ПОВТОРЯТЬ", "REPEAT"); ВводСл("ПОКА", "WHILE"); ВводСл("ПОСТ", "CONST"); ВводСл("ПУСТО", "NIL"); ВводСл("РЯД", "ARRAY"); ВводСл("ТО", "THEN"); ВводСл("УКАЗ", "BEGIN"); ВводСл("ВЕЩ", "REAL"); ВводСл("ВЗНАК", "CHR"); ВводСл("ВЦЕЛ", "ORD"); ВводСл("ВШИРЦЕЛ", "ENTIER"); ВводСл("ВКЛ", "TRUE"); ВводСл("РАЗМЕР", "LEN"); ВводСл("ЗНАК", "CHAR"); ВводСл("КЛЮЧ", "BOOLEAN"); ВводСл("МАКС", "MAX"); ВводСл("МИН", "MIN"); ВводСл("МНОЖ", "SET"); ВводСл("МОДУЛЬ", "ABS"); ВводСл("НЕ ЧЕТ", "ODD"); ВводСл("ОТКЛ", "FALSE"); ВводСл("ПРОВЕРИТЬ", "ASSERT"); ВводСл("СОЗДАТЬ", "NEW"); ВводСл("СПИСАТЬ", "COPY"); ВводСл("СТОП", "HALT"); ВводСл("УВЕЛИЧИТЬ", "INC"); ВводСл("УЗК", "SHORT"); ВводСл("УЗКЦЕЛ", "SHORTINT"); ВводСл("УМЕНЬШИТЬ", "DEC"); ВводСл("ЦЕЛ", "INTEGER"); ВводСл("ШИРЦЕЛ", "LONGINT"); ВводСл("ШИРВЕЩ", "LONGREAL"); ВводСл("ОБХОД", "SYSTEM"); ВводСл("Ячейка", "BYTE"); ВводСл("Доступ", "PTR"); ВводСл("Адрес", "ADR"); ВводСл("Значение", "VAL"); ВводСл("ИзПамяти", "GET"); ВводСл("ВПамять", "PUT"); ВводСл("Образ", "MOVE"); КОН Слова. ▲ Вопросы, замечания и предложения высылайте на atimopheyev@yahoo.com или Издателю Глагола:
|
|