[ create a new paste ] login | about

Link: http://codepad.org/z49J4o8z    [ raw code | output | fork ]

Lua, pasted on Aug 13:
local L = require "lpeg"
local ws = L.S" \r\n\t"^0 -- whitespace
local id = L.C(L.R("az","AZ","09")^1) -- identifiers
local value = id -- values (currently same as identifiers)
local entry = ws * id * ws * value + L.V(1) -- key value OR block
local function makepairs(kvkv_array)
  local t = {}
  for i = 1, #kvkv_array, 2 do
    t[kvkv_array[i]] = kvkv_array[i+1]
  end
  return t
end
local pattern = L.P {ws * id * ws * "{" * (L.Ct(entry^0) / makepairs) * ws * "}"} / function(k, v)
  return {[k] = v}
end

local result = pattern:match[[

blockname1 {
 key1 value1
 key2 value2
 blockname2 {
   key3 value3
   blockname3 {
     key4 value4
   }
   key5 value5
 }
}

]]

function pretty(t, prefix)
  print("{")
  for k, v in pairs(t) do
    io.write(prefix .. k .. " = ")
    if type(v) == "table" then
      pretty(v, prefix .. "  ")
    else
      print(v)
    end
  end
  print(prefix .. "}")
end

pretty(result, "")


Output:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
line 1: module 'lpeg' not found:
	no field package.preload['lpeg']
	no file './lpeg.lua'
	no file '/usr/local/share/lua/5.1/lpeg.lua'
	no file '/usr/local/share/lua/5.1/lpeg/init.lua'
	no file '/usr/local/lib/lua/5.1/lpeg.lua'
	no file '/usr/local/lib/lua/5.1/lpeg/init.lua'
	no file './lpeg.so'
	no file '/usr/local/lib/lua/5.1/lpeg.so'
	no file '/usr/local/lib/lua/5.1/loadall.so'
stack traceback:
	[C]: in function 'require'
	t.lua:1: in main chunk
	[C]: ?


Create a new paste based on this one


Comments: