diff --git a/testsuite/lpgf/unittests/Params5.gf b/testsuite/lpgf/unittests/Params5.gf index 968d15de9..231b37462 100644 --- a/testsuite/lpgf/unittests/Params5.gf +++ b/testsuite/lpgf/unittests/Params5.gf @@ -16,4 +16,7 @@ abstract Params5 = { showP : P_ -> S ; showPQ : P_ -> Q_ -> S ; showQP : Q_ -> P_ -> S ; + + showPQnested : P_ -> Q_ -> S ; + showPPQ : P_ -> Q_ -> S ; } diff --git a/testsuite/lpgf/unittests/Params5.treebank b/testsuite/lpgf/unittests/Params5.treebank index 829bb8fd9..1e7de7832 100644 --- a/testsuite/lpgf/unittests/Params5.treebank +++ b/testsuite/lpgf/unittests/Params5.treebank @@ -81,3 +81,75 @@ Params5Cnc: QR R2 ; PQ (QR R1) Params5: showQP (qr r2) (pq (qr r2)) Params5Cnc: QR R2 ; PQ (QR R2) + +Params5: showPQnested p1 q1 +Params5Cnc: P1 ; Q1 + +Params5: showPQnested p1 (qr r1) +Params5Cnc: P1 ; QR R1 + +Params5: showPQnested p1 (qr r2) +Params5Cnc: P1 ; QR R2 + +Params5: showPQnested (pq q1) q1 +Params5Cnc: PQ Q1 ; Q1 + +Params5: showPQnested (pq q1) (qr r1) +Params5Cnc: PQ Q1 ; QR R1 + +Params5: showPQnested (pq q1) (qr r2) +Params5Cnc: PQ Q1 ; QR R2 + +Params5: showPQnested (pq (qr r1)) q1 +Params5Cnc: PQ (QR R1) ; Q1 + +Params5: showPQnested (pq (qr r1)) (qr r1) +Params5Cnc: PQ (QR R1) ; QR R1 + +Params5: showPQnested (pq (qr r1)) (qr r2) +Params5Cnc: PQ (QR R1) ; QR R2 + +Params5: showPQnested (pq (qr r2)) q1 +Params5Cnc: PQ (QR R2) ; Q1 + +Params5: showPQnested (pq (qr r2)) (qr r1) +Params5Cnc: PQ (QR R2) ; QR R1 + +Params5: showPQnested (pq (qr r2)) (qr r2) +Params5Cnc: PQ (QR R2) ; QR R2 + +Params5: showPPQ p1 q1 +Params5Cnc: P1 ; Q1 + +Params5: showPPQ p1 (qr r1) +Params5Cnc: P1 ; QR R1 + +Params5: showPPQ p1 (qr r2) +Params5Cnc: P1 ; QR R2 + +Params5: showPPQ (pq q1) q1 +Params5Cnc: PQ Q1 ; Q1 + +Params5: showPPQ (pq q1) (qr r1) +Params5Cnc: PQ Q1 ; QR R1 + +Params5: showPPQ (pq q1) (qr r2) +Params5Cnc: PQ Q1 ; QR R2 + +Params5: showPPQ (pq (qr r1)) q1 +Params5Cnc: PQ (QR R1) ; Q1 + +Params5: showPPQ (pq (qr r1)) (qr r1) +Params5Cnc: PQ (QR R1) ; QR R1 + +Params5: showPPQ (pq (qr r1)) (qr r2) +Params5Cnc: PQ (QR R1) ; QR R2 + +Params5: showPPQ (pq (qr r2)) q1 +Params5Cnc: PQ (QR R2) ; Q1 + +Params5: showPPQ (pq (qr r2)) (qr r1) +Params5Cnc: PQ (QR R2) ; QR R1 + +Params5: showPPQ (pq (qr r2)) (qr r2) +Params5Cnc: PQ (QR R2) ; QR R2 diff --git a/testsuite/lpgf/unittests/Params5Cnc.gf b/testsuite/lpgf/unittests/Params5Cnc.gf index ff7400819..026dfe149 100644 --- a/testsuite/lpgf/unittests/Params5Cnc.gf +++ b/testsuite/lpgf/unittests/Params5Cnc.gf @@ -23,6 +23,9 @@ concrete Params5Cnc of Params5 = { showPQ p q = tblPQRec ! { p = p ; q = q } ; showQP q p = tblQPRec ! { q = q ; p = p } ; + showPQnested p q = tblPtblQRec ! { p = p } ! { q = q } ; + showPPQ p q = tblPPQRec ! { pp = {p = p} ; q = q } ; + oper tblP : P => Str ; tblP = table { @@ -50,7 +53,7 @@ concrete Params5Cnc of Params5 = { {q=QR R2 ; p=PQ (QR R2)} => "QR R2 ; PQ (QR R2)" } ; - tblPQRec : {p:P ; q:Q} => Str ; + tblPQRec : {p:P ; q:Q} => Str ; tblPQRec = table { {p=P1 ; q=Q1} => "P1 ; Q1"; {p=P1 ; q=QR R1} => "P1 ; QR R1"; @@ -69,4 +72,51 @@ concrete Params5Cnc of Params5 = { {p=PQ (QR R2) ; q=QR R2} => "PQ (QR R2) ; QR R2" } ; + tblPtblQRec : {p:P} => {q:Q} => Str ; + tblPtblQRec = table { + {p=P1} => table { + {q=Q1} => "P1 ; Q1"; + {q=QR R1} => "P1 ; QR R1"; + {q=QR R2} => "P1 ; QR R2" + }; + + {p=PQ Q1} => table { + {q=Q1} => "PQ Q1 ; Q1"; + {q=QR R1} => "PQ Q1 ; QR R1"; + {q=QR R2} => "PQ Q1 ; QR R2" + }; + + {p=PQ (QR R1)} => table { + {q=Q1} => "PQ (QR R1) ; Q1"; + {q=QR R1} => "PQ (QR R1) ; QR R1"; + {q=QR R2} => "PQ (QR R1) ; QR R2" + }; + + {p=PQ (QR R2)} => table { + {q=Q1} => "PQ (QR R2) ; Q1"; + {q=QR R1} => "PQ (QR R2) ; QR R1"; + {q=QR R2} => "PQ (QR R2) ; QR R2" + } + } ; + + tblPPQRec : {pp: {p:P} ; q:Q} => Str ; + tblPPQRec = table { + {pp={p=P1} ; q=Q1} => "P1 ; Q1"; + {pp={p=P1} ; q=QR R1} => "P1 ; QR R1"; + {pp={p=P1} ; q=QR R2} => "P1 ; QR R2"; + + {pp={p=PQ Q1} ; q=Q1} => "PQ Q1 ; Q1"; + {pp={p=PQ Q1} ; q=QR R1} => "PQ Q1 ; QR R1"; + {pp={p=PQ Q1} ; q=QR R2} => "PQ Q1 ; QR R2"; + + {pp={p=PQ (QR R1)} ; q=Q1} => "PQ (QR R1) ; Q1"; + {pp={p=PQ (QR R1)} ; q=QR R1} => "PQ (QR R1) ; QR R1"; + {pp={p=PQ (QR R1)} ; q=QR R2} => "PQ (QR R1) ; QR R2"; + + {pp={p=PQ (QR R2)} ; q=Q1} => "PQ (QR R2) ; Q1"; + {pp={p=PQ (QR R2)} ; q=QR R1} => "PQ (QR R2) ; QR R1"; + {pp={p=PQ (QR R2)} ; q=QR R2} => "PQ (QR R2) ; QR R2" + } ; + + }