public Node Expr() { //ExprOr --> ‹expr-and› < || ‹expr-and› >* var n = ExprAnd(); while (CurrentToken == TokenCategory.OR) { var n1 = new ExprOr() { AnchorToken = Expect(TokenCategory.OR) }; n1.Add(n); n1.Add(ExprAnd()); n = n1; } return(n); }
public string Visit(ExprOr node) { var result = ""; var truecondition = GenerateLabel(); var endcondition = GenerateLabel(); if (node.AnchorToken.Category == TokenCategory.OR) { foreach (var n in node) { result += Visit((dynamic)n) + Line(Indent() + "ldc.i4.0") + Line(Indent() + "bne.un '" + truecondition + "'"); } return(result + Line(Indent() + "ldc.i4.0") + Line(Indent() + "br " + endcondition) + Line(Indent() + truecondition + ":") + Line(Indent() + "ldc.i4 42") + Line(Indent() + endcondition + ":")); } return(node.ToString() + "\n" + VisitChildren(node)); }
public void Visit(ExprOr node) { VisitChildren(node); }