public void TestVarDef() { var tree = ASTParserTests.Parse("begin var a,b,d end"); Assert.AreEqual("ProgramTree.VarDefNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]); Assert.AreEqual("ProgramTree.List_identNode, SimpleLang", (string)tree["StList"]["$values"][0]["List_ident"]["$type"]); }
public void TestRepeat() { var tree = ASTParserTests.Parse("begin repeat a:=2 until 2 end"); Assert.AreEqual("ProgramTree.RepeatNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]); // TODO: проверить узлы содержимого repeat }
public void TestWrite() { var tree = ASTParserTests.Parse("begin write(2) end"); Assert.AreEqual("ProgramTree.WriteNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]); // TODO: проверить содержимое write }
public void TestFor() { var tree = ASTParserTests.Parse("begin for i:=2 to 10 do a:=2 end"); Assert.AreEqual("ProgramTree.ForNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]); // TODO: проверить узлы содержимого for }
public void TestBinary() { var tree = ASTParserTests.Parse("begin a:=x-z*3/(c+3-(ddz)+2) end"); Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]); Assert.AreEqual("ProgramTree.BinaryNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["$type"]); }
public void TestWrite() { var tree = ASTParserTests.Parse("begin write(2) end"); Assert.AreEqual("ProgramTree.WriteNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]); Assert.AreEqual("ProgramTree.IntNumNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["$type"]); }
public void TestIfShort() { var tree = ASTParserTests.Parse("begin if a then b := 2 end"); Assert.AreEqual("ProgramTree.IfNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]); Assert.AreEqual("ProgramTree.IdNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["$type"]); Assert.AreEqual("a", ((string)tree["StList"]["$values"][0]["Expr"]["Name"]).Trim()); Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)tree["StList"]["$values"][0]["St1"]["$type"]); }
public void TestWhile() { var tree = ASTParserTests.Parse("begin while 2 do a:=2 end"); Assert.AreEqual("ProgramTree.WhileNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]); Assert.AreEqual("ProgramTree.IntNumNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["$type"]); Assert.AreEqual("2", ((string)tree["StList"]["$values"][0]["Expr"]["Num"]).Trim()); Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)tree["StList"]["$values"][0]["Stat"]["$type"]); }
public void TestBinary() { var tree = ASTParserTests.Parse("begin a := (5*2) * (9-1) end"); Assert.AreEqual("ProgramTree.BinaryNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["$type"]); Assert.AreEqual("ProgramTree.BinaryNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["Left"]["$type"]); Assert.AreEqual("ProgramTree.IntNumNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["Left"]["Left"]["$type"]); Assert.AreEqual("5", ((string)tree["StList"]["$values"][0]["Expr"]["Left"]["Left"]["Num"]).Trim()); }
public void TestIfElse() { var tree = ASTParserTests.Parse("begin if 7 then a:= 5 else a:= 9 end"); Assert.AreEqual("ProgramTree.IfNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]); Assert.AreEqual("ProgramTree.IntNumNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["$type"]); Assert.AreEqual("7", ((string)tree["StList"]["$values"][0]["Expr"]["Num"]).Trim()); Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)tree["StList"]["$values"][0]["StFalse"]["$type"]); }
public void TestIf() { var tree = ASTParserTests.Parse("begin if 2 then a:=2 else a:=3 end"); Assert.AreEqual("ProgramTree.IfNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]); tree = ASTParserTests.Parse("begin if 2 then a:=2 end"); Assert.AreEqual("ProgramTree.IfNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]); // TODO: дописать тест }
public void TestVarDef() { var tree = ASTParserTests.Parse("begin var a, b, c end"); Assert.AreEqual("ProgramTree.VarDefNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]); tree = ASTParserTests.Parse("begin var a end"); Assert.AreEqual("ProgramTree.VarDefNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]); // TODO: дописать тест }
public void TestFor() { var tree = ASTParserTests.Parse("begin for i:=2 to 10 do a:=2 end"); Assert.AreEqual("ProgramTree.ForNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]); Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)tree["StList"]["$values"][0]["Stlist"]["$type"]); Assert.AreEqual("ProgramTree.IntNumNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["$type"]); Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)tree["StList"]["$values"][0]["Assign"]["$type"]); }
public void TestRepeat() { var tree = ASTParserTests.Parse("begin repeat a:=2 until 2 end"); Assert.AreEqual("ProgramTree.RepeatNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]); Assert.AreEqual("2", ((string)tree["StList"]["$values"][0]["Expr"]["Num"]).Trim()); Assert.AreEqual("ProgramTree.IntNumNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["$type"]); Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)tree["StList"]["$values"][0]["StList"]["$values"][0]["StList"]["$values"][0]["$type"]); }
public void TestIfFull() { var tree = ASTParserTests.Parse("begin if b then c := 3 else b := 4 end"); Assert.AreEqual("ProgramTree.IfNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]); Assert.AreEqual("ProgramTree.IdNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["$type"]); Assert.AreEqual("b", ((string)tree["StList"]["$values"][0]["Expr"]["Name"]).Trim()); Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)tree["StList"]["$values"][0]["St1"]["$type"]); Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)tree["StList"]["$values"][0]["St2"]["$type"]); }
public void TestVar() { var tree = ASTParserTests.Parse("begin var a, b end"); Assert.AreEqual("ProgramTree.VarDefNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]); Assert.AreEqual("ProgramTree.IdNode, SimpleLang", (string)tree["StList"]["$values"][0]["IdL"]["$values"][0]["$type"]); Assert.AreEqual("a", ((string)tree["StList"]["$values"][0]["IdL"]["$values"][0]["Name"]).Trim()); Assert.AreEqual("ProgramTree.IdNode, SimpleLang", (string)tree["StList"]["$values"][0]["IdL"]["$values"][1]["$type"]); Assert.AreEqual("b", ((string)tree["StList"]["$values"][0]["IdL"]["$values"][1]["Name"]).Trim()); }
public void TestBinaryWrite() { var tree = ASTParserTests.Parse("begin write(a / 10) end"); Assert.AreEqual("ProgramTree.BinaryNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["$type"]); Assert.AreEqual("ProgramTree.IdNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["Left"]["$type"]); Assert.AreEqual("ProgramTree.IntNumNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["Right"]["$type"]); Assert.AreEqual("a", ((string)tree["StList"]["$values"][0]["Expr"]["Left"]["Name"]).Trim()); Assert.AreEqual("10", ((string)tree["StList"]["$values"][0]["Expr"]["Right"]["Num"]).Trim()); Assert.AreEqual("/", ((string)tree["StList"]["$values"][0]["Expr"]["Operation"]).Trim()); }
public void TestBinary() { var tree = ASTParserTests.Parse("begin a:=b end"); Assert.AreEqual("ProgramTree.IdNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["$type"]); tree = ASTParserTests.Parse("begin c:=a+b/c end"); Assert.AreEqual("ProgramTree.BinaryNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["$type"]); tree = ASTParserTests.Parse("begin a:=b/c end"); Assert.AreEqual("ProgramTree.BinaryNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["$type"]); // TODO: дописать тест }
public void TestVarDef() { var tree = ASTParserTests.Parse("begin var a,b,d end"); var varNode = tree["StList"]["$values"][0]; Assert.AreEqual("ProgramTree.VarDefNode, SimpleLang", (string)varNode["$type"]); Assert.AreEqual(3, ((JArray)varNode["IdentList"]["$values"]).Count); Assert.AreEqual("a", (string)varNode["IdentList"]["$values"][0]["Name"]); Assert.AreEqual("b", (string)varNode["IdentList"]["$values"][1]["Name"]); Assert.AreEqual("d", (string)varNode["IdentList"]["$values"][2]["Name"]); }
public void TestFor() { var tree = ASTParserTests.Parse("begin for i:=2 to 10 do a:=(2+b)/(c-a*2) end"); Assert.AreEqual("ProgramTree.ForNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]); Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)tree["StList"]["$values"][0]["Asgn"]["$type"]); Assert.AreEqual("i", ((string)tree["StList"]["$values"][0]["Asgn"]["Id"]["Name"]).Trim()); Assert.AreEqual("2", ((string)tree["StList"]["$values"][0]["Asgn"]["Expr"]["Num"]).Trim()); Assert.AreEqual("ProgramTree.IntNumNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["$type"]); Assert.AreEqual("10", ((string)tree["StList"]["$values"][0]["Expr"]["Num"]).Trim()); Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)tree["StList"]["$values"][0]["Stat"]["$type"]); }
public void TestRepeat() { var tree = ASTParserTests.Parse("begin repeat a:=2 until 2 end"); Assert.AreEqual("ProgramTree.RepeatNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]); // TODO: проверить узлы содержимого repeat var assignNode = tree["StList"]["$values"][0]["Block"]["StList"]["$values"][0]; Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)assignNode["$type"]); Assert.AreEqual("2", ((string)assignNode["Expr"]["Num"]).Trim()); Assert.AreEqual("0", ((string)assignNode["AssOp"]).Trim()); Assert.AreEqual("a", ((string)assignNode["Id"]["Name"]).Trim()); Assert.AreEqual("2", (string)tree["StList"]["$values"][0]["Expr"]["Num"]); }
public void TestIf() { var tree1 = ASTParserTests.Parse("begin if 2 then a:= 3 else c:= 8 end"); Assert.AreEqual("ProgramTree.IfNode, SimpleLang", (string)tree1["StList"]["$values"][0]["$type"]); Assert.AreEqual("ProgramTree.IntNumNode, SimpleLang", (string)tree1["StList"]["$values"][0]["Expr"]["$type"]); Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)tree1["StList"]["$values"][0]["Stat_first"]["$type"]); Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)tree1["StList"]["$values"][0]["Stat_second"]["$type"]); var tree2 = ASTParserTests.Parse("begin if 2 then a:= 3 end"); Assert.AreEqual("ProgramTree.IfNode, SimpleLang", (string)tree2["StList"]["$values"][0]["$type"]); Assert.AreEqual("ProgramTree.IntNumNode, SimpleLang", (string)tree2["StList"]["$values"][0]["Expr"]["$type"]); Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)tree2["StList"]["$values"][0]["Stat_first"]["$type"]); }
public void TestBinaryAssign() { var tree = ASTParserTests.Parse("begin a := (3 + 4) * 7 end"); Assert.AreEqual("ProgramTree.BinaryNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["$type"]); Assert.AreEqual("ProgramTree.BinaryNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["Left"]["$type"]); Assert.AreEqual("ProgramTree.IntNumNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["Left"]["Left"]["$type"]); Assert.AreEqual("3", ((string)tree["StList"]["$values"][0]["Expr"]["Left"]["Left"]["Num"]).Trim()); Assert.AreEqual("ProgramTree.IntNumNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["Left"]["Right"]["$type"]); Assert.AreEqual("4", ((string)tree["StList"]["$values"][0]["Expr"]["Left"]["Right"]["Num"]).Trim()); Assert.AreEqual("+", ((string)tree["StList"]["$values"][0]["Expr"]["Left"]["Operation"]).Trim()); Assert.AreEqual("ProgramTree.IntNumNode, SimpleLang", (string)tree["StList"]["$values"][0]["Expr"]["Right"]["$type"]); Assert.AreEqual("7", ((string)tree["StList"]["$values"][0]["Expr"]["Right"]["Num"]).Trim()); Assert.AreEqual("*", ((string)tree["StList"]["$values"][0]["Expr"]["Operation"]).Trim()); }
public void TestFor() { var tree = ASTParserTests.Parse("begin for i:=2 to 10 do a:=2 end"); Assert.AreEqual("ProgramTree.ForNode, SimpleLang", (string)tree["StList"]["$values"][0]["$type"]); // TODO: проверить узлы содержимого for var assigmentNode = tree["StList"]["$values"][0]["AssignNode"]; Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)assigmentNode["$type"]); Assert.AreEqual("2", ((string)assigmentNode["Expr"]["Num"]).Trim()); Assert.AreEqual("0", ((string)assigmentNode["AssOp"]).Trim()); Assert.AreEqual("i", ((string)assigmentNode["Id"]["Name"]).Trim()); Assert.AreEqual("10", (string)tree["StList"]["$values"][0]["Expr"]["Num"]); var statementNode = tree["StList"]["$values"][0]["Stat"]; Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)statementNode["$type"]); Assert.AreEqual("2", ((string)statementNode["Expr"]["Num"]).Trim()); Assert.AreEqual("0", ((string)statementNode["AssOp"]).Trim()); Assert.AreEqual("a", ((string)statementNode["Id"]["Name"]).Trim()); }
public void TestBinary() { var tree = ASTParserTests.Parse("begin a:=x-z*3/(c+3-(ddz)+2) end"); var expr = tree["StList"]["$values"][0]["Expr"]; Assert.AreEqual("a", (string)tree["StList"]["$values"][0]["Id"]["Name"]); Assert.AreEqual("x", (string)expr["Left"]["Name"]); Assert.AreEqual("-", (string)expr["Operation"]); Assert.AreEqual("ProgramTree.BinaryNode, SimpleLang", (string)expr["Right"]["$type"]); Assert.AreEqual("*", (string)expr["Right"]["Operation"]); Assert.AreEqual("3", (string)expr["Right"]["Left"]["Right"]["Num"]); Assert.AreEqual("/", (string)expr["Right"]["Left"]["Operation"]); Assert.AreEqual("z", (string)expr["Right"]["Left"]["Left"]["Name"]); Assert.AreEqual("+", (string)expr["Right"]["Right"]["Operation"]); Assert.AreEqual("c", (string)expr["Right"]["Right"]["Left"]["Left"]["Left"]["Name"]); Assert.AreEqual("-", (string)expr["Right"]["Right"]["Left"]["Operation"]); Assert.AreEqual("3", (string)expr["Right"]["Right"]["Left"]["Left"]["Right"]["Num"]); Assert.AreEqual("ddz", (string)expr["Right"]["Right"]["Left"]["Right"]["Name"]); Assert.AreEqual("+", (string)expr["Right"]["Right"]["Left"]["Left"]["Operation"]); Assert.AreEqual("2", (string)expr["Right"]["Right"]["Right"]["Num"]); }
public void TestIf() { var tree = ASTParserTests.Parse("begin if 2 then a:=3 else c:=8; if 3 then z:=10 end"); var firstIf = tree["StList"]["$values"][0]; Assert.AreEqual("ProgramTree.IfElseNode, SimpleLang", (string)firstIf["$type"]); Assert.AreEqual("2", (string)firstIf["Expr"]["Num"]); var trueAssign = firstIf["Stat"]; Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)trueAssign["$type"]); Assert.AreEqual("3", ((string)trueAssign["Expr"]["Num"]).Trim()); Assert.AreEqual("0", ((string)trueAssign["AssOp"]).Trim()); Assert.AreEqual("a", ((string)trueAssign["Id"]["Name"]).Trim()); var falseAssign = firstIf["ElseStat"]; Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)falseAssign["$type"]); Assert.AreEqual("8", ((string)falseAssign["Expr"]["Num"]).Trim()); Assert.AreEqual("0", ((string)falseAssign["AssOp"]).Trim()); Assert.AreEqual("c", ((string)falseAssign["Id"]["Name"]).Trim()); var secondIf = tree["StList"]["$values"][1]; Assert.AreEqual("ProgramTree.IfNode, SimpleLang", (string)secondIf["$type"]); Assert.AreEqual("3", (string)secondIf["Expr"]["Num"]); var secondIfAssign = secondIf["Stat"]; Assert.AreEqual("ProgramTree.AssignNode, SimpleLang", (string)secondIfAssign["$type"]); Assert.AreEqual("10", ((string)secondIfAssign["Expr"]["Num"]).Trim()); Assert.AreEqual("0", ((string)secondIfAssign["AssOp"]).Trim()); Assert.AreEqual("z", ((string)secondIfAssign["Id"]["Name"]).Trim()); }