The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Новая версия Bison 2.7, системы для написания синтаксических..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Новая версия Bison 2.7, системы для написания синтаксических..."  +/
Сообщение от opennews (??) on 13-Дек-12, 10:04 
Выпущена (http://permalink.gmane.org/gmane.org.fsf.announce/1874) новая версия пакета для написания синтаксических (yacc (http://ru.wikipedia.org/wiki/Yacc)) анализаторов - Bison 2.7 (http://www.gnu.org/software/bison/bison.html). На основании заданных правил грамматики в специальной нотации, Bison позволяет сгенерировать готовый парсер на языке Си.


В новой версии:


-  Расширены средства диагностики;
-  Изменён формат сообщений об ошибках;
-  Добавлена экспериментальная поддержка обработки исключений;
-  Улучшено графическое представление состояния, выводимого с использованием DOT и XSLT;
-  Добавлена новая %define-переменная api.location.type;
-  С опции "%language" снят гриф экспериментальной возможности.

URL: http://permalink.gmane.org/gmane.org.fsf.announce/1874
Новость: https://www.opennet.ru/opennews/art.shtml?num=35585

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Новая версия Bison 2.7, системы для написания синтаксических..."  –2 +/
Сообщение от Аноним (??) on 13-Дек-12, 10:04 
> Добавлена экспериментальная поддержка обработки исключений

Да неужели! Дожили. В XXI веке-то, наифундаментальнейшая утилита научилась генерить код с поддержкой исключений. Когда я в своё время разбирался с flex/bison и увидел код который они генерят... с глобальными переменными, malloc без проверки ошибок и т.д., не говоря уже о exception-safety, сказать что я был в шоке - ничего не сказать. На них просто нельзя написать парсер, который на ошибку внутри парсинга будет делать что-то иное, нежели завершение всего процесса, потому уж утечки памяти там будут гарантированно. И ЕМНИП нельзя написать парсер, завернуть его в класс, и использовать несколько экземпляров. Из-за глобальных переменных. П**ц их 80-х, по-другому и не скажешь.

К слову, вменяемой альтернативы я так и не нашёл и всегда писал парсеры руками. А нужно всего-лишь интегрированное (lexer+parser) решение, генерящее вменяемый код. В идеале, с поддержкой нескольких языков. Ближе всего к этому ragel, но парсера там, к сожалению, нет. Либо как лексер, либо для регулярок.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Новая версия Bison 2.7, системы для написания синтаксических..."  +3 +/
Сообщение от Andrey Mitrofanov on 13-Дек-12, 10:26 
> вменяемой альтернативы я так и не нашёл и всегда писал парсеры руками.
> А нужно всего-лишь

Авторы бизона тоже не нашли! Может вам объединить усилия?

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Новая версия Bison 2.7, системы для написания синтаксических..."  +/
Сообщение от Aesthetus Animus (ok) on 13-Дек-12, 10:33 
> А нужно всего-лишь интегрированное (lexer+parser) решение, генерящее вменяемый код. В идеале, с поддержкой нескольких языков

Попробуйте antlr.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

5. "Новая версия Bison 2.7, системы для написания синтаксических..."  +1 +/
Сообщение от Аноним (??) on 13-Дек-12, 10:51 
Совершенно не хочется зависеть только ради генератора парсеров от жавы (как и mono, это к совету nemerle.peg). Возможно после этой версии всё-таки можно будет юзать bison, но вообще когда я искал нормальный парсер, наткнулся на страницу где их было чуть ли не полсотни - ничего вменяемого я там тогда не нашёл, но меня не оставляет чувство что я мог в этом разнообразии что-то пропустить. Кажись, lemon выглядел вменяемо, но он емнип не был интегрированным.
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

7. "Новая версия Bison 2.7, системы для написания синтаксических..."  +/
Сообщение от Аноним (??) on 13-Дек-12, 11:17 
>Совершенно не хочется зависеть только ради генератора парсеров от жавы

Аноним, ты не понимаешь ее силы, переходи на темную сторону.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

9. "Новая версия Bison 2.7, системы для написания синтаксических..."  +/
Сообщение от Аноним (??) on 13-Дек-12, 11:19 
> Аноним, ты не понимаешь ее силы, переходи на темную сторону.

Спасибо, я привык использовать железо под нужды решаемой задачи, а не языка.

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

11. "Новая версия Bison 2.7, системы для написания синтаксических..."  +/
Сообщение от Аноним (??) on 13-Дек-12, 12:44 
Да, когда в каждом апдейте чинят по хренадцать уязвимостей - это сила...
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

18. "Новая версия Bison 2.7, системы для написания синтаксических..."  –1 +/
Сообщение от Аноним (??) on 13-Дек-12, 19:54 
Это проблемы пользователей и бородатых админов обновлятся, а не разработчиков.
Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

6. "Новая версия Bison 2.7, системы для написания синтаксических..."  +/
Сообщение от BSA on 13-Дек-12, 11:12 
Попробуй boost::spirit
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

8. "Новая версия Bison 2.7, системы для написания синтаксических..."  +/
Сообщение от Аноним (??) on 13-Дек-12, 11:18 
Пробовал, это леденящий душу п**ц. Ещё раз: нужна поддержка нескольких языков и отсутствие привязки к кускам гoвна (java, mono, boost).
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

15. "Новая версия Bison 2.7, системы для написания синтаксических..."  +/
Сообщение от dq0s4y71 (??) on 13-Дек-12, 13:35 
> нужна поддержка нескольких языков

Это как?

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

12. "Новая версия Bison 2.7, системы для написания синтаксических..."  +/
Сообщение от Аноним (??) on 13-Дек-12, 12:45 
> Попробуй boost::spirit

Boost - монстрятина.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

16. "Новая версия Bison 2.7, системы для написания синтаксических..."  +/
Сообщение от Crazy Alex (ok) on 13-Дек-12, 15:31 
Буст - штука хорошая, но Spirit - странный монстр, конечно
Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

10. "Новая версия Bison 2.7, системы для написания синтаксических..."  +9 +/
Сообщение от dq0s4y71 (??) on 13-Дек-12, 12:20 
> Да неужели! Дожили. В XXI веке-то, наифундаментальнейшая утилита научилась генерить код с поддержкой исключений.

Может вы не в курсе, но bison генерит исходник на С, а не на С++, если вы видите между ними разницу...

> Когда я в своё время разбирался с flex/bison и увидел код который они генерят... с глобальными переменными

Сгенерите реентерабильный (pure) парсер и глобальные переменные исчезнут, раз уж вы их так не любите. А вообще, они там по делу. Во-первых, они необходимы для взаимодействия с flex. Во-вторых, вы через них можете получить кое-какую информацию после вызова yyparse(), например, общее количество ошибок разбора и др. Ну и в третьих, для нереентнрабильных парсеров их глобальность никакого значения не имеет - они используются только во время вызова функции yyparse() и никогда более.

> malloc без проверки ошибок

Это в какой версии? Вот я сейчас смотрю парсер от 1.25, malloc() используется 1 раз:

      msg = (char *) malloc(size + 15);
      if (msg != 0)
        {

Теперь смотрю 2.4.2, там по умолчанию malloc() вообще не используется.

> На них просто нельзя написать парсер, который на ошибку внутри парсинга будет делать что-то иное, нежели завершение всего процесса

Чушь собачья. Прочитайте раздел Error Recovery в мануале и откройте для себя ключевое слово error.

> потому уж утечки памяти там будут гарантированно.

Там все стэки разбора - локальные для yyparse(), а для контроля их переполнения можно определить пользовательскую функцию yyoverflow(). Так что утечки по вине bison принципиально исключены.

> И ЕМНИП нельзя написать парсер, завернуть его в класс, и использовать несколько экземпляров.

Курите Pure Parser и C++ Parser Interface из манов.

> К слову, вменяемой альтернативы я так и не нашёл и всегда писал парсеры руками.

Сочувствую :) Чего только люди не делают, лишь бы не разбираться с хрестоматийными программами...

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

17. "Новая версия Bison 2.7, системы для написания синтаксических..."  +/
Сообщение от Аноним (??) on 13-Дек-12, 18:28 
> Может вы не в курсе, но bison генерит исходник на С, а не на С++, если вы видите между ними разницу...

А вы посмотрите для разнообразия в share/bison/lalr1.cc. Алсо, может вы не в курсе, но нормальный C можно обернуть в C++. Ключевое слово - нормальный.
И может вы слепой, но в новости речь идёт об исключениях, что уже далеко не C.

> Сгенерите реентерабильный (pure) парсер

Не надо всех по себе равнять, я не дебил. Разумеется именно pure парсер я и генерил.

В остальном я с вами спорить не могу, потому что щупал это гoвно на палочке слишком давно. Но факт - одно исключение и все ваши маллоки, хоть и проверками, хоть без - останутся без free.

> Чего только люди не делают, лишь бы не разбираться с хрестоматийными программами...

Высшая форма ламерства - оценивать программы по "хрестоматийности". GNU насквозь хрестоматиен, взять хотя бы autocrap. И более понятный синоним хрестоматийности тут - заскорузлое кривое устаревшее гoвнецо. Потому и дохнет, кстати.

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

19. "Новая версия Bison 2.7, системы для написания синтаксических..."  –1 +/
Сообщение от dq0s4y71 (??) on 14-Дек-12, 15:08 
> А вы посмотрите для разнообразия в share/bison/lalr1.cc.

Да, можно заставить Бизон генерить только таблицы, а парсер вообще написать самому. Хоть с исключениями, хоть с чатурангой и одалисками. Но вы даже этим не воспользовались, а предпочли изобретать свой собственный велосипед. Вот это и есть высшая форма ламерства.

> Алсо, может вы не в курсе, но нормальный C можно обернуть в C++.

Можно и гланды через задний проход удалять. Но не нужно.

> Ключевое слово - нормальный.

Вы, похоже, сказали новое слово в компьютерной науке. "Нормальный С - это такой С, который можно обернуть в C++" :D

> В остальном я с вами спорить не могу, потому что щупал это гoвно на палочке слишком давно.

Вы со мной спорить не можете не потому, что это было давно, а потому что вы так и не дочитали мануал.

> Но факт - одно исключение и все ваши маллоки, хоть и проверками, хоть без - останутся без free.

Может "факт" наконец-то подтвердите каким-нибудь пруфом?

> И более понятный синоним хрестоматийности тут - заскорузлое кривое устаревшее гoвнецо.

Я с вас смеюсь. "Устаревшее" - это колесо, которым люди пользуются 5 тысяч лет. Вы суть колеса понять так и не смогли, поэтому изобрели своё собственное, квадратное :)

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

20. "Новая версия Bison 2.7, системы для написания синтаксических..."  +/
Сообщение от Аноним (??) on 14-Дек-12, 20:41 
Большая часть поста - баттхерт от того что вас ткнули носом в вашу некомпетентность, не вижу смысла это комментировать.

> Может "факт" наконец-то подтвердите каким-нибудь пруфом?

Факт вообще-то изначально подтвержден новостью.

The parse function now catches exceptions, uses the %destructors to release memory (the lookahead symbol and the symbols pushed on the stack) before re-throwing the exception.

> "Устаревшее" - это колесо, которым люди пользуются 5 тысяч лет. Вы суть колеса понять так и не смогли, поэтому изобрели своё собственное, квадратное :)

Вообще-то вместо того чтобы пользоваться каменным колесом пятитысячелетней давности, люди перешли на более адекватные колеса. Сначала деревянные, потом металлические, с покрышкой. А в случае bison колесо не только тысячелетней давности, а еще и квадратное.

Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

21. "Новая версия Bison 2.7, системы для написания синтаксических..."  –1 +/
Сообщение от dq0s4y71 (??) on 15-Дек-12, 21:09 
> Большая часть поста - баттхерт от того что вас ткнули носом в
> вашу некомпетентность, не вижу смысла это комментировать.

Бгг. Оналитег, неумеющий читать маны, обвиняет меня в некомпетентности.

>> Может "факт" наконец-то подтвердите каким-нибудь пруфом?
> Факт вообще-то изначально подтвержден новостью.
> The parse function now catches exceptions, uses the чstructors to release memory
> (the lookahead symbol and the symbols pushed on the stack) before
> re-throwing the exception.

И как из этого следует, что раньше малокки оставались без free? Примеры кода, пожалуйста.

>> "Устаревшее" - это колесо, которым люди пользуются 5 тысяч лет. Вы суть колеса понять так и не смогли, поэтому изобрели своё собственное, квадратное :)
> Вообще-то вместо того чтобы пользоваться каменным колесом пятитысячелетней давности,
> люди перешли на более адекватные колеса. Сначала деревянные, потом металлические, с
> покрышкой. А в случае bison колесо не только тысячелетней давности, а
> еще и квадратное.

Вы - неосилятор, продолжаете в этом упорствовать. Всего наилучшего.

Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

22. "Новая версия Bison 2.7, системы для написания..."  +/
Сообщение от arisu (ok) on 20-Дек-12, 20:47 
> но нормальный C можно обернуть в C++. Ключевое слово —
> нормальный.


char *c = malloc(64);

это, чтобы ты знал, *нормальный* си. а то, что цпп тут кричит о типах — это специфика цпп, который не полностью с си совместим. и костыль вида (char *)malloc(64) — это и есть костыль, который для си — не нужен, а для цпп — ломает и без того дурацкую проверку типов.

расскажи мне ещё про «нормальный C», пожалуйста.

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

23. "Новая версия Bison 2.7, системы для написания..."  +/
Сообщение от arisu (ok) on 20-Дек-12, 20:49 
> Но факт - одно исключение и
> все ваши маллоки, хоть и проверками, хоть без - останутся без
> free.

что совершеннейшим образом не важно, потому что для парзера всё равно удобней применять zone allocator. и выкидывать потом всю зону целиком.

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

4. "Новая версия Bison 2.7, системы для написания синтаксических..."  –1 +/
Сообщение от Аноним (??) on 13-Дек-12, 10:39 
nemerle peg?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

24. "Новая версия Bison 2.7, системы для написания..."  +/
Сообщение от arisu (ok) on 20-Дек-12, 20:50 
> nemerle peg?

мона? нет, благодарствуем, уносите.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру