2009/1/28 Akim Demaille <Akim.Demaille(a)lrde.epita.fr>fr>:
Ca fait (entre autre) le parsing, l'anayse de
scope / symbols,
l'analyse de types et le calcul des expressions constantes.
Good news, I did not even remember Synopsis did all that.
Le parseur est (etrangement) lisible, et c'est
facile d'etendre la
grammaire (nouveaux mots clés, nouvelles constructions).
AspectC++ (PUMA) is maybe better on that.
L'analyse et la modification de l'AST se passe
bien. ( => ideal pour
faire du source-to-source )
C'est maintenu (dernière release: décembre 2008).
The directory of the parser, 9 months.
Pour les autres languages, il y avait des candidats
intéressant, mais
j'ai peur de tomber sur un truc soit trop peu connu, soit trop lent,
et puis, il faut l'avouer j'aime bien le C++ :)
GCC < 3.4 - Bison
GCC >= 3.4 - Recursive descendant, bad tree for rewriting
GCCXML - No definition on the tree, just for documentation
OpenWatcom - Hacked Yacc. Not standard.
TXL - Nearly a joke
OpenC++ - Not correct
Elsa - Syntax definition is modular (GLR), but is dependent on a
monolithic semantic pass (9kloc in one file).
Puma (AspectC++) - The only one apart from Transformer showing a real
example of extension.
Semantic Design - Commercial, they will handle the part of the
standard you need only if you pay for it.
EDG C++ - Commercial. Recursive-descendant.
Eclipse CDT - Recursive-descendant in Java.
FOG - Yacc. Not correct.
Synopsis - You know it.
Ultimate++ - They claim to have a parser. Do not look for it, there is none.
Keystone - Flex, BtYacc, TreeCC. Not tested.
ANTLR C++ front-end - No disambiguation. On the website, it is said
there is only this to do... of course it is thousands time harder that
just rewriting the syntax definition.
KDevelop C++ parser - Recursive-descendant.
Clang - Recursive-descendant, far from being finished. No namespace
for example. Just for testing for the moment.
Transformers - We still need hands!
I hope it helped.
--
Valentin David
valentin.david(a)gmail.com