コード例 #1
0
        // 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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
//-----------------------------------------------------------
        public void Visit(NExprAnd node)
        {
            VisitBinaryOperator('&', node /*, Type.BOOL*/);
        }
コード例 #4
0
 public void Visit(NExprAnd nExprAnd)
 {
     GenericChildVisitor(nExprAnd);
 }