首页 文章

使用String Alloy

提问于
浏览
0

我有一个Alloy模块

module WorkPlace

sig String{}

sig person{}

sig Employee extends person{

name :String, boss: Employee,worker: set Employee}

sig Employee1 extends person{

name :String, boss: Employee,worker: set Employee}


fact Employee{

all e1:Employee, e2:Employee| (e1.name = e2 && e2.name = e1) =>e1 = e2}

run{}

当我三合一运行这个模式时,它给我这个按摩:“第2行第5列的语法错误:这里可以出现3个可能的令牌:NAME seq this”

我不知道它的意思是什么?

2 \如果我有2个合金模型,每个模型都有相同的元素,即mode1 / name,model2 / name . 如何创建一个可以说mode1 / name = model2 / name的事实或pred?

问候

1 回答

  • 1
    • 由于用户1513683已经回答:

    “字符串”是保留字 . 改为使用“string”(或者更好,“Name”)

    • 您可以从另一个模块打开现有模块,然后在该模块中,您可以使用两个模块中任何一个中存在的所有sig / relations . 例如:

    模块1(文件m1.als):

    module m1
    
    sig S1 {}
    

    模块2(文件m2.als):

    module m2
    
    open m1
    
    sig S2 {}
    
    run { #S1 = #S2 }
    

相关问题