<s> import re <EOL> EOF = - <NUM_LIT:1> <EOL> class Lexer ( object ) : <EOL> def __init__ ( self ) : <EOL> self . c = None <EOL> self . cursor = <NUM_LIT:0> <EOL> self . string = None <EOL> def _reset ( self ) : <EOL> self . c = None <EOL> self . cursor = <NUM_LIT:0> <EOL> self . string = None <EOL> def consume ( self ) : <EOL> self . cursor += <NUM_LIT:1> <EOL> if self . cursor >= len ( self . string ) : <EOL> self . c = EOF <EOL> else : <EOL> self . c = self . string [ self . cursor ] <EOL> def _do_parse ( self ) : <EOL> pass <EOL> def parse ( self , string ) : <EOL> if not isinstance ( string , basestring ) : <EOL> raise TypeError ( "<STR_LIT>" ) <EOL> self . _reset ( ) <EOL> self . string = string <EOL> if not string : <EOL> self . c = EOF <EOL> else : <EOL> self . c = string [ <NUM_LIT:0> ] <EOL> return self . _do_parse ( ) <EOL> class RegexToken ( object ) : <EOL> def __init__ ( self , value ) : <EOL> self . regex = re . compile ( value ) <EOL> def __contains__ ( self , value ) : <EOL> return self . __eq__ ( value ) <EOL> def __eq__ ( self , other ) : <EOL> return bool ( self . regex . match ( other ) ) </s>
