+(defmacro with-test-scanner ((scanner string) &body body)
+ "Common machinery for `test-parse-MUMBLE' below.
+
+ This is too specialized to make more widely available."
+ (with-gensyms (in charscan)
+ (once-only (string)
+ `(with-input-from-string (,in ,string)
+ (let* ((*module-type-map* (make-hash-table))
+ (,charscan (make-instance 'charbuf-scanner
+ :stream ,in
+ :filename "<string>"))
+ (,scanner (make-instance 'sod-token-scanner
+ :char-scanner ,charscan
+ :filename "<string>")))
+ (with-parser-context (token-scanner-context :scanner ,scanner)
+ ,@body))))))
+