62 lines
1.5 KiB
OCaml
62 lines
1.5 KiB
OCaml
(*
|
|
* uTop_token.ml
|
|
* -------------
|
|
* Copyright : (c) 2011, Jeremie Dimino <jeremie@dimino.org>
|
|
* Licence : BSD3
|
|
*
|
|
* This file is a part of utop.
|
|
*)
|
|
|
|
(** Tokens.
|
|
|
|
The type of tokens is semi-structured: parentheses construct and
|
|
quotations are nested and others tokens are flat list. *)
|
|
|
|
(** Locations in the source string, which is encoded in UTF-8. *)
|
|
type location = {
|
|
idx1 : int;
|
|
(** Start position in unicode characters. *)
|
|
idx2 : int;
|
|
(** Stop position in unicode characters. *)
|
|
ofs1 : int;
|
|
(** Start position in bytes. *)
|
|
ofs2 : int;
|
|
(** Stop position in bytes. *)
|
|
}
|
|
|
|
type t =
|
|
| Symbol of string
|
|
| Lident of string
|
|
| Uident of string
|
|
| Constant of string
|
|
| Char
|
|
| String of int * bool
|
|
(** [String (quote_size, terminated)]. *)
|
|
| Comment of comment_kind * bool
|
|
(** [Comment (kind, terminated)]. *)
|
|
| Blanks
|
|
| Error
|
|
| Quotation of (quotation_item * location) list * bool
|
|
(** [Quotation (items, terminated)]. *)
|
|
|
|
and comment_kind =
|
|
| Comment_reg
|
|
(** Regular comment. *)
|
|
| Comment_doc
|
|
(** Documentation comment. *)
|
|
|
|
and quotation_item =
|
|
| Quot_data
|
|
| Quot_anti of antiquotation
|
|
|
|
and antiquotation = {
|
|
a_opening : location;
|
|
(** Location of the opening [$]. *)
|
|
a_closing : location option;
|
|
(** Location of the closing [$]. *)
|
|
a_name : (location * location) option;
|
|
(** Location of the name and colon if any. *)
|
|
a_contents : (t * location) list;
|
|
(** Contents of the location. *)
|
|
}
|