local write_pdf = require'luatagging-objectwriter' local l = lpeg local whitespace = l.S'\0\9\10\12\13\32' local delimiter = l.S'()[]<>/%' local comment = '%' * (1-l.P'\n'^0) * '\n' local sep = whitespace + comment local regular = 1 - (whitespace+delimiter) local function keyword(word) return l.P(word) * -regular end local boolean = keyword'true' * l.Cc(true) + keyword'false' * l.Cc(false) local integer = (l.S'+-'^-1 * l.R'09'^1) / math.tointeger local real = (l.S'+-'^-1 * (l.R'09'^1 * '.' * l.R'09'^0 + '.' * l.R'09'^1)) / tonumber local reference = integer * sep^1 * integer * sep^1 * keyword'R' local string = lpeg.P local function parse_pdf(text: string): write_pdf.PdfObject end