1

JFlex を使用してスキャナーを生成しようとしています。

私が実装しようとしている文法の識別子規則の 1 つは次のとおりです (正規表現構文)。

[a-zA-Z]((_(?!_)|[a-zA-Z0-9])*[a-zA-Z0-9])?

上記の式が実際に有効で機能することを確認しました。ただし、jFlex 1.4.3 は、"疑問符(?!_)" について不平を言い続けているため、私の先読みアサーションの使用を好まないようです。私が間違っていることはありますか、それともJFlexで先読みを使用するのに別の方法がありますか?

先読み」を使用して、識別子名に 2 つの連続したアンダースコアを含めることはできないという規則を満たしています。

どんな助けでも大歓迎です。

4

1 に答える 1

3

それ以外の

[a-zA-Z]((_(?!_)|[a-zA-Z0-9])*[a-zA-Z0-9])? 

最適化されたパターンを使用

[a-zA-Z]+(_[a-zA-Z0-9]+|[a-zA-Z0-9]+)* 
于 2012-09-24T23:02:57.970 に答える