Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
L
lustre-v6
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
verimag
synchrone
lustre-v6
Commits
3e195b16
Commit
3e195b16
authored
16 years ago
by
Erwan Jahier
Browse files
Options
Downloads
Patches
Plain Diff
Raise a error when a type error is done when calling iterators
(versus raising an internal error...).
parent
aff712cb
No related branches found
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
src/QUESTION
+43
-0
43 additions, 0 deletions
src/QUESTION
src/TODO
+15
-39
15 additions, 39 deletions
src/TODO
src/predefEvalType.ml
+17
-8
17 additions, 8 deletions
src/predefEvalType.ml
with
75 additions
and
47 deletions
src/QUESTION
0 → 100644
+
43
−
0
View file @
3e195b16
* modeles et packages
---------------------
- instanciation de modele <<locaux>> à d'autre package interdite pour
l'instant, alors que ca marchait chez Youssef. Ce serait pratique
tout de meme.
Car si je veux utiliser definir un package parametré par un noeud n,
je suis obligé de définir n dans un package à part.
- j'autorise "is" et "=". Par ex :
package Pint = m1( int );
package Preal is m1( real );
mais j'ai bien envie de virer "is".
- A t'on vraiment besoin du mot clef "model" ?
un package avec un champ "needs" fait office naturellement de
package paramétré.
En effet, je trouve le terme de "model" tres surchargé.
* Evaluation des contantes
--------------------------
Evaluer statiquement les iterateurs quand c'est possible (cf
evalConst.ml) ? pour aller au bout de la logique, oui...
* polymorphisme
---------------
rajouter la notion de variables polymorphes et sur-chargées au
niveau noeud utilisateur ? Ce devrait etre peanuts maintenant que
je les ai en interne... (pour une variable par noeud du moins,
sinon ca va foutre le souc).
\ No newline at end of file
This diff is collapsed.
Click to expand it.
src/TODO
+
15
−
39
View file @
3e195b16
*** questions externes
======================
*** questions pour Pascal
=========================
cf fichier QUESTION pour les question d'ordre plus général de choix de language
(putot que d'implémenation).
* dans le generateur de lic, comment imprimer le nom des packages ?
...
...
@@ -9,26 +12,6 @@
- _Pack__toto -> pas beau, rend lus2lic pas idempotent
* instanciation de modele
*** instanciation de modele <<locaux>> à d'autre package interdite
pour l'instant, alors que ca marchait chez Youssef. Ce serait pratique
tout de meme.
Car si je veux utiliser definir un package parametré par un noeud n,
je suis obligé de définir n dans un package à part.
*** j'autorise "is" et "="
package Pint = m1( int );
mais j'ai bien envie de virer "is".
*** A t'on vraiment besoin du mot clef "model" ?
un package avec un champ needs fait office naturellement de
package paramétré.
En fait, je trouve le terme de "model" tres surchargé.
* slice_info_eff width = size ? Le commentaire dit
S[i] = A[first + i*step] pour i = 0 .. width
mais j'ai l'impression que ce devrait etre
...
...
@@ -37,19 +20,11 @@ cad
S[i] = A[first + i*step] pour i = 0 .. (size-1)
*
p
our l'evaluation statique de l'egalité, j'ai pas fait pareil...
*
P
our l'evaluation statique de l'egalité, j'ai pas fait pareil...
grosso-modo, je teste si 'a=b' alors Pascal deconstruit plus finement
le a et le b. Mais j'ai l'impression que ca revient au meme. Ai-je
raté un truc ? -> cf predefEvalConst.ml
* Evaluer statiquement les iterateurs quand c'est possible (cf
evalConst.ml) ? pour aller au bout de la logique, oui...
* rajouter la notion de variables polymorphes et sur-chargées au
niveau noeud utilisateur ? Ce devrait etre peanuts maintenant que
je les ai en interne... (pour une variable par noeud du moins, sinon ca
va foutre le souc).
* autoriser les alias sur "nor" et "#" ? (ca compliquerait les choses
pour bien peu... La difficulté étant du à l'arité variable de ces operateurs).
...
...
@@ -94,13 +69,6 @@ Mais du coup de travail de JB part
* EvalClock.var_clock_to_base (l200): c'est pas ca qu'il faut faire.
en effet, si on 1+1+a when c, ca risque de ne pas marcher.
* Faire qque chose pour les 2 verrues dans predefSemantics
pas facile...
* bug: res = map<< Lustre::ilt, 10>>(t1, t2);
ne marche pas en mode --inline-iterators
-> "*** Could not find package Lustre in the package table"
o Lazycompiler.solve_x_idref
...
...
@@ -118,7 +86,15 @@ lazycompiler.ml:
Simplify a little bit a couple of functions (avoiding code
duplication basically).
* flies fucking: mettre pre, current, when, etc. dans predef ?
*********************************************************************
*********************************************************************
*** flies fucking:
* mettre pre, current, when, etc. dans predef ?
* Faire qque chose pour les 2 verrues dans predefSemantics
pas facile...
* Ident.idref : a remettre dans SyntaxTree ? en tout cas, je devrais
m'en etre completement debarassé au niveau du compiledData, et ca
...
...
This diff is collapsed.
Click to expand it.
src/predefEvalType.ml
+
17
−
8
View file @
3e195b16
(** Time-stamp: <modified the 04/0
2
/2009 (at 1
5:26
) by Erwan Jahier> *)
(** Time-stamp: <modified the 04/0
3
/2009 (at 1
4:15
) by Erwan Jahier> *)
open
Predef
open
Lxm
...
...
@@ -75,16 +75,25 @@ let (type_to_array_type: Eff.var_info list -> int -> (Ident.t * Eff.type_) list)
List
.
map
(
fun
vi
->
vi
.
var_name_eff
,
Array_type_eff
(
vi
.
var_type_eff
,
c
))
l
(* Extract the node and the constant from a list of static args *)
let
(
get_node_and_constant
:
Eff
.
static_arg
list
->
Eff
.
item_key
*
var_info
list
*
var_info
list
*
int
)
=
fun
sargs
->
let
(
get_node_and_constant
:
Lxm
.
t
->
Eff
.
static_arg
list
->
Eff
.
item_key
*
var_info
list
*
var_info
list
*
int
)
=
fun
lxm
sargs
->
match
sargs
with
|
[
NodeStaticArgEff
(
_
,
(
n
,
inlist
,
outlist
));
ConstStaticArgEff
(
_
,
Int_const_eff
c
)]
->
n
,
inlist
,
outlist
,
c
|
_
->
assert
false
|
[
NodeStaticArgEff
(
_
,
(
n
,
inlist
,
outlist
));
ConstStaticArgEff
(
_
,
const
)]
->
let
msg
=
"an integer is expected, whereas a "
^
(
LicDump
.
string_of_type_eff4msg
(
Eff
.
type_of_const
const
))
^
" was provided.
\n
"
in
raise
(
Compile_error
(
lxm
,
msg
))
|
_
->
let
msg
=
"*** an integer and a node are expected.
\n
"
in
raise
(
Compile_error
(
lxm
,
msg
))
let
map_profile
=
let
map_profile
=
(* Given
- a node n of type: tau_1 * ... * tau_n -> teta_1 * ... * teta_l
- a constant c (nb : sargs = [n,c])
...
...
@@ -92,7 +101,7 @@ let map_profile =
The profile of map is: tau_1^c * ... * tau_n^c -> teta_1^c * ... * teta_l^c
*)
fun
lxm
sargs
->
let
(
n
,
inlist
,
outlist
,
c
)
=
get_node_and_constant
sargs
in
let
(
n
,
inlist
,
outlist
,
c
)
=
get_node_and_constant
lxm
sargs
in
let
lti
=
type_to_array_type
inlist
c
in
let
lto
=
type_to_array_type
outlist
c
in
let
res
=
(
lti
,
lto
)
in
...
...
@@ -110,7 +119,7 @@ let (fillred_profile : Lxm.t -> Eff.static_arg list ->
tau * tau_1^c * ... * tau_n^c -> tau * teta_1^c * ... * teta_l^c
*)
fun
lxm
sargs
->
let
(
n
,
inlist
,
outlist
,
c
)
=
get_node_and_constant
sargs
in
let
(
n
,
inlist
,
outlist
,
c
)
=
get_node_and_constant
lxm
sargs
in
let
_
=
assert
(
inlist
<>
[]
&&
outlist
<>
[]
)
in
let
lti
=
(
get_id_type
(
List
.
hd
inlist
))
::
type_to_array_type
(
List
.
tl
inlist
)
c
in
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment