PROLOG

Arabic Language Parser

by Sinan Al-Saffar


% Sinan Al-Saffar
% Arabic Language Parser in Prolog
% CS527 Parser Homework
% Notice that in Arabic a verb phrase needs to follow
% a noun phrase in terms of feminine or masculine status.

utterance(X) :- sentence(X,[]).
sentence(Start, End) :-
  male_nounphrase(Start, Rest), male_verbphrase(Rest, End).

sentence(Start, End) :- 
  female_nounphrase(Start, Rest), female_verbphrase(Rest, End).

male_nounphrase([Noun|End],End) :- 
  male_noun(Noun).

male_nounphrase([Article, Noun|End], End) :- 
  article(Article), male_noun(Noun).

female_nounphrase([Noun|End],End) :- 
  female_noun(Noun).

female_nounphrase([Article, Noun|End], End) :- 
  article(Article), female_noun(Noun).
male_verbphrase([Verb|End], End) :- 
  male_verb(Verb).
male_verbphrase([Verb|Rest], End) :- 
  male_verb(Verb), male_nounphrase(Rest, End).
female_verbphrase([Verb|End], End) :- 
  female_verb(Verb).
female_verbphrase([Verb|Rest], End) :- 
  female_verb(Verb), female_nounphrase(Rest, End).

article(al).
male_noun(walad).
male_noun(kalb).
female_noun(kalba).
female_noun(bint).
male_verb(yuhib).
male_verb(yaath).
female_verb(taath).
female_verb(tuhib).  
  

Close Window