|
@@ -1,4 +1,5 @@
|
1
|
1
|
const AST = require('./ast')
|
|
2
|
+const core = require('./core')
|
2
|
3
|
const OsloError = require('./osloError')
|
3
|
4
|
|
4
|
5
|
module.exports = class Env {
|
|
@@ -10,22 +11,9 @@ module.exports = class Env {
|
10
|
11
|
this.data[key] = parent.data[key]
|
11
|
12
|
})
|
12
|
13
|
} else {
|
13
|
|
- this.data = {
|
14
|
|
- '+': (a, b) => new AST.Number({ value: a.value + b.value }),
|
15
|
|
- '-': (a, b) => new AST.Number({ value: a.value - b.value }),
|
16
|
|
- '*': (a, b) => new AST.Number({ value: a.value * b.value }),
|
17
|
|
- '/': (a, b) => new AST.Number({ value: a.value / b.value }),
|
18
|
|
- '=': (a, b) => new AST.Boolean({ value: a.value === b.value }),
|
19
|
|
- '>': (a, b) => new AST.Boolean({ value: a.value > b.value }),
|
20
|
|
- '<': (a, b) => new AST.Boolean({ value: a.value < b.value }),
|
21
|
|
- '>=': (a, b) => new AST.Boolean({ value: a.value >= b.value }),
|
22
|
|
- '<=': (a, b) => new AST.Boolean({ value: a.value <= b.value }),
|
23
|
|
- 'list': function () {
|
24
|
|
- return new AST.List({
|
25
|
|
- elements: Object.keys(arguments).map(arg => arguments[arg])
|
26
|
|
- })
|
27
|
|
- }
|
28
|
|
- }
|
|
14
|
+ Object.keys(core).forEach(key => {
|
|
15
|
+ this.data[key] = core[key]
|
|
16
|
+ })
|
29
|
17
|
}
|
30
|
18
|
}
|
31
|
19
|
|