Beispiel #1
0
        void NextStatement(ref StatementNode node)
        {
            ExpressionNode varExpr = null;

            Expect(41);
            NumericVariable(ref varExpr);
            var nnode = new NextStatementNode(varExpr);

            prog.PopNext(ref nnode);
            node = nnode;
        }
Beispiel #2
0
        public bool PopNext(ref NextStatementNode next)
        {
            if (openFors.Count == 0)
            {
                parser.SemErr("NEXT without FOR");
                return(false);
            }
            var forNode = openFors.Pop();

            if (next.Var == null)
            {
                next = new NextStatementNode(forNode.Var);
            }
            else if (!forNode.Var.Equals(next.Var))
            {
                parser.SemErr($"different var names in FOR ({forNode.Var.Name}) and NEXT ({next.Var.Name})");
                return(false);
            }
            next.For         = forNode;
            forNode.nextNode = next;
            return(true);
        }