КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Описание модельного языка
Введение. ЭЛЕМЕНТЫ ТЕОРИИ ТРАНСЛЯЦИИ В этом разделе будут рассмотрены некоторые алгоритмы и технические приемы, применяемые при построении трансляторов. Практически во всех трансляторах (и в компиляторах, и в интерпретаторах) в том или ином виде присутствует большая часть перечисленных ниже процессов: à лексический анализ à синтаксический анализ à семантический анализ à генерация внутреннего представления программы à оптимизация à генерация объектной программы. В конкретных компиляторах порядок этих процессов может быть несколько иным, некоторые из них могут объединяться в одну фазу, другие могут выполнятся в течение всего процесса компиляции. В интерпретаторах и при смешанной стратегии трансляции некоторые этапы могут вообще отсутствовать. В этом разделе мы рассмотрим некоторые методы, используемые для построения анализаторов (лексического, синтаксического и семантического), язык промежуточного представления программы, способ генерации промежуточной программы, ее интерпретации. Излагаемые алгоритмы и методы иллюстрируются на примере модельного паскалеподобного языка (М-языка). Все алгоритмы записаны на Си. Информацию о других методах, алгоритмах и приемах, используемых при создании трансляторов, можно найти в [1, 2, 3, 4, 5, 8]. P ® program D1; B^ D1 ® var D {;D} D ® I {,I}: [ int | bool ] B ® begin S {;S} end S ® I:= E | if E then S else S | while E do S | B | read (I) | write (E) E ® E1 [ = | < | > |!= ] E1 E1 ® T {[ + | - | or ] T} T ® F {[ * | / | and ] F} F ® I | N | L | not F | (E) L ® true | false I ® C | IC | IR N ® R | NR C ® a | b |... | z | A | B |... | Z R ® 0 | 1 | 2 |... | 9
Замечание: a) запись вида {a} означает итерацию цепочки a, т.е. в порождаемой цепочке в этом месте может находиться либо e, либо a, либо aa, либо aaa, и т.д.
b) запись вида [ a | b ] означает, что в порождаемой цепочке в этом месте может находиться либо a, либо b. c) P - цель грамматики; символ ^ - маркер конца текста программы.
Контекстные условия:
1. Любое имя, используемое в программе, должно быть описано и только один раз. 2. В операторе присваивания типы переменной и выражения должны совпадать. 3. В условном операторе и в операторе цикла в качестве условия возможно только логическое выражение. 4. Операнды операции отношения должны быть целочисленными. 5. Тип выражения и совместимость типов операндов в выражении определяются по обычным правилам; старшинство операций задано синтаксисом.
В любом месте программы, кроме идентификаторов, служебных слов и чисел, может находиться произвольное число пробелов и комментариев вида {< любые символы, кроме} и ^ >}. True, false, read и write - служебные слова (их нельзя переопределять, как стандартные идентификаторы Паскаля). Сохраняется паскалевское правило о разделителях между идентификаторами, числами и служебными словами.
Дата добавления: 2015-06-27; Просмотров: 479; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |