Esempio n. 1
0
 /// <summary>
 /// Visit VarExpression
 /// </summary>
 /// <param name="expression">VarExpression to check</param>
 public override void Visit(VarExpression expression)
 {
     //Check if expression is assigned to existing variable
     if (!SymbolTable.ContainsVariable(expression.GetVariableIdentifier()))
     {   //Add undefined variable exception
         ExceptionList.Add(new UndefinedVariable(expression.GetVariableIdentifier()));
     }
 }
Esempio n. 2
0
        public void ParseVarExpressionTest()
        {
            //Create parser and parse tokens
            ExpressionParser expressionParser = new ExpressionParser(Init("home"));
            VarExpression    expression       = expressionParser.ParseVarExpression();

            //Test variable identifier
            Assert.AreEqual("home", expression.GetVariableIdentifier());
        }
Esempio n. 3
0
        public void ParseCatExpressionTest()
        {
            //Create parser and parse tokens
            ExpressionParser expressionParser = new ExpressionParser(Init("expression+'symbol"));
            Expression       expression       = expressionParser.ParseExpression();

            //Check type of expression
            Assert.AreEqual(typeof(CatExpression), expression.GetType());
            CatExpression parsedCatExpression = (CatExpression)expression;

            //Check expressions in catexpression
            Assert.AreEqual(typeof(VarExpression), parsedCatExpression.GetLeftExpression().GetType());
            Assert.AreEqual(typeof(SymExpression), parsedCatExpression.GetRightExpression().GetType());

            VarExpression left  = (VarExpression)parsedCatExpression.GetLeftExpression();
            SymExpression right = (SymExpression)parsedCatExpression.GetRightExpression();

            Assert.AreEqual("expression", left.GetVariableIdentifier());
            Assert.AreEqual("symbol", right.GetSym());
        }