Помощь - Поиск - Пользователи - Календарь
Полная версия: Свой компилятор
Форум «Всё о Паскале» > Pascal, Object Pascal > 32 битные компиляторы
Dr.Bugy
Здарово народ!!!
Вот пишу свой компилятор. И возник такой вопрос компилятор пишется на паскале, а IDE на Делфи.
Так вот как мне из WIN32 приложения отправить в компилятор код и заставить его скомпилировать?

<censored>
Задаешь вопросы - задавай. А правила нарушать не надо!
Правила Форума (пункт 1.12 в частности)
volvo
Текстовые файлы в Win32 приложении еще никто не отменял.

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

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

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

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

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

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

(Кстати, Дельфи тоже вполне в состоянии обрабатывать эти же самые функции, у тебя просто как видно не было необходимости в их использовании)
Dr.Bugy
Спасибо!
Dr.Bugy
Кому интересно узнать про мой компиллятор и частью чего он станет можете заглянуть сюда.
Dr.Bugy
Я тут надумал такую фишку, расширяемый компилятор. Расширяется он так:
в специальном фаиле описываеш конструкцию типа Расширенных Форм Бекуса-Наура и в какие конструкции асма они транслируются (имхо:это удобно ещё и тем что в общем не нужно хорошо знать асм полистал справочник и написал нужные конструкции,повторюсь это имхо). Мне кажется это довольно удобным.
Наверно криво рассказал smile.gif времени мало пишу из библиотеки biggrin.gif !
hardcase
Шаблоны, это, конечно хорошо.
Вот только язык реализации ты выбрал не совсем правильный.... Паскаль вообще не приспособлен к написанию парсеров и трансляторов. Хочешь увидеть ТО, на чём действительно можно красиво и быстро ниписать трансляторы - смотри РЕФАЛ: http://www.refal.net/ Кроме того сществует хороший функциональный язык - Standard ML - я его сейчас изучаю. К нему даже прилагается yacc и lex - генераторы парсеров.
Иван Шихалев
> К нему даже прилагается yacc и lex - генераторы парсеров.

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

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

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

Зы:Недавно прочитал где-то, что Вирт первую версию Паскаля написал на нём же, фишка заключается в том что трансляцию в асм-код он провёл вручную.
Dr.Bugy
Извеняюсь, забыл залогиниться.
hardcase
Вообще-то, Вирт не в асм транслировал, - в P-код, хотя суть от этого не меняется.

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

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

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

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

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

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

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

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

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

А линки не подбросите?
Иван Шихалев
Цитата(Dr.Bugy @ 26.03.2006 3:31) *

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

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