我几乎开始研究合金做一些验证。我正在努力练习为表示编程语言的简单结构。
映射实体具有程序和依赖关系
程序具有功能
函数有代码行
依赖关系是一个实体,它在程序中的某个函数中映射2行代码
这是我尝试做的,但输出图显示了一行链接到依赖关系元组但未与该函数匹配的代码。我需要所有代码行都在函数中,它们可以是依赖关系还是不是......
abstract sig mapping{}
sig Dependency extends mapping {dep0,dep1: one line}
one sig Program extends mapping{ F: some function, D: some Dependency }
//mapping entity is composed of Dependency pairs 2 lines of code
//and one program which has functions and dependency pairs
sig function { Line : some line}
//Function is made of line of code
abstract sig line{}
run {}
答案 0 :(得分:3)
您应该添加一些可以强制执行模型约束的事实。
例如,要强制每行都有相应的功能,您可以编写类似
的内容fact LinesBelongToFunctions {
all ln: line |
one f: function |
ln in f.Line
}
事实上,对于每一行ln
,只有一个函数f
,f.Lines
包含行ln
。