![]() |
|
![]() ![]() ![]() |
|
WhoogMan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 22.9.2012 Репутация: нет Всего: нет |
требуется из исходного кода, написанного на любом языке, по заданным настройкам (список ключевых слов, регулярные выражения) выделять основные элементы с сохранением позиции этого элемента в коде.
Проблема в поиске переменных: для их поиска используется регулярное выражение для поиска любых слов (с ограничениями, наложенными на состав их имен), т.е. регулярка, которая находит все слова, которые могут быть также ключевыми или могут быть в составе других конструкций (циклов, условий), которые должны выделяться отдельно без разбора содержимого. первым вариантом я проходил по всему коду, искал все слова и проверял, являются ли они ключевыми, а циклы, условия и прочее заранее вырезал, что не позволяло сохранить индексы элементов в тексте второй вариант: первый раз проходил, отмечая ключевые фразы, заданные настройками, спец тегами с указанием длины следующей за спец тегом фразы, чтобы не производить поиск в них. Вторым проходом искал все слова, не отмеченные тегом являлись переменными. Но здесь возникла проблема в тегах: одни теги, отмечались другими (например, поскольку тег содержит длину следующей за ним конструкции, он отмечался тегом, обозначающим числа; или две косых черты отмечались как оператор, а затем как комментарий) |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Прямым проходом такие вещи не делаются. Код - это куст (мультидерево). И разбор нужно вести именно так.
Попалась конструкция? ищем, где она завершается. Если при поиске попалась вложенная конструкция - рекурсивно сперва обрабатываем её. И так далее. Переменная/литерал - это то, что не опознано как вложенная конструкция или элемент текущей конструкции. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |