]> git.lizzy.rs Git - metalua.git/blobdiff - junk/maybe.mlua
Merge branch 'master' of ssh://git.eclipse.org/gitroot/koneki/org.eclipse.koneki...
[metalua.git] / junk / maybe.mlua
diff --git a/junk/maybe.mlua b/junk/maybe.mlua
deleted file mode 100644 (file)
index 1b29ae1..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-mlp.lexer:add{ '?.', '?(', '?[' }
-
-function maybe_field_builder(e, f)
-   f = f[1]
-   local v = mlp.gensym()
-   local block = 
-      +{block: local -{v} = -{e}; if not -{v}[-{f}] then -{v}[-{f}] = { } end}
-   return `Stat{ block, v }
-end
-
-function maybe_dot_builder(e, f)
-   return maybe_field_builder(e, {mlp.id2string(f[1])})
-end
-
--- NON, ca gere pas les multireturns. Le plus simple c'est d'avoir un support runtime.
-
-function maybe_call_builder(e, args)
-   args = args[1]
-   local v, w = mlp.gensym(), mlp.gensym()
-   local block = 
-      +{block: local -{v}, -{w} = -{e}; if -{v} then (-{w})-{`Call(v, unpack(args))} end}
-   return `Stat{ block, w }
-end
-
-function maybe_invoke_builder(e, s)
-   local name, args = unpack(s)
-   local v, w = mlp.gensym(), mlp.gensym()
-   local block = 
-      +{block: local -{v}, -{w} = -{e}; if -{v} then (-{w})-{`Invoke(v, unpack(args))} end}
-   return `Stat{ block, w }
-end
-
-mlp.expr.suffix:add{ '?.', mlp.id, builder = |e, f| 
\ No newline at end of file