;;;--------------------------------------------------------------------------
;;; Indicators and error messages.
+(defvar *indicator-map* (make-hash-table)
+ "Hash table mapping indicator objects to human-readable descriptions.")
+
(export 'define-indicator)
(defun define-indicator (indicator description)
"Associate an INDICATOR with its textual DESCRIPTION.
(scanner-current-char char-scanner))
(and consumedp (file-location char-scanner))))
+(export 'skip-until)
(defparse skip-until (:context (context token-scanner-context)
(&key (keep-end nil keep-end-p))
&rest token-types)
:keep-end ,(if keep-end-p keep-end
(> (length token-types) 1))))
+(export 'error)
(defparse error (:context (context token-scanner-context)
(&key) sub &optional (recover t))
"Try to parse SUB; if it fails then report an error, and parse RECOVER.
;;;--------------------------------------------------------------------------
;;; Lexical analysis utilities.
+(export 'scan-comment)
(defun scan-comment (char-scanner)
"Scan a comment (either `/* ... */' or `// ...') from CHAR-SCANNER.