Как приостановить пользовательский интерпретатор во время отладки? - PullRequest
0 голосов
/ 01 января 2019

Я разрабатываю новый пользовательский язык программирования для выполнения некоторых вычислений чисел и отображения результатов в определенном формате.

Для этой цели я использую Antlr4 для лексического анализа и анализа и разрабатываю его на Java.Я смог «выполнить» программу, переопределив методы посетителя, сгенерированные Antlr4.

Я сейчас пытаюсь добавить функциональность отладки и пытаюсь приостановить выполнение при достижении точки останова, а затем возобновить.Кроме того, мне также нужно поддерживать «Step Through», «Step In», «Step Out» и «Resume».

Может, кто-нибудь подскажет, как этого добиться?

1 Ответ

0 голосов
/ 01 января 2019

Сгенерированные ANTLR4 парсеры не могут быть остановлены и возобновлены в середине разбора.Для этого используйте интерпретаторы, которые поставляются со средой выполнения ANTLR4.Они реализуют простой обход ATN, который можно остановить в любой точке, и текущее состояние ATN можно сохранить для последующего возобновления работы отладчика.

Я реализовал этот подход в своем расширении vscode-antlr4 , что позволяет отлаживать произвольные грамматики ANTLR4.См. Также vscode marketplace для получения более подробной информации.

...