Question

En fait, peut-être pas Lex / Yacc entière. Je commande la mise en œuvre d'un interprète frontal pour administrer une webapp. Je cherche quelque chose qui va prendre une définition de la grammaire et de le transformer en un analyseur qui appelle directement les méthodes de mon objet. Similaire à la façon dont ASP.NET MVC peut comprendre la méthode de commande pour appeler, et comment poney arguments.

Donc, si les types d'utilisateurs « créer foo » à ma commande rapide, il devrait en toute transparence appeler une méthode:

private void Create(string id) { /* ... */ }

Oh, et si elle pourrait générer un texte d'aide de (par exemple) les attributs sur les méthodes de contrôleur, ce serait trop génial,.

Était-ce utile?

La solution

Je ne suis pas sûr Lex / Yacc sera d'aucune aide. Vous aurez juste besoin d'un tokenizer de base et un interprète qui sont plus rapides à écrire à la main. Si vous êtes toujours en route voir l'analyse syntaxique

Autres conseils

Je l'ai fait deux ou trois petits projets avec Gplex / GPPG, qui sont assez simples réimplémentations de LEX / YACC en C #. Je ne l'ai pas utilisé l'un des autres outils ci-dessus, donc je ne peux pas vraiment les comparer, mais ceux-ci a bien fonctionné.

GPPG se trouve et Gplex ici .

Cela étant dit, je suis d'accord, une solution LEX / YACC complète est probablement trop pour votre problème. Je suggère générer un ensemble de liaisons à l'aide IronPython: interface pratique avec le code .NET, les non-programmeurs semblent trouver la syntaxe de base assez utile, et il vous donne beaucoup de flexibilité / puissance si vous choisissez de l'utiliser

Regardez aussi Antlr , qui a C # support.

ne peut donc pas CTP encore tôt être utilisé dans des applications de production, mais vous pouvez être intéressé à Oslo / MGrammar: http://msdn.microsoft.com/en-us/oslo/

Jison reçoit beaucoup de traction récemment. Il est un port Bison javascript. En raison de sa nature extrêmement simple, je l'ai porté l'analyse syntaxique Jison / template lexing à php, et maintenant à C #. Il est encore très nouveau, mais si vous avez une chance, jetez un coup d'oeil ici: https://github.com/robertleeplummerjr/jison/tree/master/ports/csharp/Jison

Si vous ne craignez pas le logiciel alpha et que vous voulez une alternative à Lex / Yacc pour créer vos propres langues, vous pouvez regarder dans Oslo . Je vous recommande d'assister à des enregistrements de session de sessions TL27 et TL31 de dernières années PDC . TL31 aborde directement la création du domaine des langues spécifiques à l'aide d'Oslo.

Coco / R est un générateur de compilateur avec une implémentation .NET. Vous pouvez essayer, mais je ne suis pas sûr si obtenir une telle bibliothèque de travailler serait plus rapide que d'écrire votre propre tokenizer.

http: //www.ssw.uni-linz. ac.at/Research/Projects/Coco/

Je suggère csflex - port C # flex -. Le plus célèbre générateur de scanner unix

Je crois que lex / yacc sont dans l'un des kits de développement logiciel déjà (à savoir RTM). Windows ou .NET Framework SDK.

Point Gardens Parser Generator offre des fonctionnalités Yacc / Bison C #. Il peut être donwloaded . Un exemple à l'aide GPPG est utile fourni

Comme dit Anton, PowerShell est probablement le chemin à parcourir. Si vous voulez une mise en œuvre de la lex / yacc puis Malcolm Crowe a un bon ensemble.

Modifier Lien direct vers les outils de compilation

Pour la petite histoire, la mise en œuvre de lexer et analyseur LALR en C # C #:

http://code.google.com/p/naive-language-tools /

Il devrait être similaire à celle de Lex / Yacc, mais ces outils (NLT) ne sont pas générateurs! Ainsi, oublier la vitesse.

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