KanjiCode

== Introduction == 
KanjiCode (漢字コード) is a language created by ACVC in 7/1/2012. It has similarities to FALSE and Underload. As the very own name suggests, it's a language that aims to use as much Kanji as possible. There are currently no compilers for the language, only one interpreter, written in C#. It is very similar to FALSE in almost all aspects. For example, it's possible to create lambda expressions and store then into user-defined variables. Also, it's stack oriented : just like FALSE.
==Instructions ==
" <string> " -> When the program finds a string, it just prints it.
足　-> Sums the two topmost elements of the stack and pushes the result onto the top of the stack.
掛　-> Multiplies the two topmost elements of the stack and pushes the result onto the top of the stack.
実 -> Executes a lambda expression located at the top of the stack. If no lambda expression is found, nothing is done.
0,1,2... n -> When the program finds a number, it's simply pushed onto the top of the stack.
引 -> Performs a subtraction operation between the second and the first members of the stack (Second - First) and pushes the result onto the top of the stack.
割 -> (Division operator) Works the same way as the subtraction operator.
倍 -> Multiplies the value at the top of the stack by two.
読<variable> -> Reads the value of a named variable and pushes the result onto the top of the stack, remembering that a variable name may only be composed of a single character.
[ <statements> ] -> Pushes a lambda expression onto the top of the stack.
→<var_name>　-> Assigns the value at the top of the stack to a named variable. It can be either a number or a lambda expression.
止 -> Halts the program and waits for a keystroke to continue.
若[<Condition>]<var_name><var_name2> -> Performs a conditional check. If the condition is true, then the lambda expression contained within <var_name> is executed, otherwise the lambda expression executed is the one contained within <var_name2>.
繰<var_name><var_name2> -> The lambda expression in <var_name2> will be executed until the value of <var_name> is 0.
替 -> Switches the two topmost elements of the stack.
行 -> Prints the line terminator.
除 -> Clears the stack.
逆 -> Reverses the stack's order.
数 -> Prints the topmost element of the stack as an integer. Does not remove it from the top.
字 -> Prints the topmost element of the stack as an ASCII character. Does not remove it from the top.
外 -> Removes the topmost element of the stack.
== Code samples ==
(The "Hello, world!" program.)
 1倍倍倍倍倍倍1倍倍倍足字
 29足字7足字字3足字1足2割12引字
 12引字3掛23足字8引字3足字6引字
 8引字3割字止
or even
 "Hello, world!"止
(This example prints 'Hello, world!' 10 times.)
 0→下10→上1→制
 [0→制]→変
 [読下1足→下]→増
 ["Hello, world!"行]→λ
 [読λ実読増実若[下>=上]変無]→体
 繰制体止
(This example prints a number of the Fibonacci's sequence everytime the user presses 'Enter')
 1 1　数行数行
 [足数行止]→λ 1→制
 繰制λ
(99 bottles of beer)
 1→制99→御[0→制]→変
 [読御数 " bottles of beer on the wall, "数" bottles of beer."行"Take one down pass it around, " 1引数 " bottles of beer on the wall."
 行行]→★[読御1引→御]→下
 [読下読★実外実若[御<<制]変無 ]→体
 繰制体"No more bottles of beer on the wall, no more bottles of beer. 
 Go to the store and buy some more, 99 bottles of beer on the wall."止
== Computational class ==
替外[]実 seem to correspond to Underload ~!()^. KanjiCode lacks Underload :, but it can still be achieved by using the construction →<variable>読<variable>読<variable> or even [→<variable>読<variable>読<variable>]→<variable'> (Construction which would have to be called through usage of the 実 and 読 operators : <variable'>読実) . KanjiCode can, therefore, emulate a Turing complete subset of Underload.
== External resources ==
*The interpreter can be downloaded here: KCInterpreter (binary only, no source.)
Category:Turing complete
Category:CJK