Function __init__

Synopsis

def __init__(self)

Description

Initialize the scanner.

Source

Lines 48-110 in lib3/yaml/scanner.py.

def __init__(self):
    """Initialize the scanner."""
    # It is assumed that Scanner and Reader will have a common descendant.
    # Reader do the dirty work of checking for BOM and converting the
    # input data to Unicode. It also adds NUL to the end.
    #
    # Reader supports the following methods
    #   self.peek(i=0)       # peek the next i-th character
    #   self.prefix(l=1)     # peek the next l characters
    #   self.forward(l=1)    # read the next l characters and move the pointer.
    # Had we reached the end of the stream?
    self.done = False
    # The number of unclosed '{' and '['. `flow_level == 0` means block
    # context.
    self.flow_level = 0
    # List of processed tokens that are not yet emitted.
    self.tokens = []
    # Add the STREAM-START token.
    self.fetch_stream_start()
    # Number of tokens that were emitted through the `get_token` method.
    self.tokens_taken = 0
    # The current indentation level.
    self.indent = -1
    # Past indentation levels.
    self.indents = []
    # Variables related to simple keys treatment.
    # A simple key is a key that is not denoted by the '?' indicator.
    # Example of simple keys:
    #   ---
    #   block simple key: value
    #   ? not a simple key:
    #   : { flow simple key: value }
    # We emit the KEY token before all keys, so when we find a potential
    # simple key, we try to locate the corresponding ':' indicator.
    # Simple keys should be limited to a single line and 1024 characters.
    # Can a simple key start at the current position? A simple key may
    # start:
    # - at the beginning of the line, not counting indentation spaces
    #       (in block context),
    # - after '{', '[', ',' (in the flow context),
    # - after '?', ':', '-' (in the block context).
    # In the block context, this flag also signifies if a block collection
    # may start at the current position.
    self.allow_simple_key = True
    # Keep track of possible simple keys. This is a dictionary. The key
    # is `flow_level`; there can be no more that one possible simple key
    # for each level. The value is a SimpleKey record:
    #   (token_number, required, index, line, column, mark)
    # A simple key may start with ALIAS, ANCHOR, TAG, SCALAR(flow),
    # '[', or '{' tokens.
    self.possible_simple_keys = {}





Add Discussion as Guest

Log in