Здравствуйте, WolfHound, Вы писали:
WH>Нельзя. До сих пор все генераторы парсеров создавались для того чтобы статью в журнал написать. И к реальной работе пригодны небыли.
Вечно у тебя крайности. В реальности тот же АНТЛР — это волне себе качественный продукт. У нас над ним есть только преимущество в расширяемости и в том, что Нитра это не только парсер, а решение предоставляющее и мезанизмы типизации, бэкэнда и т.п.
WH>По крайней мере я до сих пор не слышал ни об оlном генераторе парсеров который создавался бы как инструмент для создания промышленных решений не уступающих рукописным парсерам.
http://www.antlr.org/about.html
ANTLR is a powerful parser generator that you can use to read, process, execute, or translate structured text or binary files. It’s widely used in academia and industry to build all sorts of languages, tools, and frameworks. Twitter search uses ANTLR for query parsing, with over 2 billion queries a day. The languages for Hive and Pig, the data warehouse and analysis systems for Hadoop, both use ANTLR. Lex Machina uses ANTLR for information extraction from legal texts. Oracle uses ANTLR within SQL Developer IDE and their migration tools. NetBeans IDE parses C++ with ANTLR. The HQL language in the Hibernate object-relational mapping framework is built with ANTLR.
Aside from these big-name, high-profile projects, you can build all sorts of useful tools like configuration file readers, legacy code converters, wiki markup renderers, and JSON parsers. I’ve built little tools for object-relational database mappings, describing 3D visualizations, injecting profiling code into Java source code, and have even done a simple DNA pattern matching example for a lecture.
WH>>>Разница в том, что автор ANTLR4 профессор. Ему нужны статьи, а мне от них ни жарко, ни холодно.
F>> Но ими можно доказать людям что впша придумка не фикция.
WH>Нельзя.
Доказать может и нельзя, но вот доверия это бы добавило. Тем более, что скрывать нам особо нечего. Все наши алгоритмы — это компиляция из имеющихя. Разве что с восстановлением получилось что-то уже совсем уникальное. Но и оно из готовых блоков вроде Эрли.
WH>Алгоритм нитры это промышленное, а не академическое решение. И как следствие это не красивый алгоритм, а жуткий монстр. Примерно, как IntroSort (сборная солянка из нескольких сортировок) только намного сложнее.
Да ладно! Когда ты будешь описывать тебе не придется показывать этот код. Почитай статьи того же профеесора создавшего АНТЛР. Там ведь кода нет почти. Разве что псевдокод.
WH>Я устану его описывать.
Описать общие идеи было бы не плохо все же. Тут я с fddima согласен.
WH>Тем более что у меня есть желание неслабо его переделать.
Что-то оно уж больно долго зреет. Да и переделывать там надо не алгоритмы, а дорабатывать их чтобы контестную информацию можно было таскать. У нас сейчас главная проблема — невозможность котнекстнозависимых вещей вроде отступных грамматик парсить. У того же АНТЛР, в виду наличия лексера, с этим проблем нет. Так что мы ему в этом уступаем.
Та же фигня с инткрементальным парсингом. У Розлина он есть. А у нас нет. Файл на пару метров уже может и тормозить.
WH>Нужно только с духом собраться.
Давно пора.
F>>Тем более кау я слышал нитра там ошибки генерирует красивые.
WH>Ошибки Влад генерирует по АСТ которое создаёт мой парсер.
WH>https://github.com/rsdn/nitra/blob/master/Nitra/Nitra.Runtime/Errors/ErrorCollectorWalker.n
WH>Подобный алгоритм можно применить и к другим парсерам.
Вот чтобы его написать я пару реализаций в помойку пустил. И первые как раз с парсером возились, а не с АСТ-мо.
Сейчас уже гляжу и подробностей не помню. Помню только, что от души потрахался.
Вот если бы описал вовремя, то сейчас можно было бы впомнить. А теперь только код читать. Та же фигня и с алгоритмами парсинга будет.