Question

Je suis un débutant C #. Je veux écrire une application de calculatrice en C #. Les arbres d'expression C # seraient-ils un bon moyen d'aller pour le courage? (C'est-à-dire la pièce qui prend une série de pression des clés et les transforme en une expression que la calculatrice peut évaluer et afficher à l'écran ... ou graphique.)

Je voudrais inclure les fonctions mathématiques standard, y compris le trig, les journaux, les exposants, etc.

Était-ce utile?

La solution

Étant donné que votre langue pour les expressions mathématiques sera sûrement beaucoup, beaucoup plus simple que C #, je soupçonne que essayer de réutiliser les classes d'arbre d'expression du cadre pour représenter vos AST sera exagérée et probablement une recette de frustration; Si vous regardez ces cours, vous verrez beaucoup de propriétés et de fonctionnalités qui seraient totalement hors de propos pour votre petite langue. Je roulerais la vôtre si j'étais toi.

Autres conseils

Vous pourriez être en mesure d'apprendre de ce projet, il y a de bons tutoriels sur la façon dont il a été fabriqué

Avez-vous vu http://ncalc.codeplex.com ?

Il est extensible, rapide (par exemple, son propre cache) vous permet de fournir des fonctions personnalisées et des varaibles au moment de l'exécution en manipulant des événements d'évaluation / évaluation des paramètres. Exemples d'expressions Il peut analyser: Expression E = nouvelle expression ("Round (POW (PI, 2) + POW ([PI2], 2) + x, 2)");

e.Parameters ["PI2"] = nouvelle expression ("pi * pi"); e.Parameters ["x"] = 10;

E.EvaluateParameter + = Delegate (String Name, ParameterArgs args) {if (name == "pi") args.result = 3.14; };

Debug.Asersert (117.07 == E.Evaluate ());

Il gère également l'Unicode et de nombreux types de données nativement. Il est livré avec un fichier de bois si vous souhaitez modifier la grammaire. Il existe également une fourche qui prend en charge le MEF pour charger de nouvelles fonctions.

Il prend également en charge les opérateurs logiques, les chaînes de date / heure et les instructions.

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