Программа-интерпретатор для учебного языка SPL

Страницы работы

Содержание работы

Министерство образования и науки Украины

Сумский государственный университет

Кафедра информатики

Конспект лекций

по курсу «Системное программирование»

на тему :«Программа-интерпретатор для учебного языка SPL»

Составил:                                                             студент 4го курса

                                                             Кобзарь В.Н.

Лектор:                                                       доц. Авраменко В.В.

Сумы, 2003


Оглавление

Постановка задачи  5

Теоретические сведения  6

Структура математического обеспечения ЭВМ    6

Элементы компиляции  6

Анализ формальных языков  6

Сведения о регулярных выражениях и грамматиках  6

Понятие о регулярных выражениях  7

Грамматика     7

Работа с цепочками  7

Расширенные грамматики  7

Задача анализа  8

Синтаксические диаграммы   8

Условия применения LA(1)-анализа  9

Правила прохождения дуг синтаксической диаграммы   10

Введение в компиляцию   10

Классификация  10

Структура компилятора  10

Лексический анализ  11

Функции  11

Синтаксический анализ  11

Функции  11

Генерация промежуточного кода  12

Функции  12

Проходы компилятора  12

SPL   12

Символы   12

Конструкции  13

Идентификаторы   13

Переменные  13

Константы   13

Ключевые слова  13

Функции  13

Конструкция if  14

Конструкция while  14

Пример: 14

Лексический анализ  14

Полный синтаксис языка SPL   15

Регулярные выражения и диаграммы: 15

Нетерминальный символ PROG   15

Нетерминальный символ DCONST   15

Нетерминальный символ CONS  16

Нетерминальный символ DVARB   16

Нетерминальный символ DFUNC   16

Нетерминальный символ PARAM    16

Нетерминальный символ BODY   17

Нетерминальный символ STML  17

Нетерминальный символ STAT   17

Нетерминальный символ EXPR   18

Нетерминальный символ TERM    19

Нетерминальный символ FACT   19

Нетерминальный символ FCTL  19

SPL-программы   20

Функции  20

Размещение информации в стеке  20

Команды SPL  22

Функции  22

Создание SPL-программы   23

Простая программа: 24

Программа №2: 24

Индивидуальные изменения  26

Изменение №1: Замена begin и end, начинающих и оканчивающих последовательность исполняемых операторов функции, на { и } соответственно  26

Изменение №2: Замена ключевого слова end, завершающего конструкции if и while, на @   26

Изменение №3: Добавление своей собственной команды sqr — команды возведения в квадрат  27

Изменение №4: Перевод ключевых слов на русский язык  28

Текст программы   30

lex.h  30

spl_prog.c  32

Список литературы   46


Постановка задачи

Реализовать на примере простого языка SPL интерпретатор. Этот интерпретатор должен производить перевод с языка высокого уровня (SPL) на язык промежуточных команд, которые тут же и выполняются.

При написании интерпретатора необходимо осуществить:

  1. лексический анализ исходного модуля (разложение исходного текста на лексемы);
  2. синтаксический анализ (получение синтаксических структур: множитель, слагаемое, выражение, оператор, функция и т. д.);
  3. создание таблиц (промежуточных команд, объектов, функций).

А также необходимо:

  • заменить слова begin и end, начинающих и оканчивающих последовательность исполняемых операторов функции, на { и } соответственно;
  • заменить ключевое слово end, завершающее конструкции if и while, на @;
  • добавить свою собственную команду sqr — команду возведения в квадрат;
  • перевести ключевые слова на русский язык.

Теоретические сведения

Структура математического обеспечения ЭВМ

Элементы компиляции

Анализ формальных языков

Сведения о регулярных выражениях и грамматиках

Алфавит — конечное множество элементов, часто называемых символами. Обозначение: .

Цепочка или слово — конечное множество элементов из алфавита .

Язык — произвольное множество слов в алфавите .

Операции:

  1.  — цепочка символов  повторяется  раз: ;
  2.  — цепочка прочитывается в обратном направлении: ;
  3.  — цепочка  располагается сразу за цепочкой : ;
  4.  — длина цепочки ;
  5.  — цепочка символов  повторяется один (1) и более раз;
  6.  — цепочка символов  повторяется нуль (0) и более раз;
  7.  — цепочка символов  необязательная;
  8.  или  или  — пустое множество.
Понятие о регулярных выражениях

Предположим, некоторые символы не входят в алфавит , например, , тогда регулярным выражением называется цепочка из символов множества .

Грамматика

Это набор , где

* — алфавит терминальных символов (заранее определенных символов);

 — алфавит нетерминальных символов (т. е. выводимых символов);

* — множество правил вывода для нетерминальных символов через терминальные или другие нетерминальные символы;

Похожие материалы

Информация о работе