/*

   Example of tparse.

   See HELP TPARSE.
   """
   This is a variant of LIB GRAMMAR which is somewhat more general in that
   it will find all the parses of a list of words corresponding to a
   non-terminal. In order to do this it makes use of the POP-11 process
   mechanism. (See HELP * PROCESS).
   """ 

   This is a swedish version, using the same grammar (approx) as in mygram.p
   using the grammar library.

   See http://www.hakank.org/poplog/swegram.p for generating swedish
   sentenses with this grammar and lexicon.

   This Pop-11 program was created by Hakan Kjellerstrand (hakank@bonetmail.com
   See also my Pop-11/Poplog page: http://www.hakank.org/poplog/


*/

lib tparse;

/*
;;;
;;; Original from HELP TPARSES
;;;
vars grammar lexicon;
[
 [s  [np vp]   ]
 [vp [v np] [v np prep np]    ]
 [np [pn] [det noun] [np and np] [np prep np]]
 ] -> grammar;

[
 [noun   cat dog mouse man girl boy book tree]
 [pn     fred aaron steve john sharon]
 [v      liked killed thanked bought ate put]
 [prep   on over in at under]
 [det    each every the a some]
 ] -> lexicon;
*/

;;;
;;; Swedish grammar
;;;
vars swe_grammar =
    [
        [s [np vp]]
        [np 
            [snp_n] [snp_t] [snp_n pp] [snp_t pp]
         ]

        [snp_n 
          [det_n noun_n] [det_n adj_n noun_n] [det_n adj_n adj_aux_n noun_n]
        ]  

        [snp_t 
             [det_t noun_t] [det_t adj_t noun_t] [det_t adj_t adj_aux_t noun_t]
        ] 

        [pp  
           [prep snp_t] [prep snp_n]
        ]

        [vp 
            [verb np] [verb verb_aux np]
        ]
    ];

;;;
;;; Swedish lexicon
;;;
vars swe_lexicon =
     [ 
        [noun_n  stad 
                 man 
                 kvinna
                 pojke
                 flicka 
                 dator 
                 kopp 
                 bil 
                 klocka 
                 sandstrand 
                 buske 
                 siffra
                 telefon]
        [noun_t  hus 
                 nummer 
                 krig 
                 rum 
                 träd 
                 handsfack 
                 möte ]
        [verb    hatade
                 slog 
                 kysste 
                 retade 
                 [spelade med] 
                 [gifte sig med] 
                 lärde 
                 adderade 
                 mejlade 
                 [grävde ned] 
                 [lade sig till med] 
                 borstade 
                 [stannade upp för] 
                 [väntade på] ]
        [prep    i 
                 på 
                 över 
                 under 
                 bredvid 
                 utanför innanför]
        [det_n   en]
        [det_t   ett]
        [adj_n   vacker 
                 planerad 
                 snygg 
                 sanslös 
                 svag 
                 hungrig 
                 fet 
                 smal
                 cool 
                 annan
                 dyr]
        [adj_t   vackert 
                 planerat 
                 snyggt 
                 sanslöst 
                 svagt 
                 hungrigt 
                 fett 
                 smalt
                 coolt 
                 annat
                 dyrt] 
        [adj_aux_n [men ändå snygg] 
                   [fastän trött] 
                   [och vuxen] 
                   [och lite barnslig] ]
        [adj_aux_t [men ändå snyggt] 
                   [fastän trött] 
                   [och lite barnsligt] ]
        [verb_aux [med frenetisk energi] 
                  [på ett snyggt sätt] 
                  [utan själ] 
                  [enbart för pengarnas skull] 
                  [utan personlig vinning] 
                  [utan vett och sans]]
     ];


setup(swe_grammar,swe_lexicon);
showparses("s", [en klocka retade ett snyggt handsfack]);

;;;
;;; Note: The sentence must be given with the sublists.
;;; It can use the sentences generated from 
;;; http://www.hakank.org/poplog/mygram.p.
;;;
listparses("s", [en dyr
                 [och vuxen]
                 klocka på ett fett
                 [men ändå snyggt]
                 möte
                 [spelade med]
                 [med frenetisk energi] ett krig])==>


listparses("s", [ett svagt 
                 [fastän trött] 
                 handsfack 
                 [grävde ned] 
                 [utan vett och sans] 
                 en buske])==>
