微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JavaScript是上下文免费语言吗?

这篇文章how browsers work上解释了CSS是如何上下文的,而HTML则不是.但JavaScript如何呢,JavaScript上下文是否自由?

我正在学习CFG和正式的证明,但距离了解如何解决这个问题还有很长的路要走.有人知道JavaScript是否是上下文无关的?

解决方法

不,JavaScript不是一个无上下文的语言.

它非常接近于一个,ECMAScript 5规范确实是use a context-free grammar1来描述语言的语法(您可以在Annex A中找到所有的产品).

当然,它确实对纯上下文的语法生成做了一些扩展,并且描述了解析器的额外行为.一个特别的事情是lookahead的使用,它仍然产生一个无上下文的语言,但如果不能用于某些规则,会使语法复杂化.不允许某些事情出现在严格的模式代码中是类似的 – 它可以通过调整语法(具有更多的制作)来完成,但是通过离开BNF可以更容易地表达规则.

然而,还有一些规则使语言不会上下文.您将在description of early errors中找到一个概述,可以使程序代码无效.该对象字面值不能包含重复的属性名称,并且该函数参数列表不能包含重复的标识符是不能使用(有限)上下文无关语法表达的两个规则.
我的直觉告诉我,the automatic semicolon insertion在同一个盒子里,但我认为它的规则太复杂了,甚至不能在这里尝试证明.

1:实际上它使用两个语法,一个lexical一个syntactical,其中第一个在分割表达式和正则表达式之间消除歧义,并且产生作为第二语法的输入的令牌.2:与其他编程语言相比,实际上相当少

原文地址:https://www.jb51.cc/js/153166.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐