【发布时间】:2012-04-30 13:50:32
【问题描述】:
我想解析一个 mci 文件格式,用于在 java 中存储 petri 网展开前缀,以便我可以使用它来生成 SAT 公式
以下文本描述了用于存储的 MCI 文件格式 Petri 网展开前缀。
下面,CHAR是1字节的char,UINT4是little-endian (即最低有效字节位于最低地址, 并且其他字节以递增的顺序跟随 意义。)4 字节无符号整数(Intel 是 little-endian)。
条件总数(UINT4)
事件总数(UINT4)
对于每个事件(从第一个到最后一个): -- 原始转换的编号(UINT4)
对于每个条件(从第一个到最后一个): -- 原始位置的编号(UINT4) -- 预设事件的编号(UINT4); 如果条件是初始的,则为 0 -- 以 NULL(UINT4) 结尾的后置事件编号列表 (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++ 中。
【问题讨论】: