12345678910111213141516171819202122232425262728 |
- const Compiler = require('./compiler')
- const Env = require('./env')
- const Evaluator = require('./evaluator')
- const Lexer = require('./lexer')
- const OsloError = require('./osloError')
- const Parser = require('./parser')
-
- module.exports = function oslo(source, context) {
- const lexer = new Lexer()
- const tokens = lexer.scan(source)
-
- const parser = new Parser()
- const tree = parser.parse(tokens)
-
- if (tree.constructor == OsloError) {
- return tree
- }
-
- const evaluator = new Evaluator()
- const evaluatedTree = evaluator.eval(tree, new Env())
-
- if (evaluatedTree.constructor == OsloError) {
- return evaluatedTree
- }
-
- const compiler = new Compiler()
- return compiler.compile(evaluatedTree)
- }
|