Function fetch_more_tokens

Synopsis

def fetch_more_tokens(self)

Description

No description yet.

Source

Lines 156-261 in lib3/yaml/scanner.py.

def fetch_more_tokens(self):
    # Eat whitespaces and comments until we reach the next token.
    self.scan_to_next_token()
    # Remove obsolete possible simple keys.
    self.stale_possible_simple_keys()
    # Compare the current indentation and column. It may add some tokens
    # and decrease the current indentation level.
    self.unwind_indent(self.column)
    # Peek the next character.
    ch = self.peek()
    # Is it the end of stream?
    if ch == '\0':
        return self.fetch_stream_end()
    # Is it a directive?
    if ch == '%' and self.check_directive():
        return self.fetch_directive()
    # Is it the document start?
    if ch == '-' and self.check_document_start():
        return self.fetch_document_start()
    # Is it the document end?
    if ch == '.' and self.check_document_end():
        return self.fetch_document_end()
    # TODO: support for BOM within a stream.
    #if ch == '\uFEFF':
    #    return self.fetch_bom()    <-- issue BOMToken
    # Note: the order of the following checks is NOT significant.
    # Is it the flow sequence start indicator?
    if ch == '[':
        return self.fetch_flow_sequence_start()
    # Is it the flow mapping start indicator?
    if ch == '{':
        return self.fetch_flow_mapping_start()
    # Is it the flow sequence end indicator?
    if ch == ']':
        return self.fetch_flow_sequence_end()
    # Is it the flow mapping end indicator?
    if ch == '}':
        return self.fetch_flow_mapping_end()
    # Is it the flow entry indicator?
    if ch == ',':
        return self.fetch_flow_entry()
    # Is it the block entry indicator?
    if ch == '-' and self.check_block_entry():
        return self.fetch_block_entry()
    # Is it the key indicator?
    if ch == '?' and self.check_key():
        return self.fetch_key()
    # Is it the value indicator?
    if ch == ':' and self.check_value():
        return self.fetch_value()
    # Is it an alias?
    if ch == '*':
        return self.fetch_alias()
    # Is it an anchor?
    if ch == '&':
        return self.fetch_anchor()
    # Is it a tag?
    if ch == '!':
        return self.fetch_tag()
    # Is it a literal scalar?
    if ch == '|' and not self.flow_level:
        return self.fetch_literal()
    # Is it a folded scalar?
    if ch == '>' and not self.flow_level:
        return self.fetch_folded()
    # Is it a single quoted scalar?
    if ch == '\'':
        return self.fetch_single()
    # Is it a double quoted scalar?
    if ch == '\"':
        return self.fetch_double()
    # It must be a plain scalar then.
    if self.check_plain():
        return self.fetch_plain()
    # No? It's an error. Let's produce a nice error message.
    raise ScannerError("while scanning for the next token", None,
            "found character %r that cannot start any token" % ch,
            self.get_mark())





Add Discussion as Guest

Log in