From 55d5d39c53cda6f26b89daac575e9220a74837d4 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Fri, 29 Jun 2018 10:04:54 +0200 Subject: [PATCH] Add a private API for jedi to work with the parser stack --- parso/parser.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/parso/parser.py b/parso/parser.py index df4aea4..d96f1ee 100644 --- a/parso/parser.py +++ b/parso/parser.py @@ -24,6 +24,7 @@ complexity of the ``Parser`` (there's another parser sitting inside ``Statement``, which produces ``Array`` and ``Call``). """ from parso import tree +from parso.pgen2.generator import ReservedString class ParserSyntaxError(Exception): @@ -54,7 +55,20 @@ class InternalParseError(Exception): class Stack(list): - pass + def _allowed_transition_names_and_token_types(self): + def iterate(): + # An API just for Jedi. + for stack_node in reversed(self): + for transition in stack_node.dfa.transitions: + if isinstance(transition, ReservedString): + yield transition.value + else: + yield transition # A token type + + if not stack_node.dfa.is_final: + break + + return list(iterate()) class StackNode(object):