Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在调试时暂停定制的解释器?_Java_Debugging_Antlr_Antlr4_Interpreter - Fatal编程技术网

Java 如何在调试时暂停定制的解释器?

Java 如何在调试时暂停定制的解释器?,java,debugging,antlr,antlr4,interpreter,Java,Debugging,Antlr,Antlr4,Interpreter,我正在开发一种新的自定义编程语言来执行一些数字计算,并以特定格式显示结果 为此,我使用Antlr4进行词法分析和解析,并用Java进行开发。我已经能够通过重写Antlr4生成的访问者方法来“执行”程序 我现在尝试添加调试功能,并尝试在遇到断点时暂停执行,然后继续。除此之外,我还需要支持逐步完成、介入、退出和恢复 是否有人对如何实现这一点提出一些看法? < P> ANTLR4生成的解析器不能在解析运行的中间停止和恢复。为此,请使用ANTLR4运行时附带的解释器。它们实现了一个简单的ATN漫游,可以

我正在开发一种新的自定义编程语言来执行一些数字计算,并以特定格式显示结果

为此,我使用Antlr4进行词法分析和解析,并用Java进行开发。我已经能够通过重写Antlr4生成的访问者方法来“执行”程序

我现在尝试添加调试功能,并尝试在遇到断点时暂停执行,然后继续。除此之外,我还需要支持逐步完成、介入、退出和恢复


是否有人对如何实现这一点提出一些看法?

< P> ANTLR4生成的解析器不能在解析运行的中间停止和恢复。为此,请使用ANTLR4运行时附带的解释器。它们实现了一个简单的ATN漫游,可以在任何点停止,并保存当前的ATN状态,以便以后继续调试器


我在扩展中实现了这种方法,它允许调试任意ANTLR4语法。有关更多详细信息,请参见。

通常我建议对代码进行JIT并插入中断代码3,然后使用调试器进行捕获,但这在这里并不起作用。我建议将代码编译成一种虚拟语言,然后按顺序运行,然后添加代码以创建断点,而不是您当前正在做的事情。一旦虚拟代码中触发了断点,最简单(也是最有技巧)的解决方案就是调用一个虚拟函数,将断点放入IDE中。谢谢分享。我将尝试这种方法。