예제 #1
0
        public override ImperativeNode VisitWhileStatementNode(WhileStmtNode node)
        {
            var newExpr = node.Expr.Accept(this);

            if (node.Expr != newExpr)
            {
                node.Expr = newExpr;
            }

            node.Body = VisitNodeList(node.Body);
            return(node);
        }
예제 #2
0
파일: Parser.cs 프로젝트: zjloscar/Dynamo
        void whilestmt(out Node node)
        {
            WhileStmtNode whileStmtNode = new WhileStmtNode();
            NodeList      body          = null;

            Expect(22);
            Expect(8);
            expr(out node);
            whileStmtNode.Expr = node;
            Expect(9);
            Expect(32);
            stmtlist(out body);
            whileStmtNode.Body = body;
            Expect(33);
            node = whileStmtNode;
        }
예제 #3
0
        private void WhileStmt(WhileStmtNode node)
        {
            ScopeManager.ScopeEnter();
            node.body = new StmtNode();
            Move();

            RequiredToken(Tag.DL_LPAR);

            node.condition = new ExprNode();
            Expr(node.condition);

            if (node.condition.Type() != VarType.TYPE_BOOL)
            {
                new TypeMismatchError(VarType.TYPE_BOOL, node.condition.Type()).PrintErrMsg();
            }

            RequiredToken(Tag.DL_RPAR);

            Stmt(node.body);
            ScopeManager.ScopeLeave();
        }
예제 #4
0
 public virtual void VisitWhileStatementNode(WhileStmtNode node)
 {
     DefaultVisit(node);
 }
 public virtual bool VisitWhileStatementNode(WhileStmtNode node)
 {
     return(DefaultVisit(node));
 }