Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Поиск классов

15K
04 февраля 2008 года
Kuzia_88
15 / / 19.02.2007
Привет всем! Я не могу решить задачку, помогите, please!!!
В файле определены классы. Нужны подсчитать их кол-во.
Подкинте какие-нибудь идеи, только не подумайте, что я хочу чтобы ВЫ за меня решали.
Я как сначала думал: считаю строку, проверяю на вхождения "class", но тут у меня возникают проблемы.
Если "{" находится вдругой строке и дальше у меня не получается???
2
04 февраля 2008 года
squirL
5.6K / / 13.08.2003
вам помогут регулярные выражения. почитайте документацию по библиотеке pcre, чтобы не изобретать велосипед.
350
06 февраля 2008 года
cheburator
589 / / 01.06.2006
1) Каждое определение класса начинается с ключевого слова class (попробуйте меня опровергнуть).
2) Каждое ключевое слово class описывает какой-то класс (исключение составляют случаи "будущего" определения - т. е. мы говорим компилятору, что такой класс будет). Также нужно учитывать случаи вложенных классов.
3) Для полного и правильного анализа нужен полный синтаксический анализатор языка C++ (читай, компилятор). Я не думаю, что преподаватель это имел в виду...
С учетом всего этого, есть два варианта - писать полный лексико-синтаксический анализатор (или просто взять готовый компилятор), или просто анализировать количество слов class :)
92
06 февраля 2008 года
Тень Пса
2.2K / / 19.10.2006
я думаю лексичекий мегаанализатор тут не понадобится.

строка начинается со слова class (1 в уме) идем дальше если ; в конце строки (перед \n) нет, то считаем кол-во классов +1.

если есть ; в конце строки, то тогда это предварительное определение )

а еще не плохо было бы указать язык программирования :D

в общем, это самый простой вариант. как бы вот.
337
06 февраля 2008 года
shine
719 / / 09.06.2006
Слишком общая поставлена цель. Для разных языков поиск слова class может отрабатывать по-разному. Например такой код
 
Код:
class String
  def kuzhi
    puts 'Hello, Kuzya'
  end
end

не создает новый класс в Ruby а добавляет метод kuzhi в уже существующий класс. Если тупо считать слова 'class' то результат будет неверным.

Вобщем, нужно уточнять условия задачи.
2
06 февраля 2008 года
squirL
5.6K / / 13.08.2003
ну по косвенным признакам парсить надо код С++. Автор, еще раз говорю, не изобретайте велосипед. используйте регулярные выражения. регулярками эта задача решается при минимуме кода :)
3
06 февраля 2008 года
Green
4.8K / / 20.01.2000
Цитата: cheburator
1) Каждое определение класса начинается с ключевого слова class (попробуйте меня опровергнуть).


:)

 
Код:
#define KLASS class

KLASS MyClass {}

(это шутка)

Цитата: cheburator

"будущего" определения


Цитата: Тень Пса

предварительное определение )


Это называется "объявление".

Цитата: squirL
ну по косвенным признакам парсить надо код С++. Автор, еще раз говорю, не изобретайте велосипед. используйте регулярные выражения. регулярками эта задача решается при минимуме кода :)


Ага.
Только не забудь в регулярке и такие случаи:

 
Код:
typedef class{} Name;
class {} instance;

А это не классы:
 
Код:
"class A {}"
// class B{}
3
06 февраля 2008 года
Green
4.8K / / 20.01.2000
А ты уверен, что задано посчитать классы в исходном коде?
Это как-то не интересно... :(
Вот подсчитать классы в рантайме - это интереснее.
Вот здесь бы и синглтон, наверное, пригодился бы... :)
2
06 февраля 2008 года
squirL
5.6K / / 13.08.2003
Цитата: Green
:)
 
Код:
typedef class{} Name;
class {} instance;

А это не классы:
 
Код:
"class A {}"
// class B{}


и что?

3
06 февраля 2008 года
Green
4.8K / / 20.01.2000
Цитата: squirL
и что?


То, что такие случаи надо учесть при подсчете классов.

2
06 февраля 2008 года
squirL
5.6K / / 13.08.2003
Цитата: Green
То, что такие случаи надо учесть при подсчете классов.



тяжело спорить :-)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог