public void Export_2Doubles2Ints_2ndLastNode_Value() { string input = "export 5.5 + 33.3 + 2 + 1 {\"\"}"; AST ast = new LexParser(new ASTBuilder(new ExpressionHelper())).Run(input, false); IntegerLiteralExpression node = (IntegerLiteralExpression)ast.Exports[0].ExportValue.Children[0].Children[1]; Assert.AreEqual(2, node.Value); }
public void Export_2Doubles_lastNode_Value() { string input = "export 5.5 + 33.3 {\"\"}"; AST ast = new LexParser(new ASTBuilder(new ExpressionHelper())).Run(input, false); RealLiteralExpression node = (RealLiteralExpression)ast.Exports[0].ExportValue.Children[1]; Assert.AreEqual(33.3, node.Value); }
public void Function_int_int_InputType() { string input = "func: (integer) -> integer " + "func(x) = x + 1"; AST ast = new LexParser(new ASTBuilder(new ExpressionHelper())).Run(input, false); var func = ast.Functions[0]; Assert.AreEqual(ASTLib.Nodes.TypeNodes.TypeEnum.Integer, func.FunctionType.ParameterTypes[0].Type); }
public void Function_int_int_FuncName() { string input = "func: (integer) -> integer " + "func(x) = x + 1"; AST ast = new LexParser(new ASTBuilder(new ExpressionHelper())).Run(input, false); var func = ast.Functions[0]; Assert.AreEqual("func", func.Identifier); }
static void Main(string[] args) { var example = "Have a `ri(1,100)`(chance)% chance when struck in combat of increasing armor by `ri(1,999)`(armor) for `randomt(1s,1d)`. That chance is: `chance`"; var exampleTokens = new LexParser(example).Transpile(); Console.WriteLine($"Input string: {exampleTokens.ToString()}"); Console.WriteLine(); var engine = new LexEngine(); engine.RegisterLibrary <SystemLibrary>(); engine.RegisterLibrary <WoWLibrary>(); for (var i = 0; i < 15; i++) { Console.WriteLine($"Example {i + 1}: {exampleTokens.Build(engine)}"); } Console.ReadLine(); }