首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unicode版本的ABNF?

Unicode版本的ABNF?
EN

Stack Overflow用户
提问于 2015-03-11 07:20:45
回答 2查看 620关注 0票数 5

我想为文件格式编写语法,其内容可以包含除US字符以外的其他字符。既然我习惯了ABNF,我就试着用它.

然而,没有一个RFCs 五二三四七四零五对不使用美国ASCII的人非常友好。

事实上,我正在寻找一个ABNF版本(可能还有一些基本规则),它是面向字符的,而不是面向字节的;RFC 5234对此唯一要说的是在2.4节中:

代码语言:javascript
复制
2.4.  External Encodings

   External representations of terminal value characters will vary
   according to constraints in the storage or transmission environment.
   Hence, the same ABNF-based grammar may have multiple external
   encodings, such as one for a 7-bit US-ASCII environment, another for
   a binary octet environment, and still a different one when 16-bit
   Unicode is used.  Encoding details are beyond the scope of ABNF,
   although Appendix B provides definitions for a 7-bit US-ASCII
   environment as has been common to much of the Internet.

   By separating external encoding from the syntax, it is intended that
   alternate encoding environments can be used for the same syntax.

这并不能真正澄清问题。

是否有某个版本的ABNF是面向代码点的,而不是面向字节的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-11 07:27:46

如果您正在编写的ABNF是用于人类阅读的,那么我会说,只需使用正常的语法,引用代码点而不是字节即可。您可以查看各种允许在源文本中使用Unicode的语言规范,例如C#、Java、PowerShell等。它们都有语法,它们都必须在某个地方定义Unicode字符(例如用于标识符)。

例如,PowerShell语法有如下所示的行:

双引号-字符: " (U+0022) (U+201C) (U+201D) . (U+201E)双低报价标志

或者在Java规范中:

UnicodeInputCharacter: UnicodeEscape RawInputCharacter UnicodeEscape: \ UnicodeMarker HexDigit HexDigit UnicodeMarker: u UnicodeMarker u RawInputCharacter: . character =‘character 2’> HexDigit:其中之一 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F 这里的\u和十六进制数字都是ASCII字符。

请注意,周围有解释意图的文本--这总比抛出一堆语法给某人好。

如果是用于自动生成解析器,最好是找到一个工具,允许您以Unicode和类似ABNF的形式指定语法,并将其发布。不过,写解析器的人也应该明白这一点。

票数 1
EN

Stack Overflow用户

发布于 2015-03-13 21:41:11

请参阅RFC 5234第2.3节,它说:

规则解析为一串终端值,有时称为字符。在ABNF中,字符只是一个非负整数.在某些上下文中,将指定将值映射(编码)到字符集(如ASCII)。

Unicode只是一组非负整数,通过U+0000通过U+10FFFF减去代理范围D800-DFFF,并且有不同的RFCs相应地使用ABNF。RFC 3987就是一个例子。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28980706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档