Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выделение конструкций исходного кода 
:(
    Опции темы
WhoogMan
Дата 4.2.2015, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 22.9.2012

Репутация: нет
Всего: нет



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

первым вариантом я проходил по всему коду, искал все слова и проверял, являются ли они ключевыми, а циклы, условия и прочее заранее вырезал, что не позволяло сохранить индексы элементов в тексте

второй вариант: первый раз проходил, отмечая ключевые фразы, заданные настройками, спец тегами с указанием длины следующей за спец тегом фразы, чтобы не производить поиск в них. Вторым проходом искал все слова, не отмеченные тегом являлись переменными. Но здесь возникла проблема в тегах: одни теги, отмечались другими (например, поскольку тег содержит длину следующей за ним конструкции, он отмечался тегом, обозначающим числа; или две косых черты отмечались как оператор, а затем как комментарий)
PM MAIL   Вверх
Akina
Дата 4.2.2015, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Прямым проходом такие вещи не делаются. Код - это куст (мультидерево). И разбор нужно вести именно так.
Попалась конструкция? ищем, где она завершается. Если при поиске попалась вложенная конструкция - рекурсивно сперва обрабатываем её. И так далее. Переменная/литерал - это то, что не опознано как вложенная конструкция или элемент текущей конструкции.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0599 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.