Я пытаюсь разобрать javascript (используя javascript), и я столкнулся с проблемой с объектами. Как javascript определяет разницу между объектом или блоком?
Например
{ x : 1, y : 2}
токен:
[{][x][:][1][,][y][:][2][}]
Является явно объектом, однако
{ var x = 1; var y = 2}
токен:
[{][var][x][=][1][;][var][y][=][2][}]
Является абсолютно корректным анонимным блоком javascript. Как я могу эффективно идентифицировать каждый токен потока как объект или блок?
Однако, что более важно, оба из них, как бы я определял разницу между потоком токенов, который может быть объектом или блоком, подобным следующему:
{ a : null }
токен:
[{][a][:][null][}]
Это может быть либо объект, параметр a которого равен нулю, либо может быть блоком, где первый оператор в блоке (null
) имеет метку (a
)