Давно пора выразить содержимое головы, а то там места скоро не останется. А так глядишь и для новых мыслей освободится...
Текст у нас будет состоять из фрагментов. Это просто некая сущность, основанная на тексте. Например, слово. Или морфема. Или фразеологизм. А скорее все вместе. При этом необязательно чтоб фрагмент представлял собой непрерывный участок текста, это неважно, а в русском языке с его свободным порядком слов так и вовсе слабодостижимо. Никакого отношения к семантике фрагменты иметь не будут, это просто синтаксические единицы, полезные при всякого рода резолвингах.
Фрагменты будут связаны отношениями. Необязательно бинарными (можно даже унарными). Направленными или нет. Пофигу. Отношение плюс относимые фрагменты могут рассматриваться как новый фрагмент выше по иерархии. Каждое отношение (а не фрагмент, как мог бы подумать Тузов) представляет собой некую весьма активную сущность. А именно, код, который может быть выполнен. Видимо, это функция от того, что сие отношение связывает. Хотя... Сложный вопрос. Это пришло в голову практически в момент написания текста, а до того была мысль, что давайте все же код будет во фрагментах, только функции все будут от максимум одного аргумента, и в одном фрагменте их сможет быть несколько непротиворечивым образом.
Также, видимо, есть в языке фундаментальная ссющность, на которой теоретики как-то не очень акцентируются. Назовем ее рядом. Ряд представляет собой просто перечисление чего-то однотипного (стандартные примеры: однородные члены, соединенные, возможно, какими-нибудь союзами; обычные перечисления по пунктам очень разного вида). Ряд тоже будет выражаться отношением, а заодно и фрагментом, внутри которого это отношение живет. И ряд, видимо, обладает свойством, которое я назову дистрибутивностью, ибо похоже. А именно, если ряд как фрагмент находится в некотором отношении с каким-либо другим фрагментом А (а это, имхо, и есть формализация слова "однотипный" из определения ряда), то каждый элемент этого ряда находится в этом отношении с А. Обратно тоже верно. А с А, либо с этим отношением, у нас, помнится, ассоциирован некий код. Посему этот код надо выполнить для каждого члена ряда, после чего результат как-то замержить.
Примеры дистрибутивности. "Вася (не стоит и не лежит)" значит, что "(Вася не стоит) и (Вася не лежит)". "Мы купили (синий-синий презеленый красный) шар" значит, что "(Мы купили синий-синий шар), (мы купили презеленый шар), (мы купили красный шар)", и при этом речь об одном и том же шаре. "(И Василий, и бежит) - офигеть!" выродится в "(Василий - офигеть!) и (бежит - офигеть!)". "Вбежала девушка в (слезах и белом платье)" -> "Вбежала девушка (в слезах) и (в белом платье)" -> "(Вбежала девушка в слезах) и (вбежала девушка в белом платье)". Данную скобочную запись надо понимать исключительно как что-то промежуточное в парсинге, потому что речь все равно будет идти об одном и том же событии, и на самом деле в результате эти скобки будут помержены под знаком соответствующей бинарной операции. Пока неясно, как именно.
Кстати, опять же вспоминая Тузова. Видимо, мое любимое слово "не" тоже дистрибутивно. Вырожденный случай, да и дистрибутивно странным образом. Но "он не должен туда ходить" - это ведь "он должен туда (не ходить) ИЛИ он должен (не туда) ходить ИЛИ ... ИЛИ (не он) (не должен) (не туда) (не ходить)", всего 16 вариантов. Может, и не 16, может и меньше, но явно не один. Так что такое вот эквивалентное преобразование точно имеет место.
Кстати, в предложении "Петя и Маша пошли в лес" лично я дистрибутивности в данном понимании не нахожу. Перечисление есть, но оно не дистрибутивно, по крайней мере, грамматически. Просто образуется некий фрагмент "Петя и Маша" со своими новыми свойствами типа множественного числа. И в семантике это тоже будет новая конструкция, в которой надо будет как-то явно указать, что они не по отдельности (видимо) пошли, а вместе, и неизвестно еще с какой целью. А очень умный парсер, может, и про цель догадается... Но это уже совсем другая история.
Saturday, July 21, 2007
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment