PLY の使用時に問題が発生しました。PLYでコールグラフジェネレーターを作りたいです。場合によっては、文法ファイル内のいくつかのトークンを破棄する必要があります。これは、トークンを破棄する前にパーサーがそのトークンを認識したときに何かを行う必要があるためです。そのため、レクサー ファイルで単に破棄することはできません。たとえば、「IF」トークンは破棄したいものです。それで、文法ファイルでそれを破棄するために何かをしようとします。と同じように:
def p_if(p):
'if : IF'
print "if"
parser.symstack.pop()
でも、思うようにはいきませんでした。symstack (これはパーサーの属性であり、パーサーは yacc.py の LRParser インスタンスです) を出力し、symstack リストには以前のトークンのみが含まれますが、「if」は含まれません。したがって、この状況でトークンを破棄する方法を考えています。誰でも私を助けることができますか?どうもありがとう!