ПО, ЭВМ и АСУ из Таможенного Союза

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » ПО, ЭВМ и АСУ из Таможенного Союза » контекстно-свободные грамматики » О нехватке знаний у тексторезов


О нехватке знаний у тексторезов

Сообщений 1 страница 2 из 2

1

возникают ситуации, когда при анализе текста нужно учитывать только некоторые его особенности, а не все в принципе возможные.

Примеры:
1) Конфигурирование отдельного модуля или аспекта в сводном (общем) файле конфигурации. В этом случае нас не интересуют другие аспекты, которые описаны рядом.
2) Препроцессор при анализе учитывает в основном только директивы препроцессора, пропуская остальной текст (мимо внимания?).
3) Синтаксическая подсветка. Полный анализ синтаксиса так же может не проводится, если важно выделить, к примеру, только парность скобок.
4) Строки могут содержать специальные последовательности (escape-последовательности) и все остальные символы. Остальные символы кроме служебных обрабатываются "общим способом".

Ситуация с символами строк описывается с использованием классов символов (служебные и все остальные).
В других ситуациях есть элементы синтаксиса одинакового типа, часть из которых важно/нужно прорабатывать тщательно, а другую часть можно обрабатывать "вобщем".

элементы некоторого типа := важные элементы | неважные элементы ;

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

важные элементы := важный элемент 1 | важный элемент 2 | важный элемент Н ;

А про остальные элементы информации может и не быть. Или она может заимствоваться из другого источника.
Неважные элементы можно попробовать описать при помощи общей формулы.
Эта формула скорее всего будет описывать все "элементы некоторого типа".

Однако важные элементы не должны быть записаны/обработаны/перепутаны как неважные, поэтому формула требует уточнения:

неважные элементы :=  любые элементы некоторого типа - важные элементы ;

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

любые элементы некоторого типа := некое описание частей ;

Скорее всего где-нибудь во внешней грамматике (в терминологическом словаре?) такое правило уже имеет разумное имя, и отталкиваясь от него можно единообразно дать имена некоторым частям частичной грамматики в этом паттерне.

Например:
животные := быки и коровы | коты и кошки | козлы и козы | кобели и суки | шакалы | тигры | удавы ;

если "животные" это имя элементов некоторого типа, то можно (в т.ч. автоматизированно) сформировать имена для вспомогательных правил, например "важные животные" и "остальные животные":

важные животные := быки и коровы | козлы и козы | козлы и козы | кобели и суки ;
остальные животные := животные - важные животные;

Итак, нужно четыре правила:
1) Формула, объединяющая формулы 2 и 3 и используемая вместо формулы 4 в производной частичной грамматике.
2) Формула, описывающая особенные (запомнившиеся) объекты.
3) Формула, описывающая оставшиеся элементы (все элементы, за вычетом особенных), чтобы не ломать процесс разбора.
4) Общая формула, описывающая все объекты некоторого типа.

Можно было бы не разделять/выделять, а (конструктивно) объединять, чтобы попробовать избежать использования операции "-".
Однако в этом случае грамматика должна учитывать не только непосредственно интересущий синтаксис, но и все потенциально возможные детали. А для этого может не быть знаний, и трудоёмкость создания полного описания чего-либо будет больше, чем у частичного.

Формул вида 1 может быть несколько, поэтому их тоже можно называть единообразно ("анализируемые животные", "анализируемые шкуры" и т.д.).

Назовём паттерн "АВОТ":
Анализируемые животные := Важные животные | Остальные животные ;
Важные животные := ? ... ? ;
Остальные животные := Типичные животные - Важные животные ;
Типичные животные := ? ... ? ;

Можно даже по-английски - "analyzed", "valuable", "other", "typical".

Если последнее правило берётся из внешней грамматики, то имя у него будет какое попало, например просто "животные";
a_animals := v_animals | o_animals ;
v_animals := ? ... ? ;
o_animals := animals - v_animals;
animals := ? ... ? ;

Нужно три разных префикса: для анализируемых, важных и остальных (например "а", "в" и "о"). Если отойти от стандартизированного синтаксиса  ebnf, то можно было бы ввести пару ключевых слов или специальных символов (Символы - знак всеобщности, глаз и знак неопределённости. Например: ∀ животные, 👁 животные, ⯑ животные.). Ключевых слов нужно только два, так как в этом случае правила 1 и 3 можно генерировать автоматизированно.

Остаётся только определить, какое правило импортируем и как выглядят важные элементы.
Какие ключевые слова выбрать?

Отредактировано Лис (2017-04-04 21:06:58)

0

2

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

Отредактировано Сандро (2017-04-04 22:42:23)

0


Вы здесь » ПО, ЭВМ и АСУ из Таможенного Союза » контекстно-свободные грамматики » О нехватке знаний у тексторезов