私はAnTLR4でPythonの文法を実装していますが、私はINDENTとDEDENTと同じ問題に直面していますが、ここで説明:ANTLR4- dynamically inject tokenAnTLR4:INDENTとDEDENTトークン
を私がしようとしているソリューションをすることができテルにより溶液を変換することですここに見つかりましたhttp://antlr3.org/grammar/1078018002577/python.tar.gz(オーバーライドnextTokenと仮想トークンを挿入)。
LEADING_WS
: {getColumn()==1}?
// match spaces or tabs, tracking indentation count
( ' ' { spaces++; }
| '\t' { spaces += 8; spaces -= (spaces % 8); }
| '\014' // formfeed is ok
)+
{
}
...
が、私はレクサールールのアクションは、単一altermost代替の最後の要素でなければならないので、エラーを取得しておいてください。
問題は、このソリューションは、私たちのような字句解析ルールを持っていることを前提としていることです。
誰でも解決策を見つけるのを手助けできますか?
ありがとうございました!!!
が、私は同じ問題を持っていたし、それのためのヘルパークラスを作成することにしました:[ANTLR-denter](https://github.com/yshavit/antlr-denter)。 – yshavit