X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;f=tools%2Ferlparse.lua;h=dc3a2f94e6d44c3d03fa20d09dc57c94bec31d69;hb=626b9b6d3924314d9d9c0e389f8be82002f695cf;hp=fdef7e8c6de8afe8c991e54e689f2b287b6f56f4;hpb=638b86aeb46700cf3873d6326291142b9258e81d;p=prosody.git diff --git a/tools/erlparse.lua b/tools/erlparse.lua index fdef7e8c..dc3a2f94 100644 --- a/tools/erlparse.lua +++ b/tools/erlparse.lua @@ -12,12 +12,16 @@ local type, tonumber, tostring = type, tonumber, tostring; local file = nil; local last = nil; +local line = 1; local function read(expected) local ch; if last then ch = last; last = nil; - else ch = file:read(1); end - if expected and ch ~= expected then error("expected: "..expected.."; got: "..(ch or "nil")); end + else + ch = file:read(1); + if ch == "\n" then line = line + 1; end + end + if expected and ch ~= expected then error("expected: "..expected.."; got: "..(ch or "nil").." on line "..line); end return ch; end local function pushback(ch) @@ -117,6 +121,12 @@ local function readTuple() end local function readBinary() read("<"); -- read < + -- Discard PIDs + if isNumeric(peek()) then + while peek() ~= ">" do read(); end + read(">"); + return {}; + end local t = readTuple(); read(">") -- read > local ch = peek();