185 похожих чатов

Можно выступить в стиле "ребёнок познаёт мир" по грамматикам? Я только

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

Всё дело в связывании имён: для раскрытия всего потенциала нерегулярной грамматики нужно какие-то термы привязывать к именам. А для типичного применения регулярных выражений этого делать не нужно.

При этом язык ANTLR4 даёт обе возможности, а в стандартной связке lex/yacc почему-то используются два принципиально разных языка.

15 ответов

7 просмотров

у вирта был признак: язык называется регулярным, если описывается ровно одним нонтерминалом

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

Хмм... а Вам не кажется, что дело всего лишь в том, что регулярные выражения (и грамматики) почти никогда не используют для parsing, в отличие от? И наоборот, CFG никогда (?) не используют для того, для чего используются регулярки?

Konstantin-Romanov Автор вопроса
TOV_MULTIMASSO
Потому что в регулярках нет нетерминалов, да. И на...

Меня этот вопрос очень занимал — почему в теории автоматов всё элегантно выстроено в иерархию, а в языках регулярок, кс-грамматик и программ всё дико различается?

Для пополнения "наивности" укажу ещё два очевидных факта: 1. при помощи BNF можно легко описывать и регулярные грамматики; 2. имена нужны чтобы описывать рекурсивные структуры (в виде плоского текста). В регулярных языках рекурсивных структур нет — имена не обязательны. Хотя на практике-то... 😏

Konstantin-Romanov Автор вопроса
Yaroslav Schekin
Хмм... а Вам не кажется, что дело всего лишь в том...

Они всё время используются для разбора.

Konstantin-Romanov Автор вопроса

А может быть всё дело в том, что нотацию для регулярных выражений придумали лет на восемь раньше, чем BNF?

Konstantin Romanov
Меня этот вопрос очень занимал — почему в теории а...

Тут скорее обычное различие теории и практики: в теории исследуются максимально "обрезанные" объекты, так что места для вариаций не остаётся. Но пользоваться такими объектами обычно весьма затруднительно (только доказывать про них что-то удобно). С точки зрения теории, особой разницы между Java, C#, Python и JavaScript нет, но на практике есть...

Konstantin Romanov
Они всё время используются для разбора.

Что, регулярные выражения? Именно для parsing? Где/как и, главное, почему? ;)

Дело не в связывание, а в том, что у них разный исторический контекст. Хомский, вроде даже не информатикой занимался

Alex
Дело не в связывание, а в том, что у них разный ис...

Ага, он лингвист, потом ещё пытался в философию и политику

Konstantin Romanov
Меня этот вопрос очень занимал — почему в теории а...

Потому что это разница между теоретиками и практиками.

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
12
У тебя в конфиге нигде нет deny all; или вообще любого deny?
Alexander Sherbakov
10
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Ребят, чет я уже не догоняю... Крч в коде на асм там происходит нечто вроде a+число (a+1, a+2 и т.д.). Но почему строка lea ecx, [edx+1] работает как a+1?? В edx берется адрес...
Alan 🔝 Бэброу
4
думаешь я не смогу также сделать? мне это просто не удобно
int 💳 𝙖𝙞𝙧 𝙗𝙞𝙜 𝙗𝙤𝙗 🔫 check bio / spam block / AFK / nohello.com / GMT+3
9
Карта сайта