#?SuikaWiki/0.9 *phrase の構文 **RFC 2822 から -[1] word = atom / quoted-string ;; RFC 2822 3.2.6 -[2] phrase = 1*word / obs-phrase ;; RFC 2822 3.2.6 -[3] obs-phrase = word *(word / "." / CFWS) ;; RFC 2822 4.1 [4] [CODE(ABNF)[obs-phrase]] に [CODE(ABNF)["."]] が含まれているのは、名前の頭文字などで [CODE(ABNF)[quoted-string]] の外で使う [[DQN]] が多かったせいです (4.1)。 - [5] [[quoted-string]] も [[atom]] も周りの [[CFWS]] は省略可能ですから、 [SAMP[atom1"quoted-string1"atom2]] とか [SAMP["quoted-string1""quoted-string2"]] とかもありですね。意味があるのかと問われればないと思いますけど、 parser はこういうのも覚悟しないといけないということで。 [[#comment]] **MIME [6] [[RFC2047]] 5. (3) が最新の定義です。次のようにあります。 また、説明によると [[encoded-word]] は必ず隣接する他のものと [[linear-white-space]] で区切られる必要があります。 -[7] phrase = 1*( encoded-word / word ) [8] >>1-3,>>6-7 を考慮に [[ABNF]] で書き直すと、 -[9] phrase = 1*(word / encoded-word) / obs-phrase -[10] encoded-word = CFWS CFWS 但し [CODE(ABNF)[phrase]] が行全体の初めや終わりに来る場合は [[CFWS]] は要りませんから、この部分だけ ABNF で表すのは無理ですね... [[#comment]] *メモ