diff options
| author | Bruce Hill <bitbucket@bruce-hill.com> | 2018-05-16 18:12:56 -0700 |
|---|---|---|
| committer | Bruce Hill <bitbucket@bruce-hill.com> | 2018-05-16 18:13:02 -0700 |
| commit | 6f6c4377b236902566794c3d06820f3fdd7ec28c (patch) | |
| tree | a3074d4d7c46585a9ece036455ff97b9ab12effc /core/operators.nom | |
| parent | af9dc0702568dc45b8809523dde760bb99aafbcb (diff) | |
Initial working version.
Diffstat (limited to 'core/operators.nom')
| -rw-r--r-- | core/operators.nom | 40 |
1 files changed, 20 insertions, 20 deletions
diff --git a/core/operators.nom b/core/operators.nom index e3b41e1..adfeeb5 100644 --- a/core/operators.nom +++ b/core/operators.nom @@ -28,18 +28,18 @@ immediately local safe = {Text=true, Number=true}; local a_lua, b_lua = \%a:as_lua(nomsu), \%b:as_lua(nomsu); if safe[\%a.type] or safe[\%b.type] then - return Lua.Value(tree.source, "(", a_lua, " == ", b_lua, ")"); + return Lua.Value(nil, "(", a_lua, " == ", b_lua, ")"); else - return Lua.Value(tree.source, "utils.equivalent(", a_lua, ", ", b_lua, ")"); + return Lua.Value(nil, "utils.equivalent(", a_lua, ", ", b_lua, ")"); end compile [%a isn't %b, %a is not %b, %a not= %b, %a != %b] to lua> ".." local safe = {Text=true, Number=true}; local a_lua, b_lua = \%a:as_lua(nomsu), \%b:as_lua(nomsu); if safe[\%a.type] or safe[\%b.type] then - return Lua.Value(tree.source, "(", a_lua, " ~= ", b_lua, ")"); + return Lua.Value(nil, "(", a_lua, " ~= ", b_lua, ")"); else - return Lua.Value(tree.source, "(not utils.equivalent(", a_lua, ", ", b_lua, "))"); + return Lua.Value(nil, "(not utils.equivalent(", a_lua, ", ", b_lua, "))"); end # For strict identity checking, use (%x's id) is (%y's id) compile [%'s id, id of %] to: Lua value "nomsu.ids[\(% as lua expr)]" @@ -48,11 +48,11 @@ immediately immediately compile [%var <- %value] to lua> "local \%var_lua = \%var:as_lua(nomsu);" - assume %var_lua.is_value or barf "Invalid target for assignment: \(%var's source code)" + assume %var_lua.is_value or barf "Invalid target for assignment: \%var" lua> "local \%value_lua = \%value:as_lua(nomsu);" - assume %value_lua.is_value or barf "Invalid value for assignment: \(%value's source code)" + assume %value_lua.is_value or barf "Invalid value for assignment: \%value" lua> ".." - local lua = Lua(tree.source, \%var_lua, ' = ', \%value_lua, ';'); + local lua = Lua(nil, \%var_lua, ' = ', \%value_lua, ';'); if \%var.type == 'Var' then lua:add_free_vars({\%var}); end @@ -62,11 +62,11 @@ immediately # Simultaneous mutli-assignments like: x,y,z = 1,x,3; compile [<- %assignments] to assume ((%assignments' "type") is "Dict") or barf ".." - Expected a Dict for the assignments part of '<- %' statement, not \(%assignments' source code) + Expected a Dict for the assignments part of '<- %' statement, not \%assignments lua> ".." - local lhs, rhs = Lua(tree.source), Lua(\%assignments.source); - for i, item in ipairs(\%assignments.value) do - local target, value = item.value[1], item.value[2]; + local lhs, rhs = Lua(), Lua(); + for i, item in ipairs(\%assignments) do + local target, value = item[1], item[2]; local target_lua = target:as_lua(nomsu); if not target_lua.is_value then error("Invalid target for assignment: "..target:get_src()); end local value_lua = value:as_lua(nomsu); @@ -81,35 +81,35 @@ immediately lhs:append(target_lua); rhs:append(value_lua); end - return Lua(tree.source, lhs, " = ", rhs, ";"); + return Lua(nil, lhs, " = ", rhs, ";"); immediately compile [external %var <- %value] to %var_lua <- (%var as lua) - assume %var_lua.is_value or barf "Invalid target for assignment: \(%var's source code)" + assume %var_lua.is_value or barf "Invalid target for assignment: \%var" %value_lua <- (%value as lua) - assume %value_lua.is_value or barf "Invalid value for assignment: \(%value's source code)" + assume %value_lua.is_value or barf "Invalid value for assignment: \%value" return: Lua "\(%var_lua) = \(%value_lua);" compile [with external %externs %body] to %body_lua <- (%body as lua statements) - lua> "\%body_lua:remove_free_vars(\(%externs.value));" + lua> "\%body_lua:remove_free_vars(\(%externs));" return %body_lua compile [with %assignments %body] to %lua <- (%body as lua statements) lua> ".." - local lhs, rhs = Lua(tree.source), Lua(\%assignments.source); + local lhs, rhs = Lua(), Lua(); local vars = {}; - for i, item in ipairs(\%assignments.value) do - local target, value = item.value[1], item.value[2]; + for i, item in ipairs(\%assignments) do + local target, value = item[1], item[2]; if not target.type == "Var" then - error("Invalid target for 'with' assignment: "..tostring(target.source:get_text())); + error("Invalid target for 'with' assignment: "..tostring(target)); end local target_lua = target:as_lua(nomsu); local value_lua = value:as_lua(nomsu); if not value_lua.is_value then - error("Invalid value for assignment: "..tostring(value.source:get_text())); + error("Invalid value for assignment: "..tostring(value)); end if target.type == "Var" then lhs:add_free_vars({target}); |
