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)); }
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); }
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); }