Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Free Pascal, Pascal ABC и другие _ Свой компилятор

Автор: Dr.Bugy 1.03.2006 0:58

Здарово народ!!!
Вот пишу свой компилятор. И возник такой вопрос компилятор пишется на паскале, а IDE на Делфи.
Так вот как мне из WIN32 приложения отправить в компилятор код и заставить его скомпилировать?

<censored>
Задаешь вопросы - задавай. А правила нарушать не надо!
http://forum.pascal.net.ru/rules.html (пункт 1.12 в частности)

Автор: volvo 1.03.2006 1:33

Текстовые файлы в Win32 приложении еще никто не отменял.

Так же, как и 32-битные версии Паскаля (куда, собственно ты и задаешь вопрос...). Вот и непонятно, о каком Паскале вообще здесь идет речь.

Автор: Dr.Bugy 1.03.2006 2:24

Извените пожалуста, всё понял. Правила прочитал. Больше не повториться.

Вообще пишу на FPC, но с полной совметимостью с ТурбоПаскаль 7.0 (вообще пока и с 4.0 совместим) для того чтобы мой компилятор смог сам себя компилировать, как можно раньше. Забыл сказать, я компилятор Паскаля пишу, как можно догадаться из предыдущего предложения.

Суть вопроса в том как именно, т.е. хотелось бы пример (или линк на подходящую инфу). Ну как сохранить текстовый файл я знаю, а как приказать из IDE компилятору скомпилировать код?
Вроде ничего не упустил.

З.Ы.: Теперь правильно smile.gif ?

Автор: volvo 1.03.2006 2:35

Цитата
а как приказать из IDE компилятору скомпилировать код?
А запустить через WinExec версию командной строки компилятора (у Турбо-Паскаля, если я не ошибаюсь, это TPC.EXE) со всеми необходимыми параметрами (именами файлов, ключами, и т.д.) не судьба?

Автор: Dr.Bugy 1.03.2006 2:46

Опять я не так написал,извени.

Цитата
как приказать из IDE компилятору скомпилировать код?

Я имел ввиду свой компилятор.
Как сделать чтобы мой екзешник реагировал на ключи и т.п?

Может это всё глупые вопросы, я просто недавно начал программировать на Турбо Паскале, до этого я программировал на делфи и с такими вопросами не сталкивался.

Автор: volvo 1.03.2006 2:52

Ну, а чтобы твой EXE-шник заставить реагировать на ключи - тебе прямая дорога к функциям ParamCount/ParamStr и хелпу по Паскалю yes2.gif

(Кстати, Дельфи тоже вполне в состоянии обрабатывать эти же самые функции, у тебя просто как видно не было необходимости в их использовании)

Автор: Dr.Bugy 1.03.2006 2:59

Спасибо!

Автор: Dr.Bugy 1.03.2006 3:31

Кому интересно узнать про мой компиллятор и частью чего он станет можете заглянуть http://forum.progteam.ru/index.php?showtopic=97&st=0&.

Автор: Dr.Bugy 21.03.2006 17:31

Я тут надумал такую фишку, расширяемый компилятор. Расширяется он так:
в специальном фаиле описываеш конструкцию типа Расширенных Форм Бекуса-Наура и в какие конструкции асма они транслируются (имхо:это удобно ещё и тем что в общем не нужно хорошо знать асм полистал справочник и написал нужные конструкции,повторюсь это имхо). Мне кажется это довольно удобным.
Наверно криво рассказал smile.gif времени мало пишу из библиотеки biggrin.gif !

Автор: hardcase 21.03.2006 23:09

Шаблоны, это, конечно хорошо.
Вот только язык реализации ты выбрал не совсем правильный.... Паскаль вообще не приспособлен к написанию парсеров и трансляторов. Хочешь увидеть ТО, на чём действительно можно красиво и быстро ниписать трансляторы - смотри РЕФАЛ: http://www.refal.net/ Кроме того сществует хороший функциональный язык - Standard ML - я его сейчас изучаю. К нему даже прилагается yacc и lex - генераторы парсеров.

Автор: Иван Шихалев 22.03.2006 18:02

> К нему даже прилагается yacc и lex - генераторы парсеров.

Для Turbo Pascal'я и FPC тоже есть.

Автор: Гость 22.03.2006 22:36

2hardcase:
Я конечно почитаю про Refal и Standard ML,возможно они подходят куда больше Паскаля, но мне кажеся, что паскаль хорошо укладывается в БНФ (в оличии от Си). И самое главное почему я выбрал Паскаль (конечно не гооворя,что другие языки (почти) не знаю), я хочу сделать компилятор Паскаля который может сам себя компилировать. Для старта я решил писать свой компилятор на FPC(но только с полной совместимостью с ТР7).

Цитата
> К нему даже прилагается yacc и lex - генераторы парсеров.

Для Turbo Pascal'я и FPC тоже есть.

Вот,тем более.

Зы:Недавно прочитал где-то, что Вирт первую версию Паскаля написал на нём же, фишка заключается в том что трансляцию в асм-код он провёл вручную.

Автор: Dr.Bugy 22.03.2006 22:38

Извеняюсь, забыл залогиниться.

Автор: hardcase 23.03.2006 0:52

Вообще-то, Вирт не в асм транслировал, - в P-код, хотя суть от этого не меняется.

2Иван Шихалёв. А ты видел, во ЧТО они транслируют? Парсер для Паскаля на SML занимает гораздо меньше места, чем мой LexParser, который только и умеет, что строку на терминальные символы разбивать (с хэшированием и прочими причендалами).

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

Автор: Dr.Bugy 23.03.2006 2:49

Цитата
Вообще-то, Вирт не в асм транслировал, - в P-код, хотя суть от этого не меняется

Возможно, но вообще я говорил про самую-самую первую версию компилятора, её всёже он оттранслировал в асм, ну или тоже самое но с P-машиной,а не компилятором. (Когда снова наткнусь на эти утверждения приведу ссылку где я это прочитал). Оттанслировав вручную(имено такая формулировка была в книге) в асм код все последующие версии Паскаля писались, на предидущих( что не удивительно smile.gif )версиях.

Автор: Иван Шихалев 24.03.2006 14:34

Цитата(hardcase @ 22.03.2006 22:52) *

2Иван Шихалёв. А ты видел, во ЧТО они транслируют? Парсер для Паскаля на SML занимает гораздо меньше места, чем мой LexParser, который только и умеет, что строку на терминальные символы разбивать (с хэшированием и прочими причендалами).

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

В рабочий код они транслируют. Я всего лишь заметил, что Lex и Yacc для Паскаля есть. Вид автоматически генерируемого кода редко бывает красивым.

Что касается трансляторов на процедурных языках, то внутренности FPC мне лично кажутся вполне красивыми (правда, только со второй версии). Впрочем, согласен, что на специализированных языках решение как правило более изящно, чем на универсальных. Но это верно для всех задач, а не только для трансляторов.

Автор: Dr.Bugy 26.03.2006 4:31

Цитата
> К нему даже прилагается yacc и lex - генераторы парсеров.

Для Turbo Pascal'я и FPC тоже есть.

Цитата
Я всего лишь заметил, что Lex и Yacc для Паскаля есть.

А линки не подбросите?

Автор: Иван Шихалев 27.03.2006 20:15

Цитата(Dr.Bugy @ 26.03.2006 3:31) *

А линки не подбросите?

В составе дистрибутива FPC они есть (в исходниках). Отдельно эти утилиты можно поискать на ftp://ftp.freepascal.org/ или ftp://ftp.chg.ru/