# 26 "odiff/odiff_lexer.mll"
 
(***********************************************************************)

(*                             OCamlcvs                                *)
(*                                                                     *)
(*            Maxence Guesdon, projet Cristal, INRIA Rocquencourt      *)
(*                                                                     *)
(*  Copyright 2001 Institut National de Recherche en Informatique et   *)
(*  en Automatique.  All rights reserved.  This file is distributed    *)
(*  under the terms of the GNU General Public License version 2.       *)
(*                                                                     *)
(***********************************************************************)


(** The lexer for string to retrieve differences. *)


open Lexing
open Odiff_parser

let print_DEBUG s = () (* print_string s; print_newline () *)
let line = ref 0

# 23 "odiff/odiff_lexer.ml"
let __ocaml_lex_tables = {
  Lexing.lex_base = 
   "\000\000\001\000\246\255\247\255\248\255\249\255\000\000\001\000\015\000\254\255\002\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\002\000\001\000\004\000\001\000\000\000\005\000\002\000\003\000\004\000\006\000\003\000\004\000\007\000\005\000\004\000\007\000\016\000\001\000\031\000H\000\002\000\003\000\002\000\245\255";
  Lexing.lex_backtrk = 
   "\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\003\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\000\000\255\255\002\000\004\000\005\000\255\255\255\255";
  Lexing.lex_default = 
   "\255\255\255\255\000\000\000\000\000\000\000\000\255\255\255\255\255\255\000\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255$\000\255\255\255\255'\000(\000\255\255\000\000";
  Lexing.lex_trans = 
   "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\000\255\255\255\255\255\255\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000(\000'\000\011\000\014\000\022\000\025\000\029\000 \000\000\000\000\000\000\000\000\000\000\000\001\000)\000*\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\000\000%\000\007\000\000\000\006\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\000\000\000\000\000\000\000\000\000\000\012\000&\000&\000&\000&\000&\000&\000&\000&\000&\000&\000\000\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\005\000\023\000\003\000\004\000\016\000\021\000\026\000\028\000\019\000\031\000!\000\018\000\"\000\015\000\013\000\020\000\027\000\030\000#\000\024\000$\000\000\000\017\000&\000&\000&\000&\000&\000&\000&\000&\000&\000&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\255\255\255\255\255\255\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000";
  Lexing.lex_check = 
   "\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\000\000$\000'\000(\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\006\000\007\000\n\000\013\000\021\000\024\000\028\000\031\000\255\255\255\255\255\255\255\255\255\255\000\000\001\000)\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\255\008\000\000\000\255\255\000\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\255\255\255\255\255\255\255\255\255\255\011\000%\000%\000%\000%\000%\000%\000%\000%\000%\000%\000\255\255\255\255\255\255\000\000\255\255\255\255\255\255\255\255\000\000\022\000\000\000\000\000\015\000\020\000\025\000\027\000\018\000\030\000 \000\017\000!\000\014\000\012\000\019\000\026\000\029\000\"\000\023\000#\000\255\255\016\000&\000&\000&\000&\000&\000&\000&\000&\000&\000&\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\000\000$\000'\000(\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255";
  Lexing.lex_base_code = 
   "";
  Lexing.lex_backtrk_code = 
   "";
  Lexing.lex_default_code = 
   "";
  Lexing.lex_trans_code = 
   "";
  Lexing.lex_check_code = 
   "";
  Lexing.lex_code = 
   "";
}

let rec main lexbuf =
    __ocaml_lex_main_rec lexbuf 0
and __ocaml_lex_main_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 52 "odiff/odiff_lexer.mll"
    (
      main lexbuf
    )
# 155 "odiff/odiff_lexer.ml"

  | 1 ->
# 56 "odiff/odiff_lexer.mll"
    (
      incr line ;
      main lexbuf
    )
# 163 "odiff/odiff_lexer.ml"

  | 2 ->
# 61 "odiff/odiff_lexer.mll"
    (
      try
        let s = Lexing.lexeme lexbuf in
        print_DEBUG s ;
        let n = String.index s ',' in
        let s1 = String.sub s 0 n in
        let s2 = String.sub s (n+1) ((String.length s) - n - 1) in
        IndexMany (int_of_string s1, int_of_string s2)
      with
        Not_found ->
          raise (Failure "zarbi")
    )
# 179 "odiff/odiff_lexer.ml"

  | 3 ->
# 74 "odiff/odiff_lexer.mll"
    (
      let s = Lexing.lexeme lexbuf in
      print_DEBUG s ;
      IndexOne (int_of_string s) )
# 187 "odiff/odiff_lexer.ml"

  | 4 ->
# 79 "odiff/odiff_lexer.mll"
    (
      let s = Lexing.lexeme lexbuf in
      print_DEBUG s ;
      DeletedString (String.sub s 2 ((String.length s) -2))
    )
# 196 "odiff/odiff_lexer.ml"

  | 5 ->
# 86 "odiff/odiff_lexer.mll"
    (
      let s = Lexing.lexeme lexbuf in
      print_DEBUG s ;
      AddedString (String.sub s 2 ((String.length s) -2))
    )
# 205 "odiff/odiff_lexer.ml"

  | 6 ->
# 93 "odiff/odiff_lexer.mll"
    (
      print_DEBUG "a" ;
      ADD
    )
# 213 "odiff/odiff_lexer.ml"

  | 7 ->
# 98 "odiff/odiff_lexer.mll"
    (
      print_DEBUG "d" ;
      DELETE
    )
# 221 "odiff/odiff_lexer.ml"

  | 8 ->
# 103 "odiff/odiff_lexer.mll"
    (
      print_DEBUG "c" ;
      CHANGE
    )
# 229 "odiff/odiff_lexer.ml"

  | 9 ->
# 109 "odiff/odiff_lexer.mll"
    ( EOF )
# 234 "odiff/odiff_lexer.ml"

  | 10 ->
# 112 "odiff/odiff_lexer.mll"
    ( SEP )
# 239 "odiff/odiff_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_main_rec lexbuf __ocaml_lex_state

;;