使用Frama中定义的Cil_datatypes
模块,我试图将一个术语(Cil_datatype)替换为谓词(Cil_datatype)中的一个新术语。要做到这一点,我需要用一个函数映射一个谓词,当它找到该术语(或多个术语)时,它就会在那里替换它。如何映射谓词来替换一个术语?
发布于 2014-07-16 07:51:29
我认为您正在寻找the plugin development guide第4.16节中描述的访问机制。基本上,您继承了Visitor.frama_c_copy
或Visitor.frama_c_inplace
类,并重新定义了vterm
方法,以便它在需要时返回修改过的术语。要启动访问,您可以使用类的实例和要修改的谓词调用Visitor.visitFramacIdPredicate
(或类似的函数,具体取决于谓词的确切类型)。
注意,如果您进行就地修改,您的转换可能会干扰Frama内核所做的注释管理。因此,最好让Visitor.frama_c_copy
执行谓词的深拷贝。
https://stackoverflow.com/questions/24765286
复制相似问题