long_string = "^%[(=*)%[\n?(.-)%]%1%]()",
number_mantissa = {
"^%d+%.?%d*()",
- "^%d*%d%.%d+()" },
+ "^%d*%.%d+()" },
number_exponant = "^[eE][%+%-]?%d+()",
number_hex = "^0[xX]%x+()",
word = "^([%a_][%w_]*)()"
return s
:gsub ("\\(%D)",unesc_letter)
- :gsub ("\\([0-9]+)", unesc_digits)
+ :gsub ("\\([0-9][0-9]?[0-9]?)", unesc_digits)
end
lexer.extractors = {
if not status and x then
-- x = error msg; get rid of ???
x = x:strmatch "[^:]+:[0-9]+: (.*)" or x
- local li = lx:lineinfo()
+ local li = lx:lineinfo_left()
error(string.format("Parsing error in %s line %s, column %i, char %s: \n%s",
name or "<nofilename>", li[1], li[2], li[3], x))
return nil