Форум
Философия программирования
Тема
Как правильно задавать вопросы
B
I
abc
U
X
3
X
3
H1
H2
H3
H4
H5
H6
Asm
C/C++
C#
Erlang
Haskell
IDL
Java
Lisp
MSIL
Nemerle
ObjC
OCaml
Pascal
Perl
PHP
Prolog
Python
Ruby
Rust
SQL
VB
Здравствуйте, oldjackal, Вы писали: O>Здравствуйте, WolfHound, Вы писали: WH>>Есть такое. WH>>http://javascript.crockford.com/tdop/tdop.html WH>>Бред про то, что оно заточено под динамически типизированные языки пропускай мимо ушей. O> Спасибо, попробую поиграть с разными реализациями. O>>> Совсем нет? Так не бывает. Но вы меня заинтересовали, попробую узнать про Pratt-а побольше. Есть какие-то ссылки по теме, которые гугл и википедия не дадут? WH>>У меня нельзя делать непрямую левую рекурсию. O> У... Это плохо. WH>>Но на практике я даже представить не могу, кому может понадобиться непрямая левая рекурсия в данном алгоритме. O> Встречается иногда. WH>>>>Да я не спорю. Но существующие языки тоже нужно разбирать. O>>> К задаче реализации DSL это особого отношения не имеет, к счастью. WH>>Но у меня это требование есть. WH>>Ибо одна из задачь парсить C# и Java. WH>>Чтобы дать людям возможность взять готовый проект и начать добавлять туда макры. O> Логично. О расширении того же шарпа я как-то не подумал. Встраивать DSL в привычный шарп, а не в страшный Nemerle - это должно быть весьма удобно и эффективно. WH>>>>Мне хватает скорости, чтобы все распарсить. O>>> Даже если там сто тысяч строк кода? WH>>Nemerle.Peg пару метров в секунду на грамматике C# дает. O> Это и пакрат сделает. Этого мало, для отзывчивости редактора надо быстрее. WH>>>>Я это понимаю. И собираюсь сделать язык описания ошибочных ситуаций. O>>> А это не ошибочная ситуация. Это предупреждение. WH>>Тогда видимо я что-то не понял. WH>>Я думал ты про восстановление после ошибок говоришь. O> Восстановление это еще более интересная тема. Но я привел в пример warning, таких в Clang очень много. Он тем и хорош, что на всякие синтаксические неоднозначности указывать умеет. И возможно это только благодаря страшному, кривому, рукописному парсеру. Очень быстрому, кстати. O>>> Мне Packrat интересен как раз тем, что его можно и руками делать, без DSLей, без генераторов. WH>>Так там как раз генератор. O> Вот и интересно посмотреть, что он генерит. O>>> Семантика то как раз прозрачна, поскольку не далеко ушла от привычной семантики низлежащего языка. WH>>Вот ту не могу согласиться. WH>>Ибо ДСЛ для того и создают чтобы уйти от семантики языка более низкого уровня. O> Как правило - да. Но в случае с парсерами это не всегда возможно (см. выше про clang). Тонкости поведения при ошибках декларативно определять пока никто не научился, так что наилучшим решением представляется как раз тоненькая прослойка над низким уровнем - определяем декларативно все, что можно, а где нельзя, там прозрачно скатываемся на низкий уровень. Это не leaky abstraction, это честно, потому как абстракция парсера от низкого уровня сама не далеко ушла.
Теги:
Введите теги разделенные пробелами. Обрамляйте в кавычки словосочетания с пробелами внутри, например:
"Visual Studio" .NET
Имя, пароль:
Загрузить
Нравится наш сайт?
Помогите его развитию!
Отключить смайлики
Получать ответы по e-mail
Проверить правописание
Параметры проверки …