1
fparsecを使用してRFC 2822を解析しようとしていますが、複数行のヘッダーを処理できません:(次のヘッダーと混同します) 何かヒントはありますか?複数のヘッダー行を解析するfparsec rfc2822
let str (s:string) = pstring s
let stringLiteral =
manySatisfy (fun c -> c <> ':' && c <> '\r' && c <> '\n')
let ws = many (pchar ' ')
let keyValueSimple = stringLiteral .>>. (ws >>. str ":" >>. ws >>. stringLiteral) .>>. pchar '\n' |>> (fun (a,b) -> a)
let lineValue = ws >>. stringLiteral .>>. (pchar '\n' .>>. (pchar '\t')) |>> (fun (a,b) -> a)
let lastValue = ws >>. stringLiteral .>>. (pchar '\n' .>> notFollowedBy (pchar '\t')) |>> (fun (a,b) -> a)
let keyValueComplex = stringLiteral .>>. (ws >>. pchar ':') .>>. (many lineValue) .>>. lastValue |>> (fun (((f),d),b) -> (f,f))
let headers = many1 (keyValueComplex)
let parse (fileName:string) =
test headers "Return-Path: <[email protected]>\n\twerwe\nDelivered-To: [email protected]\n "
私は期待してます\トン3,1で:配信-TO:[email protected]