我想解析一个 mci 文件格式以在 java 中存储 petri 网展开前缀,以便我可以使用它来生成 SAT 公式
以下文本描述了用于存储 Petri 网展开前缀的 MCI 文件格式。
下面,CHAR 是 1 字节的 char,UINT4 是 little-endian(即最低有效字节在最低地址,其他字节按照重要性递增顺序。) 4 字节 unsigned int(Intel 很少-字节序)。
条件总数 (UINT4)
事件总数 (UINT4)
对于每个事件(从第一个到最后一个):--原始转换的编号(UINT4)
对于每个条件(从第一个到最后一个): -- 原始位置的编号(UINT4) -- 预设事件的编号(UINT4);如果条件是初始的,则为 0 -- NULL(UINT4) 终止的 postset 事件编号列表 (UINT4)
对于每个截止事件 -- 截止事件的数量 (UINT4) -- 对应事件的数量 (UINT4) 或 NULL(UINT4) 如果对应的事件是虚拟初始事件
分隔 NULL(UINT4)
对于每个配置: -- NULL(UINT4)-终止的事件编号列表。(这被一些古老的模型检查器使用;PUNF 不会创建它,只是输出终止的 NULL(UINT4)。)
分隔 NULL(UINT4)
原始网络中的总位置数(UINT4)
原始网络中的转换总数(UINT4)
位置/转换名称的最大字符串长度 (UINT4)(用于解析器中的内存分配)
对于原始网络中的每个位置: -- 名称(NULL(CHAR) 终止的字符串)
分隔 NULL(UINT4)
对于原始网络中的每个转换: -- 名称(NULL(CHAR) 终止的字符串)
终止 NULL(UINT4)。
注意:我已经用 C++ 实现了,但我想用 java 实现。供您参考。我使用了很多工具将其转换为 java,但它们都没有完全工作。因此,我将感谢你们的任何帮助。此外,如果需要,我会将代码放入 C++ 中。