问题标签 [abnf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
193 浏览

serialization - 编码 AMF0 StrictArray 的正确方法是什么

在浏览了 AMF0 规范后,我发现我无法理解编码 StrictArray 类型的正确方法。

这是规范中最直接的部分:

数组计数 = U32

严格数组类型 = 数组计数 *(值类型)

它描述了具有增强巴科斯-瑙尔形式 (ABNF) 语法的 StrictArray 类型(参见RFC2234

StrictArray 类型是否具有序号索引或仅按其在 StrictArray 对象图中出现的顺序编码的对象(没有序号键)?

另外,作为一个附加问题,序列化表(从中生成对象引用 ID)是否包含对象图中的所有对象,还是仅包含可能通过引用编码的对象(ECMAArray、StrictArray、TypedObject、AnonymousObject)?

0 投票
2 回答
1114 浏览

regex - 将 ABNF 规则转换为正则表达式

请帮助我理解这条ABNF规则([a-z]* [A-Z]* [0-9]*)*
我认为它可以像这样转换为正则表达式[a-zA-Z0-9]*。所以 ABNF 规则应该匹配任何顺序的小写和/或大写字母和/或数字及其组合。例如,以下字符串应与规则匹配。

如果 ABNF 规则是([a-z]* [A-Z]* | [0-9]*)*,它也可以转换为相同的正则表达式。

验证正则表达式很容易,但是是否有工具或东西可以验证我对这些 ABNF 规则的理解,或者任何人都可以确认或更正我吗?

0 投票
1 回答
102 浏览

regex - 复杂的 ABNF 规则转换为正则表达式

这对我来说很难。如何将以下 ABNF 规则转换为正则表达式?

0 投票
1 回答
175 浏览

abnf - 可选的顺序规则说明

RFC5234的上述部分对我来说似乎不正确。

我认为这是因为可选的顺序规则[foo bar]不仅等同于1*1(foo bar),而且还等同于1*1(bar foo). 上面的例子匹配默认值 0,即0*1(foo bar).

然而,[] 通常意味着别的东西。所以另一方面,我认为[foo bar]应该是指(foo)或者(bar)

谁能帮我解决这个困惑?

0 投票
2 回答
412 浏览

regex - 将 ABNF 规则转换为 REGEX

我需要将下面提到的 ABNF 规则 ( mlaer ) 转换为 REGEX

有什么工具或某事可以自动完成吗?

0 投票
2 回答
1640 浏览

antlr4 - ANTLR 4.1 变量 ANTLR 4 令牌多重性产生错误:“闭包至少有一个可以匹配空字符串的替代方案”

基本上我要做的是在 ANTLR 4.1 中为国际化资源标识符创建语法。到目前为止,我遇到的最困难的时间是试图让 ipv6address 的生产规则正常工作。RFC 3987中定义 ipv6address 的方式是,仅针对该生产规则,ABNF 格式基本上就有 9 种不同的替代方案:

在这里,ls32 和 h16 都是定义为的子规则:

因此对于 h16:

其中 HEXDIG 是有效十六进制数字的词法分析器规则。我尝试使用 ANTLR 语法编写此 ABNF 语法,如下所示:

在我的 ANTLR 语法中,我尝试使用语义谓词来指定 ABNF 语法中定义的多重性规则,包括 ipv6address 和 h16。当我执行 org.antlr.v4.Tool 类时,我得到以下输出:

显然我也想摆脱警告,但我需要摆脱错误,指出“ipv6address”包含一个闭包,其中至少有一个可以匹配空字符串的替代方案。我在 StackOverflow 上看到过关于多个替代错误的类似帖子。但是,它们都没有处理可以匹配空字符串的闭包。我也很确定我将不得不将 UCSCHAR 过去 \uFFFF 中的 Unicode 字符定义为代理对,但稍后我会处理。现在只需要知道如何摆脱关闭问题。

0 投票
2 回答
307 浏览

perl - Parse::ABNF perl 用法

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

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

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

0 投票
1 回答
412 浏览

perl - 使用 perl 解析 abnf 语法

感谢您在链接Parse::ABNF perl usage上发布的问题输入。我仍然面临解决问题的困难。请求在下面检查我的问题并提供解决方案的指示。

现在我已经在一个文件中创建了 ABNF 格式的 sip 语法(命名为sip.abnf)。我在如下文件(recd_message.txt)中有带有标题的 sip 消息:

我创建了一个 Perl 程序来使用 ABNF 语法来验证上述标题消息,并将其命名为testSipHeader.pl以下内​​容:

Perl 调用和输出/错误如下

注意:目前我有生成 SIP 标头的 C 程序,我正在尝试通过这个 perl 函数验证标头的内容。我正在尝试使用类似于链接Parse::RecDescent 语法未按预期工作的用法

我不得不在您的脚本中进行一些修改以包含 Parse::ABNF 并处理输入文件,然后收到的输出出现在路径https://drive.google.com/file/d/0B8KDQDXsCKR_ZERzV3IyY1M2NW8/edit?usp=sharing中

0 投票
1 回答
742 浏览

c++ - 从文件中读取/解析带有 C++ 标记的 ABNF 语法

我有一个文件,其中包含一个带有标签的 ABNF 语法,如下面的简化示例:

现在的任务是通过解析该语法的给定句子来获取用户ID。例如,解析句子

应该给我们用户 ID 429。语法必须在运行时读取,因为它们可以在运行之间更改。

我现在的方法如下:

  1. 将语法解析为一棵或多棵树,将标签放在它们所属的叶子或节点上

  2. 用这个/那些树解析句子以构造一个创建给定句子的树(我正在考虑为此使用 Earley)

  3. 使用这棵树来获取标签(与示例不同,这样的树中会有多个不同的标签)

    我的问题是,我可以使用或至少修改任何软件组件来解决此任务吗?特别是第 1 步和第 2 步似乎非常通用(1. 将 ABNF 语法读入 C++ 内部表示(例如树);2. 使用 1. 的内部表示的早期算法(或类似的东西)并编写步骤 1 的完整、防错 ABNF 解析器对我来说将是一项非常耗时的任务。

我知道 VoiceXML 语法是这样工作的,但我无法为它们找到解析器。基本上我能找到的只是解析器生成器,它们将为单个语法生成 C++ 代码,这对我来说不实用,因为在编译时语法是未知的。

有任何想法吗?

0 投票
1 回答
66 浏览

grammar - 防止 ABNF 中的重复字符

我想创建一个包含字符“imsxeADSUXju”的 ABNF 规则。每个字符都是可选的。顺序无关紧要,但一个角色不得出现多次。

例如:它必须匹配

但不匹配

我创建了以下规则,但它不会阻止一个字符出现多次:

在此规则中,顺序很重要:

我如何编写一个忽略顺序但也防止双打的规则?