// Returns NExprAnd or any of subproduction nodes public Node ExprAnd() { Node resultingNode = ExprComp(); while (CurrentToken == TokenCategory.AND) { NExprAnd tmp = new NExprAnd(); tmp.Add(resultingNode); resultingNode = tmp; Expect(TokenCategory.AND); resultingNode.Add(ExprComp()); } return(resultingNode); }
public string Visit(NExprAnd nExprAnd) { string retVal = ""; retVal += Visit((dynamic)nExprAnd[0]); string exitLabel = GenerateLabel(); for (var i = 1; i < nExprAnd.children.Count; i++) { retVal += "\t\tdup\n"; retVal += "\t\tbrfalse " + exitLabel + "\n"; retVal += "\t\tpop\n"; retVal += Visit((dynamic)nExprAnd[i]); } retVal += exitLabel + ":\n"; return(retVal); }
//----------------------------------------------------------- public void Visit(NExprAnd node) { VisitBinaryOperator('&', node /*, Type.BOOL*/); }
public void Visit(NExprAnd nExprAnd) { GenericChildVisitor(nExprAnd); }