Exemple #1
0
 public string Visit(ExprAdd node)
 {
     if (node.AnchorToken.Category == TokenCategory.PLUS)
     {
         return(VisitChildren(node) + Line(Indent() + "add.ovf"));
     }
     else if (node.AnchorToken.Category == TokenCategory.MINUS)
     {
         return(VisitChildren(node) + Line(Indent() + "sub"));
     }
     return(node.ToString() + "\n" + VisitChildren(node));
 }
Exemple #2
0
 protected override Expr VisitAdd(ExprAdd e)
 {
     return(this.VisitBinary(e, () => {
         if (!e.Overflow)
         {
             return this.il.Create(OpCodes.Add);
         }
         else
         {
             return this.il.Create(e.IsSigned ? OpCodes.Add_Ovf : OpCodes.Add_Ovf_Un);
         }
     }));
 }
        public Node ExprAdd()
        {
            //‹expr-mul› < ‹op-add› ‹expr-mul› >*
            var n1 = ExprMul();

            while (CurrentToken == TokenCategory.PLUS || CurrentToken == TokenCategory.MINUS)
            {
                var n2 = new ExprAdd();
                if (CurrentToken == TokenCategory.MINUS)
                {
                    n2.AnchorToken = Expect(TokenCategory.MINUS);
                }
                else
                {
                    n2.AnchorToken = Expect(TokenCategory.PLUS);
                }
                n2.Add(n1);
                n2.Add(ExprMul());
                n1 = n2;
            }
            return(n1);
        }
Exemple #4
0
 protected virtual Expr VisitAdd (ExprAdd e)
 {
     return this.VisitCollection (e, exprs => new ExprAdd (e.MethodInfo, exprs.First (), exprs.ElementAt (1), e.Signage, e.Overflow), e.Left, e.Right);
 }
 public void Visit(ExprAdd node)
 {
     VisitChildren(node);
 }