diff options
| author | aarne <aarne@cs.chalmers.se> | 2007-10-23 14:11:22 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2007-10-23 14:11:22 +0000 |
| commit | bf223b43d5f7733462169fda5c85232c85a20ea0 (patch) | |
| tree | f2ecbe4a1febb67df5915baa8fd1960ca5750dd4 /examples | |
| parent | 5b7f45c7e6a60c655184c7a365fdceb5f591d389 (diff) | |
insertObject in Grammar
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/tutorial/syntax/GrammarEng.gf | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/examples/tutorial/syntax/GrammarEng.gf b/examples/tutorial/syntax/GrammarEng.gf index 8a4dace8d..217dda5af 100644 --- a/examples/tutorial/syntax/GrammarEng.gf +++ b/examples/tutorial/syntax/GrammarEng.gf @@ -43,18 +43,12 @@ concrete GrammarEng of Grammar = open Prelude, MorphoEng in { QuestV2 ip np v2 = { s = \\ord,pol => let - vp : VerbPhrase = {s = \\q,b,n => predVerb v2 q b n} ; + vp : VerbPhrase = predVerb v2 in bothWays (ip.s ++ (predVP np vp).s ! ord ! pol) v2.c } ; - ComplV2 v2 np = { - s = \\q,b,n => - let vp = predVerb v2 q b n in { - fin = vp.fin ; - inf = vp.inf ++ v2.c ++ np.s - } - } ; + ComplV2 v np = insertObject (v.c ++ np.s) (predVerb v) ; ComplAP ap = { s = \\_,b,n => { @@ -84,7 +78,7 @@ concrete GrammarEng of Grammar = open Prelude, MorphoEng in { UseN n = n ; UseA a = a ; - UseV v = {s = \\q,b,n => predVerb v q b n} ; + UseV = predVerb ; this_Det = {s = "this" ; n = Sg} ; that_Det = {s = "that" ; n = Sg} ; @@ -131,8 +125,8 @@ concrete GrammarEng of Grammar = open Prelude, MorphoEng in { do : Bool -> Number -> Str = \b,n -> posneg b ((mkV "do").s ! n) ; - predVerb : Verb -> Order -> Bool -> Number -> {fin,inf : Str} = - \verb,q,b,n -> + predVerb : Verb -> VerbPhrase = \verb -> { + s = \\q,b,n => let inf = verb.s ! Pl ; fin = verb.s ! n ; @@ -141,7 +135,16 @@ concrete GrammarEng of Grammar = open Prelude, MorphoEng in { case <q,b> of { <Dir,True> => {fin = [] ; inf = fin} ; _ => {fin = aux ; inf = inf} - } ; + } + } ; + + insertObject : Str -> VerbPhrase -> VerbPhrase = + \obj,vp -> { + s = \\q,b,n => let vps = vp.s ! q ! b! n in { + fin = vps.fin ; + inf = vps.inf ++ obj + } + } ; posneg : Bool -> Str -> Str = \b,do -> case b of { True => do ; |
