Question

Quelle est la meilleure façon de construire un analyseur en C # pour analyser ma propre langue? Idéalement, je voudrais fournir une grammaire, et d'obtenir la syntaxe abstraite des arbres comme une sortie. Merci beaucoup, Nestor

Était-ce utile?

La solution

J'ai eu une bonne expérience avec ANTLR v3. De loin le plus grand avantage est qu'il vous permet d'écrire LL (*) parseurs avec préanalyse infinie - ceux-ci peuvent être tout à fait sous-optimale, mais la grammaire peut être écrit de la manière la plus simple et naturel sans avoir besoin de factoriser pour contourner les limites de l'analyseur, et les performances de l'analyseur est souvent pas grand-chose (j'espère que vous n'êtes pas en train d'écrire un compilateur C ++), en particulier dans les projets d'apprentissage.

Il fournit aussi très bon moyen de construire significative sans RSHS besoin d'écrire un code - pour chaque production de grammaire, vous indiquez le signe « crucial » ou sous-production, et qui devient un nœud d'arbre. Ou vous pouvez écrire une production d'arbres.

Jetez un oeil sur les grammaires ANTLR suivants (ici par ordre de complexité croissante) pour obtenir un point essentiel de la façon dont il regarde et se sent

Autres conseils

J'ai joué wtih Irony. Il semble simple et utile.

Vous pouvez étudier le code source pour le Mono compilateur C # .

Alors qu'il est encore au début de la bêta Oslo langage de modélisation et des outils MGrammar de Microsoft montrent une certaine promesse.

Je prendrais aussi un oeil à SableCC . Il est très facile de créer la Grammer EBNF. est simple C # exemple de la calculatrice.

Il y a un court document sur la construction d'un LL (1) analyseur ici, vous pouvez bien sûr utiliser un générateur aussi.

Lex et Yacc sont encore mes favoris. Obscure si vous êtes débutant, mais extrêmement simple, rapide et facile une fois que vous avez le lingo vers le bas.

Vous pouvez le faire faire ce que vous voulez; générer du code C #, construire d'autres grammaires, imiter des instructions, quel que soit.

Il est pas joli, c'est un format texte basé et LV1, de sorte que votre syntaxe doit accueillir que.

Du côté positif, il est partout. Il y a de grands livres O'reilly à ce sujet, beaucoup d'exemples de code, beaucoup de grammaires, et beaucoup premade des bibliothèques de langue maternelle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top