/*
 * 会話キャラクター
 * 	ツンデレバージョン 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 ((私 :#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 ない)>
	<d #o (
		(違うんじゃないの)
		(そうよ)
		(そういうことよ)
		(本当！)
		(あんたは、#h じゃないわ)
		)>
	;
<c #o (でき :#l)>
	<d #o  (
		(できたのね)
		(それは、良いことよ)
		(やったー)
		(できたの、すごいわ、すごいわ！)
		(それが望みだったの、本当かしら)
		(なんとかできないかしら)
		)>
	;
<c #o (あんた は :#l)>
	<d #o (
		(あんたは、#l )
		(#l  、それで良かったの)
		(#l 、それでどうなったのよ？)
		(どう思うのよ？)
		(私も同じ)
		)>
	;
<c #o (私 は :#l)>
	<d #o (
		(私は凜子、あんたのためにここに居るのよ)
		(私は、凜子)
		(そうよ、あんたは #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 は本当はこんなものじゃないよね)
		(#l ということね)
		(#h なんて思いつかないわ)
		(#h は、本質ね)
		(#h の狙いは何？何をたくらんでるのよ)
		(#h の問題は何？)
		(#h を実感できたわ)
		(#h には、ワクワクするわ)
		(#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 はどうなるの？わからないの？)
		(なるほどね、 #l ということね)
		)>
	;
<c #o (#h を :#l)>
	<#rand = ::sys<random _> % 2> <is #rand 1>
	<d #o (
		(#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 ということね)
		)>
	;
<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 ね)
		)>
	;
<c #o (#h です)>
	<d #o (
		(そうよ、 #h よ)
		(#h なのね)
		(なるほどね #h ね)
		)>
	;
<c #o (#h だ)>
	<d #o (
		(そうだわ、 #h ね)
		(#h ね)
		(なるほどね #h ね)
		)>
	;
<c #o (#h だった)>
	<d #o (
		(そうよ、 #h よ)
		(#h ね)
		(なるほどね #h ね)
		)>
	;
<c #o ()>
	<d #o (
		(ふむ、ふむ)
		(なるほどね)
		(そんなことあるわけないでしょ！)
		(そうなのね、本当ね？)
		(それで、どうなるの？あー、もー！早く教えなさい。)
		(わかるわ)
		(えーと)
		(そうなのね)
		(やるじゃない)
		(えっ)
		(どうなのよ、はっきりしなさいよ！)
		(どうなのよ)
		(どうしようか)
		(どうされたいの？)
		(嘘なのね)
		(思わせぶりね)
		(何なのよ、それは)
		(あんたね！)
		(教えて)
		(ははは)
		(へへん)
		(ふふふ)
		(きゃはっ！)
		(きゃははは)
		(きゃ)
		(へー)
		(へぇー)
		(えぇ)
		(えー)
		)>
	;
<c #o (#l1 : #l2)>
	<c #o #l2>
	;
	

? <Eliza>;
