def load_grammar(version=None): """ Loads a Python grammar. The default version is always the latest. If you need support for a specific version, please use e.g. `version='3.3'`. """ if version is None: version = '3.6' if version in ('3.2', '3.3'): version = '3.4' elif version == '2.6': version = '2.7' file = 'grammar' + version + '.txt' global _loaded_grammars path = os.path.join(os.path.dirname(__file__), file) try: return _loaded_grammars[path] except KeyError: try: with open(path) as f: bnf_text = f.read() grammar = generate_grammar(bnf_text) return _loaded_grammars.setdefault(path, grammar) except FileNotFoundError: # Just load the default if the file does not exist. return load_grammar()
def load_grammar(file='grammar3.4'): # For now we only support two different Python syntax versions: The latest # Python 3 and Python 2. This may change. if file.startswith('grammar3'): file = 'grammar3.4' else: file = 'grammar2.7' global _loaded_grammars path = os.path.join(os.path.dirname(__file__), file) + '.txt' try: return _loaded_grammars[path] except KeyError: return _loaded_grammars.setdefault(path, generate_grammar(path))
def load_grammar(version='3.4'): # For now we only support two different Python syntax versions: The latest # Python 3 and Python 2. This may change. if version in ('3.2', '3.3'): version = '3.4' elif version == '2.6': version = '2.7' file = 'grammar' + version + '.txt' global _loaded_grammars path = os.path.join(os.path.dirname(__file__), file) try: return _loaded_grammars[path] except KeyError: return _loaded_grammars.setdefault(path, generate_grammar(path))