aboutsummaryrefslogtreecommitdiff
path: root/core/control_flow.nom
diff options
context:
space:
mode:
Diffstat (limited to 'core/control_flow.nom')
-rw-r--r--core/control_flow.nom59
1 files changed, 2 insertions, 57 deletions
diff --git a/core/control_flow.nom b/core/control_flow.nom
index e760b00..15c1ca1 100644
--- a/core/control_flow.nom
+++ b/core/control_flow.nom
@@ -359,51 +359,6 @@ immediately
end --when % = ?
return %code
-# Try/except
-immediately
- compile [..]
- try %action and if it succeeds %success or if it barfs %msg %fallback
- try %action and if it barfs %msg %fallback or if it succeeds %success
- ..to
- Lua ".."
- do
- local fell_through = false
- local err, erred = nil, false
- local ok, ret = xpcall(function()
- \(%action as lua statements)
- fell_through = true
- end, function(\(%msg as lua expr))
- local ok, ret = pcall(function()
- \(%fallback as lua statements)
- end)
- if not ok then err, erred = ret, true end
- end)
- if ok then
- \(%success as lua statements)
- if not fell_through then
- return ret
- end
- elseif erred then
- error(err, 0)
- end
- end
-immediately
- parse [..]
- try %action and if it succeeds %success or if it barfs %fallback
- try %action and if it barfs %fallback or if it succeeds %success
- ..as: try %action and if it succeeds %success or if it barfs (=lua "") %fallback
-immediately
- parse [try %action] as
- try %action and if it succeeds: do nothing
- ..or if it barfs: do nothing
- parse [try %action and if it barfs %fallback] as
- try %action and if it succeeds: do nothing
- ..or if it barfs %fallback
- parse [try %action and if it barfs %msg %fallback] as
- try %action and if it succeeds: do nothing
- ..or if it barfs %msg %fallback
- parse [try %action and if it succeeds %success] as
- try %action and if it succeeds %success or if it barfs: do nothing
# Do/finally
immediately
@@ -433,17 +388,7 @@ immediately
declare locals in %body
return
Lua value ".."
- ((function()
+ (function()
\%body
- end)())
+ end)()
-# Coroutines:
-immediately
- compile [values %body, coroutine %body, generator %body] to
- Lua value ".."
- (function()
- \(%body as lua statements)
- end)
- compile [->] to: Lua "coroutine.yield(true);"
- compile [-> %] to: Lua "coroutine.yield(true, \(% as lua expr));"
- compile [-> %k = %v] to: Lua "coroutine.yield(\(%k as lua expr), \(%v as lua expr));"