最近我一直在研究解析器和语法以及它们是如何工作的。我正在阅读http://www.ietf.org/rfc/rfc4627.txt
使用 EBNF 的 JSON 的形式语法。我对我对 BNF 和 EBNF 的理解非常有信心,但显然我仍然没有完全理解它。RFC 定义了一个 JSON 对象,如下所示:
object = begin-object [ member *( value-separator member ) ]
end-object
我知道这里的意图是表示任何 JSON 对象都可以(可选地)有一个成员,然后是 0 个或多个(值分隔符,成员)对。我不明白为什么星号出现在. (value-separator member)
星号不是应该模仿正则表达式,以便它出现在要重复 0 次或更多次的项目之后吗?JSON对象语法不应该这样写吗:
object = begin-object [ member ( value-separator member )* ]
end-object