Package rxpy :: Package parser :: Module support :: Class Builder
[hide private]
[frames] | no frames]

Class Builder

source code


Base class for states in the parser (called Builder rather than State to avoid confusion with the parser state).

The parser can be though of as a state machine, implemented via a separate loop (parse()) that repeatedly calls .append_character() on the current state, using whatever is returned as the next state.

The graph is assembled within the states, which either assemble locally or extend the state in a "parent" state (so states may reference parent states, but the evaluation process remains just a single level deep).

It is also possible for one state to delegate to the append_character method of another state (escapes are handled in this way, for example).

After all characters have been parsed, None is used as a final character to flush any state that is waiting for lookahead.

Instance Methods [hide private]
 
__init__(self, state)
x.__init__(...) initializes x; see x.__class__.__doc__ for signature
source code
 
append_character(self, character, escaped=False)
Accept the given character, returning a new builder.
source code

Inherited from object: __delattr__, __format__, __getattribute__, __hash__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __sizeof__, __str__, __subclasshook__

Properties [hide private]

Inherited from object: __class__

Method Details [hide private]

__init__(self, state)
(Constructor)

source code 
x.__init__(...) initializes x; see x.__class__.__doc__ for signature
Overrides: object.__init__
(inherited documentation)

append_character(self, character, escaped=False)

source code 

Accept the given character, returning a new builder. A value of None is passed at the end of the input, allowing cleanup.

If escaped is true then the value is always treated as a literal.