# File kwartz.rb, line 3732
        def parse
            nodelist = parse_stmt_list()
            unless token() == nil
                if token.is_a?(String)
                    s = "'#{token()}'"
                else
                    case token()
                    when :name, :number
                        s = "'#{token_str()}'"
                    when :string
                        s = "\"'#{token_str()}'\""
                    else
                        s = token()
                    end
                end
                _syntaxerr("#{s}: invalid statement.")
            end
            #
            macro_list = []
            stmt_list = []
            nodelist.each do |stmtnode|
                if stmtnode.token == :macro
                    macro_list << stmtnode
                else
                    stmt_list << stmtnode
                end
            end
            return NodeList.new(macro_list + stmt_list)
        end