fix Tuple

This commit is contained in:
Mylloon 2023-10-21 14:14:56 +02:00
parent 8604834fe0
commit 9f6ec012a5
Signed by: Anri
GPG key ID: A82D63DFF8D1317F

View file

@ -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 {