parse non-destructive directly in lua buffer for better speed