Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.09.01;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.003 c
15-1364544598
O'ShinW
2013-03-29 12:09
2013.09.01
Как бы сделать в Oraclе DML operation inside a query?


15-1364407192
ThreadMaster
2013-03-27 21:59
2013.09.01
Как нужно делать многопоточные приложения


15-1364430073
RGV
2013-03-28 04:21
2013.09.01
код Делфи to Java


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


15-1363938287
Pit
2013-03-22 11:44
2013.09.01
Посоветуйте базу данных! :-)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский