Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.09.01;
Скачать: CL | DM;

Вниз

Написать Компилятор языка Дельфи (Паскаль)   Найти похожие ветки 

 
sas9568635   (2012-12-19 19:07) [0]

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


 
KilkennyCat ©   (2012-12-19 19:10) [1]

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


 
Ega23 ©   (2012-12-19 19:11) [2]

Начать с этого
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) [3]

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


 
KilkennyCat ©   (2012-12-19 19:13) [4]

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


 
O'ShinW ©   (2012-12-19 19:40) [5]

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


 
Rouse_ ©   (2012-12-19 19:59) [6]

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


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

цель какая ?


 
Anatoly Podgoretsky ©   (2012-12-19 21:13) [8]

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


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


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

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


 
bems ©   (2012-12-20 01:07) [10]

ОП, начни с этого 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


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


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

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

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


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


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

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


 
bems ©   (2012-12-20 02:52) [13]

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

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



Страницы: 1 вся ветка

Текущий архив: 2013.09.01;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.008 c
15-1364323263
TStas
2013-03-26 22:41
2013.09.01
Как узнать, как войти в БИОС ноутбука?


2-1356016429
Pcrepair
2012-12-20 19:13
2013.09.01
Как сохранить закачанные HTML-страницы?


2-1355836063
oam333
2012-12-18 17:07
2013.09.01
Как через TMemoryStream и IdTCPServer передать переменную Record


15-1364413348
TUser
2013-03-27 23:42
2013.09.01
Пластиковые окна


2-1355923802
guest123
2012-12-19 17:30
2013.09.01
Дефайны