Mozilla Rhino: Стандартно ниво на съответствие с JavaScript

за да се изпълни JavaScript в Rhino, трябва да се създаде контекст за изпълнение на скрипта. Конструкторът на контекстния клас използва нивото на съответствие на 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() е пропуснато.


person Community    schedule 17.07.2009    source източник
comment
Може би трябва да зададете този въпрос в пощенския списък на Mozilla Rhino.   -  person Ionuț G. Stan    schedule 17.07.2009


Отговори (1)


След като прегледахме по-голямата част от кода на 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;
}
person Jamie McCrindle    schedule 31.08.2009