From 5c3304f7c24de0ca897ca2fe428786edc87bbde5 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Thu, 31 Aug 2017 19:39:27 +0200 Subject: [PATCH] Move start symbols a bit. --- parso/grammar.py | 10 ++++++++-- parso/python/fstring.py | 1 - 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/parso/grammar.py b/parso/grammar.py index c54c9ba..6ee0495 100644 --- a/parso/grammar.py +++ b/parso/grammar.py @@ -71,7 +71,7 @@ class Grammar(object): return self._parse(code=code, **kwargs) def _parse(self, code=None, path=None, error_recovery=True, - start_symbol='file_input', cache=False, diff_cache=False, + start_symbol=None, cache=False, diff_cache=False, cache_path=None, start_pos=(1, 0)): """ Wanted python3.5 * operator and keyword only arguments. Therefore just @@ -81,6 +81,10 @@ class Grammar(object): """ if code is None and path is None: raise TypeError("Please provide either code or a path.") + + if start_symbol is None: + start_symbol = self._start_symbol + if error_recovery and start_symbol != 'file_input': raise NotImplementedError("This is currently not implemented.") @@ -184,6 +188,7 @@ class Grammar(object): class PythonGrammar(Grammar): _error_normalizer_config = ErrorFinderConfig() _token_namespace = token + _start_symbol = 'file_input' def __init__(self, version_info, bnf_text): super(PythonGrammar, self).__init__( @@ -204,6 +209,7 @@ class PythonGrammar(Grammar): class PythonFStringGrammar(Grammar): _token_namespace = fstring.TokenNamespace + _start_symbol = 'fstring' def __init__(self): super(PythonFStringGrammar, self).__init__( @@ -220,7 +226,7 @@ class PythonFStringGrammar(Grammar): p = self._parser( self._pgen_grammar, error_recovery=error_recovery, - start_symbol=fstring.START_SYMBOL, + start_symbol=self._start_symbol, ) return p.parse(tokens=tokens) diff --git a/parso/python/fstring.py b/parso/python/fstring.py index 037dc96..a8fe7b4 100644 --- a/parso/python/fstring.py +++ b/parso/python/fstring.py @@ -36,7 +36,6 @@ class TokenNamespace: return getattr(cls, string) -START_SYMBOL = 'fstring' GRAMMAR = """ fstring: expression* ENDMARKER format_spec: ':' expression*