Lexer sub-group match

ceving
Mon, 27 Nov 2023 17:48:39 +0000
Questions & Answers

I have the following code in my lexer in order to parse hex-numbers of the format '#0f'.

((:seq #\# (:+ (:or numeric (union-mixed "A" "B" "C" "D" "E" "F"))))
 (token-Hexdecimal (string->number (string-append (substring lexeme 0 1)
                                                  "x"
                                                  (substring lexeme 1)))))

The lexer joins the sequence of # and the digits into the string lexeme. After that I split the string into the # and the digits in order to be able to insert the "x" in between. This can't be efficient. Is it anyhow possible to define capturing groups in the regular expression?

2 posts - 2 participants