COLON type_scheme
This commit is contained in:
parent
5f48faa278
commit
9566754c75
1 changed files with 19 additions and 23 deletions
|
@ -80,7 +80,7 @@ definition:
|
|||
DefineType (tc, tvl, Abstract)
|
||||
}
|
||||
/* Valeurs externes */
|
||||
| EXTERN id=located(identifier) ts=located(type_scheme) {
|
||||
| EXTERN id=located(identifier) COLON ts=located(type_scheme) {
|
||||
DeclareExtern(id, ts)
|
||||
}
|
||||
/* Définition de valeurs */
|
||||
|
@ -126,7 +126,7 @@ label_with_type:
|
|||
|
||||
vdefinition:
|
||||
/* Valeur simple */
|
||||
| LET i=located(identifier) ts=option(vdef_type_scheme)
|
||||
| LET i=located(identifier) ts=option(colon_type_scheme)
|
||||
EQUAL e=located(expression) %prec let1{
|
||||
SimpleValue(i, ts, e)
|
||||
}
|
||||
|
@ -138,20 +138,12 @@ vdefinition:
|
|||
RecFunctions(fl)
|
||||
}
|
||||
|
||||
vdef_type_scheme:
|
||||
| COLON ts=located(type_scheme) {
|
||||
ts
|
||||
}
|
||||
|
||||
|
||||
fundef:
|
||||
| COLON t=option(located(type_scheme)) i=located(identifier) p=located(pattern)
|
||||
| t=option(colon_type_scheme) i=located(identifier) p=located(pattern)
|
||||
EQUAL e=located(expression) %prec fun1 {
|
||||
i, t, FunctionDefinition(p, e)
|
||||
}
|
||||
| i=located(identifier) p=located(pattern) EQUAL e=located(expression) {
|
||||
i, None, FunctionDefinition(p, e)
|
||||
}
|
||||
|
||||
|
||||
/********************************** PATTERN ***********************************/
|
||||
|
@ -275,15 +267,19 @@ ty:
|
|||
|
||||
|
||||
type_scheme:
|
||||
/* Il faut peut être modifié le séparateur */
|
||||
| COLON LBRACK liste_typevar=separated_list(COMMA, located(type_variable))
|
||||
| LBRACK liste_typevar=separated_list(COMMA, located(type_variable))
|
||||
RBRACK ty=located(ty) {
|
||||
ForallTy(liste_typevar, ty)
|
||||
}
|
||||
| COLON ty=located(ty) {
|
||||
| ty=located(ty) {
|
||||
ForallTy([], ty)
|
||||
}
|
||||
|
||||
colon_type_scheme:
|
||||
| COLON ts=located(type_scheme) {
|
||||
ts
|
||||
}
|
||||
|
||||
|
||||
/********************************* EXPRESSION *********************************/
|
||||
|
||||
|
|
Reference in a new issue