def get_lexer(filename): prefix = os.path.basename(filename)[:-4] temp = NamedTemporaryFile(prefix = prefix, suffix = "lextab.py") lex = {} pylly.parsespec(filename, temp.name) exec temp.read() in lex temp.close() return lexer.lexer(lex['lexspec'])
def generate(fname, targ, debug=0, forcegen=0) : """ Generate tables from a grammar or lexer spec file. """ import os.path if forcegen or not os.path.exists(targ) or _mtime(targ) < _mtime(fname) : print "generating %s from %s" % (targ, fname) if fname[-4:] == ".pyl" : from pyggy import pylly pylly.parsespec(fname, targ, debug=debug) elif fname[-4:] == ".pyg" : from pyggy import pyggyc pyggyc.parsespec(fname, targ, debug=debug) else : raise ApiError("bad spec filename %s" % fname)