有两行:
1.类“ANTLRInputStream”的示例被创建为“input”;
1.另一个LabLexer类的示例被创建为“lexer”,其中前一行的“input”对象被传入构造函数;“lexer”构造函数指定输入参数类型为CharStream,但CharStream是一个接口。此接口实现“ANTLRStringStream”类。后者有一个继承类-“ANTLReaderStream”,并且从第一行开始就有“ANTLRInputStream”。问题描述:“LabLexer”中的“LabLexer(org.antlr.v4.runtime.CharStream)”不能应用于“(org.antlr.runtime.ANTLRInputStream)”不幸的是,我不能更改代码,因为对我来说这是一个相当复杂的工具-代码是“根据说明”编写的。
我尝试更改变量的类型-不成功。添加新构造函数或更改现有的-也不成功(CharStream类型的变量在代码开始时初始化)。x1c 0d1x
2条答案
按热度按时间gcmastyq1#
ANTLRInputStream
类是ANTLR v3类。您需要v4变体。请改为执行以下操作:neskvpey2#
有趣的是,我很快就找到了一个解决方案。变量的类型必须是接口的名称。Char input = new ANTLRInputStream(arg);代替ANTLRInputStream,输入=新的ANTLRInputStream(参数);很抱歉问了这个愚蠢的问题,但我是Java新手))