/*
 * 会話キャラクター
 * 	猫耳メイド萌え萌えバージョン V1.0
 *			2010 (C) Copyright H.Niwa
 *
 */

? <include list>;
? <include generator>;
? <include ktaiso>;

// 置き換え
<Replace () ()>;
<Replace ((あなた :#a1):#b2) ((私 :#a1):#b1)>	<Replace #b2 #b1>;
<Replace ((あなた :#a1):#b2) ((わたし :#a1):#b1)><Replace #b2 #b1>;
<Replace ((あなた :#a1):#b2) ((あたし :#a1):#b1)><Replace #b2 #b1>;
<Replace ((あなた :#a1):#b2) ((俺 :#a1):#b1)>	<Replace #b2 #b1>;
<Replace ((あなた :#a1):#b2) ((おれ :#a1):#b1)>	<Replace #b2 #b1>;
<Replace ((あなた :#a1):#b2) ((オレ :#a1):#b1)>	<Replace #b2 #b1>;
<Replace ((私 :#a1):#b2) ((あなた :#a1):#b1)>	<Replace #b2 #b1>;
<Replace ((私 :#a1):#b2) ((アナタ :#a1):#b1)>	<Replace #b2 #b1>;
<Replace ((私 :#a1):#b2) ((おまえ :#a1):#b1)>	<Replace #b2 #b1>;
<Replace ((私 :#a1):#b2) ((オマエ :#a1):#b1)>	<Replace #b2 #b1>;
<Replace ((私 :#a1):#b2) ((お前 :#a1):#b1)>	<Replace #b2 #b1>;
<Replace ((私 :#a1):#b2) ((きさま :#a1):#b1)>	<Replace #b2 #b1>;
<Replace ((私 :#a1):#b2) ((キサマ :#a1):#b1)>	<Replace #b2 #b1>;
<Replace ((私 :#a1):#b2) ((貴方 :#a1):#b1)>	<Replace #b2 #b1>;
<Replace ((私 :#a1):#b2) ((貴女 :#a1):#b1)>	<Replace #b2 #b1>;
<Replace (#f : #b2) (#f : #b1)>			<Replace #b2 #b1>;


// メイン処理
<Eliza>
	<print "おかえりなさいませ、ご主人様">
	<print "何か話してくださいませんかにゃ？">
	<print>
	{ 
		<printf "> ">
		::sys <getline #x 
			::sys <strdelcntl #x1 #x> 
			::sys <split #x2 #x1 "。？?)]）】}〕｝」』">
			[<noteq #x2 ()> <print>]
			<foreach (#x3 #x2)
			    ::sys <syntax #x3
				(
				  ::ktaiso <文 #a #b>
				  <Replace #a2 #a>
				  <is #n (#a2 #b)>
				|
				  <is #n (#x2)>
				)
				::list <flatten #list #n>
				<c #list2 #list>
				::list <flatten #list3 (#list2)>
				::sys <concat #s #list3>
				<print "#" #s>
			    >
			>
			[<noteq #x2 ()> <print>]
		>
	};


// select one at random
<comb #r #l>
	::generator <permutation #r1 #l 1>
	::sys <car #r #r1>
	;

// data operation
<d #o #list>
	<comb #o #list>
	;

// Keyword and conversation data	
<c #o (#h _ :#l)>
	(<is #h ")"> | <is #h "]"> | <is #h "）"> | <is #h "】">
		| <is #h "}"> | <is #h "〕"> | <is #h "｝"> 
		| <is #h "」"> | <is #h "』">)
	<c #o #l>
	;
<c #o (#h :#l)>
	(<is #h こんにちは> | <is #h こんちは> | <is #h こんにち> 
		| <is #h ハロー>)
	<d #o (
		(こんにちにゃ)
		)>
	;
<c #o (#h :#l)>
	(<is #h こんばんは>)
	<d #o (
		(こんばんにゃ)
		)>
	;
<c #o (#h :#l)>
	(<is #h あは> | <is #h あはよ> | <is #h あはよう> | <is #h "おはよー"> 
		| <is #h おはようござい> | <is #h オハヨ> | <is #h "オハヨー"> )
	<d #o (
		(おはようございますニャ)
		)>
	;

<c #o (ただいま :#l)>
	<d #o (
		(おかえりなさいませ、ご主人様！)
		(おかえりなさいませ)
		(お帰りにゃ)
		)>
	;
<c #o (#h ない)>
	<d #o (
		(違うということはないですかにゃ)
		(そうなんですにゃ)
		(そうではないことはありませんかにゃ)
		(そういうことですにゃ)
		(わかるような気がしますにゃ)
		(本当ですかにゃぁ)
		(あなたは、#h ないことはありませんにゃ)
		)>
	;
<c #o (でき :#l)>
	<d #o  (
		(できたのですにゃ)
		(それは、良いことですにゃ)
		(ほう、それはそれはですにゃ)
		(できたのですかにゃ、すごいですにゃ)
		(それが望みだったのですかにゃ)
		(なんとかできないでしょうかにゃ)
		)>
	;
<c #o (あなた は :#l)>
	<d #o (
		(あなたは、#l にゃ)
		(#l 、それで良かったのですにゃ)
		(#l 、それでどうなったですかにゃ？)
		(それについてどう思いますかにゃ？)
		(私も同じですにゃ)
		)>
	;
<c #o (私 は :#l)>
	<d #o (
		(私はマドカです、あなたのためにここに居ますにゃ)
		(私は、マドカですにゃ)
		(そうなんです、あなたは #l にゃ)
		(わかりませんにゃ)
		(あなたと同じですにゃ)
		(#l には、ワクワクしますにゃ)
		(あなたは、どうなんでしょうかにゃ)
		)>
	;
<c #o (夢 :#l)>
	<d #o (
		(夢は大事ですにゃ)
		(きっと、なんとかなりますにゃ)
		(夢があれば、希望がありますにゃ)
		(夢はかなえるものですにゃ)
		)>
	;
<c #o (希望 :#l)>
	<d #o (
		(希望は大事ですにゃ)
		(希望を持ちましょうにゃ)
		(きっと、なんとかなりますにゃ)
		(夢があれば、希望がありますにゃ)
		(かなえるのが希望ですにゃ)
		)>
	;
<c #o (苦労 :#l)>
	<d #o (
		(苦労してもそのうちいいことありますにゃ)
		(希望を持ちましょうにゃ)
		(きっと、なんとかなりますにゃ)
		(夢があれば、希望がありますにゃ)
		(そのうちなんとかなりますにゃ)
		(お疲れ様ですにゃ)
		)>
	;
<c #o (#h は :#l)>
	<#rand = ::sys<random _> % 2> <is #rand 1>
	<d #o (
		(#h はどうなるのでしょうかにゃ？)
		(それが #h ですにゃ)
		(#h についてどう思いますかにゃ)
		(#h はどうでしょうかにゃ)
		(こうなると #h に期待できますにゃ)
		(おそらく、 #h のことだと思いますにゃ)
		(#h について話してくださいにゃ)
		(一般的な #h ですにゃ)
		(#h なんて思いつかないですにゃ)
		(でも、 #h は本当はこんなものじゃないですにゃ)
		(#h は、本質ですにゃ)
		(#h の狙いは何でしょうかにゃ)
		(#h の問題は何でしょうかにゃ)
		(#h を実感できましたにゃ)
		(#l ということですにゃ)
		(#l には、ワクワクしますにゃ)
		(にゃんと！ #l とは！！)
		)>
	;
<c #o (#h が :#l)>
	<#rand = ::sys<random _> % 2> <is #rand 1>
	<d #o (
		(#h が今後はどうなるのか興味深いですにゃ)
		(#h が楽しみですにゃ)
		(#h ですにゃ)
		(#h について話してくださいませんかにゃ)
		(#h について考えますにゃ)
		(やはり、#h は重要ですにゃ)
		(#h を参考にしましょうにゃ)
		(#h は、飛躍しすぎですにゃ)
		(#h が実感できますにゃ)
		(#h はどうなるのでしょうにゃ)
		(#h が気になりますにゃ)
		(#l ということですにゃ)
		)>
	;
<c #o (#h に :#l)>
	<#rand = ::sys<random _> % 2> <is #rand 1>
	<d #o (
		(#h にはどのような目的がありますかにゃ)
		(#h に期待しましょうにゃ)
		(#h はどうですかにゃ)
		(#h には困りましたにゃ)
		(#h には興味ないですかにゃ)
		(それは、 #h ですにゃ)
		(#h は、想定以上ですにゃ)
		(#h には、新鮮さを感じますにゃ)
		(#h はどうなるのでしょうかにゃ)
		(#h は大切ですにゃ)
		(#h が気になりますにゃ)
		(なるほど、 #l ということですにゃ)
		)>
	;
<c #o (#h を :#l)>
	<#rand = ::sys<random _> % 2> <is #rand 1>
	<d #o (
		(#h にはどのような目的がありますかにゃ)
		(ポイントは #h ですにゃ)
		(#h は確かですにゃ)
		(#h を待ちましょうにゃ)
		(その #h は確かですかにゃ)
		(#h について話してくださいにゃ)
		(#h はどうなるのでしょうかにゃ)
		(#h は大切ですにゃ)
		(#h を答えてくださいにゃ)
		(#h が気になりますにゃ)
		(それは、 #h ということですにゃ)
		(それは、 #l ということですにゃ)
		)>
	;
<c #o (#h1 の #h2 :#l)>
	<#rand = ::sys<random _> % 2> <is #rand 1>
	<noteq #h2 "「"><noteq #h2 "『"><noteq #h2 "("><noteq #h2 "（">
	<noteq #h2 "["><noteq #h2 "{"><noteq #h2 "［"><noteq #h2 "｛">
	<d #o (
		(#h1 の #h2 にはどのような目的がありますかにゃ)
		(#h1 の #h2 が重要なポイントですにゃ)
		(ポイントは #h1 の #h2 ですにゃ)
		(#h1 の #h2 について話してくださいにゃ)
		(#h1 の #h2 はどうなるのでしょうかにゃ)
		(#h1 の #h2 にふさわしくないですにゃ)
		(#h1 の #h2 は大切ですにゃ)
		(#h1 の #h2 に注目しますにゃ)
		(#h1 の #h2 が気になりますにゃ)
		(それは、 #h1 の #h2 ということですにゃ)
		)>
	;
<c #o (#h から :#l)>
	<#rand = ::sys<random _> % 2> <is #rand 1>
	<d #o (
		(#h からはどこまでなのですかにゃ？)
		(それが #l ですにゃ)
		(#h からということについてどう思いますかにゃ)
		)>
	;
<c #o (たぶん :#l)>
	<d #o (
		(それについては、よく知らないのですかにゃ)
		(#l が、もう少し考えてみましょうにゃ)
		(たしかですかにゃ？)
		(#l について、知っていることはありますかにゃ？)
		)>
	;
<c #o (そうか)>
	<d #o (
		(そうですにゃ)
		(そうですかにゃ？)
		(そうそうにゃ)
		(そうではありませんかにゃ)
		)>
	;
<c #o (いつ も :#l)>
	<d #o (
		(いつもということですが、例えばどのような時なのでしょうかにゃ？)
		(いつからですかにゃ？)
		(あなたは、いつも #l にゃ)
		(いつまででしょうかにゃ？)
		)>
	;
<c #o (マドカ :#l)>
	<d #o (
		(マドカは、マシンだからにゃ)
		(マドカは、AIですにゃ)
		(マドカは、猫耳メイドですにゃ)
		(このマドカは、デカルト言語で書かれていますにゃ)
		(マドカを作ったデカルト言語は、並列ロジックプログラミング言語ですにゃ)
		(マドカは、あなたの問題を解決しますにゃ)
		(ところでデカルト言語を知っていますかにゃ？)
		(マドカが、人々を救うと考えられませんかにゃ？)
		)>
	;
<c #o (#h か)>
	<d #o #h (
		(あなたは #h にゃ)
		(あなたは信じていますにゃ)
		(あなたは信じていませんかにゃ)
		(たぶん、あなたは #h にゃ)
		)>
	;
<c #o (#h ました)>
	<d #o #h  (
		(あなたは、#h ましたにゃ)
		(そうなんですか、#h ましたにゃ)
		(なるほど、#h ましたにゃ)
		)>
	;
<c #o (#h です)>
	<d #o  (
		(あなたは、#h ですにゃ)
		(そうなんですにゃ)
		(なるほどにゃ)
		)>
	;
<c #o (#h だ)>
	<d #o (
		(あなたは、#h ですにゃ)
		(そうなんですかにゃ)
		(なるほどにゃ)
		)>
	;
<c #o ()>
	<d #o (
		(ふむ、ふむ)
		(なるほど)
		(そんなことあるわけないですにゃ！)
		(そうなんですにゃ)
		(にゃぁ)
		(にゃぁにゃぁにゃぁ)
		(それで、どうなるのですかにゃ？)
		(えーっと)
		(そうですにゃ)
		(どうでしょうにゃ)
		(どうしましょうにゃ)
		(思わせぶりですにゃ)
		(えっ)
		(どうですかにゃ)
		(嘘ですかにゃ)
		(何ですにゃ？、それは)
		(わかりましたにゃ)
		(あにゃたね！)
		(教えてくださいにゃ)
		(ははは)
		(へへ)
		(ふふふ)
		(にゃはは)
		(にゃへっ)
		(にゃふ！)
		(へー)
		(へぇー)
		(えぇ)
		(えー)
		)>
	;
<c #o (#l1 : #l2)>
	<c #o #l2>
	;
	

? <Eliza>;
