Parse :: ABNF perl用法

时间:2014-02-21 07:43:09

标签: perl parsing sip cpan abnf

我需要解析SIP标头(ABNF格式的grammar)并验证我的标头字符串是否正常。

(示例:检查字符串,如“Accept:application / sdp,application / 3gpp-imp + xml”以提供测试用例通过/失败)。

目前我正在尝试使用perl Parse::ABNF。现在,我无法理解此上下文中的示例用法。

2 个答案:

答案 0 :(得分:1)

我的Parse::ABNF模块读取ABNF语法,并允许您访问语法中的规则。它会告诉您“floating-point-number规则引用digit规则”之类的内容,但它不会为浮点数生成解析器。您可以使用该模块将正确的ABNF语法转换为可由Parse::RecDescentMarpa2等解析器生成器使用的格式。此类转换的示例脚本包含在分发中eg/abnf2xlx.pl。但请注意,您链接到的页面上的语法不是Parse::ABNF所期望的符合标准的格式。

答案 1 :(得分:0)

您可以这样使用此模块:

  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));