2013-01-07 3 views
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 {} 

답변

3

당신은 당신의 모델에 대한 당신이 생각하고있는 제약 조건을 적용 할 몇 가지 사실을 추가해야합니다 ... 나는 함수에있을 코드의 모든 라인이 필요하고 그들이 종속 여부가 될 수 있습니다.

예를 들어, 모든 라인이 해당 기능을 가지고 시행, 당신은

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

같은 것을 쓸 수있는이 사실은 각 라인 ln에 대한 f.Lines 라인 ln을 포함 f하도록 정확히 하나 개의 기능이 존재 함을 말한다.