Pytocs.Syntax.Parser.print_stmt C# (CSharp) Method

print_stmt() public method

public print_stmt ( ) : Statement
return Statement
        public Statement print_stmt()
        {
            var args = new List<Argument>();
            Exp outputStream = null;    // default to stdout.
            bool trailing_comma = false;

            Token token = Expect(TokenType.ID);
            int posEnd = token.End;
            if (!Peek(TokenType.NEWLINE))
            {
                if (PeekAndDiscard(TokenType.OP_SHR))
                {
                    outputStream = test();
                    if (PeekAndDiscard(TokenType.COMMA))
                    {
                        var e = test();
                        args.Add(new Argument(null, e, filename, e.Start, e.End));
                        while (PeekAndDiscard(TokenType.COMMA))
                        {
                            var d = test();
                            args.Add(new Argument(null, d, filename, e.Start, d.End));
                        }
                        posEnd = args.Last().End;
                    }
                }
                else
                {
                    for (; ; )
                    {
                        var tok = lexer.Peek();
                        if (tok.Type == TokenType.EOF &&
                            tok.Type == TokenType.NEWLINE &&
                            tok.Type == TokenType.SEMI)
                            break;
                        var a = test();
                        args.Add(new Argument(null, a, filename, a.Start, a.End));
                        posEnd = a.End;
                        if (!PeekAndDiscard(TokenType.COMMA))
                            break;
                        if (Peek(stmt_follow))
                        {
                            trailing_comma = true;
                            break;
                        }
                    }
                }
            }
            return new PrintStatement(outputStream, args, trailing_comma, filename, token.Start, posEnd );
        }