Commit 26f85117 authored by Erwan Jahier's avatar Erwan Jahier
Browse files

Fix the oasis2opam opam generated file

parent f599526a
......@@ -242,3 +242,6 @@ figs/
obj/
png/
sh/
Makefile.common.source
TODO
user-rules
ifndef LURETTE_PATH
LURETTE_PATH=$(PWD)
endif
all:build
......@@ -94,13 +97,6 @@ cpcomp:
test: slink cpcomp
cd examples && make test
pull-pascal:
git pull ~raymond/git/lurette
pull-erwan:
git pull ~jahier/lurette
###############################
# for developpers
include ./Makefile.dev
#
# Makefile.common for building binaries
#
#
# A modifier si ncessaire !!!
ifndef LURETTE_PATH
export LURETTE_PATH = $(HOME)/lurette
endif
ifndef HOSTTYPE
HOSTTYPE = `uname`
endif
export HOSTTYPE
PREFIX =$(LURETTE_PATH)
AR=ar
AS=as
OCAMLC=$(shell which ocamlc)
SYNCHRONE_DIR=/import/www/DIST-TOOLS/SYNCHRONE
SYNCHRONE_LURETTE_DIR=$(SYNCHRONE_DIR)/lurette/
#INCDIRS = $(PREFIX)/$(HOSTTYPE)/lib
#LIBDIRS = $(PREFIX)/$(HOSTTYPE)/lib
LOCAL_INSTALL=$(PREFIX)/working/$(HOSTTYPE)
INCDIRS = $(LOCAL_INSTALL)/lib
LIBDIRS = $(LOCAL_INSTALL)/lib
CAMLIDL = camlidl
DWIN32 =
EXE :=
HOST_TYPE=$(HOSTTYPE)
# Where to install bins, libs, and include files
PRE_RELEASE_DIR=$(LURETTE_PATH)/pre_release/$(HOSTTYPE)/
BIN_INSTALL_DIR=$(PRE_RELEASE_DIR)/bin
LIB_INSTALL_DIR=$(PRE_RELEASE_DIR)/lib
INC_INSTALL_DIR=$(PRE_RELEASE_DIR)/include
CPP=cpp
RANLIB=ranlib
GCC=gcc
GPP=g++
CFLAGS=-g -O2 -fPIC -DPOLKA_NUM=3
# HOSTTYPE doit etre defini bien sur...
ifeq ($(HOSTTYPE),cygwin)
OCAML_PATH=/cygdrive/e/ocaml-3.12.0/bin/
OCAML_PATH=
CAMLP4=$(OCAML_PATH)camlp4
CAMLP4O=$(OCAML_PATH)camlp4o
CAMLP4OF=$(OCAML_PATH)camlp4of
CAMLP4OOF=$(OCAML_PATH)camlp4oof
OCAMLOPT=$(OCAML_PATH)ocamlopt
OCAMLC=$(OCAML_PATH)ocamlc
OCAMLDEP=$(OCAML_PATH)ocamldep
OCAMLRUN=$(OCAML_PATH)ocamlrun
OCAML=$(OCAML_PATH)ocaml
OCAMLMKTOP=$(OCAML_PATH)ocamlmktop
OCAMLLEX=$(OCAML_PATH)ocamllex
OCAMLYACC=$(OCAML_PATH)ocamlyacc
OCAMLCP=$(OCAML_PATH)ocamlcp
OCAMLDOC=$(OCAML_PATH)ocamldoc
OCAMLMKLIB=$(OCAML_PATH)ocamlmklib
OCAMLPROF=$(OCAML_PATH)ocamlprof
OCAMLLIB = `$(OCAMLC) -where`
CAML_INSTALL_DIR=`$(OCAMLC) -where`
WIN32 = t
CC=gcc
GCC=gcc
GPP=g++
CFLAGS=-g -O2 -fpic -DPOLKA_NUM=3
SYNCHRONE_DIR=//ARPONT/www-verimag/DIST-TOOLS/SYNCHRONE
SYNCHRONE_LURETTE_DIR=$(SYNCHRONE_DIR)/lurette/
EXE :=.exe
else
ifeq ($(HOSTTYPE),sparc-sun)
INCDIRS = $(HOME)/$(HOSTTYPE)/lib $(SCADE_INSTALL_DIR)/lib /usr/local/soft/ocaml/3.08/lib/ocaml
LIBDIRS = $(HOME)/$(HOSTTYPE)/lib $(SCADE_INSTALL_DIR)/lib /usr/local/soft/ocaml/3.08/lib/ocaml
OCAMLLIB = /usr/local/soft/ocaml/3.08/lib/ocaml
CAML_INSTALL_DIR=/usr/local/soft/ocaml/current
else
ifeq ($(HOSTTYPE),mac)
CC=g++ -g
# CAML_LIB=/private/var/automount/import/macos/ocaml/3.09.3/lib/ocaml
OCAMLFLAGS= -cc g++
CAML_INSTALL_DIR=`ocamlc -where`
else
ifeq ($(HOSTTYPE),Darwin-x86_64)
CC=gcc -I/usr/local/soft/gmp/5.1.3/ -I/home/jahier/ocamlbrew/ocaml-4.01.0/.opam/system/lib/camlidl/
# CAML_LIB=/private/var/automount/import/macos/ocaml/3.09.3/lib/ocaml
OCAMLFLAGS= -cc g++
CFLAGS=-g -O2 -fpic -DPOLKA_NUM=3 -I/home/jahier/ocamlbrew/ocaml-4.01.0/.opam/system/lib/camlidl/ -I/usr/local/soft/gmp/5.1.3/
CPP_FLAGS0=-I/home/jahier/ocamlbrew/ocaml-4.01.0/.opam/system/lib/camlidl/
CAML_INSTALL_DIR=`ocamlc -where`
CAMLP4=$(OCAML_PATH)camlp4
CAMLP4O=$(OCAML_PATH)camlp4o
CAMLP4OF=$(OCAML_PATH)camlp4of
CAMLP4OOF=$(OCAML_PATH)camlp4oof
OCAMLOPT=$(OCAML_PATH)ocamlopt
OCAMLC=$(OCAML_PATH)ocamlc
OCAMLDEP=$(OCAML_PATH)ocamldep
OCAMLRUN=$(OCAML_PATH)ocamlrun
OCAML=$(OCAML_PATH)ocaml
OCAMLMKTOP=$(OCAML_PATH)ocamlmktop
OCAMLLEX=$(OCAML_PATH)ocamllex
OCAMLYACC=$(OCAML_PATH)ocamlyacc
OCAMLCP=$(OCAML_PATH)ocamlcp
OCAMLDOC=$(OCAML_PATH)ocamldoc
OCAMLMKLIB=$(OCAML_PATH)ocamlmklib
OCAMLPROF=$(OCAML_PATH)ocamlprof
OCAMLOPTFLAG= -cclib -L/usr/local/soft/gmp/5.1.3/.libs/
#-cclib -lcrt0.o
OCAMLLIB = `$(OCAMLC) -where`
CAML_INSTALL_DIR=`$(OCAMLC) -where`
LD_LIBRARY_PATH=/usr/local/soft/gmp/5.1.3/.libs:$LD_LIBRARY_PATH
else
ifeq ($(HOSTTYPE),win32)
# DEBUG= -Wl,--subsystem,windows -mwindows
# generate native win32 code using a cross compiler (source set_cross)
CC=/usr/bin/i586-mingw32msvc-gcc $(DEBUG)
GCC=/usr/bin/i586-mingw32msvc-gcc $(DEBUG)
GPP=/usr/bin/i586-mingw32msvc-g++ $(DEBUG)
AR=/usr/bin/i586-mingw32msvc-ar
AS=/usr/bin/i586-mingw32msvc-as
export EXE=.exe
CFLAGS=-g -O2 -fpic -DWIN32 -DPOLKA_NUM=3
DWIN32 =
RANLIB=/usr/i586-mingw32msvc/bin/ranlib
OCAMLOPT=/usr/i586-mingw32msvc/bin/ocamlopt
OCAMLC=/usr/i586-mingw32msvc/bin/ocamlc
OCAMLDEP=/usr/i586-mingw32msvc/bin/ocamldep
OCAMLRUN=/usr/i586-mingw32msvc/bin/ocamlrun
OCAMLLIB = `/usr/i586-mingw32msvc/bin/ocamlc -where`
CAML_INSTALL_DIR=`/usr/i586-mingw32msvc/bin/ocamlc -where`
else
ifeq ($(HOSTTYPE),win32)
# via the mingw32 compilers
CC=gcc
GCC=gcc
GPP=g++
RANLIB=ranlib
CFLAGS=-DPOLKA_NUM=3
AR=ar
AS=as
EXE := .exe
DWIN32 = -DWIN32
OCAML_PATH='e:/ocaml/Objective\ Caml/bin/'
OCAML_PATH=
CAMLP4=$(OCAML_PATH)camlp4
CAMLP4O=$(OCAML_PATH)camlp4o
CAMLP4OF=$(OCAML_PATH)camlp4of
CAMLP4OOF=$(OCAML_PATH)camlp4oof
OCAMLOPT=$(OCAML_PATH)ocamlopt$(EXE)
OCAMLC=$(OCAML_PATH)ocamlc
OCAMLDEP=$(OCAML_PATH)ocamldep
OCAMLRUN=$(OCAML_PATH)ocamlrun
OCAML=$(OCAML_PATH)ocaml
OCAMLMKTOP=$(OCAML_PATH)ocamlmktop
OCAMLLEX=$(OCAML_PATH)ocamllex
OCAMLYACC=$(OCAML_PATH)ocamlyacc
OCAMLCP=$(OCAML_PATH)ocamlcp
OCAMLDOC=$(OCAML_PATH)ocamldoc
OCAMLMKLIB=$(OCAML_PATH)ocamlmklib
OCAMLPROF=$(OCAML_PATH)ocamlprof
OCAMLLIB = `$(OCAMLC) -where`
OCAMLLIB="e:\ocaml\Objective Caml\lib"
CAML_INSTALL_DIR=`$(OCAMLC) -where`
RANLIB=ranlib
GCC=gcc
DWIN32 = -DWIN32
else
# LINUX quoi ...
OCAML_PATH=/usr/local/soft/ocaml/3.10.0/bin/
OCAML_PATH=
CAMLP4=$(OCAML_PATH)camlp4
CAMLP4O=$(OCAML_PATH)camlp4o
CAMLP4OF=$(OCAML_PATH)camlp4of
CAMLP4OOF=$(OCAML_PATH)camlp4oof
OCAMLOPT=$(OCAML_PATH)ocamlopt
OCAMLC=$(OCAML_PATH)ocamlc
OCAMLDEP=$(OCAML_PATH)ocamldep
OCAMLRUN=$(OCAML_PATH)ocamlrun
OCAML=$(OCAML_PATH)ocaml
OCAMLMKTOP=$(OCAML_PATH)ocamlmktop
OCAMLLEX=$(OCAML_PATH)ocamllex
OCAMLYACC=$(OCAML_PATH)ocamlyacc
OCAMLCP=$(OCAML_PATH)ocamlcp
OCAMLDOC=$(OCAML_PATH)ocamldoc
OCAMLMKLIB=$(OCAML_PATH)ocamlmklib
OCAMLPROF=$(OCAML_PATH)ocamlprof
OCAMLLIB = `$(OCAMLC) -where`
CAML_INSTALL_DIR=`$(OCAMLC) -where`
CC=gcc -g -O2 -fpic
OCAMLFLAGS =
OCAMLNCFLAGS =
ifdef SPEED
OCAMLFLAGS = -noassert -unsafe
OCAMLNCFLAGS = -inline 10
endif
endif
endif
endif
endif
endif
endif
LURETTE_SOURCES_C = \
$(OBJDIR)/liblutin_c.c \
$(OBJDIR)/liblutin.idl \
$(OBJDIR)/Ezdl_c.c \
ZELANG=lut
LURETTE_SOURCES=\
$(OBJDIR)/util2.ml \
$(OBJDIR)/error.ml \
$(OBJDIR)/graphUtil.ml \
$(OBJDIR)/graphUtil.mli \
$(OBJDIR)/sol_nb.mli \
$(OBJDIR)/sol_nb.ml \
$(OBJDIR)/graph.ml \
$(OBJDIR)/graph.mli \
$(OBJDIR)/myGenlex.mli \
$(OBJDIR)/myGenlex.ml \
$(OBJDIR)/Ezdl.ml \
$(OBJDIR)/Ezdl.mli \
$(OBJDIR)/type.ml \
$(OBJDIR)/type.mli \
$(OBJDIR)/prevar.ml \
$(OBJDIR)/prevar.mli \
$(OBJDIR)/value.ml \
$(OBJDIR)/value.mli \
$(OBJDIR)/var.ml \
$(OBJDIR)/var.mli \
$(OBJDIR)/exp.ml \
$(OBJDIR)/exp.mli \
$(OBJDIR)/ne.mli \
$(OBJDIR)/ne.ml \
$(OBJDIR)/constraint.ml \
$(OBJDIR)/constraint.mli \
$(OBJDIR)/lustreExp.ml \
$(OBJDIR)/lustreExp.mli \
$(OBJDIR)/lucParser.mly \
$(OBJDIR)/lucLexer.mll \
$(OBJDIR)/gne.mli \
$(OBJDIR)/gne.ml \
$(OBJDIR)/thickness.ml \
$(OBJDIR)/poly_draw.mli \
$(OBJDIR)/poly_draw.ml \
$(OBJDIR)/polyhedron.mli \
$(OBJDIR)/polyhedron.ml \
$(OBJDIR)/formula_to_bdd.mli \
$(OBJDIR)/formula_to_bdd.ml \
$(OBJDIR)/store.mli \
$(OBJDIR)/store.ml \
$(OBJDIR)/draw.mli \
$(OBJDIR)/draw.ml \
$(OBJDIR)/bddd.mli \
$(OBJDIR)/bddd.ml \
$(OBJDIR)/fair_bddd.mli \
$(OBJDIR)/fair_bddd.ml \
$(OBJDIR)/solver.mli \
$(OBJDIR)/solver.ml \
$(OBJDIR)/prog.ml \
$(OBJDIR)/prog.mli \
$(OBJDIR)/fGen.mli \
$(OBJDIR)/fGen.ml \
$(OBJDIR)/lucFGen.mli \
$(OBJDIR)/lucFGen.ml \
$(OBJDIR)/lucky.mli \
$(OBJDIR)/lucky.ml \
$(OBJDIR)/rif.mli \
$(OBJDIR)/rif.ml \
$(OBJDIR)/coverage.mli \
$(OBJDIR)/coverage.ml \
$(OBJDIR)/reactive.mli \
$(OBJDIR)/reactive.ml \
LUTIN_SOURCES = \
$(OBJDIR)/version.ml \
$(OBJDIR)/lutVersion.ml \
$(OBJDIR)/lexeme.mli \
$(OBJDIR)/lexeme.ml \
$(OBJDIR)/utils.ml \
$(OBJDIR)/utils.mli \
$(OBJDIR)/util.ml \
$(OBJDIR)/exprUtil.mli \
$(LURETTE_SOURCES_C) \
$(LURETTE_SOURCES) \
$(OBJDIR)/exprUtil.ml \
$(OBJDIR)/expEval.mli \
$(OBJDIR)/expEval.ml \
$(OBJDIR)/verbose.ml \
$(OBJDIR)/verbose.mli \
$(OBJDIR)/lutErrors.ml \
$(OBJDIR)/$(ZELANG)Parser.mly \
$(OBJDIR)/$(ZELANG)Lexer.mll \
$(OBJDIR)/syntaxe.ml \
$(OBJDIR)/parsers.ml \
$(OBJDIR)/parsers.mli \
$(OBJDIR)/syntaxeDump.ml \
$(OBJDIR)/ckTypeEff.ml \
$(OBJDIR)/ckTypeEff.mli \
$(OBJDIR)/ckIdentInfo.ml \
$(OBJDIR)/ckIdentInfo.mli \
$(OBJDIR)/checkEnv.ml \
$(OBJDIR)/checkEnv.mli \
$(OBJDIR)/lutPredef.ml \
$(OBJDIR)/checkType.ml \
$(OBJDIR)/coIdent.mli \
$(OBJDIR)/coIdent.ml \
$(OBJDIR)/coAlgExp.mli \
$(OBJDIR)/coAlgExp.ml \
$(OBJDIR)/coTraceExp.mli \
$(OBJDIR)/coTraceExp.ml \
$(OBJDIR)/glue.mli \
$(OBJDIR)/glue.ml \
$(OBJDIR)/guard.ml \
$(OBJDIR)/guard.mli \
$(OBJDIR)/expand.ml \
$(OBJDIR)/expand.mli \
$(OBJDIR)/loopWeights.mli \
$(OBJDIR)/loopWeights.ml \
$(OBJDIR)/autoExplore.ml \
$(OBJDIR)/autoExplore.mli \
$(OBJDIR)/autoGen.ml \
$(OBJDIR)/autoGen.mli \
$(OBJDIR)/auto2Lucky.ml \
$(OBJDIR)/auto2Lucky.mli \
$(OBJDIR)/show_env.ml \
$(OBJDIR)/show_env.mli \
$(OBJDIR)/lucParse.ml \
$(OBJDIR)/lucParse.mli \
$(OBJDIR)/lutProg.ml \
$(OBJDIR)/lutProg.mli \
$(OBJDIR)/lucProg.ml \
$(OBJDIR)/lucProg.mli \
$(OBJDIR)/luc2alice.ml \
$(OBJDIR)/luc2c.mli \
$(OBJDIR)/luc2c.ml \
$(OBJDIR)/mainArg.mli \
$(OBJDIR)/mainArg.ml \
$(OBJDIR)/lutExe.mli \
$(OBJDIR)/lutExe.ml
LUTIN_FILES = \
$(OBJDIR)/lutVersion.ml \
$(OBJDIR)/utils.ml \
$(OBJDIR)/utils.mli \
$(OBJDIR)/verbose.ml \
$(OBJDIR)/verbose.mli \
$(OBJDIR)/lutErrors.ml \
$(OBJDIR)/lutParser.mly \
$(OBJDIR)/lutLexer.mll \
$(OBJDIR)/reactive.mli \
$(OBJDIR)/reactive.ml \
$(OBJDIR)/syntaxe.ml \
$(OBJDIR)/parsers.ml \
$(OBJDIR)/parsers.mli \
$(OBJDIR)/syntaxeDump.ml \
$(OBJDIR)/ckTypeEff.ml \
$(OBJDIR)/ckTypeEff.mli \
$(OBJDIR)/ckIdentInfo.ml \
$(OBJDIR)/ckIdentInfo.mli \
$(OBJDIR)/checkEnv.ml \
$(OBJDIR)/checkEnv.mli \
$(OBJDIR)/lutPredef.ml \
$(OBJDIR)/checkType.ml \
$(OBJDIR)/coIdent.ml \
$(OBJDIR)/coIdent.mli \
$(OBJDIR)/coAlgExp.ml \
$(OBJDIR)/coAlgExp.mli \
$(OBJDIR)/coTraceExp.ml \
$(OBJDIR)/coTraceExp.mli \
$(OBJDIR)/expand.ml \
$(OBJDIR)/expand.mli \
$(OBJDIR)/guard.ml \
$(OBJDIR)/guard.mli \
$(OBJDIR)/autoExplore.ml \
$(OBJDIR)/autoExplore.mli \
$(OBJDIR)/autoGen.ml \
$(OBJDIR)/autoGen.mli \
$(OBJDIR)/auto2Lucky.ml \
$(OBJDIR)/auto2Lucky.mli \
$(OBJDIR)/lutProg.mli \
$(OBJDIR)/lutProg.ml
OCAMLMAKEFILE = $(LURETTE_PATH)/OcamlMakefile
......@@ -12,7 +12,6 @@ $ git clone ~jahier/lurette
$ export LURETTE_PATH=<le rep d'ou le git clone a été fait>/lurette
$ cd lurette
$ make camlidl # *si* camlidl n'est pas dans le path (nécessite les droits sur le rep. du compilo caml utilisé)
$ make build
......
*********** BUGS
* mettre une option int32 et int64
* ???
1 000 000 000
Fatal error: exception Assert_failure("/home/jahier/lurette/source/solver.ml", 30038, 30050)
* Quand Scade utilise des float, comme caml utilise des doubles,
je dois faire un cast. Il me faudrait un moyen de dire au solver
de ne pas générer des flottants trop grands (max float) quand
real est un float. Je ne vois pas bien comment faire, mais bon.
Ou alors, je limite systematiquement à max_c_float...
* Les noms de repertoires avec des espaces foutent la merde.
«
NF : Je viens d'avoir une erreur en utilisant un dossier dont le nom
contient un espace (erreur de gen_stubs). Ceci doit pouvoir être
éviter en mettant entre guillemets chaques arguments. Ca ne vaut
peut être pas le coup de corriger cela (modification du script
appelant gen_stubs_exe, puis de toutes les commande exécutées par
gen_stubs_exe (appels de cp par exemple)). Une petite note dans la
doc peut être suffisante.
»
* XXX attention a l'affichage du .rif quand lus est syntaxiquement faux dans
l'onglet "diagram manager" d'xlurette.
* cygwin : lurettetop ne marche pas sous un shell cygwin parce qu'il ne
trouve pas le Makefile.lurette. lapin compris pourquoi...
*********** Performances
* time lucky -l 100 six_lines.luc
prend 5 secondes pour n=1000 alors que pour n=10000
time lucky -l 10 six_lines.luc
prend 170 secondes !!! (pour faire autant de tirage in fine ...)
Bien sur, il manipule 10000 variables au lieu de 1000, mais tout de même.
*********** A faire
* luc2c reclame un HOST_TYPE (ne devrait pas. sinon, l'encapsuler dans un script)
par ailleurs, luc2c --scade povoque un « failure "tl" error » avec un exemple
de david Lesens.
* Luc4ocaml : rajouter un get_vertices
* verifier que les ~init se comportent correctement en cas de produit d'automate
* les env_state.d.memory devraient etre des Value.t VarMap.t plutot
que des Var.subst list !!
* Faudrait voir a essayer re reordonner les variables des bdds de temps
à autre (?)
* fonctions externes :
- Faire un tri topologique pour accepter les programmes
du style 'x=f(y) and y=g(z)'
- Rajouter une option --side-effet pour les fonctions qui en font
- Faire en sorte que les fonctions a effets de bords soient appelées
aussi souvent qu'elles apparaissent dans le code
* Ajouter une option -int32 qui utilise des Int32 pour éviter des soucis
avec des entiers trop grands.
* precision ne devrait pas vouloir dire "nombre de chiffres apres le virgule"
mais "nombre de chiffres significatifs". Ca me permettrait de plus d'implementer
un Polyhedron.rat_of_float qui soit moint délirant, ainsi que de donner
un max_float qui vaudrait max_int sans risque que ca pete.
* Utiliser le mode --log avec xlurette aussi (pas seulement avec scade_gui)
* j'ai retiré les -I et -L dans Makefile.lurette parce que ca provoquait
des erreurs quand les var telles EXTRA_LIB etaient vides. -> il faudrait
que je les rajoute automatiquement au niveau de xlurette ou mieux,
de lurettetop (quand elles n'y sont pas).
* portage windows
- sim2chro
*** noter quelque part les bidouilles que j'ai du faire
pour compiler le bouzin sous win32
- en particulier, j'ai du faire croire a camlidl que je n'etais
pas sous win32 (#undef _WIN32). En effet, camlidl a été compilé
avec ocamc/mingw et l'option --mno-cygwin. En effet, ...
* autoriser plusieurs automates dans le meme fichier
* gen_stubs devrait etre une API, pas un script
* quand on quitte lurette, on perd les .o et les executables, ce qui
est dommage quand les .c générés sont énormes !!!
* de plus, quand scade genere de fcext.dc, le fait de creer un repertoire <node>
est un peu penible, parce que le plus pratique devient alors de
changer de repertoire en allant dans celui-ci, puis de relancer lurette ...
* Le remplacement dynamique de .luc est tres surement cassé (les current_nodes
ne sont pas mis a jour) -> le retester
(nb : cette feature n'est pas documenté de toutes facons, et plus utilisé)
* Au sujet des l'heuristique nbac -> lucky, il faudrait peut-etre verifier
que tous les points sont ergodiques (recurrents).
* Dans le meme ordre d'idée :
Cela pourrait etre relativement utile de connaitre les temps de passage
de chaque noeud (temps au sens, chaine de Markov). En faisant abstraction
de la satisfiabilité des formules, bien sur...
* En fait, il faudrait definir un nouveau format lucky basé sur caml
qque chose qui resemblerait à
let i1 = ("toto", Int, 12, ...)
and i2 = ...
in
let il = [i1; i2; ...] in
let f1 = And(Or(.... (sin x)))
and ...
in
let t1 = (n1, n2, f1, Pre(X))
and t2 = ...
in
let tl = [t1; t2; ...] in
let automata = {
inputs = li,
outputs = lo,
...
transitions = tl
}
in
run automata
AVANTAGES :
(1) La syntaxe du format est tres facile à décrire : c'est du caml !!
(2) L'analyse lex, synt, et de type est faite par caml
(3) Ainsi, les appels de fonctions externes, c'est "finger in the nose"
(4) sans parler des librairies
(5) Pour passer de l'ancien format au nouveau, il me suffit
de faire un pretty print de ma structure de donnée interne...
INCONVÉNIENTS :
(1) ca oblige les gens à avoir un compilo caml chez eux...
* mettre les .pl* dans le repertoire temporaire.
> * différents fichiers temporaires sont générés dans le répertoire
> de travail : *.ps et *.dot, pl*.001, *.ec Y a-t-il un intérêt à
> concerver ces fichiers ? Sinon, pourraient-ils être générés dans
> le répertoire temporaire ?
* dans lucky, lors d'une erreur de type, demander aux gens de ressayer
plutot que de quitter.
Rajouter une option "--stop-at-type-error-for-inputs" (cf fichier
rif.ml, faire un search sur la chaine "parse error"
* tuer la fenetre de parametres plus proprement.
* Faire une experience ou je n'utilise plus du tout les bdds mais je
passe par une forme normale pour les booleans pour voir
on pourrait ainsi avoir 2 modes, pasque avec les bdds (j=1 or j=2)
donne une repartition 25/75, et depend de l'ordre dans lequel
apparaissent les monomes. Ca fout les boules...