Parse::ABNF использование Perl

Мне нужно проанализировать заголовки SIP ( грамматика в формате ABNF) и проверить, в порядке ли мои строки заголовка или нет.

(Пример: проверьте строки, такие как "Accept: application/sdp,application/3gpp-imp+xml", чтобы убедиться, что тестовый сценарий пройден / не пройден).

В настоящее время я пытаюсь использовать Perl Parse:: ABNF. Теперь я не могу понять пример использования в этом контексте.

2 ответа

Мой Parse::ABNF Модуль читает грамматики ABNF и дает вам доступ к правилам в грамматике. Он говорит вам такие вещи, как "The floating-point-number Правило ссылается на digit rule", но он не генерирует анализатор для чисел с плавающей запятой. Вы можете использовать модуль для преобразования правильной грамматики ABNF в формат, который может использоваться генератором синтаксического анализатора, таким как Parse::RecDescent или же Marpa2, Пример сценария для такого преобразования включен в дистрибутив как eg/abnf2xlx.pl, Однако обратите внимание, что грамматика на странице, на которую вы ссылаетесь, не совсем соответствует стандарту, ожидаемому Parse::ABNF,

Вы можете использовать этот модуль следующим образом:

  use Parse::ABNF;
  use Test::More;
  use Data::Dumper;
  my $parser = Parse::ABNF->new;
  my $rules = $parser->parse($sip_message);
  ok(defined $rules,'The SIP messgae is parseable') or diag(Dumper($sip_message));

Самый простой способ разбора только заголовка:

  use Test::More;
  use Data::Dumper;
  ok($sip_message =~ m!Accept: application/sdp,application/3gpp-imp+xml!,'The SIP header looks found') or diag(Dumper($sip_message));
Другие вопросы по тегам