示例#1
0
        public void FunctionReturnTests()
        {
            VariableEnvironment variables           = new VariableEnvironment();
            FunctionEnvironment functionEnvironment = new FunctionEnvironment();

            variables.DeclareVariable("abc", BogieLangType.BOOL);
            variables.DefineVariable("abc", true);

            string            txt               = "return abc";
            AntlrInputStream  inputStream       = new AntlrInputStream(txt);
            BogieLangLexer    lexer             = new BogieLangLexer(inputStream);
            CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
            BogieLangParser   parser            = new BogieLangParser(commonTokenStream);

            BogieLangParser.FunctionReturnContext functionReturnContext = parser.functionReturn();
            BogieLangBaseVisitor <object>         visitor = new BogieLangBaseVisitor <object>();

            visitor.Visit(functionReturnContext);
            FunctionReturn functionReturn = FunctionReturn.Compile(functionReturnContext);

            Assert.True((bool)functionReturn.Execute(functionEnvironment, variables) == true);

            variables.Clear();
            txt                   = "return 10.0";
            inputStream           = new AntlrInputStream(txt);
            lexer                 = new BogieLangLexer(inputStream);
            commonTokenStream     = new CommonTokenStream(lexer);
            parser                = new BogieLangParser(commonTokenStream);
            functionReturnContext = parser.functionReturn();
            visitor               = new BogieLangBaseVisitor <object>();
            visitor.Visit(functionReturnContext);
            functionReturn = FunctionReturn.Compile(functionReturnContext);
            Assert.True((double)functionReturn.Execute(functionEnvironment, variables) == 10.0);
        }
示例#2
0
        public void VarDefinitionTests()
        {
            string            txt               = "var=123";
            AntlrInputStream  inputStream       = new AntlrInputStream(txt);
            BogieLangLexer    lexer             = new BogieLangLexer(inputStream);
            CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
            BogieLangParser   parser            = new BogieLangParser(commonTokenStream);

            BogieLangParser.VarDefinitionContext varDefinitionContext = parser.varDefinition();
            BogieLangBaseVisitor <object>        visitor = new BogieLangBaseVisitor <object>();

            visitor.Visit(varDefinitionContext);
            VarDefinition varDefinition = VarDefinition.Compile(varDefinitionContext);

            Assert.True(varDefinition.Identifier == "var");
            Assert.True(varDefinition.Expression.Literal.Integer == 123);


            txt                  = "var=funcCall(\"arg\")";
            inputStream          = new AntlrInputStream(txt);
            lexer                = new BogieLangLexer(inputStream);
            commonTokenStream    = new CommonTokenStream(lexer);
            parser               = new BogieLangParser(commonTokenStream);
            varDefinitionContext = parser.varDefinition();
            visitor              = new BogieLangBaseVisitor <object>();
            visitor.Visit(varDefinitionContext);
            varDefinition = VarDefinition.Compile(varDefinitionContext);
            Assert.True(varDefinition.Identifier == "var");
            Assert.True(varDefinition.Expression.FunctionCall.Identifier == "funcCall");
        }
示例#3
0
        public void FunctionReturnTests()
        {
            string            txt               = "return abc";
            AntlrInputStream  inputStream       = new AntlrInputStream(txt);
            BogieLangLexer    lexer             = new BogieLangLexer(inputStream);
            CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
            BogieLangParser   parser            = new BogieLangParser(commonTokenStream);

            BogieLangParser.FunctionReturnContext functionReturnContext = parser.functionReturn();
            BogieLangBaseVisitor <object>         visitor = new BogieLangBaseVisitor <object>();

            visitor.Visit(functionReturnContext);
            FunctionReturn functionReturn = FunctionReturn.Compile(functionReturnContext);

            Assert.True(functionReturn.Expression.Identifier == "abc");


            txt                   = "return 10.0";
            inputStream           = new AntlrInputStream(txt);
            lexer                 = new BogieLangLexer(inputStream);
            commonTokenStream     = new CommonTokenStream(lexer);
            parser                = new BogieLangParser(commonTokenStream);
            functionReturnContext = parser.functionReturn();
            visitor               = new BogieLangBaseVisitor <object>();
            visitor.Visit(functionReturnContext);
            functionReturn = FunctionReturn.Compile(functionReturnContext);
            Assert.True(functionReturn.Expression.Literal.Real == 10.0);
        }
示例#4
0
        public void IfTests()
        {
            VariableEnvironment variables           = new VariableEnvironment();
            FunctionEnvironment functionEnvironment = new FunctionEnvironment();

            string            txt               = "if(true){}";
            AntlrInputStream  inputStream       = new AntlrInputStream(txt);
            BogieLangLexer    lexer             = new BogieLangLexer(inputStream);
            CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
            BogieLangParser   parser            = new BogieLangParser(commonTokenStream);

            BogieLangParser.IfControlContext ifControlContext = parser.ifControl();
            BogieLangBaseVisitor <object>    visitor          = new BogieLangBaseVisitor <object>();

            visitor.Visit(ifControlContext);
            IfControl ifControl = IfControl.Compile(ifControlContext);

            Assert.True(ifControl.Execute(functionEnvironment, variables) == null);



            txt               = "if(true){int b=0}";
            inputStream       = new AntlrInputStream(txt);
            lexer             = new BogieLangLexer(inputStream);
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            ifControlContext  = parser.ifControl();
            visitor           = new BogieLangBaseVisitor <object>();
            visitor.Visit(ifControlContext);
            ifControl = IfControl.Compile(ifControlContext);
            Assert.True(ifControl.Execute(functionEnvironment, variables) == null);
            Assert.True(!variables.IsVariableDeclared("b"));
        }
示例#5
0
        public void VarDeclarationTests()
        {
            string           txt         = "int var";
            AntlrInputStream inputStream = new AntlrInputStream(txt);
            BogieLangLexer   lexer       = new BogieLangLexer(inputStream);

            lexer.AddErrorListener(new ParserErrorHandler <int>());
            CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
            BogieLangParser   parser            = new BogieLangParser(commonTokenStream);

            parser.AddErrorListener(new ParserErrorHandler <object>());
            BogieLangParser.VarDeclarationContext VarDeclarationContext = parser.varDeclaration();
            BogieLangBaseVisitor <object>         visitor = new BogieLangBaseVisitor <object>();

            visitor.Visit(VarDeclarationContext);
            Assert.True(parser.NumberOfSyntaxErrors == 0);


            txt         = "int var=123";
            inputStream = new AntlrInputStream(txt);
            lexer       = new BogieLangLexer(inputStream);
            lexer.AddErrorListener(new ParserErrorHandler <int>());
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            parser.AddErrorListener(new ParserErrorHandler <object>());
            VarDeclarationContext = parser.varDeclaration();
            visitor = new BogieLangBaseVisitor <object>();
            visitor.Visit(VarDeclarationContext);
            Assert.True(parser.NumberOfSyntaxErrors == 0);


            txt         = "int var=funcCall()";
            inputStream = new AntlrInputStream(txt);
            lexer       = new BogieLangLexer(inputStream);
            lexer.AddErrorListener(new ParserErrorHandler <int>());
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            parser.AddErrorListener(new ParserErrorHandler <object>());
            VarDeclarationContext = parser.varDeclaration();
            visitor = new BogieLangBaseVisitor <object>();
            visitor.Visit(VarDeclarationContext);
            Assert.True(parser.NumberOfSyntaxErrors == 0);


            txt         = " \t     \nint \t     \nvar \t     \n= \t     \nfuncCall() \t     \n";
            inputStream = new AntlrInputStream(txt);
            lexer       = new BogieLangLexer(inputStream);
            lexer.AddErrorListener(new ParserErrorHandler <int>());
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            parser.AddErrorListener(new ParserErrorHandler <object>());
            VarDeclarationContext = parser.varDeclaration();
            visitor = new BogieLangBaseVisitor <object>();
            visitor.Visit(VarDeclarationContext);
            Assert.True(parser.NumberOfSyntaxErrors == 0);
        }
示例#6
0
        public void LiteralTests()
        {
            string           txt         = "1";
            AntlrInputStream inputStream = new AntlrInputStream(txt);
            BogieLangLexer   lexer       = new BogieLangLexer(inputStream);

            lexer.AddErrorListener(new ParserErrorHandler <int>());
            CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
            BogieLangParser   parser            = new BogieLangParser(commonTokenStream);

            parser.AddErrorListener(new ParserErrorHandler <object>());
            BogieLangParser.LiteralContext literalContext = parser.literal();
            BogieLangBaseVisitor <object>  visitor        = new BogieLangBaseVisitor <object>();

            visitor.Visit(literalContext);
            Assert.True(parser.NumberOfSyntaxErrors == 0);


            txt         = "1.0";
            inputStream = new AntlrInputStream(txt);
            lexer       = new BogieLangLexer(inputStream);
            lexer.AddErrorListener(new ParserErrorHandler <int>());
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            parser.AddErrorListener(new ParserErrorHandler <object>());
            literalContext = parser.literal();
            visitor        = new BogieLangBaseVisitor <object>();
            visitor.Visit(literalContext);
            Assert.True(parser.NumberOfSyntaxErrors == 0);


            txt         = "false";
            inputStream = new AntlrInputStream(txt);
            lexer       = new BogieLangLexer(inputStream);
            lexer.AddErrorListener(new ParserErrorHandler <int>());
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            parser.AddErrorListener(new ParserErrorHandler <object>());
            literalContext = parser.literal();
            visitor        = new BogieLangBaseVisitor <object>();
            visitor.Visit(literalContext);
            Assert.True(parser.NumberOfSyntaxErrors == 0);


            txt         = "\"asd8 99asd\"";
            inputStream = new AntlrInputStream(txt);
            lexer       = new BogieLangLexer(inputStream);
            lexer.AddErrorListener(new ParserErrorHandler <int>());
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            parser.AddErrorListener(new ParserErrorHandler <object>());
            literalContext = parser.literal();
            visitor        = new BogieLangBaseVisitor <object>();
            visitor.Visit(literalContext);
            Assert.True(parser.NumberOfSyntaxErrors == 0);
        }
示例#7
0
        public void ProgramTests()
        {
            string           txt         = "void funcName(){}";
            AntlrInputStream inputStream = new AntlrInputStream(txt);
            BogieLangLexer   lexer       = new BogieLangLexer(inputStream);

            lexer.AddErrorListener(new ParserErrorHandler <int>());
            CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
            BogieLangParser   parser            = new BogieLangParser(commonTokenStream);

            parser.AddErrorListener(new ParserErrorHandler <object>());
            BogieLangParser.ProgramContext ProgramContext = parser.program();
            BogieLangBaseVisitor <object>  visitor        = new BogieLangBaseVisitor <object>();

            visitor.Visit(ProgramContext);
            Assert.True(parser.NumberOfSyntaxErrors == 0);


            txt         = "void funcName(int abc,string str,void lol){}";
            inputStream = new AntlrInputStream(txt);
            lexer       = new BogieLangLexer(inputStream);
            lexer.AddErrorListener(new ParserErrorHandler <int>());
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            parser.AddErrorListener(new ParserErrorHandler <object>());
            ProgramContext = parser.program();
            visitor        = new BogieLangBaseVisitor <object>();
            visitor.Visit(ProgramContext);
            Assert.True(parser.NumberOfSyntaxErrors == 0);


            txt = "void funcName(){}" +
                  "void funcName(int abc,string str,void lol){}" +
                  "void funcName(int abc,string str,void lol){int intvar" +
                  "\nint intvar=123" +
                  "\nintvar=0.1" +
                  "\nfuncCall(lol)" +
                  "\nreturn funcCall()" +
                  "\n}";
            inputStream = new AntlrInputStream(txt);
            lexer       = new BogieLangLexer(inputStream);
            lexer.AddErrorListener(new ParserErrorHandler <int>());
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            parser.AddErrorListener(new ParserErrorHandler <object>());
            ProgramContext = parser.program();
            visitor        = new BogieLangBaseVisitor <object>();
            visitor.Visit(ProgramContext);
            Assert.True(parser.NumberOfSyntaxErrors == 0);
        }
示例#8
0
        public void WhileTests()
        {
            string           txt         = "while(true){}";
            AntlrInputStream inputStream = new AntlrInputStream(txt);
            BogieLangLexer   lexer       = new BogieLangLexer(inputStream);

            lexer.AddErrorListener(new ParserErrorHandler <int>());
            CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
            BogieLangParser   parser            = new BogieLangParser(commonTokenStream);

            parser.AddErrorListener(new ParserErrorHandler <object>());
            BogieLangParser.WhileControlContext WhileControlContext = parser.whileControl();
            BogieLangBaseVisitor <object>       visitor             = new BogieLangBaseVisitor <object>();

            visitor.Visit(WhileControlContext);
            Assert.True(parser.NumberOfSyntaxErrors == 0);


            txt         = "while(true){int b=0}";
            inputStream = new AntlrInputStream(txt);
            lexer       = new BogieLangLexer(inputStream);
            lexer.AddErrorListener(new ParserErrorHandler <int>());
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            parser.AddErrorListener(new ParserErrorHandler <object>());
            WhileControlContext = parser.whileControl();
            visitor             = new BogieLangBaseVisitor <object>();
            visitor.Visit(WhileControlContext);
            Assert.True(parser.NumberOfSyntaxErrors == 0);


            txt         = @"while(true)
{
    int b=0
    b = 1
    funcCall(b)
    while(false){return 1}
    return 0
}";
            inputStream = new AntlrInputStream(txt);
            lexer       = new BogieLangLexer(inputStream);
            lexer.AddErrorListener(new ParserErrorHandler <int>());
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            parser.AddErrorListener(new ParserErrorHandler <object>());
            WhileControlContext = parser.whileControl();
            visitor             = new BogieLangBaseVisitor <object>();
            visitor.Visit(WhileControlContext);
            Assert.True(parser.NumberOfSyntaxErrors == 0);
        }
示例#9
0
        public void ProgramTests()
        {
            string            txt               = @"
bool Main()
{
    return func(true)
}

bool func(bool b)
{
    if(b){return false}
    return true
}";
            AntlrInputStream  inputStream       = new AntlrInputStream(txt);
            BogieLangLexer    lexer             = new BogieLangLexer(inputStream);
            CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
            BogieLangParser   parser            = new BogieLangParser(commonTokenStream);

            BogieLangParser.ProgramContext programContext = parser.program();
            BogieLangBaseVisitor <object>  visitor        = new BogieLangBaseVisitor <object>();

            visitor.Visit(programContext);
            Program program = Program.Compile(programContext);

            Assert.True((bool)program.Execute() == false);


            txt               = @"
int Main()
{
    return fibonacci(8)
}

int fibonacci(int n)
{
    if(n==0){return 0}
    if(n==1){return 1}
    return fibonacci(n-2)+fibonacci(n-1)
}";
            inputStream       = new AntlrInputStream(txt);
            lexer             = new BogieLangLexer(inputStream);
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            programContext    = parser.program();
            visitor           = new BogieLangBaseVisitor <object>();
            visitor.Visit(programContext);
            program = Program.Compile(programContext);
            Assert.True((int)program.Execute() == 21);
        }
示例#10
0
        public void FunctionCallTests()
        {
            string            txt               = "funcCall()";
            AntlrInputStream  inputStream       = new AntlrInputStream(txt);
            BogieLangLexer    lexer             = new BogieLangLexer(inputStream);
            CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
            BogieLangParser   parser            = new BogieLangParser(commonTokenStream);

            BogieLangParser.FunctionCallContext functionCallContext = parser.functionCall();
            BogieLangBaseVisitor <object>       visitor             = new BogieLangBaseVisitor <object>();

            visitor.Visit(functionCallContext);
            FunctionCall functionCall = FunctionCall.Compile(functionCallContext);

            Assert.True(functionCall.Identifier == "funcCall");
            Assert.True(functionCall.Arguments.Count == 0);


            txt         = "funcCall(\"arg\")";
            inputStream = new AntlrInputStream(txt);
            lexer       = new BogieLangLexer(inputStream);
            lexer.AddErrorListener(new ParserErrorHandler <int>());
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            parser.AddErrorListener(new ParserErrorHandler <object>());
            functionCallContext = parser.functionCall();
            visitor             = new BogieLangBaseVisitor <object>();
            visitor.Visit(functionCallContext);
            functionCall = FunctionCall.Compile(functionCallContext);
            Assert.True(functionCall.Identifier == "funcCall");
            Assert.True(functionCall.Arguments[0].Literal.String == "arg");


            txt         = "funcCall(10.0,funcCall2())";
            inputStream = new AntlrInputStream(txt);
            lexer       = new BogieLangLexer(inputStream);
            lexer.AddErrorListener(new ParserErrorHandler <int>());
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            parser.AddErrorListener(new ParserErrorHandler <object>());
            functionCallContext = parser.functionCall();
            visitor             = new BogieLangBaseVisitor <object>();
            visitor.Visit(functionCallContext);
            functionCall = FunctionCall.Compile(functionCallContext);
            Assert.True(functionCall.Identifier == "funcCall");
            Assert.True(functionCall.Arguments[0].Literal.Real == 10.0);
            Assert.True(functionCall.Arguments[1].FunctionCall.Identifier == "funcCall2");
        }
示例#11
0
        public void FunctionReturnTests()
        {
            string           txt         = "return abc";
            AntlrInputStream inputStream = new AntlrInputStream(txt);
            BogieLangLexer   lexer       = new BogieLangLexer(inputStream);

            lexer.AddErrorListener(new ParserErrorHandler <int>());
            CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
            BogieLangParser   parser            = new BogieLangParser(commonTokenStream);

            parser.AddErrorListener(new ParserErrorHandler <object>());
            BogieLangParser.FunctionReturnContext FunctionReturnContext = parser.functionReturn();
            BogieLangBaseVisitor <object>         visitor = new BogieLangBaseVisitor <object>();

            visitor.Visit(FunctionReturnContext);
            Assert.True(parser.NumberOfSyntaxErrors == 0);


            txt         = "return 10.0";
            inputStream = new AntlrInputStream(txt);
            lexer       = new BogieLangLexer(inputStream);
            lexer.AddErrorListener(new ParserErrorHandler <int>());
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            parser.AddErrorListener(new ParserErrorHandler <object>());
            FunctionReturnContext = parser.functionReturn();
            visitor = new BogieLangBaseVisitor <object>();
            visitor.Visit(FunctionReturnContext);
            Assert.True(parser.NumberOfSyntaxErrors == 0);

            txt         = " \t     \nreturn \t     \nabc \t     \n";
            inputStream = new AntlrInputStream(txt);
            lexer       = new BogieLangLexer(inputStream);
            lexer.AddErrorListener(new ParserErrorHandler <int>());
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            parser.AddErrorListener(new ParserErrorHandler <object>());
            FunctionReturnContext = parser.functionReturn();
            visitor = new BogieLangBaseVisitor <object>();
            visitor.Visit(FunctionReturnContext);
            Assert.True(parser.NumberOfSyntaxErrors == 0);
        }
示例#12
0
        public void WhileTests()
        {
            VariableEnvironment variables           = new VariableEnvironment();
            FunctionEnvironment functionEnvironment = new FunctionEnvironment();

            variables.DeclareVariable("loop", BogieLangType.BOOL);
            variables.DefineVariable("loop", true);

            string            txt               = "while(loop){loop = false}";
            AntlrInputStream  inputStream       = new AntlrInputStream(txt);
            BogieLangLexer    lexer             = new BogieLangLexer(inputStream);
            CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
            BogieLangParser   parser            = new BogieLangParser(commonTokenStream);

            BogieLangParser.WhileControlContext whileControlContext = parser.whileControl();
            BogieLangBaseVisitor <object>       visitor             = new BogieLangBaseVisitor <object>();

            visitor.Visit(whileControlContext);
            WhileControl whileControl = WhileControl.Compile(whileControlContext);

            Assert.True(whileControl.Execute(functionEnvironment, variables) == null);
            Assert.True((bool)variables["loop"].Value == false);



            txt                 = " while(loop){loop = false int b=0}";
            inputStream         = new AntlrInputStream(txt);
            lexer               = new BogieLangLexer(inputStream);
            commonTokenStream   = new CommonTokenStream(lexer);
            parser              = new BogieLangParser(commonTokenStream);
            whileControlContext = parser.whileControl();
            visitor             = new BogieLangBaseVisitor <object>();
            visitor.Visit(whileControlContext);
            whileControl = WhileControl.Compile(whileControlContext);
            Assert.True(whileControl.Execute(functionEnvironment, variables) == null);
            Assert.True((bool)variables["loop"].Value == false);
            Assert.True(!variables.IsVariableDeclared("b"));
        }
示例#13
0
        public void VarDefinitionTests()
        {
            VariableEnvironment variables           = new VariableEnvironment();
            FunctionEnvironment functionEnvironment = new FunctionEnvironment();

            variables.DeclareVariable("var", BogieLangType.INTEGER);
            string            txt               = "var=123";
            AntlrInputStream  inputStream       = new AntlrInputStream(txt);
            BogieLangLexer    lexer             = new BogieLangLexer(inputStream);
            CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
            BogieLangParser   parser            = new BogieLangParser(commonTokenStream);

            BogieLangParser.VarDefinitionContext varDefinitionContext = parser.varDefinition();
            BogieLangBaseVisitor <object>        visitor = new BogieLangBaseVisitor <object>();

            visitor.Visit(varDefinitionContext);
            VarDefinition varDefinition = VarDefinition.Compile(varDefinitionContext);

            varDefinition.Execute(functionEnvironment, variables);
            Assert.True(variables["var"].BogieLangType == BogieLangType.INTEGER);
            Assert.True(variables["var"].Value is int);
            Assert.True((int)variables["var"].Value == 123);
        }
示例#14
0
        public void ExpressionTests()
        {
            string            txt               = "1";
            AntlrInputStream  inputStream       = new AntlrInputStream(txt);
            BogieLangLexer    lexer             = new BogieLangLexer(inputStream);
            CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
            BogieLangParser   parser            = new BogieLangParser(commonTokenStream);

            BogieLangParser.ExpressionContext expressionContext = parser.expression();
            BogieLangBaseVisitor <object>     visitor           = new BogieLangBaseVisitor <object>();

            visitor.Visit(expressionContext);
            Expression expression = Expression.Compile(expressionContext, null);

            Assert.True(expression.Identifier == null);
            Assert.True(expression.Literal.Integer == 1);
            Assert.True(expression.FunctionCall == null);
            Assert.True(expression.Operator == null);
            Assert.True(expression.SubExpression == null);
            Assert.True(expression.ParentExpression == null);


            txt               = "1.0";
            inputStream       = new AntlrInputStream(txt);
            lexer             = new BogieLangLexer(inputStream);
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            expressionContext = parser.expression();
            visitor           = new BogieLangBaseVisitor <object>();
            visitor.Visit(expressionContext);
            expression = Expression.Compile(expressionContext, null);
            Assert.True(expression.Identifier == null);
            Assert.True(expression.Literal.Real == 1.0);
            Assert.True(expression.FunctionCall == null);
            Assert.True(expression.Operator == null);
            Assert.True(expression.SubExpression == null);
            Assert.True(expression.ParentExpression == null);


            txt               = "false";
            inputStream       = new AntlrInputStream(txt);
            lexer             = new BogieLangLexer(inputStream);
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            expressionContext = parser.expression();
            visitor           = new BogieLangBaseVisitor <object>();
            visitor.Visit(expressionContext);
            expression = Expression.Compile(expressionContext, null);
            Assert.True(expression.Identifier == null);
            Assert.True(expression.Literal.Bool == false);
            Assert.True(expression.FunctionCall == null);
            Assert.True(expression.Operator == null);
            Assert.True(expression.SubExpression == null);
            Assert.True(expression.ParentExpression == null);


            txt               = "\"asd899asd\"";
            inputStream       = new AntlrInputStream(txt);
            lexer             = new BogieLangLexer(inputStream);
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            expressionContext = parser.expression();
            visitor           = new BogieLangBaseVisitor <object>();
            visitor.Visit(expressionContext);
            expression = Expression.Compile(expressionContext, null);
            Assert.True(expression.Identifier == null);
            Assert.True(expression.Literal.String == "asd899asd");
            Assert.True(expression.FunctionCall == null);
            Assert.True(expression.Operator == null);
            Assert.True(expression.SubExpression == null);
            Assert.True(expression.ParentExpression == null);


            txt               = "VarName";
            inputStream       = new AntlrInputStream(txt);
            lexer             = new BogieLangLexer(inputStream);
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            expressionContext = parser.expression();
            visitor           = new BogieLangBaseVisitor <object>();
            visitor.Visit(expressionContext);
            expression = Expression.Compile(expressionContext, null);
            Assert.True(expression.Identifier == "VarName");
            Assert.True(expression.Literal == null);
            Assert.True(expression.FunctionCall == null);
            Assert.True(expression.Operator == null);
            Assert.True(expression.SubExpression == null);
            Assert.True(expression.ParentExpression == null);


            txt               = "VarName + 1+ true*0";
            inputStream       = new AntlrInputStream(txt);
            lexer             = new BogieLangLexer(inputStream);
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            expressionContext = parser.expression();
            visitor           = new BogieLangBaseVisitor <object>();
            visitor.Visit(expressionContext);
            expression = Expression.Compile(expressionContext, null);
            Assert.True(expression.Identifier == "VarName");
            Assert.True(expression.Literal == null);
            Assert.True(expression.FunctionCall == null);
            Assert.True(expression.Operator == "+");
            Assert.True(expression.SubExpression.Literal.Integer == 1);
            Assert.True(expression.SubExpression.Operator == "+");
            Assert.True(expression.SubExpression.SubExpression.Literal.Bool == true);
            Assert.True(expression.SubExpression.SubExpression.Operator == "*");
            Assert.True(expression.SubExpression.SubExpression.SubExpression.Literal.Integer == 0);
            Assert.True(expression.ParentExpression == null);
            Assert.True(expression.SubExpression.ParentExpression == expression);
            Assert.True(expression.SubExpression.SubExpression.ParentExpression == expression.SubExpression);
            Assert.True(expression.SubExpression.SubExpression.SubExpression.ParentExpression == expression.SubExpression.SubExpression);


            txt               = "funcCall()";
            inputStream       = new AntlrInputStream(txt);
            lexer             = new BogieLangLexer(inputStream);
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            expressionContext = parser.expression();
            visitor           = new BogieLangBaseVisitor <object>();
            visitor.Visit(expressionContext);
            expression = Expression.Compile(expressionContext, null);
            Assert.True(expression.Identifier == null);
            Assert.True(expression.Literal == null);
            Assert.True(expression.FunctionCall.Identifier == "funcCall");
            Assert.True(expression.Operator == null);
            Assert.True(expression.SubExpression == null);
            Assert.True(expression.ParentExpression == null);
        }
示例#15
0
        public void ProgramTests()
        {
            string            txt               = "void Main(){}";
            AntlrInputStream  inputStream       = new AntlrInputStream(txt);
            BogieLangLexer    lexer             = new BogieLangLexer(inputStream);
            CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
            BogieLangParser   parser            = new BogieLangParser(commonTokenStream);

            BogieLangParser.ProgramContext programContext = parser.program();
            BogieLangBaseVisitor <object>  visitor        = new BogieLangBaseVisitor <object>();

            visitor.Visit(programContext);
            Program program = Program.Compile(programContext);

            Assert.True(program.FunctionEnvironment.IsFunctionDefined("Main"));
            Assert.True(program.FunctionEnvironment["Main"].ReturnBogieLangType == BogieLangType.VOID);
            Assert.True(program.FunctionEnvironment["Main"].Parameters.Count == 0);


            txt               = "void Main(int abc,string str,void lol){}";
            inputStream       = new AntlrInputStream(txt);
            lexer             = new BogieLangLexer(inputStream);
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            programContext    = parser.program();
            visitor           = new BogieLangBaseVisitor <object>();
            visitor.Visit(programContext);
            program = Program.Compile(programContext);
            Assert.True(program.FunctionEnvironment.IsFunctionDefined("Main"));
            Assert.True(program.FunctionEnvironment["Main"].ReturnBogieLangType == BogieLangType.VOID);
            Assert.True(program.FunctionEnvironment["Main"].Parameters[0].Item1 == BogieLangType.INTEGER);
            Assert.True(program.FunctionEnvironment["Main"].Parameters[0].Item2 == "abc");
            Assert.True(program.FunctionEnvironment["Main"].Parameters[1].Item1 == BogieLangType.STRING);
            Assert.True(program.FunctionEnvironment["Main"].Parameters[1].Item2 == "str");
            Assert.True(program.FunctionEnvironment["Main"].Parameters[2].Item1 == BogieLangType.VOID);
            Assert.True(program.FunctionEnvironment["Main"].Parameters[2].Item2 == "lol");
            Assert.True(program.FunctionEnvironment["Main"].Body.Count == 0);


            txt = "void Main(){}" +
                  "void funcName1(int abc,string str,void lol){}" +
                  "void funcName2(int abc,string str,void lol){int intvar" +
                  "\nint intvar=123" +
                  "\nintvar=0.1" +
                  "\nfuncCall(lol)" +
                  "\nreturn funcCall()" +
                  "\n}";
            inputStream       = new AntlrInputStream(txt);
            lexer             = new BogieLangLexer(inputStream);
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            programContext    = parser.program();
            visitor           = new BogieLangBaseVisitor <object>();
            visitor.Visit(programContext);
            program = Program.Compile(programContext);
            Assert.True(program.FunctionEnvironment.IsFunctionDefined("Main"));
            Assert.True(program.FunctionEnvironment["Main"].ReturnBogieLangType == BogieLangType.VOID);
            Assert.True(program.FunctionEnvironment["Main"].Parameters.Count == 0);

            Assert.True(program.FunctionEnvironment.IsFunctionDefined("funcName1"));
            Assert.True(program.FunctionEnvironment["funcName1"].ReturnBogieLangType == BogieLangType.VOID);
            Assert.True(program.FunctionEnvironment["funcName1"].Parameters[0].Item1 == BogieLangType.INTEGER);
            Assert.True(program.FunctionEnvironment["funcName1"].Parameters[0].Item2 == "abc");
            Assert.True(program.FunctionEnvironment["funcName1"].Parameters[1].Item1 == BogieLangType.STRING);
            Assert.True(program.FunctionEnvironment["funcName1"].Parameters[1].Item2 == "str");
            Assert.True(program.FunctionEnvironment["funcName1"].Parameters[2].Item1 == BogieLangType.VOID);
            Assert.True(program.FunctionEnvironment["funcName1"].Parameters[2].Item2 == "lol");
            Assert.True(program.FunctionEnvironment["funcName1"].Body.Count == 0);

            Assert.True(program.FunctionEnvironment.IsFunctionDefined("funcName2"));
            Assert.True(program.FunctionEnvironment["funcName2"].ReturnBogieLangType == BogieLangType.VOID);
            Assert.True(program.FunctionEnvironment["funcName2"].Parameters[0].Item1 == BogieLangType.INTEGER);
            Assert.True(program.FunctionEnvironment["funcName2"].Parameters[0].Item2 == "abc");
            Assert.True(program.FunctionEnvironment["funcName2"].Parameters[1].Item1 == BogieLangType.STRING);
            Assert.True(program.FunctionEnvironment["funcName2"].Parameters[1].Item2 == "str");
            Assert.True(program.FunctionEnvironment["funcName2"].Parameters[2].Item1 == BogieLangType.VOID);
            Assert.True(program.FunctionEnvironment["funcName2"].Parameters[2].Item2 == "lol");

            Assert.True(program.FunctionEnvironment["funcName2"].Body[0].VarDeclaration.BogieLangType == BogieLangType.INTEGER);
            Assert.True(program.FunctionEnvironment["funcName2"].Body[0].VarDeclaration.Identifier == "intvar");
            Assert.True(program.FunctionEnvironment["funcName2"].Body[1].VarDeclaration.BogieLangType == BogieLangType.INTEGER);
            Assert.True(program.FunctionEnvironment["funcName2"].Body[1].VarDeclaration.Identifier == "intvar");
            Assert.True(program.FunctionEnvironment["funcName2"].Body[1].VarDeclaration.Expression.Literal.Integer == 123);
            Assert.True(program.FunctionEnvironment["funcName2"].Body[2].VarDefinition.Identifier == "intvar");
            Assert.True(program.FunctionEnvironment["funcName2"].Body[2].VarDefinition.Expression.Literal.Real == 0.1);
            Assert.True(program.FunctionEnvironment["funcName2"].Body[3].FunctionCall.Identifier == "funcCall");
            Assert.True(program.FunctionEnvironment["funcName2"].Body[3].FunctionCall.Arguments[0].Identifier == "lol");
            Assert.True(program.FunctionEnvironment["funcName2"].Body[4].FunctionReturn.Expression.FunctionCall.Identifier == "funcCall");
        }
示例#16
0
        public void FunctionDefinitionTests()
        {
            string            txt               = "void funcName(){}";
            AntlrInputStream  inputStream       = new AntlrInputStream(txt);
            BogieLangLexer    lexer             = new BogieLangLexer(inputStream);
            CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
            BogieLangParser   parser            = new BogieLangParser(commonTokenStream);

            BogieLangParser.FunctionDefinitionContext functionDefinitionContext = parser.functionDefinition();
            BogieLangBaseVisitor <object>             visitor = new BogieLangBaseVisitor <object>();

            visitor.Visit(functionDefinitionContext);
            FunctionDefinition functionDefinition = FunctionDefinition.Compile(functionDefinitionContext);

            Assert.True(functionDefinition.Identifier == "funcName");
            Assert.True(functionDefinition.ReturnBogieLangType == BogieLangType.VOID);
            Assert.True(functionDefinition.Parameters.Count == 0);
            Assert.True(functionDefinition.Body.Count == 0);


            txt                       = "void funcName(int abc,string str,void lol){}";
            inputStream               = new AntlrInputStream(txt);
            lexer                     = new BogieLangLexer(inputStream);
            commonTokenStream         = new CommonTokenStream(lexer);
            parser                    = new BogieLangParser(commonTokenStream);
            functionDefinitionContext = parser.functionDefinition();
            visitor                   = new BogieLangBaseVisitor <object>();
            visitor.Visit(functionDefinitionContext);
            functionDefinition = FunctionDefinition.Compile(functionDefinitionContext);
            Assert.True(functionDefinition.Identifier == "funcName");
            Assert.True(functionDefinition.ReturnBogieLangType == BogieLangType.VOID);
            Assert.True(functionDefinition.Parameters[0].Item1 == BogieLangType.INTEGER);
            Assert.True(functionDefinition.Parameters[0].Item2 == "abc");
            Assert.True(functionDefinition.Parameters[1].Item1 == BogieLangType.STRING);
            Assert.True(functionDefinition.Parameters[1].Item2 == "str");
            Assert.True(functionDefinition.Parameters[2].Item1 == BogieLangType.VOID);
            Assert.True(functionDefinition.Parameters[2].Item2 == "lol");
            Assert.True(functionDefinition.Body.Count == 0);


            txt = "void funcName(int abc,string str,void lol){int intvar" +
                  "\nint intvar=123" +
                  "\nintvar=0.1" +
                  "\nfuncCall(lol)" +
                  "\nreturn funcCall()" +
                  "\n}";
            inputStream               = new AntlrInputStream(txt);
            lexer                     = new BogieLangLexer(inputStream);
            commonTokenStream         = new CommonTokenStream(lexer);
            parser                    = new BogieLangParser(commonTokenStream);
            functionDefinitionContext = parser.functionDefinition();
            visitor                   = new BogieLangBaseVisitor <object>();
            visitor.Visit(functionDefinitionContext);
            functionDefinition = FunctionDefinition.Compile(functionDefinitionContext);
            Assert.True(functionDefinition.Identifier == "funcName");
            Assert.True(functionDefinition.ReturnBogieLangType == BogieLangType.VOID);
            Assert.True(functionDefinition.Parameters[0].Item1 == BogieLangType.INTEGER);
            Assert.True(functionDefinition.Parameters[0].Item2 == "abc");
            Assert.True(functionDefinition.Parameters[1].Item1 == BogieLangType.STRING);
            Assert.True(functionDefinition.Parameters[1].Item2 == "str");
            Assert.True(functionDefinition.Parameters[2].Item1 == BogieLangType.VOID);
            Assert.True(functionDefinition.Parameters[2].Item2 == "lol");

            Assert.True(functionDefinition.Body[0].VarDeclaration.BogieLangType == BogieLangType.INTEGER);
            Assert.True(functionDefinition.Body[0].VarDeclaration.Identifier == "intvar");
            Assert.True(functionDefinition.Body[1].VarDeclaration.BogieLangType == BogieLangType.INTEGER);
            Assert.True(functionDefinition.Body[1].VarDeclaration.Identifier == "intvar");
            Assert.True(functionDefinition.Body[1].VarDeclaration.Expression.Literal.Integer == 123);
            Assert.True(functionDefinition.Body[2].VarDefinition.Identifier == "intvar");
            Assert.True(functionDefinition.Body[2].VarDefinition.Expression.Literal.Real == 0.1);
            Assert.True(functionDefinition.Body[3].FunctionCall.Identifier == "funcCall");
            Assert.True(functionDefinition.Body[3].FunctionCall.Arguments[0].Identifier == "lol");
            Assert.True(functionDefinition.Body[4].FunctionReturn.Expression.FunctionCall.Identifier == "funcCall");
        }
示例#17
0
        public void WhileTests()
        {
            string            txt               = "while(true){}";
            AntlrInputStream  inputStream       = new AntlrInputStream(txt);
            BogieLangLexer    lexer             = new BogieLangLexer(inputStream);
            CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
            BogieLangParser   parser            = new BogieLangParser(commonTokenStream);

            BogieLangParser.WhileControlContext whileControlContext = parser.whileControl();
            BogieLangBaseVisitor <object>       visitor             = new BogieLangBaseVisitor <object>();

            visitor.Visit(whileControlContext);
            WhileControl whileControl = WhileControl.Compile(whileControlContext);

            Assert.True(whileControl.Expression.Literal.Bool == true);
            Assert.True(whileControl.Body.Count == 0);


            txt                 = "while(true){int b=0}";
            inputStream         = new AntlrInputStream(txt);
            lexer               = new BogieLangLexer(inputStream);
            commonTokenStream   = new CommonTokenStream(lexer);
            parser              = new BogieLangParser(commonTokenStream);
            whileControlContext = parser.whileControl();
            visitor             = new BogieLangBaseVisitor <object>();
            visitor.Visit(whileControlContext);
            whileControl = WhileControl.Compile(whileControlContext);
            Assert.True(whileControl.Expression.Literal.Bool == true);
            Assert.True(whileControl.Body[0].VarDeclaration.BogieLangType == BogieLangType.INTEGER);
            Assert.True(whileControl.Body[0].VarDeclaration.Identifier == "b");
            Assert.True(whileControl.Body[0].VarDeclaration.Expression.Literal.Integer == 0);


            txt                 = @"while(true)
{
    int b=0
    b = 1
    funcCall(b)
    while(false){return 1}
    return 0
}";
            inputStream         = new AntlrInputStream(txt);
            lexer               = new BogieLangLexer(inputStream);
            commonTokenStream   = new CommonTokenStream(lexer);
            parser              = new BogieLangParser(commonTokenStream);
            whileControlContext = parser.whileControl();
            visitor             = new BogieLangBaseVisitor <object>();
            visitor.Visit(whileControlContext);
            whileControl = WhileControl.Compile(whileControlContext);
            Assert.True(whileControl.Expression.Literal.Bool == true);
            Assert.True(whileControl.Body[0].VarDeclaration.BogieLangType == BogieLangType.INTEGER);
            Assert.True(whileControl.Body[0].VarDeclaration.Identifier == "b");
            Assert.True(whileControl.Body[0].VarDeclaration.Expression.Literal.Integer == 0);

            Assert.True(whileControl.Body[1].VarDefinition.Identifier == "b");
            Assert.True(whileControl.Body[1].VarDefinition.Expression.Literal.Integer == 1);

            Assert.True(whileControl.Body[2].FunctionCall.Identifier == "funcCall");
            Assert.True(whileControl.Body[2].FunctionCall.Arguments[0].Identifier == "b");

            Assert.True(whileControl.Body[3].WhileControl.Expression.Literal.Bool == false);
            Assert.True(whileControl.Body[3].WhileControl.Body[0].FunctionReturn.Expression.Literal.Integer == 1);

            Assert.True(whileControl.Body[4].FunctionReturn.Expression.Literal.Integer == 0);
        }
示例#18
0
        public void BodyTests()
        {
            string            txt               = "int b=true";
            AntlrInputStream  inputStream       = new AntlrInputStream(txt);
            BogieLangLexer    lexer             = new BogieLangLexer(inputStream);
            CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
            BogieLangParser   parser            = new BogieLangParser(commonTokenStream);

            BogieLangParser.BodyContext   bodyContext = parser.body();
            BogieLangBaseVisitor <object> visitor     = new BogieLangBaseVisitor <object>();

            visitor.Visit(bodyContext);
            Body body = Body.Compile(bodyContext);

            Assert.True(body.VarDeclaration.BogieLangType == BogieLangType.INTEGER);
            Assert.True(body.VarDeclaration.Identifier == "b");
            Assert.True(body.VarDeclaration.Expression.Literal.Bool == true);


            txt               = "abc=123";
            inputStream       = new AntlrInputStream(txt);
            lexer             = new BogieLangLexer(inputStream);
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            bodyContext       = parser.body();
            visitor           = new BogieLangBaseVisitor <object>();
            visitor.Visit(bodyContext);
            body = Body.Compile(bodyContext);
            Assert.True(body.VarDefinition.Identifier == "abc");
            Assert.True(body.VarDefinition.Expression.Literal.Integer == 123);


            txt               = "func()";
            inputStream       = new AntlrInputStream(txt);
            lexer             = new BogieLangLexer(inputStream);
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            bodyContext       = parser.body();
            visitor           = new BogieLangBaseVisitor <object>();
            visitor.Visit(bodyContext);
            body = Body.Compile(bodyContext);
            Assert.True(body.FunctionCall.Identifier == "func");


            txt               = "return 0";
            inputStream       = new AntlrInputStream(txt);
            lexer             = new BogieLangLexer(inputStream);
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            bodyContext       = parser.body();
            visitor           = new BogieLangBaseVisitor <object>();
            visitor.Visit(bodyContext);
            body = Body.Compile(bodyContext);
            Assert.True(body.FunctionReturn.Expression.Literal.Integer == 0);


            txt               = "if(1){int b}";
            inputStream       = new AntlrInputStream(txt);
            lexer             = new BogieLangLexer(inputStream);
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            bodyContext       = parser.body();
            visitor           = new BogieLangBaseVisitor <object>();
            visitor.Visit(bodyContext);
            body = Body.Compile(bodyContext);
            Assert.True(body.IfControl.Expression.Literal.Integer == 1);
            Assert.True(body.IfControl.Body[0].VarDeclaration.BogieLangType == BogieLangType.INTEGER);
            Assert.True(body.IfControl.Body[0].VarDeclaration.Identifier == "b");


            txt               = "while(1){int b}";
            inputStream       = new AntlrInputStream(txt);
            lexer             = new BogieLangLexer(inputStream);
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            bodyContext       = parser.body();
            visitor           = new BogieLangBaseVisitor <object>();
            visitor.Visit(bodyContext);
            body = Body.Compile(bodyContext);
            Assert.True(body.WhileControl.Expression.Literal.Integer == 1);
            Assert.True(body.WhileControl.Body[0].VarDeclaration.BogieLangType == BogieLangType.INTEGER);
            Assert.True(body.WhileControl.Body[0].VarDeclaration.Identifier == "b");
        }
示例#19
0
        public void BodyTests()
        {
            string           txt         = "int b=true";
            AntlrInputStream inputStream = new AntlrInputStream(txt);
            BogieLangLexer   lexer       = new BogieLangLexer(inputStream);

            lexer.AddErrorListener(new ParserErrorHandler <int>());
            CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
            BogieLangParser   parser            = new BogieLangParser(commonTokenStream);

            parser.AddErrorListener(new ParserErrorHandler <object>());
            BogieLangParser.BodyContext   BodyContext = parser.body();
            BogieLangBaseVisitor <object> visitor     = new BogieLangBaseVisitor <object>();

            visitor.Visit(BodyContext);
            Assert.True(parser.NumberOfSyntaxErrors == 0);


            txt         = "abc=123";
            inputStream = new AntlrInputStream(txt);
            lexer       = new BogieLangLexer(inputStream);
            lexer.AddErrorListener(new ParserErrorHandler <int>());
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            parser.AddErrorListener(new ParserErrorHandler <object>());
            BodyContext = parser.body();
            visitor     = new BogieLangBaseVisitor <object>();
            visitor.Visit(BodyContext);
            Assert.True(parser.NumberOfSyntaxErrors == 0);


            txt         = "func()";
            inputStream = new AntlrInputStream(txt);
            lexer       = new BogieLangLexer(inputStream);
            lexer.AddErrorListener(new ParserErrorHandler <int>());
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            parser.AddErrorListener(new ParserErrorHandler <object>());
            BodyContext = parser.body();
            visitor     = new BogieLangBaseVisitor <object>();
            visitor.Visit(BodyContext);
            Assert.True(parser.NumberOfSyntaxErrors == 0);


            txt         = "return 0";
            inputStream = new AntlrInputStream(txt);
            lexer       = new BogieLangLexer(inputStream);
            lexer.AddErrorListener(new ParserErrorHandler <int>());
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            parser.AddErrorListener(new ParserErrorHandler <object>());
            BodyContext = parser.body();
            visitor     = new BogieLangBaseVisitor <object>();
            visitor.Visit(BodyContext);
            Assert.True(parser.NumberOfSyntaxErrors == 0);


            txt         = "if(1){int b}";
            inputStream = new AntlrInputStream(txt);
            lexer       = new BogieLangLexer(inputStream);
            lexer.AddErrorListener(new ParserErrorHandler <int>());
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            parser.AddErrorListener(new ParserErrorHandler <object>());
            BodyContext = parser.body();
            visitor     = new BogieLangBaseVisitor <object>();
            visitor.Visit(BodyContext);
            Assert.True(parser.NumberOfSyntaxErrors == 0);


            txt         = "while(1){int b}";
            inputStream = new AntlrInputStream(txt);
            lexer       = new BogieLangLexer(inputStream);
            lexer.AddErrorListener(new ParserErrorHandler <int>());
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            parser.AddErrorListener(new ParserErrorHandler <object>());
            BodyContext = parser.body();
            visitor     = new BogieLangBaseVisitor <object>();
            visitor.Visit(BodyContext);
            Assert.True(parser.NumberOfSyntaxErrors == 0);
        }
示例#20
0
        public void LiteralTests()
        {
            string            txt               = "1";
            AntlrInputStream  inputStream       = new AntlrInputStream(txt);
            BogieLangLexer    lexer             = new BogieLangLexer(inputStream);
            CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
            BogieLangParser   parser            = new BogieLangParser(commonTokenStream);

            BogieLangParser.LiteralContext literalContext = parser.literal();
            BogieLangBaseVisitor <object>  visitor        = new BogieLangBaseVisitor <object>();

            visitor.Visit(literalContext);
            Literal literal = Literal.Compile(literalContext);

            Assert.True(literal.Execute() is int);
            Assert.True((int)literal.Execute() == 1);


            txt         = "1.0";
            inputStream = new AntlrInputStream(txt);
            lexer       = new BogieLangLexer(inputStream);
            lexer.AddErrorListener(new ParserErrorHandler <int>());
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            parser.AddErrorListener(new ParserErrorHandler <object>());
            literalContext = parser.literal();
            visitor        = new BogieLangBaseVisitor <object>();
            visitor.Visit(literalContext);
            literal = Literal.Compile(literalContext);
            Assert.True(literal.Execute() is double);
            Assert.True((double)literal.Execute() == 1.0);


            txt         = "false";
            inputStream = new AntlrInputStream(txt);
            lexer       = new BogieLangLexer(inputStream);
            lexer.AddErrorListener(new ParserErrorHandler <int>());
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            parser.AddErrorListener(new ParserErrorHandler <object>());
            literalContext = parser.literal();
            visitor        = new BogieLangBaseVisitor <object>();
            visitor.Visit(literalContext);
            Assert.True(parser.NumberOfSyntaxErrors == 0);
            literal = Literal.Compile(literalContext);
            Assert.True(literal.Execute() is bool);
            Assert.True((bool)literal.Execute() == false);


            txt         = "\"asd8 99asd\"";
            inputStream = new AntlrInputStream(txt);
            lexer       = new BogieLangLexer(inputStream);
            lexer.AddErrorListener(new ParserErrorHandler <int>());
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            parser.AddErrorListener(new ParserErrorHandler <object>());
            literalContext = parser.literal();
            visitor        = new BogieLangBaseVisitor <object>();
            visitor.Visit(literalContext);
            Assert.True(parser.NumberOfSyntaxErrors == 0);
            literal = Literal.Compile(literalContext);
            Assert.True(literal.Execute() is string);
            Assert.True((string)literal.Execute() == "asd8 99asd");
        }
示例#21
0
        public void AddTests()
        {
            VariableEnvironment variableEnvironment = new VariableEnvironment();
            FunctionEnvironment functionEnvironment = new FunctionEnvironment();

            string            txt               = "1+1";
            AntlrInputStream  inputStream       = new AntlrInputStream(txt);
            BogieLangLexer    lexer             = new BogieLangLexer(inputStream);
            CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
            BogieLangParser   parser            = new BogieLangParser(commonTokenStream);

            BogieLangParser.ExpressionContext expressionContext = parser.expression();
            BogieLangBaseVisitor <object>     visitor           = new BogieLangBaseVisitor <object>();

            visitor.Visit(expressionContext);
            Expression expression = Expression.Compile(expressionContext, null);

            Assert.True(expression.ParentExpression == null);
            Assert.True(expression.SubExpression.ParentExpression == expression);
            Assert.True((int)expression.Execute(functionEnvironment, variableEnvironment) == 2);

            txt               = "1+1+1";
            inputStream       = new AntlrInputStream(txt);
            lexer             = new BogieLangLexer(inputStream);
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            expressionContext = parser.expression();
            visitor           = new BogieLangBaseVisitor <object>();
            visitor.Visit(expressionContext);
            expression = Expression.Compile(expressionContext, null);
            Assert.True(expression.ParentExpression == null);
            Assert.True(expression.SubExpression.ParentExpression == expression);
            Assert.True(expression.SubExpression.SubExpression.ParentExpression == expression.SubExpression);
            Assert.True((int)expression.Execute(functionEnvironment, variableEnvironment) == 3);

            txt               = "1+1.1";
            inputStream       = new AntlrInputStream(txt);
            lexer             = new BogieLangLexer(inputStream);
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            expressionContext = parser.expression();
            visitor           = new BogieLangBaseVisitor <object>();
            visitor.Visit(expressionContext);
            expression = Expression.Compile(expressionContext, null);
            Assert.True(expression.ParentExpression == null);
            Assert.True(expression.SubExpression.ParentExpression == expression);
            Assert.True((double)expression.Execute(functionEnvironment, variableEnvironment) == 2.1);

            txt               = "1+\"one\"";
            inputStream       = new AntlrInputStream(txt);
            lexer             = new BogieLangLexer(inputStream);
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            expressionContext = parser.expression();
            visitor           = new BogieLangBaseVisitor <object>();
            visitor.Visit(expressionContext);
            expression = Expression.Compile(expressionContext, null);
            Assert.True(expression.ParentExpression == null);
            Assert.True(expression.SubExpression.ParentExpression == expression);
            Assert.True((string)expression.Execute(functionEnvironment, variableEnvironment) == "1one");

            txt               = "1+true";
            inputStream       = new AntlrInputStream(txt);
            lexer             = new BogieLangLexer(inputStream);
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            expressionContext = parser.expression();
            visitor           = new BogieLangBaseVisitor <object>();
            visitor.Visit(expressionContext);
            expression = Expression.Compile(expressionContext, null);
            Assert.True(expression.ParentExpression == null);
            Assert.True(expression.SubExpression.ParentExpression == expression);
            Assert.True((int)expression.Execute(functionEnvironment, variableEnvironment) == 2);

            txt               = "1+1.1+true+\"str\"";
            inputStream       = new AntlrInputStream(txt);
            lexer             = new BogieLangLexer(inputStream);
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            expressionContext = parser.expression();
            visitor           = new BogieLangBaseVisitor <object>();
            visitor.Visit(expressionContext);
            expression = Expression.Compile(expressionContext, null);
            Assert.True(expression.ParentExpression == null);
            Assert.True(expression.SubExpression.ParentExpression == expression);
            Assert.True(expression.SubExpression.SubExpression.ParentExpression == expression.SubExpression);
            Assert.True(expression.SubExpression.SubExpression.SubExpression.ParentExpression == expression.SubExpression.SubExpression);
            Assert.True((string)expression.Execute(functionEnvironment, variableEnvironment) == "3.1str");
        }
示例#22
0
        public void ExpressionTests()
        {
            VariableEnvironment variableEnvironment = new VariableEnvironment();
            FunctionEnvironment functionEnvironment = new FunctionEnvironment();

            string            txt               = "1";
            AntlrInputStream  inputStream       = new AntlrInputStream(txt);
            BogieLangLexer    lexer             = new BogieLangLexer(inputStream);
            CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
            BogieLangParser   parser            = new BogieLangParser(commonTokenStream);

            BogieLangParser.ExpressionContext expressionContext = parser.expression();
            BogieLangBaseVisitor <object>     visitor           = new BogieLangBaseVisitor <object>();

            visitor.Visit(expressionContext);
            Expression expression = Expression.Compile(expressionContext, null);

            Assert.True(expression.Execute(functionEnvironment, new VariableEnvironment()) is int);
            Assert.True(expression.ParentExpression == null);
            Assert.True((int)expression.Execute(functionEnvironment, new VariableEnvironment()) == 1);


            txt               = "1.0";
            inputStream       = new AntlrInputStream(txt);
            lexer             = new BogieLangLexer(inputStream);
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            expressionContext = parser.expression();
            visitor           = new BogieLangBaseVisitor <object>();
            visitor.Visit(expressionContext);
            expression = Expression.Compile(expressionContext, null);
            Assert.True(expression.Execute(functionEnvironment, new VariableEnvironment()) is double);
            Assert.True(expression.ParentExpression == null);
            Assert.True((double)expression.Execute(functionEnvironment, new VariableEnvironment()) == 1.0);


            txt               = "false";
            inputStream       = new AntlrInputStream(txt);
            lexer             = new BogieLangLexer(inputStream);
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            expressionContext = parser.expression();
            visitor           = new BogieLangBaseVisitor <object>();
            visitor.Visit(expressionContext);
            expression = Expression.Compile(expressionContext, null);
            Assert.True(expression.Execute(functionEnvironment, new VariableEnvironment()) is bool);
            Assert.True(expression.ParentExpression == null);
            Assert.True((bool)expression.Execute(functionEnvironment, new VariableEnvironment()) == false);


            txt               = "\"asd899asd\"";
            inputStream       = new AntlrInputStream(txt);
            lexer             = new BogieLangLexer(inputStream);
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            expressionContext = parser.expression();
            visitor           = new BogieLangBaseVisitor <object>();
            visitor.Visit(expressionContext);
            expression = Expression.Compile(expressionContext, null);
            Assert.True(expression.Execute(functionEnvironment, new VariableEnvironment()) is string);
            Assert.True((string)expression.Execute(functionEnvironment, new VariableEnvironment()) == "asd899asd");


            txt               = "VarName";
            inputStream       = new AntlrInputStream(txt);
            lexer             = new BogieLangLexer(inputStream);
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            expressionContext = parser.expression();
            visitor           = new BogieLangBaseVisitor <object>();
            visitor.Visit(expressionContext);
            expression = Expression.Compile(expressionContext, null);
            variableEnvironment.DeclareVariable(txt, BogieLangType.INTEGER);
            variableEnvironment.DefineVariable(txt, 1);
            Assert.True(expression.Execute(functionEnvironment, variableEnvironment) is int);
            Assert.True(expression.ParentExpression == null);
            Assert.True((int)expression.Execute(functionEnvironment, variableEnvironment) == 1);
        }
示例#23
0
        public void BodyTests()
        {
            VariableEnvironment variables           = new VariableEnvironment();
            FunctionEnvironment functionEnvironment = new FunctionEnvironment();

            string            txt               = "int b=true";
            AntlrInputStream  inputStream       = new AntlrInputStream(txt);
            BogieLangLexer    lexer             = new BogieLangLexer(inputStream);
            CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
            BogieLangParser   parser            = new BogieLangParser(commonTokenStream);

            BogieLangParser.BodyContext   bodyContext = parser.body();
            BogieLangBaseVisitor <object> visitor     = new BogieLangBaseVisitor <object>();

            visitor.Visit(bodyContext);
            Body body = Body.Compile(bodyContext);

            try
            {
                body.Execute(functionEnvironment, variables);
                Assert.True(false);
            }
            catch (Exception e)
            {
                Assert.True(true);//todo: test for a specific exception types once they are created
            }

            variables.Clear();
            txt               = "int b=098";
            inputStream       = new AntlrInputStream(txt);
            lexer             = new BogieLangLexer(inputStream);
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            bodyContext       = parser.body();
            visitor           = new BogieLangBaseVisitor <object>();
            visitor.Visit(bodyContext);
            body = Body.Compile(bodyContext);
            body.Execute(functionEnvironment, variables);
            Assert.True(variables["b"].BogieLangType == BogieLangType.INTEGER);
            Assert.True(variables["b"].Identifer == "b");
            Assert.True((int)variables["b"].Value == 98);

            txt               = "abc=123";
            inputStream       = new AntlrInputStream(txt);
            lexer             = new BogieLangLexer(inputStream);
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            bodyContext       = parser.body();
            visitor           = new BogieLangBaseVisitor <object>();
            visitor.Visit(bodyContext);
            body = Body.Compile(bodyContext);
            try
            {
                Assert.True(body.Execute(functionEnvironment, variables) == null);
                Assert.True(false);
            }
            catch
            {
                Assert.True(true);//todo: test for specific exception types once they are created
            }


            variables.DeclareVariable("abc", BogieLangType.INTEGER);
            txt               = "abc=123";
            inputStream       = new AntlrInputStream(txt);
            lexer             = new BogieLangLexer(inputStream);
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            bodyContext       = parser.body();
            visitor           = new BogieLangBaseVisitor <object>();
            visitor.Visit(bodyContext);
            body = Body.Compile(bodyContext);
            body.Execute(functionEnvironment, variables);
            Assert.True(variables["abc"].BogieLangType == BogieLangType.INTEGER);
            Assert.True(variables["abc"].Identifer == "abc");
            Assert.True((int)variables["abc"].Value == 123);


            txt               = "return 0";
            inputStream       = new AntlrInputStream(txt);
            lexer             = new BogieLangLexer(inputStream);
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            bodyContext       = parser.body();
            visitor           = new BogieLangBaseVisitor <object>();
            visitor.Visit(bodyContext);
            body = Body.Compile(bodyContext);
            Assert.True(body.Execute(functionEnvironment, variables) is int);
            Assert.True((int)body.Execute(functionEnvironment, variables) == 0);

            txt               = "if(1){int b}";
            inputStream       = new AntlrInputStream(txt);
            lexer             = new BogieLangLexer(inputStream);
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            bodyContext       = parser.body();
            visitor           = new BogieLangBaseVisitor <object>();
            visitor.Visit(bodyContext);
            body = Body.Compile(bodyContext);
            body.Execute(functionEnvironment, variables);

            txt               = "if(true){int b}";
            inputStream       = new AntlrInputStream(txt);
            lexer             = new BogieLangLexer(inputStream);
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            bodyContext       = parser.body();
            visitor           = new BogieLangBaseVisitor <object>();
            visitor.Visit(bodyContext);
            body = Body.Compile(bodyContext);
            body.Execute(functionEnvironment, variables);
        }
示例#24
0
        public void FunctionDefinitionTests()
        {
            VariableEnvironment variableEnvironment = new VariableEnvironment();
            FunctionEnvironment functionEnvironment = new FunctionEnvironment();

            string            txt               = "void funcName(){}";
            AntlrInputStream  inputStream       = new AntlrInputStream(txt);
            BogieLangLexer    lexer             = new BogieLangLexer(inputStream);
            CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
            BogieLangParser   parser            = new BogieLangParser(commonTokenStream);

            BogieLangParser.FunctionDefinitionContext functionDefinitionContext = parser.functionDefinition();
            BogieLangBaseVisitor <object>             visitor = new BogieLangBaseVisitor <object>();

            visitor.Visit(functionDefinitionContext);
            FunctionDefinition functionDefinition = FunctionDefinition.Compile(functionDefinitionContext);

            functionEnvironment.FunctionDefinitions.Add("funcName", functionDefinition);
            functionDefinition.Execute(functionEnvironment, variableEnvironment);

            functionEnvironment.Clear();
            variableEnvironment.DeclaredVariables = new Dictionary <string, BogieLangTypeInstance>()
            {
                { "abc", new BogieLangTypeInstance()
                  {
                      BogieLangType = BogieLangType.INTEGER, Identifer = "abc", Value = 1
                  } },
                { "str", new BogieLangTypeInstance()
                  {
                      BogieLangType = BogieLangType.STRING, Identifer = "str", Value = "string"
                  } },
                { "lol", new BogieLangTypeInstance()
                  {
                      BogieLangType = BogieLangType.VOID, Identifer = "lol", Value = null
                  } }
            };
            txt                       = "void funcName(int abc,string str,void lol){}";
            inputStream               = new AntlrInputStream(txt);
            lexer                     = new BogieLangLexer(inputStream);
            commonTokenStream         = new CommonTokenStream(lexer);
            parser                    = new BogieLangParser(commonTokenStream);
            functionDefinitionContext = parser.functionDefinition();
            visitor                   = new BogieLangBaseVisitor <object>();
            visitor.Visit(functionDefinitionContext);
            functionDefinition = FunctionDefinition.Compile(functionDefinitionContext);
            functionEnvironment.FunctionDefinitions.Add("funcName", functionDefinition);
            functionDefinition.Execute(functionEnvironment, variableEnvironment);

            txt = "int funcName(int abc,string str,bool b){int intvar" +
                  "\n intvar=123" +
                  "\nintvar=1" +
                  "\nreturn funcCall(b)" +
                  "\n}";

            string txt2 = "\nint funcCall(bool b)" +
                          "\n{" +
                          "\nif(b)" +
                          "\n{" +
                          "\n return 100" +
                          "\n}" +
                          "\nreturn 0" +
                          "}";

            inputStream               = new AntlrInputStream(txt);
            lexer                     = new BogieLangLexer(inputStream);
            commonTokenStream         = new CommonTokenStream(lexer);
            parser                    = new BogieLangParser(commonTokenStream);
            functionDefinitionContext = parser.functionDefinition();
            visitor                   = new BogieLangBaseVisitor <object>();
            visitor.Visit(functionDefinitionContext);
            FunctionDefinition functionDefinition1 = FunctionDefinition.Compile(functionDefinitionContext);

            inputStream               = new AntlrInputStream(txt2);
            lexer                     = new BogieLangLexer(inputStream);
            commonTokenStream         = new CommonTokenStream(lexer);
            parser                    = new BogieLangParser(commonTokenStream);
            functionDefinitionContext = parser.functionDefinition();
            visitor                   = new BogieLangBaseVisitor <object>();
            visitor.Visit(functionDefinitionContext);
            FunctionDefinition functionDefinition2 = FunctionDefinition.Compile(functionDefinitionContext);

            variableEnvironment.Clear();
            functionEnvironment.Clear();

            variableEnvironment.DeclaredVariables = new Dictionary <string, BogieLangTypeInstance>()
            {
                { "abc", new BogieLangTypeInstance()
                  {
                      BogieLangType = BogieLangType.INTEGER, Identifer = "abc", Value = 1
                  } },
                { "str", new BogieLangTypeInstance()
                  {
                      BogieLangType = BogieLangType.STRING, Identifer = "str", Value = "string"
                  } },
                { "b", new BogieLangTypeInstance()
                  {
                      BogieLangType = BogieLangType.BOOL, Identifer = "b", Value = true
                  } }
            };
            functionEnvironment.DefineFunction("funcName", functionDefinition1);
            functionEnvironment.DefineFunction("funcCall", functionDefinition2);
            Assert.True((int)functionDefinition1.Execute(functionEnvironment, variableEnvironment) == 100);
        }
示例#25
0
        public void FunctionCallTests()
        {
            string           txt         = "funcCall()";
            AntlrInputStream inputStream = new AntlrInputStream(txt);
            BogieLangLexer   lexer       = new BogieLangLexer(inputStream);

            lexer.AddErrorListener(new ParserErrorHandler <int>());
            CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
            BogieLangParser   parser            = new BogieLangParser(commonTokenStream);

            parser.AddErrorListener(new ParserErrorHandler <object>());
            BogieLangParser.FunctionCallContext functionCallContext = parser.functionCall();
            BogieLangBaseVisitor <object>       visitor             = new BogieLangBaseVisitor <object>();

            visitor.Visit(functionCallContext);
            Assert.True(parser.NumberOfSyntaxErrors == 0);


            txt         = "funcCall(\"arg\")";
            inputStream = new AntlrInputStream(txt);
            lexer       = new BogieLangLexer(inputStream);
            lexer.AddErrorListener(new ParserErrorHandler <int>());
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            parser.AddErrorListener(new ParserErrorHandler <object>());
            functionCallContext = parser.functionCall();
            visitor             = new BogieLangBaseVisitor <object>();
            visitor.Visit(functionCallContext);
            Assert.True(parser.NumberOfSyntaxErrors == 0);


            txt         = "funcCall(10.0,funcCall2())";
            inputStream = new AntlrInputStream(txt);
            lexer       = new BogieLangLexer(inputStream);
            lexer.AddErrorListener(new ParserErrorHandler <int>());
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            parser.AddErrorListener(new ParserErrorHandler <object>());
            functionCallContext = parser.functionCall();
            visitor             = new BogieLangBaseVisitor <object>();
            visitor.Visit(functionCallContext);
            Assert.True(parser.NumberOfSyntaxErrors == 0);


            txt         = "funcCall(10.0,funcCall2())";
            inputStream = new AntlrInputStream(txt);
            lexer       = new BogieLangLexer(inputStream);
            lexer.AddErrorListener(new ParserErrorHandler <int>());
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            parser.AddErrorListener(new ParserErrorHandler <object>());
            functionCallContext = parser.functionCall();
            visitor             = new BogieLangBaseVisitor <object>();
            visitor.Visit(functionCallContext);
            Assert.True(parser.NumberOfSyntaxErrors == 0);


            txt         = " funcCall\t(10.0\n,\rfuncCall2() \n\r\t)";
            inputStream = new AntlrInputStream(txt);
            lexer       = new BogieLangLexer(inputStream);
            lexer.AddErrorListener(new ParserErrorHandler <int>());
            commonTokenStream = new CommonTokenStream(lexer);
            parser            = new BogieLangParser(commonTokenStream);
            parser.AddErrorListener(new ParserErrorHandler <object>());
            functionCallContext = parser.functionCall();
            visitor             = new BogieLangBaseVisitor <object>();
            visitor.Visit(functionCallContext);
            Assert.True(parser.NumberOfSyntaxErrors == 0);
        }