/// <summary> /// Creates a redef expression based on the input of the parser /// </summary> /// <returns></returns> private Expression DerefExpression() { Expression retVal = null; List <Expression> derefArguments = new List <Expression>(); string id = Identifier(); while (id != null) { Designator designator = new Interpreter.Designator(Root, id); Term term = new Term(Root, designator); UnaryExpression unaryExpression = new UnaryExpression(Root, term); derefArguments.Add(unaryExpression); id = null; if (LookAhead(".")) { Match("."); id = Identifier(); } } if (derefArguments.Count == 1) { retVal = derefArguments[0]; } else if (derefArguments.Count > 1) { retVal = new DerefExpression(Root, derefArguments); } return(retVal); }
/// <summary> /// Indicates the name of the checked variable, if any /// </summary> /// <returns></returns> public Interpreter.Designator CheckedVariable() { Interpreter.Designator retVal = null; Interpreter.BinaryExpression binaryExpression = ExpressionTree as Interpreter.BinaryExpression; if (binaryExpression != null) { Interpreter.UnaryExpression unaryExpression = binaryExpression.Left as Interpreter.UnaryExpression; if (unaryExpression != null && unaryExpression.Term != null && unaryExpression.Term.Designator != null) { retVal = unaryExpression.Term.Designator; } } return(retVal); }
/// <summary> /// Creates a redef expression based on the input of the parser /// </summary> /// <returns></returns> private Expression DerefExpression() { Expression retVal = null; List<Expression> derefArguments = new List<Expression>(); string id = Identifier(); while (id != null) { Designator designator = new Interpreter.Designator(Root, id); Term term = new Term(Root, designator); UnaryExpression unaryExpression = new UnaryExpression(Root, term); derefArguments.Add(unaryExpression); id = null; if (LookAhead(".")) { Match("."); id = Identifier(); } } if (derefArguments.Count == 1) { retVal = derefArguments[0]; } else if (derefArguments.Count > 1) { retVal = new DerefExpression(Root, derefArguments); } return retVal; }