diff options
Diffstat (limited to 'core/coroutines.nom')
| -rw-r--r-- | core/coroutines.nom | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/core/coroutines.nom b/core/coroutines.nom new file mode 100644 index 0000000..d0d9c36 --- /dev/null +++ b/core/coroutines.nom @@ -0,0 +1,17 @@ +# + This file defines the code that creates and manipulates coroutines + +use "core/metaprogramming.nom" + +compile [coroutine %body, generator %body] to + Lua value ".." + (function() + \(%body as lua statements) + end) +compile [->] to: Lua value "coroutine.yield(true)" +compile [-> %] to: Lua value "coroutine.yield(true, \(% as lua expr))" +compile [for % in coroutine %co %body] to + Lua ".." + for junk,\(% as lua expr) in coroutine.wrap(\(%co as lua expr)) do + \(%body as lua statements) + end |
