Здравствуйте, mrTwister, Вы писали:
T>Например, потому что под .NET (C#) нет ни одной доступной вменяемой библиотеки. Во всяком случае, я не нашел. Все, что есть — УГ
Есть отличный ПЕГ для немерле.
T>А регэкспы всегда под рукой, работают мегабыстро, и все возможные грабли уже давно втоптаны в землю.
На RSDN одно время была DoS уязвимость из-за того что "мегабыстрые регексы у которых все грабли втоптаны в землю" начинали дико тормозить при раскраске одного из сообщений.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[3]: почему вы используете регулярные выражения?
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, mrTwister, Вы писали:
T>>Например, потому что под .NET (C#) нет ни одной доступной вменяемой библиотеки. Во всяком случае, я не нашел. Все, что есть — УГ WH>Есть отличный ПЕГ для немерле.
А у Абрамовича есть отличный футбольный клуб. Я за него тоже рад!
T>>А регэкспы всегда под рукой, работают мегабыстро, и все возможные грабли уже давно втоптаны в землю. WH> На RSDN одно время была DoS уязвимость из-за того что "мегабыстрые регексы у которых все грабли втоптаны в землю" начинали дико тормозить при раскраске одного из сообщений.
И что?
лэт ми спик фром май харт
Re[3]: почему вы используете регулярные выражения?
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, mrTwister, Вы писали:
T>>Например, потому что под .NET (C#) нет ни одной доступной вменяемой библиотеки. Во всяком случае, я не нашел. Все, что есть — УГ WH>Есть отличный ПЕГ для немерле.
И как его вызвать из C#?
T>>А регэкспы всегда под рукой, работают мегабыстро, и все возможные грабли уже давно втоптаны в землю. WH> На RSDN одно время была DoS уязвимость из-за того что "мегабыстрые регексы у которых все грабли втоптаны в землю" начинали дико тормозить при раскраске одного из сообщений.
Чёрт. Подробнее. Я хочу понять, _как_ можно так писать, чтобы раскрашивать сообщения регэкспами. А то моя фантазия ничего кроме пересушенной MJ не предлагает.
The God is real, unless declared integer.
Re[4]: почему вы используете регулярные выражения?
Здравствуйте, netch80, Вы писали:
WH>>Есть отличный ПЕГ для немерле. N>И как его вызвать из C#?
Также как и из любого другого .НЕТ языка.
Собрал ДЛЛку на немерле и пользуйся сколько угодно.
А если учесть что немерле научился компилировать C#...
N>Чёрт. Подробнее. Я хочу понять, _как_ можно так писать, чтобы раскрашивать сообщения регэкспами. А то моя фантазия ничего кроме пересушенной MJ не предлагает.
По сути проблемы сказать нечего?
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[4]: почему вы используете регулярные выражения?
Здравствуйте, mrTwister, Вы писали:
T>А у Абрамовича есть отличный футбольный клуб. Я за него тоже рад!
Завидно да?
T>И что?
И то что ты врешь или как минимум заблуждаешься на счет скорости и отсутствия граблей.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[5]: почему вы используете регулярные выражения?
Здравствуйте, WolfHound, Вы писали:
N>>Чёрт. Подробнее. Я хочу понять, _как_ можно так писать, чтобы раскрашивать сообщения регэкспами. А то моя фантазия ничего кроме пересушенной MJ не предлагает. WH>По сути проблемы сказать нечего?
По сути я уже сказал — если применять инструмент не по назначению, можно много интересного получить. Но бесполезного.
The God is real, unless declared integer.
Re[6]: почему вы используете регулярные выражения?
Здравствуйте, netch80, Вы писали:
N>По сути я уже сказал — если применять инструмент не по назначению, можно много интересного получить. Но бесполезного.
Что значит не по назначению?
А что за назначения у регексов как не текст разбирать?
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[5]: почему вы используете регулярные выражения?
Здравствуйте, WolfHound, Вы писали:
T>>И что? WH>И то что ты врешь или как минимум заблуждаешься на счет скорости.
Ну это общеизвестный факт, что фигню можно написать, используя любую технологию.
WH>отсутствия граблей.
Я ничего не говорил про отсутствие граблей. Я говорил, что на них уже наступили очень много раз и это преимущество.
лэт ми спик фром май харт
Re[6]: почему вы используете регулярные выражения?
Здравствуйте, mrTwister, Вы писали:
T>Ну это общеизвестный факт, что фигню можно написать, используя любую технологию.
Факт в том что на регексах не фигню написать нельзя.
Ну разве что что-то очень простое и маленькое.
T>Я ничего не говорил про отсутствие граблей. Я говорил, что на них уже наступили очень много раз и это преимущество.
Грабли нужно не документировать, а исправлять.
А у регексов грабли бай дизайн и не лечаться.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[7]: почему вы используете регулярные выражения?
Здравствуйте, WolfHound, Вы писали:
T>>Ну это общеизвестный факт, что фигню можно написать, используя любую технологию. WH>Факт в том что на регексах не фигню написать нельзя. WH>Ну разве что что-то очень простое и маленькое.
Это ты загнул.
T>>Я ничего не говорил про отсутствие граблей. Я говорил, что на них уже наступили очень много раз и это преимущество. WH>Грабли нужно не документировать, а исправлять. WH>А у регексов грабли бай дизайн и не лечаться.
Документированные неисправленные грабли лучше, чем недокументированные неисправленные.
лэт ми спик фром май харт
Re[8]: почему вы используете регулярные выражения?
Здравствуйте, mrTwister, Вы писали:
WH>>Ну разве что что-то очень простое и маленькое. T>Это ты загнул.
Скорость работы не предсказуемая. Читаемость нулевая.
T>Документированные неисправленные грабли лучше, чем недокументированные неисправленные.
1)С чего ты взял что все грабли регексов документированы?
2)Грабли регексов принципиально не исправимы. Что ты не делай но они всеравно будут.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[9]: почему вы используете регулярные выражения?
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, mrTwister, Вы писали:
WH>>>Ну разве что что-то очень простое и маленькое. T>>Это ты загнул. WH>Скорость работы не предсказуемая. Читаемость нулевая.
А чем предсказуемость скорости работы PEG лучше, чем у регэкспов? У последних хотя бы есть солидный опыт применения.
T>>Документированные неисправленные грабли лучше, чем недокументированные неисправленные. WH>1)С чего ты взял что все грабли регексов документированы?
С того, что им 100 лет в обед.
WH>2)Грабли регексов принципиально не исправимы. Что ты не делай но они всеравно будут.
Ну и фиг с ними. Задачи, на которых эти грабли играют существенную роль встречаются не так часто и есть старые проверенные специализированные утилиты для их решения.
лэт ми спик фром май харт
Re[5]: почему вы используете регулярные выражения?
Здравствуйте, mrTwister, Вы писали:
T>А чем предсказуемость скорости работы PEG лучше, чем у регэкспов? У последних хотя бы есть солидный опыт применения.
Хотябы тем что откаты ограничены.
T>С того, что им 100 лет в обед.
T>Ну и фиг с ними. Задачи, на которых эти грабли играют существенную роль встречаются не так часто и есть старые проверенные специализированные утилиты для их решения.
И как же ты собираешься этими утилитами чинить фундаментально не устранимые тормоза?
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[7]: почему вы используете регулярные выражения?
Здравствуйте, WolfHound, Вы писали:
WH>Пишем парсер на немерле.
Получаем по морде от манагера, ибо "это не в нашем командном духе, другие не смогут поддерживать этот код" и прочее. Кроме того с тем же успехом генериться код на сишарпе по пеговскому файлу. С регекспами удобно то, что они в несколько строчек используются без бубна и подпрыгивания.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Re[8]: почему вы используете регулярные выражения?
Здравствуйте, olegkr, Вы писали:
WH>>Пишем парсер на немерле. O>Получаем по морде от манагера, ибо "это не в нашем командном духе, другие не смогут поддерживать этот код" и прочее.
Меня просто убивает это аргумент.
Он означает что манагер держит разработчиков за тупых обезьян.
Которые простейший код понять не могут.
Тебе может и всеравно но я не собираюсь заниматься monkey driven development'ом.
O>Кроме того с тем же успехом генериться код на сишарпе по пеговскому файлу.
Далеко не с темже.
1)Нет интеграции в студию.
2)Хреновые сообщения об ошибках.
O>С регекспами удобно то, что они в несколько строчек используются без бубна и подпрыгивания.
И получаем тормоза во всех случаях кроме совсем тривиальных.
А если вдруг в грамматике появляется рекурсия то регексы просто сразу идут в печку.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[9]: почему вы используете регулярные выражения?
Здравствуйте, WolfHound, Вы писали:
WH>Тебе может и всеравно но я не собираюсь заниматься monkey driven development'ом.
Поздравляю!
WH>1)Нет интеграции в студию. WH>2)Хреновые сообщения об ошибках.
По сравнению с тем, что код написан на немерле — это мелочи.
WH>И получаем тормоза во всех случаях кроме совсем тривиальных. WH>А если вдруг в грамматике появляется рекурсия то регексы просто сразу идут в печку.
Когда это актуально можно и по пегу сишарп сгенерить. Обычно неактуально, вот пег и не используется.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Re[9]: почему вы используете регулярные выражения?
Здравствуйте, DarkGray, Вы писали:
WH>>2)Хреновые сообщения об ошибках. DG>почему?
По тому что текстовый препроцессор не может давать хорошие сообщения об ошибках.
Просто по тому что не понямает того что написано в обработчиках.
В случае с Nemerle.Peg у меня есть полная информация о типах и могу проверить сигнатуру побработчика и выдать вменяемое сообщение об ошибке.
Вот например я поменял у одного из обработчиков сигнатуру.
Поставил string вместо int:
CalcParser.n(130,41):Error: The parameter "se" has wrong type string (need type int).
CalcParser.n(105,5):Error: You need define method-handler with signature: parenthesesExpr(_ : Nemerle.Peg.NToken, _ : int, _ : Nemerle.Peg.NToken) : int
Что тебе на это текстовый препроцессор скажет?
Правильно ничего.
Но потом тебе придется смотреть на сгенерированный код и пытаться понять что там не так.
А в моем случае прямо в IDE во время редактирования ошибки подсвечиваются.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн