|
|
@ -6,6 +6,7 @@
|
|
|
|
(require-for-syntax "private-lex/generate-code.ss")
|
|
|
|
(require-for-syntax "private-lex/generate-code.ss")
|
|
|
|
(require-for-syntax "private-lex/structs.ss")
|
|
|
|
(require-for-syntax "private-lex/structs.ss")
|
|
|
|
(require (lib "list.ss")
|
|
|
|
(require (lib "list.ss")
|
|
|
|
|
|
|
|
(lib "readerr.ss" "syntax")
|
|
|
|
"private-lex/token.ss")
|
|
|
|
"private-lex/token.ss")
|
|
|
|
(provide lexer define-lex-abbrev define-lex-abbrevs
|
|
|
|
(provide lexer define-lex-abbrev define-lex-abbrevs
|
|
|
|
make-lex-buf
|
|
|
|
make-lex-buf
|
|
|
@ -20,16 +21,14 @@
|
|
|
|
(let ((match
|
|
|
|
(let ((match
|
|
|
|
(push-back lb (- length longest-match-length))))
|
|
|
|
(push-back lb (- length longest-match-length))))
|
|
|
|
(if (not longest-match-action)
|
|
|
|
(if (not longest-match-action)
|
|
|
|
(raise (make-exn:read
|
|
|
|
(raise-read-error
|
|
|
|
(format "lexer: No match found in input starting with: ~a"
|
|
|
|
(format "lexer: No match found in input starting with: ~a"
|
|
|
|
(list->string (lex-buffer-from lb)))
|
|
|
|
(list->string (lex-buffer-from lb)))
|
|
|
|
(current-continuation-marks)
|
|
|
|
|
|
|
|
(lex-buffer-ip lb)
|
|
|
|
|
|
|
|
#f
|
|
|
|
#f
|
|
|
|
(position-line first-pos)
|
|
|
|
(position-line first-pos)
|
|
|
|
(position-col first-pos)
|
|
|
|
(position-col first-pos)
|
|
|
|
(position-offset first-pos)
|
|
|
|
(position-offset first-pos)
|
|
|
|
(- (position-offset end-pos) (position-offset first-pos)))))
|
|
|
|
(- (position-offset end-pos) (position-offset first-pos))))
|
|
|
|
(longest-match-action
|
|
|
|
(longest-match-action
|
|
|
|
(lambda ()
|
|
|
|
(lambda ()
|
|
|
|
first-pos)
|
|
|
|
first-pos)
|
|
|
|