javascript - E4X规范有误吗?

标签 javascript xml specifications e4x

有人知道 ECMAScript for XML(E4X;ECMA-357 2º 版)并阅读过它的规范吗?弃用了,我知道。要开始我的问题,请让我先指出一些事情:

E4X 允许像 <x/> 这样的表达式,从而扩展 PrimaryExpression XMLInitialiser | XMLListInitialiser 制作。

但是,他们说:

The syntactic grammar for XML initialisers processes input elements produced by the lexical grammar goal symbols InputElementXMLTag and InputElementXMLContent. These input elements are described in section 8.3.

(对于 XML 列表也是如此。)

所以,不是 XMLInitialiser 还应该处理 InputElementRegExp ?规范试图拒绝这一点。请检查这些定义:

XMLInitialiser :

  • XMLMarkup
  • XMLElement

XMLElement :

  • < XMLTagContent XMLWhitespace 选择 />

还有,

InputElementXMLContent ::

  • 还有更多...

它们都使 < 可用,但是如何解析其他需要 InputElementRegExp 的表达式? ?

最佳答案

So, isn't XMLInitialiser supposed to also process InputElementRegExp?

是的,XMLInitialiser (或 XMLListInitialiser )会消耗 XMLMarkup InputElementRegExp 匹配的元素.

The specification tries to reject that.

怎么会这样?

They all make < available, but then how would one parse other expressions that need InputElementRegExp? [In comment:] ... it'd cause a conflict for scanning an InputElementRegExp as well as an InputElementXMLContent, this is because the < symbol comes first in XMLInitialiser or XMLListInitialiser.

如果您说 InputElementRegExp 之间存在冲突和 InputElementXMLContent因为它们都派生出“<”:不,这不是冲突,因为这两个符号永远不会在输入中的同一点使用。见第 8 节第三段:

InputElementXMLContent 用于那些允许 XML 元素的文字内容的句法上下文。InputElementRegExp 符号用于所有其他句法语法上下文。”

也就是说,在任何给定的句法上下文中,应该只使用一个词汇目标符号 (InputElementSomething)。

另一方面,如果您说 XMLInitiliser 之间存在冲突和 XMLListInitialiser因为他们都派生出以 < 开头的句子: 嗯,是的,这对 LL(1) 解析器来说是个问题,但我相信 LL(2) 或 LR(1) 解析器可以处理它。

I believe the < production in the InputElementXMLContent was a mistake.

我不这么认为。考虑这个例子 <A><B/></A> .在<A>之后, 句法解析器期待 XMLElementContent</ ,这意味着词法分析器必须使用 InputElementXMLContent作为目标符号。所以后者必须能够匹配<为了使此解析成功。

[from comment:] XMLElement starts with a < terminal and may nest other elements, thus, it should be InputElementRegExp IMO.

再次参见第 8 节。我上面引用的两个句子表明,在看到 <A> 之后, 你必须使用 InputElementXMLContent获取下一个输入元素。

关于javascript - E4X规范有误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47003302/

相关文章:

javascript - Jquery addclass 无法将 "fadeoutdown"效果应用于 DIV

javascript - 在 jquery on 或 javascript bind 中分配变量

xml - 拦截/记录来自 .net 应用程序的 REST 请求

security - 为什么 RFC 6797 禁止通过纯 HTTP 响应发送 Strict-Transport-Security header ?

javascript - jsDoc - 如何指定数组长度

javascript - 如何让 Featherlight Image Gallery 发挥作用?

javascript - 了解 express.js/sails.js Controller 范围内的下一个中间件

c# - 对象到/从 XML : generic Load and Save

sql - 如何计算 SQL XML 中节点的出现次数?

Java 规范未经检查的异常 "must"被捕获