C # Выражение деревьев для калькулятора
-
13-11-2019 - |
Вопрос
Я C # Newbie.Я хочу написать приложение калькулятора в C #.Было бы C # выражения деревья хорошим способом пойти на смелость этого?(То есть часть, которая принимает серию клавиш и превращает их в выражение, что калькулятор может оценивать и отображать на экране.,, Или график)
Я хочу включить стандартные математические функции, включая Trig, Logs, экспоненты и т. Д.
Решение
Поскольку ваш язык для математических выражений, безусловно, будет сильно, намного проще, чем C #, я подозреваю, что пытаясь повторно использовать классы деревьев экспрессии структуры для представления ваших ASTS, будет быть переплетением и, вероятно, рецепт для разочарования;Если вы посмотрите на эти классы, вы увидите много свойств и функциональных возможностей, которые были бы совершенно не относящимися к вашему маленькому языку.Я бы катился, если бы я был тобой.
Другие советы
Возможно, вы сможете узнать из этого проекта, есть хорошие учебники Aobut, как это было сделано
Вы видели http://ncalc.codeplex.com ?
Это расширяемое, быстрое (например, имеет свой кэш), позволяет предоставлять пользовательские функции и варианты выполнения во время выполнения путем обработки событий оценки / EvalugeParammer. Пример выражения это может разбираться: Выражение E= новое выражение («раунд (POW (PI, 2) + POW ([PI2], 2) + X, 2)«);
e.parameters [«Pi2»]= новое выражение («PI * Pi»); E.Parameters [«X»]= 10;
e.evalugeParameter += делегат (имя строки, параметрические данные args) { Если (имя=="PI") args.result= 3.14; };
Debug.assert (117.07== e.evalatue ());
Он также обрабатывает Unicode & много данных типа данных. Он поставляется с Antler File, если вы хотите изменить граф. Существует также вилка, которая поддерживает MEF для загрузки новых функций.
Он также поддерживает логические операторы, строки даты / времени и если заявления.