1
1
mirror of https://github.com/kanaka/mal.git synced 2024-10-27 14:52:16 +03:00
mal/impls/dart/step1_read_print.dart

35 lines
685 B
Dart
Raw Normal View History

2016-11-14 01:21:44 +03:00
import 'dart:io';
import 'printer.dart' as printer;
import 'reader.dart' as reader;
import 'types.dart';
MalType READ(String x) => reader.read_str(x);
MalType EVAL(MalType x) => x;
String PRINT(MalType x) => printer.pr_str(x);
String rep(String x) {
return PRINT(EVAL(READ(x)));
2016-11-14 01:21:44 +03:00
}
const prompt = 'user> ';
main() {
while (true) {
stdout.write(prompt);
var input = stdin.readLineSync();
if (input == null) return;
var output;
try {
output = rep(input);
} on reader.ParseException catch (e) {
stdout.writeln("Error: '${e.message}'");
continue;
2016-11-14 01:21:44 +03:00
} on reader.NoInputException {
continue;
}
stdout.writeln(output);
}
}