Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Написать Компилятор языка Дельфи (Паскаль) [D6]


sas9568635 ©   (2012-12-19 19:07:00) 

Уважаемые форумчане!
Уже не знаю как и вопрос задать... :-) а также незнаю что искать:-)
вообщем...
Каким образом можно быстро и грамотно «распознавать» текст (код) языка паскаля (дельфи)?... т.е. я было начал писать подобное...
если «program» тогда ...
если «uses» тогда ...
[B]если «Var» тогда... пробелы, табы, вводы - пропустить... «вычислить» переменную.... пробелы, табы, вводы, пропустить... ожидать... либо запятую...  либо двоеточие... о господи:-), если еще одна переменная опять повторить -  пробелы, табы, вводы пропустить... а предыдущие переменные «помнить» так как их тип будет указан после двоеточия... а также после указания типа возможно еще «=значение» и т. д.
[/B]Вообщем, у меня началось головокружение... :-)
Вот и подумал, может существует какой-то более простой способ «распознавания» этого всего страхомудия!?.. иль кто подскажет что мне необходимо искать в инете для реализации этого?!... а может вообще готовый модуль существует подточенный под распознавание паскаля?!...


bems   (2012-12-20 02:52:00) [1]

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

А основы они и так собираются менять - компилировать скоро будут в код LLVM


Германн   (2012-12-20 02:05:00) [2]


> Ты же сам понимаешь, что менять основы - это очень трудо-
> время/ёмко

А ещё это и весьма реальная возможность поиметь новые баги.


Германн   (2012-12-20 02:04:00) [3]


> bems ©   (20.12.12 00:52) [9]
>
>
> > Большинство компиляторов Дельфи/Паскаль однопроходные,
>  без
> > ре-компиляции.
>
> ну и что, что большинство. Реализации компилятора Паскаля
> в p-code были еще в 70-х, и сам Вирт тоже руку приложил.
>
> А сейчас в Дельфи у нас есть неприятные ограничения вроде
> того, что компилятор не инлайнит функции если реализация
> и вызов находятся в одном модуле и вызов находится выше
> по тексту чем реализация

И это очень напрягает?
И так ли уж нужен этот inline?

Ты же сам понимаешь, что менять основы - это очень трудо-время/ёмко!


bems   (2012-12-20 01:07:00) [4]

ОП, начни с этого http://ru.wikipedia.org/wiki/%D0%9A%D0%BD%D0%B8%D0%B3%D0%B0_%D0%B4%D1%80%D0%B0%D0%BA%D0%BE%D0%BD%D0%B0_%28%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%82%D0%BE%D1%80%D1%8B%29


bems   (2012-12-20 00:52:00) [5]


> Большинство компиляторов Дельфи/Паскаль однопроходные, без
> ре-компиляции.

ну и что, что большинство. Реализации компилятора Паскаля в p-code были еще в 70-х, и сам Вирт тоже руку приложил.
А сейчас в Дельфи у нас есть неприятные ограничения вроде того, что компилятор не инлайнит функции если реализация и вызов находятся в одном модуле и вызов находится выше по тексту чем реализация, и я не могу объяснить это ничем кроме стараний сохранить однопроходность. Лучше бы компилятор тратил немного больше времени на работу, но скомпиленый код был бы быстрее


Anatoly Podgoretsky   (2012-12-19 21:13:00) [6]

KilkennyCat ©   (19.12.12 19:10) [1]
Большинство компиляторов Дельфи/Паскаль однопроходные, без ре-компиляции.


Игорь Шевченко   (2012-12-19 20:57:00) [7]

цель какая ?


Rouse_   (2012-12-19 19:59:00) [8]

Брось это дело.
Если есть пробелы в азах - нет смысла копать дальше.


O'ShinW   (2012-12-19 19:40:00) [9]

http://sources.codenet.ru/?cid=5


KilkennyCat   (2012-12-19 19:13:00) [10]

вот, почитай: http://msdn.microsoft.com/ru-ru/magazine/cc136756.aspx


Ega23   (2012-12-19 19:11:00) [11]

Начать с этого
http://ru.wikipedia.org/wiki/%D0%A4%D0%BE%D1%80%D0%BC%D0%B0_%D0%91%D1%8D%D0%BA%D1%83%D1%81%D0%B0_%E2%80%94_%D0%9D%D0%B0%D1%83%D1%80%D0%B0
Потом с этого
http://mif.vspu.ru/books/pascal/syntax.html

Потом скрестить. Потом писать парсер.


брат Птибурдукова   (2012-12-19 19:11:00) [12]

это называется "лексический анализатор"


KilkennyCat   (2012-12-19 19:10:00) [13]

вообще-то сначала надо пре-компилятор написать


Наверх

Титульная страница Поиск, карта сайта Написать письмо