blob: 7122e0feb2830cb4def24ee3187c4134a3a4b775 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
L or= setmetatable {}, __index: => ->
import Value from require 'core.value'
import Result from require 'core.result'
import Scope from require 'core.scope'
import Registry from require 'core.registry'
import Tag from require 'core.tag'
import Cell, RootCell from require 'core.cell'
import cell, program from require 'core.parsing'
with require 'core.cycle'
\load!
globals = Scope.from_table require 'core.builtin'
{
:Value, :Result
:Cell, :RootCell
:Scope
:Registry, :Tag
:globals
parse: program\match
eval: (str, inject) ->
scope = Scope nil, globals
scope\use inject if inject
ast = assert (cell\match str), "failed to parse: #{str}"
result = ast\eval scope
result\const!
}
|