我正在编写一个基于ECMA-262的JavaScript解析器。我很想知道我需要做多少修改才能使其与ECMA-357兼容。
句法上有什么不同吗?
发布于 2012-02-17 06:36:06
有许多语法扩展。其中最重要的是XML文本(参见第11.1.4和11.1.5节):
var foo = <xml>
foo
</xml>;
var bar = <>
<tag attr={(1+2).toFixed(2)}/>
{foo}
</>;上面的例子显示了XML代码中根标记为空和JavaScript表达式的特殊情况。
您还有一些在ECMA-262中无效的表达式(请参见第11.2节):
xml.@attr // get attribute attr
xml.* // get all child elements
xml.@* // get all attributes
xml..foo // get all <foo> tags
xml..foo.(@id == 1) // filter <foo> tags by id attribute有一些名称空间(参见第11.1.2节):
xml.soap::foo // get <foo> child tags with namespace soap
xml.@soap::attr // get attribute with namespace soap有一个默认的XML名称空间语句,它在语法上是一个非常不寻常的构造(参见12.1节):
default xml namespace = new Namespace("http://foo/bar");最后,还有一个类似于for .. in的for each .. in循环(参见第12.3节):
for each (var foo in xml)
{
}据我所知,这些都是语法上的差异--但你可能已经得到了足够多的语法差异。
https://stackoverflow.com/questions/9286392
复制相似问题