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:与其他编程语言相比,实际上相当少

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...