Scala AST en Scala
Est-il un Scala bibliothèque qui analyse Scala et crée un Arbre de Syntaxe Abstraite (AST)?
Idéalement, je suis intéressé par un Scala de la bibliothèque. Le Plan B serait une bibliothèque Java.
(Je sais que je pourrais tirer parti de l'EBNF de la Scala Résumé De Syntaxe.)
OriginalL'auteur AWhitford | 2009-11-24
Vous devez vous connecter pour publier un commentaire.
Je pense que le meilleur moyen d'accéder à l'AST est avec un compilateur plugin. Vous devriez lire un doux introduction avant plongée dans une profonde.
OriginalL'auteur Mitch Blevins
Un peu d'analyseurs:
PsiBuilder
API.Soyez prudent si vous utilisez l'EBNF à partir de la spécification, il n'y a apparemment:
OriginalL'auteur Matt R
Vous ne pouvez pas construire un AST pour Scala à partir de la grammaire seul. Il y a implicites à examiner et, de les étudier, il y a le type inferencer à prendre en compte.
Cependant, vous pouvez appeler le compilateur lui-même -- c'est juste un fichier jar, après tout. Scala 2.8, en particulier, a fait quelques crochets pour d'autres programmes à loquet, travaux de Miles Sabin, qui est en train de faire cela, précisément, de sorte que le plugin Eclipse pour Scala peuvent exploiter le compilateur de telle façon.
Je vous suggère d'aller à la Scala Outils de la liste de diffusion, et d'entrer en contact avec certaines personnes.
Je peux imaginer fins, pour avoir un AST, ce que l'utilisateur écrit ainsi que l'un reflétant implicites et quelles que soient les autres facteurs contribuent à la précision de l'AST en fin de compte utilisé pour la génération de code.
Au départ, je pensais que je ne se soucient pas vraiment d'interprétation sémantique de la scala de code, mais votre point de vue sur les implicites et l'inférence de type est un bon... je pense que je vais certainement exiger de cette dernière, donc regarder de plus près à la Scala compilateur semble prudent.
OriginalL'auteur Daniel C. Sobral
Si vous voulez générer des AST d'un morceau de code. Vous pouvez utiliser scala de réflexion:
Le code ci-dessus va générer un AST:
Référence:
http://docs.scala-lang.org/overviews/reflection/symbols-trees-types.html
OriginalL'auteur Flora Liu
Voici un projet par un compilateur committers http://github.com/paulp/scala-lang-combinators
OriginalL'auteur Mohamed Bana
Pas sûr au sujet de la pure scala solutions, mais si vous vous trouvez avoir besoin de mettre en œuvre un plan B, vous pouvez commencer par vérifier ANTLR ou Les Rats!
OriginalL'auteur Steve Lianoglou