diff options
Diffstat (limited to 'src/flint.cr')
| -rw-r--r-- | src/flint.cr | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/flint.cr b/src/flint.cr index 8f11223..89f1d3f 100644 --- a/src/flint.cr +++ b/src/flint.cr @@ -57,7 +57,7 @@ module Flint if read_stdin source_io = STDIN - elsif source_file + elsif !source_file.nil? # compilier complains without the not_nil! source_io = File.new(source_file.not_nil!) else @@ -80,14 +80,25 @@ module Flint end begin - program.not_nil!.interpret + p = program.not_nil! + case execution_mode + when :interpret + p.interpret + when :compile + p.compile + end rescue ex : Util::ParserError puts "Caught ParserError" puts ex.message exit(1) - rescue ex : Brainfuck::MemoryError - puts "Caught MemoryError" + rescue ex : Util::InterpreterError + puts "Error encountered while interpreting:" + puts ex.message + exit(1) + rescue ex : Util::CompilerError + puts "Failed to compile program:" puts ex.message + exit(1) end end end |
