Ejemplo n.º 1
0
        public void TestVisitFunctionExp()
        {
            Setup("log(100)");

            var context = parser.expression() as SpreadsheetParser.FunctionExpContext;

            var visitor = new SpreadsheetVisitor();
            var result  = visitor.VisitFunctionExp(context);

            Assert.Equal(result, double.Parse("2"));
        }
Ejemplo n.º 2
0
        public void TestCompleteExp()
        {
            Setup("log(5+6*7/8)");

            var context = parser.expression();

            var visitor = new SpreadsheetVisitor();
            var result  = visitor.Visit(context);

            // we make sure that the correct format is selected, because different countries use different symbols as the decimal mark
            Assert.Equal("1.0107238653917732", result.ToString(System.Globalization.CultureInfo.GetCultureInfo("en-US").NumberFormat));
        }
Ejemplo n.º 3
0
        public void TestVisitPowerExp()
        {
            Setup("4^3^2");

            var context = parser.expression() as SpreadsheetParser.PowerExpContext;

            var visitor = new SpreadsheetVisitor();
            // we visit our test node and get the results
            var result = visitor.VisitPowerExp(context);

            Assert.Equal(double.Parse("262144"), result);
        }
Ejemplo n.º 4
0
        static void Main(string[] args)
        {
            string input = "log(10 + A1 * 35 + (5.4 - 7.4))";

            AntlrInputStream  inputStream       = new AntlrInputStream(input);
            SpreadsheetLexer  spreadsheetLexer  = new SpreadsheetLexer(inputStream);
            CommonTokenStream commonTokenStream = new CommonTokenStream(spreadsheetLexer);
            SpreadsheetParser spreadsheetParser = new SpreadsheetParser(commonTokenStream);

            SpreadsheetParser.ExpressionContext expressionContext = spreadsheetParser.expression();
            SpreadsheetVisitor visitor = new SpreadsheetVisitor();

            Console.WriteLine(visitor.Visit(expressionContext));
            Console.ReadLine();
        }
Ejemplo n.º 5
0
        public void TestWrongVisitFunctionExp()
        {
            Setup("logga(100)");

            var context = parser.expression() as SpreadsheetParser.FunctionExpContext;

            var visitor = new SpreadsheetVisitor();
            var result  = visitor.VisitFunctionExp(context);

            var ts = (CommonTokenStream)parser.InputStream;

            // When we check for the wrong function the parser actually works,
            // because indeed "logga" is syntactically valid as a function name,
            // but it’s not semantically correct.
            Assert.Equal(SpreadsheetLexer.NAME, ts.Get(0).Type);
            Assert.Null(errorListener.Symbol);
            // The function "logga" doesn't exist, so our program doesn't know what to do with it.
            // So when we visit it we get 0 as a result.
            Assert.Equal(0, result);
        }