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).