Fixed the parsing of [a * b -> c] as [(a * b) -> c].
This commit is contained in:
parent
1a1a8d986c
commit
47a41971d7
@ -141,23 +141,23 @@ type_decl:
|
|||||||
in {region; value} }
|
in {region; value} }
|
||||||
|
|
||||||
type_expr:
|
type_expr:
|
||||||
sum_type | record_type | cartesian { $1 }
|
fun_type | sum_type | record_type { $1 }
|
||||||
|
|
||||||
cartesian:
|
fun_type:
|
||||||
function_type { $1 }
|
cartesian { $1 }
|
||||||
| function_type "*" nsepseq(function_type,"*") {
|
| cartesian "->" fun_type {
|
||||||
let value = Utils.nsepseq_cons $1 $2 $3 in
|
|
||||||
let region = nsepseq_to_region type_expr_to_region value
|
|
||||||
in TProd {region; value} }
|
|
||||||
|
|
||||||
function_type:
|
|
||||||
core_type { $1 }
|
|
||||||
| core_type "->" function_type {
|
|
||||||
let start = type_expr_to_region $1
|
let start = type_expr_to_region $1
|
||||||
and stop = type_expr_to_region $3 in
|
and stop = type_expr_to_region $3 in
|
||||||
let region = cover start stop in
|
let region = cover start stop in
|
||||||
TFun {region; value = $1,$2,$3} }
|
TFun {region; value = $1,$2,$3} }
|
||||||
|
|
||||||
|
cartesian:
|
||||||
|
core_type { $1 }
|
||||||
|
| core_type "*" nsepseq(core_type,"*") {
|
||||||
|
let value = Utils.nsepseq_cons $1 $2 $3 in
|
||||||
|
let region = nsepseq_to_region type_expr_to_region value
|
||||||
|
in TProd {region; value} }
|
||||||
|
|
||||||
core_type:
|
core_type:
|
||||||
type_name { TVar $1 }
|
type_name { TVar $1 }
|
||||||
| par(type_expr) { TPar $1 }
|
| par(type_expr) { TPar $1 }
|
||||||
|
Loading…
Reference in New Issue
Block a user