loc и range в esprima

Esprima - хорошая библиотека для разбора, анализа для многоцелевого кода javascript. Но я не понимаю loc а также range в esprima. На сайте они сказали, что:

  • loc Узлы имеют информацию о расположении строки и столбца.
  • range Узлы имеют индексный диапазон расположения (массив)

Я использовал пример кода, чтобы понять, что это такое.

var x = 42;
console.log(1);

И результат:

"range": [
        0,
        27
    ],

Не могли бы вы помочь мне понять range имея в виду.

Спасибо и всего наилучшего,

2 ответа

Просто учтите, что Esprima loc и range не точны для узлов шаблона. Он начинается с +1 от текущего индекса вместо 0. Просто сравните его с Acorn или Cherow, и вы увидите это сами. Не уверен для помеченных шаблонов.

В результате анализа Esprima range[0] — это индекс (отсчитываемый от нуля) первого проанализированного символа. range[1] — это индекс последнего проанализированного символа + 1.

Это соглашение позволяет легко использовать срез(диапазон[0], диапазон[1]) для получения всего текста анализируемого элемента. Но имейте в виду, что диапазон [1] НЕ является индексом последнего проанализированного символа, а индексом первого символа после него.

Esprima выдает «диапазон» только в том случае, если вы добавите параметр {range: true} как часть второго необязательного аргумента.

Другие вопросы по тегам