Re[12]: [Голосование] Понимаете ли вы формальные грамматики?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.06.10 15:38
Оценка:
Здравствуйте, Кэр, Вы писали:

Кэр>Хм, очень интересно. А зачем тогда использовать PEG вместо регулярных выражений?


PEG разбирает грамматики с мощностью примерно LL/LR(*), а не только регулярные. И запись в форме PEG неизмеримо более читаема, чем птичья тропка регексов.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476 on Windows 7 6.1.7600.0>>
AVK Blog
Re[16]: [Голосование] Понимаете ли вы формальные грамматики?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.06.10 15:38
Оценка: +1
Здравствуйте, Кэр, Вы писали:

Кэр>У нас во всем продукте регекспы встречаются только в одном месте — где нужно SQL скрипты попилить по разделителю "GO". Все!


По разделителю GO в общем случае регексами не попилишь, а в частном, когда GO всегда начинается с начала строки и строковые константы с GO в начале строки отсутствуют, регексы тут явно из пушки по воробьям.

Кэр>При этом я не утверждаю, что если мне они не пригождались — то они никому не нужны. Но я прошу привести список задач (за исключением компилятора Немерле), где это реально необходимо.


http://www.google.ru/search?sourceid=chrome&amp;ie=UTF-8&amp;q=site:rsdn.ru/forum/dotnet+%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE%D0%B5+regex
... << RSDN@Home 1.2.0 alpha 4 rev. 1476 on Windows 7 6.1.7600.0>>
AVK Blog
Re[17]: [Голосование] Понимаете ли вы формальные грамматики?
От: Кэр  
Дата: 27.06.10 17:18
Оценка: :)
Здравствуйте, AndrewVK, Вы писали:

Кэр>>У нас во всем продукте регекспы встречаются только в одном месте — где нужно SQL скрипты попилить по разделителю "GO". Все!


AVK>По разделителю GO в общем случае регексами не попилишь, а в частном, когда GO всегда начинается с начала строки и строковые константы с GO в начале строки отсутствуют, регексы тут явно из пушки по воробьям.


Он покрывает большинство случаев (накладок еще не было ни разу за годы использования) и предназначен для разрезания update скриптов в рантайме, которые пишет наша команда. Каждый update проверяется тест-командой. Большего тут и не надо. Регекспы тут применены как раз по делу.

Кэр>>При этом я не утверждаю, что если мне они не пригождались — то они никому не нужны. Но я прошу привести список задач (за исключением компилятора Немерле), где это реально необходимо.


AVK>http://www.google.ru/search?sourceid=chrome&amp;ie=UTF-8&amp;q=site:rsdn.ru/forum/dotnet+%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE%D0%B5+regex


Для задач регулярных выражений — уже есть регулярные выражения, которые обладают рядом преимуществ плана:
1. Про них знают все. Их никто не помнит из головы — каждый раз инженер открывает документацию и читает, что означает это чириканье (сильно сомневаюсь, что PEG реально может это чириканье улучшить). Но их знают все. Есть даже специальные языки вроде Perl, которые молятся на них.

2. Есть целая серия тулов для поддержки регулярных выражений. Когда у меня под рукой есть RegexBuddy — мне пофиг, как это чириканье записано. Я беру и получаю визуальную структуру регулярного выражения с картинками. Кстати, если ReSharper начнет это делать прямо в Visual Studio — будет очень круто.

Уже два этих аргумента ставят под большое сомнение, а стоит ли вообще заморачиваться с этими PEG. Если люди, которые их продвигают не приведут хороший туториал, а почему PEG нужно использовать вместо regex и не обеспечат поддержку утилитами, вроде той же визуализации — воз скорее всего никуда не уедет.

Если только там не скрыт мега-гениальный концепт, который я тут просто еще не увидел. На одной только возможности парсить контекстно-зависимые грамматики не уедешь. Не пригождается это умение чаще чем раз в 10 лет для большинства инженеров.
Re[18]: [Голосование] Понимаете ли вы формальные грамматики?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.06.10 18:40
Оценка:
Здравствуйте, Кэр, Вы писали:

Кэр>Он покрывает большинство случаев (накладок еще не было ни разу за годы использования)


Для внутренней тулзы приемлемо, дя наружной нет.

Кэр>Для задач регулярных выражений — уже есть регулярные выражения, которые обладают рядом преимуществ


И рядом недостатков. Очень серьезных недостатков.

Кэр>1. Про них знают все.


Далеко не все.

Кэр>(сильно сомневаюсь, что PEG реально может это чириканье улучшить)


Очень зря ты сомневаешься.

Кэр>Если только там не скрыт мега-гениальный концепт, который я тут просто еще не увидел. На одной только возможности парсить контекстно-зависимые грамматики не уедешь. Не пригождается это умение чаще чем раз в 10 лет для большинства инженеров.


Зато контекстно свободные встречаются сплошь и рядом.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476 on Windows 7 6.1.7600.0>>
AVK Blog
Re[14]: [Голосование] Понимаете ли вы формальные грамматики?
От: night beast СССР  
Дата: 28.06.10 04:14
Оценка:
Здравствуйте, Кэр, Вы писали:

WH>>Попробуй разобрать регулярными выражениями хотябы арифметические выражение со скобками.


Кэр>Я Владу уже говорил — приведите список задач, где это важно. Разбирать арифметическое выражение со скобками — это лабороторная работа в универе, максимум на неделю, чтобы концепт показать. PEG я никогда не использовал — глянул в Вики, ну можно создать LL-parser, можно LR-parser, ну и ладно. Мало ли их что ли. Применяются крайне редко. Ради чего сыр-бор крайне неясно — где там критическое улучшение по сравнению с регулярными выражениями?


сыр-бор ради возможности использовать в языке ДСЛ.
ну а улучшение в том, что PEG позволяет описывать более широких класс грамматик чем регэкспы.
Re[6]: [Голосование] Понимаете ли вы формальные грамматики?
От: LaPerouse  
Дата: 28.06.10 07:56
Оценка:
Здравствуйте, Тролль зеленый и толстый, Вы писали:

LP>>А он будет выглядеть точно также, как пример выше, просто вместо узкоспециализированного алгоритма разбора будет работать куда более общий прологовский механизм унификации с bactracking. Например, в прологе есть предикат Add, который позволяет практически один в один переписать твой пример:


LP>>
LP>>append(["foreach", space, "(", expr, space, "in", space, expr, ")", space, expr], string_to_parse)
LP>>


LP>>Так что дергаешь из макроса этот предикат, и все.


ТЗИ>А в чем профит?


В том, что парсинг является частным случаем унификации. А унификацию можно использовать очень широко.
Социализм — это власть трудящихся и централизованная плановая экономика.
Re[15]: [Голосование] Понимаете ли вы формальные грамматики?
От: dotneter  
Дата: 28.06.10 14:50
Оценка:
Здравствуйте, gandjustas, Вы писали:
Кэр>>Применяются крайне редко.
G>Уверен?
А как часто и какие выражения вам приходиться разбирать?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Talk is cheap. Show me the code.
Re[15]: [Голосование] Понимаете ли вы формальные грамматики?
От: dotneter  
Дата: 28.06.10 14:54
Оценка:
Здравствуйте, night beast, Вы писали:

NB>сыр-бор ради возможности использовать в языке ДСЛ.

NB>ну а улучшение в том, что PEG позволяет описывать более широких класс грамматик чем регэкспы.
Насколько часто в проектах нужен настолько сложный dsl, думаю большинство случаем покрывается банальным флуент интерфейсом.
Talk is cheap. Show me the code.
Re[16]: [Голосование] Понимаете ли вы формальные грамматики?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 28.06.10 16:37
Оценка: +1
Здравствуйте, dotneter, Вы писали:

D>Здравствуйте, gandjustas, Вы писали:

Кэр>>>Применяются крайне редко.
G>>Уверен?
D>А как часто и какие выражения вам приходиться разбирать?

Я пару раз пользовался dsl для различных задач, относительно недавно столкнулся с парсингом слабосруктурированных данных для укладывания в реляционную БД.

Такие задачи приходится решать нечасто, но думаю что при появлении инструмента для DSL они станут более востребованными.
Re[16]: [Голосование] Понимаете ли вы формальные грамматики?
От: night beast СССР  
Дата: 29.06.10 04:04
Оценка:
Здравствуйте, dotneter, Вы писали:

NB>>сыр-бор ради возможности использовать в языке ДСЛ.

NB>>ну а улучшение в том, что PEG позволяет описывать более широких класс грамматик чем регэкспы.
D>Насколько часто в проектах нужен настолько сложный dsl, думаю большинство случаем покрывается банальным флуент интерфейсом.

насколько часто программе нужно получать данные извне?
Re[11]: [Голосование] Понимаете ли вы формальные грамматики?
От: Klapaucius  
Дата: 29.06.10 06:29
Оценка: +2
Здравствуйте, Тролль зеленый и толстый, Вы писали:

ТЗИ>И чего тут сложного-то?


Сложно то, что язык очень бедный, без развитых средств абстракции и декомпозиции. Так что это, по сути, такой же язык программирования, как и Брейнфак.
... << RSDN@Home 1.2.0 alpha 4 rev. 1446>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[17]: [Голосование] Понимаете ли вы формальные грамматики?
От: dotneter  
Дата: 29.06.10 09:37
Оценка:
Здравствуйте, night beast, Вы писали:

NB>насколько часто программе нужно получать данные извне?

Практически всегда, только как это связано с dsl?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Talk is cheap. Show me the code.
Re[18]: [Голосование] Понимаете ли вы формальные грамматики?
От: night beast СССР  
Дата: 29.06.10 10:27
Оценка:
Здравствуйте, dotneter, Вы писали:

NB>>насколько часто программе нужно получать данные извне?

D>Практически всегда, только как это связано с dsl?

как корректность полученных данных проверяете?
Re[19]: [Голосование] Понимаете ли вы формальные грамматики?
От: dotneter  
Дата: 29.06.10 11:03
Оценка:
Здравствуйте, night beast, Вы писали:

NB>Здравствуйте, dotneter, Вы писали:


NB>>>насколько часто программе нужно получать данные извне?

D>>Практически всегда, только как это связано с dsl?

NB>как корректность полученных данных проверяете?

Валидацией?
Давайте от вакуума перейдем к чему то конкретному, что за данные вы предлагаете получать и как дслем их проверять.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Talk is cheap. Show me the code.
Re[20]: [Голосование] Понимаете ли вы формальные грамматики?
От: night beast СССР  
Дата: 29.06.10 11:28
Оценка:
Здравствуйте, dotneter, Вы писали:

NB>>>>насколько часто программе нужно получать данные извне?

D>>>Практически всегда, только как это связано с dsl?

NB>>как корректность полученных данных проверяете?

D>Валидацией?
D>Давайте от вакуума перейдем к чему то конкретному, что за данные вы предлагаете получать и как дслем их проверять.

ну те же формулы в экселе.
или конфиги.
натравливаешь парсер и получаешь нужный результат или ошибку если данные не корректны.
Re[21]: [Голосование] Понимаете ли вы формальные грамматики?
От: dotneter  
Дата: 29.06.10 12:08
Оценка:
Здравствуйте, night beast, Вы писали:

NB>ну те же формулы в экселе.

И как часто нужно изобретать свой движок для формул?
NB>или конфиги.
Xml, yaml, json или любой дт язык, или вообще не вводить лишние сущности а скомпилировать
и подргузить кусок кода основного языка. Насколько необходимо придумывать еще что то?
NB>натравливаешь парсер и получаешь нужный результат или ошибку если данные не корректны.
Я представляю что такое внешний дсл, но я сомниваюсь что он нужен хотя бы 1% проектов которые старнуют каждый день.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Talk is cheap. Show me the code.
Re[22]: [Голосование] Понимаете ли вы формальные грамматики?
От: night beast СССР  
Дата: 29.06.10 12:16
Оценка:
Здравствуйте, dotneter, Вы писали:

NB>>ну те же формулы в экселе.

D>И как часто нужно изобретать свой движок для формул?
NB>>или конфиги.
D>Xml, yaml, json или любой дт язык,

которые тоже являются дсл.

D>или вообще не вводить лишние сущности а скомпилировать

D>и подргузить кусок кода основного языка. Насколько необходимо придумывать еще что то?

ок. зайдем с другой стороны.
ты регэкспы используешь? зачем?
Re[23]: [Голосование] Понимаете ли вы формальные грамматики?
От: dotneter  
Дата: 29.06.10 12:31
Оценка:
Здравствуйте, night beast, Вы писали:

NB>которые тоже являются дсл.

И которые придумываются один раз в десять лет.

NB>ты регэкспы используешь? зачем?

Потому что ими задача решается проще?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Talk is cheap. Show me the code.
Re[24]: [Голосование] Понимаете ли вы формальные грамматики?
От: night beast СССР  
Дата: 29.06.10 12:39
Оценка:
Здравствуйте, dotneter, Вы писали:

NB>>ты регэкспы используешь? зачем?

D>Потому что ими задача решается проще?

какие задачи?
Re[25]: [Голосование] Понимаете ли вы формальные грамматики?
От: dotneter  
Дата: 29.06.10 12:59
Оценка:
Здравствуйте, night beast, Вы писали:

NB>Здравствуйте, dotneter, Вы писали:


NB>>>ты регэкспы используешь? зачем?

D>>Потому что ими задача решается проще?

NB>какие задачи?

Например валидация почты.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Talk is cheap. Show me the code.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.