Javascript对象解析

GAg*_*new 10 javascript parsing

我试图解析javascript(使用javascript),我遇到了对象的问题.javascript如何确定对象或块之间的区别?

例如

{ x : 1, y : 2}
Run Code Online (Sandbox Code Playgroud)

令牌流:

[{][x][:][1][,][y][:][2][}]
Run Code Online (Sandbox Code Playgroud)

然而,显然是一个对象

{ var x = 1; var y = 2}
Run Code Online (Sandbox Code Playgroud)

令牌流:

[{][var][x][=][1][;][var][y][=][2][}]
Run Code Online (Sandbox Code Playgroud)

是一个完全有效的匿名JavaScript块.我如何有效地将每个令牌流识别为对象或块?

但是,更重要的是,我将如何确定可能是对象的令牌流或如下所示的块之间的区别:

{ a : null }
Run Code Online (Sandbox Code Playgroud)

令牌流:

[{][a][:][null][}]
Run Code Online (Sandbox Code Playgroud)

这可以或者是一个对象,其参数等于零,或者它可能是一个块,其中该块中的第一条语句(null)具有一个标签(a)

Wil*_*ung 3

你不知道。

语法的上下文影响其身份。你不能断章取义并确定它们是什么。

在语法中,对象字面量是:

'{' (propertyNameAndValueList)? '}'
Run Code Online (Sandbox Code Playgroud)

而块是:

'{' (statementList)? '}'
Run Code Online (Sandbox Code Playgroud)

但文字仅存在于允许表达式的地方,而块则存在于允许语句的地方。这些不是同一件事。

因此,周围环境区分了这两种形式。