mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-21 18:59:32 -06:00
resource lib name changed
This commit is contained in:
214
lib/resource/api/Combinators.gf
Normal file
214
lib/resource/api/Combinators.gf
Normal file
@@ -0,0 +1,214 @@
|
||||
--1 Combinators: a High-Level Syntax API
|
||||
|
||||
-- This module defines some "grammatical functions" that give shortcuts to
|
||||
-- typical constructions. [``Constructors`` Constructors.html] and the
|
||||
-- language-specific ``Paradigms`` modules are usually needed
|
||||
-- to construct arguments of these functions.
|
||||
|
||||
incomplete resource Combinators = open Grammar in {
|
||||
|
||||
oper
|
||||
|
||||
--2 Predication
|
||||
|
||||
pred : overload {
|
||||
pred : V -> NP -> Cl ; -- x converges
|
||||
pred : V2 -> NP -> NP -> Cl ; -- x intersects y
|
||||
pred : V3 -> NP -> NP -> NP -> Cl ; -- x intersects y at z
|
||||
pred : V -> NP -> NP -> Cl ; -- x and y intersect
|
||||
pred : A -> NP -> Cl ; -- x is even
|
||||
pred : A2 -> NP -> NP -> Cl ; -- x is divisible by y
|
||||
pred : A -> NP -> NP -> Cl ; -- x and y are equal
|
||||
pred : N -> NP -> Cl ; -- x is a maximum
|
||||
pred : CN -> NP -> Cl ; -- x is a local maximum
|
||||
pred : NP -> NP -> Cl ; -- x is the neutral element
|
||||
pred : N -> NP -> NP -> Cl ; -- x and y are inverses
|
||||
pred : Adv -> NP -> Cl ; -- x is in scope
|
||||
pred : Prep -> NP -> NP -> Cl -- x is outside y
|
||||
} ;
|
||||
|
||||
--2 Function application
|
||||
|
||||
app : overload {
|
||||
app : N -> NP ;
|
||||
app : N2 -> NP -> NP ;
|
||||
app : N3 -> NP -> NP -> NP ;
|
||||
app : N2 -> NP -> NP -> NP ;
|
||||
app : N2 -> N -> CN
|
||||
} ;
|
||||
|
||||
--2 Coordination
|
||||
|
||||
coord : overload {
|
||||
coord : Conj -> Adv -> Adv -> Adv ;
|
||||
coord : Conj -> AP -> AP -> AP ;
|
||||
coord : Conj -> NP -> NP -> NP ;
|
||||
coord : Conj -> S -> S -> S ;
|
||||
coord : DConj -> Adv -> Adv -> Adv ;
|
||||
coord : DConj -> AP -> AP -> AP ;
|
||||
coord : DConj -> NP -> NP -> NP ;
|
||||
coord : DConj -> S -> S -> S ;
|
||||
coord : Conj -> ListAdv -> Adv ;
|
||||
coord : Conj -> ListAP -> AP ;
|
||||
coord : Conj -> ListNP -> NP ;
|
||||
coord : Conj -> ListS -> S ;
|
||||
coord : DConj -> ListAdv -> Adv ;
|
||||
coord : DConj -> ListAP -> AP ;
|
||||
coord : DConj -> ListNP -> NP ;
|
||||
coord : DConj -> ListS -> S
|
||||
|
||||
} ;
|
||||
|
||||
--2 Modification
|
||||
|
||||
mod : overload {
|
||||
mod : A -> N -> CN ;
|
||||
mod : AP -> CN -> CN ;
|
||||
mod : AdA -> A -> AP ;
|
||||
mod : Det -> N -> NP ;
|
||||
mod : Det -> CN -> NP ;
|
||||
mod : Quant -> N -> NP ;
|
||||
mod : Quant -> CN -> NP ;
|
||||
mod : Predet -> N -> NP ;
|
||||
mod : Numeral -> N -> NP
|
||||
|
||||
|
||||
} ;
|
||||
|
||||
--2 Negation
|
||||
|
||||
neg : overload {
|
||||
neg : Imp -> Utt ;
|
||||
neg : Cl -> S ;
|
||||
neg : QCl -> QS ;
|
||||
neg : RCl -> RS
|
||||
};
|
||||
|
||||
--2 Text append
|
||||
|
||||
-- This is not in ground API, because it would destroy parsing.
|
||||
|
||||
appendText : Text -> Text -> Text ;
|
||||
|
||||
--.
|
||||
|
||||
pred = overload {
|
||||
pred : V -> NP -> Cl
|
||||
= \v,np -> PredVP np (UseV v) ;
|
||||
pred : V2 -> NP -> NP -> Cl
|
||||
= \v,np,ob -> PredVP np (ComplV2 v ob) ;
|
||||
pred : V3 -> NP -> NP -> NP -> Cl
|
||||
= \v,np,ob,ob2 ->
|
||||
PredVP np (ComplV3 v ob ob2) ;
|
||||
pred : V -> NP -> NP -> Cl
|
||||
= \v,x,y -> PredVP (ConjNP and_Conj (BaseNP x y)) (UseV v) ;
|
||||
pred : A -> NP -> Cl
|
||||
= \a,np -> PredVP np (UseComp (CompAP (PositA a))) ;
|
||||
pred : A2 -> NP -> NP -> Cl
|
||||
= \a,x,y -> PredVP x (UseComp (CompAP (ComplA2 a y))) ;
|
||||
pred : A -> NP -> NP -> Cl
|
||||
= \a,x,y -> PredVP (ConjNP and_Conj (BaseNP x y)) (UseComp (CompAP (PositA a))) ;
|
||||
pred : N -> NP -> Cl
|
||||
= \n,x -> PredVP x (UseComp (CompNP (DetCN (DetSg (SgQuant IndefArt) NoOrd) (UseN n)))) ;
|
||||
pred : CN -> NP -> Cl
|
||||
= \n,x -> PredVP x (UseComp (CompNP (DetCN (DetSg (SgQuant IndefArt) NoOrd) n))) ;
|
||||
pred : NP -> NP -> Cl
|
||||
= \n,x -> PredVP x (UseComp (CompNP n)) ; pred : N2 -> NP -> NP -> Cl
|
||||
= \n,x,y -> PredVP x (UseComp (CompNP (DetCN (DetSg (SgQuant IndefArt) NoOrd) (ComplN2 n y)))) ;
|
||||
pred : N -> NP -> NP -> Cl
|
||||
= \n,x,y -> PredVP (ConjNP and_Conj (BaseNP x y)) (UseComp (CompNP (DetCN (DetPl (PlQuant IndefArt) NoNum NoOrd) (UseN n)))) ;
|
||||
pred : Adv -> NP -> Cl
|
||||
= \a,x -> PredVP x (UseComp (CompAdv a)) ;
|
||||
pred : Prep -> NP -> NP -> Cl
|
||||
= \p,x,y -> PredVP x (UseComp (CompAdv (PrepNP p y)))
|
||||
|
||||
} ;
|
||||
|
||||
app = overload {
|
||||
app : N -> NP
|
||||
= \n -> DetCN (DetSg (SgQuant DefArt) NoOrd) (UseN n) ;
|
||||
app : N2 -> NP -> NP
|
||||
= \n,x -> DetCN (DetSg (SgQuant DefArt) NoOrd) (ComplN2 n x) ;
|
||||
app : N3 -> NP -> NP -> NP
|
||||
= \n,x,y -> DetCN (DetSg (SgQuant DefArt) NoOrd) (ComplN2 (ComplN3 n x) y) ;
|
||||
app : N2 -> NP -> NP -> NP
|
||||
= \n,x,y -> DetCN (DetSg (SgQuant DefArt) NoOrd) (ComplN2 n (ConjNP and_Conj (BaseNP x y))) ;
|
||||
app : N2 -> N -> CN
|
||||
= \f,n -> ComplN2 f (DetCN (DetPl (PlQuant IndefArt) NoNum NoOrd) (UseN n))
|
||||
} ;
|
||||
|
||||
coord = overload {
|
||||
coord : Conj -> Adv -> Adv -> Adv
|
||||
= \c,x,y -> ConjAdv c (BaseAdv x y) ;
|
||||
coord : Conj -> AP -> AP -> AP
|
||||
= \c,x,y -> ConjAP c (BaseAP x y) ;
|
||||
coord : Conj -> NP -> NP -> NP
|
||||
= \c,x,y -> ConjNP c (BaseNP x y) ;
|
||||
coord : Conj -> S -> S -> S
|
||||
= \c,x,y -> ConjS c (BaseS x y) ;
|
||||
coord : DConj -> Adv -> Adv -> Adv
|
||||
= \c,x,y -> DConjAdv c (BaseAdv x y) ;
|
||||
coord : DConj -> AP -> AP -> AP
|
||||
= \c,x,y -> DConjAP c (BaseAP x y) ;
|
||||
coord : DConj -> NP -> NP -> NP
|
||||
= \c,x,y -> DConjNP c (BaseNP x y) ;
|
||||
coord : DConj -> S -> S -> S
|
||||
= \c,x,y -> DConjS c (BaseS x y) ;
|
||||
coord : Conj -> ListAdv -> Adv
|
||||
= \c,xy -> ConjAdv c xy ;
|
||||
coord : Conj -> ListAP -> AP
|
||||
= \c,xy -> ConjAP c xy ;
|
||||
coord : Conj -> ListNP -> NP
|
||||
= \c,xy -> ConjNP c xy ;
|
||||
coord : Conj -> ListS -> S
|
||||
= \c,xy -> ConjS c xy ;
|
||||
coord : DConj -> ListAdv -> Adv
|
||||
= \c,xy -> DConjAdv c xy ;
|
||||
coord : DConj -> ListAP -> AP
|
||||
= \c,xy -> DConjAP c xy ;
|
||||
coord : DConj -> ListNP -> NP
|
||||
= \c,xy -> DConjNP c xy ;
|
||||
coord : DConj -> ListS -> S
|
||||
= \c,xy -> DConjS c xy
|
||||
} ;
|
||||
|
||||
mod = overload {
|
||||
mod : A -> N -> CN
|
||||
= \a,n -> AdjCN (PositA a) (UseN n) ;
|
||||
mod : AP -> CN -> CN
|
||||
= \a,n -> AdjCN a n ;
|
||||
mod : AdA -> A -> AP
|
||||
= \m,a -> AdAP m (PositA a) ;
|
||||
|
||||
mod : Det -> N -> NP
|
||||
= \d,n -> DetCN d (UseN n) ;
|
||||
mod : Det -> CN -> NP
|
||||
= \d,n -> DetCN d n ;
|
||||
mod : Quant -> N -> NP
|
||||
= \q,n -> DetCN (DetSg (SgQuant q) NoOrd) (UseN n) ;
|
||||
mod : Quant -> CN -> NP
|
||||
= \q,n -> DetCN (DetSg (SgQuant q) NoOrd) n ;
|
||||
mod : Predet -> N -> NP
|
||||
= \q,n -> PredetNP q (DetCN (DetPl (PlQuant IndefArt) NoNum NoOrd) (UseN n)) ;
|
||||
mod : Numeral -> N -> NP
|
||||
= \nu,n -> DetCN (DetPl (PlQuant IndefArt) (NumNumeral nu) NoOrd) (UseN n)
|
||||
|
||||
} ;
|
||||
|
||||
neg = overload {
|
||||
neg : Imp -> Utt
|
||||
= UttImpSg PNeg ;
|
||||
neg : Cl -> S
|
||||
= UseCl TPres ASimul PNeg;
|
||||
neg : QCl -> QS
|
||||
= UseQCl TPres ASimul PNeg;
|
||||
neg : RCl -> RS
|
||||
= UseRCl TPres ASimul PNeg
|
||||
};
|
||||
|
||||
-- This is not in ground API, because it would destroy parsing.
|
||||
|
||||
appendText : Text -> Text -> Text
|
||||
= \x,y -> {s = x.s ++ y.s ; lock_Text = <>} ;
|
||||
|
||||
}
|
||||
3
lib/resource/api/CombinatorsDan.gf
Normal file
3
lib/resource/api/CombinatorsDan.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource CombinatorsDan = Combinators with (Grammar = GrammarDan) ;
|
||||
3
lib/resource/api/CombinatorsEng.gf
Normal file
3
lib/resource/api/CombinatorsEng.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource CombinatorsEng = Combinators with (Grammar = GrammarEng) ;
|
||||
3
lib/resource/api/CombinatorsFin.gf
Normal file
3
lib/resource/api/CombinatorsFin.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource CombinatorsFin = Combinators with (Grammar = GrammarFin) ;
|
||||
3
lib/resource/api/CombinatorsFre.gf
Normal file
3
lib/resource/api/CombinatorsFre.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource CombinatorsFre = Combinators with (Grammar = GrammarFre) ;
|
||||
3
lib/resource/api/CombinatorsGer.gf
Normal file
3
lib/resource/api/CombinatorsGer.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource CombinatorsGer = Combinators with (Grammar = GrammarGer) ;
|
||||
3
lib/resource/api/CombinatorsIta.gf
Normal file
3
lib/resource/api/CombinatorsIta.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource CombinatorsIta = Combinators with (Grammar = GrammarIta) ;
|
||||
3
lib/resource/api/CombinatorsNor.gf
Normal file
3
lib/resource/api/CombinatorsNor.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource CombinatorsNor = Combinators with (Grammar = GrammarNor) ;
|
||||
3
lib/resource/api/CombinatorsRus.gf
Normal file
3
lib/resource/api/CombinatorsRus.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource CombinatorsRus = Combinators with (Grammar = GrammarRus) ;
|
||||
3
lib/resource/api/CombinatorsSpa.gf
Normal file
3
lib/resource/api/CombinatorsSpa.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource CombinatorsSpa = Combinators with (Grammar = GrammarSpa) ;
|
||||
3
lib/resource/api/CombinatorsSwe.gf
Normal file
3
lib/resource/api/CombinatorsSwe.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource CombinatorsSwe = Combinators with (Grammar = GrammarSwe) ;
|
||||
1499
lib/resource/api/Constructors.gf
Normal file
1499
lib/resource/api/Constructors.gf
Normal file
File diff suppressed because it is too large
Load Diff
3
lib/resource/api/ConstructorsDan.gf
Normal file
3
lib/resource/api/ConstructorsDan.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource ConstructorsDan = Constructors with (Grammar = GrammarDan) ;
|
||||
3
lib/resource/api/ConstructorsEng.gf
Normal file
3
lib/resource/api/ConstructorsEng.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource ConstructorsEng = Constructors with (Grammar = GrammarEng) ;
|
||||
3
lib/resource/api/ConstructorsFin.gf
Normal file
3
lib/resource/api/ConstructorsFin.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource ConstructorsFin = Constructors with (Grammar = GrammarFin) ;
|
||||
3
lib/resource/api/ConstructorsFre.gf
Normal file
3
lib/resource/api/ConstructorsFre.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource ConstructorsFre = Constructors with (Grammar = GrammarFre) ;
|
||||
3
lib/resource/api/ConstructorsGer.gf
Normal file
3
lib/resource/api/ConstructorsGer.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource ConstructorsGer = Constructors with (Grammar = GrammarGer) ;
|
||||
3
lib/resource/api/ConstructorsIta.gf
Normal file
3
lib/resource/api/ConstructorsIta.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource ConstructorsIta = Constructors with (Grammar = GrammarIta) ;
|
||||
3
lib/resource/api/ConstructorsNor.gf
Normal file
3
lib/resource/api/ConstructorsNor.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource ConstructorsNor = Constructors with (Grammar = GrammarNor) ;
|
||||
3
lib/resource/api/ConstructorsRus.gf
Normal file
3
lib/resource/api/ConstructorsRus.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource ConstructorsRus = Constructors with (Grammar = GrammarRus) ;
|
||||
3
lib/resource/api/ConstructorsSpa.gf
Normal file
3
lib/resource/api/ConstructorsSpa.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource ConstructorsSpa = Constructors with (Grammar = GrammarSpa) ;
|
||||
3
lib/resource/api/ConstructorsSwe.gf
Normal file
3
lib/resource/api/ConstructorsSwe.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource ConstructorsSwe = Constructors with (Grammar = GrammarSwe) ;
|
||||
5
lib/resource/api/Koe.gf
Normal file
5
lib/resource/api/Koe.gf
Normal file
@@ -0,0 +1,5 @@
|
||||
abstract Koe = Cat ** {
|
||||
|
||||
fun ex1, ex2, ex3 : Phr ;
|
||||
|
||||
}
|
||||
10
lib/resource/api/KoeEng.gf
Normal file
10
lib/resource/api/KoeEng.gf
Normal file
@@ -0,0 +1,10 @@
|
||||
--# -path=.:../abstract:../common:../english:prelude
|
||||
|
||||
concrete KoeEng of Koe = CatEng **
|
||||
open ParadigmsEng, ConstructorsEng, CombinatorsEng, GrammarEng in {
|
||||
|
||||
lin
|
||||
ex1 = mkPhr (mkS (mkCl (mkNP (regPN "John")) (mkVP (regV "walk")))) ;
|
||||
ex2 = mkPhr (mkS (pred (regV "walk") (mkNP (regPN "John")))) ;
|
||||
ex3 = mkPhr (mkS (mkCl (mkNP and_Conj (mkNP (regPN "John"))(mkNP (regPN "Mary"))) (mkVP (regV "walk")))) ;
|
||||
}
|
||||
14
lib/resource/api/MkOverload.hs
Normal file
14
lib/resource/api/MkOverload.hs
Normal file
@@ -0,0 +1,14 @@
|
||||
import List
|
||||
|
||||
main = do
|
||||
s <- readFile "constrs"
|
||||
mapM_ (putStrLn . mkOne) $ lines s
|
||||
|
||||
mkOne [] = []
|
||||
mkOne s =
|
||||
" mk" ++ cons ++ " " ++ rest ++
|
||||
"\n =" ++ fun ++ " ;"
|
||||
where
|
||||
(fun,rest) = span (/=':') s
|
||||
cons = last $ takeWhile (/="--") $ words rest
|
||||
|
||||
39
lib/resource/api/Port.hs
Normal file
39
lib/resource/api/Port.hs
Normal file
@@ -0,0 +1,39 @@
|
||||
import System
|
||||
|
||||
main = mapM_ (\la -> mapM_ (\fi -> port "Eng" fi la) files) languages
|
||||
|
||||
languages = words "Dan Eng Fin Fre Ger Ita Nor Rus Spa Swe"
|
||||
langlong = words
|
||||
"danish english finnish french german italian norwegian russian spanish swedish"
|
||||
families = [
|
||||
("romance", ["french", "italian", "spanish"]),
|
||||
("scandinavian",["danish","norwegian","swedish"])
|
||||
]
|
||||
|
||||
longname lang =
|
||||
maybe (error ("no " ++ lang)) id $ lookup lang $ zip languages langlong
|
||||
|
||||
files = words "Combinators Constructors Symbolic"
|
||||
|
||||
port src file dst
|
||||
| src == dst = return ()
|
||||
| otherwise = do
|
||||
let fdst = file ++ dst ++ ".gf"
|
||||
system $ "cp " ++ file ++ src ++ ".gf " ++ fdst
|
||||
let longsrc = longname src
|
||||
let longdst = longname dst
|
||||
-- putStrLn $ "sed -i 's/" ++ longsrc ++ "/" ++ longdst ++ "/g' " ++ fdst
|
||||
-- system $ "sed -i 's/" ++ longsrc ++ "/" ++ longdst ++ "/g' " ++ fdst
|
||||
putStrLn $ "sed -i 's/" ++ src ++ "/" ++ dst ++ "/g' " ++ fdst
|
||||
system $ "sed -i 's/" ++ src ++ "/" ++ dst ++ "/g' " ++ fdst
|
||||
-- addFamily longdst fdst
|
||||
return ()
|
||||
|
||||
addFamily ldst fdst = maybe (return ()) add $ lookup ldst fams where
|
||||
fams = [(l,f) | (f,ls) <- families, l <- ls]
|
||||
add fam = do
|
||||
putStrLn $
|
||||
"sed -i 's/" ++ ldst ++ "/" ++ ldst ++ ":\\.\\.\\/" ++ fam ++ "/g' " ++ fdst
|
||||
system $
|
||||
"sed -i 's/" ++ ldst ++ "/" ++ ldst ++ ":\\.\\.\\/" ++ fam ++ "/g' " ++ fdst
|
||||
return ()
|
||||
48
lib/resource/api/Symbolic.gf
Normal file
48
lib/resource/api/Symbolic.gf
Normal file
@@ -0,0 +1,48 @@
|
||||
--1 Symbolic: Noun Phrases with mathematical symbols
|
||||
|
||||
incomplete resource Symbolic = open Symbol, Grammar in {
|
||||
|
||||
oper
|
||||
symb : overload {
|
||||
symb : Str -> NP ; -- x
|
||||
symb : Int -> NP ; -- 23
|
||||
symb : Float -> NP ; -- 0.99
|
||||
symb : N -> Int -> NP ; -- level 4
|
||||
symb : N -> Num -> NP ; -- level four
|
||||
symb : CN -> Num -> NP ; -- difficult level four
|
||||
symb : Det -> N -> Num -> NP ; -- the number four
|
||||
symb : Det -> CN -> Num -> NP ; -- the even number four
|
||||
symb : Det -> N -> Str -> Str -> NP ; -- the levels i and j
|
||||
symb : Det -> CN -> [Symb] -> NP -- the basic levels i, j, and k
|
||||
} ;
|
||||
|
||||
mkSymb : Str -> Symb ;
|
||||
|
||||
--.
|
||||
|
||||
symb = overload {
|
||||
symb : Str -> NP
|
||||
= \s -> UsePN (SymbPN (mkSymb s)) ;
|
||||
symb : Int -> NP
|
||||
= \i -> UsePN (IntPN i) ;
|
||||
symb : Float -> NP
|
||||
= \i -> UsePN (FloatPN i) ;
|
||||
symb : N -> Int -> NP
|
||||
= \c,i -> CNNumNP (UseN c) (NumInt i) ;
|
||||
symb : N -> Num -> NP
|
||||
= \c,n -> CNNumNP (UseN c) n ;
|
||||
symb : CN -> Num -> NP
|
||||
= \c,n -> CNNumNP c n ;
|
||||
symb : Det -> N -> Num -> NP
|
||||
= \d,n,x -> DetCN d (ApposCN (UseN n) (UsePN (NumPN x))) ;
|
||||
symb : Det -> CN -> Num -> NP
|
||||
= \d,n,x -> DetCN d (ApposCN n (UsePN (NumPN x))) ;
|
||||
symb : Det -> N -> Str -> Str -> NP
|
||||
= \c,n,x,y -> CNSymbNP c (UseN n) (BaseSymb (mkSymb x) (mkSymb y)) ;
|
||||
symb : Det -> CN -> [Symb] -> NP
|
||||
= CNSymbNP
|
||||
} ;
|
||||
|
||||
mkSymb : Str -> Symb = \s -> {s = s ; lock_Symb = <>} ;
|
||||
|
||||
}
|
||||
5
lib/resource/api/SymbolicEng.gf
Normal file
5
lib/resource/api/SymbolicEng.gf
Normal file
@@ -0,0 +1,5 @@
|
||||
--# -path=.:present:mathematical:prelude
|
||||
|
||||
resource SymbolicEng = Symbolic with
|
||||
(Symbol = SymbolEng),
|
||||
(Grammar = GrammarEng) ;
|
||||
5
lib/resource/api/SymbolicFin.gf
Normal file
5
lib/resource/api/SymbolicFin.gf
Normal file
@@ -0,0 +1,5 @@
|
||||
--# -path=.:present:mathematical:prelude
|
||||
|
||||
resource SymbolicFin = Symbolic with
|
||||
(Symbol = SymbolFin),
|
||||
(Grammar = GrammarFin) ;
|
||||
5
lib/resource/api/SymbolicFre.gf
Normal file
5
lib/resource/api/SymbolicFre.gf
Normal file
@@ -0,0 +1,5 @@
|
||||
--# -path=.:present:mathematical:prelude
|
||||
|
||||
resource SymbolicFre = Symbolic with
|
||||
(Symbol = SymbolFre),
|
||||
(Grammar = GrammarFre) ;
|
||||
5
lib/resource/api/SymbolicGer.gf
Normal file
5
lib/resource/api/SymbolicGer.gf
Normal file
@@ -0,0 +1,5 @@
|
||||
--# -path=.:present:mathematical:prelude
|
||||
|
||||
resource SymbolicGer = Symbolic with
|
||||
(Symbol = SymbolGer),
|
||||
(Grammar = GrammarGer) ;
|
||||
5
lib/resource/api/SymbolicIta.gf
Normal file
5
lib/resource/api/SymbolicIta.gf
Normal file
@@ -0,0 +1,5 @@
|
||||
--# -path=.:present:mathematical:prelude
|
||||
|
||||
resource SymbolicIta = Symbolic with
|
||||
(Symbol = SymbolIta),
|
||||
(Grammar = GrammarIta) ;
|
||||
5
lib/resource/api/SymbolicNor.gf
Normal file
5
lib/resource/api/SymbolicNor.gf
Normal file
@@ -0,0 +1,5 @@
|
||||
--# -path=.:present:mathematical:prelude
|
||||
|
||||
resource SymbolicNor = Symbolic with
|
||||
(Symbol = SymbolNor),
|
||||
(Grammar = GrammarNor) ;
|
||||
5
lib/resource/api/SymbolicSpa.gf
Normal file
5
lib/resource/api/SymbolicSpa.gf
Normal file
@@ -0,0 +1,5 @@
|
||||
--# -path=.:present:mathematical:prelude
|
||||
|
||||
resource SymbolicSpa = Symbolic with
|
||||
(Symbol = SymbolSpa),
|
||||
(Grammar = GrammarSpa) ;
|
||||
5
lib/resource/api/SymbolicSwe.gf
Normal file
5
lib/resource/api/SymbolicSwe.gf
Normal file
@@ -0,0 +1,5 @@
|
||||
--# -path=.:present:mathematical:prelude
|
||||
|
||||
resource SymbolicSwe = Symbolic with
|
||||
(Symbol = SymbolSwe),
|
||||
(Grammar = GrammarSwe) ;
|
||||
4
lib/resource/api/Syntax.gf
Normal file
4
lib/resource/api/Syntax.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
interface Syntax = Constructors, Cat, Structural, Numeral ;
|
||||
|
||||
4
lib/resource/api/SyntaxDan.gf
Normal file
4
lib/resource/api/SyntaxDan.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
instance SyntaxDan of Syntax = ConstructorsDan, CatDan, StructuralDan, NumeralDan ;
|
||||
|
||||
4
lib/resource/api/SyntaxEng.gf
Normal file
4
lib/resource/api/SyntaxEng.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
instance SyntaxEng of Syntax = ConstructorsEng, CatEng, StructuralEng, NumeralEng ;
|
||||
|
||||
4
lib/resource/api/SyntaxFin.gf
Normal file
4
lib/resource/api/SyntaxFin.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
instance SyntaxFin of Syntax = ConstructorsFin, CatFin, StructuralFin, NumeralFin ;
|
||||
|
||||
4
lib/resource/api/SyntaxFre.gf
Normal file
4
lib/resource/api/SyntaxFre.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
instance SyntaxFre of Syntax = ConstructorsFre, CatFre, StructuralFre, NumeralFre ;
|
||||
|
||||
4
lib/resource/api/SyntaxGer.gf
Normal file
4
lib/resource/api/SyntaxGer.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
instance SyntaxGer of Syntax = ConstructorsGer, CatGer, StructuralGer, NumeralGer ;
|
||||
|
||||
4
lib/resource/api/SyntaxIta.gf
Normal file
4
lib/resource/api/SyntaxIta.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
instance SyntaxIta of Syntax = ConstructorsIta, CatIta, StructuralIta, NumeralIta ;
|
||||
|
||||
5
lib/resource/api/SyntaxNor.gf
Normal file
5
lib/resource/api/SyntaxNor.gf
Normal file
@@ -0,0 +1,5 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
instance SyntaxNor of Syntax = ConstructorsNor, CatNor, StructuralNor, NumeralNor
|
||||
;
|
||||
|
||||
4
lib/resource/api/SyntaxRus.gf
Normal file
4
lib/resource/api/SyntaxRus.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
instance SyntaxRus of Syntax = ConstructorsRus, CatRus, StructuralRus, NumeralRus ;
|
||||
|
||||
4
lib/resource/api/SyntaxSpa.gf
Normal file
4
lib/resource/api/SyntaxSpa.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
instance SyntaxSpa of Syntax = ConstructorsSpa, CatSpa, StructuralSpa, NumeralSpa ;
|
||||
|
||||
4
lib/resource/api/SyntaxSwe.gf
Normal file
4
lib/resource/api/SyntaxSwe.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
instance SyntaxSwe of Syntax = ConstructorsSwe, CatSwe, StructuralSwe, NumeralSwe ;
|
||||
|
||||
3
lib/resource/api/TryDan.gf
Normal file
3
lib/resource/api/TryDan.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource TryDan = SyntaxDan, LexiconDan, ParadigmsDan - [mkAdv] ;
|
||||
3
lib/resource/api/TryEng.gf
Normal file
3
lib/resource/api/TryEng.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource TryEng = SyntaxEng, LexiconEng, ParadigmsEng - [mkAdv] ;
|
||||
3
lib/resource/api/TryFin.gf
Normal file
3
lib/resource/api/TryFin.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource TryFin = SyntaxFin, LexiconFin-[mkOrd], ParadigmsFin - [mkAdv] ;
|
||||
3
lib/resource/api/TryFre.gf
Normal file
3
lib/resource/api/TryFre.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource TryFre = SyntaxFre, LexiconFre, ParadigmsFre - [mkAdv] ;
|
||||
3
lib/resource/api/TryGer.gf
Normal file
3
lib/resource/api/TryGer.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource TryGer = SyntaxGer, LexiconGer, ParadigmsGer - [mkAdv] ;
|
||||
3
lib/resource/api/TryIta.gf
Normal file
3
lib/resource/api/TryIta.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource TryIta = SyntaxIta, LexiconIta, ParadigmsIta - [mkAdv,in_Prep] ;
|
||||
3
lib/resource/api/TryNor.gf
Normal file
3
lib/resource/api/TryNor.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource TryNor = SyntaxNor, LexiconNor, ParadigmsNor - [mkAdv] ;
|
||||
3
lib/resource/api/TryRus.gf
Normal file
3
lib/resource/api/TryRus.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource TryRus = SyntaxRus, LexiconRus, ParadigmsRus - [mkAdv] ;
|
||||
3
lib/resource/api/TrySpa.gf
Normal file
3
lib/resource/api/TrySpa.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource TrySpa = SyntaxSpa, LexiconSpa, ParadigmsSpa - [mkAdv] ;
|
||||
3
lib/resource/api/TrySwe.gf
Normal file
3
lib/resource/api/TrySwe.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource TrySwe = SyntaxSwe, LexiconSwe, ParadigmsSwe - [mkAdv] ;
|
||||
90
lib/resource/api/examples/Exx.gf
Normal file
90
lib/resource/api/examples/Exx.gf
Normal file
@@ -0,0 +1,90 @@
|
||||
abstract Exx = Cat-[VP], Conjunction-[VP] ** {
|
||||
|
||||
cat VP ; --- hack to circumvent missing lockfields in overload resolution
|
||||
|
||||
fun
|
||||
|
||||
ex1_Text, ex2_Text, ex3_Text, ex4_Text, ex5_Text, ex6_Text, ex7_Text,
|
||||
ex8_Text : Text ;
|
||||
|
||||
ex1_Phr, ex2_Phr, ex3_Phr, ex4_Phr, ex5_Phr, ex6_Phr : Phr ;
|
||||
|
||||
ex1_PConj : PConj ;
|
||||
|
||||
ex1_Voc : Voc ;
|
||||
|
||||
ex1_Utt, ex2_Utt, ex3_Utt, ex4_Utt, ex5_Utt, ex6_Utt, ex7_Utt, ex8_Utt, ex8_Utt,
|
||||
ex9_Utt, ex10_Utt, ex11_Utt : Utt ;
|
||||
|
||||
ex1_S, ex2_S, ex3_S, ex4_S, ex5_S, ex6_S, ex7_S : S ;
|
||||
|
||||
ex1_Cl, ex2_Cl, ex3_Cl, ex4_Cl, ex5_Cl, ex6_Cl, ex7_Cl, ex8_Cl, ex9_Cl, ex10_Cl,
|
||||
ex11_Cl, ex12_Cl, ex13_Cl, ex14_Cl, ex15_Cl, ex16_Cl, ex17_Cl, ex18_Cl, ex19_Cl,
|
||||
ex20_Cl, ex21_Cl, ex22_Cl, ex23_Cl, ex24_Cl, ex25_Cl : Cl ;
|
||||
|
||||
ex1_VP, ex2_VP, ex3_VP, ex4_VP, ex5_VP, ex6_VP, ex7_VP, ex8_VP, ex9_VP, ex10_VP,
|
||||
ex11_VP, ex12_VP, ex13_VP, ex14_VP, ex15_VP, ex16_VP, ex17_VP, ex18_VP, ex19_VP,
|
||||
ex20_VP, ex21_VP, ex22_VP : VP ;
|
||||
|
||||
ex1_NP, ex2_NP, ex3_NP, ex4_NP, ex5_NP, ex6_NP, ex7_NP, ex8_NP, ex9_NP, ex10_NP,
|
||||
ex11_NP, ex12_NP, ex13_NP, ex14_NP, ex15_NP, ex16_NP, ex17_NP, ex18_NP, ex19_NP,
|
||||
ex20_NP, ex21_NP, ex22_NP, ex23_NP : NP ;
|
||||
|
||||
ex1_Det, ex2_Det, ex3_Det, ex4_Det, ex5_Det, ex6_Det, ex7_Det, ex8_Det, ex9_Det,
|
||||
ex10_Det, ex11_Det, ex12_Det, ex13_Det, ex14_Det : Det ;
|
||||
|
||||
ex1_Quant, ex2_Quant : Quant ;
|
||||
|
||||
ex1_QuantSg, ex2_QuantSg : QuantSg ;
|
||||
|
||||
ex1_QuantPl : QuantPl ;
|
||||
|
||||
ex1_Num, ex2_Num, ex3_Num : Num ;
|
||||
|
||||
ex1_Ord, ex2_Ord, ex3_Ord : Ord ;
|
||||
|
||||
ex1_AdN : AdN ;
|
||||
|
||||
ex1_Numeral, ex2_Numeral, ex3_Numeral, ex4_Numeral, ex5_Numeral,
|
||||
ex6_Numeral, ex7_Numeral, ex8_Numeral, ex9_Numeral,
|
||||
ex10_Numeral, ex11_Numeral, ex12_Numeral, ex13_Numeral : Numeral ;
|
||||
|
||||
ex1_CN, ex2_CN, ex3_CN, ex4_CN, ex5_CN, ex6_CN, ex7_CN, ex8_CN, ex9_CN, ex10_CN,
|
||||
ex11_CN, ex12_CN, ex13_CN, ex14_CN, ex15_CN, ex16_CN, ex17_CN, ex18_CN : CN ;
|
||||
|
||||
ex1_AP, ex2_AP, ex3_AP, ex4_AP, ex5_AP, ex6_AP, ex7_AP, ex8_AP, ex9_AP, ex10_AP,
|
||||
ex11_AP, ex12_AP, ex13_AP : AP ;
|
||||
|
||||
ex1_Adv, ex2_Adv, ex3_Adv, ex4_Adv, ex5_Adv, ex6_Adv, ex7_Adv, ex8_Adv,
|
||||
ex9_Adv, ex10_Adv : Adv ;
|
||||
|
||||
ex1_QS, ex2_QS, ex3_QS : QS ;
|
||||
|
||||
ex1_QCl, ex2_QCl, ex3_QCl, ex4_QCl, ex5_QCl, ex6_QCl, ex7_QCl, ex8_QCl : QCl ;
|
||||
|
||||
ex1_IP, ex2_IP, ex3_IP : IP ;
|
||||
|
||||
ex1_IAdv : IAdv ;
|
||||
|
||||
ex1_RS, ex2_RS : RS ;
|
||||
|
||||
ex1_RCl, ex2_RCl, ex3_RCl, ex4_RCl : RCl ;
|
||||
|
||||
ex1_RP, ex2_RP : RP ;
|
||||
|
||||
ex1_Slash, ex2_Slash, ex3_Slash, ex4_Slash : Slash ;
|
||||
|
||||
ex1_ListS, ex2_ListS : ListS ;
|
||||
|
||||
ex1_ListAdv, ex2_ListAdv : ListAdv ;
|
||||
|
||||
ex1_ListAP, ex2_ListAP : ListAP ;
|
||||
|
||||
ex1_ListNP, ex2_ListNP : ListNP ;
|
||||
|
||||
|
||||
-- auxiliary to show VP's
|
||||
|
||||
utt : VP -> Utt ;
|
||||
|
||||
}
|
||||
7
lib/resource/api/examples/ExxEng.gf
Normal file
7
lib/resource/api/examples/ExxEng.gf
Normal file
@@ -0,0 +1,7 @@
|
||||
--# -path=.:..:alltenses:prelude
|
||||
|
||||
concrete ExxEng of Exx = CatEng-[VP], ConjunctionEng-[VP] ** ExxI with
|
||||
(Lang = LangEng),
|
||||
(Constructors = ConstructorsEng) ;
|
||||
|
||||
|
||||
7
lib/resource/api/examples/ExxFin.gf
Normal file
7
lib/resource/api/examples/ExxFin.gf
Normal file
@@ -0,0 +1,7 @@
|
||||
--# -path=.:..:alltenses:prelude
|
||||
|
||||
concrete ExxFin of Exx = CatFin-[VP], ConjunctionFin-[VP] ** ExxI with
|
||||
(Lang = LangFin),
|
||||
(Constructors = ConstructorsFin) ;
|
||||
|
||||
|
||||
7
lib/resource/api/examples/ExxFre.gf
Normal file
7
lib/resource/api/examples/ExxFre.gf
Normal file
@@ -0,0 +1,7 @@
|
||||
--# -path=.:..:alltenses:prelude
|
||||
|
||||
concrete ExxFre of Exx = CatFre-[VP], ConjunctionFre-[VP] ** ExxI with
|
||||
(Lang = LangFre),
|
||||
(Constructors = ConstructorsFre) ;
|
||||
|
||||
|
||||
7
lib/resource/api/examples/ExxGer.gf
Normal file
7
lib/resource/api/examples/ExxGer.gf
Normal file
@@ -0,0 +1,7 @@
|
||||
--# -path=.:..:alltenses:prelude
|
||||
|
||||
concrete ExxGer of Exx = CatGer-[VP], ConjunctionGer-[VP] ** ExxI with
|
||||
(Lang = LangGer),
|
||||
(Constructors = ConstructorsGer) ;
|
||||
|
||||
|
||||
275
lib/resource/api/examples/ExxI.gf
Normal file
275
lib/resource/api/examples/ExxI.gf
Normal file
@@ -0,0 +1,275 @@
|
||||
incomplete concrete ExxI of Exx = Cat-[VP], Conjunction-[VP] **
|
||||
open Lang, Constructors in {
|
||||
|
||||
-- examples for Constructors.
|
||||
|
||||
lincat VP = Lang.VP ; --- hack to circumvent missing lockfields in overload resolution
|
||||
|
||||
lin
|
||||
ex1_Text = mkText (mkPhr but_PConj (mkUtt (mkCl john_NP walk_V))) ;
|
||||
ex2_Text = mkText (mkPhr (mkCl john_NP walk_V)) questMarkPunct (mkText yes_Phr) ;
|
||||
ex3_Text = mkText (mkUtt john_NP) ;
|
||||
ex4_Text = mkText (mkS pastTense (mkCl john_NP walk_V)) ;
|
||||
ex5_Text = mkText (mkCl john_NP walk_V) ;
|
||||
ex6_Text = mkText (mkQS pastTense (mkQCl (mkCl john_NP walk_V))) ;
|
||||
ex7_Text = mkText (mkImp walk_V) ;
|
||||
ex8_Text = emptyText ;
|
||||
|
||||
ex1_Phr = mkPhr (mkUtt why_IAdv) ;
|
||||
ex2_Phr = mkPhr but_PConj (mkUtt why_IAdv) (mkVoc john_NP) ;
|
||||
ex3_Phr = mkPhr (mkS pastTense (mkCl john_NP walk_V)) ;
|
||||
ex4_Phr = mkPhr (mkCl john_NP walk_V) ;
|
||||
ex5_Phr = mkPhr (mkQS pastTense (mkQCl (mkCl john_NP walk_V))) ;
|
||||
ex6_Phr = mkPhr (mkImp walk_V) ;
|
||||
|
||||
ex1_PConj = mkPConj and_Conj ;
|
||||
|
||||
ex1_Voc = mkVoc john_NP ;
|
||||
|
||||
ex1_Utt = mkUtt (mkS pastTense (mkCl john_NP walk_V)) ;
|
||||
ex2_Utt = mkUtt (mkCl john_NP walk_V) ;
|
||||
ex3_Utt = mkUtt (mkQS pastTense (mkQCl (mkCl john_NP walk_V))) ;
|
||||
ex4_Utt = mkUtt (mkImp walk_V) ;
|
||||
ex5_Utt = mkUtt pluralImpForm negativePol (mkImp (reflexiveVP love_V2)) ;
|
||||
ex6_Utt = mkUtt whoSg_IP ;
|
||||
ex7_Utt = mkUtt why_IAdv ;
|
||||
ex8_Utt = mkUtt john_NP ;
|
||||
ex9_Utt = mkUtt here_Adv ;
|
||||
ex10_Utt = mkUtt (mkVP walk_V) ;
|
||||
ex11_Utt = lets_Utt (mkVP walk_V) ;
|
||||
|
||||
ex1_S = mkS (mkCl john_NP walk_V) ;
|
||||
ex2_S = mkS conditionalTense anteriorAnt negativePol (mkCl john_NP walk_V) ;
|
||||
ex3_S = mkS and_Conj (mkS (mkCl john_NP walk_V)) (mkS (mkCl (mkNP i_Pron) run_V)) ;
|
||||
ex4_S = mkS and_Conj (mkListS (mkS (mkCl john_NP walk_V)) (mkListS (mkS (mkCl (mkNP i_Pron) run_V)) (mkS (mkCl (mkNP youSg_Pron) sleep_V)))) ;
|
||||
ex5_S = mkS either7or_DConj (mkS (mkCl john_NP walk_V)) (mkS (mkCl (mkNP i_Pron) run_V)) ;
|
||||
ex6_S = mkS either7or_DConj (mkListS (mkS (mkCl john_NP walk_V)) (mkListS (mkS (mkCl (mkNP i_Pron) run_V)) (mkS (mkCl (mkNP youSg_Pron) sleep_V)))) ;
|
||||
ex7_S = mkS today_Adv (mkS futureTense (mkCl john_NP walk_V)) ;
|
||||
|
||||
ex1_Cl = mkCl john_NP walk_V ;
|
||||
ex2_Cl = mkCl john_NP love_V2 (mkNP she_Pron) ;
|
||||
ex3_Cl = mkCl john_NP send_V3 (mkNP it_Pron) (mkNP she_Pron) ;
|
||||
ex4_Cl = mkCl john_NP want_VV (mkVP walk_V) ;
|
||||
ex5_Cl = mkCl john_NP say_VS (mkS (mkCl (mkNP it_Pron) good_A)) ;
|
||||
ex6_Cl = mkCl john_NP wonder_VQ (mkQS (mkCl (mkNP it_Pron) good_A)) ;
|
||||
ex7_Cl = mkCl john_NP become_VA (mkAP old_A) ;
|
||||
ex8_Cl = mkCl john_NP paint_V2A (mkNP it_Pron) (mkAP red_A) ;
|
||||
ex9_Cl = mkCl john_NP old_A ;
|
||||
ex10_Cl = mkCl john_NP old_A (mkNP she_Pron) ;
|
||||
ex11_Cl = mkCl john_NP married_A2 (mkNP she_Pron) ;
|
||||
ex12_Cl = mkCl john_NP (mkAP very_AdA (mkAP old_A)) ;
|
||||
ex13_Cl = mkCl john_NP man_N ;
|
||||
ex14_Cl = mkCl john_NP (mkCN old_A man_N) ;
|
||||
ex15_Cl = mkCl john_NP (mkNP defSgDet man_N) ;
|
||||
ex16_Cl = mkCl john_NP here_Adv ;
|
||||
ex17_Cl = mkCl john_NP (mkVP (mkVP walk_V) here_Adv) ;
|
||||
ex18_Cl = mkCl rain_V0 ;
|
||||
ex19_Cl = mkCl (progressiveVP (mkVP rain_V0)) ;
|
||||
ex20_Cl = mkCl house_N ;
|
||||
ex21_Cl = mkCl (mkCN old_A house_N) ;
|
||||
ex22_Cl = mkCl (mkNP n5_Numeral house_N) ;
|
||||
ex23_Cl = mkCl john_NP (mkRS (mkRCl which_RP (mkVP walk_V))) ;
|
||||
ex24_Cl = mkCl here_Adv (mkS (mkCl john_NP walk_V)) ;
|
||||
ex25_Cl = mkCl (mkVP walk_V) ;
|
||||
|
||||
ex1_VP = mkVP walk_V ;
|
||||
ex2_VP = mkVP love_V2 (mkNP she_Pron) ;
|
||||
ex3_VP = mkVP send_V3 (mkNP it_Pron) (mkNP she_Pron) ;
|
||||
ex4_VP = mkVP want_VV (mkVP walk_V) ;
|
||||
ex5_VP = mkVP say_VS (mkS (mkCl (mkNP it_Pron) good_A)) ;
|
||||
ex6_VP = mkVP wonder_VQ (mkQS (mkCl (mkNP it_Pron) good_A)) ;
|
||||
ex7_VP = mkVP become_VA (mkAP old_A) ;
|
||||
ex8_VP = mkVP paint_V2A (mkNP it_Pron) (mkAP red_A) ;
|
||||
|
||||
ex9_VP = mkVP old_A ;
|
||||
ex10_VP = mkVP old_A (mkNP she_Pron) ;
|
||||
ex11_VP = mkVP married_A2 (mkNP she_Pron) ;
|
||||
ex12_VP = mkVP (mkAP very_AdA (mkAP old_A)) ;
|
||||
|
||||
ex13_VP = mkVP man_N ;
|
||||
ex14_VP = mkVP (mkCN old_A man_N) ;
|
||||
ex15_VP = mkVP (mkNP defSgDet man_N) ;
|
||||
ex16_VP = mkVP here_Adv ;
|
||||
ex17_VP = mkVP (mkVP sleep_V) here_Adv ;
|
||||
ex18_VP = mkVP always_AdV (mkVP sleep_V) ;
|
||||
ex19_VP = reflexiveVP love_V2 ;
|
||||
ex20_VP = passiveVP love_V2 ;
|
||||
ex21_VP = passiveVP love_V2 (mkNP she_Pron) ;
|
||||
ex22_VP = progressiveVP (mkVP sleep_V) ;
|
||||
|
||||
ex1_NP = mkNP (mkDet (mkQuantSg defQuant) first_Ord) man_N ;
|
||||
ex2_NP = mkNP (mkDet (mkQuantSg defQuant) first_Ord) (mkCN old_A man_N) ;
|
||||
ex3_NP = mkNP (mkQuantSg this_Quant) man_N ;
|
||||
ex4_NP = mkNP (mkQuantSg this_Quant) (mkCN old_A man_N) ;
|
||||
ex5_NP = mkNP (mkQuantPl this_Quant) man_N ;
|
||||
ex6_NP = mkNP (mkQuantPl this_Quant) (mkCN old_A man_N) ;
|
||||
ex7_NP = mkNP n20_Numeral man_N ;
|
||||
ex8_NP = mkNP n20_Numeral (mkCN old_A man_N) ;
|
||||
--- ex9_NP = mkNP (mkInt "45") man_N ;
|
||||
--- ex10_NP = mkNP (mkInt "45") (mkCN old_A man_N) ;
|
||||
ex11_NP = mkNP (mkNum almost_AdN (mkNum n20_Numeral)) man_N ;
|
||||
ex12_NP = mkNP (mkNum almost_AdN (mkNum n20_Numeral)) (mkCN old_A man_N) ;
|
||||
ex13_NP = mkNP i_Pron man_N ;
|
||||
ex14_NP = mkNP i_Pron (mkCN old_A man_N) ;
|
||||
ex15_NP = mkNP john_PN ;
|
||||
ex16_NP = mkNP i_Pron ;
|
||||
ex17_NP = mkNP only_Predet john_NP ;
|
||||
ex18_NP = mkNP john_NP kill_V2 ;
|
||||
ex19_NP = mkNP john_NP (mkAdv in_Prep (mkNP paris_PN)) ;
|
||||
ex20_NP = mkNP and_Conj john_NP (mkNP i_Pron) ;
|
||||
ex21_NP = mkNP and_Conj (mkListNP john_NP (mkListNP (mkNP i_Pron) that_NP)) ;
|
||||
ex22_NP = mkNP either7or_DConj john_NP (mkNP i_Pron) ;
|
||||
ex23_NP = mkNP either7or_DConj (mkListNP john_NP (mkListNP (mkNP i_Pron) that_NP)) ;
|
||||
|
||||
ex1_Det = mkDet (mkQuantSg this_Quant) ;
|
||||
ex2_Det = mkDet (mkQuantSg this_Quant) first_Ord ;
|
||||
ex3_Det = mkDet (mkQuantPl this_Quant) ;
|
||||
ex4_Det = mkDet (mkQuantPl this_Quant) (mkNum n5_Numeral) (mkOrd good_A) ;
|
||||
ex5_Det = mkDet this_Quant ;
|
||||
ex6_Det = mkDet this_Quant (mkNum n5_Numeral) ;
|
||||
ex7_Det = mkDet (mkNum almost_AdN (mkNum n20_Numeral)) ;
|
||||
ex8_Det = mkDet n5_Numeral ;
|
||||
--- ex9_Det = mkDet 51 ;
|
||||
ex10_Det = mkDet i_Pron ;
|
||||
ex11_Det = defSgDet ;
|
||||
ex12_Det = defPlDet ;
|
||||
ex13_Det = indefSgDet ;
|
||||
ex14_Det = indefPlDet ;
|
||||
|
||||
ex1_Quant = defQuant ;
|
||||
ex2_Quant = indefQuant ;
|
||||
|
||||
ex1_QuantSg = mkQuantSg this_Quant ;
|
||||
ex2_QuantSg = massQuant ;
|
||||
|
||||
ex1_QuantPl = mkQuantPl this_Quant ;
|
||||
|
||||
|
||||
ex1_Num = mkNum n20_Numeral ;
|
||||
--- ex2_Num = mkNum 51 ;
|
||||
ex3_Num = mkNum almost_AdN (mkNum n10_Numeral) ;
|
||||
|
||||
ex1_Ord = mkOrd n20_Numeral ;
|
||||
--- ex2_Ord = mkOrd 51 ;
|
||||
ex3_Ord = mkOrd good_A ;
|
||||
|
||||
ex1_AdN = mkAdN more_CAdv ;
|
||||
|
||||
ex1_Numeral = n1_Numeral ;
|
||||
ex2_Numeral = n2_Numeral ;
|
||||
ex3_Numeral = n3_Numeral ;
|
||||
ex4_Numeral = n4_Numeral ;
|
||||
ex5_Numeral = n5_Numeral ;
|
||||
ex6_Numeral = n6_Numeral ;
|
||||
ex7_Numeral = n7_Numeral ;
|
||||
ex8_Numeral = n8_Numeral ;
|
||||
ex9_Numeral = n9_Numeral ;
|
||||
ex10_Numeral = n10_Numeral ;
|
||||
ex11_Numeral = n20_Numeral ;
|
||||
ex12_Numeral = n100_Numeral ;
|
||||
ex13_Numeral = n1000_Numeral ;
|
||||
|
||||
ex1_CN = mkCN house_N ;
|
||||
ex2_CN = mkCN mother_N2 john_NP ;
|
||||
ex3_CN = mkCN distance_N3 (mkNP (mkDet this_Quant) city_N) (mkNP paris_PN) ;
|
||||
ex4_CN = mkCN mother_N2 ;
|
||||
ex5_CN = mkCN distance_N3 ;
|
||||
ex6_CN = mkCN big_A house_N ;
|
||||
ex7_CN = mkCN big_A (mkCN blue_A house_N) ;
|
||||
ex8_CN = mkCN (mkAP very_AdA big_A) house_N ;
|
||||
ex9_CN = mkCN (mkAP very_AdA big_A) (mkCN blue_A house_N) ;
|
||||
ex10_CN = mkCN house_N (mkRS (mkRCl which_RP john_NP love_V2)) ;
|
||||
ex11_CN = mkCN (mkCN big_A house_N) (mkRS (mkRCl which_RP john_NP love_V2)) ;
|
||||
ex12_CN = mkCN house_N (mkAdv in_Prep (mkNP defSgDet city_N)) ;
|
||||
ex13_CN = mkCN (mkCN big_A house_N) (mkAdv in_Prep (mkNP defSgDet city_N)) ;
|
||||
ex14_CN = mkCN (mkCN rule_N) (mkS (mkCl john_NP walk_V)) ;
|
||||
ex15_CN = mkCN (mkCN question_N) (mkQS (mkCl john_NP walk_V)) ;
|
||||
ex16_CN = mkCN (mkCN reason_N) (mkVP walk_V) ;
|
||||
ex17_CN = mkCN king_N john_NP ;
|
||||
ex18_CN = mkCN (mkCN old_A king_N) john_NP ;
|
||||
|
||||
ex1_AP = mkAP old_A ;
|
||||
ex2_AP = mkAP old_A john_NP ;
|
||||
ex3_AP = mkAP married_A2 (mkNP she_Pron) ;
|
||||
ex4_AP = mkAP married_A2 ;
|
||||
ex5_AP = mkAP (mkAP probable_AS) (mkS (mkCl john_NP walk_V)) ;
|
||||
ex6_AP = mkAP (mkAP uncertain_A) (mkQS (mkCl john_NP walk_V)) ;
|
||||
ex7_AP = mkAP (mkAP ready_A) (mkVP walk_V) ;
|
||||
ex8_AP = mkAP very_AdA old_A ;
|
||||
ex9_AP = mkAP very_AdA (mkAP very_AdA old_A) ;
|
||||
ex10_AP = mkAP and_Conj (mkAP old_A) (mkAP big_A) ;
|
||||
ex11_AP = mkAP and_Conj (mkListAP (mkAP old_A) (mkListAP (mkAP big_A) (mkAP warm_A)));
|
||||
ex12_AP = mkAP either7or_DConj (mkAP old_A) (mkAP big_A) ;
|
||||
ex13_AP = mkAP either7or_DConj (mkListAP (mkAP old_A) (mkListAP (mkAP big_A) (mkAP warm_A)));
|
||||
|
||||
|
||||
ex1_Adv = mkAdv warm_A ;
|
||||
ex2_Adv = mkAdv with_Prep john_NP ;
|
||||
ex3_Adv = mkAdv when_Subj (mkS (mkCl john_NP walk_V)) ;
|
||||
ex4_Adv = mkAdv more_CAdv warm_A john_NP ;
|
||||
ex5_Adv = mkAdv more_CAdv warm_A (mkS (mkCl john_NP walk_V)) ;
|
||||
ex6_Adv = mkAdv very_AdA (mkAdv warm_A) ;
|
||||
ex7_Adv = mkAdv and_Conj here_Adv now_Adv ;
|
||||
ex8_Adv = mkAdv and_Conj (mkListAdv (mkAdv with_Prep john_NP) (mkListAdv here_Adv now_Adv)) ;
|
||||
ex9_Adv = mkAdv either7or_DConj here_Adv now_Adv ;
|
||||
ex10_Adv = mkAdv either7or_DConj (mkListAdv (mkAdv with_Prep john_NP) (mkListAdv here_Adv now_Adv)) ;
|
||||
|
||||
|
||||
|
||||
ex1_QS = mkQS (mkQCl whoSg_IP (mkVP walk_V)) ;
|
||||
ex2_QS = mkQS conditionalTense anteriorAnt negativePol (mkQCl whoSg_IP (mkVP walk_V)) ;
|
||||
ex3_QS = mkQS (mkCl john_NP walk_V) ;
|
||||
|
||||
ex1_QCl = mkQCl (mkCl john_NP walk_V) ;
|
||||
ex2_QCl = mkQCl whoSg_IP (mkVP walk_V) ;
|
||||
ex3_QCl = mkQCl whoSg_IP john_NP love_V2 ;
|
||||
ex4_QCl = mkQCl whoSg_IP (mkSlash (mkSlash john_NP love_V2) today_Adv) ;
|
||||
ex5_QCl = mkQCl why_IAdv (mkCl john_NP walk_V) ;
|
||||
ex6_QCl = mkQCl with_Prep whoSg_IP (mkCl john_NP walk_V) ;
|
||||
ex7_QCl = mkQCl where_IAdv john_NP ;
|
||||
ex8_QCl = mkQCl whatSg_IP ;
|
||||
|
||||
ex1_IP = mkIP whichSg_IDet city_N ;
|
||||
ex2_IP = mkIP whichPl_IDet (mkNum n5_Numeral) (mkOrd good_A) (mkCN city_N) ;
|
||||
ex3_IP = mkIP whoSg_IP (mkAdv in_Prep (mkNP paris_PN)) ;
|
||||
|
||||
ex1_IAdv = mkIAdv in_Prep (mkIP whichSg_IDet city_N) ;
|
||||
|
||||
|
||||
ex1_RS = mkRS (mkRCl which_RP (mkVP walk_V)) ;
|
||||
ex2_RS = mkRS conditionalTense anteriorAnt negativePol (mkRCl which_RP (mkVP walk_V)) ;
|
||||
|
||||
ex1_RCl = mkRCl which_RP (mkVP walk_V) ;
|
||||
ex2_RCl = mkRCl which_RP john_NP love_V2 ;
|
||||
ex3_RCl = mkRCl which_RP (mkSlash (mkSlash john_NP love_V2) today_Adv) ;
|
||||
ex4_RCl = mkRCl (mkCl john_NP love_V2 (mkNP she_Pron)) ;
|
||||
|
||||
ex1_RP = which_RP ;
|
||||
ex2_RP = mkRP in_Prep (mkNP all_Predet (mkNP defPlDet house_N)) which_RP ;
|
||||
|
||||
ex1_Slash = mkSlash john_NP love_V2 ;
|
||||
ex2_Slash = mkSlash john_NP want_VV see_V2 ;
|
||||
ex3_Slash = mkSlash (mkCl john_NP walk_V) with_Prep ;
|
||||
ex4_Slash = mkSlash (mkSlash john_NP love_V2) today_Adv ;
|
||||
|
||||
|
||||
ex1_ListS = mkListS (mkS (mkCl john_NP walk_V)) (mkS (mkCl (mkNP i_Pron) run_V)) ;
|
||||
ex2_ListS = mkListS (mkS (mkCl john_NP walk_V)) (mkListS (mkS (mkCl (mkNP i_Pron) run_V)) (mkS (mkCl (mkNP youSg_Pron) sleep_V))) ;
|
||||
|
||||
ex1_ListAP = mkListAP (mkAP old_A) (mkAP big_A) ;
|
||||
ex2_ListAP = mkListAP (mkAP old_A) (mkListAP (mkAP big_A) (mkAP warm_A)) ;
|
||||
|
||||
ex1_ListAdv = mkListAdv here_Adv now_Adv ;
|
||||
ex2_ListAdv = mkListAdv (mkAdv with_Prep john_NP) (mkListAdv here_Adv now_Adv) ;
|
||||
|
||||
ex1_ListNP = mkListNP john_NP (mkNP i_Pron) ;
|
||||
ex2_ListNP = mkListNP john_NP (mkListNP (mkNP i_Pron) that_NP) ;
|
||||
|
||||
|
||||
|
||||
utt u = mkUtt u ; -- a hack to linearize VPs
|
||||
|
||||
oper
|
||||
|
||||
john_NP = mkNP john_PN ;
|
||||
}
|
||||
7
lib/resource/api/examples/ExxSwe.gf
Normal file
7
lib/resource/api/examples/ExxSwe.gf
Normal file
@@ -0,0 +1,7 @@
|
||||
--# -path=.:..:alltenses:prelude
|
||||
|
||||
concrete ExxSwe of Exx = CatSwe-[VP], ConjunctionSwe-[VP] ** ExxI with
|
||||
(Lang = LangSwe),
|
||||
(Constructors = ConstructorsSwe) ;
|
||||
|
||||
|
||||
18
lib/resource/api/examples/Makefile
Normal file
18
lib/resource/api/examples/Makefile
Normal file
@@ -0,0 +1,18 @@
|
||||
all: html gfs exx links
|
||||
|
||||
links:
|
||||
runghc MkLinks
|
||||
|
||||
gfs:
|
||||
runghc mkgfs.hs
|
||||
|
||||
exx:
|
||||
gf exxs.gfcm <exx.gfs
|
||||
|
||||
gfcm:
|
||||
echo "pm | wf exxs.gfcm" | gf ExxSwe.gf ExxGer.gf ExxFin.gf ExxEng.gf
|
||||
#ExxFre takes too long
|
||||
|
||||
html:
|
||||
cp ../Constructors.gf .
|
||||
gfdoc -txthtml Constructors.gf
|
||||
22
lib/resource/api/examples/MkLinks.hs
Normal file
22
lib/resource/api/examples/MkLinks.hs
Normal file
@@ -0,0 +1,22 @@
|
||||
import Char (isDigit)
|
||||
|
||||
src = "Constructors.html"
|
||||
tgt = "Cons.html"
|
||||
linkfile ex = "links/" ++ ex ++ ".txt"
|
||||
|
||||
|
||||
main = do
|
||||
writeFile tgt ""
|
||||
readFile src >>= (mapM_ mkLink . lines)
|
||||
|
||||
mkLink line = case break (=="--") (words (takeWhile (/='#')line)) of
|
||||
(fun : ":" : typ, _ : num : ex) | isDigit (head num) ->
|
||||
appendFile tgt ("\n" ++ takeInit line ++ " " ++ link ex typ num)
|
||||
_ -> appendFile tgt ("\n" ++ line)
|
||||
where
|
||||
takeInit line = init (init (takeWhile (/='.') line))
|
||||
link ex typ num =
|
||||
"<a href=\"" ++ linkfile (example typ num) ++ "\">" ++ unwords ex ++ "</a>"
|
||||
example typ num = case reverse typ of
|
||||
";":val:_ -> "ex" ++ init num ++ "_" ++ val
|
||||
val:_ -> "ex" ++ init num ++ "_" ++ val
|
||||
24
lib/resource/api/examples/mkgfs.hs
Normal file
24
lib/resource/api/examples/mkgfs.hs
Normal file
@@ -0,0 +1,24 @@
|
||||
-- to process constructor examples to lin commans
|
||||
|
||||
main = mkgfs
|
||||
|
||||
src = "ExxI.gf"
|
||||
script = "exx.gfs"
|
||||
linkfile ex = "links/" ++ ex ++ ".txt"
|
||||
|
||||
mkgfs = do
|
||||
writeFile script ""
|
||||
readFile src >>= (mapM addLin . lines)
|
||||
|
||||
|
||||
addLin s = case words s of
|
||||
c@('e':'x':_):"=":def -> do
|
||||
appendFile script ("ps \"" ++ unwords (init def) ++ "\\n\\n\" | wf " ++ linkfile c ++ "\n")
|
||||
appendFile script ("l -multi " ++ cc ++ " | af " ++ linkfile c ++ "\n")
|
||||
|
||||
where
|
||||
cc = case take 2 (reverse c) of
|
||||
"PV" -> "utt " ++ c
|
||||
_ -> c
|
||||
_ -> return ()
|
||||
|
||||
3
lib/resource/api/forthcoming/ConstructorsAra.gf
Normal file
3
lib/resource/api/forthcoming/ConstructorsAra.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource ConstructorsAra = Constructors with (Grammar = GrammarAra) ;
|
||||
3
lib/resource/api/forthcoming/ConstructorsCat.gf
Normal file
3
lib/resource/api/forthcoming/ConstructorsCat.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource ConstructorsCat = Constructors with (Grammar = GrammarCat) ;
|
||||
4
lib/resource/api/forthcoming/SyntaxAra.gf
Normal file
4
lib/resource/api/forthcoming/SyntaxAra.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
instance SyntaxAra of Syntax = ConstructorsAra, CatAra, StructuralAra, NumeralAra ;
|
||||
|
||||
4
lib/resource/api/forthcoming/SyntaxCat.gf
Normal file
4
lib/resource/api/forthcoming/SyntaxCat.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
instance SyntaxCat of Syntax = ConstructorsCat, CatCat, StructuralCat, NumeralCat ;
|
||||
|
||||
66
lib/resource/api/todoConstructors.txt
Normal file
66
lib/resource/api/todoConstructors.txt
Normal file
@@ -0,0 +1,66 @@
|
||||
-- how to arrange and extend these
|
||||
|
||||
def_Det : Det ; -- the (man)
|
||||
indef_Det : Det ; -- a (man)
|
||||
mass_Det : Det ; -- (water)
|
||||
|
||||
|
||||
------------------------------------------
|
||||
--- strange cats:
|
||||
|
||||
Slash
|
||||
mkQCl : IP -> Slash -> QCl ; -- who does John love
|
||||
mkRCl : RP -> Slash -> RCl -- whom John loves
|
||||
mkSlash : Slash -> Adv -> Slash ; -- (whom) he sees tomorrow
|
||||
|
||||
VP?
|
||||
-- appears in 9 places, of which 2 are recursive
|
||||
|
||||
-- Comp: already eliminated
|
||||
|
||||
-- DConj /= Conj ?
|
||||
|
||||
--------------------------------------------
|
||||
--- granted special cases
|
||||
|
||||
Text - Phr - Utt
|
||||
|
||||
S - Cl -- Tense Ant Pol
|
||||
QS - QCl
|
||||
RS - RCl
|
||||
|
||||
VP - V | V2 NP | V3 NP NP ...
|
||||
|
||||
NP - PN | Pron
|
||||
|
||||
CN - N
|
||||
|
||||
AP - A
|
||||
|
||||
Det - Num | Int | Digit
|
||||
|
||||
Num - Numeral | Digit | Int
|
||||
|
||||
ListX - X X
|
||||
|
||||
--------
|
||||
|
||||
open ResourceX, ParadigmsX in ...
|
||||
|
||||
ResourceX = ConstructorsX, StructuralX, CatX
|
||||
|
||||
|
||||
--------------------
|
||||
|
||||
-- to be left out of coverage:
|
||||
-- Verb: coercions
|
||||
UseVQ : VQ -> V2 ; -- ask (a question)
|
||||
UseVS : VS -> V2 ; -- know (a secret)
|
||||
-- Adjective: strange rule, not covered
|
||||
UseA2 : A2 -> A ; -- divisible
|
||||
|
||||
|
||||
|
||||
-- mkIComp
|
||||
CompIAdv : IAdv -> IComp ; -- where
|
||||
|
||||
48
lib/resource/api/toplevel/FromOverload.hs
Normal file
48
lib/resource/api/toplevel/FromOverload.hs
Normal file
@@ -0,0 +1,48 @@
|
||||
import Monad
|
||||
|
||||
main = do
|
||||
ss <- readFile src >>= return . map words . lines
|
||||
writeFile abstr "abstract OverGrammar = Structural,Numeral,Conjunction[ListS,ListNP,ListAP,ListAdv] ** {\n"
|
||||
appendFile abstr "cat ImpForm ; Punct ;\n"
|
||||
writeFile concr "concrete OverGrammarEng of OverGrammar = StructuralEng,NumeralEng,ConjunctionEng[ListS,ListNP,ListAP,ListAdv] ** open GrammarEng in {\n"
|
||||
mapM_ (appendFile concr) [
|
||||
"lincat ImpForm = {p : PImpForm ; s : Str} ;\n",
|
||||
"lincat Punct = {p : PPunct ; s : Str} ;\n",
|
||||
"param PImpForm = IFSg | IFPl | IFPol ;\n",
|
||||
"param PPunct = PFullStop | PExclMark | PQuestMark ;\n",
|
||||
"oper mkUttImp : PImpForm -> Str -> Pol -> Imp -> Utt = \\f,s,p,i -> {s = s ++ (case f of {\n",
|
||||
" IFSg => UttImpSg p i ; IFPl => UttImpPl p i ; IFPol => UttImpPol p i}).s ; lock_Utt = <>} ;\n",
|
||||
"oper mkPhrPunct : Phr -> PPunct -> Str -> Text -> Text = \\p,f,s,t -> {s = s ++ (case f of {\n",
|
||||
" PFullStop => TFullStop p t ; PExclMark => TExclMark p t ; PQuestMark => TQuestMark p t}).s ;\n",
|
||||
" lock_Text = <>} ;\n"
|
||||
]
|
||||
|
||||
foldM process ("",0) ss
|
||||
appendFile abstr "}\n"
|
||||
appendFile concr "}\n"
|
||||
return ()
|
||||
|
||||
src = "constr.gf"
|
||||
abstr = "OverGrammar.gf"
|
||||
concr = "OverGrammarEng.gf"
|
||||
|
||||
|
||||
process env@(mk,count) line = case line of
|
||||
('-':'-':_) : _ -> return env
|
||||
_:rest | elem "=" rest && notElem "overload" rest -> do
|
||||
let (fun,lin) = span (/="=") line
|
||||
env2 <- process env fun
|
||||
process env2 lin
|
||||
mk1 : ":" : typ -> do
|
||||
let mk2 = withCount count mk1
|
||||
put abstr $ "fun" : mk2 : ":" : takeWhile (/="--") typ ++ [";\n"]
|
||||
return $ (mk2,count)
|
||||
"=" : trm -> do
|
||||
put concr $ "lin" : mk : "=" : takeWhile (/=";") trm ++ [";\n"]
|
||||
return $ (mk,count + 1)
|
||||
_ -> return env
|
||||
|
||||
put file ws = appendFile file $ unwords ws
|
||||
|
||||
withCount count mk = "ovrld" ++ show count ++ "_" ++ mk
|
||||
|
||||
274
lib/resource/api/toplevel/OverGrammar.gf
Normal file
274
lib/resource/api/toplevel/OverGrammar.gf
Normal file
@@ -0,0 +1,274 @@
|
||||
abstract OverGrammar = Structural,Numeral,Conjunction[ListS,ListNP,ListAP,ListAdv] ** {
|
||||
cat ImpForm ; Punct ;
|
||||
fun ovrld0_mkAP : A -> AP ;
|
||||
fun ovrld1_mkAP : A -> NP -> AP ;
|
||||
fun ovrld2_mkAP : A2 -> NP -> AP ;
|
||||
fun ovrld3_mkAP : A2 -> AP ;
|
||||
fun ovrld4_mkAP : AP -> S -> AP ;
|
||||
fun ovrld5_mkAP : AP -> QS -> AP ;
|
||||
fun ovrld6_mkAP : AP -> VP -> AP ;
|
||||
fun ovrld7_mkAP : AdA -> A -> AP ;
|
||||
fun ovrld8_mkAP : AdA -> AP -> AP ;
|
||||
fun ovrld9_mkAP : Conj -> AP -> AP -> AP ;
|
||||
fun ovrld10_mkAP : DConj -> AP -> AP -> AP ;
|
||||
fun ovrld11_mkAP : Conj -> ListAP -> AP ;
|
||||
fun ovrld12_mkAP : DConj -> ListAP -> AP ;
|
||||
fun ovrld13_mkAdv : A -> Adv ;
|
||||
fun ovrld14_mkAdv : Prep -> NP -> Adv ;
|
||||
fun ovrld15_mkAdv : CAdv -> A -> NP -> Adv ;
|
||||
fun ovrld16_mkAdv : CAdv -> A -> S -> Adv ;
|
||||
fun ovrld17_mkAdv : AdA -> Adv -> Adv ;
|
||||
fun ovrld18_mkAdv : Subj -> S -> Adv ;
|
||||
fun ovrld19_mkAdv : Conj -> Adv -> Adv -> Adv ;
|
||||
fun ovrld20_mkAdv : DConj -> Adv -> Adv -> Adv ;
|
||||
fun ovrld21_mkAdv : Conj -> ListAdv -> Adv ;
|
||||
fun ovrld22_mkAdv : DConj -> ListAdv -> Adv ;
|
||||
fun ovrld23_mkCl : NP -> VP -> Cl ;
|
||||
fun ovrld24_mkCl : NP -> V -> Cl ;
|
||||
fun ovrld25_mkCl : NP -> V2 -> NP -> Cl ;
|
||||
fun ovrld26_mkCl : NP -> V3 -> NP -> NP -> Cl ;
|
||||
fun ovrld27_mkCl : NP -> VV -> VP -> Cl ;
|
||||
fun ovrld28_mkCl : NP -> VS -> S -> Cl ;
|
||||
fun ovrld29_mkCl : NP -> VQ -> QS -> Cl ;
|
||||
fun ovrld30_mkCl : NP -> VA -> AP -> Cl ;
|
||||
fun ovrld31_mkCl : NP -> V2A ->NP -> AP -> Cl ;
|
||||
fun ovrld32_mkCl : VP -> Cl ;
|
||||
fun ovrld33_mkCl : NP -> RS -> Cl ;
|
||||
fun ovrld34_mkCl : Adv -> S -> Cl ;
|
||||
fun ovrld35_mkCl : N -> Cl ;
|
||||
fun ovrld36_mkCl : CN -> Cl ;
|
||||
fun ovrld37_mkCl : NP -> Cl ;
|
||||
fun ovrld38_mkCl : NP -> AP -> Cl ;
|
||||
fun ovrld39_mkCl : NP -> A -> Cl ;
|
||||
fun ovrld40_mkCl : NP -> A -> NP -> Cl ;
|
||||
fun ovrld41_mkCl : NP -> A2 -> NP -> Cl ;
|
||||
fun ovrld42_mkCl : NP -> NP -> Cl ;
|
||||
fun ovrld43_mkCl : NP -> CN -> Cl ;
|
||||
fun ovrld44_mkCl : NP -> N -> Cl ;
|
||||
fun ovrld45_mkCl : NP -> Adv -> Cl ;
|
||||
fun ovrld46_mkCl : V -> Cl ;
|
||||
fun ovrld47_genericCl : VP -> Cl ;
|
||||
fun ovrld48_mkNP : Det -> CN -> NP ;
|
||||
fun ovrld49_mkNP : Det -> N -> NP ;
|
||||
fun ovrld50_mkNP : Num -> CN -> NP ;
|
||||
fun ovrld51_mkNP : Num -> N -> NP ;
|
||||
fun ovrld52_mkNP : QuantSg -> CN -> NP ;
|
||||
fun ovrld53_mkNP : QuantSg -> N -> NP ;
|
||||
fun ovrld54_mkNP : QuantPl -> CN -> NP ;
|
||||
fun ovrld55_mkNP : QuantPl -> N -> NP ;
|
||||
fun ovrld56_mkNP : Pron -> CN -> NP ;
|
||||
fun ovrld57_mkNP : Pron -> N -> NP ;
|
||||
fun ovrld58_mkNP : Numeral -> CN -> NP ;
|
||||
fun ovrld59_mkNP : Numeral -> N -> NP ;
|
||||
fun ovrld60_mkNP : Int -> CN -> NP ;
|
||||
fun ovrld61_mkNP : Int -> N -> NP ;
|
||||
fun ovrld62_mkNP : PN -> NP ;
|
||||
fun ovrld63_mkNP : Pron -> NP ;
|
||||
fun ovrld64_mkNP : Predet -> NP -> NP ;
|
||||
fun ovrld65_mkNP : NP -> V2 -> NP ;
|
||||
fun ovrld66_mkNP : NP -> Adv -> NP ;
|
||||
fun ovrld67_mkNP : Conj -> NP -> NP -> NP ;
|
||||
fun ovrld68_mkNP : DConj -> NP -> NP -> NP ;
|
||||
fun ovrld69_mkNP : Conj -> ListNP -> NP ;
|
||||
fun ovrld70_mkNP : DConj -> ListNP -> NP ;
|
||||
fun ovrld71_mkDet : QuantSg -> Ord -> Det ;
|
||||
fun ovrld72_mkDet : QuantSg -> Det ;
|
||||
fun ovrld73_mkDet : QuantPl -> Num -> Ord -> Det ;
|
||||
fun ovrld74_mkDet : QuantPl -> Det ;
|
||||
fun ovrld75_mkDet : Quant -> Det ;
|
||||
fun ovrld76_mkDet : Quant -> Num -> Det ;
|
||||
fun ovrld77_mkDet : Num -> Det ;
|
||||
fun ovrld78_mkDet : Int -> Det ;
|
||||
fun ovrld79_mkDet : Numeral -> Det ;
|
||||
fun ovrld80_mkDet : Pron -> Det ;
|
||||
fun ovrld81_defSgDet : Det ;
|
||||
fun ovrld82_defPlDet : Det ;
|
||||
fun ovrld83_indefSgDet : Det ;
|
||||
fun ovrld84_indefPlDet : Det ;
|
||||
fun ovrld85_mkQuantSg : Quant -> QuantSg ;
|
||||
fun ovrld86_mkQuantPl : Quant -> QuantPl ;
|
||||
fun ovrld87_defQuant : Quant ;
|
||||
fun ovrld88_indefQuant : Quant ;
|
||||
fun ovrld89_massQuant : QuantSg ;
|
||||
fun ovrld90_mkNum : Numeral -> Num ;
|
||||
fun ovrld91_mkNum : Int -> Num ;
|
||||
fun ovrld92_mkNum : Digit -> Num ;
|
||||
fun ovrld93_mkNum : AdN -> Num -> Num ;
|
||||
fun ovrld94_noNum : Num ;
|
||||
fun ovrld95_n1_Numeral : Numeral ;
|
||||
fun ovrld96_n2_Numeral : Numeral ;
|
||||
fun ovrld97_n3_Numeral : Numeral ;
|
||||
fun ovrld98_n4_Numeral : Numeral ;
|
||||
fun ovrld99_n5_Numeral : Numeral ;
|
||||
fun ovrld100_n6_Numeral : Numeral ;
|
||||
fun ovrld101_n7_Numeral : Numeral ;
|
||||
fun ovrld102_n8_Numeral : Numeral ;
|
||||
fun ovrld103_n9_Numeral : Numeral ;
|
||||
fun ovrld104_n10_Numeral : Numeral ;
|
||||
fun ovrld105_n20_Numeral : Numeral ;
|
||||
fun ovrld106_n100_Numeral : Numeral ;
|
||||
fun ovrld107_n1000_Numeral : Numeral ;
|
||||
fun ovrld108_mkAdN : CAdv -> AdN ;
|
||||
fun ovrld109_mkOrd : Numeral -> Ord ;
|
||||
fun ovrld110_mkOrd : Int -> Ord ;
|
||||
fun ovrld111_mkOrd : Digit -> Ord ;
|
||||
fun ovrld112_mkOrd : A -> Ord ;
|
||||
fun ovrld113_noOrd : Ord ;
|
||||
fun ovrld114_mkCN : N -> CN ;
|
||||
fun ovrld115_mkCN : N2 -> NP -> CN ;
|
||||
fun ovrld116_mkCN : N3 -> NP -> NP -> CN ;
|
||||
fun ovrld117_mkCN : N2 -> CN ;
|
||||
fun ovrld118_mkCN : N3 -> CN ;
|
||||
fun ovrld119_mkCN : AP -> CN -> CN ;
|
||||
fun ovrld120_mkCN : AP -> N -> CN ;
|
||||
fun ovrld121_mkCN : CN -> AP -> CN ;
|
||||
fun ovrld122_mkCN : N -> AP -> CN ;
|
||||
fun ovrld123_mkCN : A -> CN -> CN ;
|
||||
fun ovrld124_mkCN : A -> N -> CN ;
|
||||
fun ovrld125_mkCN : CN -> RS -> CN ;
|
||||
fun ovrld126_mkCN : N -> RS -> CN ;
|
||||
fun ovrld127_mkCN : CN -> Adv -> CN ;
|
||||
fun ovrld128_mkCN : N -> Adv -> CN ;
|
||||
fun ovrld129_mkCN : CN -> S -> CN ;
|
||||
fun ovrld130_mkCN : CN -> QS -> CN ;
|
||||
fun ovrld131_mkCN : CN -> VP -> CN ;
|
||||
fun ovrld132_mkCN : CN -> NP -> CN ;
|
||||
fun ovrld133_mkCN : N -> NP -> CN ;
|
||||
fun ovrld134_mkPhr : PConj -> Utt -> Voc -> Phr ;
|
||||
fun ovrld135_mkPhr : Utt -> Voc -> Phr ;
|
||||
fun ovrld136_mkPhr : PConj -> Utt -> Phr ;
|
||||
fun ovrld137_mkPhr : Utt -> Phr ;
|
||||
fun ovrld138_mkPhr : S -> Phr ;
|
||||
fun ovrld139_mkPhr : Cl -> Phr ;
|
||||
fun ovrld140_mkPhr : QS -> Phr ;
|
||||
fun ovrld141_mkPhr : Imp -> Phr ;
|
||||
fun ovrld142_mkPConj : Conj -> PConj ;
|
||||
fun ovrld143_noPConj : PConj ;
|
||||
fun ovrld144_mkVoc : NP -> Voc ;
|
||||
fun ovrld145_noVoc : Voc ;
|
||||
fun ovrld146_positivePol : Pol ;
|
||||
fun ovrld147_negativePol : Pol ;
|
||||
fun ovrld148_simultaneousAnt : Ant ;
|
||||
fun ovrld149_anteriorAnt : Ant ;
|
||||
fun ovrld150_presentTense : Tense ;
|
||||
fun ovrld151_pastTense : Tense ;
|
||||
fun ovrld152_futureTense : Tense ;
|
||||
fun ovrld153_conditionalTense : Tense ;
|
||||
fun ovrld154_singularImpForm : ImpForm ;
|
||||
fun ovrld155_pluralImpForm : ImpForm ;
|
||||
fun ovrld156_politeImpForm : ImpForm ;
|
||||
fun ovrld157_mkUtt : S -> Utt ;
|
||||
fun ovrld158_mkUtt : Cl -> Utt ;
|
||||
fun ovrld159_mkUtt : QS -> Utt ;
|
||||
fun ovrld160_mkUtt : ImpForm -> Pol -> Imp -> Utt ;
|
||||
fun ovrld161_mkUtt : ImpForm -> Imp -> Utt ;
|
||||
fun ovrld162_mkUtt : Pol -> Imp -> Utt ;
|
||||
fun ovrld163_mkUtt : Imp -> Utt ;
|
||||
fun ovrld164_mkUtt : IP -> Utt ;
|
||||
fun ovrld165_mkUtt : IAdv -> Utt ;
|
||||
fun ovrld166_mkUtt : NP -> Utt ;
|
||||
fun ovrld167_mkUtt : Adv -> Utt ;
|
||||
fun ovrld168_mkUtt : VP -> Utt ;
|
||||
fun ovrld169_lets_Utt : VP -> Utt ;
|
||||
fun ovrld170_mkQCl : Cl -> QCl ;
|
||||
fun ovrld171_mkQCl : IP -> VP -> QCl ;
|
||||
fun ovrld172_mkQCl : IP -> Slash -> QCl ;
|
||||
fun ovrld173_mkQCl : IP -> NP -> V2 -> QCl ;
|
||||
fun ovrld174_mkQCl : IAdv -> Cl -> QCl ;
|
||||
fun ovrld175_mkQCl : Prep -> IP -> Cl -> QCl ;
|
||||
fun ovrld176_mkQCl : IAdv -> NP -> QCl ;
|
||||
fun ovrld177_mkQCl : IP -> QCl ;
|
||||
fun ovrld178_mkIP : IDet -> Num -> Ord -> CN -> IP ;
|
||||
fun ovrld179_mkIP : IDet -> Ord -> CN -> IP ;
|
||||
fun ovrld180_mkIP : IDet -> Num -> CN -> IP ;
|
||||
fun ovrld181_mkIP : IDet -> N -> IP ;
|
||||
fun ovrld182_mkIP : IP -> Adv -> IP ;
|
||||
fun ovrld183_mkIAdv : Prep -> IP -> IAdv ;
|
||||
fun ovrld184_mkRCl : Cl -> RCl ;
|
||||
fun ovrld185_mkRCl : RP -> VP -> RCl ;
|
||||
fun ovrld186_mkRCl : RP -> Slash -> RCl ;
|
||||
fun ovrld187_mkRCl : RP -> NP -> V2 -> RCl ;
|
||||
fun ovrld188_which_RP : RP ;
|
||||
fun ovrld189_mkRP : Prep -> NP -> RP -> RP ;
|
||||
fun ovrld190_mkSlash : NP -> V2 -> Slash ;
|
||||
fun ovrld191_mkSlash : NP -> VV -> V2 -> Slash ;
|
||||
fun ovrld192_mkSlash : Slash -> Adv -> Slash ;
|
||||
fun ovrld193_mkSlash : Cl -> Prep -> Slash ;
|
||||
fun ovrld194_mkImp : VP -> Imp ;
|
||||
fun ovrld195_mkImp : V -> Imp ;
|
||||
fun ovrld196_mkImp : V2 -> NP -> Imp ;
|
||||
fun ovrld197_mkS : Cl -> S ;
|
||||
fun ovrld198_mkS : Tense -> Cl -> S ;
|
||||
fun ovrld199_mkS : Ant -> Cl -> S ;
|
||||
fun ovrld200_mkS : Pol -> Cl -> S ;
|
||||
fun ovrld201_mkS : Tense -> Ant -> Cl -> S ;
|
||||
fun ovrld202_mkS : Tense -> Pol -> Cl -> S ;
|
||||
fun ovrld203_mkS : Ant -> Pol -> Cl -> S ;
|
||||
fun ovrld204_mkS : Tense -> Ant -> Pol -> Cl -> S ;
|
||||
fun ovrld205_mkS : Conj -> S -> S -> S ;
|
||||
fun ovrld206_mkS : DConj -> S -> S -> S ;
|
||||
fun ovrld207_mkS : Conj -> ListS -> S ;
|
||||
fun ovrld208_mkS : DConj -> ListS -> S ;
|
||||
fun ovrld209_mkS : Adv -> S -> S ;
|
||||
fun ovrld210_mkQS : QCl -> QS ;
|
||||
fun ovrld211_mkQS : Tense -> QCl -> QS ;
|
||||
fun ovrld212_mkQS : Ant -> QCl -> QS ;
|
||||
fun ovrld213_mkQS : Pol -> QCl -> QS ;
|
||||
fun ovrld214_mkQS : Tense -> Ant -> QCl -> QS ;
|
||||
fun ovrld215_mkQS : Tense -> Pol -> QCl -> QS ;
|
||||
fun ovrld216_mkQS : Ant -> Pol -> QCl -> QS ;
|
||||
fun ovrld217_mkQS : Tense -> Ant -> Pol -> QCl -> QS ;
|
||||
fun ovrld218_mkQS : Cl -> QS ;
|
||||
fun ovrld219_mkRS : RCl -> RS ;
|
||||
fun ovrld220_mkRS : Tense -> RCl -> RS ;
|
||||
fun ovrld221_mkRS : Ant -> RCl -> RS ;
|
||||
fun ovrld222_mkRS : Pol -> RCl -> RS ;
|
||||
fun ovrld223_mkRS : Tense -> Ant -> RCl -> RS ;
|
||||
fun ovrld224_mkRS : Tense -> Pol -> RCl -> RS ;
|
||||
fun ovrld225_mkRS : Ant -> Pol -> RCl -> RS ;
|
||||
fun ovrld226_mkRS : Tense -> Ant -> Pol -> RCl -> RS ;
|
||||
fun ovrld227_emptyText : Text ;
|
||||
fun ovrld228_fullStopPunct : Punct ;
|
||||
fun ovrld229_questMarkPunct : Punct ;
|
||||
fun ovrld230_exclMarkPunct : Punct ;
|
||||
fun ovrld231_mkText : Phr -> Punct -> Text -> Text ;
|
||||
fun ovrld232_mkText : Phr -> Punct -> Text ;
|
||||
fun ovrld233_mkText : Phr -> Text ;
|
||||
fun ovrld234_mkText : Utt -> Text ;
|
||||
fun ovrld235_mkText : S -> Text ;
|
||||
fun ovrld236_mkText : Cl -> Text ;
|
||||
fun ovrld237_mkText : QS -> Text ;
|
||||
fun ovrld238_mkText : Imp -> Text ;
|
||||
fun ovrld239_mkText : Pol -> Imp -> Text ;
|
||||
fun ovrld240_mkText : Phr -> Text -> Text ;
|
||||
fun ovrld241_mkVP : V -> VP ;
|
||||
fun ovrld242_mkVP : V2 -> NP -> VP ;
|
||||
fun ovrld243_mkVP : V3 -> NP -> NP -> VP ;
|
||||
fun ovrld244_mkVP : VV -> VP -> VP ;
|
||||
fun ovrld245_mkVP : VS -> S -> VP ;
|
||||
fun ovrld246_mkVP : VQ -> QS -> VP ;
|
||||
fun ovrld247_mkVP : VA -> AP -> VP ;
|
||||
fun ovrld248_mkVP : V2A -> NP -> AP -> VP ;
|
||||
fun ovrld249_mkVP : A -> VP ;
|
||||
fun ovrld250_mkVP : A -> NP -> VP ;
|
||||
fun ovrld251_mkVP : A2 -> NP -> VP ;
|
||||
fun ovrld252_mkVP : AP -> VP ;
|
||||
fun ovrld253_mkVP : NP -> VP ;
|
||||
fun ovrld254_mkVP : CN -> VP ;
|
||||
fun ovrld255_mkVP : N -> VP ;
|
||||
fun ovrld256_mkVP : Adv -> VP ;
|
||||
fun ovrld257_mkVP : VP -> Adv -> VP ;
|
||||
fun ovrld258_mkVP : AdV -> VP -> VP ;
|
||||
fun ovrld259_reflexiveVP : V2 -> VP ;
|
||||
fun ovrld260_passiveVP : V2 -> VP ;
|
||||
fun ovrld261_passiveVP : V2 -> NP -> VP ;
|
||||
fun ovrld262_progressiveVP : VP -> VP ;
|
||||
fun ovrld263_mkListS : S -> S -> ListS ;
|
||||
fun ovrld264_mkListS : S -> ListS -> ListS ;
|
||||
fun ovrld265_mkListAP : AP -> AP -> ListAP ;
|
||||
fun ovrld266_mkListAP : AP -> ListAP -> ListAP ;
|
||||
fun ovrld267_mkListAdv : Adv -> Adv -> ListAdv ;
|
||||
fun ovrld268_mkListAdv : Adv -> ListAdv -> ListAdv ;
|
||||
fun ovrld269_mkListNP : NP -> NP -> ListNP ;
|
||||
fun ovrld270_mkListNP : NP -> ListNP -> ListNP ;
|
||||
}
|
||||
282
lib/resource/api/toplevel/OverGrammarEng.gf
Normal file
282
lib/resource/api/toplevel/OverGrammarEng.gf
Normal file
@@ -0,0 +1,282 @@
|
||||
concrete OverGrammarEng of OverGrammar = StructuralEng,NumeralEng,ConjunctionEng[ListS,ListNP,ListAP,ListAdv] ** open GrammarEng in {
|
||||
lincat ImpForm = {p : PImpForm ; s : Str} ;
|
||||
lincat Punct = {p : PPunct ; s : Str} ;
|
||||
param PImpForm = IFSg | IFPl | IFPol ;
|
||||
param PPunct = PFullStop | PExclMark | PQuestMark ;
|
||||
oper mkUttImp : PImpForm -> Str -> Pol -> Imp -> Utt = \f,s,p,i -> {s = s ++ (case f of {
|
||||
IFSg => UttImpSg p i ; IFPl => UttImpPl p i ; IFPol => UttImpPol p i}).s ; lock_Utt = <>} ;
|
||||
oper mkPhrPunct : Phr -> PPunct -> Str -> Text -> Text = \p,f,s,t -> {s = s ++ (case f of {
|
||||
PFullStop => TFullStop p t ; PExclMark => TExclMark p t ; PQuestMark => TQuestMark p t}).s ;
|
||||
lock_Text = <>} ;
|
||||
lin ovrld0_mkAP = PositA ;
|
||||
lin ovrld1_mkAP = ComparA ;
|
||||
lin ovrld2_mkAP = ComplA2 ;
|
||||
lin ovrld3_mkAP = ReflA2 ;
|
||||
lin ovrld4_mkAP = \ap,s -> SentAP ap (EmbedS s) ;
|
||||
lin ovrld5_mkAP = \ap,s -> SentAP ap (EmbedQS s) ;
|
||||
lin ovrld6_mkAP = \ap,s -> SentAP ap (EmbedVP s) ;
|
||||
lin ovrld7_mkAP = \x,y -> AdAP x (PositA y) ;
|
||||
lin ovrld8_mkAP = AdAP ;
|
||||
lin ovrld9_mkAP = \c,x,y -> ConjAP c (BaseAP x y) ;
|
||||
lin ovrld10_mkAP = \c,x,y -> DConjAP c (BaseAP x y) ;
|
||||
lin ovrld11_mkAP = \c,xy -> ConjAP c xy ;
|
||||
lin ovrld12_mkAP = \c,xy -> DConjAP c xy ;
|
||||
lin ovrld13_mkAdv = PositAdvAdj ;
|
||||
lin ovrld14_mkAdv = PrepNP ;
|
||||
lin ovrld15_mkAdv = ComparAdvAdj ;
|
||||
lin ovrld16_mkAdv = ComparAdvAdjS ;
|
||||
lin ovrld17_mkAdv = AdAdv ;
|
||||
lin ovrld18_mkAdv = SubjS ;
|
||||
lin ovrld19_mkAdv = \c,x,y -> ConjAdv c (BaseAdv x y) ;
|
||||
lin ovrld20_mkAdv = \c,x,y -> DConjAdv c (BaseAdv x y) ;
|
||||
lin ovrld21_mkAdv = \c,xy -> ConjAdv c xy ;
|
||||
lin ovrld22_mkAdv = \c,xy -> DConjAdv c xy ;
|
||||
lin ovrld23_mkCl = PredVP ;
|
||||
lin ovrld24_mkCl = \s,v -> PredVP s (UseV v) ;
|
||||
lin ovrld25_mkCl = \s,v,o -> PredVP s (ComplV2 v o) ;
|
||||
lin ovrld26_mkCl = \s,v,o,i -> PredVP s (ComplV3 v o i) ;
|
||||
lin ovrld27_mkCl = \s,v,vp -> PredVP s (ComplVV v vp) ;
|
||||
lin ovrld28_mkCl = \s,v,p -> PredVP s (ComplVS v p) ;
|
||||
lin ovrld29_mkCl = \s,v,q -> PredVP s (ComplVQ v q) ;
|
||||
lin ovrld30_mkCl = \s,v,q -> PredVP s (ComplVA v q) ;
|
||||
lin ovrld31_mkCl = \s,v,n,q -> PredVP s (ComplV2A v n q) ;
|
||||
lin ovrld32_mkCl = ImpersCl ;
|
||||
lin ovrld33_mkCl = CleftNP ;
|
||||
lin ovrld34_mkCl = CleftAdv ;
|
||||
lin ovrld35_mkCl = \y -> ExistNP (DetCN (DetSg (SgQuant IndefArt) NoOrd) (UseN y)) ;
|
||||
lin ovrld36_mkCl = \y -> ExistNP (DetCN (DetSg (SgQuant IndefArt) NoOrd) y) ;
|
||||
lin ovrld37_mkCl = ExistNP ;
|
||||
lin ovrld38_mkCl = \x,y -> PredVP x (UseComp (CompAP y)) ;
|
||||
lin ovrld39_mkCl = \x,y -> PredVP x (UseComp (CompAP (PositA y))) ;
|
||||
lin ovrld40_mkCl = \x,y,z -> PredVP x (UseComp (CompAP (ComparA y z))) ;
|
||||
lin ovrld41_mkCl = \x,y,z -> PredVP x (UseComp (CompAP (ComplA2 y z))) ;
|
||||
lin ovrld42_mkCl = \x,y -> PredVP x (UseComp (CompNP y)) ;
|
||||
lin ovrld43_mkCl = \x,y -> PredVP x (UseComp (CompNP (DetCN (DetSg (SgQuant IndefArt) NoOrd) y))) ;
|
||||
lin ovrld44_mkCl = \x,y -> PredVP x (UseComp (CompNP (DetCN (DetSg (SgQuant IndefArt) NoOrd) (UseN y)))) ;
|
||||
lin ovrld45_mkCl = \x,y -> PredVP x (UseComp (CompAdv y)) ;
|
||||
lin ovrld46_mkCl = \v -> ImpersCl (UseV v) ;
|
||||
lin ovrld47_genericCl = GenericCl ;
|
||||
lin ovrld48_mkNP = DetCN ;
|
||||
lin ovrld49_mkNP = \d,n -> DetCN d (UseN n) ;
|
||||
lin ovrld50_mkNP = \d,n -> DetCN (DetPl (PlQuant IndefArt) d NoOrd) n ;
|
||||
lin ovrld51_mkNP = \d,n -> DetCN (DetPl (PlQuant IndefArt) d NoOrd) (UseN n) ;
|
||||
lin ovrld52_mkNP = \q,n -> DetCN (DetSg q NoOrd) n ;
|
||||
lin ovrld53_mkNP = \q,n -> DetCN (DetSg q NoOrd) (UseN n) ;
|
||||
lin ovrld54_mkNP = \q,n -> DetCN (DetPl q NoNum NoOrd) n ;
|
||||
lin ovrld55_mkNP = \q,n -> DetCN (DetPl q NoNum NoOrd) (UseN n) ;
|
||||
lin ovrld56_mkNP = \p,n -> DetCN (DetSg (SgQuant (PossPron p)) NoOrd) n ;
|
||||
lin ovrld57_mkNP = \p,n -> DetCN (DetSg (SgQuant (PossPron p)) NoOrd) (UseN n) ;
|
||||
lin ovrld58_mkNP = \d,n -> DetCN (DetPl (PlQuant IndefArt) (NumNumeral d) NoOrd) n ;
|
||||
lin ovrld59_mkNP = \d,n -> DetCN (DetPl (PlQuant IndefArt) (NumNumeral d) NoOrd) (UseN n) ;
|
||||
lin ovrld60_mkNP = \d,n -> DetCN (DetPl (PlQuant IndefArt) (NumInt d) NoOrd) n ;
|
||||
lin ovrld61_mkNP = \d,n -> DetCN (DetPl (PlQuant IndefArt) (NumInt d) NoOrd) (UseN n) ;
|
||||
lin ovrld62_mkNP = UsePN ;
|
||||
lin ovrld63_mkNP = UsePron ;
|
||||
lin ovrld64_mkNP = PredetNP ;
|
||||
lin ovrld65_mkNP = PPartNP ;
|
||||
lin ovrld66_mkNP = AdvNP ;
|
||||
lin ovrld67_mkNP = \c,x,y -> ConjNP c (BaseNP x y) ;
|
||||
lin ovrld68_mkNP = \c,x,y -> DConjNP c (BaseNP x y) ;
|
||||
lin ovrld69_mkNP = \c,xy -> ConjNP c xy ;
|
||||
lin ovrld70_mkNP = \c,xy -> DConjNP c xy ;
|
||||
lin ovrld71_mkDet = DetSg ;
|
||||
lin ovrld72_mkDet = \q -> DetSg q NoOrd ;
|
||||
lin ovrld73_mkDet = DetPl ;
|
||||
lin ovrld74_mkDet = \q -> DetPl q NoNum NoOrd ;
|
||||
lin ovrld75_mkDet = \q -> DetSg (SgQuant q) NoOrd ;
|
||||
lin ovrld76_mkDet = \q,nu -> DetPl (PlQuant q) nu NoOrd ;
|
||||
lin ovrld77_mkDet = \n -> DetPl (PlQuant IndefArt) n NoOrd ;
|
||||
lin ovrld78_mkDet = \n -> DetPl (PlQuant IndefArt) (NumInt n) NoOrd ;
|
||||
lin ovrld79_mkDet = \d -> DetPl (PlQuant IndefArt) (NumNumeral d) NoOrd ;
|
||||
lin ovrld80_mkDet = \p -> DetSg (SgQuant (PossPron p)) NoOrd ;
|
||||
lin ovrld81_defSgDet = DetSg (SgQuant DefArt) NoOrd ;
|
||||
lin ovrld82_defPlDet = DetPl (PlQuant DefArt) NoNum NoOrd ;
|
||||
lin ovrld83_indefSgDet = DetSg (SgQuant IndefArt) NoOrd ;
|
||||
lin ovrld84_indefPlDet = DetPl (PlQuant IndefArt) NoNum NoOrd ;
|
||||
lin ovrld85_mkQuantSg = SgQuant ;
|
||||
lin ovrld86_mkQuantPl = PlQuant ;
|
||||
lin ovrld87_defQuant = DefArt ;
|
||||
lin ovrld88_indefQuant = IndefArt ;
|
||||
lin ovrld89_massQuant = MassDet ;
|
||||
lin ovrld90_mkNum = NumNumeral ;
|
||||
lin ovrld91_mkNum = NumInt ;
|
||||
lin ovrld92_mkNum = \d -> NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 d))))) ;
|
||||
lin ovrld93_mkNum = AdNum ;
|
||||
lin ovrld94_noNum = NoNum ;
|
||||
lin ovrld95_n1_Numeral = num (pot2as3 (pot1as2 (pot0as1 pot01))) ;
|
||||
lin ovrld96_n2_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n2)))) ;
|
||||
lin ovrld97_n3_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n3)))) ;
|
||||
lin ovrld98_n4_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n4)))) ;
|
||||
lin ovrld99_n5_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n5)))) ;
|
||||
lin ovrld100_n6_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n6)))) ;
|
||||
lin ovrld101_n7_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n7)))) ;
|
||||
lin ovrld102_n8_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n8)))) ;
|
||||
lin ovrld103_n9_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n9)))) ;
|
||||
lin ovrld104_n10_Numeral = num (pot2as3 (pot1as2 pot110)) ;
|
||||
lin ovrld105_n20_Numeral = num (pot2as3 (pot1as2 (pot1 n2))) ;
|
||||
lin ovrld106_n100_Numeral = num (pot2as3 (pot2 pot01)) ;
|
||||
lin ovrld107_n1000_Numeral = num (pot3 (pot1as2 (pot0as1 pot01))) ;
|
||||
lin ovrld108_mkAdN = AdnCAdv ;
|
||||
lin ovrld109_mkOrd = OrdNumeral ;
|
||||
lin ovrld110_mkOrd = OrdInt ;
|
||||
lin ovrld111_mkOrd = \d -> OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 d))))) ;
|
||||
lin ovrld112_mkOrd = OrdSuperl ;
|
||||
lin ovrld113_noOrd = NoOrd ;
|
||||
lin ovrld114_mkCN = UseN ;
|
||||
lin ovrld115_mkCN = ComplN2 ;
|
||||
lin ovrld116_mkCN = \f,x -> ComplN2 (ComplN3 f x) ;
|
||||
lin ovrld117_mkCN = UseN2 ;
|
||||
lin ovrld118_mkCN = UseN3 ;
|
||||
lin ovrld119_mkCN = AdjCN ;
|
||||
lin ovrld120_mkCN = \x,y -> AdjCN x (UseN y) ;
|
||||
lin ovrld121_mkCN = \x,y -> AdjCN y x ;
|
||||
lin ovrld122_mkCN = \x,y -> AdjCN y (UseN x) ;
|
||||
lin ovrld123_mkCN = \x,y -> AdjCN (PositA x) y ;
|
||||
lin ovrld124_mkCN = \x,y -> AdjCN (PositA x) (UseN y) ;
|
||||
lin ovrld125_mkCN = RelCN ;
|
||||
lin ovrld126_mkCN = \x,y -> RelCN (UseN x) y ;
|
||||
lin ovrld127_mkCN = AdvCN ;
|
||||
lin ovrld128_mkCN = \x,y -> AdvCN (UseN x) y ;
|
||||
lin ovrld129_mkCN = \cn,s -> SentCN cn (EmbedS s) ;
|
||||
lin ovrld130_mkCN = \cn,s -> SentCN cn (EmbedQS s) ;
|
||||
lin ovrld131_mkCN = \cn,s -> SentCN cn (EmbedVP s) ;
|
||||
lin ovrld132_mkCN = ApposCN ;
|
||||
lin ovrld133_mkCN = \x,y -> ApposCN (UseN x) y ;
|
||||
lin ovrld134_mkPhr = PhrUtt ;
|
||||
lin ovrld135_mkPhr = \u,v -> PhrUtt NoPConj u v ;
|
||||
lin ovrld136_mkPhr = \u,v -> PhrUtt u v NoVoc ;
|
||||
lin ovrld137_mkPhr = \u -> PhrUtt NoPConj u NoVoc ;
|
||||
lin ovrld138_mkPhr = \s -> PhrUtt NoPConj (UttS s) NoVoc ;
|
||||
lin ovrld139_mkPhr = \s -> PhrUtt NoPConj (UttS (UseCl TPres ASimul PPos s)) NoVoc ;
|
||||
lin ovrld140_mkPhr = \s -> PhrUtt NoPConj (UttQS s) NoVoc ;
|
||||
lin ovrld141_mkPhr = \s -> PhrUtt NoPConj (UttImpSg PPos s) NoVoc ;
|
||||
lin ovrld142_mkPConj = PConjConj ;
|
||||
lin ovrld143_noPConj = NoPConj ;
|
||||
lin ovrld144_mkVoc = VocNP ;
|
||||
lin ovrld145_noVoc = NoVoc ;
|
||||
lin ovrld146_positivePol = PPos ;
|
||||
lin ovrld147_negativePol = PNeg ;
|
||||
lin ovrld148_simultaneousAnt = ASimul ;
|
||||
lin ovrld149_anteriorAnt = AAnter ; --# notpresent
|
||||
lin ovrld150_presentTense = TPres ;
|
||||
lin ovrld151_pastTense = TPast ; --# notpresent
|
||||
lin ovrld152_futureTense = TFut ; --# notpresent
|
||||
lin ovrld153_conditionalTense = TCond ; --# notpresent
|
||||
lin ovrld154_singularImpForm = {p= IFSg; s= []} ;
|
||||
lin ovrld155_pluralImpForm = {p= IFPl; s= []} ;
|
||||
lin ovrld156_politeImpForm = {p= IFPol; s= []} ;
|
||||
lin ovrld157_mkUtt = UttS ;
|
||||
lin ovrld158_mkUtt = \c -> UttS (UseCl TPres ASimul PPos c) ;
|
||||
lin ovrld159_mkUtt = UttQS ;
|
||||
lin ovrld160_mkUtt = \f -> mkUttImp f.p f.s ;
|
||||
lin ovrld161_mkUtt = \f -> mkUttImp f.p f.s PPos ;
|
||||
lin ovrld162_mkUtt = UttImpSg ;
|
||||
lin ovrld163_mkUtt = UttImpSg PPos ;
|
||||
lin ovrld164_mkUtt = UttIP ;
|
||||
lin ovrld165_mkUtt = UttIAdv ;
|
||||
lin ovrld166_mkUtt = UttNP ;
|
||||
lin ovrld167_mkUtt = UttAdv ;
|
||||
lin ovrld168_mkUtt = UttVP ;
|
||||
lin ovrld169_lets_Utt = ImpPl1 ;
|
||||
lin ovrld170_mkQCl = QuestCl ;
|
||||
lin ovrld171_mkQCl = QuestVP ;
|
||||
lin ovrld172_mkQCl = QuestSlash ;
|
||||
lin ovrld173_mkQCl = \ip,np,v -> QuestSlash ip (SlashV2 np v) ;
|
||||
lin ovrld174_mkQCl = QuestIAdv ;
|
||||
lin ovrld175_mkQCl = \p,ip -> QuestIAdv (PrepIP p ip) ;
|
||||
lin ovrld176_mkQCl = \a -> QuestIComp (CompIAdv a) ;
|
||||
lin ovrld177_mkQCl = ExistIP ;
|
||||
lin ovrld178_mkIP = IDetCN ;
|
||||
lin ovrld179_mkIP = \i -> IDetCN i NoNum ;
|
||||
lin ovrld180_mkIP = \i,n -> IDetCN i n NoOrd ;
|
||||
lin ovrld181_mkIP = \i,n -> IDetCN i NoNum NoOrd (UseN n) ;
|
||||
lin ovrld182_mkIP = AdvIP ;
|
||||
lin ovrld183_mkIAdv = PrepIP ;
|
||||
lin ovrld184_mkRCl = RelCl ;
|
||||
lin ovrld185_mkRCl = RelVP ;
|
||||
lin ovrld186_mkRCl = RelSlash ;
|
||||
lin ovrld187_mkRCl = \rp,np,v2 -> RelSlash rp (SlashV2 np v2) ;
|
||||
lin ovrld188_which_RP = IdRP ;
|
||||
lin ovrld189_mkRP = FunRP ;
|
||||
lin ovrld190_mkSlash = SlashV2 ;
|
||||
lin ovrld191_mkSlash = SlashVVV2 ;
|
||||
lin ovrld192_mkSlash = AdvSlash ;
|
||||
lin ovrld193_mkSlash = SlashPrep ;
|
||||
lin ovrld194_mkImp = ImpVP ;
|
||||
lin ovrld195_mkImp = \v -> ImpVP (UseV v) ;
|
||||
lin ovrld196_mkImp = \v,np -> ImpVP (ComplV2 v np) ;
|
||||
lin ovrld197_mkS = UseCl TPres ASimul PPos ;
|
||||
lin ovrld198_mkS = \t -> UseCl t ASimul PPos ;
|
||||
lin ovrld199_mkS = \a -> UseCl TPres a PPos ;
|
||||
lin ovrld200_mkS = \p -> UseCl TPres ASimul p ;
|
||||
lin ovrld201_mkS = \t,a -> UseCl t a PPos ;
|
||||
lin ovrld202_mkS = \t,p -> UseCl t ASimul p ;
|
||||
lin ovrld203_mkS = \a,p -> UseCl TPres a p ;
|
||||
lin ovrld204_mkS = UseCl ;
|
||||
lin ovrld205_mkS = \c,x,y -> ConjS c (BaseS x y) ;
|
||||
lin ovrld206_mkS = \c,x,y -> DConjS c (BaseS x y) ;
|
||||
lin ovrld207_mkS = \c,xy -> ConjS c xy ;
|
||||
lin ovrld208_mkS = \c,xy -> DConjS c xy ;
|
||||
lin ovrld209_mkS = AdvS ;
|
||||
lin ovrld210_mkQS = UseQCl TPres ASimul PPos ;
|
||||
lin ovrld211_mkQS = \t -> UseQCl t ASimul PPos ;
|
||||
lin ovrld212_mkQS = \a -> UseQCl TPres a PPos ;
|
||||
lin ovrld213_mkQS = \p -> UseQCl TPres ASimul p ;
|
||||
lin ovrld214_mkQS = \t,a -> UseQCl t a PPos ;
|
||||
lin ovrld215_mkQS = \t,p -> UseQCl t ASimul p ;
|
||||
lin ovrld216_mkQS = \a,p -> UseQCl TPres a p ;
|
||||
lin ovrld217_mkQS = UseQCl ;
|
||||
lin ovrld218_mkQS = \x -> UseQCl TPres ASimul PPos (QuestCl x) ;
|
||||
lin ovrld219_mkRS = UseRCl TPres ASimul PPos ;
|
||||
lin ovrld220_mkRS = \t,c -> UseRCl t ASimul PPos c ;
|
||||
lin ovrld221_mkRS = \a,c -> UseRCl TPres a PPos c ;
|
||||
lin ovrld222_mkRS = \p,c -> UseRCl TPres ASimul p c ;
|
||||
lin ovrld223_mkRS = \t,a,c -> UseRCl t a PPos c ;
|
||||
lin ovrld224_mkRS = \t,p,c -> UseRCl t ASimul p c ;
|
||||
lin ovrld225_mkRS = \a,p,c -> UseRCl TPres a p c ;
|
||||
lin ovrld226_mkRS = UseRCl ;
|
||||
lin ovrld227_emptyText = TEmpty ;
|
||||
lin ovrld228_fullStopPunct = {p= PFullStop; s= []} ;
|
||||
lin ovrld229_questMarkPunct = {p= PQuestMark; s= []} ;
|
||||
lin ovrld230_exclMarkPunct = {p= PExclMark; s= []} ;
|
||||
lin ovrld231_mkText = \p,f -> mkPhrPunct p f.p f.s ;
|
||||
lin ovrld232_mkText = \p,f -> mkPhrPunct p f.p f.s TEmpty ;
|
||||
lin ovrld233_mkText = \x -> TFullStop x TEmpty ;
|
||||
lin ovrld234_mkText = \u -> TFullStop (PhrUtt NoPConj u NoVoc) TEmpty ;
|
||||
lin ovrld235_mkText = \s -> TFullStop (PhrUtt NoPConj (UttS s) NoVoc) TEmpty ;
|
||||
lin ovrld236_mkText = \c -> TFullStop (PhrUtt NoPConj (UttS (UseCl TPres ASimul PPos c)) NoVoc) TEmpty ;
|
||||
lin ovrld237_mkText = \q -> TQuestMark (PhrUtt NoPConj (UttQS q) NoVoc) TEmpty ;
|
||||
lin ovrld238_mkText = \i -> TExclMark (PhrUtt NoPConj (UttImpSg PPos i) NoVoc) TEmpty ;
|
||||
lin ovrld239_mkText = \p,i -> TExclMark (PhrUtt NoPConj (UttImpSg p i) NoVoc) TEmpty ;
|
||||
lin ovrld240_mkText = TFullStop ;
|
||||
lin ovrld241_mkVP = UseV ;
|
||||
lin ovrld242_mkVP = ComplV2 ;
|
||||
lin ovrld243_mkVP = ComplV3 ;
|
||||
lin ovrld244_mkVP = ComplVV ;
|
||||
lin ovrld245_mkVP = ComplVS ;
|
||||
lin ovrld246_mkVP = ComplVQ ;
|
||||
lin ovrld247_mkVP = ComplVA ;
|
||||
lin ovrld248_mkVP = ComplV2A ;
|
||||
lin ovrld249_mkVP = \a -> UseComp (CompAP (PositA a)) ;
|
||||
lin ovrld250_mkVP = \y,z -> (UseComp (CompAP (ComparA y z))) ;
|
||||
lin ovrld251_mkVP = \y,z -> (UseComp (CompAP (ComplA2 y z))) ;
|
||||
lin ovrld252_mkVP = \a -> UseComp (CompAP a) ;
|
||||
lin ovrld253_mkVP = \a -> UseComp (CompNP a) ;
|
||||
lin ovrld254_mkVP = \y -> (UseComp (CompNP (DetCN (DetSg (SgQuant IndefArt) NoOrd) y))) ;
|
||||
lin ovrld255_mkVP = \y -> (UseComp (CompNP (DetCN (DetSg (SgQuant IndefArt) NoOrd) (UseN y)))) ;
|
||||
lin ovrld256_mkVP = \a -> UseComp (CompAdv a) ;
|
||||
lin ovrld257_mkVP = AdvVP ;
|
||||
lin ovrld258_mkVP = AdVVP ;
|
||||
lin ovrld259_reflexiveVP = ReflV2 ;
|
||||
lin ovrld260_passiveVP = PassV2 ;
|
||||
lin ovrld261_passiveVP = \v,np -> (AdvVP (PassV2 v) (PrepNP by8agent_Prep np)) ;
|
||||
lin ovrld262_progressiveVP = ProgrVP ;
|
||||
lin ovrld263_mkListS = BaseS ;
|
||||
lin ovrld264_mkListS = ConsS ;
|
||||
lin ovrld265_mkListAP = BaseAP ;
|
||||
lin ovrld266_mkListAP = ConsAP ;
|
||||
lin ovrld267_mkListAdv = BaseAdv ;
|
||||
lin ovrld268_mkListAdv = ConsAdv ;
|
||||
lin ovrld269_mkListNP = BaseNP ;
|
||||
lin ovrld270_mkListNP = ConsNP ;
|
||||
}
|
||||
3
lib/resource/api/toplevel/OverLang.gf
Normal file
3
lib/resource/api/toplevel/OverLang.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
abstract OverLang =
|
||||
OverGrammar-[PPos,PNeg,TPres,TPast,TFut,TCond,ASimul,AAnter],
|
||||
Lexicon-[PPos,PNeg,TPres,TPast,TFut,TCond,ASimul,AAnter] ;
|
||||
5
lib/resource/api/toplevel/OverLangEng.gf
Normal file
5
lib/resource/api/toplevel/OverLangEng.gf
Normal file
@@ -0,0 +1,5 @@
|
||||
--# -path=alltenses:prelude
|
||||
|
||||
concrete OverLangEng of OverLang =
|
||||
OverGrammarEng-[PPos,PNeg,TPres,TPast,TFut,TCond,ASimul,AAnter],
|
||||
LexiconEng-[PPos,PNeg,TPres,TPast,TFut,TCond,ASimul,AAnter] ;
|
||||
15
lib/resource/api/toplevel/README
Normal file
15
lib/resource/api/toplevel/README
Normal file
@@ -0,0 +1,15 @@
|
||||
Parsing overloaded resource constructors.
|
||||
|
||||
AR 2/7/2007.
|
||||
|
||||
Do this way in gf:
|
||||
|
||||
> i OverLangEng.gf
|
||||
|
||||
> p -overload -cat=S "I loved her"
|
||||
|
||||
mkS pastTense (mkCl (mkNP i_Pron) love_V2 (mkNP she_Pron))
|
||||
|
||||
The program FromOverload.hs creates the files OverGrammar.gf and OverGrammarEng.gf
|
||||
from constr.gf (which in turn is the latter part of ../Constructors.gf).
|
||||
|
||||
618
lib/resource/api/toplevel/constr.gf
Normal file
618
lib/resource/api/toplevel/constr.gf
Normal file
@@ -0,0 +1,618 @@
|
||||
|
||||
mkAP = overload {
|
||||
mkAP : A -> AP -- warm
|
||||
= PositA ;
|
||||
mkAP : A -> NP -> AP -- warmer than Spain
|
||||
= ComparA ;
|
||||
mkAP : A2 -> NP -> AP -- divisible by 2
|
||||
= ComplA2 ;
|
||||
mkAP : A2 -> AP -- divisible by itself
|
||||
= ReflA2 ;
|
||||
mkAP : AP -> S -> AP -- great that she won
|
||||
= \ap,s -> SentAP ap (EmbedS s) ;
|
||||
mkAP : AP -> QS -> AP -- great that she won
|
||||
= \ap,s -> SentAP ap (EmbedQS s) ;
|
||||
mkAP : AP -> VP -> AP -- great that she won
|
||||
= \ap,s -> SentAP ap (EmbedVP s) ;
|
||||
mkAP : AdA -> A -> AP -- very uncertain
|
||||
= \x,y -> AdAP x (PositA y) ;
|
||||
mkAP : AdA -> AP -> AP -- very uncertain
|
||||
= AdAP ;
|
||||
mkAP : Conj -> AP -> AP -> AP
|
||||
= \c,x,y -> ConjAP c (BaseAP x y) ;
|
||||
mkAP : DConj -> AP -> AP -> AP
|
||||
= \c,x,y -> DConjAP c (BaseAP x y) ;
|
||||
mkAP : Conj -> ListAP -> AP
|
||||
= \c,xy -> ConjAP c xy ;
|
||||
mkAP : DConj -> ListAP -> AP
|
||||
= \c,xy -> DConjAP c xy
|
||||
|
||||
} ;
|
||||
|
||||
mkAdv = overload {
|
||||
mkAdv : A -> Adv -- quickly
|
||||
= PositAdvAdj ;
|
||||
mkAdv : Prep -> NP -> Adv -- in the house
|
||||
= PrepNP ;
|
||||
mkAdv : CAdv -> A -> NP -> Adv -- more quickly than John
|
||||
= ComparAdvAdj ;
|
||||
mkAdv : CAdv -> A -> S -> Adv -- more quickly than he runs
|
||||
= ComparAdvAdjS ;
|
||||
mkAdv : AdA -> Adv -> Adv -- very quickly
|
||||
= AdAdv ;
|
||||
mkAdv : Subj -> S -> Adv -- when he arrives
|
||||
= SubjS ;
|
||||
mkAdv : Conj -> Adv -> Adv -> Adv
|
||||
= \c,x,y -> ConjAdv c (BaseAdv x y) ;
|
||||
mkAdv : DConj -> Adv -> Adv -> Adv
|
||||
= \c,x,y -> DConjAdv c (BaseAdv x y) ;
|
||||
mkAdv : Conj -> ListAdv -> Adv
|
||||
= \c,xy -> ConjAdv c xy ;
|
||||
mkAdv : DConj -> ListAdv -> Adv
|
||||
= \c,xy -> DConjAdv c xy
|
||||
|
||||
} ;
|
||||
|
||||
mkCl = overload {
|
||||
mkCl : NP -> VP -> Cl -- John wants to walk walks
|
||||
= PredVP ;
|
||||
mkCl : NP -> V -> Cl -- John walks
|
||||
= \s,v -> PredVP s (UseV v) ;
|
||||
mkCl : NP -> V2 -> NP -> Cl -- John uses it
|
||||
= \s,v,o -> PredVP s (ComplV2 v o) ;
|
||||
mkCl : NP -> V3 -> NP -> NP -> Cl
|
||||
= \s,v,o,i -> PredVP s (ComplV3 v o i) ;
|
||||
|
||||
mkCl : NP -> VV -> VP -> Cl = \s,v,vp -> PredVP s (ComplVV v vp) ;
|
||||
mkCl : NP -> VS -> S -> Cl = \s,v,p -> PredVP s (ComplVS v p) ;
|
||||
mkCl : NP -> VQ -> QS -> Cl = \s,v,q -> PredVP s (ComplVQ v q) ;
|
||||
mkCl : NP -> VA -> AP -> Cl = \s,v,q -> PredVP s (ComplVA v q) ;
|
||||
mkCl : NP -> V2A ->NP -> AP -> Cl = \s,v,n,q -> PredVP s (ComplV2A v n q) ;
|
||||
|
||||
|
||||
|
||||
mkCl : VP -> Cl -- it rains
|
||||
= ImpersCl ;
|
||||
mkCl : NP -> RS -> Cl -- it is you who did it
|
||||
= CleftNP ;
|
||||
mkCl : Adv -> S -> Cl -- it is yesterday she arrived
|
||||
= CleftAdv ;
|
||||
mkCl : N -> Cl -- there is a house
|
||||
= \y -> ExistNP (DetCN (DetSg (SgQuant IndefArt) NoOrd) (UseN y)) ;
|
||||
mkCl : CN -> Cl -- there is a house
|
||||
= \y -> ExistNP (DetCN (DetSg (SgQuant IndefArt) NoOrd) y) ;
|
||||
mkCl : NP -> Cl -- there is a house
|
||||
= ExistNP ;
|
||||
mkCl : NP -> AP -> Cl -- John is nice and warm
|
||||
= \x,y -> PredVP x (UseComp (CompAP y)) ;
|
||||
mkCl : NP -> A -> Cl -- John is warm
|
||||
= \x,y -> PredVP x (UseComp (CompAP (PositA y))) ;
|
||||
mkCl : NP -> A -> NP -> Cl -- John is warmer than Mary
|
||||
= \x,y,z -> PredVP x (UseComp (CompAP (ComparA y z))) ;
|
||||
mkCl : NP -> A2 -> NP -> Cl -- John is married to Mary
|
||||
= \x,y,z -> PredVP x (UseComp (CompAP (ComplA2 y z))) ;
|
||||
mkCl : NP -> NP -> Cl -- John is the man
|
||||
= \x,y -> PredVP x (UseComp (CompNP y)) ;
|
||||
mkCl : NP -> CN -> Cl -- John is a man
|
||||
= \x,y -> PredVP x (UseComp (CompNP (DetCN (DetSg (SgQuant IndefArt) NoOrd) y))) ;
|
||||
mkCl : NP -> N -> Cl -- John is a man
|
||||
= \x,y -> PredVP x (UseComp (CompNP (DetCN (DetSg (SgQuant IndefArt) NoOrd) (UseN y)))) ;
|
||||
mkCl : NP -> Adv -> Cl -- John is here
|
||||
= \x,y -> PredVP x (UseComp (CompAdv y)) ;
|
||||
mkCl : V -> Cl -- it rains
|
||||
= \v -> ImpersCl (UseV v)
|
||||
} ;
|
||||
|
||||
genericCl : VP -> Cl = GenericCl ;
|
||||
|
||||
mkNP = overload {
|
||||
mkNP : Det -> CN -> NP -- the old man
|
||||
= DetCN ;
|
||||
mkNP : Det -> N -> NP -- the man
|
||||
= \d,n -> DetCN d (UseN n) ;
|
||||
mkNP : Num -> CN -> NP -- forty-five old men
|
||||
= \d,n -> DetCN (DetPl (PlQuant IndefArt) d NoOrd) n ;
|
||||
mkNP : Num -> N -> NP -- forty-five men
|
||||
= \d,n -> DetCN (DetPl (PlQuant IndefArt) d NoOrd) (UseN n) ;
|
||||
|
||||
mkNP : QuantSg -> CN -> NP = \q,n -> DetCN (DetSg q NoOrd) n ;
|
||||
mkNP : QuantSg -> N -> NP = \q,n -> DetCN (DetSg q NoOrd) (UseN n) ;
|
||||
mkNP : QuantPl -> CN -> NP = \q,n -> DetCN (DetPl q NoNum NoOrd) n ;
|
||||
mkNP : QuantPl -> N -> NP = \q,n -> DetCN (DetPl q NoNum NoOrd) (UseN n) ;
|
||||
|
||||
mkNP : Pron -> CN -> NP = \p,n -> DetCN (DetSg (SgQuant (PossPron p)) NoOrd) n ;
|
||||
mkNP : Pron -> N -> NP = \p,n -> DetCN (DetSg (SgQuant (PossPron p)) NoOrd) (UseN n) ;
|
||||
|
||||
mkNP : Numeral -> CN -> NP -- 51 old men
|
||||
= \d,n -> DetCN (DetPl (PlQuant IndefArt) (NumNumeral d) NoOrd) n ;
|
||||
mkNP : Numeral -> N -> NP -- 51 men
|
||||
= \d,n -> DetCN (DetPl (PlQuant IndefArt) (NumNumeral d) NoOrd) (UseN n) ;
|
||||
mkNP : Int -> CN -> NP -- 51 old men
|
||||
= \d,n -> DetCN (DetPl (PlQuant IndefArt) (NumInt d) NoOrd) n ;
|
||||
mkNP : Int -> N -> NP -- 51 men
|
||||
= \d,n -> DetCN (DetPl (PlQuant IndefArt) (NumInt d) NoOrd) (UseN n) ;
|
||||
|
||||
|
||||
mkNP : PN -> NP -- John
|
||||
= UsePN ;
|
||||
mkNP : Pron -> NP -- he
|
||||
= UsePron ;
|
||||
mkNP : Predet -> NP -> NP -- only the man
|
||||
= PredetNP ;
|
||||
mkNP : NP -> V2 -> NP -- the number squared
|
||||
= PPartNP ;
|
||||
mkNP : NP -> Adv -> NP -- Paris at midnight
|
||||
= AdvNP ;
|
||||
mkNP : Conj -> NP -> NP -> NP
|
||||
= \c,x,y -> ConjNP c (BaseNP x y) ;
|
||||
mkNP : DConj -> NP -> NP -> NP
|
||||
= \c,x,y -> DConjNP c (BaseNP x y) ;
|
||||
mkNP : Conj -> ListNP -> NP
|
||||
= \c,xy -> ConjNP c xy ;
|
||||
mkNP : DConj -> ListNP -> NP
|
||||
= \c,xy -> DConjNP c xy
|
||||
} ;
|
||||
|
||||
mkDet = overload {
|
||||
mkDet : QuantSg -> Ord -> Det -- this best man
|
||||
= DetSg ;
|
||||
mkDet : QuantSg -> Det -- this man
|
||||
= \q -> DetSg q NoOrd ;
|
||||
mkDet : QuantPl -> Num -> Ord -> Det -- these five best men
|
||||
= DetPl ;
|
||||
mkDet : QuantPl -> Det -- these men
|
||||
= \q -> DetPl q NoNum NoOrd ;
|
||||
mkDet : Quant -> Det -- this man
|
||||
= \q -> DetSg (SgQuant q) NoOrd ;
|
||||
mkDet : Quant -> Num -> Det -- these five man
|
||||
= \q,nu -> DetPl (PlQuant q) nu NoOrd ;
|
||||
mkDet : Num -> Det -- forty-five men
|
||||
= \n -> DetPl (PlQuant IndefArt) n NoOrd ;
|
||||
mkDet : Int -> Det -- 51 (men)
|
||||
= \n -> DetPl (PlQuant IndefArt) (NumInt n) NoOrd ;
|
||||
mkDet : Numeral -> Det --
|
||||
= \d -> DetPl (PlQuant IndefArt) (NumNumeral d) NoOrd ;
|
||||
|
||||
mkDet : Pron -> Det -- my (house)
|
||||
= \p -> DetSg (SgQuant (PossPron p)) NoOrd
|
||||
} ;
|
||||
|
||||
|
||||
defSgDet : Det = DetSg (SgQuant DefArt) NoOrd ; -- the (man)
|
||||
defPlDet : Det = DetPl (PlQuant DefArt) NoNum NoOrd ; -- the (man)
|
||||
indefSgDet : Det = DetSg (SgQuant IndefArt) NoOrd ; -- the (man)
|
||||
indefPlDet : Det = DetPl (PlQuant IndefArt) NoNum NoOrd ; -- the (man)
|
||||
|
||||
|
||||
mkQuantSg : Quant -> QuantSg = SgQuant ;
|
||||
mkQuantPl : Quant -> QuantPl = PlQuant ;
|
||||
|
||||
defQuant : Quant = DefArt ;
|
||||
indefQuant : Quant = IndefArt ;
|
||||
|
||||
massQuant : QuantSg = MassDet ;
|
||||
|
||||
|
||||
|
||||
mkNum = overload {
|
||||
mkNum : Numeral -> Num = NumNumeral ;
|
||||
mkNum : Int -> Num -- 51
|
||||
= NumInt ;
|
||||
mkNum : Digit -> Num
|
||||
= \d -> NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 d))))) ;
|
||||
|
||||
mkNum : AdN -> Num -> Num = AdNum
|
||||
} ;
|
||||
|
||||
noNum : Num -- [no num]
|
||||
= NoNum ;
|
||||
|
||||
n1_Numeral : Numeral = num (pot2as3 (pot1as2 (pot0as1 pot01))) ;
|
||||
n2_Numeral : Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n2)))) ;
|
||||
n3_Numeral : Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n3)))) ;
|
||||
n4_Numeral : Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n4)))) ;
|
||||
n5_Numeral : Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n5)))) ;
|
||||
n6_Numeral : Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n6)))) ;
|
||||
n7_Numeral : Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n7)))) ;
|
||||
n8_Numeral : Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n8)))) ;
|
||||
n9_Numeral : Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n9)))) ;
|
||||
n10_Numeral : Numeral = num (pot2as3 (pot1as2 pot110)) ;
|
||||
n20_Numeral : Numeral = num (pot2as3 (pot1as2 (pot1 n2))) ;
|
||||
n100_Numeral : Numeral = num (pot2as3 (pot2 pot01)) ;
|
||||
n1000_Numeral : Numeral = num (pot3 (pot1as2 (pot0as1 pot01))) ;
|
||||
|
||||
|
||||
mkAdN : CAdv -> AdN = AdnCAdv ; -- more (than five)
|
||||
|
||||
mkOrd = overload {
|
||||
mkOrd : Numeral -> Ord = OrdNumeral ;
|
||||
mkOrd : Int -> Ord -- 51st
|
||||
= OrdInt ;
|
||||
mkOrd : Digit -> Ord -- fifth
|
||||
= \d -> OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 d))))) ;
|
||||
mkOrd : A -> Ord -- largest
|
||||
= OrdSuperl
|
||||
} ;
|
||||
|
||||
noOrd : Ord -- [no ord]
|
||||
= NoOrd ;
|
||||
|
||||
|
||||
mkCN = overload {
|
||||
mkCN : N -> CN -- house
|
||||
= UseN ;
|
||||
mkCN : N2 -> NP -> CN -- son of the king
|
||||
= ComplN2 ;
|
||||
mkCN : N3 -> NP -> NP -> CN -- flight from Moscow (to Paris)
|
||||
= \f,x -> ComplN2 (ComplN3 f x) ;
|
||||
mkCN : N2 -> CN -- son
|
||||
= UseN2 ;
|
||||
mkCN : N3 -> CN -- flight
|
||||
= UseN3 ;
|
||||
mkCN : AP -> CN -> CN -- nice and big blue house
|
||||
= AdjCN ;
|
||||
mkCN : AP -> N -> CN -- nice and big house
|
||||
= \x,y -> AdjCN x (UseN y) ;
|
||||
mkCN : CN -> AP -> CN -- nice and big blue house
|
||||
= \x,y -> AdjCN y x ;
|
||||
mkCN : N -> AP -> CN -- nice and big house
|
||||
= \x,y -> AdjCN y (UseN x) ;
|
||||
mkCN : A -> CN -> CN -- big blue house
|
||||
= \x,y -> AdjCN (PositA x) y ;
|
||||
mkCN : A -> N -> CN -- big house
|
||||
= \x,y -> AdjCN (PositA x) (UseN y) ;
|
||||
mkCN : CN -> RS -> CN -- house that John owns
|
||||
= RelCN ;
|
||||
mkCN : N -> RS -> CN -- house that John owns
|
||||
= \x,y -> RelCN (UseN x) y ;
|
||||
mkCN : CN -> Adv -> CN -- house on the hill
|
||||
= AdvCN ;
|
||||
mkCN : N -> Adv -> CN -- house on the hill
|
||||
= \x,y -> AdvCN (UseN x) y ;
|
||||
mkCN : CN -> S -> CN -- fact that John smokes
|
||||
= \cn,s -> SentCN cn (EmbedS s) ;
|
||||
mkCN : CN -> QS -> CN -- question if John smokes
|
||||
= \cn,s -> SentCN cn (EmbedQS s) ;
|
||||
mkCN : CN -> VP -> CN -- reason to smoke
|
||||
= \cn,s -> SentCN cn (EmbedVP s) ;
|
||||
mkCN : CN -> NP -> CN -- number x, numbers x and y
|
||||
= ApposCN ;
|
||||
mkCN : N -> NP -> CN -- number x, numbers x and y
|
||||
= \x,y -> ApposCN (UseN x) y
|
||||
} ;
|
||||
|
||||
|
||||
mkPhr = overload {
|
||||
mkPhr : PConj -> Utt -> Voc -> Phr -- But go home my friend
|
||||
= PhrUtt ;
|
||||
mkPhr : Utt -> Voc -> Phr
|
||||
= \u,v -> PhrUtt NoPConj u v ;
|
||||
mkPhr : PConj -> Utt -> Phr
|
||||
= \u,v -> PhrUtt u v NoVoc ;
|
||||
mkPhr : Utt -> Phr -- Go home
|
||||
= \u -> PhrUtt NoPConj u NoVoc ;
|
||||
mkPhr : S -> Phr -- I go home
|
||||
= \s -> PhrUtt NoPConj (UttS s) NoVoc ;
|
||||
mkPhr : Cl -> Phr -- I go home
|
||||
= \s -> PhrUtt NoPConj (UttS (UseCl TPres ASimul PPos s)) NoVoc ;
|
||||
mkPhr : QS -> Phr -- I go home
|
||||
= \s -> PhrUtt NoPConj (UttQS s) NoVoc ;
|
||||
mkPhr : Imp -> Phr -- I go home
|
||||
= \s -> PhrUtt NoPConj (UttImpSg PPos s) NoVoc
|
||||
|
||||
} ;
|
||||
|
||||
mkPConj : Conj -> PConj = PConjConj ;
|
||||
noPConj : PConj = NoPConj ;
|
||||
|
||||
mkVoc : NP -> Voc = VocNP ;
|
||||
noVoc : Voc = NoVoc ;
|
||||
|
||||
positivePol : Pol = PPos ;
|
||||
negativePol : Pol = PNeg ;
|
||||
|
||||
simultaneousAnt : Ant = ASimul ;
|
||||
anteriorAnt : Ant = AAnter ; --# notpresent
|
||||
|
||||
presentTense : Tense = TPres ;
|
||||
pastTense : Tense = TPast ; --# notpresent
|
||||
futureTense : Tense = TFut ; --# notpresent
|
||||
conditionalTense : Tense = TCond ; --# notpresent
|
||||
|
||||
singularImpForm : ImpForm
|
||||
= {p= IFSg; s= []} ;
|
||||
pluralImpForm : ImpForm
|
||||
= {p= IFPl; s= []} ;
|
||||
politeImpForm : ImpForm
|
||||
= {p= IFPol; s= []} ;
|
||||
|
||||
-- mkUttImp : ImpForm -> Pol -> Imp -> Utt = \f,p,i -> case f of {
|
||||
IFSg => UttImpSg p i ;
|
||||
IFPl => UttImpPl p i ;
|
||||
IFPol => UttImpPol p i
|
||||
} ;
|
||||
|
||||
mkUtt = overload {
|
||||
mkUtt : S -> Utt -- John walked
|
||||
= UttS ;
|
||||
mkUtt : Cl -> Utt -- John walks
|
||||
= \c -> UttS (UseCl TPres ASimul PPos c) ;
|
||||
mkUtt : QS -> Utt -- is it good
|
||||
= UttQS
|
||||
mkUtt : ImpForm -> Pol -> Imp -> Utt -- don't help yourselves
|
||||
= \f -> mkUttImp f.p f.s ;
|
||||
mkUtt : ImpForm -> Imp -> Utt -- help yourselves
|
||||
= \f -> mkUttImp f.p f.s PPos ;
|
||||
mkUtt : Pol -> Imp -> Utt -- (don't) help yourself
|
||||
= UttImpSg ;
|
||||
mkUtt : Imp -> Utt -- help yourself
|
||||
= UttImpSg PPos ;
|
||||
mkUtt : IP -> Utt -- who
|
||||
= UttIP ;
|
||||
mkUtt : IAdv -> Utt -- why
|
||||
= UttIAdv ;
|
||||
mkUtt : NP -> Utt -- this man
|
||||
= UttNP ;
|
||||
mkUtt : Adv -> Utt -- here
|
||||
= UttAdv ;
|
||||
mkUtt : VP -> Utt -- to sleep
|
||||
= UttVP
|
||||
} ;
|
||||
|
||||
lets_Utt : VP -> Utt = ImpPl1 ;
|
||||
|
||||
mkQCl = overload {
|
||||
|
||||
mkQCl : Cl -> QCl -- does John walk
|
||||
= QuestCl ;
|
||||
mkQCl : IP -> VP -> QCl -- who walks
|
||||
= QuestVP ;
|
||||
mkQCl : IP -> Slash -> QCl -- who does John love
|
||||
= QuestSlash ;
|
||||
mkQCl : IP -> NP -> V2 -> QCl -- who does John love
|
||||
= \ip,np,v -> QuestSlash ip (SlashV2 np v) ;
|
||||
mkQCl : IAdv -> Cl -> QCl -- why does John walk
|
||||
= QuestIAdv ;
|
||||
mkQCl : Prep -> IP -> Cl -> QCl -- with whom does John walk
|
||||
= \p,ip -> QuestIAdv (PrepIP p ip) ;
|
||||
mkQCl : IAdv -> NP -> QCl -- where is John
|
||||
= \a -> QuestIComp (CompIAdv a) ;
|
||||
mkQCl : IP -> QCl -- which houses are there
|
||||
= ExistIP
|
||||
|
||||
} ;
|
||||
|
||||
mkIP = overload {
|
||||
mkIP : IDet -> Num -> Ord -> CN -> IP -- which five best songs
|
||||
= IDetCN ;
|
||||
mkIP : IDet -> Ord -> CN -> IP -- which five best songs
|
||||
= \i -> IDetCN i NoNum ;
|
||||
mkIP : IDet -> Num -> CN -> IP -- which five best songs
|
||||
= \i,n -> IDetCN i n NoOrd ;
|
||||
mkIP : IDet -> N -> IP -- which song
|
||||
= \i,n -> IDetCN i NoNum NoOrd (UseN n) ;
|
||||
mkIP : IP -> Adv -> IP -- who in Europe
|
||||
= AdvIP
|
||||
} ;
|
||||
|
||||
mkIAdv : Prep -> IP -> IAdv = PrepIP ;
|
||||
|
||||
mkRCl = overload {
|
||||
mkRCl : Cl -> RCl -- such that John loves her
|
||||
= RelCl ;
|
||||
mkRCl : RP -> VP -> RCl -- who loves John
|
||||
= RelVP ;
|
||||
mkRCl : RP -> Slash -> RCl -- whom John loves
|
||||
= RelSlash ;
|
||||
mkRCl : RP -> NP -> V2 -> RCl -- whom John loves
|
||||
= \rp,np,v2 -> RelSlash rp (SlashV2 np v2)
|
||||
} ;
|
||||
|
||||
which_RP : RP -- which
|
||||
= IdRP ;
|
||||
mkRP : Prep -> NP -> RP -> RP -- all the roots of which
|
||||
= FunRP
|
||||
;
|
||||
|
||||
mkSlash = overload {
|
||||
mkSlash : NP -> V2 -> Slash -- (whom) he sees
|
||||
= SlashV2 ;
|
||||
mkSlash : NP -> VV -> V2 -> Slash -- (whom) he wants to see
|
||||
= SlashVVV2 ;
|
||||
mkSlash : Slash -> Adv -> Slash -- (whom) he sees tomorrow
|
||||
= AdvSlash ;
|
||||
mkSlash : Cl -> Prep -> Slash -- (with whom) he walks
|
||||
= SlashPrep
|
||||
} ;
|
||||
|
||||
mkImp = overload {
|
||||
mkImp : VP -> Imp -- go
|
||||
= ImpVP ;
|
||||
mkImp : V -> Imp
|
||||
= \v -> ImpVP (UseV v) ;
|
||||
mkImp : V2 -> NP -> Imp
|
||||
= \v,np -> ImpVP (ComplV2 v np)
|
||||
} ;
|
||||
|
||||
mkS = overload {
|
||||
mkS : Cl -> S
|
||||
= UseCl TPres ASimul PPos ;
|
||||
mkS : Tense -> Cl -> S
|
||||
= \t -> UseCl t ASimul PPos ;
|
||||
mkS : Ant -> Cl -> S
|
||||
= \a -> UseCl TPres a PPos ;
|
||||
mkS : Pol -> Cl -> S
|
||||
= \p -> UseCl TPres ASimul p ;
|
||||
mkS : Tense -> Ant -> Cl -> S
|
||||
= \t,a -> UseCl t a PPos ;
|
||||
mkS : Tense -> Pol -> Cl -> S
|
||||
= \t,p -> UseCl t ASimul p ;
|
||||
mkS : Ant -> Pol -> Cl -> S
|
||||
= \a,p -> UseCl TPres a p ;
|
||||
mkS : Tense -> Ant -> Pol -> Cl -> S
|
||||
= UseCl ;
|
||||
mkS : Conj -> S -> S -> S
|
||||
= \c,x,y -> ConjS c (BaseS x y) ;
|
||||
mkS : DConj -> S -> S -> S
|
||||
= \c,x,y -> DConjS c (BaseS x y) ;
|
||||
mkS : Conj -> ListS -> S
|
||||
= \c,xy -> ConjS c xy ;
|
||||
mkS : DConj -> ListS -> S
|
||||
= \c,xy -> DConjS c xy ;
|
||||
mkS : Adv -> S -> S
|
||||
= AdvS
|
||||
|
||||
} ;
|
||||
|
||||
mkQS = overload {
|
||||
|
||||
mkQS : QCl -> QS
|
||||
= UseQCl TPres ASimul PPos ;
|
||||
mkQS : Tense -> QCl -> QS
|
||||
= \t -> UseQCl t ASimul PPos ;
|
||||
mkQS : Ant -> QCl -> QS
|
||||
= \a -> UseQCl TPres a PPos ;
|
||||
mkQS : Pol -> QCl -> QS
|
||||
= \p -> UseQCl TPres ASimul p ;
|
||||
mkQS : Tense -> Ant -> QCl -> QS
|
||||
= \t,a -> UseQCl t a PPos ;
|
||||
mkQS : Tense -> Pol -> QCl -> QS
|
||||
= \t,p -> UseQCl t ASimul p ;
|
||||
mkQS : Ant -> Pol -> QCl -> QS
|
||||
= \a,p -> UseQCl TPres a p ;
|
||||
mkQS : Tense -> Ant -> Pol -> QCl -> QS
|
||||
= UseQCl ;
|
||||
mkQS : Cl -> QS
|
||||
= \x -> UseQCl TPres ASimul PPos (QuestCl x)
|
||||
} ;
|
||||
|
||||
|
||||
mkRS = overload {
|
||||
|
||||
mkRS : RCl -> RS
|
||||
= UseRCl TPres ASimul PPos ;
|
||||
mkRS : Tense -> RCl -> RS
|
||||
= \t,c -> UseRCl t ASimul PPos c ;
|
||||
mkRS : Ant -> RCl -> RS
|
||||
= \a,c -> UseRCl TPres a PPos c ;
|
||||
mkRS : Pol -> RCl -> RS
|
||||
= \p,c -> UseRCl TPres ASimul p c ;
|
||||
mkRS : Tense -> Ant -> RCl -> RS
|
||||
= \t,a,c -> UseRCl t a PPos c ;
|
||||
mkRS : Tense -> Pol -> RCl -> RS
|
||||
= \t,p,c -> UseRCl t ASimul p c ;
|
||||
mkRS : Ant -> Pol -> RCl -> RS
|
||||
= \a,p,c -> UseRCl TPres a p c ;
|
||||
mkRS : Tense -> Ant -> Pol -> RCl -> RS
|
||||
= UseRCl
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
oper
|
||||
emptyText : Text = TEmpty ; -- [empty text]
|
||||
|
||||
fullStopPunct : Punct
|
||||
= {p= PFullStop; s= []} ; -- .
|
||||
questMarkPunct : Punct
|
||||
= {p= PQuestMark; s= []} ; -- .
|
||||
exclMarkPunct : Punct
|
||||
= {p= PExclMark; s= []} ; -- .
|
||||
|
||||
-- lincat Impform = {p : PImpForm ; s : Str} ;
|
||||
-- lincat Punct = {p : PPunct ; s : Str} ;
|
||||
-- param PImpForm = IFSg | IFPl | IFPol ;
|
||||
-- param PPunct = PFullStop | PExclMark | PQuestMark ;
|
||||
|
||||
mkText = overload {
|
||||
mkText : Phr -> Punct -> Text -> Text
|
||||
= \p,f -> mkPhrPunct p f.p f.s ;
|
||||
mkText : Phr -> Punct -> Text
|
||||
= \p,f -> mkPhrPunct p f.p f.s TEmpty ;
|
||||
mkText : Phr -> Text -- John walks.
|
||||
= \x -> TFullStop x TEmpty ;
|
||||
mkText : Utt -> Text
|
||||
= \u -> TFullStop (PhrUtt NoPConj u NoVoc) TEmpty ;
|
||||
mkText : S -> Text
|
||||
= \s -> TFullStop (PhrUtt NoPConj (UttS s) NoVoc) TEmpty ;
|
||||
mkText : Cl -> Text
|
||||
= \c -> TFullStop (PhrUtt NoPConj (UttS (UseCl TPres ASimul PPos c)) NoVoc) TEmpty ;
|
||||
mkText : QS -> Text
|
||||
= \q -> TQuestMark (PhrUtt NoPConj (UttQS q) NoVoc) TEmpty ;
|
||||
mkText : Imp -> Text
|
||||
= \i -> TExclMark (PhrUtt NoPConj (UttImpSg PPos i) NoVoc) TEmpty ;
|
||||
mkText : Pol -> Imp -> Text
|
||||
= \p,i -> TExclMark (PhrUtt NoPConj (UttImpSg p i) NoVoc) TEmpty ;
|
||||
mkText : Phr -> Text -> Text -- John walks. ...
|
||||
= TFullStop
|
||||
} ;
|
||||
|
||||
mkVP = overload {
|
||||
mkVP : V -> VP -- sleep
|
||||
= UseV ;
|
||||
mkVP : V2 -> NP -> VP -- use it
|
||||
= ComplV2 ;
|
||||
mkVP : V3 -> NP -> NP -> VP -- send a message to her
|
||||
= ComplV3 ;
|
||||
mkVP : VV -> VP -> VP -- want to run
|
||||
= ComplVV ;
|
||||
mkVP : VS -> S -> VP -- know that she runs
|
||||
= ComplVS ;
|
||||
mkVP : VQ -> QS -> VP -- ask if she runs
|
||||
= ComplVQ ;
|
||||
--- mkVP : VS -> NP -> VP = \v -> ComplV2 (UseVS v) ;
|
||||
--- mkVP : VQ -> NP -> VP = \v -> ComplV2 (UseVQ v) ;
|
||||
mkVP : VA -> AP -> VP -- look red
|
||||
= ComplVA ;
|
||||
mkVP : V2A -> NP -> AP -> VP -- paint the house red
|
||||
= ComplV2A ;
|
||||
mkVP : A -> VP -- be warm
|
||||
= \a -> UseComp (CompAP (PositA a)) ;
|
||||
mkVP : A -> NP -> VP -- John is warmer than Mary
|
||||
= \y,z -> (UseComp (CompAP (ComparA y z))) ;
|
||||
mkVP : A2 -> NP -> VP -- John is married to Mary
|
||||
= \y,z -> (UseComp (CompAP (ComplA2 y z))) ;
|
||||
mkVP : AP -> VP -- be warm
|
||||
= \a -> UseComp (CompAP a) ;
|
||||
mkVP : NP -> VP -- be a man
|
||||
= \a -> UseComp (CompNP a) ;
|
||||
mkVP : CN -> VP -- be a man
|
||||
= \y -> (UseComp (CompNP (DetCN (DetSg (SgQuant IndefArt) NoOrd) y))) ;
|
||||
mkVP : N -> VP -- be a man
|
||||
= \y -> (UseComp (CompNP (DetCN (DetSg (SgQuant IndefArt) NoOrd) (UseN y)))) ;
|
||||
mkVP : Adv -> VP -- be here
|
||||
= \a -> UseComp (CompAdv a) ;
|
||||
mkVP : VP -> Adv -> VP -- sleep here
|
||||
= AdvVP ;
|
||||
mkVP : AdV -> VP -> VP -- always sleep
|
||||
= AdVVP
|
||||
} ;
|
||||
|
||||
reflexiveVP : V2 -> VP = ReflV2 ;
|
||||
passiveVP = overload {
|
||||
passiveVP : V2 -> VP = PassV2 ;
|
||||
passiveVP : V2 -> NP -> VP = \v,np -> (AdvVP (PassV2 v) (PrepNP by8agent_Prep np))
|
||||
} ;
|
||||
progressiveVP : VP -> VP = ProgrVP ;
|
||||
|
||||
|
||||
mkListS = overload {
|
||||
mkListS : S -> S -> ListS = BaseS ;
|
||||
mkListS : S -> ListS -> ListS = ConsS
|
||||
} ;
|
||||
|
||||
mkListAP = overload {
|
||||
mkListAP : AP -> AP -> ListAP = BaseAP ;
|
||||
mkListAP : AP -> ListAP -> ListAP = ConsAP
|
||||
} ;
|
||||
|
||||
mkListAdv = overload {
|
||||
mkListAdv : Adv -> Adv -> ListAdv = BaseAdv ;
|
||||
mkListAdv : Adv -> ListAdv -> ListAdv = ConsAdv
|
||||
} ;
|
||||
|
||||
mkListNP = overload {
|
||||
mkListNP : NP -> NP -> ListNP = BaseNP ;
|
||||
mkListNP : NP -> ListNP -> ListNP = ConsNP
|
||||
} ;
|
||||
|
||||
Reference in New Issue
Block a user