public Type Visit(LoopStatementNode node) { var lastInLoopOrFor = inLoopOrFor; inLoopOrFor = true; VisitChildren(node); inLoopOrFor = lastInLoopOrFor; return(Type.VOID); }
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; }
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); }