예제 #1
0
        public void Emit(TokenTextWriter stream)
        {
            Contract.Requires(stream != null);
            stream.SetToken(this);
            Contract.Assert(this.Tr.Count >= 1);
            string /*!*/ sep = Pos ? "{ " : "{:nopats ";

            foreach (Expr /*!*/ e in this.Tr)
            {
                Contract.Assert(e != null);
                stream.Write(sep);
                sep = ", ";
                e.Emit(stream);
            }
            stream.Write(" }");
        }
예제 #2
0
파일: Util.cs 프로젝트: zvonimir/corral
        public static bool Write(int level, string msg, params object[] args)
        {
            if (level == Log.Normal)
            {
                Write(Log.Debug, msg, args);
            }

            switch (level)
            {
            case Debug:
                if (!noDebuggingOutput)
                {
                    init();
                    debugOut.Write(msg, args);
                }
                break;

            case Warning:
                Console.Write("Warning: " + msg, args);
                break;

            case Error:
                Console.Write("Error: " + msg, args);
                break;

            case Normal:
                Console.Write(msg, args);
                break;
            }

            return(false);
        }
예제 #3
0
        public void Emit(TokenTextWriter stream)
        {
            Contract.Requires(stream != null);
            stream.Write("{:");
            stream.Write(Key);
            string sep = " ";

            foreach (object p in Params)
            {
                stream.Write(sep);
                sep = ", ";
                if (p is string)
                {
                    stream.Write("\"");
                    stream.Write((string)p);
                    stream.Write("\"");
                }
                else
                {
                    ((Expr)p).Emit(stream);
                }
            }

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

            this.Body.Emit(stream);
            stream.Write(")");
        }
예제 #6
0
        public override void Emit(TokenTextWriter stream, int contextBindingStrength, bool fragileContext)
        {
            //Contract.Requires(stream != null);
            stream.push();
            stream.Write(this, "(var ");

            string sep = "";

            stream.push();
            foreach (var v in Dummies)
            {
                stream.Write("{0}", sep);
                v.EmitVitals(stream, 0, true, false);
                sep = ", ";
                stream.sep();
            }
            stream.pop();

            stream.Write(" := ");
            this.Rhss.Emit(stream);
            stream.Write("; ");
            stream.sep();
            for (QKeyValue kv = this.Attributes; kv != null; kv = kv.Next)
            {
                kv.Emit(stream);
                stream.Write(" ");
            }
            stream.sep();

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