Logtalk 2.26.2 files.
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1487 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
53
Logtalk/examples/dcgs/sentences.lgt
Normal file
53
Logtalk/examples/dcgs/sentences.lgt
Normal file
@@ -0,0 +1,53 @@
|
||||
|
||||
|
||||
% Categories allows us to neatly organize the different "kinds"
|
||||
% of words on this example: determiners, nouns, and verbs
|
||||
|
||||
|
||||
:- category(determiners).
|
||||
|
||||
:- private(determiner//0). % private category non-terminals become private
|
||||
% non-terminals of the objects importing the category
|
||||
determiner --> [the].
|
||||
determiner --> [a].
|
||||
|
||||
:- end_category.
|
||||
|
||||
|
||||
:- category(nouns).
|
||||
|
||||
:- private(noun//0).
|
||||
|
||||
noun --> [boy].
|
||||
noun --> [girl].
|
||||
|
||||
:- end_category.
|
||||
|
||||
|
||||
:- category(verbs).
|
||||
|
||||
:- private(verb//0).
|
||||
|
||||
verb --> [likes].
|
||||
verb --> [hates].
|
||||
|
||||
:- end_category.
|
||||
|
||||
|
||||
:- object(sentence,
|
||||
implements(parsep),
|
||||
imports(determiners, nouns, verbs)).
|
||||
|
||||
parse(List, true) :-
|
||||
phrase(sentence, List).
|
||||
parse(_, false).
|
||||
|
||||
sentence --> noun_phrase, verb_phrase.
|
||||
|
||||
noun_phrase --> ::determiner, ::noun. % the ::/1 control construct is used to call grammar
|
||||
noun_phrase --> ::noun. % rules encapsulated on the imported categories
|
||||
|
||||
verb_phrase --> ::verb.
|
||||
verb_phrase --> ::verb, noun_phrase.
|
||||
|
||||
:- end_object.
|
Reference in New Issue
Block a user