Commit 5e274bbc authored by Erwan Jahier's avatar Erwan Jahier

Enhance the gnuplot-rif visualiser

parent b8d06ba6
......@@ -200,3 +200,4 @@
#step 50
1.1005 1.1065 1.0838 1.0901 1.0854 1.0888 1.0854 1.0790 F F F F F F F F F F #outs 1.0854 F F F F F F F F F F F F 1 1 1 1
#locs -0.0017 0.0066 0.0062 0.0078 0.0142 0.0036 -0.0117 -0.0062 1.0859 -0.1186
#
......@@ -2015,3 +2015,9 @@
#step 500
6.42 6.45 7.41 7.97 #outs F
#locs 63 0.01 0.02 -0.06 -0.06
#
# ==> The test completed; no property has been violated.
#
##
# Coverage:
#
......@@ -32,8 +32,8 @@ test2:
grep -v "lurette chronogram" test2.rif0 | \
grep -v "The execution lasted"| sed -e "s/^M//"\
> test2.rif &&\
$(RM) test3.res && diff -u -i test2.rif.exp test2.rif \
> test3.res
$(RM) test2.res && diff -u -i test2.rif.exp test2.rif \
> test2.res
[ ! -s test2.res ] && make clean
test3 :
......@@ -41,8 +41,8 @@ test3 :
$(LURETTETOP) -l 100 -go -seed 1 \
--do-not-show-step -ns2c -sut heater_ctrl2.lus -msn heater_ctrl2 -o test3.rif0 window.luc &&\
grep -v "lurette chronogram" test3.rif0 | \
grep -v "The execution lasted"| sed -e "s/^M//" > test3.rif
$(RM) test3.res && diff -u -i test3.rif.exp test3.rif > test3.res
grep -v "The execution lasted"| sed -e "s/^M//" > test3.rif && \
$(RM) test3.res && diff -u -i test3.rif.exp test3.rif > test3.res
[ ! -s test3.res ] && make clean
......
......@@ -99,3 +99,4 @@
#step 30
10 #outs T
#locs -1 F
#
......@@ -98,3 +98,4 @@
#step 30
17.8512 #outs F
#locs -0.8882
#
......@@ -310,3 +310,4 @@
#step 100
16.04 #outs 10.00 T
#locs 0.18 0
#
Command being timed: "/tmp/lurette0363a2/lurette 10000 1 10 10 0 --step-inside --draw-all-vertices -seed 1015403953 --precision 2 -v 0 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/examples/xlurette/heater/temp_float.luc"
User time (seconds): 1.93
System time (seconds): 0.04
Percent of CPU this job got: 96%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:02.04
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 0
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 870
Voluntary context switches: 18
Involuntary context switches: 292
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
Command being timed: "/tmp/lurettec485d9/lurette 10 100 100 100 0 --step-inside --draw-all-formula --draw-all-vertices -seed 1015403953 --precision 2 -v 0 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/examples/xlurette/heater/temp_float.luc"
User time (seconds): 1.28
System time (seconds): 0.02
Percent of CPU this job got: 95%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:01.37
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 0
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 6796
Voluntary context switches: 9
Involuntary context switches: 311
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
Command being timed: "/tmp/lurette4e5041/lurette 10000 1 10 10 0 --step-inside --draw-all-vertices -seed 1015403953 --precision 2 -v 0 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/examples/xlurette/heater/temp_float.luc"
User time (seconds): 1.97
System time (seconds): 0.03
Percent of CPU this job got: 95%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:02.10
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 0
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 870
Voluntary context switches: 18
Involuntary context switches: 255
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
Command being timed: "/tmp/luretteb9c9dc/lurette 10 100 100 100 0 --step-inside --draw-all-formula --draw-all-vertices -seed 1015403953 --precision 2 -v 0 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/examples/xlurette/heater/temp_float.luc"
User time (seconds): 1.28
System time (seconds): 0.04
Percent of CPU this job got: 96%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:01.38
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 0
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 6797
Voluntary context switches: 8
Involuntary context switches: 188
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
Command being timed: "/tmp/luretteaddc17/lurette 10000 1 10 10 0 --step-inside --draw-all-vertices -seed 1015403953 --precision 2 -v 0 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/examples/xlurette/heater/temp_int.luc"
User time (seconds): 2.17
System time (seconds): 0.04
Percent of CPU this job got: 97%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:02.27
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 0
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 868
Voluntary context switches: 16
Involuntary context switches: 423
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
Command being timed: "/tmp/lurettefd2051/lurette 10 100 100 100 0 --step-inside --draw-all-formula --draw-all-vertices -seed 1015403953 --precision 2 -v 0 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/examples/xlurette/heater/temp_int.luc"
User time (seconds): 1.09
System time (seconds): 0.04
Percent of CPU this job got: 95%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:01.19
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 0
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 7152
Voluntary context switches: 8
Involuntary context switches: 169
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
Command being timed: "/tmp/lurette3d7c0f/lurette 10000 1 10 10 0 --step-inside --draw-all-vertices -seed 1015403953 --precision 2 -v 0 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/examples/xlurette/heater/temp_float.luc"
User time (seconds): 1.92
System time (seconds): 0.07
Percent of CPU this job got: 96%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:02.06
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 0
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 870
Voluntary context switches: 18
Involuntary context switches: 463
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
Command being timed: "/tmp/luretteece10a/lurette 10 100 100 100 0 --step-inside --draw-all-formula --draw-all-vertices -seed 1015403953 --precision 2 -v 0 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/examples/xlurette/heater/temp_float.luc"
User time (seconds): 1.27
System time (seconds): 0.05
Percent of CPU this job got: 96%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:01.37
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 0
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 6796
Voluntary context switches: 8
Involuntary context switches: 190
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
Command being timed: "/tmp/lurette1dc61b/lurette 10000 1 10 10 0 --step-inside --draw-all-vertices -seed 1015403953 --precision 2 -v 0 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/examples/xlurette/heater/temp_int.luc"
User time (seconds): 2.18
System time (seconds): 0.04
Percent of CPU this job got: 97%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:02.28
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 0
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 869
Voluntary context switches: 16
Involuntary context switches: 294
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
Command being timed: "/tmp/luretted8b71a/lurette 10 100 100 100 0 --step-inside --draw-all-formula --draw-all-vertices -seed 1015403953 --precision 2 -v 0 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/examples/xlurette/heater/temp_int.luc"
User time (seconds): 1.10
System time (seconds): 0.04
Percent of CPU this job got: 95%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:01.20
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 0
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 7153
Voluntary context switches: 8
Involuntary context switches: 320
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
Command being timed: "/tmp/lurette8a9f87/lurette 10000 1 10 10 0 --step-inside --draw-all-vertices -seed 1015403953 --precision 2 -v 0 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/examples/xlurette/heater/temp_float.luc"
User time (seconds): 1.96
System time (seconds): 0.03
Percent of CPU this job got: 96%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:02.07
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 0
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 870
Voluntary context switches: 18
Involuntary context switches: 284
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
Command being timed: "/tmp/luretteb4861b/lurette 10 100 100 100 0 --step-inside --draw-all-formula --draw-all-vertices -seed 1015403953 --precision 2 -v 0 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/examples/xlurette/heater/temp_float.luc"
User time (seconds): 1.24
System time (seconds): 0.05
Percent of CPU this job got: 94%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:01.38
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 0
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 6797
Voluntary context switches: 8
Involuntary context switches: 406
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
Command being timed: "/tmp/lurettef482c2/lurette 10000 1 10 10 0 --step-inside --draw-all-vertices -seed 1015403953 --precision 2 -v 0 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/examples/xlurette/heater/temp_int.luc"
User time (seconds): 2.16
System time (seconds): 0.06
Percent of CPU this job got: 97%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:02.28
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 0
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 870
Voluntary context switches: 16
Involuntary context switches: 318
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
Command being timed: "/tmp/lurette2fa2d0/lurette 10 100 100 100 0 --step-inside --draw-all-formula --draw-all-vertices -seed 1015403953 --precision 2 -v 0 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/examples/xlurette/heater/temp_int.luc"
User time (seconds): 1.11
System time (seconds): 0.03
Percent of CPU this job got: 95%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:01.20
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 0
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 7153
Voluntary context switches: 8
Involuntary context switches: 155
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
......@@ -416,3 +416,9 @@ T F T F T T #outs F F F T F
#step 100
T F T T T F #outs F F F T F
#locs
#
# ==> The test completed; no property has been violated.
#
##
# Coverage:
#
......@@ -416,3 +416,9 @@ F T F F F F #outs F F F F F
#step 100
F F F F T F #outs T F F F F
#locs
#
# ==> The test completed; no property has been violated.
#
##
# Coverage:
#
......@@ -344,6 +344,7 @@ lib_prof:liblurette_prof.a
##############################################################################"
.PHONY: gnuplot-rif
gnuplot-rif:
make -k nc -f Makefile.gnuplot-rif
......
......@@ -47,7 +47,7 @@ SOURCES_C = \
$(HERE)/liblutin.idl \
$(HERE)/Ezdl_c.c \
SOURCES_OCAML := \
SOURCES_OCAML0:= \
$(HERE)/Ezdl.ml \
$(HERE)/Ezdl.mli \
$(HERE)/error.ml \
......@@ -89,8 +89,6 @@ SOURCES_OCAML := \
$(HERE)/lucParse.mli \
$(HERE)/lucParse.ml \
$(HERE)/lucParse.mli \
$(HERE)/lucProg.mli \
$(HERE)/lucProg.ml \
$(HERE)/polyhedron.mli \
$(HERE)/polyhedron.ml \
$(HERE)/formula_to_bdd.mli \
......@@ -107,6 +105,8 @@ SOURCES_OCAML := \
$(HERE)/solver.ml \
$(HERE)/show_env.mli \
$(HERE)/show_env.ml \
$(HERE)/lucProg.mli \
$(HERE)/lucProg.ml \
$(HERE)/prog.mli \
$(HERE)/prog.ml \
$(HERE)/fGen.mli \
......@@ -129,8 +129,9 @@ SOURCES_OCAML := \
./luc4ocaml_nolbl.ml
ifdef MLONLY
SOURCES_OCAML =$(filter %.ml, $(SOURCES_OCAML))
SOURCES_OCAML =$(filter %.ml, $(SOURCES_OCAML0))
endif
SOURCES_OCAML=$(SOURCES_OCAML0)
SOURCES = $(SOURCES_C) $(SOURCES_OCAML)
......
......@@ -16,7 +16,7 @@ open Var
open Type
open List
open Util
open Prog
open Prog
(****************************************************************************)
......@@ -31,20 +31,20 @@ open Prog
type t =
| Cont of (unit -> t * Exp.formula * LucParse.node list)
| Finish (* no more solutions *)
| RStop of string (* Normal Termination (for Lutin) *)
(** wt is traversed using continuations *)
type wt_cont =
| WCont of (unit -> wt_cont * Exp.formula * LucParse.node)
| WFinish (* no more solutions *)
| WStop of string (* ditto, but stop at once raising an exception *)
(****************************************************************************)
(* Exported *)
exception NoMoreFormula
exception NormalStop of string
let (call_cont : t -> t * formula * LucParse.node list) =
fun cont ->
......@@ -52,13 +52,16 @@ let (call_cont : t -> t * formula * LucParse.node list) =
match cont with
| Cont f -> f ()
| Finish -> raise NoMoreFormula
| RStop str -> raise (NormalStop str)
let (call_wt_cont : wt_cont -> wt_cont * formula * LucParse.node) =
fun cont ->
let _ = if debug then (print_string "XXX call_wt_cont\n"; flush stdout) in
match cont with
| WCont f -> f ()
| WFinish -> WFinish, False, ""
| WFinish -> WFinish, False, "" (* dummy *)
| WStop msg -> cont, True (* dummy *), "" (* dummy *)
(* exported *)
let (choose_one_formula: t -> t * Exp.formula * Prog.ctrl_state) =
......@@ -81,8 +84,7 @@ let (get_all_formula: t -> formula list) =
(****************************************************************************)
let rec (wt_list_to_cont : Var.env_in -> Prog.state -> wt_cont list ->
let rec (wt_list_to_cont : Var.env_in -> Prog.state -> wt_cont list ->
formula -> LucParse.node list -> t -> t) =
fun input state wtl facc nl fgen ->
(* [nl] is the list of nodes that correspond to [facc] *)
......@@ -90,12 +92,14 @@ let rec (wt_list_to_cont : Var.env_in -> Prog.state -> wt_cont list ->
match wtl with
| [] -> Cont (fun () -> (fgen, facc, nl))
| wt::wtl' ->
if wt = WFinish then
if wt = WFinish then
fgen
else
match choose_one_formula_atomic input state facc wt with
| WFinish, False, "" ->
fgen
| WStop str, _, "" ->
RStop str
| wt2, f2, n ->
let fgen' =
Cont (fun () ->
......@@ -109,6 +113,9 @@ and
let _ = if debug then (print_string "XXX choose_one_formula_atomic\n"; flush stdout) in
if cont = WFinish then
WFinish, False, ""
else
if cont = WStop str then
WStop str, True, ""
else
let (cont', f, n) = call_wt_cont cont in
let _ = if debug then (print_string ("XXX "^ n ^ "\n"); flush stdout) in
......@@ -133,7 +140,8 @@ and (wt_to_cont : Var.env_in -> Prog.state -> wt -> wt_cont -> wt_cont) =
let _ = if debug then (print_string ("XXX wt_to_cont "^ n ^"\n"); flush stdout) in
let children = Util.StringMap.find n tbl in
match children with
| Leave f -> WCont(fun () -> (cont, f, LucProg.get_original_name n))
| Prog.Stop str -> WStop str
| Leave (f,nstate) -> WCont(fun () -> (cont, f, nstate))
| Children l ->
if l = [] then
cont
......
......@@ -68,6 +68,9 @@ val get : Var.env_in -> Prog.state -> t list
(** Raised by choose_one_formula no more transitions can be taken *)
exception NoMoreFormula
(** Raised by choose_one_formula when a Prog.Stop is chosen (For Lutin) *)
exception NormalStop of string
val choose_one_formula : t -> t * Exp.formula * Prog.ctrl_state
(** [choose_one_formula run_aut] draws a formula accessible from
......
......@@ -20,7 +20,7 @@ open Genlex
let usage =
" gnuplot-rif [-x11|-ps|-cps|-eps|-latex] <f>.rif
" gnuplot-rif [-x11|-xxt|-ps|-cps|-eps|-latex] <f>.rif
Generates two files, <f>.gp and <f>.plot, in a format suitable for gnuplot.
......@@ -93,50 +93,52 @@ let (print_debug : string -> tok -> unit) =
(********************************************************************************)
(* get var type in the rif file *)
type vtypes_tbl = (string * string) list
(* name, type, position (starting from 0) *)
type vtypes_tbl = (string * (string * int)) list
let (get_var_types : string -> vtypes_tbl) =
fun rif_file ->
let _ = debug_msg "get_var_types \n" in
let tbl = ref [] in
let rec aux s =
let rec aux pos s =
let _ = debug_msg ("aux "^(string_of_int (Stream.count s))^" \n") in
match s with parser
| [< 'String(_,id) >] -> aux2 id s
| [< 'Ident(_,_) >] -> aux s
| [< 'Int(_,_) >] -> aux s
| [< 'Float(_,_) >] -> aux s
| [< 'Kwd(_,_) >] -> aux s
| [< 'Char(_,_) >] -> aux s
| [< 'String(_,id) >] -> aux2 pos id s
| [< 'Ident(_,_) >] -> aux pos s
| [< 'Int(_,_) >] -> aux pos s
| [< 'Float(_,_) >] -> aux pos s
| [< 'Kwd(_,_) >] -> aux pos s
| [< 'Char(_,_) >] -> aux pos s
and aux2 id s =
and aux2 pos id s =
let _ = debug_msg ("aux2 "^(string_of_int (Stream.count s))^"\n") in
match s with parser
| [< 'Kwd(_, ":"); >] -> aux3 id s
| [< 'Ident(_,_) >] -> aux s
| [< 'Int(_,_) >] -> aux s
| [< 'Float(_,_) >] -> aux s
| [< 'Kwd(_,_) >] -> aux s
| [< 'Char(_,_) >] -> aux s
and aux3 id s =
| [< 'Kwd(_, ":"); >] -> aux3 pos id s
| [< 'Ident(_,_) >] -> aux pos s
| [< 'Int(_,_) >] -> aux pos s
| [< 'Float(_,_) >] -> aux pos s
| [< 'Kwd(_,_) >] -> aux pos s
| [< 'Char(_,_) >] -> aux pos s
and aux3 pos id s =
let _ = debug_msg ("aux3 "^(string_of_int (Stream.count s))^"\n") in
match s with parser
| [< 'Ident(_,t)>] -> tbl:=(id, t)::!tbl; aux s
| [< 'Kwd(_,_) >] -> aux s
| [< 'Int(_,_) >] -> aux s
| [< 'Float(_,_) >] -> aux s
| [< 'String(_,_) >] -> aux s
| [< 'Char(_,_) >] -> aux s
| [< 'Ident(_,t)>] -> tbl:=(id, (t, pos))::!tbl; aux (pos+1) s
| [< 'Kwd(_,_) >] -> aux pos s
| [< 'Int(_,_) >] -> aux pos s
| [< 'Float(_,_) >] -> aux pos s
| [< 'String(_,_) >] -> aux pos s
| [< 'Char(_,_) >] -> aux pos s
in
try
aux (lexer (Stream.of_string rif_file))
aux 0 (lexer (Stream.of_string rif_file))
with _ ->
List.rev !tbl
let (get_range : string list -> int * int) =
fun l ->
fun l ->
let get_min_max (min, max) str =
(* print_string ("val = " ^ str ^ "\n "); *)
(* flush stdout; *)
......@@ -151,6 +153,43 @@ let (get_range : string list -> int * int) =
let debut = ref 0