email ::= mailbox "@" hostname
mailbox ::= mailbox_symbol {mailbox}
mailbox_symbol ::= "a-z0-9..."
hostname ::= ...
В самом банальном виде всё ок, никакой левой рекурсии, руками можно парсер написать за 10-15 минут (рекурсивный спуск).
Другое дело, что емейл это не example@example.com, бывают и всякие другие сложные вещи.
Советую почитать
https://habrahabr.ru/post/224623/