我正在处理有关使用parboiled(link to the issue)生成代码的问题。
问题是这个bug似乎不在Parser
类本身,而是在为其规则生成的字节码中,特别是一个,因为stacktrace的开头似乎表明:
at org.parboiled.matchers.ProxyMatcher.label(ProxyMatcher.java:156)
at repro.abc.Parser$$parboiled.R33(Unknown Source)
at repro.abc.Parser.R32(Parser.java:239)
at repro.abc.Parser$$parboiled.R32(Unknown Source)
问题在于生成的R33
类的repro.abc.Parser$$parboiled
方法。我无法找到一种方法来抛弃它:(
我可以.getResourceAsStream("/repro/abc/Parser.class")
没有问题,但当然它不包含我感兴趣的代码,由Parboiled.createParser()
生成。
如何访问/转储此字节码到文件?
编辑:好的,更确切地说,当你这样做时:
Parser<?> parser = Parboiled.createParser(Parser.class);
parser
的类型为Parser$$parboiled
。我试过.getClass()
,但我无法获得InputStream
:(
答案 0 :(得分:0)
好吧,我找到了一个解决方案,但它确实是个hackish ......
解决方案是添加一个方法将生成的类'字节代码写入ParserTransformer#defineExtendedParserClass()
中的文件...
但我真的很感激一种不那么强硬的解决方案:/