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

Вниз

Некий парсинг для исходного кода где найти ???????   Найти похожие ветки 

 
ЮРИЙ_К   (2003-08-13 15:05) [0]

Может подскажет кто, где найти такую программу или нечто похожее, что-бы можно
было-бы сделать анализ своего исходного кода, для более наглядного и детального изучения.
Вам объяснять не нужно, что иногда потеряешь связку Begin-End и будешь день ковыряться...

Вот к примеру есть кусок такого кода:

Procedure BlahBlah;
Var
i : Integer;
begin
что-то там разное
что-то там разное
что-то там разное
что-то там разное
что-то там разное
что-то там разное
Case k of
1 : нечто;
2 : нечто;
3 : нечто;
end;

begin
if i > 2 then
a = 0
else
b = 1;
end;
end;

После своеобразного парсинга этой программой, на выходе должно получиться следующее:

Procedure BlahBlah;
Var
i : Integer;
---> begin
| что-то там разное
| что-то там разное
| что-то там разное
| что-то там разное
| что-то там разное
| что-то там разное
| ---> Case k of
| | 1 : нечто;
| | 2 : нечто;
| | 3 : нечто;
| ---> end;
|
| ---> begin
| | --> if i > 2 then
| | | a = 0
| | |-- else
| | --> b = 1;
| ---> end;
---> end;


 
Skier   (2003-08-13 15:09) [1]


> Вам объяснять не нужно, что иногда потеряешь связку Begin-End
> и будешь день ковыряться...

Это называется "операторные скобки", принцип обработки таких скобок тот же что и для "простых" скобок ("((...))")
А принцип такой : кол-во открывающих скобок должно равняться
кол-ву закрывающих. По этому принципу и делай.


 
ЮРИЙ_К   (2003-08-13 15:18) [2]

>кол-во открывающих скобок должно равняться
>кол-ву закрывающих. По этому принципу и делай.
ХА, легко сказать, а как их отловить какая к какой относится?


 
HolACost!   (2003-08-13 15:22) [3]

site Inno Setup! У него есть там пример чуть ли не компилятора паскалевского - может поможет!


 
Region   (2003-08-13 15:22) [4]

Есть функции, выясняющие, является ли строка правильным скобочным выражением. Думаю, переделать их под нужное не составит особого труда.


 
MOA   (2003-08-13 15:29) [5]

Посмотрите, вроде бы на JEDI я видел уже готовую программулину, аналог unix-ового CB.


 
MOA   (2003-08-13 16:45) [6]

Вот ссылка на неё:
http://sourceforge.net/projects/jedicodeformat/
Ссылка на сам JEDI
http://projectjedi.sourceforge.net/
Удачи!


 
ЮРИЙ_К   (2003-08-13 17:09) [7]

>> MOA
Спасибо за урлу, но это не совсем то. В начале письма я нарисовал, как мне нужно. Если Вы знаете FoxPro 2.5 из под Дос, то должны знать, там есть такая утилита, которая это выполняет с фоксовским исходником. Великолепная штука. Вот я такую и хочу для Дельфина 8-(


 
MOA   (2003-08-13 17:53) [8]

Программулина будет (не пробовал, но должна) делать отступы в соответствии с уровнем вложенности - и по отступам очень легко просматривается структура - это дело не очень большой привычки (пара дней). Мне, например, в Фоксе это не очень нравилось - наверно, просто привык к отступам. Хотя, в случае очень длинных фрагментов фоксовский подход помогает. Другое дело - длинных фрагментов быть не должно. Если программулина настраиваемая (не пробовал, но попробую) - можно отформатировать как удобно. А заглавные - прописные - просто дополнительная фича.
Т.е. берём чужой текст, прогоняем через "форматер" - и он как родной. Особенно удобно, когда несколько человек. Я своих программеров заставлял прогонять все программы через СВ - пара недель - и привыкаешь здорово.
Если интересно именно написать такую программу, то посмотрите в сторону lex и yacc. Изучаются где-то за месяц - куча пользы. Есть варианты и для Пакаля.
Удачи!


 
Скорбящий   (2003-08-13 18:32) [9]

>и будешь день ковыряться...
Вместо того, чтобы ткнуть в Project|Syntax Check...


 
Ketmar   (2003-08-13 20:26) [10]

>ЮРИЙ_К © (13.08.03 17:09) [7]
не понял, а мозги что, отменили? исходник дают, да? дают. взял и написал. работы на пол-часа. вместо чем в форум орать, делом бы занялись... а то привыкли все к халяве... прокладки, блин!


 
MsGuns   (2003-08-13 20:41) [11]

>Ketmar © (13.08.03 20:26) [10]

А ведь прав чертяка ! Это ведь не компиллятор писАть, а просто взять текстовый файл и врезать в него что надо. Можно, кстати, стругануть дополнительно настройки и прога будет даже форматить текст (отступы, цвета и т.д.) Сложного, действительно, немного, но ручки нужны.


 
Ketmar   (2003-08-13 20:50) [12]

>MsGuns © (13.08.03 20:41) [11]
дык ЕСТЬ УЖЕ форматёр исходников! к чему и ругаюсь. там парзер отлично работает, текст выдаёт. и заточено как раз под подобные задачи. дописать нужный автору вопроса кусок -- пол-часа работы. но ведь лень же народу... "эх, молодёжь!" (ц)
[Кэтмар грустно хлебнул пивка и закурил сигарету...]


 
Ketmar   (2003-08-13 20:51) [13]

пардо. не текст, конечно, выдаёт. дерево программы выдает. в котором вся инфа о форматировании сохранена. дёшево и сердито.


 
Cr@ѕh   (2003-08-13 20:53) [14]

Кетмар, ты где лазишь, пошли в чат, пива выпьем..
sorry


 
Ketmar   (2003-08-13 20:59) [15]

не могу в чат. Сеть ограничена %-((( вот пойду на работу, по вечерам, видимо, буду в чате %-))
а пиво я и так пью. так что мы виртуально вместе %-)


 
easy   (2003-08-13 21:01) [16]


> Ketmar © (13.08.03 20:59)

ок


 
ЮРИЙ_К   (2003-08-15 08:45) [17]

>> Ketmar

А шо так много крику-то ??? Вот кричишьЮ сам не поняв толком вопроса. Ведь ясно сказано, что не форматировать текст нужно(для этого уже выработана привычка, насчет отступов), нужно именно соеденить визуально парные блоки ГРАФИЧЕСКИМИ ЗНАЧКАМИ !!! Вот что нужно.


 
Ketmar   (2003-08-15 09:00) [18]

>ЮРИЙ_К © (15.08.03 08:45) [17]
прежде, чем писать ответ, полезно перечитывать пост раза 3-4. авось меньше печатать придётся.


 
Delirium   (2003-08-15 10:52) [19]

Procedure BlahBlah;
Var
i : Integer;
begin
что-то там разное
что-то там разное
что-то там разное
что-то там разное
что-то там разное
что-то там разное
Case k of
1 : нечто;
2 : нечто;
3 : нечто;
end; // case

begin
if i > 2 then
a = 0
else
b = 1;
end; // if
end; // BlahBlah


На мой взгляд идея ясна - комментарии помогут ;)


 
ЮРИЙ_К   (2003-08-15 16:19) [20]

Здается мне, все вокруг да около, однако толком я ответа так и не получил, а очень жаль. 8-(((. Может я многого и не понимаю, но как можно отследить кол-во открытых и кол-во закрытых, точнее как угадать, что первый BEGIN не найдет для себя типавместо своего конечного END - END от Case. И не надо на меня наезжать понапрасну, не так все и просто, как кажется и тем более вставить графику, как я рисовал в самом начале.


 
MsGuns   (2003-08-15 17:16) [21]

>ЮРИЙ_К © (15.08.03 16:19)

Да никто и не наезжает. На трабла, ИМХО, из пальца высосана. Я к примеру вполне обхожусь отступами (кол-вом пробелов перед начбором строки). А вот если текст набирается мплошняком, то и графика не помржет разобраться в этой куче кода.
Но уж если хочется, то можно написать форматер, модифицирующий и сохраняющий исходник с псевдографикой или еще какими прибамбасами.



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

Форум: "Потрепаться";
Текущий архив: 2003.09.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.009 c
1-10833
oduvan
2003-08-21 09:24
2003.09.04
Как реализовать перемещение элементов в TTreeView вверх или вниз


3-10633
Riko
2003-08-05 11:01
2003.09.04
Как реализовать неперекрываемость данных?


7-11007
AndrewK
2003-06-23 13:25
2003.09.04
Как организовать процесс...


6-10855
comintegrator
2003-06-29 02:33
2003.09.04
ARP RARP


14-10955
Proger_XP
2003-08-11 10:52
2003.09.04
Delphi7





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