AssignNode MakeIdentAssign(IdentNode n, ExprNode n1, Lexer.TokenType op, Lexer.Position pos) { if (op == Lexer.TokenType.TOK_ASSIGN) { return(new AsgVarNode(n, n1, pos)); } switch (op) { case Lexer.TokenType.TOK_PLUS: case Lexer.TokenType.TOK_MINUS: case Lexer.TokenType.TOK_MUL: case Lexer.TokenType.TOK_DIV: case Lexer.TokenType.TOK_MOD: case Lexer.TokenType.TOK_SHL: case Lexer.TokenType.TOK_SHR: //case Lexer.TokenType.TOK_NOTAR: case Lexer.TokenType.TOK_AND: case Lexer.TokenType.TOK_OR: case Lexer.TokenType.TOK_XOR: case Lexer.TokenType.TOK_PLUSPLUS: case Lexer.TokenType.TOK_MINUSMINUS: case Lexer.TokenType.FTOK_PLUSPLUS_PREF: case Lexer.TokenType.FTOK_MINUSMINUS_PREF: return(new AsgArifmVarNode(n, n1, op, pos)); } throw new ParserException("Can't assign to " + n.OpType, pos); }
public DeclareVarNode(IdentNode name, ExprNode value, Lexer.Position pos) : base(ExprType.DeclareVar, pos) { Ident = name; Value = value; }
public AsgArifmVarNode(IdentNode l, ExprNode r, Lexer.TokenType op, Lexer.Position pos) : base(l, r, op, ExprType.AsgArifm, pos) { }
public AsgVarNode(IdentNode l, ExprNode r, Lexer.Position pos) : base(l, r, ExprType.AssignVar, pos) { }