Source file tokensource.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
(*
   Copyright 2013-2018 RIKEN
   Copyright 2018-2025 Chiba Institude of Technology

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
*)

(* Author: Masatomo Hashimoto <m.hashimoto@stair.center> *)

module Xqueue = Diffast_misc.Xqueue
module Astloc = Langs_common.Astloc

module Loc = Astloc

exception Empty

type rawtoken = Tokens_.token

type qtoken = Token.qtoken_t


class virtual c = object

  method virtual prepend_queue   : ?copy:bool -> qtoken Xqueue.c -> unit
  method virtual prepend         : qtoken -> unit

  method virtual peek_nth_rawtok : int -> rawtoken
  method virtual peek_nth        : int -> qtoken

  method virtual peek_next_rawtok : ?skip_eol:bool -> unit -> rawtoken (* skip directives *)
  method virtual get              : ?prefetch:bool -> unit -> qtoken

  method virtual discard         : ?skip_pp_branch:bool -> unit -> qtoken

  method virtual get_last_rawtok : rawtoken
  method virtual set_last_rawtok : rawtoken -> unit

  method virtual get_last_loc    : Loc.t
  method virtual set_last_loc    : Loc.t -> unit

  method virtual get_prev_rawtok : rawtoken
  method virtual set_prev_rawtok : rawtoken -> unit

  method virtual get_prev_loc    : Loc.t
  method virtual set_prev_loc    : Loc.t -> unit
(*
  method enter_branch = ()
  method exit_branch  = ()
*)
end (* of class Tokensource.c *)