Можно ли динамически добавлять «ключевые слова» в подсвечивание синтаксиса кода VS? - PullRequest
1 голос
/ 24 марта 2019

Я играл с подсветкой синтаксиса в VS Code и до сих пор смог получить довольно хороший результат, используя собственную грамматику JSON TextMate.Хотя расширение для сборки GCC ARM уже существовало, я подумал, что это плохо, поэтому я использовал исходный код в качестве отправной точки для создания собственного.

Однако есть сценарий, который я не могу понятькак справиться.В GCC ARM вы можете использовать директиву .macro для создания макросов следующим образом:

                .macro print format, storage
                .data
string\@:       .asciz "\format"
                .align 2
                .text
                .ifnb \storage
                mov r1, \storage
                .endif
                ldr r0, =string\@
                bl printf
                .endm

Если вы никогда не смотрели на GCC ARM, все, что вам нужно знать, это то, что первая строка запускает макрос,где print - это имя макроса, а format и storage - его аргументы.Затем внутри макроса вы можете использовать значения аргументов с \format и \storage где угодно.Существует также \@, которая является специальной «переменной», которая имеет значение только внутри макросов.Все, что это - число, которое увеличивается каждый раз при вызове макроса.

Что я хотел бы сделать, так это как-нибудь написать подсветку синтаксиса, которая будет динамически распознавать имена аргументов в объявлении макроса, а затем раскрашивать их соответствующие использования(начиная с косой черты) везде, где они появляются внутри макроса.Кажется, проблема в этом заключается в том, что мне нужно каким-то образом динамически создавать список новых «ключевых слов» (или как угодно, чтобы вы называли строки текста), на которые я мог бы сослаться из правил внутри контекста макроса.

Возможно ли это в VS Code с грамматикой TextMate?Возможно ли это в VS Code вообще?Если нет, возможно ли это в ЛЮБОМ редакторе?Если это невозможно с грамматиками TextMate, что мне нужно сделать, чтобы добиться этого?

Не стесняйтесь спрашивать более подробную информацию, если что-то будет плохо объяснено, и я отредактирую вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...