Очевидным является Ragel . Записи whois довольно просты, имеют ограниченный набор ключевых терминов и тому подобное - все должно быть просто. И парсеры Ragel доказали свою эффективность.
Обновление Как и обещано.
Хорошо, так , почему использует Ragel ? По сути, все, что может быть описано как конечный автомат, может быть описано в Ragel, который затем генерирует код для высокоэффективного синтаксического анализатора. Этот синтаксический анализатор намного быстрее, чем обобщенный механизм регулярных выражений, просто потому, что он имеет более простую программу, чем обычный синтаксический анализатор.
Теперь вы можете пойти дальше, например, с помощью генератора ABNF здесь . Тогда ваше описание для начала может быть таким простым, как
WHOIS ::= RECORD*
RECORD ::= FIELDNAME ':' FIELDVALUE
FIELDVALUE ::= NAMESTRING | IPADDRESS | DOMAINNAME
(Я не утверждаю, что это, в частности, синтаксис ABNF, просто грубый BNF.) Дело в том, что вы описываете синтаксический анализатор в более или менее интуитивно понятной форме и позволяете генератору создать захватывающую часть кода.