public DivideAssignment(Access a, Expression e, int l, int c) : base(a, e, l, c) { }
public abstract void VisitAccess(Access access);
public Assignment(Access acc, Expression e, int l, int c) : base(l, c) { Lefthand = acc; Expression = e; }
public MultiplyAssignment(Access a, Expression e, int l, int c) : base(a, e, l, c) { }
public AdditionAssignment(Access a, Expression e, int l, int c) : base(a, e, l, c) { }
public XorAssignment(Access a, Expression e, int l, int c) : base(a, e, l, c) { }
Expression access() { Token temp = next; Expression x = factor(); if (x.GetType() == typeof(Id)) { var val = Context.Resources.GetNamedValue(x.ToString()); if (!val.IsNull) x = val.IsReal ? new Constant(val.Real, temp.line, temp.col) : new Constant(val.String, temp.line, temp.col); else x = new Access(null, x.ToString(), subscript(), temp.line, temp.col); } while (t == TokenKind.Dot) { move(); if (t != TokenKind.Identifier || !Context.Resources.GetNamedValue(x.ToString()).IsNull) error(Error.ExpectedVariableName); string n = next.lexeme; move(); x = new Access(x, n, subscript(), temp.line, temp.col); } return x; }