Silly comment
[scilab.git] / scilab / modules / scicos / src / modelica_compiler / linenum.mll
1
2 (*  Scicos *)
3 (* *)
4 (*  Copyright (C) INRIA - METALAU Project <scicos@inria.fr> *)
5 (* *)
6 (* This program is free software; you can redistribute it and/or modify *)
7 (* it under the terms of the GNU General Public License as published by *)
8 (* the Free Software Foundation; either version 2 of the License, or *)
9 (* (at your option) any later version. *)
10 (* *)
11 (* This program is distributed in the hope that it will be useful, *)
12 (* but WITHOUT ANY WARRANTY; without even the implied warranty of *)
13 (* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *)
14 (* GNU General Public License for more details. *)
15 (* *) 
16 (* You should have received a copy of the GNU General Public License *)
17 (* along with this program; if not, write to the Free Software *)
18 (* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *)
19 (*  *)
20 (* See the file ./license.txt *)
21
22 {
23
24 let linenum = ref 0
25 let linebeg = ref 0
26
27 }
28
29 rule skip_line = parse
30   | [^ '\n' '\r']* ('\n' | '\r' | "\r\n")
31       { incr linenum;
32         linebeg := Lexing.lexeme_start lexbuf;
33         Lexing.lexeme_end lexbuf }
34   | [^ '\n' '\r']* eof
35       { incr linenum;
36         linebeg := Lexing.lexeme_start lexbuf;
37         raise End_of_file }
38
39 {
40
41 let for_position file loc =
42   let ic = open_in_bin file in
43   let lb = Lexing.from_channel ic in
44   linenum := 1;
45   linebeg := 0;
46   begin try
47     while skip_line lb <= loc do () done
48   with End_of_file -> ()
49   end;
50   close_in ic;
51   (!linenum - 1, !linebeg)
52
53 }