3 | UNSIGNED_INTEGER of (string)
4 | UNSIGNED_NUMBER of (string)
12 | ELEMENT_STRUCT_SUBNODES_TAG
13 | ELEMENT_STRUCT_SUBNODES_END_TAG
14 | ELEMENT_STRUCT_END_TAG
15 | ELEMENT_TERMINAL_TAG
16 | ELEMENT_TERMINAL_KIND_TAG
17 | ELEMENT_TERMINAL_KIND_END_TAG
18 | ELEMENT_TERMINAL_ID_TAG
19 | ELEMENT_TERMINAL_ID_END_TAG
20 | ELEMENT_TERMINAL_END_TAG
25 | WHEN_CLAUSES_END_TAG
26 | ELEMENT_TERMINAL_OUTPUT_TAG
27 | ELEMENT_TERMINAL_SELECT_TAG
28 | ELEMENT_TERMINAL_COMMENT_VALUE_TAG of (string)
29 | ELEMENT_TERMINAL_INITIAL_VALUE_VALUE_TAG of (string)
30 | ELEMENT_TERMINAL_NOMINAL_VALUE_VALUE_TAG of (string)
31 | ELEMENT_TERMINAL_FIXED_VALUE_TAG of (string)
32 | EQUATION_VALUE_TAG of (string)
33 | WHEN_CLAUSE_VALUE_TAG of (string)
44 let yytransl_const = [|
46 262 (* MODEL_END_TAG *);
48 264 (* NAME_END_TAG *);
49 265 (* ELEMENTS_TAG *);
50 266 (* ELEMENT_STRUCT_TAG *);
51 267 (* ELEMENT_STRUCT_SUBNODES_TAG *);
52 268 (* ELEMENT_STRUCT_SUBNODES_END_TAG *);
53 269 (* ELEMENT_STRUCT_END_TAG *);
54 270 (* ELEMENT_TERMINAL_TAG *);
55 271 (* ELEMENT_TERMINAL_KIND_TAG *);
56 272 (* ELEMENT_TERMINAL_KIND_END_TAG *);
57 273 (* ELEMENT_TERMINAL_ID_TAG *);
58 274 (* ELEMENT_TERMINAL_ID_END_TAG *);
59 275 (* ELEMENT_TERMINAL_END_TAG *);
60 276 (* ELEMENTS_END_TAG *);
61 277 (* EQUATIONS_TAG *);
62 278 (* EQUATIONS_END_TAG *);
63 279 (* WHEN_CLAUSES_TAG *);
64 280 (* WHEN_CLAUSES_END_TAG *);
65 281 (* ELEMENT_TERMINAL_OUTPUT_TAG *);
66 282 (* ELEMENT_TERMINAL_SELECT_TAG *);
71 let yytransl_block = [|
73 258 (* UNSIGNED_INTEGER *);
74 259 (* UNSIGNED_NUMBER *);
76 283 (* ELEMENT_TERMINAL_COMMENT_VALUE_TAG *);
77 284 (* ELEMENT_TERMINAL_INITIAL_VALUE_VALUE_TAG *);
78 285 (* ELEMENT_TERMINAL_NOMINAL_VALUE_VALUE_TAG *);
79 286 (* ELEMENT_TERMINAL_FIXED_VALUE_TAG *);
80 287 (* EQUATION_VALUE_TAG *);
81 288 (* WHEN_CLAUSE_VALUE_TAG *);
84 let yylhs = "\255\255\
85 \001\000\002\000\003\000\005\000\008\000\008\000\009\000\009\000\
86 \010\000\004\000\012\000\011\000\013\000\014\000\018\000\018\000\
87 \016\000\016\000\015\000\015\000\017\000\017\000\019\000\019\000\
88 \020\000\020\000\006\000\021\000\021\000\022\000\007\000\007\000\
89 \023\000\023\000\024\000\000\000"
91 let yylen = "\002\000\
92 \002\000\003\000\004\000\003\000\000\000\002\000\003\000\003\000\
93 \002\000\003\000\003\000\009\000\003\000\003\000\000\000\001\000\
94 \000\000\001\000\000\000\001\000\000\000\001\000\000\000\001\000\
95 \000\000\001\000\003\000\000\000\002\000\001\000\000\000\003\000\
96 \000\000\002\000\001\000\002\000"
98 let yydefred = "\000\000\
99 \000\000\000\000\000\000\036\000\000\000\000\000\000\000\000\000\
100 \001\000\000\000\002\000\005\000\000\000\010\000\000\000\028\000\
101 \000\000\000\000\000\000\004\000\006\000\000\000\033\000\003\000\
102 \000\000\000\000\000\000\000\000\027\000\030\000\029\000\000\000\
103 \005\000\009\000\007\000\000\000\000\000\008\000\032\000\035\000\
104 \034\000\000\000\000\000\000\000\000\000\011\000\013\000\000\000\
105 \020\000\000\000\014\000\018\000\000\000\022\000\000\000\016\000\
106 \000\000\024\000\000\000\026\000\012\000"
108 let yydgoto = "\002\000\
109 \004\000\005\000\007\000\008\000\013\000\017\000\024\000\015\000\
110 \021\000\026\000\028\000\034\000\037\000\045\000\050\000\053\000\
111 \055\000\057\000\059\000\061\000\022\000\031\000\032\000\041\000"
113 let yysindex = "\002\000\
114 \255\254\000\000\010\255\000\000\019\000\021\255\017\255\023\255\
115 \000\000\025\255\000\000\000\000\013\255\000\000\004\255\000\000\
116 \019\255\010\255\010\255\000\000\000\000\250\254\000\000\000\000\
117 \024\255\027\255\030\255\028\255\000\000\000\000\000\000\253\254\
118 \000\000\000\000\000\000\043\255\031\255\000\000\000\000\000\000\
119 \000\000\029\255\033\255\045\255\020\255\000\000\000\000\034\255\
120 \000\000\026\255\000\000\000\000\022\255\000\000\032\255\000\000\
121 \035\255\000\000\036\255\000\000\000\000"
123 let yyrindex = "\000\000\
124 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
125 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
126 \047\255\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
127 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
128 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
129 \000\000\000\000\000\000\000\000\237\254\000\000\000\000\000\000\
130 \000\000\242\254\000\000\000\000\001\255\000\000\011\255\000\000\
131 \012\255\000\000\037\255\000\000\000\000"
133 let yygindex = "\000\000\
134 \000\000\000\000\000\000\239\255\000\000\000\000\000\000\022\000\
135 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
136 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
139 let yytable = "\019\000\
140 \025\000\027\000\001\000\003\000\017\000\019\000\019\000\019\000\
141 \019\000\019\000\017\000\017\000\017\000\018\000\017\000\029\000\
142 \006\000\019\000\009\000\021\000\039\000\010\000\011\000\020\000\
143 \030\000\021\000\021\000\021\000\040\000\015\000\023\000\012\000\
144 \014\000\016\000\033\000\015\000\015\000\023\000\018\000\035\000\
145 \046\000\023\000\019\000\043\000\036\000\048\000\038\000\044\000\
146 \047\000\049\000\054\000\051\000\031\000\052\000\042\000\025\000\
147 \000\000\000\000\056\000\058\000\000\000\060\000"
149 let yycheck = "\019\001\
150 \018\000\019\000\001\000\005\001\019\001\025\001\026\001\027\001\
151 \028\001\029\001\025\001\026\001\027\001\010\001\029\001\022\001\
152 \007\001\014\001\000\000\019\001\024\001\001\001\006\001\020\001\
153 \031\001\025\001\026\001\027\001\032\001\019\001\019\001\009\001\
154 \008\001\021\001\011\001\025\001\026\001\026\001\010\001\013\001\
155 \012\001\023\001\014\001\001\001\015\001\001\001\019\001\017\001\
156 \016\001\030\001\029\001\018\001\006\001\028\001\033\000\019\001\
157 \255\255\255\255\027\001\025\001\255\255\026\001"
159 let yynames_const = "\
165 ELEMENT_STRUCT_TAG\000\
166 ELEMENT_STRUCT_SUBNODES_TAG\000\
167 ELEMENT_STRUCT_SUBNODES_END_TAG\000\
168 ELEMENT_STRUCT_END_TAG\000\
169 ELEMENT_TERMINAL_TAG\000\
170 ELEMENT_TERMINAL_KIND_TAG\000\
171 ELEMENT_TERMINAL_KIND_END_TAG\000\
172 ELEMENT_TERMINAL_ID_TAG\000\
173 ELEMENT_TERMINAL_ID_END_TAG\000\
174 ELEMENT_TERMINAL_END_TAG\000\
175 ELEMENTS_END_TAG\000\
177 EQUATIONS_END_TAG\000\
178 WHEN_CLAUSES_TAG\000\
179 WHEN_CLAUSES_END_TAG\000\
180 ELEMENT_TERMINAL_OUTPUT_TAG\000\
181 ELEMENT_TERMINAL_SELECT_TAG\000\
186 let yynames_block = "\
188 UNSIGNED_INTEGER\000\
191 ELEMENT_TERMINAL_COMMENT_VALUE_TAG\000\
192 ELEMENT_TERMINAL_INITIAL_VALUE_VALUE_TAG\000\
193 ELEMENT_TERMINAL_NOMINAL_VALUE_VALUE_TAG\000\
194 ELEMENT_TERMINAL_FIXED_VALUE_TAG\000\
195 EQUATION_VALUE_TAG\000\
196 WHEN_CLAUSE_VALUE_TAG\000\
200 (fun _ -> failwith "parser")
201 ; (fun __caml_parser_env ->
202 let _1 = (Parsing.peek_val __caml_parser_env 1 : 'definition) in
208 ; (fun __caml_parser_env ->
209 let _2 = (Parsing.peek_val __caml_parser_env 1 : 'model_definition) in
215 ; (fun __caml_parser_env ->
216 let _1 = (Parsing.peek_val __caml_parser_env 3 : 'name) in
217 let _2 = (Parsing.peek_val __caml_parser_env 2 : 'elements_definition) in
218 let _3 = (Parsing.peek_val __caml_parser_env 1 : 'equations_definition) in
219 let _4 = (Parsing.peek_val __caml_parser_env 0 : 'when_clauses_definition) in
222 ( { name = _1; elements = _2; equations = _3; when_clauses = _4 } )
224 : 'model_definition))
225 ; (fun __caml_parser_env ->
226 let _2 = (Parsing.peek_val __caml_parser_env 1 : 'element_list) in
231 : 'elements_definition))
232 ; (fun __caml_parser_env ->
238 ; (fun __caml_parser_env ->
239 let _1 = (Parsing.peek_val __caml_parser_env 1 : 'element_list) in
240 let _2 = (Parsing.peek_val __caml_parser_env 0 : 'element_definition) in
246 ; (fun __caml_parser_env ->
247 let _2 = (Parsing.peek_val __caml_parser_env 1 : 'struct_contents) in
252 : 'element_definition))
253 ; (fun __caml_parser_env ->
254 let _2 = (Parsing.peek_val __caml_parser_env 1 : 'terminal_contents) in
259 : 'element_definition))
260 ; (fun __caml_parser_env ->
261 let _1 = (Parsing.peek_val __caml_parser_env 1 : 'name) in
262 let _2 = (Parsing.peek_val __caml_parser_env 0 : 'subnodes_definition) in
265 ( { struct_name = _1; subnodes = _2 } )
268 ; (fun __caml_parser_env ->
269 let _2 = (Parsing.peek_val __caml_parser_env 1 : string) in
275 ; (fun __caml_parser_env ->
276 let _2 = (Parsing.peek_val __caml_parser_env 1 : 'element_list) in
278 # 102 "xMLParser.mly"
281 : 'subnodes_definition))
282 ; (fun __caml_parser_env ->
283 let _1 = (Parsing.peek_val __caml_parser_env 8 : 'name) in
284 let _2 = (Parsing.peek_val __caml_parser_env 7 : 'kind) in
285 let _3 = (Parsing.peek_val __caml_parser_env 6 : 'id) in
286 let _4 = (Parsing.peek_val __caml_parser_env 5 : 'fixed_value) in
287 let _5 = (Parsing.peek_val __caml_parser_env 4 : 'initial_value_value) in
288 let _6 = (Parsing.peek_val __caml_parser_env 3 : 'nominal_value_value) in
289 let _7 = (Parsing.peek_val __caml_parser_env 2 : 'comment_value) in
290 let _8 = (Parsing.peek_val __caml_parser_env 1 : 'output) in
291 let _9 = (Parsing.peek_val __caml_parser_env 0 : 'select) in
293 # 108 "xMLParser.mly"
294 ( { terminal_name = _1;
\r
298 initial_value = _5;
\r
304 : 'terminal_contents))
305 ; (fun __caml_parser_env ->
306 let _2 = (Parsing.peek_val __caml_parser_env 1 : string) in
308 # 121 "xMLParser.mly"
311 | "fixed_parameter" -> FixedParameter
\r
312 | "parameter" -> Parameter
\r
313 | "variable" -> Variable
\r
314 | "discrete_variable" -> DiscreteVariable
\r
315 | _ -> raise Parsing.Parse_error )
318 ; (fun __caml_parser_env ->
319 let _2 = (Parsing.peek_val __caml_parser_env 1 : string) in
321 # 132 "xMLParser.mly"
325 ; (fun __caml_parser_env ->
327 # 136 "xMLParser.mly"
331 ; (fun __caml_parser_env ->
332 let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
334 # 137 "xMLParser.mly"
338 ; (fun __caml_parser_env ->
340 # 141 "xMLParser.mly"
343 : 'initial_value_value))
344 ; (fun __caml_parser_env ->
345 let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
347 # 142 "xMLParser.mly"
350 : 'initial_value_value))
351 ; (fun __caml_parser_env ->
353 # 146 "xMLParser.mly"
357 ; (fun __caml_parser_env ->
358 let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
360 # 147 "xMLParser.mly"
364 ; (fun __caml_parser_env ->
366 # 151 "xMLParser.mly"
369 : 'nominal_value_value))
370 ; (fun __caml_parser_env ->
371 let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
373 # 152 "xMLParser.mly"
376 : 'nominal_value_value))
377 ; (fun __caml_parser_env ->
379 # 156 "xMLParser.mly"
383 ; (fun __caml_parser_env ->
385 # 157 "xMLParser.mly"
389 ; (fun __caml_parser_env ->
391 # 161 "xMLParser.mly"
395 ; (fun __caml_parser_env ->
397 # 162 "xMLParser.mly"
401 ; (fun __caml_parser_env ->
402 let _2 = (Parsing.peek_val __caml_parser_env 1 : 'equation_list) in
404 # 166 "xMLParser.mly"
407 : 'equations_definition))
408 ; (fun __caml_parser_env ->
410 # 170 "xMLParser.mly"
414 ; (fun __caml_parser_env ->
415 let _1 = (Parsing.peek_val __caml_parser_env 1 : 'equation_list) in
416 let _2 = (Parsing.peek_val __caml_parser_env 0 : 'equation_definition) in
418 # 171 "xMLParser.mly"
422 ; (fun __caml_parser_env ->
423 let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
425 # 175 "xMLParser.mly"
428 : 'equation_definition))
429 ; (fun __caml_parser_env ->
431 # 179 "xMLParser.mly"
434 : 'when_clauses_definition))
435 ; (fun __caml_parser_env ->
436 let _2 = (Parsing.peek_val __caml_parser_env 1 : 'when_clause_list) in
438 # 180 "xMLParser.mly"
441 : 'when_clauses_definition))
442 ; (fun __caml_parser_env ->
444 # 184 "xMLParser.mly"
447 : 'when_clause_list))
448 ; (fun __caml_parser_env ->
449 let _1 = (Parsing.peek_val __caml_parser_env 1 : 'when_clause_list) in
450 let _2 = (Parsing.peek_val __caml_parser_env 0 : 'when_clause_definition) in
452 # 185 "xMLParser.mly"
455 : 'when_clause_list))
456 ; (fun __caml_parser_env ->
457 let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
459 # 189 "xMLParser.mly"
462 : 'when_clause_definition))
463 (* Entry xML_definition_eof *)
464 ; (fun __caml_parser_env -> raise (Parsing.YYexit (Parsing.peek_val __caml_parser_env 0)))
467 { Parsing.actions=yyact;
468 Parsing.transl_const=yytransl_const;
469 Parsing.transl_block=yytransl_block;
472 Parsing.defred=yydefred;
473 Parsing.dgoto=yydgoto;
474 Parsing.sindex=yysindex;
475 Parsing.rindex=yyrindex;
476 Parsing.gindex=yygindex;
477 Parsing.tablesize=yytablesize;
478 Parsing.table=yytable;
479 Parsing.check=yycheck;
480 Parsing.error_function=parse_error;
481 Parsing.names_const=yynames_const;
482 Parsing.names_block=yynames_block }
483 let xML_definition_eof (lexfun : Lexing.lexbuf -> token) (lexbuf : Lexing.lexbuf) =
484 (Parsing.yyparse yytables 1 lexfun lexbuf : XMLTree.t)
486 # 192 "xMLParser.mly"
489 let parse filename token_fun lexbuf =
\r
491 xML_definition_eof token_fun lexbuf
\r
493 | Parsing.Parse_error ->
\r
494 let linenum, linebeg =
\r
495 Linenum.for_position filename (Lexing.lexeme_start lexbuf)
\r
496 and linenum', linebeg' =
\r
497 Linenum.for_position filename (Lexing.lexeme_end lexbuf)
\r
499 let first_char = Lexing.lexeme_start lexbuf - linebeg
\r
500 and first_char' = Lexing.lexeme_end lexbuf - linebeg'
\r
504 Start: %d and %d\n\
\r
505 Characters %d and %d\n\
\r
506 Line %d, character %d.\n\
\r
507 Line %d, character %d.\n"
\r
510 (Lexing.lexeme_start lexbuf) (Lexing.lexeme_end lexbuf)
\r
512 linenum' first_char';
\r