Développement D'Arbre De Syntaxe Abstraite
J'ai écumé le net à la recherche pour certains débutants d'informations sur le développement en C# l'arbre de Syntaxe Abstraite, mais je ne peux trouver de l'information pour les personnes déjà "dans le savoir". Je suis un line-of-business développeur de l'application ainsi les sujets comme ceux-ci sont un peu au-dessus de ma tête, mais c'est pour ma propre éducation, donc je suis prêt à passer le temps et d'apprendre quels que soient les concepts sont nécessaires.
Généralement, j'aimerais apprendre sur les techniques qui sous-tendent l'élaboration d'une représentation abstraite de code à partir d'une chaîne de code. Plus précisément, j'aimerais être en mesure d'utiliser cette AST faire C# vérification de la syntaxe. (Je me rends compte que la coloration syntaxique n'est pas nécessaire besoin d'un AST, mais cela semble être une bonne occasion d'apprendre quelques "compilateur"au niveau des techniques.)
Je m'excuse si cette question est un peu large, mais je ne suis pas sûr de savoir comment d'autre à demander.
Merci!
James Manning: Merci, je vais vérifier ça!
OriginalL'auteur Vince Fedorchak | 2012-05-21
Vous devez vous connecter pour publier un commentaire.
D'abord, vous devez comprendre ce que l'analyse est, et ce que l'arbre de syntaxe abstraite. Pour cela, vous pouvez consulter Wikipédia sur l'arbre de syntaxe abstraite pour un premier coup d'oeil.
Vous avez vraiment besoin de passer du temps avec un compilateur livre de texte pour comprendre comment l'arbre de syntaxe abstraite sont liées à l'analyse, et peut être construit lors de l'analyse; la référence classique est Aho/Ullman/Sethi "Compilateurs" livre (facile à trouver sur le web). Vous pouvez trouver de AFIN de répondre à Il n'existe aucun "plaisir" façons d'apprendre les Langues, la Grammaire, l'Analyse et les Compilateurs? instructif.
Une fois que vous comprenez comment construire un AST pour un simple grammaire, vous pouvez tourner votre attention à quelque chose comme C#. La question ici est de taille; il est une chose que de jouer avec un jouet langue avec 20 des règles de grammaire. Il est de l'autre pour fonctionner avec la grammaire de plusieurs centaines ou un millier de règles. L'expérience va petits vont rendre beaucoup plus facile de comprendre comment les grands sont mis ensemble, et comment vivre avec eux.
Vous ne voulez probablement pas à construire votre propre C# grammaire (ou de mettre en œuvre l'une à partir de C# standard); son tout à fait beaucoup de travail. Vous pouvez obtenir des outils à disposition qui vous remettra C# ASTs (Roslyn a déjà été mentionné; ANTLR a un C# de l'analyseur, il y a beaucoup plus).
Il est vrai que vous pourriez utiliser un AST pour la coloration syntaxique (même si c'est probablement tuer un moucheron avec une masse). Ce que la plupart des gens ne pensent pas beaucoup à propos (mais le compilateur livres souligner), est ce qui se passe après que vous avez un AST; la plupart du temps ils ne sont pas utiles par eux-mêmes. Vous avez réellement besoin de beaucoup plus de machines à faire quelque chose d'intéressant.
Plutôt que de répéter cela encore et encore (je continue à voir le même type de questions), vous pouvez voir ma discussion sur La Vie Après L'Analyse pour plus de détails.
Je sais que c'est un peu tard, mais avez-vous regardé OR l'Analyseur? Ce programme vous permet de construire une grammaire BNF règles et gan générer des squelettes de code dans n'importe quelle langue pour traiter l'arbre d'analyse, c'est à dire d'interpréter le code que vous marchez dans l'arbre d'analyse ou de générer du code.
Clarke: je pensais que l'OR analysées, seulement. Il fait construit un arbre d'analyse? Il n'y a aucune preuve de ce que je peux voir à partir de pages web goldparser.org/doc/index.htm
OriginalL'auteur Ira Baxter
Vous devriez probablement prendre un coup d'oeil à cette conférence par Phil Trelford:
Écrivez votre propre compilateur, dans les 24 heures
Cet homme est un génie, et vous laissera tiré jusqu'à apprendre à propos de compilateurs. Il l'explique littéralement assez facilement pour une période de cinq ans à comprendre. L'enfant de cinq ans en question est son fils, et c'est probablement a un avantage injuste, mais de cinq ans est de cinq ans.
OriginalL'auteur Jonathan
Prendre un coup d'oeil à Roslyn. Je pense qu'il pourrait être ce que vous cherchez. Il vous donne accès aux compilateurs de l'AST, parmi beaucoup d'autres choses incroyables!
http://blogs.msdn.com/b/visualstudio/archive/2011/10/19/introducing-the-microsoft-roslyn-ctp.aspx
- Delà de cela, je vous propose un livre sur les compilateurs.
Tout particulier manuel vous pourriez recommander? Je ne suis pas vraiment à la recherche d'une solution toute faite, je suis à la recherche d'édifier moi-même, par le développement de mon propre.
OriginalL'auteur Amy