/// <summary> /// Generate a string that represents this Syntax element. /// </summary> public static string ToTextPreserveFormatting(this SyntaxBase syntax) { var sb = new StringBuilder(); var printVisitor = new PrintVisitor(sb); printVisitor.Visit(syntax); return(sb.ToString()); }
public void VisitIdentifierExpr() { var target = new PrintVisitor(); var expression = new IdentifierExpr("test"); var actual = target.Visit(expression, scope); Assert.AreEqual("test", actual); }
public void VisitIntegerConstantExpr() { var target = new PrintVisitor(); var expression = new ConstantExpr(1234); var actual = target.Visit(expression, scope); Assert.AreEqual("1234", actual); }
public void VisitBooleanNotExpr(bool a, string expected) { var target = new PrintVisitor(); var aExpression = new ConstantExpr(a); var expr = new NotExpr(aExpression); var actual = target.Visit(expr, scope); Assert.AreEqual(expected, actual); }
public void VisitDivExpr() { var target = new PrintVisitor(); var lhs = new ConstantExpr(1); var rhs = new ConstantExpr(2); var expression = new DivExpr(lhs, rhs); var actual = target.Visit(expression, scope); Assert.AreEqual("1/2", actual); }
public void VisitBooleanOrExpr(object a, object b, string expected) { var target = new PrintVisitor(); var aExpression = new ConstantExpr(a); var bExpression = new ConstantExpr(b); var expr = new OrExpr(aExpression, bExpression); var actual = target.Visit(expr, scope); Assert.AreEqual(expected, actual); }
private static void GrammarParsingTest() { var grammar = Grammar.Create(); var test = @" INT := ""\b\d+\b""; OP := ""[+\-*/]""; OPAREN := ""\(""; CPAREN := ""\)""; --- EXPR := OPAREN EXPR CPAREN OP EXPR; EXPR := INT OP EXPR; EXPR := OPAREN EXPR CPAREN; EXPR := INT; > EXPR; "; var tokens = grammar.Tokenize(test); Console.WriteLine(string.Join("\n", tokens)); var result = grammar.Parse(tokens); if (result != null) { var printer = new PrintVisitor <GrammarToken, GrammarSymbol>(); printer.Visit(result); } Console.WriteLine("Now running the resultin grammar:"); var reader = new Reader(); var resultGrammar = reader.Read(result); var test2 = "(4 + (2 * 8)) / (6 - 1)"; Console.WriteLine("Input: " + test2); var tokens2 = resultGrammar.Tokenize(test2); Console.WriteLine(string.Join("\n", tokens2)); var result2 = resultGrammar.Parse(tokens2); if (result2 != null) { var printer = new PrintVisitor <string, string>(); printer.Visit(result2); } }
public void VisitConditionalExpr(bool condition, int thenValue, int elseValue, string expected) { var target = new PrintVisitor(); var conditionExpression = new ConstantExpr(condition); var thenExpression = new ConstantExpr(thenValue); var elseExpression = new ConstantExpr(elseValue); var expr = new ConditionalExpr(conditionExpression, thenExpression, elseExpression); var actual = target.Visit(expr, scope); Assert.AreEqual(expected, actual); }
public void VisitMassEnergyEquavalenceExpressionTree() { var target = new PrintVisitor(); var e = new IdentifierExpr("e"); var m = new IdentifierExpr("m"); var c = new IdentifierExpr("C"); var two = new ConstantExpr(2); var expression = new AssignmentExpr(e, new MultExpr(m, new PowExpr(c, two))); var actual = target.Visit(expression, scope); Assert.AreEqual("e=m*C^2", actual); }
public void VisitMathExpressionTree() { var target = new PrintVisitor(); var one = new ConstantExpr(1); var two = new ConstantExpr(2); var three = new ConstantExpr(3); var four = new ConstantExpr(4); var five = new ConstantExpr(5); var six = new ConstantExpr(6); var expression = new DivExpr(new MultExpr(three, six), new MultExpr(new MinusExpr(five, one), new PlusExpr(four, two))); var actual = target.Visit(expression, scope); Assert.AreEqual("3*6/5-1*4+2", actual); }
public void VisitAlgebraicExpressionTree() { var target = new PrintVisitor(); var a = new IdentifierExpr("a"); var b = new IdentifierExpr("b"); var c = new IdentifierExpr("c"); var one = new ConstantExpr(1); var two = new ConstantExpr(2); var three = new ConstantExpr(3); var four = new ConstantExpr(4); var five = new ConstantExpr(5); var six = new ConstantExpr(6); var expression = new DivExpr(new MultExpr(three, new MultExpr(a, two)), new MultExpr(new MinusExpr(new PowExpr(five, b), one), new PlusExpr(new MinusExpr(six, four), c))); var actual = target.Visit(expression, scope); Assert.AreEqual("3*a*2/5^b-1*6-4+c", actual); }
public void VisitIntegerConstantExpr() { var target = new PrintVisitor(); var expression = new ConstantExpr(1234); var actual = target.Visit(expression, scope); Assert.AreEqual("1234", actual); }
public void VisitConditionalExpr(bool condition, int thenValue, int elseValue, string expected) { var target = new PrintVisitor(); var conditionExpression = new ConstantExpr(condition); var thenExpression = new ConstantExpr(thenValue); var elseExpression = new ConstantExpr(elseValue); var expr = new ConditionalExpr(conditionExpression, thenExpression, elseExpression); var actual = target.Visit(expr, scope); Assert.AreEqual(expected, actual); }
public void VisitBooleanNotExpr(bool a, string expected) { var target = new PrintVisitor(); var aExpression = new ConstantExpr(a); var expr = new NotExpr(aExpression); var actual = target.Visit(expr, scope); Assert.AreEqual(expected, actual); }
public void VisitBooleanOrExpr(object a, object b, string expected) { var target = new PrintVisitor(); var aExpression = new ConstantExpr(a); var bExpression = new ConstantExpr(b); var expr = new OrExpr(aExpression, bExpression); var actual = target.Visit(expr, scope); Assert.AreEqual(expected, actual); }
public void VisitMassEnergyEquavalenceExpressionTree() { var target = new PrintVisitor(); var e = new IdentifierExpr("e"); var m = new IdentifierExpr("m"); var c = new IdentifierExpr("C"); var two = new ConstantExpr(2); var expression = new AssignmentExpr(e, new MultExpr(m, new PowExpr(c, two))); var actual = target.Visit(expression, scope); Assert.AreEqual("e=m*C^2", actual); }
public void VisitAlgebraicExpressionTree() { var target = new PrintVisitor(); var a = new IdentifierExpr("a"); var b = new IdentifierExpr("b"); var c = new IdentifierExpr("c"); var one = new ConstantExpr(1); var two = new ConstantExpr(2); var three = new ConstantExpr(3); var four = new ConstantExpr(4); var five = new ConstantExpr(5); var six = new ConstantExpr(6); var expression = new DivExpr(new MultExpr(three,new MultExpr(a, two)), new MultExpr(new MinusExpr(new PowExpr(five,b), one), new PlusExpr(new MinusExpr(six, four), c))); var actual = target.Visit(expression, scope); Assert.AreEqual("3*a*2/5^b-1*6-4+c", actual); }
public void VisitMathExpressionTree() { var target = new PrintVisitor(); var one = new ConstantExpr(1); var two = new ConstantExpr(2); var three = new ConstantExpr(3); var four = new ConstantExpr(4); var five = new ConstantExpr(5); var six = new ConstantExpr(6); var expression = new DivExpr(new MultExpr(three, six), new MultExpr(new MinusExpr(five, one), new PlusExpr(four, two))); var actual = target.Visit(expression, scope); Assert.AreEqual("3*6/5-1*4+2", actual); }
public void VisitIdentifierExpr() { var target = new PrintVisitor(); var expression = new IdentifierExpr("test"); var actual = target.Visit(expression, scope); Assert.AreEqual("test", actual); }
public void VisitDivExpr() { var target = new PrintVisitor(); var lhs = new ConstantExpr(1); var rhs = new ConstantExpr(2); var expression = new DivExpr(lhs, rhs); var actual = target.Visit(expression, scope); Assert.AreEqual("1/2", actual); }