"go tool cover -var = foo"似乎可以生成可以在集成测试工具中部署的检测代码.是否有人为此目的使用此功能?如果是这样,是否有定期转储计数器的传统方法?似乎棘手的部分是在所有感兴趣的文件中以近乎同时的方式执行此操作.即使这样,一些倾斜(如果使用-mode = count)也是不可避免的.
我的(一)编译器课程已经很多年了,如果这个问题不合适,请原谅我.我也是ANTLR和C的新手,而不是Java编码器.我想做的是描述我的问题,然后就最好的技术寻求建议.
我正在尝试将ASN.1制作翻译成ML.例如,
Foo ::= ENUMERATED {
bar (0), -- some comment 0
baz (1) -- some comment 1
}
Run Code Online (Sandbox Code Playgroud)
成
<Enumerated name="Foo">
<NamedValues>
<Unsigned name="bar" value="0" comment="some comment 0"/>
<Unsigned name="baz" value="1" comment="some comment 1"/>
</NamedValues>
</Enumerated>
Run Code Online (Sandbox Code Playgroud)
我的(简化)ASN1语法是:
assignment : IDENTIFIER typeAssignment ;
typeAssignment : '::=' type ;
type : builtinType ;
builtinType : enumeratedType ;
enumeratedType : 'ENUMERATED' '{' enumerations '}' ;
...
Run Code Online (Sandbox Code Playgroud)
"明确的ANTLR4参考"中的几个示例演示了覆盖BaseListener中的一些enterNode或exitNode方法,所需的一切都在Node的上下文中.我的问题是我想覆盖enterTypeAssignment和exitTypeAssignment,但我需要的一些信息是在解析树上的节点更高(例如赋值)或更低(例如枚举).
这里有足够的描述来询问我是否应该使用访客或听众模式?我们将非常感谢您关注哪些书籍示例的建议.
我对蛮力方法有点运气:
import org.antlr.v4.runtime.TokenStream;
import org.antlr.v4.runtime.misc.Interval;
public class MylListener extends ASN1BaseListener …Run Code Online (Sandbox Code Playgroud)