我正在考虑将 CUP 解析器生成器用于项目。为了正确解析我将要编译的语言的一些结构,我需要词法分析器(由 JFlex 生成)来使用符号表中的信息(不是解析表——我的意思是我将存储的表有关标识符的信息),以便在调用其 next_token() 方法时生成正确的令牌类型。由于符号表中的信息静态依赖于程序文本,因此只有在使用解析器“同步”调用 next_token() 方法时才会起作用。换句话说,如果解析器在需要另一个标记时调用词法分析器,这将起作用,但如果(例如)有一个并行线程正在调用词法分析器并缓冲队列中的标记,则不会。
因此问题是:CUP 如何调用词法分析器?它是否在需要下一个令牌时调用它?我当然可以只编写一个 CUP 语法规范并检查生成的解析器的源文件以查看发生了什么,但这可能比必要的工作更多。我在相关网站上找不到这方面的任何信息。
非常感谢您提供的任何帮助!