diff --git a/examples/discourse/Discourse.gf b/examples/discourse/Discourse.gf index 429fbd0c2..2ff18037c 100644 --- a/examples/discourse/Discourse.gf +++ b/examples/discourse/Discourse.gf @@ -9,24 +9,34 @@ abstract Discourse = flags startcat = S ; cat - Clause ; Part ; + Clause ; -- clause with subject, verb, object + Part ; -- discource particle fun - ClauseS : Part -> Temp -> Pol -> Clause -> S ; -- arihan juo nyt - SubjKinS : Part -> Temp -> Pol -> Clause -> S ; -- arikinhan juo nyt - VerbKinS : Part -> Temp -> Pol -> Clause -> S ; -- arihan juokin nyt - AdvKinS : Part -> Temp -> Pol -> Adv -> Clause -> S ; -- arihan juo nytkin - PreAdvKinS : Part -> Temp -> Pol -> Adv -> Clause -> S ; -- nytkinhän ari juo - PreAdvS : Part -> Temp -> Pol -> Adv -> Clause -> S ; -- nythän ari juo - PreAdvSubjKinS : Part -> Temp -> Pol -> Adv -> Clause -> S ; -- nythän arikin juo - PreAdvVerbKinS : Part -> Temp -> Pol -> Adv -> Clause -> S ; -- nythän ari juokin - PreAdvAdvKinS : Part -> Temp -> Pol -> Adv -> Adv -> Clause -> S ; -- nythän ari juo täälläkin + ClauseS : Part -> Temp -> Pol -> Clause -> S ; -- Jussihan juo nyt maitoa + SubjKinS : Part -> Temp -> Pol -> Clause -> S ; -- Jussikinhan juo nyt maitoa + VerbKinS : Part -> Temp -> Pol -> Clause -> S ; -- Jussihan juokin nyt maitoa + AdvKinS : Part -> Temp -> Pol -> Adv -> Clause -> S ; -- Jussihan juo nytkin maitoa + ObjKinS : Part -> Temp -> Pol -> Clause -> S ; -- Jussihan juo nyt maitoakin ---- AnterVerbS : Part -> PartKin -> Tense -> Pol -> Clause -> S ; -- arihan onkin juonut ---- doesn't put in right place + PreAdvS : Part -> Temp -> Pol -> Adv -> Clause -> S ; -- nythän Jussi juo maitoa + PreAdvKinS : Part -> Temp -> Pol -> Adv -> Clause -> S ; -- nytkinhän Jussi juo maitoa + PreAdvSubjKinS : Part -> Temp -> Pol -> Adv -> Clause -> S ; -- nythän Jussikin juo maitoa + PreAdvVerbKinS : Part -> Temp -> Pol -> Adv -> Clause -> S ; -- nythän Jussi juokin maitoa - PredClause : NP -> VP -> Clause ; + PreObjS : Part -> Temp -> Pol -> Clause -> S ; -- maitoahan Jussi juo nyt + PreObjKinS : Part -> Temp -> Pol -> Clause -> S ; -- maitoakinhan Jussi juo nyt + PreObjSubjKinS : Part -> Temp -> Pol -> Clause -> S ; -- maitoahan Jussikin juo nyt + PreObjVerbKinS : Part -> Temp -> Pol -> Clause -> S ; -- maitoahan Jussi juokin nyt - noPart, han_Part, pa_Part, pas_Part, ko_Part, kos_Part, kohan_Part, pahan_Part : Part ; + PreVerbS : Part -> Temp -> Pol -> Clause -> S ; -- juohan Jussi nyt maitoa + PreVerbSubKinS : Part -> Temp -> Pol -> Clause -> S ; -- juohan Jussikin nyt maitoa + PreVerbAdvKinS : Part -> Temp -> Pol -> Adv -> Clause -> S ; -- juohan Jussi nytkin maitoa + PreVerbObjKinS : Part -> Temp -> Pol -> NP -> Clause -> S ; -- juohan Jussi nyt maitoakin + + + PredClause : NP -> VP -> Clause ; + + noPart, han_Part, pas_Part : Part ; } diff --git a/examples/discourse/DiscourseEng.gf b/examples/discourse/DiscourseEng.gf index 695f70679..09dfd871d 100644 --- a/examples/discourse/DiscourseEng.gf +++ b/examples/discourse/DiscourseEng.gf @@ -10,7 +10,7 @@ concrete DiscourseEng of Discourse = lincat Clause = {subj : NP ; vp : VP} ; - Part = Adv ; + Part = {a : Adv ; isPre : Bool} ; lin ClauseS part temp pol cl = @@ -29,23 +29,12 @@ lin mkS adv (mkS part (mkS temp pol (mkCl (mkNP cl.subj (kin.s ! pol.p)) cl.vp))) ; PreAdvVerbKinS part temp pol adv cl = mkS adv (mkS part (mkS temp pol (mkCl cl.subj (mkVP cl.vp (kin.s ! pol.p))))) ; - PreAdvAdvKinS part temp pol adv1 adv2 cl = - mkS adv1 (mkS part (mkS temp pol (mkCl cl.subj (mkVP (mkVP cl.vp adv2) (kin.s ! pol.p))))) ; PredClause subj v = {subj = subj ; vp = v} ; ---- AnterVerbS part kin t pol cl = ---- mkS t anteriorAnt pol (mkCl (mkNP cl.subj part) (mkVP cl.vp (kin.s ! pol.p))) ; - - noPart = P.mkAdv [] ; - han_Part = P.mkAdv "as you know" ; - pa_Part = P.mkAdv "and nobody else" ; - pas_Part = P.mkAdv "and nobody else" ; - ko_Part = P.mkAdv "whether" ; - kos_Part = P.mkAdv "whether" ; - kohan_Part = P.mkAdv "whether" ; - pahan_Part = P.mkAdv "and nobody else as you know" ; - + noPart = {a = P.mkAdv [] ; isPre = False} ; + han_Part = {a = P.mkAdv "as you know" ; isPre = True} ; + pas_Part = {a = P.mkAdv "no" ; isPre = True} ; oper kin : {s : R.Polarity => Adv} = diff --git a/examples/discourse/DiscourseFin.gf b/examples/discourse/DiscourseFin.gf index 6c577d086..4fa1062b6 100644 --- a/examples/discourse/DiscourseFin.gf +++ b/examples/discourse/DiscourseFin.gf @@ -6,11 +6,12 @@ concrete DiscourseFin of Discourse = AdjectiveFin, AdverbFin, StructuralFin - [nobody_NP,nothing_NP], TenseX -** open SyntaxFin, (P = ParadigmsFin), (R = ParamX), Prelude in { +** open SyntaxFin, (P = ParadigmsFin), (R = ParamX), (E = ExtraFin), Prelude in { lincat - Clause = {subj : NP ; vp : VP} ; - Part = Adv ; + Clause = {subj : NP ; vp : VP} ; + OClause = {subj : NP ; v : V2 ; obj : NP} ; + Part = Adv ; lin ClauseS part temp pol cl = @@ -21,6 +22,7 @@ lin mkS temp pol (mkCl (mkNP cl.subj part) (mkVP cl.vp (kin.s ! pol.p))) ; AdvKinS part temp pol adv cl = mkS temp pol (mkCl (mkNP cl.subj part) (mkVP (mkVP cl.vp adv) (kin.s ! pol.p))) ; + PreAdvS part temp pol adv cl = mkS adv (mkS part (mkS temp pol (mkCl cl.subj cl.vp))) ; PreAdvKinS part temp pol adv cl = @@ -29,20 +31,15 @@ lin mkS adv (mkS part (mkS temp pol (mkCl (mkNP cl.subj (kin.s ! pol.p)) cl.vp))) ; PreAdvVerbKinS part temp pol adv cl = mkS adv (mkS part (mkS temp pol (mkCl cl.subj (mkVP cl.vp (kin.s ! pol.p))))) ; - PreAdvAdvKinS part temp pol adv1 adv2 cl = - mkS adv1 (mkS part (mkS temp pol (mkCl cl.subj (mkVP (mkVP cl.vp adv2) (kin.s ! pol.p))))) ; PredClause subj v = {subj = subj ; vp = v} ; + PredOClause subj v obj = {subj = subj ; v = v ; obj = obj} ; + UseOClause oc = {subj = oc.subj ; vp = mkVP oc.v oc.obj} ; noPart = P.mkAdv [] ; han_Part = P.mkAdv (glueTok "han") ; pa_Part = P.mkAdv (glueTok "pa") ; pas_Part = P.mkAdv (glueTok "pas") ; - ko_Part = P.mkAdv (glueTok "ko") ; - kos_Part = P.mkAdv (glueTok "kos") ; - kohan_Part = P.mkAdv (glueTok "kohan") ; - pahan_Part = P.mkAdv (glueTok "pahan") ; - oper kin : {s : R.Polarity => Adv} =