CFG/DCG Code 1 - CSC 366 Home Page - CSC 366 A14 Page - Demo 1

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% FILE: dcg.pro                     %%%%
%%%% LINE: A DCG for Cryptos           %%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% BEGIN Import Files

:- consult("gv2.pro").
:- consult("io.pro").
:- consult("combosets.pro").

%%% END Import Files
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Begin Crypto Context Free Grammar(DCG)

sentence --> simpleproblemcommand.
sentence --> simpleproblemquery.
sentence --> randomproblemcommand.
simpleproblemcommand --> [use],numberzzz,[to],[make],goal,[.].
simpleproblemcommand --> [write],goal,[in],[terms],[of],numberzzz,[.].
randomproblemcommand --> [use],[whatever],[to],[make],[whatever],[.].
simpleproblemquery --> [can],[you],[make],goal,separator,numberzzz,[?].
separator --> [from].
separator --> [with].
goal --> number.
numberzzz --> number,[and],number,[and],number,[and],number,[and],number.
numberzzz --> number,number,number,number,[and],number.
numberzzz --> [the],[first],[five],[positive],[numbers].
numberzzz --> [numbers],[zero],[through],[four].
numberzzz --> [numbers],[one],[through],[five].
numberzzz --> [numbers],[two],[through],[six].
numberzzz --> [numbers],[three],[through],[seven].
numberzzz --> [numbers],[four],[through],[eight].
numberzzz --> [numbers],[five],[through],[nine].
numberzzz --> [the],[odd],[numbers].
numberzzz --> [five],pluralnumber.
numberzzz --> [four],pluralnumber,[and],[one],number.
numberzzz --> [one],number,[and],[four],pluralnumber.
numberzzz --> [two],pluralnumber,[and],[three],pluralnumber.
numberzzz --> [three],pluralnumber,[and],[two],pluralnumber.
numberzzz --> [two],pluralnumber,[and],[two],pluralnumber,[and],[one],number.
numberzzz --> [one],number,[and],[two],pluralnumber,[and],[two],pluralnumber.
numberzzz --> [two],pluralnumber,[and],[one],number,[and],[two],pluralnumber.
number --> [zero].
number --> [one].
number --> [two].
number --> [three].
number --> [four].
number --> [five].
number --> [six].
number --> [seven].
number --> [eight].
number --> [nine].
pluralnumber --> [zeros].
pluralnumber --> [ones].
pluralnumber --> [twos].
pluralnumber --> [threes].
pluralnumber --> [fours].
pluralnumber --> [fives].
pluralnumber --> [sixes].
pluralnumber --> [sevens].
pluralnumber --> [eights].
pluralnumber --> [nines].

%%% END Crpto CFG
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% BEGIN Recognizer

recognizer :-
  read_sentence(S),
  sentence(S,[]),
  write('Ok'),nl,
  recognizer.
recognizer :-
  write('Not a sentence ...'),nl,
  recognizer.

%%% END Recognizer
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%