none
Validação comando RRS feed

  • Pergunta

  • Galera preciso criar um comando "IF<condição> else" no meu sistema. O problema é como eu faço para validar se o comando está correto. Alguem sabe como eu posso fazer isso ?

    Obrigado


    SirSmart

    quarta-feira, 16 de agosto de 2017 13:01

Respostas

  • Entendi, cara eu precisei de algo parecido e utilizei as lambda Expressions, (um exemplo abaixo onde seria um if para comparar uma variável com uma string fixa). Dai o que poderia fazer é colocar um formato especifico para seu usuário digitar as condições no seu campo de texto (de forma verbosa mesmo tipo @ no inicio de tudo que for variável por exemplo) e extrair via regex as partes da equação do usuário) a criação das expressions baseia-se sempre em expressão da direita e esquerda, segue um exemplo simples abaixo.

    using System;
    using System.Linq.Expressions;
    					
    public class Program
    {
    	public static void Main()
    	{
    		// variavelNome == "Lucas"
    		ParameterExpression paramNome = Expression.Parameter(typeof(string), "variavelNome");
    		Func<string, bool> fnc = Expression.Lambda<Func<string, bool>>(Expression.Equal(paramNome, Expression.Constant("Lucas")), paramNome).Compile();
    		Console.WriteLine(fnc("João"));
    		Console.WriteLine(fnc("Lucas"));
    	}
    }

    • Marcado como Resposta SirSmart quarta-feira, 16 de agosto de 2017 20:37
    quarta-feira, 16 de agosto de 2017 18:50

Todas as Respostas

  • SisSmart

    Não entendi direito o que precisa fazer, vc quer criar um método e adicionar um teste unitário ao mesmo seria isto?

    quarta-feira, 16 de agosto de 2017 17:07
  • Não. Deixa eu explicar melhor...rs

    Tenho uma aplicação que é um editor de textos e nessa aplicação eu posso incluir alguns IFS que o sistema internamente vai ler esse IF e se comportar dependendo da condição.

    O problema é que eu não tenho idéia como posso criar esse IF, ou seja, pelo que pesquisei precisaria criar um analisador lexico mas não consigo encontrar nada na internet explicativo.

    Se você tiver alguma sugestão eu agradeço

    Conseguiu entender melhor ? rsrs

    Obrigado


    SirSmart

    quarta-feira, 16 de agosto de 2017 17:48
  • SirSmart, o analisador léxico serve apenas para validar as palavras da linguagem.
    Pra validar uma expressão como por exemplo:

    if (teste) {
      // fazer algo
    }

    é necessário um analisador sintático.
    São duas coisas que envolvem muita teoria e dependem diretamente do que a tua linguagem permite escrever.

    Estes IFs que vc pode incluir no texto, são coisas muito genéricas?

    quarta-feira, 16 de agosto de 2017 18:18
  • Por enquanto seria um IF dessa forma que você fez acima, ou seja, bem simples. Mas sempre terá as novas versões do sistema até que fique genérica...rs

    Mas por enquanto seria só isso mesmo. 

    Att,


    SirSmart

    quarta-feira, 16 de agosto de 2017 18:31
  • Entendi, cara eu precisei de algo parecido e utilizei as lambda Expressions, (um exemplo abaixo onde seria um if para comparar uma variável com uma string fixa). Dai o que poderia fazer é colocar um formato especifico para seu usuário digitar as condições no seu campo de texto (de forma verbosa mesmo tipo @ no inicio de tudo que for variável por exemplo) e extrair via regex as partes da equação do usuário) a criação das expressions baseia-se sempre em expressão da direita e esquerda, segue um exemplo simples abaixo.

    using System;
    using System.Linq.Expressions;
    					
    public class Program
    {
    	public static void Main()
    	{
    		// variavelNome == "Lucas"
    		ParameterExpression paramNome = Expression.Parameter(typeof(string), "variavelNome");
    		Func<string, bool> fnc = Expression.Lambda<Func<string, bool>>(Expression.Equal(paramNome, Expression.Constant("Lucas")), paramNome).Compile();
    		Console.WriteLine(fnc("João"));
    		Console.WriteLine(fnc("Lucas"));
    	}
    }

    • Marcado como Resposta SirSmart quarta-feira, 16 de agosto de 2017 20:37
    quarta-feira, 16 de agosto de 2017 18:50