def __init__( self, etxconfig={}, outputdir=None, # PLY-lexer options lex_optimize=False, lextab=LEXTAB, lex_debug=False, # PLY-parser options yacc_optimize=False, yacctab=YACCTAB, yacc_debug=False, debug=None): self.debug = lex_debug or yacc_debug or debug self._etxconfig = etxconfig # Build Lexer self.etlex = ETLexer(error_func=self._lex_error_func) kwargs = {'optimize': lex_optimize} if lex_optimize != None else {} kwargs.update(debug=lex_debug) if lex_debug else None kwargs.update(lextab=lextab) self.etlex.build(**kwargs) self.tokens = self.etlex.tokens # Build Parser kwargs = {'optimize': yacc_optimize} if yacc_optimize != None else {} kwargs.update(debug=yacc_debug) if yacc_debug else None kwargs.update(outputdir=outputdir) if outputdir else None kwargs.update(tabmodule=yacctab) self.parser = ply.yacc.yacc(module=self, **kwargs) self.parser.etparser = self # For AST nodes to access `this` self._initialize()
def setUpModule() : global etlex etlex = ETLexer() etlex.build()