Я столкнулся с проблемой при использовании PLY. Я хочу создать генератор графа вызовов с помощью PLY. В какой-то ситуации мне нужно отбросить некоторые токены в файле грамматики. Это потому, что мне нужно что-то сделать, когда синтаксический анализатор распознает этот токен, прежде чем я его отбрасываю, поэтому я не могу просто отбросить его в файле лексера. Например, токен «IF» — это тот, который я хочу отбросить. Поэтому я пытаюсь что-то сделать, чтобы отбросить его в файле грамматики. Как:
def p_if(p):
'if : IF'
print "if"
parser.symstack.pop()
Но все пошло не так, как я думаю. Я печатаю симстек (это атрибут синтаксического анализатора, а синтаксический анализатор является экземпляром LRParser yacc.py), и список симстека содержит только предыдущие токены, но не «если». Поэтому мне интересно, как отказаться от токена в этой ситуации. Кто-нибудь может мне помочь? Большое спасибо!