KR0118991B1 - 칠(chill) 컴파일러의 가시성 점검 및 처리 방법 - Google Patents
칠(chill) 컴파일러의 가시성 점검 및 처리 방법Info
- Publication number
- KR0118991B1 KR0118991B1 KR1019940031592A KR19940031592A KR0118991B1 KR 0118991 B1 KR0118991 B1 KR 0118991B1 KR 1019940031592 A KR1019940031592 A KR 1019940031592A KR 19940031592 A KR19940031592 A KR 19940031592A KR 0118991 B1 KR0118991 B1 KR 0118991B1
- Authority
- KR
- South Korea
- Prior art keywords
- name
- visibility
- processing
- chill
- export
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
Abstract
본 발명은 칠(CHILL)의 가시성 기능을 사용한 칠(CHILL) 프로그램을 컴파일할 때 프로그램에서 사용되는 이름들에 대한 어의 검증과 정확한 코드를 생성하기 위하여 칠(CHILL) 컴파일러와 가시성 점검과 처리방법에 관한 것으로, 심볼 테이블상에서 수행되는 효율적인 가시성 점검 및 처리 방법을 제공하여, 칠(CHILL) 컴파일러가 구동되어 수출 이름과 수입 이름에 대한 심볼 테이블을 구성한 후에 최고 안쪽 모듈리언을 초기화하는 제1단계(201,202); 이름 수입에 대한 어의를 점검하고 처리하는 제2단계(203 내지 209); 및 이름 수입에 대한 어의를 점검하고 처리하는 제3단계(210 내지 216)를 포함하여 효율적인 칠(CHILL) 컴파일러를 개발하는데 이용할 수 있는 효과가 있다.
Description
제1도는 본 발명이 적용되는 호스트 컴퓨터의 구성도.
제2도는 본 발명에 따른 가시성 점검 및 처리 방법에 대한 상세 처리 흐름도.
* 도면의 주요부분에 대한 부호의 설명
101 : 메인 메모리 보드 102 :중앙 처리 보드
103 : 범용 운용 체제 104 : 보조 기억 장치
105 : 입/출력 장치 106 : 시스템 버스
본 발명은 칠(CHILL)의 가시성 기능이 포함되어 있는 칠(CHILL) 프로그램을 컴파일할 때 프로그램에서 사용되는 이름들에 대한 어의 검증과 정확한 코드를 생성하기 위한 칠(CHILL) 컴파일러의 가시성 점검 및 처리 방법에 관한 것이다.
칠(CHIL)에서 이름(name)은 선언문과 징의문에 의한 정의 발생(defining occurrence)에 의해 정의된다. 또한, 칠(CHILL)에서 프로그램은 연속적으로 중첩된(nested) 구성체(constructor)를 가지는 하나의 구성체로 볼 수 있으며, 이때 중첩된 구성체를 제외한 임의의 구성체가 차지하는 공간을 그 구조체의 범위(reach)라고 한다.
칠(CHILL)에 있어서의 가시성(visibility)법칙은 정의 발생과 사용 발생(applied occurrence) 사이의 연결을 제한하는 것이다. 이름의 생명 시간(life-time)이 존재할 때 모듈리언(modulion)에 의해 가시성을 제한함으로서 사용 발생(applied occurmce)을 불가능하게 한다.
칠(CHILL)의 프로그램 구성체는 크게 블럭(block)과 모듈리언(modulion)으로 나누어진다. 모들리언(modulion)에서는 생명 시간과 가시성 기능은 동일하다. 모듈은 가시성을 제한하는 칠(CHILL)의 프로그램 구성체로서 이름을 선언할 수 있다. 이때, 선언된 이름의 생명 시간은 그 모듈리언을 둘러싸고 있는 바로 바깥쪽 블럭의 생명 시간과 같으며 그 이름의 가시성은 그 모듈리언으로 범위가 제한된다.
블럭에서의 이름에 대한 정의 발생일 경우 그 이름의 가시성과 생명 시간은 중첩된 모듈리언이 없는 경우 동일하나, 모듈리언에서의 이름에 대한 정의 발생일 경우 그 이름의 생명 시간은 그 모듈리언의 범위를 둘러싸고 있는 블럭에 의해서 결정되며 가시성은 그 모듈리언의 범위로 한정된다. 모듈리언은 그 모듈리언의 바깥과 안쪽 사이의 가시성을 완전히 차단하므로 모듈리언의 바깥과의 통신을 위해 창문(windolv) 기능을 제공하는 것이 가시성문이다.
가시성문에는 이름 추출(grant)과 이름 수입(seize)이 있는데 이름 수출은 한 모듈리언내에서 정의 발생한 이름을 그 모들리인 바깥에서 볼 수 있도록 하는 것이고 이름 수입은 그 모듈리언 바깥에서 볼 수 있는 이름을 그 모듈리언내에서도 볼 수 있도록 하는 문이다.
칠(CHILL)에서의 가시성은 그 정도에 따라 직접 강가시성(directly strongly visible), 간접 강가시성(indirectly strongly visible). 약가시성(weakly visible) 및 불가시성(invisible)으로 구분된다. 강가시성 이름은 하나의 범위내에서 오직 같은 이름이 하나밖에는 존재할 수 없다. 약가시성 이름은 여러개의 같은 이름이 같은 범위내에 존재할 수 있으며 정의 발생과 사용 발생 사이에서 이름을 바인딩 할 때 하나로 결정할수 있으면 된다.
종래에는 가시성 점검을 위해 이름의 범위 공간을 행렬로 표시하여 분석하였다.
따라서, 종래의 가시성 점검 및 처리 방법은 칠(CHILL)의 가시성 기능을 사용한 칠(CHILL) 프로그램을 컴파일할 때 프로그램에서 사용되는 이름들에 대한 어의 검증과 정확한 코드를 생성할 수 없는 문제점이 있었다.
상기 문제점을 해결하기 위하여 안출된 본 발명은 칠(CHILL)의 가시성 기능을 사용한 칠(CHILL) 프로그램을 컴파일할 때 프로그램에서 사용되는 이름들에 대한 어의 검증과 정확한 코드를 생성하기 위하여 심볼 테이블상에서 수행되는 효율적인 가시성 점검 및 처리 방법을 제공하는데 그 목적이 있다.
상기 목적을 달성하기 위하여 본 발명은, 칠(CHILL) 컴파일러가 탑재되는 메인 메모리 보드, 상기 메인메모리 보드에 탑재된 화일을 실행시키는 중앙 처리 보드: 화일 및 데이타들을 저장하는 장치로 상기 메인메모리 보드에 탑재되지 않은 화일들을 저장하는 보조 기억 장치: 가시성 점검 및 처리를 하는 동안 발생하는 모든 오류 메새지를 입/출력하는 입/출력 장치; 상기 각 보드 및 장치를 제어하는 범용 운영체제; 상기 각 보드 및 장치간에 주고 받는 메세지의 전송로인 시스템 버스를 구비하는 장치에 적용되는 방법에 있어서, 칠(CHILL) 컴파일러가 구동되어 수출 이름과 수입 이름에 대한 심볼 테이블을 구성한 후에 최고 안쪽 모듈리언을 초기화하는 제1단계; 상기 제1단계 수행 후, 이름 수출에 대한 어의를 점검하고 처리하는 제2단계; 및 상기 제2단계 수행 후, 이름 수입에 대한 어의를 점검하고 처리하는 제3단계를 포함하는 것을 특징으로 한다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 일실시예를 상세히 설명한다.
제1도는 본 발명이 수행되기 위한 호스트 컴퓨터의 하드웨어 블럭 구성도로서, 101은 호스트 컴퓨터의 메인 메모리 보드, 102는 중앙 처리 보드, 103츤 범용 운용체제, 104는 보조 기억 장치, 105는 입/출력 장치, 106은 시스템 버스를 각각 나타낸다.
각 블럭들의 기능을 살펴보면, 호스트 컴퓨터의 메인 메모리 보드(101)는 칠(CHILL) 컴파일러가 탑재되는 보드이며, 중앙 처리 보드(102)는 메인 메모리 보드(101)에 탑재된 화일을 실행시키는 보드이다.
그리고, 보조 기억 장치(104)는 호스트 컴퓨터에서 사용되는 화일 및 데이타들을 저장하는 장치로 메인 메모리 보드(101)에 탑재되지 않은 화일들이 저장된다. 입/출력 장치(105)는 가시성 점검 및 처리를 하는 동안 발생하는 모든 오류 메세지를 입/출력하는 장치이다.
범용 운용체제(103)는 상기 보드 및 장치를 제어하며, 각 보드 및 장치간에 주고 받는 메세지는 시스템버스(106)를 통하여 전달된다.
제2도는 메인 메모리 보드상에 탑재되는 칠(CHILL) 컴파일러에서 수행되는 칠(CHILL) 가시성 점검 및 처리 방법에 대한 상세 흐름도이다.
칠(CHILL) 컴파일러가 구동되어 수출 이름과 수입 이름들의 리스트를 심볼 테이블로 구성한 후에(201)i에 최고 안쪽 모듈리언을 찾아 초기화 한다(202). 다음에는 i라는 모듈리언에서 수출하고자 하는 이름이 존재하고 있는지를 심볼 테이블상에서 조사하여(203) 만약 수출 이름이 있으면 수출 이름 일치성 점검을 하여(204) i 모듈리언에서 수출하고자 하는 이름이 없거나 수출하고자 하는 이름과 같은 강가시성의 이름이 바깥 모듈리언에 존재하는 오류가 발생되었는지를 판단하여(205) 오류가 발생하였으면 수출 이름 오류 메세지를 사용자에게 보여주고(209) 오류가 발생하지 않았으면 수출 이름을 처리한다(206). 수출 이름 처리는 수출하고자 하는 이름과 같은 이름을 새로이 하나 생성시킨 후 바깥 모듈리언에 삽입시키고 이들 두 이름을 하나의 이름으로 바인딩하게 된다. 수출 이름이 없어 i 모듈리언에 대해서 수출 이름을 처리할 필요가 없거나 수출 이름 처리가 끝나면 i가 최고 바깥 모듈리언인지 점검하여(207) 최고 바깥 모듈리언이면 수출 이름 처리가 끝나게 되어 후술하는 수입 이름 처리 과정을 수행한다. i가 최고 바깥 모듈리언이 아니면 i를 다시 바깥 모듈리언으로 바꾸고 i에 대해서 수출 이름이 존재하는지 판단하는 과정부터 반복 수행한다.
i가 최고 바깥 모듈리언이면 i라는 모듈리언에서 수입하고자 하는 이름이 존재하고 있는지 심볼 테이블상에서 조사하여(210) 만약 수입 이름이 있으면 수입 이름 일치성 점검을 하여(211) i 모듈리언의 바깥 모듈리언내에 수입하고자 하는 이름이 없거나 수입하고자 하는 이름과 같은 강가시성의 이름이 i 모듈리언에 존재하는 오류와 수출하고자 한 이름과 수입하고자 하는 이름에 의해서 이름들 사이의 관계가 사이클인 오류가 발생되었는지를 판단하여(212) 오류가 발생하였으면 수입 이름 오류 메세지를 사용자에게 보여주고 (216) 오류가 발생하지 않았으면 수입 이름을 처리한다(213). 수입 이름 처리는 수입하고자 하는 이름과 같은 이름을 새로이 하나 생성시켜 i 모듈리언내에 삽입시키고 이들 두 이름을 하나의 이름으로 바인딩하게 된다.
수입 이름이 없어 i 모듈리언에 대해서 수입 이름을 처리할 필요가 없거나 수입 이름 처리가 끝나면 i가 최고 안쪽 모듈리언인지 점검하여 최고 안쪽 모듈리언이면 수입 이름 처리가 끝나게 되어 칠(CHILL)을 위한 가시성 점검 및 처리가 모두 종료된다. i가 최고 안쪽 모듈리언이 아니면 i를 다시 안쪽 모듈리언으로 바꾸고 i에 대해서 수입 이름이 존재하는지 판단하는 과정부터 반복 수행한다.
상기와 같은 본 발명은 효율적으로 칠(CHILL)의 가시성을 점검하고 처리할 수 있어 효율적인 칠 (CHILL) 컴파일러를 개발하는데 이용할 수 있는 효과가 있다.
Claims (7)
- 칠(CHILL) 컴파일러가 탑재되는 메인 메모리 보드(101); 상기 메인 메모리 보드(101)에 탑재된 화일을 실행시키는 중앙 처리 보드(l02); 화일 및 데이타들을 저장하는 장치로 상기 메인 메모리 보드(101)에 탑재되지 않은 화일들을 저장하는 보조 기억 장치(104); 가시성 점검 및 처리를 하는 동안 발생하는 모든 오류 메세지를 입/출력하는 입/출력 장치(105); 상기 각 보드 및 장치를 제어하는 범용 운영체제(103); 상기 각 보드 및 장치간에 주고 받는 메세지의 전송로인 시스템 버스(106)를 구비하는 장치에 적용되는 방법에 있어서, 칠(CHILL) 컴파일러가 구동되어 수출 이름과 수입 이름에 대한 심볼 테이블을 구성한 후에 최고 안쪽 모듈리언을 초기화하는 제1단계(201,202); 상기 제1단계(201,202) 수행 후, 이름 수출에 대한 어의를 점검하고 처리하는 제2단계(203내지 209); 및 상기 제2단계(2O3내지 209) 수행 후, 이름 수입에 대한 어의를 점검하고 처리하는 제3단계(210 내지 216)를 포함하는 것을 특징으로 하는 칠(CHILL) 컴파일러의 가시성 점검 및 처리 방법.
- 제1항에 있어서, 상기 제2단계(203 내지 209)는, 모듈리언에서 수출하고자 하는 이름이 존재하는지를 심볼 테이블상에서 조사하는 제4단계(203); 상기 제4단계(203) 수행 후, 수출 이름이 있으면 수출 이름 일치성을 점검한 후에 오류가 발생되었는지를 판단하여 오류가 발생하였으면 수출 이름 오류 메세지를 사용자에게 보여주고 오류가 발생하지 않았으면 수출 이름을 처리하고 수출 이름이 없으면 아무 처리도 하지 않는 제5단계(204,205,206,209); 및 상기 제5단계(204,205,206,209) 수행 후, 상기 제4단계(203)와 제5단계(204,205,206,209)를 최고 바깥 모듈리언까지 반복 수행하는 제6단계(207,208)를 포함하는 것을 특징으로 하는 칠(CHILL) 컴파일러의 가시성 점검 및 처리 방법.
- 제2항에 있어서, 상기 제4단계(204,205,206,209)의 오류 발생은, 모듈리언에서 수출하고자 하는 이름이 없거나 수출하고자 하는 이름과 같은 강가시성의 이름이 바깥 모듈리언에 존재하는 경우에 발생하는 것을 특징으로 하는 칠(CHILL) 컴파일러의 가시성 점검 및 처리방법.
- 제2항에 있어서, 상기 제4단계(204,205,206,209)의 수출 이름 처리 과정은, 수출하고자 하는 이름과 같은 이름을 새로이 하나 생성시킨 후 바깥 모듈리언에 삽입시키고 이들 두 이름을 하나의 이름으로 바인딩 하는 것을 특징으로 하는 칠(CHILL) 컴파일러의 가시성 점검 및 처리방법.
- 제1항에 있어서, 상기 제3단계(210 내지 2l6)는, 최고 바깥 모듈리언에서 수입하고자 하는 이름이 존재하는지를 심볼 테이블상에서 조사하는 제7단계(210); 상기 제7단계(210) 수행 후, 수입 이름이 있으면 수입 이름 일치성을 점검한 후에 오류가 발생되었는지를 판단하여 오류가 발생하였으면 수입 이름 오류 메세지를 사용자에게 보여주고 오류가 발생하지 않았으면 수입 이름을 처리하는 제8단계(211,212,2l3,2l6); 및 상기 제7단계(211,212,213,216) 수행 후, 상기 제7단계(210)와 제8단계(211,2l2,213,219)를 최고 안쪽 모듈리언까지 반복 수행하는 제9단계(214,215)를 포함하는 것을 특징으로 하는 칠(CHILL) 컴파일러의 가시성 점검 및 처리 방법.
- 제5항에 있어서, 상기 제8단계(211,212,213,2l9)의 오류 발생은, 모듈리언의 바깥 모듈리언내에 수입하고자 하는 이름이 없거나 수입하고자 하는 이름과 같은 강가시성의 이름이 i 모둘리언에 존재하는 경우와 수출하고자 한 이름과 수입하고자 하는 이름에 의해서 이름들 사이의 관계가 사이클인 경우에 발생하는 것을 특징으로 하는 칠(CHILL) 컴파일러의 가시성 잠검 및 처리방법.
- 제5항에 있어서, 상기 제8단계(2ll,212,213,2l9)의 수입 이름 처리 과정은, 수입하고자 하는 이름과 같은 이름을 새로이 하나 생성시켜 모듈리언 내에 삽입시키고 이들 두 이름을 하나의 이름으로 바인딩하는 것을 특징으로 하는 칠(CHILL) 컴파일러의 가시성 점검 및 처리방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019940031592A KR0118991B1 (ko) | 1994-11-28 | 1994-11-28 | 칠(chill) 컴파일러의 가시성 점검 및 처리 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019940031592A KR0118991B1 (ko) | 1994-11-28 | 1994-11-28 | 칠(chill) 컴파일러의 가시성 점검 및 처리 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR960018925A KR960018925A (ko) | 1996-06-17 |
KR0118991B1 true KR0118991B1 (ko) | 1997-10-04 |
Family
ID=19399340
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019940031592A KR0118991B1 (ko) | 1994-11-28 | 1994-11-28 | 칠(chill) 컴파일러의 가시성 점검 및 처리 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR0118991B1 (ko) |
-
1994
- 1994-11-28 KR KR1019940031592A patent/KR0118991B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR960018925A (ko) | 1996-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Moler et al. | A history of MATLAB | |
Bartetzko et al. | Jass—Java with assertions | |
Burch et al. | Symbolic model checking: 1020 states and beyond | |
Schlich | Model checking of software for microcontrollers | |
Larsen et al. | VDM-10 language manual | |
CA2204118A1 (en) | Method and apparatus for tree data structure manipulation and translating source code from one high-level computer language to another | |
Maoz et al. | Symbolic repairs for GR (1) specifications | |
WO1996013784A9 (en) | Method and apparatus for tree data structure manipulation and translating source code from one high-level computer language to another | |
Hollander et al. | The e language: A fresh separation of concerns | |
WO2009081267A2 (en) | Process for verifying computer codes and corresponding verification system | |
KR0118991B1 (ko) | 칠(chill) 컴파일러의 가시성 점검 및 처리 방법 | |
Armoni et al. | SAT-based induction for temporal safety properties | |
Gallardo et al. | A framework for automatic construction of abstract promela models | |
Taneja et al. | LLM-Vectorizer: LLM-based Verified Loop Vectorizer | |
US20030216902A1 (en) | Chip development system with built-in function library | |
Heckmann et al. | TrafoLa-H reference manual | |
US6578196B1 (en) | Checking of units and dimensional homogeneity of expressions in computer programs | |
Mansell et al. | Decision model and flexible component definition based on xml technology | |
Cook et al. | Accurate theorem proving for program verification | |
Ernstedt | Contract-Based Verification in TriCera | |
Dutertre | Yices 2 manual | |
Petit et al. | The B method and the component-based approach | |
Menendez | Practical formal techniques and tools for developing LLVM’s peephole optimizations | |
Sühl | An Integration of Z and Timed CSP for Specifying Real-Time Embedded Systems | |
Requet et al. | Embedding formally proved code in a Smart Card: Converting B to C |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20040630 Year of fee payment: 8 |
|
LAPS | Lapse due to unpaid annual fee |