Я получил (проприетарный) вывод от программного обеспечения, которое мне нужно проанализировать. К сожалению, есть неэкранированные имена пользователей, и я ломаю голову, пытаясь понять, могу ли я описать файлы, которые мне нужно проанализировать, используя BNF (или EBNF или ABNF), или нет.
Слишком упрощенная проблема (на самом деле это просто пример) может выглядеть так:
(данные) :: =
:: = (другой тип данных)
И в некоторых случаях вместо того, чтобы появляться слева или справа, имя пользователя также может появляться в середине строки.
Проблема заключается в том, что имя пользователя не экранировано и не хватает ограничений на имена пользователей (они могут быть напечатаны в формате ASCII, максимум 20 символов и не могут содержать разрыв строки). Так, например, "=" будет совершенно корректным именем пользователя. И так будет "= 1 = john = 2" (потому что пользователь, при входе в систему, где разрешено выбирать любое имя пользователя, которое он хочет, и они отображаются без выхода в вывод, который я получил).
Я спрашиваю, потому что мой парсер нажал на некоторые очень креативные имена пользователей (опять же, не под моим контролем, они "странные", и мне нужно с этим справиться), и я не могу найти простой способ справиться с этим , Также обратите внимание, что я заранее не знаю имен пользователей (например, у меня нет доступа к базе данных, которая будет содержать все имена пользователей, созданные пользователями).
Значит, неограниченные и незащищенные имена пользователей несовместимы с BNF?
P.S: будь спокоен со мной, если я допустил ошибки, это мой первый пост на stackoverflow:)