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

Вниз

кол-во слов в тексте   Найти похожие ветки 

 
Петька   (2008-02-01 01:15) [0]

народ бьюсь тут с задачей:
надо подсчитать кол-во begin и end в исходнике любого pas файла, сначала пришла мысль подсчитать begin, end столько же))) но все таки надо сделать по-человечески:)
у кого какие мысли по этому поводу?


 
@!!ex ©   (2008-02-01 01:27) [1]

уважаемый, вы ошибаетесь, количество end может быть сильно отлично от количества begin, например:
begin
 case i of
   
 end;
end.

Если же стоит простая задача подсчета begin, end, лучше всего делать это парсером, простым конечным автоматом, который будет перебирвать весь текст посимвольно и ловить вхождения в него begin, end.
могу пример такого парсера выложить, но через часов 10... как посплю.


 
Петька   (2008-02-01 02:40) [2]

спасибо, выкладывай!


 
Loginov Dmitry ©   (2008-02-01 07:59) [3]

Любой приличный текстовый редактор умеет подсчет вести (например, Notepad++). Не нужно ничего выдумывать.


 
sniknik ©   (2008-02-01 08:28) [4]

как это не нужно? ему же лабу/курсовой/... сдавать...

> может быть сильно отлично от количества begin, например:
SendMessage(...)


 
Slym ©   (2008-02-01 09:32) [5]

извините за плохой англицкий, но попробуйте посчитать
begin
 try
   BeginThread(@Proc);
 except
   ShowMessage("We can"s begin some thread & end this procedure")
 end;
end;


 
Johnmen ©   (2008-02-01 09:33) [6]


> спасибо, выкладывай!

Да-дад! Накладывайте здесь и побольше. Видите же, сколько желающих. А на халяву и наложенное сладко :)


 
Slym ©   (2008-02-01 09:37) [7]

или
BEgiN if (1/3*3)=1 then bEgIn OhYa("end"); eNd eLse BeGIn SoBad("begin"); enD;eND;


 
@!!ex ©   (2008-02-01 10:27) [8]

сделал парсер, случай [4] и [7] отрабатываются без проблем, а вот в [5] слова внутри строки считает, в принципе всунуть в граф отдельный блок обрабатывающий вхождение - выход из строки и комментярия- не проблема, но мне немножко влом.


 
sniknik ©   (2008-02-01 10:29) [9]

> извините за плохой англицкий, но попробуйте посчитать
а очень даже хорошо сочетается... %)

begin
 try
   BeginThread(@Proc);
 except
   ShowMessage("We can"s begin some thread & end this procedure")
 end;
end;


 
sniknik ©   (2008-02-01 10:35) [10]

но вообще, вопрос не о подсчете логических блоков языка - begin ... end, а в подсчете слов, которые даже в комментариях считаются... по уровню лаба только только начавших учить язык и узнавших оператор Pos/PosEx, у нас была подобная в первом семестре первого курса, еще на паскале (там PosEx не было, или не помню, но обошлись без него. т.е. еще и сложнее было... и инета не было...).


 
@!!ex ©   (2008-02-01 10:39) [11]

http://ifolder.ru/5183189

количество Begin ест считается по переходу парсера в состояния Нашли begin и Нашли End соответственно.

для отработки комментаря // нужно сделать переход из любого состояния в состояние комментарий по появлению двух символов // и возврат по переводу строки.
Для обработки строки, нужно сделать переход в состояние строка по символу " и выход из этого состояние по этому же символу.
Ну и с комментарием примерно тоже самое.

на самом деле приведенный парсер нельзя использховать в компиляторах, потому что там рекурсия нужна. да и видно, что задача простейшая, а граф получился жуткий..


 
Anatoly Podgoretsky ©   (2008-02-01 11:16) [12]

Граф очень простой, и ни о каких вхождениях в "состояняие строка" в задание и речи нет, более того это будет ошибкой, как не соответствие условиям задачи.


 
Петька   (2008-02-01 22:56) [13]

спасибо


 
ketmar ©   (2008-02-01 23:37) [14]

блин. а для вывода на экран буквы ты завсегда свой рендерер ttf пишешь? O_o



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

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

Наверх




Память: 0.5 MB
Время: 0.022 c
6-1180793367
Denis_Zhulanov
2007-06-02 18:09
2008.02.24
TICQClient и DLL


2-1201664984
mrFreeman2007
2008-01-30 06:49
2008.02.24
Отлов нажатия клавиши


2-1201674341
Muchacho123
2008-01-30 09:25
2008.02.24
Поставить кнопку в закладку TabControl


15-1200776703
Riply
2008-01-20 00:05
2008.02.24
Рекурсивная работа с FindFirst/Next


15-1201160055
*.dpr
2008-01-24 10:34
2008.02.24
Как бороться с {$IFDEF} в *.dpr?