Mozilla Rhino: уровень соответствия JavaScript по умолчанию - PullRequest
0 голосов
/ 17 июля 2009

для выполнения JavaScript в Rhino необходимо создать контекст выполнения для скрипта. Конструктор класса Context использует уровень соответствия JavaScript VERSION_DEFAULT.

protected Context(ContextFactory factory) {
    if(factory == null) {
        throw new IllegalArgumentException("factory == null");
    }
    this.factory = factory;
    **setLanguageVersion(VERSION_DEFAULT);**
    optimizationLevel = codegenClass != null ? 0 : -1;
    maximumInterpreterStackDepth = Integer.MAX_VALUE;
}

Поскольку я не могу найти сопоставление VERSION_DEFAULT с какой-либо из фактических VERSION_XXX констант в API, мне интересно, каков уровень соответствия JavaScript VERSION_DEFAULT. В примечании к выпуску Rhino 1.7R1 (* ttps: //developer.mozilla.org/en/New_in_Rhino_1.7R1) говорится, что нужно явно указывать версию JavaScript, но не указывается, какая версия используется, когда Context.setLanguageVersion() опущено.

1 Ответ

1 голос
/ 31 августа 2009

Изучив большую часть кода Rhino, похоже, что большая часть тестирования на языковой версии является отрицательным, например,

if (getLanguageVersion() != Context.VERSION_1_2) {
  return paramCount;
}

VERSION_DEFAULT определен как '0', поэтому единственное место, где он должен выглядеть как 1.7, это поддержка ключевых слов "let" и "yield" из-за этого кода из TokenStream:

if ((result == Token.LET || result == Token.YIELD) && 
  parser.compilerEnv.getLanguageVersion() 
    < Context.VERSION_1_7)
{
  // LET and YIELD are tokens only in 1.7 and later
  result = Token.NAME;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...