Module Lexing


module Lexing: sig  end
ocamllex によって生成された字句解析器のランタイムライブラリです。



Lexer buffers



type lexbuf = {
   refill_buff : lexbuf -> unit;
   mutable lex_buffer : string;
   mutable lex_buffer_len : int;
   mutable lex_abs_pos : int;
   mutable lex_start_pos : int;
   mutable lex_curr_pos : int;
   mutable lex_last_pos : int;
   mutable lex_last_action : int;
   mutable lex_eof_reached : bool;
}
字句解析バッファの型です。字句解析バッファは、生成されたスキャナの関数に引数として渡されます。字句解析バッファはスキャナの現在の状態と、入力を読んでバッファを埋め直す関数を持っています。

val from_channel : Pervasives.in_channel -> lexbuf
入力チャンネルから字句解析バッファを作成します。 Lexing.from_channel inchan は入力チャンネル inchan を現在の読み込み位置から読み込む字句解析バッファを返します。
val from_string : string -> lexbuf
文字列から字句解析バッファを作成します。文字列の先頭から読み始めて、文字列の終端に到達したら end-of-input 状態になります。
val from_function : (string -> int -> int) -> lexbuf
関数を読み込みメソッドとして字句解析バッファを作成します。 スキャナはさらに文字が必要になると、引数に文字列 s と文字数 n をとって与えられた関数を呼び出します。関数では s の先頭から n 以下の文字を書き込んで、書き込んだ文字数を返してください。返値 0 は end-of-input を意味します。


Functions for lexer semantic actions



以下の関数は字句解析器定義の action (字句解析関数が返す値を計算する、中括弧で囲まれた ML コード) から呼ぶことができます。action に対応した正規表現にマッチする文字列を得ることができます。これらの関数は引数 lexbuf に適用してください。lexbufocamllex によって生成されたコードの中で、構文解析関数に渡される字句解析バッファに束縛されています。

val lexeme : lexbuf -> string
Lexing.lexeme lexbuf は正規表現にマッチした文字列を返します。
val lexeme_char : lexbuf -> int -> char
Lexing.lexeme_char lexbuf i はマッチした文字列の i 番目の文字を返します。
val lexeme_start : lexbuf -> int
Lexing.lexeme_start lexbuf はマッチした文字列の先頭文字が、入力ストリームの先頭から何文字目であるかを返します。 ストリームの先頭文字の位置は 0 です。
val lexeme_end : lexbuf -> int
Lexing.lexeme_end lexbuf はマッチした文字列の終端文字が、入力ストリームの先頭から何文字目であるかを返します。 ストリームの先頭文字の位置は 0 です。