0

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

(例如:检查诸如“接受:application/sdp,application/3gpp-imp+​​xml”之类的字符串以提供测试用例通过/失败)。

目前我正在尝试使用 perl Parse::ABNF。现在我无法理解这种情况下的示例用法。

4

2 回答 2

1

我的Parse::ABNF模块读取 ABNF 语法并让您访问语法中的规则。它会告诉您诸如“floating-point-number规则引用digit规则”之类的信息,但它不会为浮点数生成解析器。您可以使用该模块将正确的 ABNF 语法转换为解析器生成器可以使用的格式,例如Parse::RecDescentor Marpa2。这种转换的示例脚本包含在分发中,为eg/abnf2xlx.pl. 但是请注意,您链接到的页面上的语法并不是Parse::ABNF.

于 2014-02-21T15:12:32.523 回答
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));
于 2014-02-21T09:23:40.413 回答