dso-lex
Allows lexers to be defined using regular expressions a la cl-ppcre. A lexer will convert (or tokenize) a string into a list of tokens (consisting of a token-class and the token's image). For example:

(defun snip (s) (subseq s 1 (1- (length s)))) (defun un-squote (s) (regex-replace-all "''" (snip s) "'")) (defun un-dquote (s) (regex-replace-all "\"\"" (snip s) "\"")) (deflexer scan-csv (:priority-only t) ("[^\"',]+" value) ("'(?:[^']|'')*'" value un-squote) ("\"(?:[^\"]|\"\")*\"" value un-dquote) ("," comma))

See the distribution for a more complete example.

See the project page.

Quick assessment (2023-04-01)