Skip to content

Commit

Permalink
Refactored builtin and exception handling.
Browse files Browse the repository at this point in the history
  • Loading branch information
freakboy3742 committed Mar 19, 2016
1 parent cc4da16 commit 5a7abe0
Show file tree
Hide file tree
Showing 9 changed files with 685 additions and 312 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ local
_build
distribute-*
/batavia.js
/batavia.min.js
6 changes: 5 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ ALL_FILES=\
batavia/modules/sys.js \
batavia/modules/time.js \
batavia/core/Block.js \
batavia/core/builtins.js \
batavia/core/Cell.js \
batavia/core/Code.js \
batavia/core/Exception.js \
Expand All @@ -19,7 +20,10 @@ ALL_FILES=\

.PHONY: all

all: batavia.js
all: batavia.js batavia.min.js

batavia.js: $(ALL_FILES)
cat $(ALL_FILES) > batavia.js

batavia.min.js: batavia.js
python -m jsmin batavia.js > batavia.min.js
282 changes: 8 additions & 274 deletions batavia/VirtualMachine.js

Large diffs are not rendered by default.

5 changes: 3 additions & 2 deletions batavia/batavia.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@

fixedConsoleLog = function(msg) {
console.log.call(console, msg);
}
};

var batavia = {
stdout: fixedConsoleLog,
stderr: fixedConsoleLog,
core: {},
modules: {}
modules: {},
builtins: {}
};

230 changes: 221 additions & 9 deletions batavia/core/Exception.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,226 @@

batavia.core.exception = function(name) {
var Exception = function() {
this.args = arguments;
};
batavia.builtins.BaseException = function(name, msg) {
this.name = name;
this.msg = msg;
};

batavia.builtins.BaseException.prototype.toString = function() {
if (this.msg) {
return this.name + ": " + this.msg;
} else {
return this.name;
}
};

batavia.builtins.ArithmeticError = function(msg) {
batavia.builtins.BaseException.call(this, 'ArithmeticError', msg);
};
batavia.builtins.ArithmeticError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.AssertionError = function(msg) {
batavia.builtins.BaseException.call(this, 'AssertionError', msg);
};
batavia.builtins.AssertionError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.AttributeError = function(msg) {
batavia.builtins.BaseException.call(this, 'AttributeError', msg);
};
batavia.builtins.AttributeError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.BufferError = function(msg) {
batavia.builtins.BaseException.call(this, 'BufferError', msg);
};
batavia.builtins.BufferError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.BytesWarning = undefined;

batavia.builtins.DeprecationWarning = undefined;

batavia.builtins.EOFError = function(msg) {
batavia.builtins.BaseException.call(this, 'EOFError', msg);
};
batavia.builtins.EOFError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.Ellipsis = undefined;

batavia.builtins.EnvironmentError = function(msg) {
batavia.builtins.BaseException.call(this, 'EnvironmentError', msg);
};
batavia.builtins.EnvironmentError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.Exception = function(msg) {
batavia.builtins.BaseException.call(this, 'Exception', msg);
};
batavia.builtins.Exception.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.FloatingPointError = function(msg) {
batavia.builtins.BaseException.call(this, 'FloatingPointError', msg);
};
batavia.builtins.FloatingPointError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.FutureWarning = undefined;

batavia.builtins.GeneratorExit = function(msg) {
batavia.builtins.BaseException.call(this, 'GeneratorExit', msg);
};
batavia.builtins.GeneratorExit.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.IOError = function(msg) {
batavia.builtins.BaseException.call(this, 'IOError', msg);
};
batavia.builtins.IOError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.ImportError = function(msg) {
batavia.builtins.BaseException.call(this, 'ImportError', msg);
};
batavia.builtins.ImportError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.ImportWarning = undefined;

batavia.builtins.IndentationError = function(msg) {
batavia.builtins.BaseException.call(this, 'IndentationError', msg);
};
batavia.builtins.IndentationError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.IndexError = function(msg) {
batavia.builtins.BaseException.call(this, 'IndexError', msg);
};
batavia.builtins.IndexError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.KeyError = function(msg) {
batavia.builtins.BaseException.call(this, 'KeyError', msg);
};
batavia.builtins.KeyError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.KeyboardInterrupt = function(msg) {
batavia.builtins.BaseException.call(this, 'KeyboardInterrupt', msg);
};
batavia.builtins.KeyboardInterrupt.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.LookupError = function(msg) {
batavia.builtins.BaseException.call(this, 'LookupError', msg);
};
batavia.builtins.LookupError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.MemoryError = function(msg) {
batavia.builtins.BaseException.call(this, 'MemoryError', msg);
};
batavia.builtins.MemoryError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.NameError = function(msg) {
batavia.builtins.BaseException.call(this, 'NameError', msg);
};
batavia.builtins.NameError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.NotImplemented = function(msg) {
batavia.builtins.BaseException.call(this, 'NotImplemented', msg);
};
batavia.builtins.NotImplemented.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.NotImplementedError = function(msg) {
batavia.builtins.BaseException.call(this, 'NotImplementedError', msg);
};
batavia.builtins.NotImplementedError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.OSError = function(msg) {
batavia.builtins.BaseException.call(this, 'OSError', msg);
};
batavia.builtins.OSError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.OverflowError = function(msg) {
batavia.builtins.BaseException.call(this, 'OverflowError', msg);
};
batavia.builtins.OverflowError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.PendingDeprecationWarning = undefined;

batavia.builtins.ReferenceError = function(msg) {
batavia.builtins.BaseException.call(this, 'ReferenceError', msg);
};
batavia.builtins.ReferenceError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.RuntimeError = function(msg) {
batavia.builtins.BaseException.call(this, 'RuntimeError', msg);
};
batavia.builtins.RuntimeError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.RuntimeWarning = undefined;

batavia.builtins.StandardError = function(msg) {
batavia.builtins.BaseException.call(this, 'StandardError', msg);
};
batavia.builtins.StandardError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.StopIteration = function(msg) {
batavia.builtins.BaseException.call(this, 'StopIteration', msg);
};
batavia.builtins.StopIteration.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.SyntaxError = function(msg) {
batavia.builtins.BaseException.call(this, 'SyntaxError', msg);
};
batavia.builtins.SyntaxError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.SyntaxWarning = undefined;

batavia.builtins.SystemError = function(msg) {
batavia.builtins.BaseException.call(this, 'SystemError', msg);
};
batavia.builtins.SystemError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.SystemExit = function(msg) {
batavia.builtins.BaseException.call(this, 'SystemExit', msg);
};
batavia.builtins.SystemExit.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.TabError = function(msg) {
batavia.builtins.BaseException.call(this, 'TabError', msg);
};
batavia.builtins.TabError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.TypeError = function(msg) {
batavia.builtins.BaseException.call(this, 'TypeError', msg);
};
batavia.builtins.TypeError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.UnboundLocalError = function(msg) {
batavia.builtins.BaseException.call(this, 'UnboundLocalError', msg);
};
batavia.builtins.UnboundLocalError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.UnicodeDecodeError = function(msg) {
batavia.builtins.BaseException.call(this, 'UnicodeDecodeError', msg);
};
batavia.builtins.UnicodeDecodeError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.UnicodeEncodeError = function(msg) {
batavia.builtins.BaseException.call(this, 'UnicodeEncodeError', msg);
};
batavia.builtins.UnicodeEncodeError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.UnicodeError = function(msg) {
batavia.builtins.BaseException.call(this, 'UnicodeError', msg);
};
batavia.builtins.UnicodeError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.UnicodeTranslateError = function(msg) {
batavia.builtins.BaseException.call(this, 'UnicodeTranslateError', msg);
};
batavia.builtins.UnicodeTranslateError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.builtins.UnicodeWarning = undefined;

batavia.builtins.UserWarning = undefined;

batavia.builtins.ValueError = function(msg) {
batavia.builtins.BaseException.call(this, 'ValueError', msg);
};
batavia.builtins.ValueError.prototype = Object.create(batavia.builtins.BaseException.prototype);

Exception.prototype.toString = function() {
return name + ": " + this.args[0];
};
batavia.builtins.Warning = undefined;

return Exception;
batavia.builtins.ZeroDivisionError = function(msg) {
batavia.builtins.BaseException.call(this, 'ZeroDivisionError', msg);
};
batavia.builtins.ZeroDivisionError.prototype = Object.create(batavia.builtins.BaseException.prototype);

batavia.core.BataviaError = batavia.core.exception('BataviaError');
Loading

0 comments on commit 5a7abe0

Please sign in to comment.