Exemplo n.º 1
0
    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()
Exemplo n.º 2
0
def setUpModule() :
    global etlex
    etlex = ETLexer()
    etlex.build()