public Node ExprAnd() { //‹expr-comp› (&& ‹expr-comp›)* var n1 = ExprComp(); while (CurrentToken == TokenCategory.AND) { var n2 = new ExprAnd() { AnchorToken = Expect(TokenCategory.AND) }; n2.Add(n1); n2.Add(ExprComp()); n1 = n2; } return(n1); }
public string Visit(ExprAnd node) { var result = ""; var lbl = GenerateLabel(); var lbl2 = GenerateLabel(); if (node.AnchorToken.Category == TokenCategory.AND) { foreach (var n in node) { result += Visit((dynamic)n) + Line(Indent() + "ldc.i4 42") + Line(Indent() + "bne.un '" + lbl + "'"); } return(result + Line(Indent() + "ldc.i4 42") + Line(Indent() + "br " + lbl2) + Line(Indent() + lbl + ":") + Line(Indent() + "ldc.i4.0 ") + Line(Indent() + lbl2 + ":")); } return(node.ToString() + "\n" + VisitChildren(node)); }
public void Visit(ExprAnd node) { VisitChildren(node); }