3

GEDCOM ファイル形式を解析しようとしています。その標準によれば、CR と LF のすべての組み合わせは、改行を表すのに有効です。

これは行ベースの形式であるため、番号とタグが既に一致している場合に、行の残りの部分を一致させたい場合がよくあります。ルールの例は次のとおりです。

"NAME ".+               { /* deal with the name */ }

改行は

[\r\n]+             {return ENDLINE;}

これは、背後で \r\n を \n に変換するため、Windows では正常に機能しますが、Linux では機能しません。そこでは、\r をドットで一致させることができます。Flex は最長一致ルールを使用するため、データに \r を含めるか、既知のタグを UNKNOWNTAG ルールに一致させます。これは、技術的に正しい一致が 1 バイト長くなるためです。

解決策は、すべてのドットを [^\r\n] に置き換えることですが、それはエレガントではないようです。より良い方法はありますか?

4

1 に答える 1