accept IdentifierName in property-name context

This commit is contained in:
Dave Herman 2011-07-18 15:53:16 -07:00
Родитель 81f4c6fe58
Коммит 8f5aea80cb
1 изменённых файлов: 13 добавлений и 2 удалений

Просмотреть файл

@ -927,6 +927,18 @@ Narcissus.parser = (function() {
return new Node(t, { type: IDENTIFIER });
}
/*
* IdentifierName :: (tokenizer) -> IDENTIFIER node
*/
function IdentifierName(t) {
if (t.match(IDENTIFIER))
return new Node(t, { type: IDENTIFIER });
t.get();
if (t.token.value in definitions.keywords)
return new Node(t, { type: IDENTIFIER });
throw t.newSyntaxError("missing IdentifierName");
}
/*
* QualifiedPath :: (tokenizer, compiler context) -> (IDENTIFIER | DOT) node
*/
@ -1597,8 +1609,7 @@ Narcissus.parser = (function() {
case DOT:
n2 = new Node(t);
n2.push(n);
t.mustMatch(IDENTIFIER);
n2.push(new Node(t));
n2.push(IdentifierName(t));
break;
case LEFT_BRACKET: