public string visitOperandExpr(Expression.Operand expr) { switch (expr.Value.GetName()) { case "UNARY": case "BINARY": return(((Expression)expr.Value).Accept(this)); case "INTEGER": return("int"); case "STRING": return("string"); case "VAR_IDENTIFIER": var ident = (VarIdentifier)expr.Value; if (!environment.Contains(ident.Name)) { ErrorWriter.Write(ident, "Cannot operate on uninitalized variable '{0}'", ident.Name); return(null); } return(environment.GetType(ident.Name)); default: return(null); } }
private Expression.Operand operand() { current = advance(); if (current.GetName() == "LEFT_PAREN") { var opr = new Expression.Operand(expression()); match("RIGHT_PAREN"); return(opr); } if (current.GetName() == "IDENTIFIER") { return(new Expression.Operand(createIdent(current))); } return(new Expression.Operand(current)); }
public object visitOperandExpr(Expression.Operand expr) { var value = expr.Value; switch (value.GetName()) { case "UNARY": case "BINARY": return(((Expression)value).Accept(this)); case "INTEGER": return(Int32.Parse(((Token)value).Value)); case "VAR_IDENTIFIER": var ident = (VarIdentifier)value; return(environment.Get(ident.Name)); default: return(((Token)value).Value); } }