Esempio n. 1
0
        public Type Visit(LoopStatementNode node)
        {
            var lastInLoopOrFor = inLoopOrFor;

            inLoopOrFor = true;

            VisitChildren(node);

            inLoopOrFor = lastInLoopOrFor;
            return(Type.VOID);
        }
Esempio n. 2
0
        public void Visit(LoopStatementNode node)
        {
            var lastId = currentId;

            currentId = id++;
            builder.AppendLine($"\tloop_{currentId}:");
            VisitChildren(node);
            builder.AppendLine($"\t\tbr loop_{currentId}");
            builder.AppendLine($"\tend_{currentId}:");

            currentId = lastId;
        }
Esempio n. 3
0
        public Node LoopStatement()
        {
            var loop_node = new LoopStatementNode()
            {
                AnchorToken = Expect(TokenCategory.LOOP)
            };

            loop_node.Add(ZeroOrMore(firstOfStatement, Statement));
            Expect(TokenCategory.END);
            Expect(TokenCategory.SEMICOLON);
            return(loop_node);
        }