Анализ структурированного текста в Ruby

Есть несколько вопросов по SO о синтаксическом анализе структурированного текста в Ruby, но ни один из них не относится к моему случаю.

Я являюсь автором библиотеки Ruby Whois . Библиотека включает несколько парсеров для анализа ответа WHOIS и извлечения свойств из содержимого.

До сих пор я использовал два подхода:

  1. Регулярные выражения для базовых парсеров (например, whois.aero )
  2. StringScanner для расширенных парсеров (например, whois.nic.it )

Регулярные выражения неэффективны, потому что, если мне нужно извлечь 15 свойств, мне нужно просканировать тот же ответ как минимум 15 раз.

StringScanner - хорошая библиотека, но создать эффективный сканер не так просто.

Мне было интересно, есть ли другие инструменты Ruby, которые вы предлагаете для реализации парсера записей WHOIS. Я читал о Treetop, но из-за отсутствия спецификации в записях WHOIS, я считаю, что Treetop - неподходящее решение.

Есть предложения?

7
задан Brian Tompsett - 汤莱恩 22 June 2016 в 16:36
поделиться