// Returns NExprOr or any of subproduction nodes public Node ExprOr() { Node resultingNode = ExprAnd(); while (CurrentToken == TokenCategory.OR) { NExprOr tmp = new NExprOr(); tmp.Add(resultingNode); resultingNode = tmp; Expect(TokenCategory.OR); resultingNode.Add(ExprAnd()); } return(resultingNode); }
public string Visit(NExprOr nExprOr) { string retVal = ""; retVal += Visit((dynamic)nExprOr[0]); string exitLabel = GenerateLabel(); for (var i = 1; i < nExprOr.children.Count; i++) { retVal += "\t\tdup\n"; retVal += "\t\tbrtrue " + exitLabel + "\n"; retVal += "\t\tpop\n"; retVal += Visit((dynamic)nExprOr[i]); } retVal += exitLabel + ":\n"; return(retVal); }
//------------------------------------------------------------ public void Visit(NExprOr node) { Console.WriteLine($"+++++++++++++++ NExprOr ++++++++++++++++"); //VisitChildren(node); }
public void Visit(NExprOr nExprOr) { GenericChildVisitor(nExprOr); }