home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9302 / sprache / lfg.pro < prev    next >
Encoding:
Text File  |  1992-06-19  |  3.2 KB  |  91 lines

  1. " - - - - -  LFG-Grammatik - Parser  - - - - - "
  2.  
  3. syntax(a,<SATZ,b>) -> satz-bau(a,nil,b,c) /;
  4. syntax(a,KEIN-SATZ) ->;
  5.  
  6. satz-bau(nil,nil,y,nil) ->;
  7. satz-bau(d,d2,<np,<en,a,n-um.g-en.k-as>>.y,nil) ->
  8.    eigenname(d,d1,a,n-um.g-en.k-as.nil)
  9.    satz-bau(d1,d2,y,n-um.g-en.k-as.nil);
  10. satz-bau(d,d2,<np,<en,a,n-um.g-en.k-as>>.y,n-um.g-en.k-as.z) ->
  11.    eigenname(d,d1,a,n-um.g-en.k-as.nil)
  12.    satz-bau(d1,d2,y,z);
  13. satz-bau(d,d3,<np,<art,a>,nomen(b),n-um.g-en.k-as>.y,nil) ->
  14.    artikel(d,d1,a,n-um.g-en.k-as.nil)
  15.    nomen(d1,d2,b,n-um.g-en.k-as.nil)
  16.    satz-bau(d2,d3,y,n-um.g-en.k-as.nil);
  17. satz-bau(d,d3,<np,<art,a>,nomen(b),n-um.g-en.k-as>.y,n-um.g-en.k-as.z) ->
  18.    artikel(d,d1,a,n-um.g-en.k-as.nil)
  19.    nomen(d1,d2,b,n-um.g-en.k-as.nil)
  20.    satz-bau(d2,d3,y,z);
  21. satz-bau(d,d4,<np,<art,a>,<adj,b>,nomen(c),n-um.g-en.k-as>.y,nil) ->
  22.    artikel(d,d1,a,n-um.g-en.k-as.nil)
  23.    adjektiv(d1,d2,b,n-um.g-en.k-as.nil)
  24.    nomen(d2,d3,c,n-um.g-en.k-as.nil)
  25.    satz-bau(d3,d4,y,n-um.g-en.k-as.nil);
  26. satz-bau(d,d4,<np,<art,a>,<adj,b>,nomen(c),n-um.g-en.k-as>.y,n-um.g-en.k-as.z)
  27.     ->
  28.    artikel(d,d1,a,n-um.g-en.k-as.nil)
  29.    adjektiv(d1,d2,b,n-um.g-en.k-as.nil)
  30.    nomen(d2,d3,c,n-um.g-en.k-as.nil)
  31.    satz-bau(d3,d4,y,z);
  32. satz-bau(d,d2,<pp,<praep,a>,b,n-um.g-en.k-as>.y,n-um.g-en.k-as.z) ->
  33.    praeposition(d,d1,a,n-um.g-en.k-as.nil)
  34.    satz-bau(d1,d2,b.y,n-um.g-en.k-as.z);
  35. satz-bau(d,d2,<vp,verb(a,n-um.g-en.k-as)>,n-um.g-en.k-as.nil) ->
  36.    verb(d,d1,a,n-um.g-en.k-as.nil)
  37.    satz-bau(d1,d2,nil,nil);
  38. satz-bau(d,d2,<vp,verb(a,n-um.g-en.k-as,n-um2.g-en2.k-as2),b>,n-um.g-en.k-as.nil
  39.    ) ->
  40.    verb(d,d1,a,n-um.g-en.k-as.nil,n-um2.g-en2.k-as2.nil)
  41.    satz-bau(d1,d2,b.nil,n-um2.g-en2.k-as2.nil);
  42. satz-bau(d,d2,<vp,verb(a,n-um.g-en.k-as,n-um2.g-en2.k-as2,n-um3.g-en3.k-as3),b,c
  43.    >,n-um.g-en.k-as.nil) ->
  44.    verb(d,d1,a,n-um.g-en.k-as.nil,n-um2.g-en2.k-as2.nil,n-um3.g-en3.k-as3.nil)
  45.    satz-bau(d1,d2,b.c.nil,n-um2.g-en2.k-as2.n-um3.g-en3.k-as3.nil);
  46.  
  47. " - - - - -  Hauptprogramm  - - - - - "
  48.  
  49. lesen(nil) -> next-char'(".") / in-char'(".");
  50. lesen(c.b) -> in-word(a,c) lesen(b);
  51.  
  52. lfg ->
  53.    repeat
  54.    line
  55.    outm("Satz:        ")
  56.    lesen(x)
  57.    syntax(x,y)
  58.    outm("Syntax:      ")
  59.    outl(y)
  60.    fail;
  61.  
  62. repeat ->;
  63. repeat -> repeat;
  64.  
  65. " - - - - -  Datenbank  - - - - - "
  66.  
  67. eigenname(Hans.d,d,Hans,sg.mask.c.nil) ->;
  68. eigenname(Maria.d,d,Maria,sg.fem.c.nil) ->;
  69.  
  70. nomen(Kind.d,d,Kind,sg.ntr.c.nil) -> dif(c,gen);
  71. nomen(Kindes.d,d,Kindes,sg.ntr.gen.nil) ->;
  72. nomen(Wochenende.d,d,Wochenende,sg.ntr.c.nil) -> dif(c,gen);
  73. nomen(Wochenendes.d,d,Wochenendes,sg.ntr.gen.nil) ->;
  74.  
  75. artikel(das.d,d,das,sg.ntr.c.nil) -> dif(c,gen) dif(c,dat);
  76. artikel(des.d,d,des,sg.ntr.gen.nil) ->;
  77. artikel(dem.d,d,dem,sg.b.dat.nil) -> dif(b,fem);
  78. artikel(einem.d,d,einem,sg.b.dat.nil) -> dif(b,fem);
  79.  
  80. praeposition(von.d,d,von,a.b.dat.nil) ->;
  81. praeposition(mit.d,d,mit,a.b.dat.nil) ->;
  82.  
  83. adjektiv(anregenden.d,anregenden,d,a.b.dat.nil) ->;
  84. adjektiv(anregende.d,d,anregende,a.b.akk.nil) ->;
  85.  
  86. verb(traeumt.d,d,traeumt,sg.b1.nom.nil) ->;
  87. verb(traeumt.d,d,traeumt,sg.b1.nom.nil,a2.b2.dat.nil) ->;
  88. verb(traeumt.d,d,traeumt,sg.b1.nom.nil,a2.b2.dat.nil,a3.b3.dat.nil) ->;
  89. verb(liebt.d,d,liebt,sg.b1.nom.nil,a2.b2.akk.nil) ->;
  90.  
  91. ;End world: Normal