Minoru 30.01.2012 21:13 antaeus

А есть ли парсер всего на свете (или хотя бы всего мейнстримного)? Или хотя бы набор парсеров, выходные AST'ы которых совпадают (или максимально похожи).

1. dorfe 30.01.2012 23:03

я нихуя нипонял, поэтому:
lisp
pugixml

2. Minorudorfe /1 30.01.2012 23:10 antaeus

Я хочу библиотеку-парсер, скажем, C#, Java и C++, для задачи, требующей несложного анализа получившегося синтаксического дерева. Вместо одной библиотеки покатили бы несколько таких, у которых AST'ы очень похожи (чтобы можно было малой кровью спрятать их под ещё один слой абстракции).
За упоминание лиспа спасибо — пойду погуглю парсеры на нём.

3. Minoru 31.01.2012 00:05 antaeus

Для Haskell нашлись библиотеки language-c, language-cil (пока что не готова), language-java и language-python. Парсер плюсов я, вобщем-то, и не надеялся найти, так что всё ок :)
Олсо, я таки понял, что универсального парсера быть не может в принципе.

4. dorfeMinoru /2 31.01.2012 16:42

И снова я нипонял что ты хочешь, лисп сам по себе AST парсер.

5. dorfeMinoru /3 31.01.2012 16:45

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

6. Minorudorfe /5 31.01.2012 18:49 antaeus

В первую очередь хотелось заюзать уже готовое, а не писать новое (это я к yacc/bison). Впрочем, вопрос уже решён, так что пофигу.

7. dorfeMinoru /6 31.01.2012 21:23

А что за задача-то была? Компилятор сей?

8. Minorudorfe /7 31.01.2012 21:27 antaeus

Читал условие лабы по glassbox testing и придумал, как автоматизировать бо́льшую часть шагов. Хотелось запилить прототип, да такой, чтобы в будущем можно было это дело применять не только к какому-то одному языку, а к нескольким разным.
А потом я погуглил ещё чуть-чуть и оказалось, что в Microsoft Research уже пилят некий Pex, который как раз эту идею и реализует (даже с несколькими ништяками — до constraint solving я не додумался, у меня человекам приходилось бы самим придумывать тесткейсы).

9. dorfeMinoru /8 31.01.2012 21:35

ага, ясно, интересные у вас лабы, в компиляторах есть всякое такое вроде (/analyze в msvc) но не настолько продвинутое ещё наверно.

Do you really want to delete ?