Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Компиллятор

2.2K
21 марта 2006 года
fogg
114 / / 21.02.2006
Скажите как создать простейший компиллятор на borland pascal 7.0?
Заранее благодарен!
8.4K
22 марта 2006 года
Dian
91 / / 18.02.2006
Цитата:
Originally posted by fogg
Скажите как создать простейший компиллятор на borland pascal 7.0?
Заранее благодарен!


Если позволяет уровень - смотри исходники freepascal'я

2.2K
22 марта 2006 года
fogg
114 / / 21.02.2006
Цитата:
Originally posted by Dian
Если позволяет уровень - смотри исходники freepascal'я


Нужно простое.
Как например програмно создать консольную exe-шку
В которой будет задан определенный код?(например вывод строки на экран)

8.4K
23 марта 2006 года
Dian
91 / / 18.02.2006
Цитата:
Originally posted by fogg
Нужно простое.
Как например програмно создать консольную exe-шку
В которой будет задан определенный код?(например вывод строки на экран)


Сначала определись с ОС и форматом исполняемых файлов

2.2K
23 марта 2006 года
fogg
114 / / 21.02.2006
Цитата:
Originally posted by Dian
Сначала определись с ОС и форматом исполняемых файлов


ОС - DOS (На паскале ж надо!)
Формат - exe или com

14K
30 марта 2006 года
halflifer
28 / / 14.03.2006
Цитата:
Originally posted by fogg
ОС - DOS (На паскале ж надо!)
Формат - exe или com


Читай маны по форматам фпайлов.
И компилятор ты...хы-хы .. замахнулся -то не слабо.
Хоть задумал-бы транслято с языка на язык.
И кстати сразу готовый экзешник некто не лепит. Сначала работает компилятор - он создает объектные файлы, а затем они (объектные файлы , в том числе библеотечные) линкуются линкером. И здеся наконец вылезает .exe. И все ето для того, что бы ты смог один кусок(модуль) написать например на Pase, а некоторые фукции, требующие оптимизации на asme, например.

Ты это сам придумал?

2.2K
30 марта 2006 года
fogg
114 / / 21.02.2006
Цитата:
Originally posted by halflifer
Читай маны по форматам фпайлов.
И компилятор ты...хы-хы .. замахнулся -то не слабо.
Хоть задумал-бы транслято с языка на язык.
И кстати сразу готовый экзешник некто не лепит. Сначала работает компилятор - он создает объектные файлы, а затем они (объектные файлы , в том числе библеотечные) линкуются линкером. И здеся наконец вылезает .exe. И все ето для того, что бы ты смог один кусок(модуль) написать например на Pase, а некоторые фукции, требующие оптимизации на asme, например.

Ты это сам придумал?


Ладно! Если ты такой умный, то приведи примерчик или дай ссылочку!

551
30 марта 2006 года
Pavia
357 / / 22.04.2004
А что понимается под компилятором?
Создать компилятр АСМ.
Или высокого языка программирования из Паскаль в ASM.
Это две различные задачи. Хотя в них есть общее.
Если для первого тебе понадобиться изучить формат OBJ или EXE(NE или MZ) и мануэл от Intel.
То для второго тебе понадобиться больше усилий по написанию. Ты должен будешь заняться кодо генерацией и лексический анализатор усложнится.
Возможно стоит обратить внимание на генераторы компиляторов.

Лично я поставил перед собой цель научиться писать компиляторы. Не быстро написать. А писать хорошо и самому.

Цитата:
Originally posted by fogg
Ладно! Если ты такой умный, то приведи примерчик или дай ссылочку!


Советую прочитать Книгу дракона. "Альфред Ахо,Рави Сети,Джеффри Ульман Компиляторы.djvu"
Также в сети можно найти сайт посвещенный студенчиским компилятором.

Цитата:
ОС - DOS (На паскале ж надо!)
Формат - exe или com


Это не связанно. Ты можешь написать компилятор который бы компилировал и для виндоуса в exe(PE)
COM - это самый простой формат. Чисто машинный код и все.

2.2K
30 марта 2006 года
fogg
114 / / 21.02.2006
Цитата:
Originally posted by Pavia
А что понимается под компилятором?
Создать компилятр АСМ.
Или высокого языка программирования из Паскаль в ASM.
Это две различные задачи. Хотя в них есть общее.
Если для первого тебе понадобиться изучить формат OBJ или EXE(NE или MZ) и мануэл от Intel.
То для второго тебе понадобиться больше усилий по написанию. Ты должен будешь заняться кодо генерацией и лексический анализатор усложнится.
Возможно стоит обратить внимание на генераторы компиляторов.

Лично я поставил перед собой цель научиться писать компиляторы. Не быстро написать. А писать хорошо и самому.


Советую прочитать Книгу дракона. "Альфред Ахо,Рави Сети,Джеффри Ульман Компиляторы.djvu"
Также в сети можно найти сайт посвещенный студенчиским компилятором.


Это не связанно. Ты можешь написать компилятор который бы компилировал и для виндоуса в exe(PE)
COM - это самый простой формат. Чисто машинный код и все.


Дай ссылочку на книжку...или на сайт...
я ничего не нашел

551
31 марта 2006 года
Pavia
357 / / 22.04.2004
Цитата:
Originally posted by fogg
Дай ссылочку на книжку...или на сайт...
я ничего не нашел


Может за тебя еще и компьютер включить?
введи в яндаксе "Альфред Ахо,Рави Сети,Джеффри Ульман Компиляторы.djvu" первая ссылка с верху.

391
31 марта 2006 года
Archie
562 / / 03.02.2005
Самый простой вариант - написать компилятор в байткод и интерпретатор байткода к нему. (Пример такого подхода: Visual Basic, Fox Pro, Java).
Для примера поищи в инете реализацию s-Pascal (компилер паскаля на паскале же и написаный, сам себя компилит). К нему добрый человек написали подробнейшее описание кода в виде учебника.
14K
31 марта 2006 года
halflifer
28 / / 14.03.2006
Могу послать книгу Ахо на мыло)
2.2K
31 марта 2006 года
fogg
114 / / 21.02.2006
Цитата:
Originally posted by halflifer
Могу послать книгу Ахо на мыло)


Давай..._slash@bk.ru

2.2K
31 марта 2006 года
fogg
114 / / 21.02.2006
Цитата:
Originally posted by fogg
Давай..._slash@bk.ru


А как в винде открыть файлы djvu???

551
31 марта 2006 года
Pavia
357 / / 22.04.2004
Цитата:
Originally posted by fogg
А как в винде открыть файлы djvu???


Тебе нужно скачать DjVu Browser Plugin
Скачать можно отсюда.
http://www.lizardtech.com/

14K
01 апреля 2006 года
halflifer
28 / / 14.03.2006
Цитата:
Originally posted by Pavia
Тебе нужно скачать DjVu Browser Plugin
Скачать можно отсюда.
http://www.lizardtech.com/


В пнонедельник после 16.00 лови)

12K
04 апреля 2006 года
bara-igor
22 / / 24.02.2006
Цитата:
Originally posted by Dian
Если позволяет уровень - смотри исходники freepascal'я

Где (в какой папке компилятора или в каком месте сайта) находятся исходники Free Pascal? Lazarus действительно идет в комплекте с исходниками (pas и pp - файлы). Я нашел в компиляторе Free Pascal файлы ppu, но я ни чем не могу их открыть. Или Free Pascal написан не на Pascal. Подскажите, пожалуйста!

2.2K
04 апреля 2006 года
fogg
114 / / 21.02.2006
Цитата:
Originally posted by halflifer
В пнонедельник после 16.00 лови)


Ну и где??? Скинь плис на [email]_slash@bk.ru[/email]

14K
04 апреля 2006 года
halflifer
28 / / 14.03.2006
Цитата:
Originally posted by fogg
Ну и где??? Скинь плис на [email]_slash@bk.ru[/email]


Кидаю

551
04 апреля 2006 года
Pavia
357 / / 22.04.2004
Цитата:
Originally posted by bara-igor
Где (в какой папке компилятора или в каком месте сайта) находятся исходники Free Pascal? Lazarus действительно идет в комплекте с исходниками (pas и pp - файлы). Я нашел в компиляторе Free Pascal файлы ppu, но я ни чем не могу их открыть. Или Free Pascal написан не на Pascal. Подскажите, пожалуйста!


Сылка взета от сюда.
http://www.freepascal.org/down/source/sources-russia.html

К примеру здесь
ftp://ftp.chg.ru/pub/lang/pascal/fpc/dist/source-2.0.2/fpc-2.0.2.source.zip
15 Мб
Если надо могу кинуть на мыло.

А здесь лежат исходники различных компиляторов.
http://exmortis.narod.ru/

2.2K
04 апреля 2006 года
fogg
114 / / 21.02.2006
Цитата:
Originally posted by halflifer
Кидаю


Ну ты меня закидал прям.....пасибо

14K
06 апреля 2006 года
halflifer
28 / / 14.03.2006
Цитата:
Originally posted by fogg
Ну ты меня закидал прям.....пасибо


Да незачто)))

350
06 июня 2006 года
cheburator
589 / / 01.06.2006
Почитай http://www.codenet.ru/cat/Applications/Algorithms/Compilators/
Вообще делается примерно так. Строится лексический анализатор - простенькая процедурка, выделяющая из исходного текста отдельные лексемы, т. е. слова, скобки, запятые, строковые константы и т.д. (в общем всё, что является самостоятельной языковой единицей и разделяется между собой как правило пробелами (исключение здесь составляют те самые скобки и запятые, которые не обязательно разделяются пробелами)).
Затем строится синтаксический анализатор. Он обращается к лексическому: "дай очередную лексему". Проанализировав, что это за лексема, синтаксический анализатор предпринимает те или иные действия, к примеру, увидев ключевое слово "procedure", он может перейти в состояние "далее идет процедура и ее надо распознать", затем берет очередную лексему и это должно быть имя процедуры, его надо где-то запомнить, берет очередную лексему, и если это открывающая скобка, то у процедуры будут параметры, надо распознать параметры, а если нет скобки, то слово begin и т. д.

Для языков с достаточно простой грамматикой можно построить ручками транслятор (интерпретатор), непосредственно описав грамматику языка с помощью, скажем, нормальных форм Бэкуса-наура.

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

Самый простой выход - найти програмульку "LEX" - генератор лексических анализаторов, описать свой язык с помощью нормальных форм Бэкуса-Наура, например:
<ОпределениеПеременной>::=Var <ИмяПеременной>:<ИмяТипа>;
<ОпределениеФункции>::=Function <ИмяФункции> [(<СписокПараметров>)]: <ВозвращаемыйТип>; begin <НаборОператоров> end;
<ОпределениеПроцедуры>::=Procedure <ИмяПроцедуры> [(<СписокПараметров>)]; begin <НаборОператоров> end;
<НаборОператоров>::=<Оператор>{;<Оператор>}
<СписокПараметров>::=Var <ИмяПеременной>:<ИмяТипа>{,<ИмяПеременной>:<ИмяТипа>}
<ИмяТипа>::=char|integer|word|string ["["<ДлинаСтроки>"]"]
и так далее. (Получается нечто вроде Паскаля).
И это самое описание языка дать на съедение LEX'у - на выходе программа даст готовый исходник транслятора на C.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог