Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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();
        }