Lexingこのページは最後に更新されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。 last mod. 2009-09-10 (木) 19:35:06
module Lexing: sig end ocamllex によって生成された字句解析器のランタイムライブラリです。 Lexer bufferstype 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; mutable lex_mem : int array; mutable lex_start_p : position; mutable lex_curr_p : position; } 字句解析バッファの型です。字句解析バッファは、生成されたスキャナの関数に引数として渡されます。字句解析バッファはスキャナの現在の状態と、入力を読んでバッファを埋め直す関数を持っています。 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 です。 val lexeme_start_p : lexbuf -> position lexeme_start に似ているが、何文字目であるかの代わりに position を返します。 val lexeme_end_p : lexbuf -> position lexeme_end に似ているが、何文字目かの代わりに position を返します。 |