LINUX.ORG.RU

Почему их назвали квантификаторами?

 , ,


0

2

Судя по литературе, авторы обычно называют квантификаторами жадные символы, такие как * ? + {n} и т.д. Те, которые определяют последовательности, повторения. Тут сразу приходит на ум термин из математики — квантор всеобщности и существования. А какая связь? Вот например, [a-c] тоже ведь можно трактовать как «существует символ, который совпадает с одним из символов a либо b либо c» . И даже просто, допустим, «А», можно трактовать подобным образом. Какой смысл вкладывают авторы в это название? Или это просто неудачный термин, который «прижился»?



Последнее исправление: terminator-101 (всего исправлений: 2)

квантор, квантификатор имеют отношение к колличеству. Отображает колличество. (quantity же)

invy ★★★★★
()
Последнее исправление: invy (всего исправлений: 1)

[a-c]

синтаксический сахар.

в определении регэкспов математическом же только конкатенация, | *, буква из алфавита и эпсилон (пустой символ). Эти операции обозначают операции над множествами языков, задаваемых каждым отдельным регулярным выражением, то есть a | b - объединение множеств языков L1 := { a } и L2 := {b}, а, например, a* - оболочка(как правильно по-русски) Клини.

invy ★★★★★
()
Последнее исправление: invy (всего исправлений: 2)
Ответ на: комментарий от Progressive

опять этот терминатор

Пациент день ото дня демонстрирует всё более адекватное поведение, налицо ремиссия. Это не может не радовать.

mix_mix ★★★★★
()
Ответ на: комментарий от mix_mix

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

anonymous
()

квантор всеобщности и существования. А какая связь?

прямая. «*» это «любое количество». (а вот «существование» это уже «+»).

emulek
()
Ответ на: комментарий от emulek

Да не, в первом посте, invy правильно все сказал, quantity — количество. Кванторы тут не при чем, это я ступил просто:)

terminator-101
() автор топика
Ответ на: комментарий от terminator-101

Кванторы тут не при чем

не правильно. Вика пишет:

Квантор всеобщности (обозначения: ∀, ∀) — это условие, которое верно для всех обозначенных элементов

Так вот, Z+ верно для всех строк состоящих из буквы(букв) 'Z': «Z», «ZZ», «ZZZ», и так далее.

emulek
()
Ответ на: комментарий от motto

«верно» в данном случае синоним с «выражение совпадает с…». Точнее будет сказать «matched», но я не знаю, как это правильно перевести на русский одним словом.

И никакого «порождения» тут нет.

emulek
()
Ответ на: комментарий от emulek

Ну если «верно» это «matched», то есть отношение принадлежности данного терма языку порождённому данной грамматикой, то «порождение» это «generative» — грамматика по определению это любой конечный механизм порождения языка, так как язык это по определению счётное множество, его по определению счётного множества можно перечислить / породить грамматикой / приписать нумерацию Гёделя ему. Так что утверждение for some grammar G, forall x in L(G). x in L(G) (например — для грамматики Z+ все термы языка L(Z+) = {Z, ZZ, ...} принадлежат этому языку, duh) это ни о чём и примитивная тавтология.

motto
()
Ответ на: комментарий от anonymous

Почему нет тегов lisp, scheme, dsl, vsl?

fxd

anonymous
()
Ответ на: комментарий от motto

так как язык это по определению счётное множество, его по определению счётного множества можно перечислить

точнее _пронумеровать_, т.е. найти соответствие каждого терма какому-то натуральному числу. Ну и что?

Формально — да, matched означает пересечение множества термов порождённых шаблоном(регулярным выражением) с заданным множеством.

emulek
()
Ответ на: комментарий от emulek

Ну и http://en.wikipedia.org/wiki/Regular_expression#Basic_concepts, а у тебя трюизм — | не относится к quantifier, но про него тоже можно сказать «для грамматики a|b все термы языка L(a|b) = {a, b} принадлежат этому языку», «a|b верно для всех строк из {a, b}».

И вообще

а вот «существование» это уже «+»

Z+ верно для всех

определись уже :) Существование чего задаём Z+? Чем отличается от Z*? (тут как бы существует пустая строка которой нет в Z+).

motto
()
Ответ на: комментарий от motto

а у тебя трюизм — | не относится к quantifier

угу. И что?

Существование чего задаём Z+?

ничего. Эта запись обеспечивает истинность некоторого условия. Его можно рассматривать как сокращённую запись равенства

(s=="z" || s=="zz" || s=="zzz" ||…)

Чем отличается от Z*?

(s=="" || s=="z" || s=="zz" || s=="zzz" ||…)

тут как бы существует пустая строка которой нет в Z+

всё дело в _числе_ букв Z. В первом случае это число 1,2,3,…

Во втором 0,1,2,3,…

emulek
()
Ответ на: комментарий от emulek

ничего

Что значит тогда

а вот «существование» это уже «+»

из твоего первого сообщения в треде?

motto
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.