summaryrefslogtreecommitdiff
path: root/gf-book/examples/chapter9/hebrew/GrammarHeb.gf
diff options
context:
space:
mode:
Diffstat (limited to 'gf-book/examples/chapter9/hebrew/GrammarHeb.gf')
-rw-r--r--gf-book/examples/chapter9/hebrew/GrammarHeb.gf97
1 files changed, 97 insertions, 0 deletions
diff --git a/gf-book/examples/chapter9/hebrew/GrammarHeb.gf b/gf-book/examples/chapter9/hebrew/GrammarHeb.gf
new file mode 100644
index 000000000..a872e4ba7
--- /dev/null
+++ b/gf-book/examples/chapter9/hebrew/GrammarHeb.gf
@@ -0,0 +1,97 @@
+--# -path=alltenses
+
+concrete GrammarHeb of Grammar = open ResHeb, Prelude in {
+
+ lincat
+
+ Cl = {s : ResHeb.Tense => Str} ;
+ VP = ResHeb.VP ; -- {v : Verb ; obj : Str} ;
+ NP = ResHeb.NP ; -- {s : Case => {obj : Str} ; a : Agr ; isDef : Bool ; sp : Species} ;
+ AP = {s : Number => Species => Gender => Str } ;
+ CN = ResHeb.Noun ; -- {s : Number => Species => Str ; g: Gender} ;
+ Det = {s : Gender => Str ; n : Number ; sp : Species; isDef : Bool} ;
+ N = ResHeb.Noun ; -- {s : Number => Species => Str ; g: Gender } ;
+ A = ResHeb.Adj ; -- {s : Number => Species => Gender => Str} ;
+ V = ResHeb.Verb ; -- {s : Tense => VPerNumGen => Str } ;
+ V2 = ResHeb.Verb2 ; -- Verb ** {c : Case} ;
+
+ lin
+
+-- predication
+
+ PredVP np vp =
+ let
+ subj = (np.s ! Nom ).obj ;
+ obj = vp.obj
+ in {
+ s = \\t => subj ++ (agrV vp.v t np.a) ++ obj } ;
+
+
+ ComplV2 v2 np =
+ let
+ nps = np.s ! v2.c
+ in {
+ v = {s = v2.s } ;
+ obj = case <np.isDef> of
+ { <True> => "At" ++ nps.obj; -- direct objects require the object marker 'et' and must be in definite form
+ _ => nps.obj }
+ } ;
+
+
+-- determination
+-- ha-Aysh ha-zwt : this woman
+-- ha-bait : the house
+-- ha-bait ha-ze : this house
+-- ha-bait ha-yarok ha-ze : this green house
+
+ DetCN det cn = {
+ s = \\c => {obj = cn.s ! det.n ! det.sp ++ det.s ! cn.g } ;
+ isDef = det.isDef ;
+ sp = det.sp ;
+ a = Ag cn.g det.n Per3
+ } ;
+
+ ModCN cn ap = {
+ s = \\sp => table {n => cn.s ! sp ! n ++ ap.s ! sp ! n ! cn.g} ;
+ g = cn.g
+ } ;
+
+ UseV v = { v = v ; obj = [] };
+
+ UseN n = n ;
+
+ UseA adj = adj ;
+
+ a_Det = {
+ s = table { _ => "" } ;
+ n = Sg ;
+ sp = Indef ;
+ isDef = False
+ } ;
+
+ the_Det = {
+ s = table { _ => "" } ;
+ n = Sg ;
+ sp = Def ;
+ isDef = True
+ } ;
+
+ this_Det = {
+ s = table { Masc => "hzh" ; Fem => "hzAt" } ;
+ n = Sg ;
+ sp = Def ;
+ isDef = True
+ } ;
+
+ these_Det = {
+ s = table {_ => "hAlh" } ;
+ n = Pl ;
+ sp = Def ;
+ isDef = True
+ } ;
+
+ i_NP = pronNP "Any" "Awty" "ly" Masc Sg Per1 ; --both fem and masc
+ we_NP = pronNP "AnHnw" "Awtnw" "lnw" Masc Pl Per1; --both fem and masc
+ she_NP = pronNP "hyA" "Awth" "lh" Fem Sg Per3 ;
+}
+