code_include
是你想要的合适的东西。第二个参数标识包含并确定代码生成器输出不同代码的顺序
代码_包含
s.由于您选择了空标识符
""
,您的文本总是排在第一位,但不能有多个
代码_包含
s具有相同的标识符(后者覆盖前者)。
你给的文本
代码_包含
在…内
{*
和
*}
未被解释,因此不能在那里有动态部件。但是,如果使用代码生成器的ML接口,则可以在调用之前生成字符串
export_code
。这可能看起来如下:
ML {*
val scala_header =
let
val package = "package GENERATED";
val date = Date.toString (Date.fromTimeLocal (Time.now ()))
val header = package ^ "\n\n" ^ "// Generated by Isabelle on " ^ date ^ "\n"
in
Code_Target.add_include "Scala" ("", SOME (header, []))
end
*}
现在,你只需要打电话
scala_header
之前
导出代码
:
setup {* scala_header *}
export_code ... in Scala file ...
这将为您提供大致正确的生成日期。详细地说,时间将是
setup {* scala_header *}
执行,这可能是(由于多线程)之前的一段时间
导出代码
实际执行。即使在顺序模式下,当您生成大量代码或对代码方程进行大量预处理时,间隔也可能是几分钟。