]> git.lizzy.rs Git - metalua.git/blobdiff - src/samples/lex_switch_test.mlua
Merge branch 'master' of ssh://git.eclipse.org/gitroot/koneki/org.eclipse.koneki...
[metalua.git] / src / samples / lex_switch_test.mlua
diff --git a/src/samples/lex_switch_test.mlua b/src/samples/lex_switch_test.mlua
deleted file mode 100644 (file)
index 84b615c..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
--- This is a simple and somewhat stupid example of how to switch
--- lexers dynamically. Behind a V, X and Y are the only reserved
--- keywords. In normal conditions, X and Y aren't keywords and can be
--- used as variables.
-
--{ block:
-   require 'lexer'
-   local my_lexer = lexer.lexer:clone() -- no keywords
-   my_lexer:add{"X", "Y"}
-   mlp.lexer:add "V"
-
-   function num(lx)
-      local a = lx:next()
-      assert(a.tag=='Number')
-      return a
-   end
-      
-   my_parser = gg.list{
-      gg.multisequence{
-         { "X", num, builder = |x| `Table{ x[1], +{0} } },
-         { "Y", num, builder = |y| `Table{ +{0}, y[1] } },
-         default = gg.sequence{ mlp.id, builder = |x| `Pair{ `String{x[1][1]},`True } } },
-      separators = { ',', ';' },
-      builder = function(l) l.tag='Table'; return l end }
-
-   mlp.expr:add{ "V", gg.with_lexer(my_lexer, my_parser), builder = unpack } }
-
--- Use the special lexer:
-foo = V X 1, Y 2, X 3, 
-      for, foo, in, tag, function -- check that these aren't keywords in my_lexer
-
--- Use X and Y as Id, in the unpolluted lexer:
-print "Vector:"
-X = table.tostring(foo, 60)
-print (X)
-
-print "Sum:" -- Ready for a functional one-liner? :)
-Y = |v| table.ifold (|a,b| table.imap (|c,d| c+d, a, b), {0,0}, v) 
-table.print (Y(foo))
-