Описание тега treesitter

Tree-sitter - это инструмент генератора парсеров и библиотека инкрементного синтаксического анализа. Используйте этот тег для вопросов о том, как писать или компилировать грамматики и как использовать API Tree-sitter.
1 ответ

сделать treeitter соответствие имени класса

Я использую Treesitter для анализа кода Clojure. В частности, я хотел бы различать символы, имена классов и Java Interop. Это моя грамматика: module.exports = grammar({ name: 'clojure', extras: $ => [/[\s,]/], rules: { program: $ => repeat($._…
10 фев '20 в 11:39
1 ответ

Есть ли способ разбить грамматику treeitter на несколько файлов?

Я разбираю довольно простой язык, но моя грамматика уже становится громоздкой в ​​одном файле. Есть ли способ разбить его на несколько файлов?
30 июн '20 в 18:25
2 ответа

Как мне скомпилировать древовидные парсеры?

Я пытаюсь скомпилировать парсеры машинописного текста, tsx и python для использования с neovim, но когда я запускаюgcc -o parser.so -shared src/parser.c -Os -I./srcв соответствии с инструкциями по отслеживанию сидящего на дереве я получаю: Undefined…
18 май '20 в 14:53
1 ответ

Есть ли стандартная конструкция treeitter для анализа списка произвольной длины?

Один из самых распространенных сценариев синтаксического анализа в языках программирования - это непустой список элементов произвольной длины с разделителем, например: [1, 2, 3, 4, 5] f(a, b, c) Я разбирал это в treeitter следующим образом: list: $ …
30 июн '20 в 19:09
1 ответ

Как вы упаковываете грамматику "сидящего на дереве" для употребления?

Допустим, вы хотите написать программу, использующую написанную вами грамматику tree-sitter, используя пакет node-tree-sitter. Как вы упаковываете написанную грамматику для употребления? Какой минимальный набор файлов должен быть включен в модуль уз…
09 июл '20 в 05:32
1 ответ

Как использовать модуль node-tree-sitter из машинописного текста?

Глядя на запросы на вытягивание и проблемы, я вижу, что в модуле node-tree-sitter есть определения машинописного текста (возможно, в настоящее время устаревшие); как мне получить доступ к этим определениям из машинописного текста, и что было бы экви…
26 июл '20 в 20:05
0 ответов

Visual studio code nodejs версия зависимости расширения

Я разрабатываю собственное расширение vscode, и у меня проблема с зависимостью пакета npm. Каким образом можно установить зависимости vscode при отладке расширения? В Atom у вас есть apm, оболочка npm, которая упаковывает версию Atom nodejs. Activat…
1 ответ

Как получить значения из узлов в tree-sitter?

Если у меня простая грамматика на дереве: rules: { expr: $ => choice( /[0-9]+/, prec.right(seq($.expr, /[+-]/, $.expr)), ) } И вход: 3+4 Я получаю следующий CST: (start [0, 0] - [0, 3] (expr [0, 0] - [0, 3] (expr [0, 0] - [0, 1]) (expr [0, 2] - […
28 авг '20 в 17:10
1 ответ

Скомпилировано для разных NODE_MODULE_VERSION - парсер Tree-sitter, пакет ATOM

Я создал парсер tree-sitter, который разбирает некоторый устаревший язык SAP, который мы используем, чтобы сделать пакет совместимым с ATOM. Я буду очень грамотен в своих действиях, так как не очень уверен, где ошибся. Согласно документации tree-sit…
0 ответов

Синтаксис тестового файла tree-sitter конфликтует с синтаксисом языка программирования

Синтаксис тестового файла tree-sitter следующий: ========= Test name ========= input --- expected output Однако модули в TLA+ определены следующим образом: ---- MODULE ModuleName ---- ==== Это конфликтует с форматом файла теста tree-sitter. Если я п…
12 мар '21 в 23:30
4 ответа

установка nvim_treesitter на windows

плохой английский (извините). Я пытаюсь заставить nvim_treesitter работать на моем компьютере с Windows, на моем Linux он работал отлично, но теперь, когда я пытаюсь использовать Windows, команда:checkhealth nvim_treesitter дает: здоровье #nvim_tree…
18 мар '21 в 17:07
1 ответ

Как в древовидной грамматике сопоставить строки, кроме зарезервированных ключевых слов в идентификаторах?

Это может быть связано с тем, что я не понимаю функцию извлечения ключевых слов , которая, как видно из документации, позволяет избежать проблемы, когда между ключевым словом и следующим выражением нет пробела. Но скажем, у меня есть довольно станда…
21 мар '21 в 17:36
2 ответа

Как в древовидной грамматике неассоциативно сопоставить список значений без разделителей?

Например, рассмотрим следующую грамматику: source_file: $ => $._expression, _expression: $ => choice( $.identifier, $.operator ), identifier: $ => /\w*[A-Za-z]\w*/, operator: $ => seq( repeat1(seq($._expression, '\\X')), $._expression ) …
1 ответ

Невозможно закодировать приоритет правила блока над правилом оператора в tree-sitter

Я пытаюсь закодировать простую грамматику, которая охватывает как простые операторы, так и операторы, заключенные в блок. Для блока есть специальное ключевое слово. Я указал приоритет правила блока выше нуля, но tree-sitter по-прежнему не соответств…
18 дек '20 в 14:07
1 ответ

В древовидной грамматике, может ли конфликт приоритета / ассоциативности операторов вызвать сбой синтаксического анализа во время выполнения?

Рассмотрим инфиксный оператор, такой как подмножество (⊂). Оператор подмножества не ассоциативен, потому что его результат (логическое значение) сам по себе не является набором и поэтому не может быть передан в ту или иную сторону оператора подмноже…
1 ответ

Добавление правила к грамматору Treesitter LR1 изменяет приоритет

Я пытаюсь установить правильный приоритет операторов в грамматике Treesitter. Treesitter - это генератор парсера LR1. У меня простая художественная грамматика, которая частично выглядит так: multiply_expression: $ => prec.left(2, seq( $._expressi…
17 апр '21 в 15:21
0 ответов

Запрос на выбор HTML-тега, не имеющего заданного атрибута

Учитывая следующее дерево: style_element [0, 0] - [1, 8] start_tag [0, 0] - [0, 19] tag_name [0, 1] - [0, 6] attribute [0, 7] - [0, 18] attribute_name [0, 7] - [0, 11] quoted_attribute_value [0, 12] - [0, 18] attribute_value [0, 13] - [0, 17] raw_te…
22 апр '21 в 20:33
1 ответ

Как сделать запрос без учета регистра в tree-sitter

Я пытаюсь создать и использовать древовидную грамматику на языковом сервере, который я реализую, чтобы поддерживать такие функции, как поиск всех ссылок на переменную. Учитывая грамматику, я мог бы написать запрос, чтобы найти все ссылки на переменн…
15 май '21 в 21:50
0 ответов

Как установить C ++ и Tree_sitter в Windows 10? - Требуется Microsoft Visual C++ 14.0 или выше

Мне почему-то не хватает C / C ++ в Windows 10, и я думаю, как установить. Моя конечная цель - установить инструмент dbt в Window 10. Установлен Python 3.9, а также VS2019. Интересно, почему VS2019 не предоставляет необходимых возможностей. Команда:…
10 июн '21 в 12:21
0 ответов

Tree-Sitter.py все пути от листа к листу

Я пытаюсь извлечь весь путь от листа к листу из синтаксического дерева, созданного с помощью tree-sitter, для использования в code2vec, но я не могу понять, как идентифицировать листья, а затем как разработать алгоритм.
28 июн '21 в 16:13