7 (defmacro ew-scan-mime (scan col str)
8 `(let ((res (ew-make-anchor col str))
33 ((?\r ?\n [" \t"]) 'ew:fold)
36 ((+ [(?a ?z) (?A ?Z) (?0 ?9) "!#$%&'*+-.^_`{|}~" non-ascii])
38 (?\" (setq mode 'quoted-string) 'ew:qs-begin)
39 (?\[ (setq mode 'domain-literal) 'ew:dl-begin)
40 (?\( (setq mode 'comment
43 (() (setq p q) 'ew:*err*)))
44 (ew-add-frag res r p type))
45 ((eq mode 'quoted-string)
50 (?\" (setq mode 'token) 'ew:qs-end)
51 ((?\\ ?\r ?\n [" \t"]) 'ew:qs-qfold)
52 ((?\\ ?\r ?\n [^ " \t"])
55 (* (+ ?\r) [^ "\"\\ \t\r\n"] (* [^ "\"\\ \t\r"]))
59 (ew-add-frag res r (- p 3) 'ew:qs-texts)
63 (* (+ ?\r) [^ "\"\\ \t\r\n"] (* [^ "\"\\ \t\r"]))
67 (ew-add-frag res r (- p 3) 'ew:qs-texts)
75 (* (+ ?\r) [^ "\"\\ \t\r\n"] (* [^ "\"\\ \t\r"]))
79 (progn (setq p q) 'ew:*err*)))))
80 (ew-add-frag res r p type))
81 ((eq mode 'domain-literal)
86 (?\] (setq mode 'token) 'ew:dl-end)
87 ((?\\ ?\r ?\n [" \t"])
89 ((?\\ ?\r ?\n [^ " \t"])
92 (* (+ ?\r) [^ "[]\\ \t\r\n"] (* [^ "[]\\ \t\r"]))
96 (ew-add-frag res r (- p 3) 'ew:dl-texts)
100 (* (+ ?\r) [^ "[]\\ \t\r\n"] (* [^ "[]\\ \t\r"]))
104 (ew-add-frag res r (- p 3) 'ew:dl-texts)
106 (setq p q) 'ew:*err*)
111 (((* [^ "[]\\ \t\r"])
112 (* (+ ?\r) [^ "[]\\ \t\r\n"] (* [^ "[]\\ \t\r"]))
116 (progn (setq p q) 'ew:*err*)))))
117 (ew-add-frag res r p type))
123 (?\( (setq nest (1+ nest)) 'ew:cm-nested-begin)
124 (?\) (setq nest (1- nest))
126 (progn (setq mode 'token) 'ew:cm-end)
128 ((?\\ ?\r ?\n [" \t"])
130 ((?\\ ?\r ?\n [^ " \t"])
131 (setq p q) 'ew:*err*)
132 (((* [^ "()\\ \t\r"])
133 (* (+ ?\r) [^ "()\\ \t\r\n"] (* [^ "()\\ \t\r"]))
137 (ew-add-frag res r (- p 3) 'ew:cm-texts)
140 (((* [^ "()\\ \t\r"])
141 (* (+ ?\r) [^ "()\\ \t\r\n"] (* [^ "()\\ \t\r"]))
145 (ew-add-frag res r (- p 3) 'ew:cm-texts)
147 (setq p q) 'ew:*err*)
152 (((* [^ "()\\ \t\r"])
153 (* (+ ?\r) [^ "()\\ \t\r\n"] (* [^ "()\\ \t\r"]))
157 (progn (setq p q) 'ew:*err*)))))
158 (ew-add-frag res r p type))))
162 (defun ew-scan-unibyte-mime (col str)
163 (ew-scan-mime lex-scan-unibyte col str))
164 (defun ew-scan-multibyte-mime (col str)
165 (ew-scan-mime lex-scan-multibyte col str))
170 (lambda (frag) (cons (get frag 'type) (symbol-name frag)))
172 (ew-scan-unibyte-mime
173 0 " text/vnd.latex-z; charset=ISO-2022-JP"))))