Pergunta

Sou um novato em C#.Quero escrever um aplicativo de calculadora em C#.As árvores de expressão C # seriam uma boa maneira de ir até o fim?(Ou seja, a parte que pega uma série de pressionamentos de teclas e os transforma em uma expressão que a calculadora pode avaliar e exibir na tela...ou gráfico.)

Vou querer incluir as funções matemáticas padrão, incluindo trigonometria, logs, expoentes, etc.

Foi útil?

Solução

Desde que sua linguagem para expressões matemáticas certamente será muito mais simples que C #, suspeito que tentando reutilizar as classes de árvores de expressão de estrutura para representar o seu ASTS e provavelmente uma receita para a frustração;Se você olhar para essas aulas, verá muitas propriedades e funcionalidades que seriam totalmente irrelevantes para sua pequena linguagem.Eu rolaria o seu próprio se eu fosse você.

Outras dicas

você pode aprender com este projeto, existem bons tutoriais sobre como ele foi feito

Você viu http://ncalc.codeplex.com ?

É extensível, rápido (por ex.tem seu próprio cache) permite fornecer funções e variáveis ​​personalizadas em tempo de execução, manipulando eventos EvaluateFunction/EvaluateParameter.Exemplos de expressões que ele pode analisar:Expressão e = nova Expressão("Rodada(Pow(Pi, 2) + Pow([Pi2], 2) + X, 2)");

e.Parâmetros["Pi2"] = nova Expressão("Pi * Pi");e.Parâmetros["X"] = 10;

evaluateParameter += delegado (nome da string, parameterargs args) {if (name == "pi") args.result = 3.14;};

Debug.Assert(117.07 == e.Evaluate());

Ele também lida com Unicode e muitos tipos de dados nativamente.Ele vem com um arquivo de chifre se você quiser alterar a gramática.Há também um fork que suporta MEF para carregar novas funções.

Ele também suporta operadores lógicos, strings de data/hora e instruções if.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top