--- /dev/null
+public class Readline
+{
+ fun static string readline(string prompt)
+ {
+ int done;
+ string input;
+ KBHit kb;
+ int char;
+ string repr;
+
+ ["NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "BEL",
+ "BS", "HT", "LF", "VT", "FF", "CR", "SO", "SI",
+ "DLE", "DC1", "DC2", "DC3", "DC4", "NAK", "SYN", "ETB",
+ "CAN", "EM", "SUB", "ESC", "FS", "GS", "RS", "US",
+ " ", "!", "\"", "#", "$", "%", "&", "'",
+ "(", ")", "*", "+", ",", "-", ".", "/",
+ "0", "1", "2", "3", "4", "5", "6", "7",
+ "8", "9", ":", ";", "<", "=", ">", "?",
+ "@", "A", "B", "C", "D", "E", "F", "G",
+ "H", "I", "J", "K", "L", "M", "N", "O",
+ "P", "Q", "R", "S", "T", "U", "V", "W",
+ "X", "Y", "Z", "[", "\\", "]", "^", "_",
+ "`", "a", "b", "c", "d", "e", "f", "g",
+ "h", "i", "j", "k", "l", "m", "n", "o",
+ "p", "q", "r", "s", "t", "u", "v", "w",
+ "x", "y", "z", "{", "|", "}", "~", "DEL"] @=> string asciiTable[];
+
+ chout <= prompt;
+ chout.flush();
+
+ while( !done )
+ {
+ kb => now;
+
+ while( kb.more() && !done )
+ {
+ kb.getchar() => char;
+ asciiTable[char] => repr;
+
+ if( repr == "EOT" || repr == "LF" || repr == "CR" )
+ {
+ true => done;
+ }
+ else
+ {
+ chout <= repr;
+ chout.flush();
+ repr +=> input;
+ }
+ }
+ }
+
+ chout <= "\n";
+
+ if( repr == "EOT" )
+ {
+ return null;
+ }
+
+ return input;
+ }
+}
+
+// @import readline.ck
+
fun string READ(string input)
{
return input;
fun void main()
{
- ConsoleInput stdin;
- string input;
+ int done;
- while( true )
+ while( !done )
{
- stdin.prompt("user>") => now;
- stdin.getLine() => input;
- chout <= rep(input) + "\n";
+ Readline.readline("user> ") => string input;
+
+ if( input != null )
+ {
+ chout <= rep(input) + "\n";
+ }
+ else
+ {
+ true => done;
+ }
}
}
+// @import readline.ck
// @import types/boxed/*.ck
// @import types/MalObject.ck
// @import types/mal/MalAtom.ck
fun void main()
{
- ConsoleInput stdin;
- string input;
+ int done;
- while( true )
+ while( !done )
{
- stdin.prompt("user>") => now;
- stdin.getLine() => input;
- rep(input) => string output;
+ Readline.readline("user> ") => string input;
- if( output == "empty input" )
+ if( input != null )
{
- // proceed immediately with prompt
+ rep(input) => string output;
+
+ if( output == "empty input" )
+ {
+ // proceed immediately with prompt
+ }
+ else
+ {
+ Util.println(output);
+ }
}
else
{
- chout <= output + "\n";
+ true => done;
}
}
}
+// @import readline.ck
// @import types/boxed/*.ck
// @import types/MalObject.ck
// @import types/mal/MalAtom.ck
fun void main()
{
- ConsoleInput stdin;
- string input;
+ int done;
- while( true )
+ while( !done )
{
- stdin.prompt("user>") => now;
- stdin.getLine() => input;
- rep(input) => string output;
+ Readline.readline("user> ") => string input;
- if( output == "empty input" )
+ if( input != null )
{
- // proceed immediately with prompt
+ rep(input) => string output;
+
+ if( output == "empty input" )
+ {
+ // proceed immediately with prompt
+ }
+ else
+ {
+ Util.println(output);
+ }
}
else
{
- chout <= output + "\n";
+ true => done;
}
}
}
+// @import readline.ck
// @import types/boxed/*.ck
// @import types/MalObject.ck
// @import types/mal/MalAtom.ck
fun void main()
{
- ConsoleInput stdin;
- string input;
+ int done;
- while( true )
+ while( !done )
{
- stdin.prompt("user>") => now;
- stdin.getLine() => input;
- rep(input) => string output;
+ Readline.readline("user> ") => string input;
- if( output == "empty input" )
+ if( input != null )
{
- // proceed immediately with prompt
+ rep(input) => string output;
+
+ if( output == "empty input" )
+ {
+ // proceed immediately with prompt
+ }
+ else
+ {
+ Util.println(output);
+ }
}
else
{
- chout <= output + "\n";
+ true => done;
}
}
}
+// @import readline.ck
// @import types/boxed/*.ck
// @import types/MalObject.ck
// @import types/mal/MalAtom.ck
fun void main()
{
- ConsoleInput stdin;
- string input;
+ int done;
- while( true )
+ while( !done )
{
- stdin.prompt("user>") => now;
- stdin.getLine() => input;
- rep(input) => string output;
+ Readline.readline("user> ") => string input;
- if( output == "empty input" )
+ if( input != null )
{
- // proceed immediately with prompt
+ rep(input) => string output;
+
+ if( output == "empty input" )
+ {
+ // proceed immediately with prompt
+ }
+ else
+ {
+ Util.println(output);
+ }
}
else
{
- Util.println(output);
+ true => done;
}
}
}
+// @import readline.ck
// @import types/boxed/*.ck
// @import types/MalObject.ck
// @import types/mal/MalAtom.ck
fun void main()
{
- ConsoleInput stdin;
- string input;
+ int done;
- while( true )
+ while( !done )
{
- stdin.prompt("user>") => now;
- stdin.getLine() => input;
- rep(input) => string output;
+ Readline.readline("user> ") => string input;
- if( output == "empty input" )
+ if( input != null )
{
- // proceed immediately with prompt
+ rep(input) => string output;
+
+ if( output == "empty input" )
+ {
+ // proceed immediately with prompt
+ }
+ else
+ {
+ Util.println(output);
+ }
}
else
{
- Util.println(output);
+ true => done;
}
}
}
+// @import readline.ck
// @import types/boxed/*.ck
// @import types/MalObject.ck
// @import types/mal/MalAtom.ck
fun void main()
{
- ConsoleInput stdin;
- string input;
+ int done;
- while( true )
+ while( !done )
{
- stdin.prompt("user>") => now;
- stdin.getLine() => input;
- rep(input) => string output;
+ Readline.readline("user> ") => string input;
- if( output == "empty input" )
+ if( input != null )
{
- // proceed immediately with prompt
+ rep(input) => string output;
+
+ if( output == "empty input" )
+ {
+ // proceed immediately with prompt
+ }
+ else
+ {
+ Util.println(output);
+ }
}
else
{
- Util.println(output);
+ true => done;
}
}
}
+// @import readline.ck
// @import types/boxed/*.ck
// @import types/MalObject.ck
// @import types/mal/MalAtom.ck
fun void main()
{
- ConsoleInput stdin;
- string input;
+ int done;
- while( true )
+ while( !done )
{
- stdin.prompt("user>") => now;
- stdin.getLine() => input;
- rep(input) => string output;
+ Readline.readline("user> ") => string input;
- if( output == "empty input" )
+ if( input != null )
{
- // proceed immediately with prompt
+ rep(input) => string output;
+
+ if( output == "empty input" )
+ {
+ // proceed immediately with prompt
+ }
+ else
+ {
+ Util.println(output);
+ }
}
else
{
- Util.println(output);
+ true => done;
}
}
}
+// @import readline.ck
// @import types/boxed/*.ck
// @import types/MalObject.ck
// @import types/mal/MalAtom.ck
fun void main()
{
- ConsoleInput stdin;
- string input;
+ int done;
- while( true )
+ while( !done )
{
- stdin.prompt("user>") => now;
- stdin.getLine() => input;
- rep(input) => string output;
+ Readline.readline("user> ") => string input;
- if( output == "empty input" )
+ if( input != null )
{
- // proceed immediately with prompt
+ rep(input) => string output;
+
+ if( output == "empty input" )
+ {
+ // proceed immediately with prompt
+ }
+ else
+ {
+ Util.println(output);
+ }
}
else
{
- Util.println(output);
+ true => done;
}
}
}
+// @import readline.ck
// @import types/boxed/*.ck
// @import types/MalObject.ck
// @import types/mal/MalAtom.ck
fun void main()
{
- ConsoleInput stdin;
- string input;
+ int done;
- while( true )
+ while( !done )
{
- stdin.prompt("user>") => now;
- stdin.getLine() => input;
- rep(input) => string output;
+ Readline.readline("user> ") => string input;
- if( output == "empty input" )
+ if( input != null )
{
- // proceed immediately with prompt
+ rep(input) => string output;
+
+ if( output == "empty input" )
+ {
+ // proceed immediately with prompt
+ }
+ else
+ {
+ Util.println(output);
+ }
}
else
{
- Util.println(output);
+ true => done;
}
}
}