示例#1
0
        public void Emit(IList <Expr> args, TokenTextWriter stream, int contextBindingStrength, bool fragileContext)
        {
            Debug.Assert(args.Count == ArgumentCount);

            // TODO: Don't ignore contextBindingStrength and fragileContext
            stream.SetToken(ref this.Token);
            var popRequired = stream.push(FunctionName);

            stream.Write(this.FunctionName);
            stream.Write("(");
            for (int index = 0; index < args.Count; ++index)
            {
                args[index].Emit(stream, contextBindingStrength, fragileContext);

                if (index < (args.Count - 1))
                {
                    stream.Write(", ");
                }
            }

            stream.Write(")");
            stream.pop(popRequired);
        }
示例#2
0
 protected override void EmitTriggers(TokenTextWriter stream) {
   //Contract.Requires(stream != null);
   stream.push();
   for (Trigger tr = this.Triggers; tr != null; tr = tr.Next) {
     tr.Emit(stream);
     stream.Write(" ");
     stream.sep();
   }
   stream.pop();
 }
示例#3
0
    public override void Emit(TokenTextWriter stream, int contextBindingStrength, bool fragileContext) {
      //Contract.Requires(stream != null);
      stream.push();
      stream.Write(this, "({0}", Kind.ToString().ToLower());
      this.EmitTypeHint(stream);
      Type.EmitOptionalTypeParams(stream, TypeParameters);
      stream.Write(this, " ");
      this.Dummies.Emit(stream, true);
      stream.Write(" :: ");
      stream.sep();
      for (QKeyValue kv = this.Attributes; kv != null; kv = kv.Next) {
        kv.Emit(stream);
        stream.Write(" ");
      }
      this.EmitTriggers(stream);
      stream.sep();

      this.Body.Emit(stream);
      stream.Write(")");
      stream.pop();
    }