问题标签 [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.
regex - RFC 正则表达式运算符
我最近阅读了一个 RFC 文档,我注意到已经使用的正则表达式运算符与众所周知的不匹配。例如:
方括号意味着它将只匹配其中几个字符中的一个。但在 RFC 中,我看到他们将其解释为“可选”。与 asterix 相同,表示前面的标记将出现零次或多次。在我们的例子中
这不难猜到,这意味着 DIGIT 令牌出现了 4 次。
我应该如何解释 RFC 文档正则表达式运算符,是否有任何文档描述它们的名称?
http - Is it acceptable for the qvalue to be "1." or "0." based on RFC7231 (HTTP 1.1)?
Is it acceptable for the QVALUE to be "1." or "0." in, say, the Accept-Language header? e.g. Accept-Language: en;q=1.
or Accept: text/plain;q=0.
RFC7231 (and RFC2616) which specifies the ABNF for QVALUE as follows:
And specifies the "ABNF" as follows:
where
<a>
and<b>
are optional decimal values, indicating at least<a>
and at most<b>
occurrences of the element.
This seems to imply that 0 or more digits after the decimal point are acceptable, suggesting that "1." and "0." are valid QVALUEs. However, my intuition is telling me that these are not valid floating point numbers.
I've searched high and low and I can't find any examples which demonstrate this.
validation - 这个 ABNF 中的 [CFWS] 和 [FWS] 是什么意思?
电子邮件的RFC 2282具有以下 ABNF 用于引用字符串。
我搜索了一下,发现 CFWS 是 Comments、Folding、Whitespaces。我知道空格是什么,但不知道电子邮件地址中的 ABNF 是什么评论和折叠。
还有 *() 内的 [FWS] 是什么意思?双引号可以有 0 次或多次出现的 qcontent,前面有折叠和空格?
这非常令人困惑。了解 ABNF 的参考资料将不胜感激。
parsing - ABNF 中的替代算子是可交换的吗?
增广巴科斯-瑙尔形式中的替代算子 ( /
) 是可交换的吗?
例如,是否s = a / b
与 相同s = b / a
?
json - 带有节点 js 的 abnf 解析器
有人可以建议如何使用 ABNF 语法解析 TEXT 吗?
安装 abnf 模块。我在 abc.abnf 文件中有语法。我在 abc.txt 文件中有文本内容。我成功地验证了语法。我希望 abc.txt 中的内容需要针对 abc.abnf 语法进行验证。
我只想在解析/验证后将下面的短信转换为 Json...
输入文本
DMS/6
Dinesh-Sr.Anlayst/12345678
DBMS/PLSQL/JOINS DATASTRUCTURE/
TRESS /Graphs
{
“消息”:“DMS”,
“版本”:“6”
“员工”:{
“名称”:“dinesh”,
“职务”:“高级分析师”,
“联系人”:“12345678”
}
“技能” : {
"dbms": {
"PLSQL",
"Joins"
},
"datastructure": {
"Trees",
"Graphs"
}
}
}
====
我试过的语法
DMS = MessageInfo
员工
技能;
MessageInfo = MessageIdentifier
倾斜
版本
CRLF;
员工 =
姓名
连字符
指定
倾斜
联系人;
技能=
5技能;
技能=
学科
专家
1专家2;
名称=10Alpha
指定=20Alpha
联系人=10 数字
主题=10Alpha
专家1=10Alpha
专家2=10Alpha;
消息标识符="DMS";
倾斜 = "/";
CRLF = %x0D;
版本 = "5";
阿尔法 = %x41-5A;
连字符 = "-";
数字= %x30-39;
c++ - 提升::ABNF 精神
我需要为以 ABNF 格式编码的协议创建解析器。我倾向于使用 boost::spirit 来完成这项任务。我阅读了文档,但我仍然不确定最有效的方法是什么。
据我了解,最好为所有终端符号创建一个词法分析器并使用 qi 解析输入。那正确吗?
c++ - 使用 boost::spirit 解析成一个复杂的结构
我有一个用 ABNF 语法规则编码的输入(它是 MEGACO 协议):
我想用 boost::spirit 将它解析成一个复杂的结构,伪代码:
需要注意的是,语法很复杂,包含很多备选方案、级别和序列。我不知道如何创建一个 boost::spirit 解析器来逐级解码这样的消息,并在过程中保存必要的值。
我也不确定 boost::spirit 是否适合它。
那么我该怎么做呢?
更新:我要感谢 sehe 提供了一个很好的例子,主要任务仍然是用消息中的值填充一些结构。我现在看到的唯一可能的方法是将 BOOST_FUSION_ADAPT_STRUCT 与许多结构一起使用,将 boost::variant 用于替代,将 std::vector 用于项目列表。我对吗?
grammar - 是否有任何用于开发 ABNF 语法的 IDE 或插件?
我目前正在调试 ABNF 语法。它目前非常大。我发现很难调试。IDE 或语法荧光笔会很有帮助。
有没有推荐的 ABNF 语法 IDE 或插件可用?不是 BNF ide 和插件。我的在线研究只给了我不识别 ABNF 语法的 BNF 插件,比如倾斜运算符。