Странное назначение JavaScript с логическим или - PullRequest
2 голосов
/ 28 февраля 2012

Я создаю синтаксический анализатор JavaScript и получил ошибку при тестировании его на jQuery в строке 496:

isArray: Array.isArray || function( obj ) {
    return jQuery.type(obj) === "array";
},

Я уменьшил его до этого:

a = b || function() {}

Isэто действительный ECMA-262 или это функция, которая была добавлена ​​с тех пор?В любом случае, как мне выразить это в виде синтаксического анализатора?

Мое абстрактное синтаксическое дерево для выражения присваивания:

data Assignment
    = CondExpr        CondExpr
    | Assign          LeftExpr AssignOp Assignment 
    | AssignFuncDecl  FuncDecl

Это не поддерживает назначения в вышеуказанном формате.

Я могу объяснить мой AST больше, если это необходимо.Спасибо за любую помощь, вы можете дать!

1 Ответ

2 голосов
/ 28 февраля 2012

Вы должны искать "ecma bnf". Вот одна ссылок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...