KR100212465B1 - 객체지향 칠을 칠로 변환시 모레타 모드에 대한 그랜트/시즈 처 리 방법 - Google Patents

객체지향 칠을 칠로 변환시 모레타 모드에 대한 그랜트/시즈 처 리 방법 Download PDF

Info

Publication number
KR100212465B1
KR100212465B1 KR1019960033693A KR19960033693A KR100212465B1 KR 100212465 B1 KR100212465 B1 KR 100212465B1 KR 1019960033693 A KR1019960033693 A KR 1019960033693A KR 19960033693 A KR19960033693 A KR 19960033693A KR 100212465 B1 KR100212465 B1 KR 100212465B1
Authority
KR
South Korea
Prior art keywords
mode
grant
symbol table
table entry
node
Prior art date
Application number
KR1019960033693A
Other languages
English (en)
Other versions
KR19980014633A (ko
Inventor
박경숙
이준경
이동길
최완
Original Assignee
정선종
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 정선종, 한국전자통신연구원 filed Critical 정선종
Priority to KR1019960033693A priority Critical patent/KR100212465B1/ko
Priority to US08/828,695 priority patent/US5889998A/en
Publication of KR19980014633A publication Critical patent/KR19980014633A/ko
Application granted granted Critical
Publication of KR100212465B1 publication Critical patent/KR100212465B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

본 발명은 객체지향 CHILL을 CHILL로 변환시 모레타 모드에 대한 GRANT 및 SEIZE 처리 방법에 관한 것으로, 객체지향 CHILL을 CHILL로 변환할 때 모레타 모드에 대해서 모듐 단위로 grant/seize 할 수 있는 특성을 갖는 구문을 정의하고 이 구문을 이용하여 모레타 모드에 대한 grant/seize를 CHILL에서 모듈 단위로 grant/seize할 수 있도록 구현함으로써 실제 모레타 모드의 grant/seize와 유사한 기능을 효율적으로 제공해 줄 수 있는 개체지향 CHILL을 CHILL로 변환시 모레타 모드에 대한 GRANT 및 SEIZE 처리 방법이 개시된다.

Description

객체지향 칠을 칠로 변환시 모레타 모드에 대한 그랜트/시즈 처리 방법
본 발명은 객체지행 칠(이하, CHILL이라 함) 변환기로 객체지향 CHILL을 CHILL로 변환시 모레타 모드에 대한 그랜트/시즈(이하, GRANT/SEIZE라 함) 처리 방법에 관한 것이다.
객체지향 CHILL 언어는 통신 시스템용 소프트웨어의 재사용성과 모듈성을 향상시키기 위해 ITU-T에서 권고 진행중인 표준 프로그래밍 어어이다. 객체지향 CHILL의 주요 특성으로는 객체지향성, 중복성, 포괄성등을 들 수 있다. 일반적으로 객체지향성이란 정보 은닉, 추상 자료 형, 상속, 다형성 등의 개념들을 말하는데, 객체지향 CHILL에서는 이들을 모레타 모드(Moreta-Mode)속에서 정의하여 지원한다. 모레타 모드란 복합 모드로써 순차 특성을 지니는 모듈 모드, 모니터 특성을 지니는 리전 모드, 병행적특성을 지니는 타스크 모드로 분류한다.
모듈 모드는 원소 데이터와 원소 프로시듀어의 결합으로된 속성을 지니고 실행문이 없는 모듈 특성을 지니는 것으로, 이들은 순차적으로 수행되며 외부로 부터의 다중 접근에 대해 상호 배제를 할 수 없는 특성을 지니다.
리전 모드는 모듈 모드의 속성을 지니고, 외부로 보여지는 일반적(public)가시성을 지니는 원소 프로시듀어에 대해 임계성을 가진 특성을 지니는 것으로, 이들은 순차적으로 수행되며 외부로부터 다중 접근에 대해 세마포를 이용해 상호 배제를 수행하는 특성을 지닌다.
타스크 모드는 모듈 모드의 속성을 지니고 하나의 암시적인 쓰래드를 가지는 병행적 특성을 지니는 것으로, 이들은 구현에 따라 버퍼 장소나 시그널 이름의 메시지 큐를 가진 자신의 쓰래드 제어를 가지는데 병행적으로 수행되며 외부로부터의 다중 접근에 대해 순차적인 메세지 선택을 하여 상호 배제를 수행하는 특성을 지닌다.
위와 같은 특성을 지닌 모레타 모드들은 외부와의 인터페이스 역할을 수행하는 명세부와 실제 구현된 내용이 있으며 라이브러리 역할을 수행하는 본체부로 크게 나누어진다.
모레타 모드의 상속에 대해 설명하면 다음과 같다. 객체지향성에 기반한 모레타 모드는 이의 파생된 하위 모레타 모드를 정의하는데 있어서 이의 상위 모레타 모드의 이름만을 언급하고 새로운 속성을 추가하여 모레타 모드를 정의하는 것이 가능하다. 모레타 모드 정의가 간단하고 유연하며 기존의 모레타 모드에 재프로그램/재커파일이 없이 새로운 기능을 첨가하여 모레타 모드를 정의하므로 효과적이다. 상위 모레타 모드에서 파생된 여러 파생 모레타 모드들은 상위 모레타 모드의 속성을 몰려 받는다.
일반적으로 상위 모레타 모드와 파생 모레타 모드간에는 is-a관계를 가지고, 파생 모레타 모드는 상위 모레타 모드보다 더 많은 속성들을 가질 수 있다. 여기서 is-a 관계란 상위 로레타 모드의 모든 원소 및 이들의 가시성을 변경 없이 물려 받음을 의미한다. 상위 모레타 모드의 속성인 원소와 각 원소들의 가시성을 하위 모레타 모드에 상속하는 규치기은 다음과 같다.
- 상위 모레타 모드의 생성자와, 소멸자 메소드는 상속되지 않는다.
- 상위 모레타 모드를 구성하는 생성자 및 소멸자 메소드를 제외한 모든 원소(즉 정의(SYNONYM) 선언문, 문법 모드(SYNMODE)/새로운 모드(NEWMODE) 정의문, 변수(DCL)선언문, 메소드 정의문 및 GRANT/SEIZE 선언문)가 그대로 상속된다.
- GRANT문이 그대로 상속됨에 따라 상위 모레타 모드내의 각 원소들에 대한 가시성 범주가 변경없이 상속된다.
모레타 모드의 가시성에 대해 설명하면 다음과 같다. 모레타 모드는 내부의 속성을 외부에 보여주지 않는다. 모레타 모드의 밖에서 모레타 모드 내부의 속성을 보려면 모레타 모드안에서 grant문을 사용한다. 모레타 모드는 다음의 3가지 가시성을 가진다.
- 개인적(private) 가시성 : 가시성 범주는 자신의 모레타 모드속 뿐이다.
- 내부(internal) 가시성 : 가시성 범주는 자신 뿐만이 아니라 자신에서 파생된 하위 모레타 모드까지이다.
- 일반적(public) 가시성 : 자신과 하위 모레타 모드 뿐만 아니라 선언된 모레타의 외부의 범위까지 가시성 범주를 갖는다.
모레타 모드에 대한 변환 규칙을 설명하면 다음과 같다. 객체지향 CHILL 컴파일러를 개발하는 방법은 크게 두가지 방법이 있다. 첫째는 객체지향 CHILL을 기존의 CHILL 언어문법에 맞게 코드를 변환하여 기존의 CHILL 컴파일러를 그대루 사용하는 방법이다. 둘째는 새로운 언어인 객체지향 CHILL을 위한 컴파일러를 새로이 개발하는 방법이다. 본 발명에서는 첫 번째 방법으로 객체지향 CHILL 컴파일러를 개발하고 있으며 객체지향 CHILL을 CHILL로 변환하는 객체지향 CHILL변환기를 개발한다. 따라서 객체지향 CHILL에서 CHILL로 변환하는 변환 규칙에 대한 정립이 필요하다. 모레타 모드는 객체지향 CHILL에서만 정의된 모드이므로 CHILL로 변환하기 위해서는 CHILL 언어에 있는 기능들을 이용하여 최대한 그 의미를 살릴 수 있어야 한다. 모레타 모드들은 기존의 CHILL로 변환될 때 모듈로 변환되고 모레타 모드내의 구성 요소들은 내부의 요소로 생성된다. 만약 모레타 모드가 상속된 파생 모레타 모드일 경우에는 상속받는 상위 모레타 모드의 구성 요소들도 함께 모듈 내부 요소로 포함이 된다. 여기서 모레타 모드의 구성 요소에는 다음과 같은 것들이 있다.
- SYNONYM 정의문
- 모레타 모드를 제외한 SYNMODE/NEWMODE 정의문
- DCL 선언문
- 프로시듀어 정의문
- 프로세스 정의문 (리전 모드나 타스크 모드 내에서는 제외)
- 시그널 정의문 (타스크 모드 내에서는 제외)
- PUBLIC/SEIZE 문
이들 모레타 모드의 구성 요소들 중 CHILL로 변환하는 방법은 DCL로 선언된 데이터 장소들에 대해서 모레타 이름을 가지는 스트럭트(STRUCT) 모드의 요소들로 변환하고, 나머지 요소들은 이름 변환 규칙에 따라서 CHILL 이름으로 각각 변환한다. 따라서 하나의 모레타 모드가 CHILL로 변환이 되면 여러개의 이름으로 변환이 된다. 그리고 CHILL로 변환이 되면 모레타 모드와 그 구성요소간 관계를 알 수가 없다.
모레타 모드의 GRANT/SEIZE에 대해 설명하면 다음과 같다. 객체지향 CHILL의 모레타 모트가 CHILL의 모듈로 변환된다. CHILL에서 모듈은 이름들의 가시성을 결정하는 프로그램 구조로서 모듈내에서는 그 모듈내에서 정의된 이름들만 사용할 수 있으며 상위 모듈에 존재하는 이름들을 사용하기 위해서는 그 이름을 seize해야 하며 모듈내에 있는 이름을 상위 모듈에서 사용할 수 있도록 하기 위해서는 그 이름을 grant 해야한다. 따라서 CHILL에서 grant/seize는 이름 단위로 이루어진다. 그런데 객체지향 CHILL의 모레타 모드에 대한 grant/seize는 하나의 이름 단위로 grant/seize되는 것이 아니라 모듈 단위로 grant/seize되는 특성을 가진다. 모레타 모드의 grant/seize를 CHILL의 grant/seize 구문을 이용하여 변환할 경우 모레타 모드 이름 뿐만 아니라 그 구성요소들이 변환된 이름 및 상속된 이름들에 대하여 public이나 internal 가시성을 가진 모든 이름들을 grant/seize할 경우에 지나치게 많은 이름들이 grant/seize되어야 하며 grant/seize되는 요소들에 대한 충돌을 검사하는 것이 어렵다. 이러한 문제를 해결하기 위해서 모레타 모드에 대해서는 그 모듈 단위로 grant/seize 할 수 있는 새로운 특성을 갖는 구문인 그랜트엠/시즈엠(grant/seize)을 정의한다. 여기서 grant/seize은 모듈 단위로 grant/seize하는 기능에 대하여 편의상 부여한 구문 이름이며, 구문 이름을 임의의 다른 것으로 하여도 된다. grant/seize은 모레타 모드에 의하여 생성된 모듈에 대해서 모듈 단위로 grant/seize 될 수 있는 기능을 제공함으로써 실제 모레타 모드의 grant/seize와 가장 유사한 기능을 제공한다. 또한 파생 모드에서는 상속되는 정보를 따라갈 수 있도록 파생된 모드내에서 상위 모드를 seizem 상위 모드 이름으로 생성하여 상속되는 정보를 알 수 있도록 정의하였다. 한 모듈내에서 외부에 보여주는 정보(public, internal)와 내부에서만 사용하는 정보(private)를 구분하기 위해서 새로운 구문(public)을 정의한다. CHILL은 모레타 모드에서 제공하는 public, internal, private 등의 가시성을 나타낼 수 없으므로 grant/seize로 모듈을 보여줄 경우에는 private이름들도 보여주게 되어 오류가 발생할 수 있다. 이러한 문제를 해결하기 위해서 모레타 모드에 의하여 변환되는 모듈에 대해서는 public이라는 예약어와 함께 public 및 internal 가시성을 가지는 요소 이름들을 열거하여 이 이름들만을 외부에 보여줌으로써 외부에 보여줄 정보를 제한하도록 정의하였다.
상술한 바와 같이 개체지향 CHILL을 CHILL로 변환할 때 모레타 모드에 대한 GRANT 혹은 SEIZE가 기존의 CHILL 언어의 GRANT 및 SEIZE로 변환할 경우 지나치게 많은 이름들이 grant/seize 되어야 하며, 이름 사이의 충돌을 검사하는데 어려운 단점이 있다.
이러한 단점을 해결하기 위하여 모레타 모드에 대해서는 모듈 단위로 grant/seize 할 수 있는 새로운 특성을 갖는 구문을 이용하여 모레타 모드에 대한 grant/seize를 CHILL에서 모듈 단위로 grant/seize할 수 있도록 구현함으로써 실제 모드의 grant/seize와 유사한 기능을 효율적으로 제공해 줄 수 있는 객체지향 CHILL을 CHILL로 변환시 모레타 모드에 대한 GRANT/SEIZE 처리 방법을 제공하는데 그 목적이 있다.
상술한 목적을 달성하기 위한 본 발병은 객체지향 칠 변환기에서 구문 분석, 가시성 분석, 어의 분석, 재명명 과정을 수행한 후 생성된 프로그램 스트럭쳐 트리의 제1심볼 테이블 엔트리를 선택하는 단계와, 상기 선택된 제1심볼 테이블 엔트리의 모드가 모레타 모드인지를 검사하는 단계와, 상기 검사 결과 상기 제1심볼 테이블 엔트리의 모드가 모레타 모드가 아니면 객체지향 칠 코드를 변환없이 칠로 생성하고, 모레타 모드이면 모레타 모드를 모듈로 변환하는 코드를 생성하고, 모레타 모드 원소를 칠 코드로 생성하는 단계와, 상기 모레타 모드가 파생 모레타 모드인지 검사하여 파생 모레타 모들일 경우 SEIZEM 상위_모드_이름_M 코드를 생성한 후 제2심볼 테이블을 선택하고, 파생 모레타 모드가 아닐 경우 제2심볼 테이블을 선택하는 단계와, 상기 선택된 제2심볼 테이블 엔트리가 널인가를 검사하여 널이면 프로그램 스트럭쳐에서 그랜트/시즈되는 이름에 관한 코드를 생성한 후 실행문에 대한 칠 코드를 생성하고, 널이 아니면 상기 제1심볼 테이블의 엔트리가 모레타 모드인지를 검사하는 단계로 천이하는 단계로 이루어진 것을 특징으로 한다.
제1도는 본 발명이 적용되는 하드웨어 구성도.
제2도는 본 발명에 사용되는 프로그램 스트럭쳐 트리 및 심볼 테이블의 구조도.
제3도는 본 발명에 따른 객체지향 칠을 칠로 변환하는 처리 흐림도.
제4도는 본 발명에 따른 그랜트/시즈 처리 방법에 대한 흐름도.
* 도면의 주요부분에 대한 부호의 설명
101 : 메인 메모리 보드 102 : 중앙 처리 보드
103 : 유닉스(UNIX) 운영 체제부 104 : 보조 기억 장치
105 : 입/출력 장치 106 : 시스템 버스
본 발명을 첨부된 도면을 참조하여 상세히 설명하기로 한다.
제1도는 본 발명이 적용되는 하드웨어의 구성도로서, 도면에 도시한 각 블록들의 기능을 살펴보면, 메인 메모리(101)는 객체지향 CHILL을 CHILL로 변환하는 객체지향 CHILL 변환기 및 관련 파일들이 탑재되는 보드이다. 중앙 처리 보드(102)는 메인 메노리에 탑재된 파일을 수행시키는 보드이다. 그리고, 보조 기억 장치(104)는 파일 및 데이터 등을 저장하는 장치로 메인 메모리에 탑재되지 않는 파일과 도구들이 저장된다. 입/출력 장치(105)는 객체지향 CHILL 변환기를 수행하기 위해서 필요한 파일 및 데이터, 수행중에 발생하는 모든 오류 메시지를 입/출력하는 장치이다. 유닉스(UNIX) 운영 체제부(103)는 상기의 보드 및 장치를 제어하고, 각 보드 및 장치간에 주고 받는 메시지는 시스템 버스(106)를 통하여 전달된다.
객체지향 칠 변환기에서 객체지향 칠을 칠로 변화하는 과정은 다음과 같다. 객체지향 칠 변환기에서 객체지향 칠을 입력으로 받아들여 구문 분석을 수행하여 VM로그램 스트럭쳐 트리 및 심볼 테이블을 생성한다. 구문 분석 단계에서 생성되는 프로그램 스트럭쳐 트리 및 심볼 테이블의 구조는 제2도에 도시된 바와 같다. 객체지향 칠 프로그램에서 모듈, 리전, 프로세스, 프로시져 등은 데이터 및 실행 부분으로 구성되며 이들 각 단위별로 프로그램 스트럭쳐 트리 엔트리인 aPstEntry가 생성되고 각 단위 구조 내에서의 데이터에 관한 정보는 심볼 테이블 엔트리인 aIdentEntry가 생TJD되는데, 이들 프로그램 스트럭쳐 트리 및 심볼 테이블 엔트리는 링크드 리스트로 연결된다. 구문 분석 후의 프로그램 스트럭쳐 엔트리는 그 프로그램 단위에 속한 데이터의 시작과 끝에 대한 정보 및 그랜트/시즈 이름에 대한 정보, 부모 프로그램 스트럭쳐 트리에 대한 포인터 등을 포함하고 있다. 구문 분석은 구문 분석을 위한 도구인 약(YACC :Yet Another Compiler Compiler)을 이용하여 구문 분석을 수행하며 구문 분석 단계에서 치명적인 오류가 발생하지 않으면 가시성 분석을 수해하게 된다. 가시성 분석 단계에서는 각 모듈내의 그랜트 및 시즈문에 대한 분석을 하여 프로그램 모듈간에 그랜트/시즈 된 이름에 대한 일치성을 검사하고 이름들에 대한 가시성 확장을 위한 적절한 기능을 수행한다. 그랜트된 이름에 대해서는 그랜트 이름에 대한 심볼테이블 엔트리를 부모 프로그램 스트럭쳐의 심볼 테이블 엔트르에 추가함으로써 부모 프로그램 스트럭쳐에서 그 이름에 대한 심볼 테이블 엔트리를 찾아 그 엔트FL를 시즈문을 포함하는 프로그램 단위의 프로그램 구조에서 접근 가능하도록 한다. 시즈된 이름에 대해서는 부모 프로그램 스트럭쳐 트리의 심볼 테이블 엔트리에 추가함으로써 접근이 가능하도록 한다. 가시성 분석이 끝나면 어의 분석 루틴을 수행하게 되는데 이 루틴에서는 프로그램 스트럭쳐 트리의 각 엔트리에 대해서 관련 정보가 연결되지 않았으면 그 정보를 적절하게 찾아서 연결시켜 주고 칠 프로그램의 어의에 불일치가 존재하는가를 검사한다. 어의 분석 단계가 끝나면 프로그램 스트럭쳐 트리의 모든 엔트리는 그 엔트리와 관련된 모든 정보를 추적할 수 있도록 적절한 형태로 연결이 된 상태가 된다. 객체지향 칠에서 모레타 모드는 모레타 모드내에 원소 데이터 및 원소 프로시져/프로세스 정의를 포함하며 이들에 대한 프로그램 스트럭쳐 트리에 대한 포인터는 모드 정보를 포함하는 엔트리인 aModeEntry의 부분 필드인 moretaEntry의 pstInfo가 된다. 따라서 포인터 pstInfo는 모레타 모드에 대한 프로그램 스트럭쳐 트리를 가리키고, 이 포인터를 통해서 모레타 모드의 원소 데이터 및 원소 프로시져/프로세스의 심볼 테이블 엔트리를 접근할 수 있다. 만약 모레타 모드가 파생 모레타 모드이면 프로그램 스트럭쳐 트리의 superClass 필드가 상위 모레타 모드의 프로그램 스트럭쳐 트리의 포인터를 가리키고 파생 모레타 모드가 아니면 superClass 필드는 널(NULL) 값을 가진다. 따라서 모레타 모드 혹은 모레타 모드 장소를 통해서 모레타 원소를 접근할 수 있을 뿐만 아니라 상위 모레타 모드의 원소도 접근할 수 있다.
어의 분석 과정이 끝나면 모레타 모드 및 모레타 모드내의 원소들에 대한 재명명을 수행하게 된다. 객체지향 칠의 모레타 모드는 칠에서는 존재하지 않는 구문이며 이러한 구문을 칠로 변환하면 예기치 않는 이름의 충돌이 발생할 수 있기 때문에 이러한 문제를 해결하기 위해서 모레타 모드 및 모레타 모드내의 원소들에 대해서 모레타 모드 이름을 적절하게 덧붙여서 새로운 이름으로 변경하는 재명명을 실행한다.
본 발명은 이와 같이 구문 분석, 가시성 분석, 어의 분석, 재명명 과정을 수행한 후에 프로그램 스트럭쳐 트리 및 심볼 테이블을 추적하면서 객체지향 칠로 변환하는 과정중 모레타 모드에 대한 그랜트/시즈의 처리 방법에 관한 것이다. 객체지향 칠에서 모레타 모드를 그랜트/시즈 하는 것은 모레타 모드내에 포함된 원소들도 함께 그랜트/시즈하는 것과 같은 효과를 가진다. 그러나 칠에서 그랜트/시즈의 의미는 하나의 이름에 대한 그랜트/시즈를 뜻하므로 객체지향 칠의 모레타 모드의 그랜트/시즈를 표현할 수가 없다. 모레타 모드는 칠로 변환될 때 모듈로 변환이 되고 모레타 모드내의 원소 데이터 장소는 모듈내에서 구조체 모드의 필드로 변환이 되고, 원소 프로시져/프로세스는 모듈내의 프로시져/프로세스로 변환된다. 객체지향 칠의 모레타 모드에 대한 그랜트/시즈는 칠의 모듈 단위로의 그랜트/시즈와 같은 효과를 가지므로 본 발명에서는 GRANT/SEIZEM이라는 새로운 구문을 정의하여 모레타 모드의 그랜트/시즈를 칠에서 지원할 수 있도록 하였다.
제3도는 본 발명에 따른 프로그램 스트럭쳐 및 심볼 테이블을 추적하면서 객체지향 칠을 칠로 변환하는 객체지향 칠 변환기의 처리 흐름도이다. 객체지향 칠변환기에서 구문 분석, 가시성 분석, 어의 분석, 재명명 과정 수행후 생성된 프로그램 스트럭쳐 트리의 심볼 테이블에서 첫 번째 엔트리를 선택한다(301). 심볼테이블 엔트리의 모드가 모레타 모드인가 검사한다(302). 검사 결과에 따라 모레타 모드가 아니면 객체지향 칠 코드를 변환없이 그대로 칠로 생성한다(303). 검사 결과 모레타 모드이면 모레타 모드를 모듈로 변환하는 코드를 생성하고, 모레타 모드의 프로그램 스트럭쳐 트리 포인터(aIdentEntry.mode→moretaEntry.pstInfo)를 새로운 프로그램 스트럭쳐 트리의 포인터 moretapstptr로 선택한다. moretapstptr의 심볼 테이블 엔트리들에 대해서 만약 엔트리가 데이터 장소이면 모레타 모드와 같은 이름을 가지는 STRUCT의 필드로 변환하고, 데이터 정의이면 변환 규칙에 따라 칠의 데이터 정의문으로 변환하고, 프로시져/프로세스이면 칠의 프로시져/프로세스 정의문으로 변환한다(304). 모레타 모드에 대한 프로그램 스트럭쳐 트리의 포인터(moretapstptr)에서 상위 모레타 모드에 대한 프로그램 스트럭쳐 트리 포인터(superClass)가 널(NULL)이 아니면 파생 모레타 모드이고 널이면 상위 모레타 모드를 가지지 않으므로 파생 모레타 모드가 아니다. moretapstptr→superClass가 널인가 검사한다(305). 검사 결과에 따라 널이 아니면 SEIZEM 상위_모레타_모드_이름_M을 생성하고(306). 다음 심볼 테이블 엔트FL를 선택한다(307). 검사 결과 널이면 다음 심볼 테이블을 선택한다(307). 심볼 테이블 엔트리가 널인가 검사한다(308). 검사 결과에 따라 널이 아니면 단계(302)로 되돌아가 단계(302)부터 단계(308)을 반복한다. 널이면 프로그램 스트럭쳐에서 그래트/시즈되는 이름에 관한 코드를 생성한다(309). 단계 (309)의 그랜트/시즈 되는 이름에 대한 코드 생성 방법의 상세한 설명은 제4도에서 서술한다. 실행문에 대한 칠 코드를 생성하고 종료한다(310).
제4도는 본 발명에 따른 모레타 모드의 그랜트/시즈를 위한 코드 변환에 대한 처리 흐름도이며 제3도의 단계 (309)에 대한 상세 처리 흐름도이다. 프로그램 스트럭쳐 트리의 첫 번째 그랜트 노드(grantItem)에 대해서 일치하는 심볼 테이블 엔트리를 찾는다(401). 심볼 테이블 엔트리가 모레타 모드인가 검사한다(402). 검사 결과에 따라 모레타 모드가 아니면 'grant 그랜트_이름' 코드를 생성하고 다음 그랜트 노드(grantItem→brother)를 선택한다(403). 모레타 모드이면 'GRANT 그랜트_이름_M' 코드르르 생성하고 다음 그랜트 노드(grantItem→brother)를 선택한다(404). 그랜트 노드가 널인가 검사한다(405). 검사 결과에 따라 그랜트 노드가 널이 아닌면 그랜트 노드에 대해서 일치하는 심볼 테이블 엔트리를 찾고 단계(402)로 되돌아가 단계 (402)부터 단계 (406)을 반복한다. 그랜트 노드가 널이면 프로그램 스트럭쳐 트리의 첫 번째 시즈 노드(seizeItem)에 대해서 일치하는 심볼 테이블 엔트리를 찾는다(407). 심볼 테이블 엔트리가 모레타 모드인가 검사한다(408). 검사 결과에 따라 심볼 테이블 엔트리가 모레타 모드가 아니면 'seize 시즈_이름' 코드를 생성하고 다음 시즈 노드(seizeItem→brother)를 선택한다. 모레타 모드이면 'SEIZEM 시즈_이름_M' 코드를 생성하고 다음 시즈 노드(seizeItem→brother)를 선택한다(410). 시즈 노드가 널인가 검사한다(411). 검사 결과에 따라 시즈 노드가 널이 아니면 시즈 노드에 대해서 일치하는 심볼 테이블 엔트리를 찾고(412), 단계 (408)로 되돌아가 단계 (408)부터 단계 (412)를 반복한다. 시즈 노드가 널이며 수행을 종료한다.
상술한 바와 같이 본 발명에 의하면 객체지향 CHILL을 CHILL로 변환할 때 모레타 모드에 대해서는 모듈 단위로 grant/seize 할 수 있는 새로운 특성을 갖는 구문을 정의하고 이 구문을 이용하여 모레타 모드에 대한 grant/seize를 CHILL에서 모듈 단위로 grant/seize할 수 있도록 구현함으로써 실제 모레타 모드의 grant/seize와 유사한 기능을 효율적으로 제공해 줄 수 있는 탁월한 효과가 있다.

Claims (2)

  1. 객체지향 칠 변환기에서 구문 분석, 가시성 분석, 어의 분석, 재명명 과정을 수행한 후 생성된 프로그램 스트럭쳐 트리의 제1심볼 테이블 엔트리를 선택하는 단계와, 상기 선택된 제1심볼 테이블 엔트리의 모드가 모레타 모드인지를 검사하는 단계와, 상기 검사 결과 상기 제1심볼 테이블 엔트리의 모드가 모레타 모드가 아니면 객체지향 칠 코드를 변환없이 칠로 생성하고, 모레타 모드이면 모레타 모드를 모듈로 변환하는 코드를 생성하고, 모레타 모드 원소를 칠 코드로 생성하는 단계와, 상기 모레타 모드가 파생 모레타 모드인지 검사하여 파생 모레타 모드일 경우 SEIZEM 상위_모드_이름_M 코드를 생성한 후 제2심볼 테이블을 선택하고, 파생모레타 모드가 아닐 경우 제2심볼 테이블을 선택하는 단계와, 상기 선택된 제2심볼 테이블 엔트리가 널인가를 검사하여 널이면 프로그램 스트럭쳐에서 그랜트/시즈되는 이름에 관한 코드를 생성한 후 실행문에 대한 칠 코드를 생성하고, 널이 아니면 상기 제1심볼 테이블의 엔트리가 모레타 모드인지를 검사하는 단계로 천이하는 단계로 이루어진 것을 특징으로 하는 객체지향 칠을 칠로 변환시 모레타 모드에 대한 그랜트/시즈 처리 방법.
  2. 제1항에 있어서, 그랜트/시즈되는 이름에 관한 코드를 생성하는 단계는 프로그램 스트럭쳐 트리의 각 그랜트 노드에 대해서 일치하는 제1심볼 테이블 엔트리를 찾아서 상기 제1심볼테이블 엔트리가 모레타 모드인가 검사하는 단계와, 상기 검사 결과 제1심볼 테이블 엔트리가 모레타 모드가 아니면 'grant 그랜트_이름' 코드를 생성하고 다음 그랜트 노드를 선택하는 단계와, 상기 검사 결과 제1심볼 테이블 엔트리가 모레타 모드이면 'GRANT 그랜트_이름_M' 코드를 생성하고 다음 그랜트 노드를 선택하는 단계와, 상기 선택된 그랜트 노드가 널인가 검사하여 검사 결과 널이 아니면 그랜트 노드에 대해서 일치하는 심볼 테이블 엔트리를 찾아 상기 제1심볼 테이블 엔트리가 모레타 모드인지를 검사하는 단계로 천이하는 단계와, 상기 검사 결과 그랜트 노드가 널이면 프로그램 스트럭쳐 트리의 각 시즈 노드에 대해서 일치파는 제2심볼 테이블 엔트리를 찾아서 제2심볼 테이블 엔트리가 모레타 모드인가 검사하는 단계와, 상기 검사 결과 상기 제2심볼 테이블 엔트리가 모레타 모드가 아니면 'seize 시즈_이름' 코드를 생성하고 다음 시즈 노드를 선택하는 단계와, 상기 검사 결과 상기 제2심볼 테이블 엔트리가 모레타 모드이면 'SEIZEM 시즈_이름_M' 코드를 생성하고 다음 시즈 노드를 선택하는 단계와, 상기 선택된 시즈 노드가 널인가 검사하여 시즈 노드가 널이 아니면 시즈 노드에 대해서 일치하는 심볼 테이블 엔트리를 찾아 상기 심볼 테이블 엔트리가 모레타 모드인지를 검사하는 단계로 천이하고, 상기 시즈 노드가 널이며 수행을 종료하는 단계로 이루어지진 것을 특징으로 하는 객체지향 칠을 칠로 변환시 모레타 모드에 대한 그랜트/시즈 처리 방법.
KR1019960033693A 1996-08-14 1996-08-14 객체지향 칠을 칠로 변환시 모레타 모드에 대한 그랜트/시즈 처 리 방법 KR100212465B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1019960033693A KR100212465B1 (ko) 1996-08-14 1996-08-14 객체지향 칠을 칠로 변환시 모레타 모드에 대한 그랜트/시즈 처 리 방법
US08/828,695 US5889998A (en) 1996-08-14 1997-03-31 Translation scheme from object oriented chill to chill for the visibility of the mereta mode

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019960033693A KR100212465B1 (ko) 1996-08-14 1996-08-14 객체지향 칠을 칠로 변환시 모레타 모드에 대한 그랜트/시즈 처 리 방법

Publications (2)

Publication Number Publication Date
KR19980014633A KR19980014633A (ko) 1998-05-25
KR100212465B1 true KR100212465B1 (ko) 1999-08-02

Family

ID=19469569

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960033693A KR100212465B1 (ko) 1996-08-14 1996-08-14 객체지향 칠을 칠로 변환시 모레타 모드에 대한 그랜트/시즈 처 리 방법

Country Status (2)

Country Link
US (1) US5889998A (ko)
KR (1) KR100212465B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6541367B1 (en) * 2000-01-18 2003-04-01 Applied Materials, Inc. Very low dielectric constant plasma-enhanced CVD films
US20030061074A1 (en) * 2001-09-27 2003-03-27 International Business Machines Corporation Patient information management system

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ZA821999B (en) * 1981-03-31 1983-05-25 British Telecomm Computor or processor control systems
SE467229B (sv) * 1983-08-19 1992-06-15 Kurt Katzeff Anordning foer bildande av en information och/eller instruktion avsedd att inmatas i en datamaskins programminne
SE518247C2 (sv) * 1992-08-28 2002-09-17 Ericsson Telefon Ab L M Programvarustruktur för ett telekommunikationssystem
US5794043A (en) * 1992-12-17 1998-08-11 Siemens Aktiengesellschaft Method for testing at least one class of an object-oriented program on a computer
US5764977A (en) * 1994-03-30 1998-06-09 Siemens Stromberg-Carlson Distributed database architecture and distributed database management system for open network evolution

Also Published As

Publication number Publication date
US5889998A (en) 1999-03-30
KR19980014633A (ko) 1998-05-25

Similar Documents

Publication Publication Date Title
CA2078247C (en) Source code analyzer
US5307499A (en) Interpretive object-oriented facility which can access pre-compiled classes
CN108628635A (zh) 获取参数名和局部变量名的方法、装置、设备及存储介质
Odersky Functional nets
US7150010B1 (en) Unification of a programming language and a definition language
Scheidgen et al. Human comprehensible and machine processable specifications of operational semantics
Spinczyk et al. Advances in AOP with AspectC++.
Pierik et al. A proof outline logic for object-oriented programming
Krenn et al. Mapping UML to labeled transition systems for test-case generation: A translation via object-oriented action systems
Neverov et al. Metaphor: A multi-stage, object-oriented programming language
KR100212465B1 (ko) 객체지향 칠을 칠로 변환시 모레타 모드에 대한 그랜트/시즈 처 리 방법
Tsay A Code Generation Framework for Ptolemy II.
US20060080644A1 (en) Parameterization of programming structures
de Boer et al. Computer-aided specification and verification of annotated object-oriented programs
Erni et al. The Hacker’s Guide to javac
Hillson et al. C++ 2MPI: A software tool for automatically generating MPI datatypes from C++ classes
KR100194799B1 (ko) 객체 지향 칠프로그램을 구조적 칠프로그램으로 변환하기 위한 일관성 있는 변환 규칙 적용 방법
Friedrich et al. Efficient object-oriented software with design patterns
Winter et al. Linking syntactic and semantic models of Java source code within a program transformation system
Pang et al. Interfacing Haskell with object-oriented languages
KR100246544B1 (ko) 고속병렬컴퓨터에서 병렬 구문에 의한 쓰레드 생성 방법
Sekerinski Concurrent object-oriented programs: From specification to code
Avdicaušević et al. Experimental aspect-oriented language-AspectCOOL
KR100205023B1 (ko) 모레타 모드의 변환 방법
Duffy et al. C++ 11, C++ 14, and C++ 17 for the Impatient: Opportunities in Computational Finance

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20040401

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee