;;;--------------------------------------------------------------------------
;;; Token scanner protocol.
-;; A place marker.
-
-(export '(token-scanner-place token-scanner-place-p))
-(defstruct token-scanner-place
- "A link in the chain of lookahead tokens; capturable as a place.
-
- If the scanner's place is captured, it starts to maintain a list of
- lookahead tokens. The list contains internal links -- it works out
- slightly easier that way. This is basically a simpler version of the
- charbuf scanner (q.v.); most significantly, the chain links here do double
- duty as place markers.
-
- The details of this structure are not a defined part of the token scanner
- protocol."
-
- (next nil :type (or token-scanner-place null))
- (type nil :read-only t)
- (value nil :read-only t)
- (line 1 :type (or fixnum null) :read-only t)
- (column 0 :type (or fixnum null) :read-only t))
-
;; The token scanner base class and parser context.
(export '(token-scanner token-type token-value))
scanner protocol, which explains the model.
Subclasses must provide the detailed scanning behaviour -- most notably
- the `scanner-token' generic function. This function should also update
- the `line' and `column' slots to track the position in the underlying
- source, if appropriate, and also implement a method on `file-location' to
- return the location. This class will handle the remaining details, such
- as dealing correctly with rewinding."))
+ the `scanner-token' generic function -- and also implement a method on
+ `file-location' to return the location. The `scanner-token' method should
+ also update the `line' and `column' slots to track the position in the
+ underlying source, if appropriate. This class will handle the remaining
+ details, such as dealing correctly with rewinding."))
(export 'token-scanner-context)
(defclass token-scanner-context (scanner-context token-parser-context)
(:documentation
"A parser context for a richer token-based scanners."))
+;; A place marker.
+
+(export '(token-scanner-place token-scanner-place-p))
+(defstruct token-scanner-place
+ "A link in the chain of lookahead tokens; capturable as a place.
+
+ If the scanner's place is captured, it starts to maintain a list of
+ lookahead tokens. The list contains internal links -- it works out
+ slightly easier that way. This is basically a simpler version of the
+ charbuf scanner (q.v.); most significantly, the chain links here do double
+ duty as place markers.
+
+ The details of this structure are not a defined part of the token scanner
+ protocol."
+
+ (scanner nil :type token-scanner :read-only t)
+ (next nil :type (or token-scanner-place null))
+ (type nil :read-only t)
+ (value nil :read-only t)
+ (line 1 :type (or fixnum null) :read-only t)
+ (column 0 :type (or fixnum null) :read-only t))
+
;; Protocol.
(export 'scanner-token)