Example #1
0
        // 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);
        }
Example #3
0
//------------------------------------------------------------
        public void Visit(NExprOr node)
        {
            Console.WriteLine($"+++++++++++++++ NExprOr ++++++++++++++++");

            //VisitChildren(node);
        }
 public void Visit(NExprOr nExprOr)
 {
     GenericChildVisitor(nExprOr);
 }