/// <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())); } }
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()); }
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()); }