8
votes

Compilateur compilateur en C #

Je recherche un analyseur personnalisable et / ou un lexer qui peut me permettre de créer un vérificateur de syntaxe personnalisé en C #. L'utilisateur entrera essentiellement à code une ligne de code (personnalisé) et le vérificateur de syntaxe sera en mesure de répondre s'il est écrit correctement ou non.


1 commentaires

Est-ce juste la syntaxe en surbrillance ou vous devez exécuter le code entré par l'utilisateur?


7 Réponses :


0
votes

de ici :

LINQPAD utilise un certain nombre de tiers composants dans l'interface utilisateur. La requête Editeur utilise la syntaxeTor de Actipro contrôle (un produit très poli); les Les caractéristiques "Intellisense" s'appuient sur un Combinaison de bibliothèques d'Actipro Logiciel et iCsharscode (de la Projet SharpDEvelop).

Je n'ai utilisé aucun des produits mentionnés dans cet extrait (mis à part Linqpad - que je recommande vivement!) Mais la pensée que cela pourrait commencer à vous déplacer dans la bonne direction peut-être.


0 commentaires

8
votes

C'est ironie . Assurez-vous de lire la discussion, car il y a beaucoup de choses là-bas. Utilisez l'ancienne version de novembre ou utilisez le dernier, mais assurez-vous de comprendre ce qui est dans cette version et ce qui n'est pas.

Pour la plupart des choses, la libération de novembre devrait bien fonctionner (l'utiliser dans un projet d'animal de compagnie).

L'ironie permet de construire une syntaxe abstraite (AST) à partir de n'importe quelle grammaire que vous pouvez définir directement dans C # Code. Il prend également en charge l'évaluation (c'est-à-dire interpréter le code), et il n'est même pas difficile de créer un code de celui-ci. Ou bien, convertissez-le en un DLR (runtime de langue dynamique) ast.


2 commentaires

+1 pour l'ironie, n'avez pas utilisé pour rien que jouent des tests, mais ressemble à un excellent CC (compilateur Compiler).


Je l'ai utilisé pour l'évaluation d'expression (c'est-à-dire la calculatrice). C'est génial, car cela rend les choses tellement plus faciles. J'aime bien parce que cela ne nécessite pas d'apprendre une autre langue de grammaire pour créer votre grammaire - c'est tout en C # et il est facile de s'injecter du code pour soutenir les choses que l'auteur n'a pas l'intention d'avoir l'intention d'avoir l'intention d'avoir l'intention de l'auteur.



8
votes

Voici quelques éléments que vous voudrez peut-être envisager d'utiliser:


0 commentaires

6
votes

J'aime antlr , Il prend en charge C # ainsi que Java, Python, C, etc., etc., etc. Les avantages de l'utilisation d'Antlr sont très bonnes documentaires (exemples , livres, tutoriels, etc.) et une large utilisation.


0 commentaires

0
votes

Si ce que l'utilisateur entrera est une ligne de code correspondant aux expressions traditionnelles, vous pouvez guider un analyseur de descente récursif pour cela dans quelques heures max et être effectué avec elle.

Si votre entrée est un fragment d'une langue complexe (par exemple, vous souhaitez accepter une ligne de code C #), vous aurez besoin d'un analyseur très puissant et qu'un générateur d'analyseur est recommandé.

Cependant, vous constaterez que la plupart des générateurs d'analyseurs ne vous offrent pas de bonne façon d'analyser la pièce de la langue que vous définissez, mais vous pouvez vous pirater de cela en définissant la racine règle de la grammaire pour mentionner les non-mines qui correspondent aux "lignes" que vous êtes prêt à accepter.


0 commentaires

-1
votes

J'utilise QWhale .NET Editor. Ce n'est pas gratuit, mais c'est assez bon.


0 commentaires

0
votes

J'utilise un analyseur de descente récursif qui allie l'analyse et la lexing que j'ai écrites de zéro en C # dans mon propre projet de langue. J'ai trouvé que cela fait d'écrire des règles de grammaire relativement faciles. Voir ici pour un exemple de grammaire et voir ici pour les tests de l'unité .


0 commentaires