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} как часть второго необязательного аргумента.