fix Tuple
This commit is contained in:
parent
8604834fe0
commit
9f6ec012a5
1 changed files with 9 additions and 12 deletions
|
@ -256,18 +256,18 @@ simple_expression:
|
||||||
| i=located(identifier) tl=option(type_list) {
|
| i=located(identifier) tl=option(type_list) {
|
||||||
Variable(i, tl)
|
Variable(i, tl)
|
||||||
}
|
}
|
||||||
|
/* Tagged Value - Construction d'une donnée */
|
||||||
/* Tuple n = 0 and n > 1 - Construction d'un 0-uplet */
|
| const=located(constructor) tl=option(type_list) el=optionlist(expr_list) {
|
||||||
|
Tagged(const, tl, el)
|
||||||
|
}
|
||||||
|
/* Tuple n = 0 - Construction d'un 0-uplet */
|
||||||
| LPAREN RPAREN {
|
| LPAREN RPAREN {
|
||||||
Tuple([])
|
Tuple([])
|
||||||
}
|
}
|
||||||
/* Tuple n > 1 - Construction d'un n-uplet (n > 1) */
|
/* Tuple n > 1 - Construction d'un n-uplet (n > 1) */
|
||||||
| el=expr_list {
|
| el=expr_list {
|
||||||
Tuple(el)
|
(* S'il y a qu'1 élément, alors c'est juste une expression *)
|
||||||
}
|
match el with | [alone] -> Position.value alone | _ -> Tuple(el)
|
||||||
/* Tagged Value - Construction d'une donnée */
|
|
||||||
| const=located(constructor) tl=option(type_list) el=optionlist(expr_list) {
|
|
||||||
Tagged(const, tl, el)
|
|
||||||
}
|
}
|
||||||
/* Record - Construction d'un enregistrement */
|
/* Record - Construction d'un enregistrement */
|
||||||
| LBRACE l=separated_nonempty_list(
|
| LBRACE l=separated_nonempty_list(
|
||||||
|
@ -283,7 +283,7 @@ simple_expression:
|
||||||
}
|
}
|
||||||
|
|
||||||
type_list:
|
type_list:
|
||||||
| INFERIOR tl=optionlist(separated_nonempty_list(COMMA, located(ty))) SUPERIOR {
|
| INFERIOR tl=separated_list(COMMA, located(ty)) SUPERIOR {
|
||||||
tl
|
tl
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -292,7 +292,6 @@ expr_list:
|
||||||
el
|
el
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
expression:
|
expression:
|
||||||
| e=simple_expression {
|
| e=simple_expression {
|
||||||
e
|
e
|
||||||
|
@ -302,7 +301,7 @@ expression:
|
||||||
Field(e, l, tl)
|
Field(e, l, tl)
|
||||||
}
|
}
|
||||||
/* Sequence - Séquencement *
|
/* Sequence - Séquencement *
|
||||||
* Pas sûr, voir s'il ne fuat pas une troisième couche d'expression */
|
* Pas sûr, voir s'il ne faut pas une troisième couche d'expression */
|
||||||
| e=located(simple_expression)
|
| e=located(simple_expression)
|
||||||
SEMICOLON e_list=separated_nonempty_list(SEMICOLON, located(simple_expression)) {
|
SEMICOLON e_list=separated_nonempty_list(SEMICOLON, located(simple_expression)) {
|
||||||
Sequence(e :: e_list)
|
Sequence(e :: e_list)
|
||||||
|
@ -405,8 +404,6 @@ expression:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/******************************** BASIC TYPES *********************************/
|
/******************************** BASIC TYPES *********************************/
|
||||||
type_variable:
|
type_variable:
|
||||||
| tid=TID {
|
| tid=TID {
|
||||||
|
|
Reference in a new issue