Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   Разбор и Анализ Строк    >>    compiler
   
 
 Курсовик - Построение компилятора Pascal  Алексей Попов 06.06.2000

Курсовая работа на тему "Построение компилятора для языка программирования "ПАСКАЛЬ". Реализовано базовое подмножество языка Pascal - процедуры, функции, циклы, условные операторы, логические и арифметические выражения и т.п. Приведен исходный код компилятора для BP7 и примеры для компиляции.



100k 
 

КУРСОВАЯ РАБОТА по дисциплине "СИСТЕМЫ ПРОГРАММИРОВАНИЯ" на тему "Построение компилятора для языка программирования "ПАСКАЛЬ" ---------------------------------------- Выполнили студенты 5-го курса ФПМ группы КМ-51 Попов Алексей КМ-5119 Лобенко Максим КМ-5129 Седых Инна КМ-5122 Руководитель: Россошинский Д.А. Киев, 2000 СОДЕРЖАНИЕ ВВЕДЕНИЕ 3 1.ПОСТАНОВКА ЗАДАЧИ 5 2.ТЕОРЕТИЧЕСКИЕ ОБОСНОВАНИЯ 6 2.1.Формализованное решение 6 2.2.Семантические процедуры 7 2.3.Структуры данных и спецификация функций 8 3. ОПИСАНИЕ ЛОГИЧЕСКОЙ СТРУКТУРЫ ПРОГРАММЫ 9 4.ТЕСТИРОВАНИЕ ПРОГРАММЫ 101 5. Выводы 122 5. Литература 133 1.ПОСТАНОВКА ЗАДАЧИ В данной работе в качестве языка программирования был выбран некоторый урезанный вариант языка Pascal. Подмножество выбиралось так, чтобы учесть основные структуры языка - процедуры, функции, циклы, условные операторы, логические и арифметические выражения и т.п. Примерный "шаблонный" макет программы выглядит так: <pre> Var <name1> : <type1>; <name2> : <type2>; ... procedure <name> ( <in_var_name11>: <type11>; <in_var_name21> : <type12>; ... var <out_var_name11> : <type21>; var <out_var_name21> : <type22>; ...); var ... begin <program_code> end; function <name> ( <in_var_name11> : <type11>; <in_var_name21> : <type12>; ... var <out_var_name11> : <type21>; var <out_var_name21> : <type22>; ...) : <type>; const ... var ... begin <program_code> end; begin for ... to|downto ... do ... if ... then ... else ... x := a+b*(c-d/e)/f+(-2.3e+5-11)*func(y,t); end. </pre> При этом учтены некоторые особенности языка: 1. Большие и маленькие