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

Вниз

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

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

Наверх





Память: 0.48 MB
Время: 0.054 c
2-1201887045
NeiL
2008-02-01 20:30
2008.02.24
Alpha канал


15-1200928515
smartleds
2008-01-21 18:15
2008.02.24
Коллеги подскажите как WinAmp к Delphi прикруттить


2-1201086793
Alex_C
2008-01-23 14:13
2008.02.24
Медленное закрытие программы


3-1191344520
красотка (С)
2007-10-02 21:02
2008.02.24
Домашнее задание по курсу «Реляционные БД».


2-1201578558
Думатель
2008-01-29 06:49
2008.02.24
Как принудительно уменьшить объем памяти, занимаемый программой?





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