diff --git a/lectures/lecture02/Nano.gf b/lectures/lecture02/Nano.gf new file mode 100644 index 0000000..71a7cbf --- /dev/null +++ b/lectures/lecture02/Nano.gf @@ -0,0 +1,21 @@ +abstract Nano = { + +cat + S ; NP ; VP ; CN ; + Det ; Pron ; A ; N ; V2 ; + +fun + PredVPS : NP -> VP -> S ; + ComplV2 : V2 -> NP -> VP ; + DetCN : Det -> CN -> NP ; + AdjCN : A -> CN -> CN ; + UseCN : N -> CN ; + UsePron : Pron -> NP ; + + the_Det : Det ; + black_A : A ; + cat_N : N ; + see_V2 : V2 ; + we_Pron : Pron ; + +} \ No newline at end of file diff --git a/lectures/lecture02/NanoEng.gf b/lectures/lecture02/NanoEng.gf new file mode 100644 index 0000000..71e2943 --- /dev/null +++ b/lectures/lecture02/NanoEng.gf @@ -0,0 +1,33 @@ +concrete NanoEng of Nano = { + +lincat + S = Str ; + NP, Pron = {s : Case => Str ; n : Number} ; + VP, V2 = Number => Str ; + CN, Det = Str ; + A, N = Str ; + +lin + PredVPS np vp = np.s ! Nom ++ vp ! np.n ; + ComplV2 v2 np = table {n => v2 ! n ++ np.s ! Acc} ; + DetCN det cn = + {s = table {c => det ++ cn} ; n = Sg} ; + AdjCN a cn = a ++ cn ; + UseCN n = n ; + UsePron pron = pron ; + + the_Det = "the" ; + black_A = "black" ; + cat_N = "cat" ; + see_V2 = + table {Sg => "sees" ; Pl => "see"} ; + we_Pron = { + s = table {Nom => "we" ; Acc => "us"} ; + n = Pl + } ; + +param + Number = Sg | Pl ; + Case = Nom | Acc ; + +} \ No newline at end of file diff --git a/lectures/lecture02/NanoIta.gf b/lectures/lecture02/NanoIta.gf new file mode 100644 index 0000000..02c885b --- /dev/null +++ b/lectures/lecture02/NanoIta.gf @@ -0,0 +1,21 @@ +concrete NanoIta of Nano = { + +lincat + S, NP, VP, CN, + Det, Pron, A, N, V2 = Str ; + +lin + PredVPS np vp = np ++ vp ; + ComplV2 v2 np = np ++ v2 ; + DetCN det cn = det ++ cn ; + AdjCN a cn = cn ++ a ; + UseCN n = n ; + UsePron pron = pron ; + + the_Det = "il" ; + black_A = "nero" ; + cat_N = "gatto" ; + see_V2 = "vede" ; + we_Pron = "ci" ; + +} \ No newline at end of file