听众和访问者范围Antlr4-设计问题

听众和访问者范围Antlr4-设计问题,antlr4,Antlr4,我创建了一个类似于VisualBasic的解释器,现在添加了一些变量范围。 我的信息来源是权威Antlr参考的CH8及其附带代码。 基本上,示例使用侦听器,我的代码使用访问者 如果有人能澄清或纠正我对事物的理解,我将不胜感激: 就范围而言,我应该使用侦听器模型(根据Cymbol示例一书)首先遍历一棵树,通过覆盖与我需要捕获范围更改的函数和块相关的适当的输入/输出函数来创建范围/变量信息。其次,创建了作用域之后,我是否要访问树来运行程序?e、 g.如果我有VisitEnterFunction和Vi

我创建了一个类似于VisualBasic的解释器,现在添加了一些变量范围。 我的信息来源是权威Antlr参考的CH8及其附带代码。 基本上,示例使用侦听器,我的代码使用访问者

如果有人能澄清或纠正我对事物的理解,我将不胜感激:

就范围而言,我应该使用侦听器模型(根据Cymbol示例一书)首先遍历一棵树,通过覆盖与我需要捕获范围更改的函数和块相关的适当的输入/输出函数来创建范围/变量信息。其次,创建了作用域之后,我是否要访问树来运行程序?e、 g.如果我有VisitEnterFunction和VisitExitFunction,我应该推送和弹出示波器

提前感谢您帮助我建立正确的方法来完成这项工作。
Kevin

实现嵌套作用域的方法不止一种。若要解析稍后在源代码中定义的符号,必须采用双通道方法。第一步可以构建一个符号树,稍后用户可以在运行时在当前范围堆栈中使用该符号树。 第二个选项是将作用域作为注释附加到语法树本身。
同样,对于您遇到的问题,我不能推荐足够高的语言实现模式这本书-这里正好介绍了这些内容。

如果这本书专门讨论了访问者和范围,那么我需要再看一次,但它不在关于该主题的章节中。好了,这些书并没有回答我在范围界定方面关于访客的问题。我现在已经实现了一个解决方案,但需要进一步测试。当我解决了这个问题后,我会回答我自己的问题,以防它帮助他人或提供一个提供首选解决方案的机会。谢谢你。