%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 積木の世界DCGファイル　高野真著「Prologで学ぶAI手法」(啓学出版１９８８）より %
% 命令体系： on(A,B) pickup(A) putdown putdown_on(A)　putdown_under(A) between(A,B,C)
%

入力文(Goal) -->命令(Goal).
入力文(Goal) -->質問(Goal).

%%%%
命令(Goal) -->操作句(Goal,命令).
命令(Goal) -->操作句(Goal,連用),"て".
命令(Goal) -->操作句(Goal,連用),依頼語尾.

% 質問(Goal) -->質問句(Goal,命令).

% 質問句(what,Kt)--> 
%%%%%%%%%%%%%%%%
%%  ブロックを取り上げる
操作句(pickup(Obj),Kt) -->つみき_O(Obj),把握動詞(Kt).

%%%%%%%%%%%%%%%%
% 手に持っているブロックをテーブルにおく
操作句(putdown,Kt) -->積載動詞(Kt).
操作句(putdown,Kt) --> テーブル_S,移動積載動詞(Kt).

% ブロックを取り上げテーブルのうえにおく
操作句((pickup(Obj),putdown),Kt) --> テーブル_S,つみき_O(Obj),移動積載動詞(Kt).
操作句((pickup(Obj),putdown),Kt) --> つみき_O(Obj),テーブル_S,移動積載動詞(Kt).

%　手に持っているブロックを別のブロックの｛上、下、間｝におく
操作句(putdown_on(Sup),Kt)    -->つみき_S(Sup),移動積載動詞(Kt).
操作句(putdown_under(Sup),Kt) -->つみき_Su(Sup),移動積載動詞(Kt).
操作句(between(Sup,Sup2),Kt)  -->つみき_Sb(Sup,Sup2),移動積載動詞(Kt).

%%%%%%%%%%%%%%%%%
% ブロックの上にブロックを置く
操作句(on(Obj,Sup),Kt) -->つみき_O(Obj),つみき_S(Sup),移動積載動詞(Kt).
操作句(on(Obj,Sup),Kt) -->つみき_S(Sup),つみき_O(Obj),移動積載動詞(Kt).
操作句(on(Obj,Sup),Kt) -->つみき_O(Obj),把握動詞(連用),つみき_S(Sup),移動積載動詞(Kt).

% ブロックの下にブロックを置く
操作句(on(Sup,Obj),Kt) -->つみき_O(Obj),つみき_Su(Sup),移動積載動詞(Kt).
操作句(on(Sup,Obj),Kt) -->つみき_Su(Sup),つみき_O(Obj),移動積載動詞(Kt).
操作句(on(Sup,Obj),Kt) -->つみき_O(Obj),把握動詞(連用),つみき_Su(Sup),移動積載動詞(Kt).

% ブロックとブロックの間にブロックを置く
操作句(between(Obj,Sup,Sup2),Kt) -->つみき_O(Obj),つみき_Sb(Sup,Sup2),移動積載動詞(Kt).
操作句(between(Obj,Sup,Sup2),Kt) -->つみき_Sb(Sup,Sup2),つみき_O(Obj),移動積載動詞(Kt).
操作句(between(Obj,Sup,Sup2),Kt) -->つみき_O(Obj),把握動詞(連用),つみき_Sb(Sup,Sup2),移動積載動詞(Kt).

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
つみき_O(Obj)  --> つみき(Obj),"を".
つみき_S(Obj)  --> つみき(Obj),over1,位置助詞.
つみき_S(Obj)  --> つみき(Obj),over2,位置助詞.
つみき_S(Obj)  --> つみき(Obj),位置助詞.
%%%%%
つみき_Su(Obj)  --> つみき(Obj),under1,位置助詞.
つみき_Su(Obj)  --> つみき(Obj),under2,位置助詞.

つみき_Sb(Obj,Obj2)  --> つみき(Obj),"と",つみき(Obj2),between1,位置助詞.
つみき_Sb(Obj,Obj2)  --> つみき(Obj),"と",つみき(Obj2),between2,位置助詞.
%%%%%
テーブル_S --> テーブル,over1,位置助詞.
テーブル_S --> テーブル,over2,位置助詞.
テーブル_S --> テーブル,位置助詞.
%%%%
% 質問動詞(X)-->"教え",
把握動詞(X)-->"つか",ま５(X).
把握動詞(X)-->"掴",ま５(X).
把握動詞(X)-->"と",ら５(X).
把握動詞(X)-->"取",ら５(X).

積載動詞(X)-->"つ",ま５(X).
積載動詞(X)-->"積",ま５(X).
積載動詞(X)-->"の",さ下一(X).
積載動詞(X)-->"乗",さ下一(X).
積載動詞(X)-->"載",さ下一(X).
積載動詞(X)-->"お",か５(X).
積載動詞(X)-->"置",か５(X).
積載動詞(X)-->解放動詞(X).

移動動詞(X)-->"うごか",さ５(X).
移動動詞(X)-->"動か",さ５(X).
移動動詞(X)-->"うつ",さ５(X).
移動動詞(X)-->"移",さ５(X).
移動動詞(X)-->"移動",さ変(X).
移動動詞(X)-->"いどう",さ変(X).

解放動詞(X)-->"はな",さ５(X).
解放動詞(X)-->"離",さ５(X).
解放動詞(X)-->"放",さ５(X).
解放動詞(X)-->"おろ",さ５(X).
解放動詞(X)-->"下ろ",さ５(X).
解放動詞(X)-->"降ろ",さ５(X).

移動積載動詞(X)--> 移動動詞(X).
移動積載動詞(X)--> 積載動詞(X).
%%%%
さ５(未然)-->"さ".
さ５(未然５)-->"そ".
さ５(連用)-->"し".
さ５(終止)-->"す".
さ５(連体)-->"す".
さ５(仮定)-->"せ".
さ５(命令)-->"せ".

さ変(未然)-->"さ".
さ変(未然)-->"し".
さ変(連用)-->"し".
さ変(終止)-->"する".
さ変(連体)-->"する".
さ変(仮定)-->"すれ".
さ変(命令)-->"せよ".
さ変(命令)-->"しろ".

ま５(未然)-->"ま".
ま５(未然５)-->"も".
ま５(連用)-->"み".
ま５(連用)-->"ん".    %連用音便
ま５(終止)-->"む".
ま５(連体)-->"む".
ま５(仮定)-->"め".
ま５(命令)-->"め".

さ下一(未然)-->"せ".
さ下一(連用)-->"せ".
さ下一(終止)-->"せる".
さ下一(連体)-->"せる".
さ下一(仮定)-->"せれ".
さ下一(命令)-->"せろ".
さ下一(命令)-->"せよ".

か５(未然)-->"か".
か５(未然５)-->"こ".
か５(連用)-->"き".
か５(連用)-->"っ".    %連用音便
か５(連用)-->"い".    %連用音便
か５(終止)-->"く".
か５(連体)-->"く".
か５(連体)-->"い".
か５(仮定)-->"け".
か５(命令)-->"け".

ら５(未然)-->"ら".
ら５(未然５)-->"ろ".
ら５(連用)-->"り".
ら５(連用)-->"っ".     %連用音便
ら５(終止)-->"る".
ら５(連体)-->"る".
ら５(仮定)-->"れ".
ら５(命令)-->"れ".

か変(未然)-->"こ".
か変(連用)-->"き".
か変(終止)-->"くる".
か変(連体)-->"くる".
か変(仮定)-->"くれ".
か変(命令)-->"こい".

%%%%
形容詞語尾(未然)-->"かろ".
形容詞語尾(連用)-->"く".
形容詞語尾(連用音便)-->"かっ".
形容詞語尾(終止)-->"い".
形容詞語尾(連体)-->"い".
形容詞語尾(仮定)-->"けれ".

%%%%
つみき(Color)-->色(Color),色.
つみき(Color)-->色(Color),色,"の",つみき.
つみき(Color)-->色(Color),色,形容詞語尾(連体),つみき.

%%%
色(赤)-->"あか".
色(赤)-->"赤".

色(青)-->"あお".
色(青)-->"青".

色(白)-->"しろ".
色(白)-->"白".

色(黄)-->"き".
色(黄)-->"黄".

色-->"いろ".
色-->"色".
色-->"".

%%%%
依頼語尾 -->接続辞,"ね".
依頼語尾 -->接続辞,"ください".
依頼語尾 -->接続辞,"くれ".
依頼語尾 -->接続辞,"ちょうだい".
依頼語尾 -->"なさい".
%%%%
接続辞 -->"て".
接続辞 -->"で".
%%%%
位置助詞 -->"に".
位置助詞 -->"へ".
位置助詞 -->"で".
%%%%
over1 --> "のうえ".
over1 --> "の上".
%%%%
over2 --> "じょう".
over2 --> "上".
%%%%
under1 --> "のした".
under1 --> "の下".
%%%%
under2 --> "か".
under2 --> "下".
%%%%
between1 --> "のあいだ".
between1 --> "の間".
%%%%
between2 --> "かん".
between2 --> "間".
%%%%
テーブル-->"テーブル".
テーブル-->"てーぶる".
テーブル-->"机".
テーブル-->"つくえ".
テーブル-->"台".
テーブル-->"だい".
テーブル-->"床".
テーブル-->"ゆか".
%%%%
つみき-->"積み木".
つみき-->"積木".
つみき-->"つみき".
つみき-->"箱".
つみき-->"はこ".
つみき-->"ぶろっく".
つみき-->"ブロック".
つみき-->"の".
つみき-->"やつ".

%%%% End Of DCG File %%%%
