1.2 The parser

/* A depth-first, left-to-right parser.
   
   Here is how the parser is called:

| ?- parse(s, [the,dog,chased,the,cat], []).

yes
*/

parse(Cat, [Firstword|Restwords], Restwords):-
    (Cat ==> Firstword).

parse(Cat, String, Rest ):-
   (Cat ==> Daughters),
   parsedaughters(Daughters, String, Rest).

parsedaughters((Cat, Cats), String, Rest):-
   parse(Cat, String, Next),
   parsedaughters(Cats, Next, Rest).

parsedaughters(Cat, String, Rest):-
   parse(Cat, String, Rest).



SJ Harlow 2000-12-14