Главная страница
    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-1364145881
Ъ-Х
2013-03-24 21:24
2013.09.01
Чего бы сыграть на акустической гитаре?


15-1364233505
wl
2013-03-25 21:45
2013.09.01
Виброакустическая колонка и вред для винчестеров


2-1356073558
LDV
2012-12-21 11:05
2013.09.01
AND и WHERE в JOIN


15-1364463473
boriskb
2013-03-28 13:37
2013.09.01
Россиянин победил в международном конкурсе программистов Facebook


2-1355773456
SKIPtr
2012-12-17 23:44
2013.09.01
полоса прокрутки для TPanel





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский