Module Earley_core.Input
Type
Reading from a buffer
val read : buffer -> int -> char * buffer * int
read buf pos
returns the character at positionpos
in the bufferbuf
, together with the new buffer and position.
val get : buffer -> int -> char
get buf pos
returns the character at positionpos
in the bufferbuf
.
Creating a buffer
val from_file : string -> buffer
from_file fn
returns a buffer constructed using the filefn
.
val from_channel : ?filename:string -> Stdlib.in_channel -> buffer
from_channel ~filename ch
returns a buffer constructed using the channelch
. The optionalfilename
is only used as a reference to the channel in error messages.
val from_string : ?filename:string -> string -> buffer
from_string ~filename str
returns a buffer constructed using the stringstr
. The optionalfilename
is only used as a reference to the channel in error messages.
val from_fun : ('a -> unit) -> string -> ('a -> string) -> 'a -> buffer
from_fun finalise name get data
returns a buffer constructed from the objectdata
using theget
function. The get function is used to obtain one line of input fromdata
. Thefinalise
function is applied todata
when the end of file is reached. Thename
string is used to reference the origin of the data in error messages.
Creating buffers with a custom preprocessor
exception
Preprocessor_error of string * string
Exception that can be raised by a preprocessor in case of error. The first string references the name of the buffer (e.g. the name of the corresponding file) and the second string contains the message.
module type Preprocessor = sig ... end
Specification of a preprocessor.
module WithPP : functor (PP : Preprocessor) -> sig ... end
Functor for building buffers with a preprocessor.
Buffer manipulation functions
val is_empty : buffer -> int -> bool
is_empty buf
test whether the bufferbuf
is empty.
val line_num : buffer -> int
line_num buf
returns the current line number ofbuf
.
val line_offset : buffer -> int
line_beginning buf
returns the offset of the current line in the bufferbuf
.
val line : buffer -> string
line buf
returns the current line in the bufferbuf
.
val line_length : buffer -> int
line_length buf
returns the length of the current line in the bufferbuf
.
val utf8_col_num : buffer -> int -> int
utf8_col_num buf pos
returns the utf8 column number corresponding to the positionpos
inbuf
.
val normalize : buffer -> int -> buffer * int
normalize buf pos
ensures thatpos
is less than the length of the current line instr
.
val filename : buffer -> string
filename buf
returns the file name associated to thebuf
.
val buffer_uid : buffer -> int
buffer_uid buf
returns a unique identifier forbuf
.
val buffer_before : buffer -> int -> buffer -> int -> bool
leq_bug b1 i1 b2 i2
returns true if the positionb1, i1
is beforeb2, i2
. Gives meaningless result ifb1
andb2
do not refer to the same file.
module OrdTbl : sig ... end
module Tbl : sig ... end
Second kind of table: unordered, but imperative and more efficient