protected override void compile(Context ctx, bool mustReturn) { var name = LocalName ?? ctx.CurrentScope.FindName(Name); if (name.IsConstant && name.IsImmutable && ctx.Options.UnrollConstants) return; if (Value == null) Value = Expr.Default(Type); var assignNode = new SetIdentifierNode { Identifier = Name, LocalName = LocalName, Value = Value, IsInitialization = true, }; assignNode.Compile(ctx, mustReturn); }
/// <summary> /// set_id_stmt = identifier "=" expr /// </summary> private SetIdentifierNode parseSetIdStmt() { if (!peek(LexemType.Identifier, LexemType.Assign)) return null; var node = new SetIdentifierNode(); node.Identifier = getValue(); skip(); node.Value = ensure(parseExpr, ParserMessages.ExpressionExpected); return node; }
protected bool Equals(SetIdentifierNode other) { return base.Equals(other) && Equals(Value, other.Value); }