+/* `-quoted tokens */
+%type bqtok { buffer_t* }
+%destructor bqtok { buffer_delete(&$$); }
+bqtok(Z) ::= . { Z = buffer_new(); }
+bqtok(Z) ::= bqtok(A) escnl . { Z = A; }
+bqtok(Z) ::= bqtok(A) BSLASH non_nl(B) . { Z = buffer_escape(A, B.s, B.len); }
+bqtok(Z) ::= bqtok(A) svar(B) . { substvar(Z = A, B); }
+bqtok(Z) ::= bqtok(A) ATOM|SPACE|SHARP|EQUAL|LBRACE|RBRACE|SQUOTE|DQUOTE(B) . {
+ buffer_add(Z = A, B.s, B.len);
+}
+