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