2. Pass - BlocksΒΆ

In the second pass a stream of double-linked Token objects is read and grouped in another Python generator to blocks. Blocks are again a chain of double-linked objects of base-class Block.

Condensed definition of class Block:

@Export
class Block(metaclass=MetaBlock):
  """Base-class for all :term:`block` classes."""

  __STATES__ :      List = None   #: List of all `state...` methods in this class.

  _previousBlock : Block = None   #: Reference to the previous block.
  NextBlock :      Block = None   #: Reference to the next block.
  StartToken :     Token = None   #: Reference to the first token in the scope of this block.
  EndToken :       Token = None   #: Reference to the last token in the scope of this block.
  MultiPart :      bool =  None   #: True, if this block has multiple parts.

  def __init__(self, previousBlock, startToken, endToken=None, multiPart=False):
  def __len__(self):
  def __iter__(self):
  def __repr__(self):
  def __str__(self):

  @property
  def PreviousBlock(self):

  @property
  def Length(self):

  @property
  def States(self):

  @classmethod
  def stateError(cls, parserState: ParserState):