DEMO   ENGLISH   CONFIG (1.0)
  ROOTCAT   S.
  FILES  .
  LEXENTRIES   (DEMO ENGLISH).
  TEMPLATES (DEMO ENGLISH). 
  RULES   (DEMO ENGLISH).
  MORPHOLOGY (DEMO ENGLISH).
  GOVERNABLERELATIONS    SUBJ OBJ OBJ2 COMP XCOMP OBL OBL-?+.
  SEMANTICFUNCTIONS    ADJUNCT  TOPIC FOCUS POSS STANDARD.
  NONDISTRIBUTIVES    NUM PERS CONJ-FORM.
  EPSILON   e.
  OPTIMALITYORDER NOGOOD.

----

DEMO ENGLISH MORPHOLOGY (1.0)

TOKENIZE:
P!basic-parse-tok.fst G!default-gen-tokenizer.fst

----

DEMO   ENGLISH   RULES (1.0)

   S --> NP: (^ SUBJ)=!
	     (! CASE)=nom;
 	 VP
	 (PERIOD).  "for punctuation, optional for now"


   VP --> (AUX) "auxiliary introduced for passive" 
 	  V: ^=!; 
 	  (NP: (^ OBJ)=! "direct object"
	       (! CASE)=acc)
 	  (NP: (^ OBJ2) = !) "secondary object"
 	  PP*: { ! $ (^ ADJUNCT) "PPs can be all types of adjuncts"
		 (! PTYPE) =c sem "only semantic PPs here"
	       | (^ OBL) = ! "or a a general oblique"
	       };
 	  (PP: (^ OBL-TO) = ! "special obl for ditransitives"
	       "example of a constraining equation: require a value with =c"
	       (! PFORM) =c to)
 	  (PP: (^ OBL-AG) = ! "oblique agent of passive" 
	       "example of a constraining equation: require a value with =c"
	       (! PFORM) =c by ). 

   NP --> (D)
 	  A*: ! $ (^ ADJUNCT); "introducing adjectives in sets"
 	  N. 

   PP --> { P: ^ = ! "head of PP"
	       (! PTYPE) =c sem; "semantic type, Adjunct"
 	    NP: (^ OBJ) = !
		(! CASE) = acc
 	  | P: ^ = ! "head of PP" 
	       (! PTYPE) =c nosem; "non-semantic type, OBL"
 	    NP
 	  }. 



----
DEMO   ENGLISH   TEMPLATES (1.0)

   PASS(FRAME) = { FRAME "no passive, just give back subcat frame"
	          (^ PASSIVE) = - "no passive"
	  | FRAME "passive"
	    (^ PASSIVE) = + "mark as such"
	    (^ PARTICIPLE) =c past "make sure to have a past participle"
	    (^ OBJ)-->(^ SUBJ) "obj goes to subj"
	    { (^ SUBJ)-->(^ OBL-AG) "either make subj obl-ag"
	    | (^ SUBJ)--> NULL "or delete"
	    }
	  }. 

DAT-SHIFT(SCHEMATA) = { SCHEMATA 
	                 | SCHEMATA 
	                   (^ OBJ)-->(^ OBJ2)
	                   (^ OBL-TO)-->(^ OBJ)}.

DITRANS(P) = @(PASS @(DAT-SHIFT (^ PRED)='P<(^ SUBJ) (^ OBJ) (^ OBL-TO)>')).


 "transitives can passivize"

   TRANS(P) = @(PASS (^ PRED)='P<(^ SUBJ) (^ OBJ)>').

   INTRANS(P) = (^ PRED) = 'P<(^SUBJ)>'.

   INTRANS-OBL(P) = (^ PRED) = 'P<(^SUBJ)(^OBL)>'.
             


   OPT-TRANS(P) = { (^ PRED) = 'P<(^SUBJ)(^OBJ)>'   "P is a variable"
	          | (^ PRED) = 'P<(^SUBJ)>' }.  "this template takes one argument:  P"
	  
   TENSE(T) = (^ TENSE) = T.  "the more general case"

   MOOD(M) = (^ MOOD) = M.

   VPRES = @(TENSE pres) 
	   @(MOOD indicative). 

   VPAST = @(TENSE past) 
	  @(MOOD indicative). 

   PRED(P) = (^ PRED) = 'P'. 

   PASTP = (^ PARTICIPLE) = past. 

  BARE-AGR = { (^ SUBJ NUM) = pl "either it is plural"
	      | (^ SUBJ PERS) ~= 3 "or singular and not 3rd person"
	        (^ SUBJ NUM) = sg
              }.

   S-AGR = (^ SUBJ PERS) = 3  "for verbs in -s"
	   (^ SUBJ NUM) = sg. 

 COUNT-NOUN(P N) = @(PRED P)
	             (^ NUM) = N
	             (^ PERS) = 3
	             (^ NTYPE) = count. 

 DEF =  (^ DEF). 

----

DEMO ENGLISH LEXICON (1.0)

bed   N * @(COUNT-NOUN bed sg).

bone 	  N * @(COUNT-NOUN bone sg).

bones 	  N * @(COUNT-NOUN bone pl).

homework  N * @(COUNT-NOUN homework sg).

dog 	  N *  @(COUNT-NOUN dog sg).

dogs 	  N *  @(COUNT-NOUN dog pl).

gorilla  N *  @(COUNT-NOUN gorilla sg).

gorillas  N * @(COUNT-NOUN gorilla pl).

ate 	  V * @(OPT-TRANS eat) "optionally transitive verbs"
	      @VPAST.

eats 	  V * @(OPT-TRANS eat)
	      @VPRES
              @S-AGR. 

drinks   V * @(OPT-TRANS drink)
             @VPRES
             @S-AGR. 

devour 	  V * @(TRANS devour) 
              "don't do this, do Lexical Rules instead"
	      "{ (^ PRED) = 'devour<(^SUBJ)(^OBJ)>' | 
		(^ PRED) = 'devour<(^OBJ)(^OBL)>' }"
	      @VPRES
	      @BARE-AGR. 

devours  V * @(TRANS devour) 
	     @VPRES
             @S-AGR.

devoured  V * @(TRANS devour) 
              { @VPAST |  @PASTP}. 


gave 	  V * @(DITRANS give)
	      @VPAST. 

gives     V * @(DITRANS give)
	      @VPRES
	      @S-AGR.

given 	  V * @(DITRANS give)
	      { @VPAST | @PASTP}. 


appears   V * @(INTRANS appear)
	      @VPRES
	      @S-AGR.

appeared  V * @(INTRANS appear)
	      @VPAST. 

sleeps 	  V * @(INTRANS sleep)
	      @VPRES
	      @S-AGR. 

sleep 	  V * @(INTRANS sleep)
              @VPRES
              @BARE-AGR.

slept 	  V * @(INTRANS sleep)
	      @VPAST. 

waited 	  V * {@(INTRANS wait) | @(INTRANS-OBL wait) }
	      @VPAST. 

"adjectives"

small	A * @(PRED small). 

smart	A * @(PRED smart). 

grey	A * @(PRED grey). 

"prepositions"

"these still need to be more complicated eventually"

by 	  P * (^ PFORM) = by
	      (^ PTYPE) = nosem.  

to 	  P * (^ PFORM) = to
	      (^ PTYPE) = nosem.

on	  P * { (^ PRED) = 'on<(^OBJ)>' 
		(^ PTYPE) = sem
	      | (^ PTYPE) = nosem
		(^ PFORM) = on
              }.

"auxiliaries"

was 	  AUX * @(TENSE past)
		{ (^ SUBJ PERS) = 1
                | (^ SUBJ PERS) = 3
                }
                (^ SUBJ NUM) = sg. 

"determiners"

the  D *  (^DEF) = +.

a  D *  (^ DEF) = -   "this indefinite only marks singulars" 
        (^ NUM) = sg.


"punctuation"

. PERIOD * . 


----