module Lexing: sig end
ocamllex
によって生成された字句解析器のランタイムライブラリです。
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
に適用してください。lexbuf
は ocamllex
によって生成されたコードの中で、構文解析関数に渡される字句解析バッファに束縛されています。
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 です。