diff --git a/src/qir/parser/Parser.java b/src/qir/parser/Parser.java index 0596b0ce0261c0d437f1a1f3d2759c4d88274d92..cfc86b4228880a60f4634edca0257ff83dddf07e 100644 --- a/src/qir/parser/Parser.java +++ b/src/qir/parser/Parser.java @@ -746,6 +746,10 @@ public class Parser { res = RecordType(); } else if (la.kind == 39) { res = ListType(); + } else if (la.kind == 18) { + Get(); + res = Type(); + Expect(20); } else SynErr(62); return res; } diff --git a/src/qir/parser/qir.atg b/src/qir/parser/qir.atg index 3038d1c3a71cd410583a74a3c68703c9b6879943..b9e35ee272ad9aad91c9b2b5a45cd5f1e42d55cc 100644 --- a/src/qir/parser/qir.atg +++ b/src/qir/parser/qir.atg @@ -193,6 +193,7 @@ NonFunctionType<out QIRType res> = (. res = null; .) ConstantType<out res> | RecordType<out res> | ListType<out res> +| "(" Type<out res> ")" ) . diff --git a/src/qir/parser/test.qir b/src/qir/parser/test.qir index fb1ec8f4f247031ca6ac8376b101cb0e4e07924d..e9487f5a18860be0d998ff851db7bdc8132e6198 100644 --- a/src/qir/parser/test.qir +++ b/src/qir/parser/test.qir @@ -1 +1 @@ -(fun : { x:int ; y:list[string] } x -> x) @ [ { x = 2; y = 3 + 4 } : { x : int; y : int }; [ "toto" ] : list[string]; (fun : int -> int x -> x + 2) ] +(fun : { x:int ; y:list[string] } x -> x) @ [ { x = 2; y = 3 + 4 } : { x : int; y : int }; [ "toto" ] : list[string]; (fun : int -> (int -> int) -> int x -> x + 2) ]