end of line
[scilab.git] / scilab / modules / scicos / src / translator / parsing / linenum.ml
1 # 23 "linenum.mll"
2  
3
4 (** Convert {! Parser.location } to line and column numbers. *)
5
6 let linenum = ref 0
7 let linebeg = ref 0
8
9
10 # 11 "linenum.ml"
11 let __ocaml_lex_tables = {
12   Lexing.lex_base = 
13    "\000\000\254\255\001\000\255\255";
14   Lexing.lex_backtrk = 
15    "\255\255\255\255\000\000\255\255";
16   Lexing.lex_default = 
17    "\000\000\000\000\255\255\000\000";
18   Lexing.lex_trans = 
19    "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
20     \000\000\000\000\003\000\003\000\000\000\002\000\000\000\000\000\
21     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
22     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
23     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
24     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
25     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
26     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
27     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
28     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
29     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
30     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
31     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
32     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
33     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
34     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
35     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
36     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
37     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
38     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
39     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
40     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
41     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
42     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
43     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
44     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
45     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
46     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
47     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
48     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
49     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
50     \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
51     \001\000\000\000";
52   Lexing.lex_check = 
53    "\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
54     \255\255\255\255\000\000\002\000\255\255\000\000\255\255\255\255\
55     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
56     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
57     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
58     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
59     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
60     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
61     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
62     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
63     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
64     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
65     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
66     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
67     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
68     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
69     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
70     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
71     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
72     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
73     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
74     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
75     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
76     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
77     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
78     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
79     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
80     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
81     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
82     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
83     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
84     \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
85     \000\000\255\255";
86   Lexing.lex_base_code = 
87    "";
88   Lexing.lex_backtrk_code = 
89    "";
90   Lexing.lex_default_code = 
91    "";
92   Lexing.lex_trans_code = 
93    "";
94   Lexing.lex_check_code = 
95    "";
96   Lexing.lex_code = 
97    "";
98 }
99
100 let rec skip_line lexbuf =
101     __ocaml_lex_skip_line_rec lexbuf 0
102 and __ocaml_lex_skip_line_rec lexbuf __ocaml_lex_state =
103   match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
104       | 0 ->
105 # 34 "linenum.mll"
106       ( incr linenum;
107         linebeg := Lexing.lexeme_start lexbuf;
108         Lexing.lexeme_end lexbuf )
109 # 110 "linenum.ml"
110
111   | 1 ->
112 # 38 "linenum.mll"
113       ( incr linenum;
114         linebeg := Lexing.lexeme_start lexbuf;
115         raise End_of_file )
116 # 117 "linenum.ml"
117
118   | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_skip_line_rec lexbuf __ocaml_lex_state
119
120 ;;
121
122 # 42 "linenum.mll"
123  
124
125 let for_position file loc =
126   let ic = open_in_bin file in
127   let lb = Lexing.from_channel ic in
128   linenum := 1;
129   linebeg := 0;
130   begin try
131     while skip_line lb <= loc do () done
132   with End_of_file -> ()
133   end;
134   close_in ic;
135   (!linenum - 1, !linebeg)
136
137
138 # 139 "linenum.ml"