+;; A place marker.
+
+(export '(token-scanner-place token-scanner-place-p))
+(defstruct (token-scanner-place
+ (:constructor make-token-scanner-place
+ (&key scanner next type value line column
+ &aux (%type type))))
+ "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))
+(define-access-wrapper token-scanner-place-type token-scanner-place-%type
+ :read-only t)
+