public void SetUp() { var grammar = new CustomDslGrammar(); var language = new LanguageData(grammar); _parser = new Parser(language); _visitor = new CSharpExpressionBuilder(); }
public CustomDslCSharpExpressionVisitorTest() { var grammar = new CustomDslGrammar(); _parser = new Parser(grammar); _visitor = new CSharpExpressionBuilder(); }
private void btnEvaluate_Click(object sender, EventArgs e) { var tree = _parser.Parse(txtExpression.Text); if (tree.HasErrors()) { MessageBox.Show(tree.ParserMessages.First().Message, "Error parsing message", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } var rootNode = (AstNode)tree.Root.AstNode; var visitor = new CSharpExpressionBuilder(); var func = visitor.Build(rootNode); txtResult.Text = func().ToString(); }
private void btnEvaluate_Click(object sender, EventArgs e) { ParseTree tree = _parser.Parse(txtExpression.Text); if (tree.HasErrors()) { MessageBox.Show(tree.ParserMessages.First().Message, "Error parsing message", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } var rootNode = (AstNode)tree.Root.AstNode; var visitor = new CSharpExpressionBuilder(); Func<object> func = visitor.Build(rootNode); txtResult.Text = func().ToString(); }
private void btnEvalRule_Click(object sender, EventArgs e) { var person = new Person { FirstName = txtFirstName.Text, LastName = txtLastName.Text, Age = (int) nudAge.Value }; var tree = _parser.Parse(txtRule.Text); if (tree.HasErrors()) { MessageBox.Show(tree.ParserMessages.First().Message, "Error parsing message", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } var rootNode = (AstNode)tree.Root.AstNode; var visitor = new CSharpExpressionBuilder(); var func = visitor.Build<Person>(rootNode); var result = func(person); if (result is bool) { var evalResult = (bool) result; if (evalResult) { lblResult.Text = "Match!"; lblResult.BackColor = Color.LawnGreen; } else { lblResult.Text = "Not a match!"; lblResult.BackColor = Color.Red; } } }
private void btnEvalRule_Click(object sender, EventArgs e) { var person = new Person { FirstName = txtFirstName.Text, LastName = txtLastName.Text, Age = (int)nudAge.Value }; var tree = _parser.Parse(txtRule.Text); if (tree.HasErrors()) { MessageBox.Show(tree.ParserMessages.First().Message, "Error parsing message", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } var rootNode = (AstNode)tree.Root.AstNode; var visitor = new CSharpExpressionBuilder(); var func = visitor.Build <Person>(rootNode); var result = func(person); if (result is bool) { var evalResult = (bool)result; if (evalResult) { lblResult.Text = "Match!"; lblResult.BackColor = Color.LawnGreen; } else { lblResult.Text = "Not a match!"; lblResult.BackColor = Color.Red; } } }