解析する必要のあるソフトウェアからの(独自の)出力があります。悲しいことに、エスケープされていないユーザー名があり、BNF(またはEBNFまたはABNF)を使用して解析する必要のあるファイルを記述できるかどうかを知りたいと思っています。
過度に単純化された問題(これは実際には単なる例です)は、次のようになります。
(データ)::=<ユーザー名>
<ユーザー名>::=(他のタイプのデータ)
また、場合によっては、ユーザー名を左または右に表示する代わりに、行の中央に表示することもできます。
問題は、ユーザー名がエスケープされておらず、ユーザー名に十分な制限がないことです(印刷可能なASCII、最大20文字であり、改行を含めることはできません)。たとえば、「=」は完全に有効なユーザー名になります。また、「= 1 = john = 2」も同様です(ユーザーは、サインオン時に、必要なユーザー名を選択でき、これらは取得した出力でエスケープされていないように見えるため)。
私のパーサーがいくつかの非常に創造的なユーザー名を窒息させたので(もう一度、私の制御ではなく、それらは「奇妙」であり、私はそれに対処する必要があります)、これに対処する簡単な方法を見つけることができないので、私は尋ねています。また、ユーザー名が事前にわからないことにも注意してください(たとえば、ユーザーが作成したすべてのユーザー名を含むデータベースにアクセスできません)。
では、無制限でエスケープされていないユーザー名はBNFと互換性がありませんか?
PS:間違いを犯した場合は、私と一緒にクールになってください、それはstackoverflowに関する私の最初の投稿です:)