![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Написать Компилятор языка Дельфи (Паскаль) [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]вообще-то сначала надо пре-компилятор написать