В настоящее время я использую парсер JavaScript/ECMAScript 5.1 с JavaCC и имею проблемы с продукцией ArrayLiteral.Как упростить изготовление литерала массива JavaScript/ECMAScript?
ArrayLiteral :
[ Elision_opt ]
[ ElementList ]
[ ElementList , Elision_opt ]
ElementList :
Elision_opt AssignmentExpression
ElementList , Elision_opt AssignmentExpression
Elision :
,
Elision ,
У меня есть три вопроса, я спрошу их один за другим.
Я попытался упростить/переписать ArrayLiteral
производства изображенной выше и, наконец, прибыл на следующую продукцию (псевдо-грамматики):
ArrayLiteral:
"[" ("," | AssignmentExpression ",") * AssignmentExpression ? "]"
Мой первый вопрос: является ли это переписывание правильным?
Два других quetsions:
- LOOKAHEADs for the JavaScript/ECMAScript array literal production
- How to implement a negative LOOKAHEAD check for a token in JavaCC?
Это хорошо, я думаю, что поеду за ним. Хотя вопрос с отрицательным 'LOOKAHEAD' по-прежнему интересен (мне нужно это в нескольких других местах). – lexicore