Среда, 08.02.2012, 09:27
Приветствую Вас Гость

Сайт факультета ЭВТ ВолгГТУ

Меню сайта
Форма входа
Логин:
Пароль:

Войдите, чтобы не видеть рекламу
Категории раздела
Дополнительно
Реклама


Все для iphone. Любые aксессуары iphone с доставкой
Это интересно...

Hа pаботе пpопал пpогpамеp. День нету, два. Hа звонки не отвечает. Hу pешили пpовеpить что да как. Пpишли к нему домой, а там в холодной ванне сидит лысый пpогpамист с полупустой бутылкой шампуня в pуке. Отняли у него бутылку и читают инстpукцию:

"Hанести на влажные волосы, намылить, подождать, смыть, повтоpить ..........."

Поиск
Наш опрос
На сколько вы написали ЕГЭ по математике?
Всего ответов: 435
Статистика

Онлайн всего: 7
Ныкаются: 7
Пользователей: 0
Главная » Файлы » Программы » Основы трансляций [ Добавить материал ]

Compiler - учебный компилятор 1.0

[ Скачать с сервера (1.54Mb) - бесплатно · Скриншот ] 09.02.2009, 20:18

С помощью этой программы ведутся занятия по предмету "Основы трансляции".

Программа позволяет задать КС-грамматику для какого-либо языка программирования и описать синтаксис лексических единиц с помощью графа распознавания лексических единиц, получить на их основе управляющие таблицы для лексического и синтаксического анализаторов, осуществить промежуточную трансляцию исходных текстов на заданном языке с получением матрицы интерпретации.

Выбрать нужную функцию помогут пункты меню и кнопки на передней панели главного окна.
Возможно открытие сразу нескольких грамматик, тогда дальнейшие действия будут относиться к той грамматике, окно которой активно в данный момент.


В целом работа происходит по этапам:

1. Ввод текста грамматики - используйте пункты меню Файл - Создать, Открыть, Сохранить, а также пункты меню Правка и соответствующие им кнопки для работы в текстовом редакторе.

2. Подготовка грамматики к работе - проверка написания правил - с помощью пункта меню Проверка грамматики или аналогичной кнопки.

3. Построение левых выводов - пункт Выводы или кнопка L-выводы.

4. LL(1)-анализ - выясняется, допустима ли грамматика для осуществления по ней нисходящего детерминированного анализа с предварительным просмотром одного входного символа. Происходит поиск множеств направляющих символов правил грамматики и проверка их пересечения для альтернативных правил. Используйте пункт меню LL(1)-анализ или кнопку Поиск НС.

5. Включение действий по интерпретации в грамматику – в грамматику производится ввод действий по интерпретации конструкций. Используйте пункт Выводы.

6. Проверка грамматики построением выводов с действиями - аналогично этапу 3.

7. Построение управляющей таблицы лексического анализатора (ЛА) - пункт меню ЛА или кнопки ЛА. Сначала задаются классы литер, затем граф распознавания ЛЕ во встроенном графическом редакторе, а затем строится управляющая таблица (кнопка Построение управляющей таблицы ЛА).

8. Построение управляющей таблицы синтаксического анализатора (СА) - пункт меню Построение таблиц или кнопки Управляющая таблица СА.

9. Трансляция текстов - пункт Трансляция или соответствующая кнопка. Осуществляется лексический анализ по графу распознавания, затем синтаксический анализ по полученной таблице.


Категория: Основы трансляций | Добавил: COBA
Просмотров: 1219 | Загрузок: 206 | Комментарии: 1 | Рейтинг: 4.0/2 |
Всего комментариев: 1
0  
1 mixae1   (30.01.2010 21:18)
В бытность мою студентом написал патч к данной программе.
Блокирует вывод сообщений об ошибке на одной из последней стадии проверки (было давно не помню какой уж, может вообще всех ошибок).
Технически реализовано очень просто, меняем команду перехода по шестнадцатеричному адресу 0107556 на 0 (NOP). На самом деле заменили сообщение об ошибке на пустую строку. Программулька на паскале ниже (компилим сами ;) )
Надо положить в один каталог с учебным компилятором и запустить, если версия не поменялась то всё сработает.
---Cut---
{Программа исправляет досадное недоразумение в программе
Учебный компилятор - устраняет сообщения об ошибках трансляции,
не аккуратно вставленными туда создателями!!!}

{$I-}
program DeCompiler;
const
start_address=$0107556;
rb:string=#0+'If exist another way, then I done it!';
var
fix_file:file of byte;
q:longint;
t:byte;
begin
writeln('© PyRE STD by SHESS');
assign(fix_file,'compiler.exe');
reset(fix_file);
write('Process:');
seek(fix_file,start_address);
for q:=0 to length(rb) do
begin
write('.');
t:=ord(rb[q+1]);
write(fix_file,t);
end;
if ioresult<>0 then
begin
if ioresult=0 then;
writeln('ERROR!!!',^G);
close(fix_file);
halt;
end;
close(fix_file);
writeln('_O.K._');
end.
---Cut---



Имя *:
Email:
Код *:




Рейтинг@Mail.ru Создать сайт бесплатно