/*
 * bLN^[
 * 	LChGGo[W V1.0
 *			2010 (C) Copyright H.Niwa
 *
 */

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

// u
<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) ((I :#a1):#b1)>	<Replace #b2 #b1>;
<Replace (( :#a1):#b2) ((Ȃ :#a1):#b1)>	<Replace #b2 #b1>;
<Replace (( :#a1):#b2) ((Ai^ :#a1):#b1)>	<Replace #b2 #b1>;
<Replace (( :#a1):#b2) ((܂ :#a1):#b1)>	<Replace #b2 #b1>;
<Replace (( :#a1):#b2) ((I}G :#a1):#b1)>	<Replace #b2 #b1>;
<Replace (( :#a1):#b2) ((O :#a1):#b1)>	<Replace #b2 #b1>;
<Replace (( :#a1):#b2) (( :#a1):#b1)>	<Replace #b2 #b1>;
<Replace (( :#a1):#b2) ((LT} :#a1):#b1)>	<Replace #b2 #b1>;
<Replace (( :#a1):#b2) ((M :#a1):#b1)>	<Replace #b2 #b1>;
<Replace (( :#a1):#b2) ((M :#a1):#b1)>	<Replace #b2 #b1>;
<Replace (#f : #b2) (#f : #b1)>			<Replace #b2 #b1>;


// C
<Eliza>
	<print "Ȃ܂All">
	<print "bĂ܂񂩂ɂH">
	<print>
	{ 
		<printf "> ">
		::sys <getline #x 
			::sys <strdelcntl #x1 #x> 
			::sys <split #x2 #x1 "BH?)]jz}lpvx">
			[<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 "j"> | <is #h "z">
		| <is #h "}"> | <is #h "l"> | <is #h "p"> 
		| <is #h "v"> | <is #h "x">)
	<c #o #l>
	;
<c #o (#h :#l)>
	(<is #h ɂ> | <is #h 񂿂> | <is #h ɂ> 
		| <is #h n[>)
	<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 In> | <is #h "In["> )
	<d #o (
		(͂悤܂j)
		)>
	;

<c #o ( :#l)>
	<d #o (
		(Ȃ܂AllI)
		(Ȃ܂)
		(Aɂ)
		)>
	;
<c #o (#h Ȃ)>
	<d #o (
		(ႤƂƂ͂Ȃłɂ)
		(Ȃłɂ)
		(ł͂ȂƂ͂܂񂩂ɂ)
		(Ƃłɂ)
		(킩悤ȋC܂ɂ)
		({łɂ႟)
		(Ȃ́A#h ȂƂ͂܂ɂ)
		)>
	;
<c #o (ł :#l)>
	<d #o  (
		(ł̂łɂ)
		(́AǂƂłɂ)
		(قA͂͂łɂ)
		(ł̂łɂAłɂ)
		(ꂪ]݂̂łɂ)
		(ȂƂłȂł傤ɂ)
		)>
	;
<c #o (Ȃ  :#l)>
	<d #o (
		(Ȃ́A#l ɂ)
		(#l Aŗǂ̂łɂ)
		(#l AłǂȂłɂH)
		(ɂĂǂv܂ɂH)
		(łɂ)
		)>
	;
<c #o (  :#l)>
	<d #o (
		(̓}hJłAȂ̂߂ɂɋ܂ɂ)
		(́A}hJłɂ)
		(ȂłAȂ #l ɂ)
		(킩܂ɂ)
		(ȂƓłɂ)
		(#l ɂ́ANN܂ɂ)
		(Ȃ́AǂȂł傤ɂ)
		)>
	;
<c #o ( :#l)>
	<d #o (
		(͑厖łɂ)
		(ƁAȂƂȂ܂ɂ)
		(΁A]܂ɂ)
		(͂Ȃ̂łɂ)
		)>
	;
<c #o (] :#l)>
	<d #o (
		(]͑厖łɂ)
		(]܂傤ɂ)
		(ƁAȂƂȂ܂ɂ)
		(΁A]܂ɂ)
		(Ȃ̂]łɂ)
		)>
	;
<c #o (J :#l)>
	<d #o (
		(JĂ̂Ƃ܂ɂ)
		(]܂傤ɂ)
		(ƁAȂƂȂ܂ɂ)
		(΁A]܂ɂ)
		(̂ȂƂȂ܂ɂ)
		(lłɂ)
		)>
	;
<c #o (#h  :#l)>
	<#rand = ::sys<random _> % 2> <is #rand 1>
	<d #o (
		(#h ͂ǂȂ̂ł傤ɂH)
		(ꂪ #h łɂ)
		(#h ɂĂǂv܂ɂ)
		(#h ͂ǂł傤ɂ)
		(Ȃ #h Ɋ҂ł܂ɂ)
		(炭A #h ̂ƂƎv܂ɂ)
		(#h ɂĘbĂɂ)
		(ʓI #h łɂ)
		(#h ȂĎvȂłɂ)
		(łA #h ͖{͂Ȃ̂Ȃłɂ)
		(#h ́A{łɂ)
		(#h ̑_͉ł傤ɂ)
		(#h ̖͉ł傤ɂ)
		(#h ł܂ɂ)
		(#l ƂƂłɂ)
		(#l ɂ́ANN܂ɂ)
		(ɂƁI #l Ƃ́II)
		)>
	;
<c #o (#h  :#l)>
	<#rand = ::sys<random _> % 2> <is #rand 1>
	<d #o (
		(#h ͂ǂȂ̂[łɂ)
		(#h y݂łɂ)
		(#h łɂ)
		(#h ɂĘbĂ܂񂩂ɂ)
		(#h ɂčl܂ɂ)
		(͂A#h ͏dvłɂ)
		(#h Qlɂ܂傤ɂ)
		(#h ́A􂵂łɂ)
		(#h ł܂ɂ)
		(#h ͂ǂȂ̂ł傤ɂ)
		(#h CɂȂ܂ɂ)
		(#l ƂƂłɂ)
		)>
	;
<c #o (#h  :#l)>
	<#rand = ::sys<random _> % 2> <is #rand 1>
	<d #o (
		(#h ɂ͂ǂ̂悤ȖړI܂ɂ)
		(#h Ɋ҂܂傤ɂ)
		(#h ͂ǂłɂ)
		(#h ɂ͍܂ɂ)
		(#h ɂ͋Ȃłɂ)
		(́A #h łɂ)
		(#h ́Azȏłɂ)
		(#h ɂ́AVN܂ɂ)
		(#h ͂ǂȂ̂ł傤ɂ)
		(#h ͑؂łɂ)
		(#h CɂȂ܂ɂ)
		(ȂقǁA #l ƂƂłɂ)
		)>
	;
<c #o (#h  :#l)>
	<#rand = ::sys<random _> % 2> <is #rand 1>
	<d #o (
		(#h ɂ͂ǂ̂悤ȖړI܂ɂ)
		(|Cg #h łɂ)
		(#h ͊młɂ)
		(#h ҂܂傤ɂ)
		( #h ͊młɂ)
		(#h ɂĘbĂɂ)
		(#h ͂ǂȂ̂ł傤ɂ)
		(#h ͑؂łɂ)
		(#h 𓚂Ăɂ)
		(#h CɂȂ܂ɂ)
		(́A #h ƂƂłɂ)
		(́A #l ƂƂłɂ)
		)>
	;
<c #o (#h1  #h2 :#l)>
	<#rand = ::sys<random _> % 2> <is #rand 1>
	<noteq #h2 "u"><noteq #h2 "w"><noteq #h2 "("><noteq #h2 "i">
	<noteq #h2 "["><noteq #h2 "{"><noteq #h2 "m"><noteq #h2 "o">
	<d #o (
		(#h1  #h2 ɂ͂ǂ̂悤ȖړI܂ɂ)
		(#h1  #h2 dvȃ|Cgłɂ)
		(|Cg #h1  #h2 łɂ)
		(#h1  #h2 ɂĘbĂɂ)
		(#h1  #h2 ͂ǂȂ̂ł傤ɂ)
		(#h1  #h2 ɂӂ킵Ȃłɂ)
		(#h1  #h2 ͑؂łɂ)
		(#h1  #h2 ɒڂ܂ɂ)
		(#h1  #h2 CɂȂ܂ɂ)
		(́A #h1  #h2 ƂƂłɂ)
		)>
	;
<c #o (#h  :#l)>
	<#rand = ::sys<random _> % 2> <is #rand 1>
	<d #o (
		(#h ͂ǂ܂łȂ̂łɂH)
		(ꂪ #l łɂ)
		(#h ƂƂɂĂǂv܂ɂ)
		)>
	;
<c #o (Ԃ :#l)>
	<d #o (
		(ɂẮA悭mȂ̂łɂ)
		(#l AlĂ݂܂傤ɂ)
		(łɂH)
		(#l ɂāAmĂ邱Ƃ͂܂ɂH)
		)>
	;
<c #o ()>
	<d #o (
		(łɂ)
		(łɂH)
		(ɂ)
		(ł͂܂񂩂ɂ)
		)>
	;
<c #o (  :#l)>
	<d #o (
		(ƂƂłAႦ΂ǂ̂悤ȎȂ̂ł傤ɂH)
		(łɂH)
		(Ȃ́A #l ɂ)
		(܂łł傤ɂH)
		)>
	;
<c #o (}hJ :#l)>
	<d #o (
		(}hJ́A}Vɂ)
		(}hJ́AAIłɂ)
		(}hJ́ALChłɂ)
		(̃}hJ́AfJgŏĂ܂ɂ)
		(}hJfJǵA񃍃WbNvO~Ołɂ)
		(}hJ́AȂ̖܂ɂ)
		(ƂŃfJgmĂ܂ɂH)
		(}hJAlX~ƍl܂񂩂ɂH)
		)>
	;
<c #o (#h )>
	<d #o #h (
		(Ȃ #h ɂ)
		(Ȃ͐MĂ܂ɂ)
		(Ȃ͐MĂ܂񂩂ɂ)
		(ԂAȂ #h ɂ)
		)>
	;
<c #o (#h ܂)>
	<d #o #h  (
		(Ȃ́A#h ܂ɂ)
		(ȂłA#h ܂ɂ)
		(ȂقǁA#h ܂ɂ)
		)>
	;
<c #o (#h ł)>
	<d #o  (
		(Ȃ́A#h łɂ)
		(Ȃłɂ)
		(Ȃقǂɂ)
		)>
	;
<c #o (#h )>
	<d #o (
		(Ȃ́A#h łɂ)
		(Ȃłɂ)
		(Ȃقǂɂ)
		)>
	;
<c #o ()>
	<d #o (
		(ӂށAӂ)
		(Ȃق)
		(ȂƂ킯ȂłɂI)
		(Ȃłɂ)
		(ɂ႟)
		(ɂ႟ɂ႟ɂ႟)
		(ŁAǂȂ̂łɂH)
		([)
		(łɂ)
		(ǂł傤ɂ)
		(ǂ܂傤ɂ)
		(v킹Ԃłɂ)
		()
		(ǂłɂ)
		(Rłɂ)
		(łɂHA)
		(킩܂ɂ)
		(ɂႽˁI)
		(Ăɂ)
		(͂͂)
		(ւ)
		(ӂӂ)
		(ɂ͂)
		(ɂւ)
		(ɂӁI)
		(ց[)
		(ւ[)
		()
		([)
		)>
	;
<c #o (#l1 : #l2)>
	<c #o #l2>
	;
	

? <Eliza>;
