PAT:过程分析工具包

一种用于并发和实时系统的增强模拟器、模型检查器和优化检查器

2009年9月25日:PAT支持用户定义的数据结构


仅PAT
支架整数,布尔值
整数数组为了有效验证。
然而,高级数据结构(例如堆栈、队列、哈希表等
on)对于某些型号是必需的。为了支持任意数据结构,PAT
提供一个接口,通过继承
抽象类
表达式值.

这个
下面是一个简单的示例,演示如何创建哈希表
在C#中。


使用系统。收藏品;
使用
拍。常见。课程。表达。表达式类;

//命名空间必须为PAT。类名和方法名可以
武断
名称空间PAT。图书馆{
公众阶级
哈希表:ExpressionValue
{
公共哈希表
表格;

///默认
不带任何参数的构造函数必须是
已实现
公众散列表()
{
           
table=新哈希表();
       
}

公众
哈希表(HashTable newTable)
{
           
table=新表;
       
}

public void Add(int
键,int值)
{
           
if(!table.ContainsKey(key))
{
               
表。添加(键,
值);
           
}
       
}
       

公共bool ContainsKey(int
键)
{
           
返回
表。包含密钥(key);
       
}

公共int
GetValue(int键)
{
           
返回(int)表[key];
       
}

///返回
散列的字符串表示
表。
///此方法必须
被覆盖
公共覆盖
一串ToString(目标字符串)()
{
           
字符串returnString=
“”;
           
foreach(表中的DictionaryEntry条目)
{
               
returnString+=条目。按键+“=”+输入。价值+
“,”;
           
}

           
return returnString;
       
}

///返回深度
哈希表的克隆
        ///
此方法必须
被覆写
公共覆盖
表达式值获取克隆()
{
           
return new HashTable(new
哈希表(表));
       
}

///返回
哈希的紧凑字符串表示
表。
///此方法必须
被覆盖
///智能
该方法的实现可以减少状态空间和加速
验证
公众
覆盖字符串获取ID()
{
           
string return字符串=
“”;
           
foreach(表中的DictionaryEntry条目)
{
               
returnString+=条目。键+“=”+输入。价值+
“,”;
           
}

           
return return字符串;
       
}
   
}
}

 请注意
创建自己的数据结构时遵循以下要求
物体:

  • 这个
    命名空间必须是“PAT.Lib”,否则将无法识别。没有
    类名和方法的限制
    名称。
  • 导入PAT表达式名称
    空间使用“
    使用
    拍打。常见。课程。表达。表达式类;
    “.
  • 仅限
    公共方法可用于PAT模型
  • 这个
    参数必须是“bool”、“int”、“int[]”(int数组)或对象类型
    (对象类型允许用户将用户定义的数据类型传递为
    参数)
    .
  • 这个
    参数的数量可以是0或多个。
  • 这个
    返回类型必须是“void”、“bool”、“int”、“int[]”(int
    数组)或用户定义的数据类型
    .
  • 这个
    方法名区分大小写。
  • 放置
    PAT安装目录的“Lib”文件夹中编译的dll
    易于使用的链接#导入
    “DLL_Name”;

如果您的
方法需要处理异常情况,可以抛出PAT运行时
异常,如以下示例所示。


public static int StackPeek(int[]数组)
{
if(数组长度>
0)
返回
数组[array.Length–1];

//抛出PAT运行时
例外
抛出新的
拍打。常见。课程。表达。表达式类。RuntimeException(“访问
空的
堆栈!”);
}

收件人
导入模型中的库,用户可以使用以下命令
语法:

#进口“PAT.Lib.Hashtable”;//在下导入库
PAT安装路径的Lib文件夹

#进口
“C:程序文件IntelHashtable.dll”;//使用绝对值导入库
路径

收件人
声明模型中用户定义的类型,请使用以下命令

语法:

无功功率,无功功率<HashTable>表;//在此处使用类名
作为变量的类型。

收件人
调用模型中的公共方法,请使用
以下语法
:

  • 表。增加(10,2);
  • 如果(表.ContainsKey(10))…


 


版权所有©2007-2009国立大学计算机学院
新加坡