]> git.lizzy.rs Git - metalua.git/commitdiff
Adding function to handle AST generation failures and nicely parse error strings
authorKevin KIN-FOO <kkinfoo@sierrawireless.com>
Thu, 26 May 2011 14:40:07 +0000 (16:40 +0200)
committerKevin KIN-FOO <kkinfoo@sierrawireless.com>
Thu, 26 May 2011 14:40:07 +0000 (16:40 +0200)
src/lib/errnode.lua [new file with mode: 0644]

diff --git a/src/lib/errnode.lua b/src/lib/errnode.lua
new file mode 100644 (file)
index 0000000..3a3ab34
--- /dev/null
@@ -0,0 +1,19 @@
+require 'metalua.compiler'
+--
+-- Ecapsulates funcion mlc.luastring_to_ast in order to protect call and parse
+-- error string when an error occurs.
+--
+-- @param src string containg Lua code to evaluate
+-- @return AST of table type, as returned by mlc.luastring_to_ast. Contains an
+--     error when AST generation fails
+--
+function getast(src)
+   local status, result = pcall(mlc.luastring_to_ast, src)
+   if status then return result else
+      local line, column, offset = result:match '%(l.(%d+), c.(%d+), k.(%d+)%)'
+      local filename = result :match '^([^:]+)'
+      local msg = result :match 'line %d+, char %d+: (.-)\n'
+      local li = {line, column, offset, filename}
+      return {tag='Error', lineinfo={first=li, last=li}, msg}
+   end
+end