Usuário com melhor resposta
Validação comando

Pergunta
-
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
Todas as Respostas
-
-
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
-
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?
-
-
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