0

私はいくつかの検証を行うために合金を調べ始めています。私はプログラミング言語を単純な構造で表現するための何かを作るために練習しようとしています。

マッピングエンティティには、プログラムと依存関係があります

プログラムには機能があります

関数にはコード行があります

依存関係は、プログラム内のある関数の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 {}
4

1 に答える 1

3

モデルに対して念頭に置いている制約を適用するいくつかの事実を追加する必要があります。

たとえば、すべての行に対応する関数があることを強制するには、次のように記述します。

fact LinesBelongToFunctions {
  all ln: line | 
    one f: function | 
      ln in f.Line
}

この事実は、各行に対して、行を含むln関数が1つだけ存在することを示しています。ff.Linesln

于 2013-01-07T16:04:02.983 に答える