示例#1
0
        public AbsynAssignment EmitAssign(Expression dst, Expression src)
        {
            var ass = new AbsynAssignment(dst, src);

            stms.Add(ass);
            return(ass);
        }
示例#2
0
 public void VisitAssignment(AbsynAssignment a)
 {
     writer.Indent();
     a.Dst.Accept(this);
     writer.Write(" = ");
     a.Src.Accept(this);
     writer.Terminate(";");
 }
示例#3
0
        public void StripDeclarations()
        {
            emitter.StripDeclarations = true;
            emitter.EmitStatement(m.Declare(m.Local32("dwLoc14"), null));
            emitter.EmitStatement(m.Declare(m.Local32("dwLoc18"), m.Word32(1)));
            Assert.AreEqual(1, stms.Count);
            AbsynAssignment ass = (AbsynAssignment)stms[0];

            Assert.AreEqual("dwLoc18 = 1<32>;", ass.ToString());
        }
示例#4
0
 public AbsynStatement VisitAssignment(AbsynAssignment ass)
 {
     //$TODO: this only makes sense for C/C++; if the output
     // language is different, don't do this.
     if (ass.Src is BinaryExpression bin &&
         cmp.Equals(ass.Dst, bin.Left))
     {
         if (compoundableOperators.Contains(bin.Operator))
         {
             return(new AbsynCompoundAssignment(ass.Dst, bin));
         }
     }
     return(ass);
 }
示例#5
0
 private void MaybeWriteAssignment(AbsynAssignment ass)
 {
     if (ass != null)
     {
         if (ass is AbsynCompoundAssignment cass)
         {
             WriteCompoundAssignment(cass);
         }
         else
         {
             WriteAssignment(ass);
         }
     }
 }
示例#6
0
 public void VisitAssignment(AbsynAssignment ass)
 {
     stms.Add(ass);
 }
示例#7
0
 public bool VisitAssignment(AbsynAssignment ass)
 {
     return(false);
 }
示例#8
0
 private void WriteAssignment(AbsynAssignment a)
 {
     a.Dst.Accept(this);
     writer.Write(" = ");
     a.Src.Accept(this);
 }
示例#9
0
 public void VisitAssignment(AbsynAssignment a)
 {
     writer.Indent();
     WriteAssignment(a);
     writer.Terminate(";");
 }
示例#10
0
 public AbsynStatement VisitAssignment(AbsynAssignment ass)
 {
     return(ass);
 }
示例#11
0
 public void VisitAssignment(AbsynAssignment a)
 {
     InnerFormatter.Indent();
     WriteAssignment(a);
     InnerFormatter.Terminate(";");
 }
示例#12
0
        public void Assign(Expression dst, Expression src)
        {
            var ass = new AbsynAssignment(dst, src);

            stmts.Add(ass);
        }