KR0162762B1 - 객체 지향 병행 언어 에이비씨엘의 성능개선을 위한 형추론기 - Google Patents

객체 지향 병행 언어 에이비씨엘의 성능개선을 위한 형추론기 Download PDF

Info

Publication number
KR0162762B1
KR0162762B1 KR1019950047053A KR19950047053A KR0162762B1 KR 0162762 B1 KR0162762 B1 KR 0162762B1 KR 1019950047053 A KR1019950047053 A KR 1019950047053A KR 19950047053 A KR19950047053 A KR 19950047053A KR 0162762 B1 KR0162762 B1 KR 0162762B1
Authority
KR
South Korea
Prior art keywords
type
abcl
list
message
constraints
Prior art date
Application number
KR1019950047053A
Other languages
English (en)
Other versions
KR970049506A (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 KR1019950047053A priority Critical patent/KR0162762B1/ko
Publication of KR970049506A publication Critical patent/KR970049506A/ko
Application granted granted Critical
Publication of KR0162762B1 publication Critical patent/KR0162762B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

본 발명은 객체 지향 병행 언어인 ABCL의 인터프리터 성능 개선을 위한 형 추론기에 관한 것으로서, ABCL언어가 형에 관한 에러나 객체에 정의되지 않은 메시지들의 전송 시에 발생하는 형 에러들을 정적으로 발견할 수가 없어 실행시간이 되어 실행코드가 실행을 하면서 형과 메시지 전송에 대한 에러들을 발견하는 비 효율적인 문제점을 해결하기 위해 ABCL언어 자체의 특성에 맞는 형 추론기를 개발하는 것을 목적으로 하였다.
ABCL언어는 객체성과 병행성을 동시에 가지고 있는 언어로서 형 추론을 위해 새로운 형 제약이 필요한 바 본 시스템을 개발하기 위해 세가지의 제약인 객체제약, 지역제약, 연결제약을 제시하고 이를 이용하여 형을 자동적으로 추론하는 형 추론기를 개발하므로써 형에 관한 에러들을 조기에 발견하기 위한 것이다.

Description

객체 지향 병행 언어 에이비씨엘의 성능개선을 위한 형 추론기
제1도는 본 발명이 적용되는 객체 지향 병행 언어 ABCL의 성능 개선을 위한 형 추론기의 구성도이다.
제2도는 제1도에서 도시된 형 추론기에서 이용하는 형 추론을 위한 세가지의 형 제약이다.
제3도는 제1도에서 도시된 형 추론기에서 각각의 원시 프로그램들의 객체를 트리 구조로 변환하여 주는 객체 노드 생성기 알고리즘이다.
제4도는 제1도에서 도시된 형 추론기의 형 추론을 위한 인터프리터 및 형 추론 프로세서 알고리즘이다.
* 도면의 주요부분에 대한 부호의 설명
1 : 어휘 분석기 2 : 객체 노드 생성기
3 : 객체 테이블 4 : 객체 이름 노드
5 : 스테이트(State) 리스트 6 : 스크립트(Script)리스트
7 : 심볼 테이블 8 : 형 리스트
9 : 인터프리터 10 : 형 추론 프로세서
100 : 객체 제약 200 : 지역 제약
300 : 연결 제약
본 발명은 객체지향 병행언어 ABCL의 성능개선을 위한 형 추론기에 관한 것으로서, 특히 세가지의 제약, 즉 객체제약, 지역제약, 연결제약을 제안하고 이를 이용하여 형을 자동적으로 추론함으로서 인하여 ABCL 인터프리터의 실행 시간에러를 제거하고 코드 최적화를 이루도록하여 실질적으로 ABCL 인터프리터 성능 개선을 하기 위한 형 추론기에 관한 것이다.
일반적으로 형 추론기란, 무형 언어가 유형 언어와는 달리 실행 시간(rum time)에 형에 관한 에러들로 인하여 빈번한 실행 시간 에러들을 야기시키기 되는 문제점들을 해결하기 위하여 자동적으로 형을 추론하여 형에 관한 에러들을 조기에 발견할 수 있도록 하는 것이다.
객체 지향 언어들은 객체, 클래스, 속성 상속(Inheritance) 및 다형성 등을 이용하여 우리의 일상 생활에서 사람들이 대하고 생각하는 방식을 그대로 표현할 수 있다는 장점을 가지고 있다.
또한 시스템 확장과 소프트웨어의 재사용, 기존 기능의 수정시 함수를 새롭게 바꾸더라도 캡슐화와 그 함수의 정보가 은폐되어 주변에 영향을 주지 않는 장점을 가지게 된다.
이와 같은 장점에도 불구하고 객체 지향 프로그래밍의 단점은 실행시의 속도가 떨어진다는 것인데 이는 객체 지향 프로그램은 객체라는 단위를 컴퓨터의 기억 장치에 표현해야 하며 객체간의 정보 교환이 모두 메시지 교환을 통해 일어나므로 시스템의 실행 시간에 많은 부하를 발생시키기 때문이다.
그러므로 무형 객체 지향 언어들은 형에 관한 에러나 객체에 정의되지 않은 메시지들의 전송시에 발생하는 형 에러들을 정적으로 발견할 수가 없고 실행 시간이 되어 실행 코드가 실행을 하면서 형과 메시지 전송에 대한 에러들을 발견하므로 효율성과 안정성이 보장되지를 않는다.
ABCL언어는 병행성과 객체 지향성을 동시에 만족시켜 주는 무형 객체 지향 언어로서 두개의 기본적인 개념을 가지는데 객체라 불리는 정보처리기와 객체들간의 메시지 전송이다.
정보처리는 객체가 메시지를 받을때 활성화되며 계산은 객체들간에 메시지 전송에 의해서 수행이 된다.
객체는 지역 변수들을 나타내는 스테이트(state)영역과 메시지 처리를 위한 스크립트(script)영역으로 구성되어 있다.
스테이트는 지역 변수들을 선언하고 초기화를 위해 사용되고 스크립트는 객체 지향 언어의 메소드와 같은 역할을 한다.
이는 메시지 패턴과 액션으로 구성되어 있어 연산을 수행한다.
ABCL은 또한 메시지 전송 형태로서 C++, smalltalk와는 다르게 동기성 메시지 전송과 비동기성 메시지 전송을 가진다.
동기성을 나타내는 메시지 전송은 현재형 메시지 전송이다.
동기성은 한 객체가 다른 객체에 메시지를 전송하고 메시지에 대한 결과값을 반드시 받아보는 것을 의미한다.
비동기성을 나타내는 메시지 전송을 과거형 메시지 전송이다.
비동기성은 한 객체가 메시지를 다른 객체에 보내고 자신의 객체는 복귀 값에 상관없이 자신의 일을 처리하는 것을 말한다.
이런 특성을 가지고 개발된 ABCL언어는 무형 객체 지향 언어로서 병행성과 객체 지향성을 동시에 만족시키며 병행성으로 인하여 실질적으로 처리시간을 줄이고 알고리즘과 디자인에 있어 구조적인 단순성과 자연성을 향상시킨다.
그러나 무형 언어로 인하여 형에 관한 에러나객체에 정의되지 않은 메시지들의 전송시에 발생하는 형 에러들을 정적으로 발견할 수가 없고 실행시간이 되어 실행 코드가 실행을 하면서 형과 메시지 전송에 대한 에러들을 발견하므로 빈번한 실행 시간 에러들로 인하여 효율성과 안정성이 보장되지않는 문제점이 있다.
또한, 형이 없는 관계로 인하여 메시지 전송시 지연 바인딩을 하게 되므로 지연 바인딩에 의하여 프로그램의 비 신뢰성, 비 해독성, 비 효율성이 나타나며, 인-라인(in-line)을 통한 코드 최적화를 이룰 수가 없게 된다.
또한 병행 언어만이 가지고 있는 병행성으로 인하여 시스템 모듈화를 이룰 수 있도록 한 현재형 및 과거형 메시지 전송에 대해 서로 빈번한 형 에러들이 발생되게 된다.
따라서, 본 발명은 ABCL언어의 상기 문제점을 해결하기 위하여 형 추론을 가능하게 함으로써 메시지 패턴 매칭을 컴파일 시간에 정적으로 수행하며, 실행 시간 에러를 제거하고, 컴파일 시간에 메시지 전송에 의한 지연 바운트에 대한 코드들을 (인-라인)으로 치환함으로써 코드 최적화 및 실행 시간에 메시지 처리 시간을 줄이고, 프로그래머들에게 복잡한 형 선언의 부담으로부터 자유롭게 함으로써 효율성을 높이고 안정성을 향상시키는데 그 목적이 있다.
이러한 목적을 달성하기 위한 본 발명의 형 추론기는 ABCL의 형 추론을 가장 적절하게 할 수 있는 3가지 종류의 형 제약을 제시하고, 각각의 객체를 트리로 구성하는 객체 노드 생성기와 이를 바탕으로 인터프리터에 의하여 객체들간의 메시지를 분석하면서 형 리스트를 이용하여 형 추론 프로세서에 의해 형을 추론하는 형 추론 프로세서로 구성이 되어 있다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예를 상세히 설명한다.
제1도는 본 발명이 적용되는 객체 지향 병행 언어 인터프리터 성능 개선을 위한 형 추론기의 구성을 보여주는 도면이다.
제1도에 도시된 바와 같이 ABCL언어의 원시 프로그램들을 입력으로 받아 문법적으로 의미있는 일련의 문자인 토큰으로 분할해 내는 어휘 분석기(1)와, 어휘 분석기(1)에 의해서 생성된 토큰을 입력으로 받아들여 객체 이름 스테이트(state)문장, 스크립트(script)문장을 구별하여 객체 노드들을 객체 트리로 구현하는 객체 노드 생성기(2)가 있다.
상기 객체 노드 생성기(2)는 하나의 객체들을 선별적으로 구별하기 위한 객체 테이블(3)과, 객체의 이름을 나타내는 객체 이름 노드(4)와, 객체의 스테이트 영역과 스크립트 영역을 분리하도록 하는 스테이트 리스트(5), 스크립트 리스트(6)로 구성되고, 객체 내에서 사용되고 있는 변수들의 이름과 값들을 저장하기 위한 심볼 테이블(7)과, 형 추론시 추론되는 형들을 저장하기 위한 형 리스트(8)로 구성이 되어 있다.
ABCL의 형을 추론하기 위하여 본 형 추론기는 해석 기법을 이용하였는데 원시 프로그램을 해석하기 위해서 인터프리터(9)가 이용된다.
스테이트 리스트(5)에 있는 원시 코드들이 인터프리터(9)에 넘겨지면 인터프리터(9)는 해석을 하면서 실행한다.
이과정에서 인터프리터(9)는 스테이트 리스트(5)와 스크립트의 리스트(6)를 읽으면서 형 추론 프로세서(10)를 구동시키고 형 추론 프로세서(10)는 객체 노드 생성기(2)내의 심볼 테이블(7) 및 형 리스트(8)를 이용하여 형 추론을 한다.
제2도는 제1도의 시스템이 형 추론하기 위하여 이용하는 세가지의 제시된 형 제약으로서 객체 제약(100), 지역 제약(200) 그리고 연결 제약(300)이 있다.
객체 제약(100)은 다음과 같이 정의된다.
객체의 형은 지연 변수 형들의 리스트와 스크립트 리스트의 쌍으로 구성된다.
객체 제약(100)에서 T는 추론하려는 형을 의미하며 A는 객체의 이름을 나타내고 Si는 객체 내에서 정의된 지역 변수를 나타낸다.
스크립트내의 M.Pi는 메시지 패턴을 의미하고 A는 액션, 즉 실질적으로 연산을 수행하는 코드이다.
만약 스테이트나 스크립트가 없다면 스테이트나 스크립트의 형은 닐(nil)이 된다.
지역 제약(200)은 다음과 같다.
각각의 객체는 수식(expression)의 형들이 만족해야 하는 지역 제약의 집합을 포함한다.
지역 제약(200)에서 형 제약은 주로 할당 문에서 발생한다.
즉 할당 문 v : = e는 변수 v의 형이 수식 e의 형을 포함함을 의미한다.
T가 추론하려는 형을 나타낼 때 T[v] ⊇T[e]이다.
그리고 문장의 전체 형 T[v : =e]는 T[e]가 된다.
예를 들어 a : =5라는 수식이 있다고 하면 5는 인티저(integer)이기에 위에서 제시된 형 제약에 의하여 a는 적어도 인티저 이상의 형을 갖는다.
a는 실수형이거나 문자형도 될 수가 있다.
하지만 a: =5의 전체의 형은 제약2(210)에 의해 단지 인티저형 만을 갖게 된다.
제약 3(220)은 문장이 여러 줄 나열되어 있을 때의 형은 열거된 문장들의 마지막 문장의 형임을 나타낸다.
복귀 문에서 순차 문장들의 복귀 값은 마지막 문자의 형을 반환하게 된다.
제약 4(230)은 조건 문에서의 제약인데 수식 E1이면 조건 문의 성질상 반드시 수식 E2이거나 수식 E3이어야 한다.
id의 형은 T[id]로 표시하고 nil의 형은 { }다.
연결 제약(300)은 다음과 같다.
연결 제약(30)은 송신 객체와 수신 객체간의 메시지 전송시 매개변수간의 제약과 실행 결과의 복귀 값에 대한 제약들로 구성된다.
이 제약은 메시지 전송에서 수신 객체의 스크립트의 메시지 패턴이 송신 객체의 메시지 패턴과 일치될 때 연결 제약(300)이 적용된다.
수신 객체의 스크립트내의 형식 매개변수와 송신 객체의 메시지 전송 문의 실 매개변수들에 대한 제약과 메시지 전송의 결과의 반환 값에 의해 형을 추론한다.
이 형 추론 시스템에서 연결 제약은 콘트라배어리언트 규칙(contravariant rule)을 따르면 다음과 같다.
1. 수신 객체의 메시지 패턴의 형식 매개변수의 형은 송신자 객체 내의 메시지 전송 패턴의 실 매개변수의 형보다 크거가 같다.
2. 송신자 객체의 메시지 패턴의 형은 수신 객체의 메시지 패턴의 액션형보다 크거나 같다.
콘트라배어리언트 규칙을 본 시스템의 연결 제약(300)애 이용한 이유는 이 규칙이 스트롱 타입 체킹(strong type checking)을 보장하고 실행 시간 에러를 피하기 때문이다.
본 발명에서는 콘트라배어리언트 규칙에 새로운 규칙을 적용하여 제약 4를 제시하였다.
또한 ABCL에서는 다른 객체 지향 언어의 메시지 전송과는 달리 현재형 메시지 전송과 과거형 메시지 전송이 있다.
현재형 메시지 전송은 일반적인 함수호출로 생각할 수 있으나 과거형 메시지 전송은 메시지 전송에 의해 실행된 결과값이 반환되지않기 때문에 여기에서는 상기 콘트라배어리언트 규칙 2을 수정하여 적용한다.
그 결과 연결 제약(300)의 과거형에서 메시지를 보내 반환되는 실제결과는 낫싱(nothing)으로 처리하게 된다.
수정된 연결 제약(300)은 다음과 같다.
제약 2. 수신 객체의 메시지 패턴의 형식 매개변수의 형은 송신자 객체 내의 메시지 전송 패턴의 실매개변수의 형보다 크거나 같다.
제약 3. 송신자 객체의 메시지 패턴의 형은 수신 객체의 메시지 패턴의 액션형보다 크거나 같다(현재형 메시지 전송).
송신자 객체의 메시지 패턴의 형은 언제나 낫싱(nothing)이다(과거형 메시지 전송).
제약 4. 수신 객체의 메시지 패턴의 액션형은 매개변수에 실 매개변수를 대입한 메시지 패턴의 액션형보다 크다.
제3도는 제1도에 도시된 객체노드생성기(2)에서 객체 노드 생성을 위한 객체 노드 생성기(2) 알고리즘이다.
형 추론기에서 형 추론을 하기 위하여 객체 노드 생성기(2)는 각각의 객체를 트리로 구현한다.
객체 노드 생성기(2)는 어휘 분석기(1)에 의해서 생성된 토큰을 입력으로 받아들여 구동되기 시작하면(s1). 객체 안에 내제된 객체가 있는지를 선별하고(S2), 내제된 객체가 없으면 객체 이름을 일고 새로운 객체 노드를 위한 메모리를 할당한다(S5).
객체 안에 내제된 객체가 있을 경우(S3) 내제된 객체의 이름이 정의되어 있지 않으면 이름을 정의하고 객체 테이블을 참조하여 이름과 주소를 삽입하게 된다(S6).
ABCL에서 객체는 스테이트와 스크립트로 구성되는데, 본 발명의 형 추론기는 스크립트의 형을 추론하기 위하여 스크립트를 프로시져(Procedure)문(S13), 액션(Action)문(S14), 복귀_산술(Return_Arith)문(S19), 복귀_객체(Return_Object)문(S20)으로 분류하며 이를 처리하기 위하여 특수 1비트를 사용하였다.
프리시져문(S13)은 객체 정의에서 메세지_패턴(message_pattern)과 동일하고 액션(S14)문은 반환 값에 대한 처리로서 연산을 수행하지 않고 상수, 단순한 문자열, 논리문을 처리한다.
복귀_산술(S19)문은 산술 연산을 처리하여 복귀 값을 돌려준다.
복귀_객체(S20)문은 내제된 객체 처리를 위해 사용된다.
ABCL은 객체가 메시지를 받아들이고 이에 대한 복귀 값으로 새로운 객체를 반환할 수 있다.
이 새로운 객체는 객체 내에 포함된 실행 문과 다른 메시지 패턴을 받아들여 수행할 수 있다.
만약 콘택스트(Context)가 스테이트이면(S7) 객체 안의 스테이트문의 시작으로서 링크_스테이트_노드(Link_State_Node)로 연결(S10)하고 인터프리터(9)를 호출하고 현재 객체 노드와 현재 스테이트 노드 및 스테이트를 나타내는 flag 0을 넘겨준다(S15).
콘택스트가 스크립트이면(S8) 객체안의 스크립트문의 시작으로서 링크_스테이트_노드로 연결(S11)하고 cat= = (S12)를 조사하여 프로시져문(S13)과 액션문(S14)을 수행하게 된다.
그 후에 인터프리터(9)를 호출하여(S16) 현재 객체 노드와 현재 스크립트 노드 및 스크립트를 나타내는 flag 1을 넘겨주게 된다(S16).
인터프리터(9)가 수행한 후 결과값을 반환하게 되는데 반환 값이 return_flag=Found이면(S17) st = !를 조사하여(S18) 산술식을 계산하고 아니고 반환 값이 객체이면 return_flag = NO(21)로 한다.
다음에는 제4도를 참조하여 인터프리터(9) 및 형 추론 프로세서(10)과정을 설명한다.
원시 코드를 해석하고 형 추론을 하기 위해서 인터프리터(9)는 객체 노드 생성기(2)로부터 입력으로 객체 노드 포인터와 플래그 비트 그리고 포인터를 입력으로 받아 구동을 시작한다.
flag비트를 조사(S1002)하여 입력으로 받아진 객체의 스테이트 리스트 혹은 스크립트 리스트를 가리켜 스테이트 노드(S1003) 혹은 스크립트 노드(S1004)의 문장을 읽는다.
액티브(Active)가 0이면(S1005) 스크립트 문장을 읽어 처리하는데(S1007) 여기서는 프로시져 이름(메시지 패턴 이름)과 매개변수를 읽어 심볼 테이블에 저장한다.
액티브가 1이면(S1006) 스테이트 문장을 읽어 처리한다(S1008).
여기서는 결정함수를 하나 이용하게 되는데 스테이트 문자가 과거형인지, 스크립트 문장을 포함하는지, 현재형인지 또는 할당문인지를 구별하게 된다.
dic = 0에서는 복귀_산술(Return_Arithmetic)(S19)과 복귀_객체(S20)를 위한 해석 코드를 실행하고 연산을 통한 형 추론과 변수들에 대한 정보를 심볼테이블(7)에 저장하게 된다.
dic가 1이면 메시지 패턴 문중 매개변수가 있으면 변수들에 대한 정보를 심볼 테이블(7)에 저장하게 된다.
dic가 2이면 메시지 패싱을 분석하여 객체 테이블(3)에서 객체를 찾고 만약 객체를 찾지 못하면 에러를 발생시킨다.
객체가 발견되었으면 메시지 패턴이 그 객체 내에 있는지를 찾게 된다.
메시지 전송문이 실행되면서 매개변수에 대한 형들이 결정되어 심볼 테이블(7)의 형 리스트(8)에 저장되고 변수 정보들은 심볼 테이블(7)에 저장된다.
dic가 3이면 할당 문에 대한 해석을 하면서 변수들에 대한 형 추론을 하여 형 리스트(8)에 삽입하고 변수 정보를 심볼 테이블(7)에 저장된다.
형 추론을 하기 위한 형 추론 프로세서는 근보적으로 형 리스트를 이용하는데 형 리스트에 의하여 매개변수들의 형과 지역 변수들의 형을 추론한다.
형 리스트는 스테이트문과 스크립트문에서의 형 추론을 다르게 한다.
스테이트문에서는 형 리스트의 첫번째 형 즉 가장 최근의 형을 그 변수의 형으로 추론하지만 스크립트내의 형식 매개변수는 형 리스트의 모든 형의 유니온(union)을 이용한다.
이는 연결 제약에서 제시한 콘트라배어리어트 규칙의 형식 매개변수는 실 매개변수보다 크다는 정의 때문이다.
이상과 같은 본 발명은 ABCL의 상당한 성능 향상을 꾀할 수 있는 다음과 같은 효과를 갖는다.
형 추론에 의하여 메시지 패턴 매칭을 컴파일 시간에 정적으로 수행하여 실행 시간 에러를 제거하고 컴파일 시간에 메시지 전송에 의한 지연 바운드에 대한 코드들을 인-라인 치환을 함으로 인하여 코드 최적화를 이루도록 할 수 있고, 객체의 형, 다형성, 상속성, 지연 바인딩, ABCL 메시지 전송의 특징인 현재형 및 과거형 메시지 전송시 형을 추론하며, ABCL프로그래머가 형을 기술하지 않으면서 ABCL 실행 코드를 효율적으로 만들고 형 에러를 빨리 발견할 수 있도록 하고 실행 시간에 형에 관한 에러 제거를 보장한다.

Claims (3)

  1. 무형의 ABCL언어를 입력으로 받아 문법적으로 의미있는 일련의 문자인 토큰으로 분할해내는 어휘분석기와, 상기 어휘분석기에 의해서 생성된 토큰을 입력으로 받아들여 객체 이름, 스테이트 문장, 스크립트 문장을 구별하여 객체노드들을 객체트리로 구현하는 객체노드생성기와, 사용자 프로그램에서 나타나는 여러가지 제약 조건들을 이용하여 프로그램에 나타나는 여러 제약 조건들을 해석 과정에서 찾아내면서 이것들을 해석하고 계속적으로 적용하면서 형 리스트를 이용하여 형을 추론하는 인터프리터 및 형 추론 프로세서로 구성되어 ABCL의 최소의 형을 추론하여 메시지 패턴 매칭을 컴파일 시간에 정적으로 수행하여 실행 시간 에러를 제거하고 코드 최적화 및 프로그램의 효율성과 안정성을 높이도록 하는 것을 특징으로 하는 객체지향 병행언어 ABCL의 성능개선을 위한 형 추론기.
  2. 제1항에 있어서, 상기 제약은 형 추론기에서 객체의 형을 추론하기 위해서 지역 변수형들의 리스트와 스크립트 리스트의 쌍으로 구성된 객체 제약, 수식의 형들을 추론하기 위해서 사용되는 지역 제약과 송신 객체와 수신 객체간의 메시지 전송시 병행성을 만족시키기 위해서 변형된 콘트라배어리언트를 사용하여 현재형 및 과거형 메시지 전송을 처리하는 연결 제약으로 구서되는 것을 특징으로 하는 객체지향 병행언어 ABCL의 성능개선을 위한 형 추론기.
  3. 제1항에 있어서, 상기 객체노드생성기는 하나의 객체들을 선별적으로 구별하기 위한 객체 테이블과, 객체의 이름을 나타내는 객체 이름 노드와, 객체의 스테이트 영여과 스크립트 영역을 분리하도록 하는 스테이트 리스트, 스크립트 리스트로 구성되고, 객체 내에서 사용되고 있는 변수들의 이름과 값들을 저장하기 위한 심볼 테이블과 형 추론시 추론되는 형들을 저장하기 위한 형 리스트로 구성된 것을 특징으로 하는 객체지향 병행언어 ABCL의 성능개선을 위한 형 추론기.
KR1019950047053A 1995-12-06 1995-12-06 객체 지향 병행 언어 에이비씨엘의 성능개선을 위한 형추론기 KR0162762B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019950047053A KR0162762B1 (ko) 1995-12-06 1995-12-06 객체 지향 병행 언어 에이비씨엘의 성능개선을 위한 형추론기

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019950047053A KR0162762B1 (ko) 1995-12-06 1995-12-06 객체 지향 병행 언어 에이비씨엘의 성능개선을 위한 형추론기

Publications (2)

Publication Number Publication Date
KR970049506A KR970049506A (ko) 1997-07-29
KR0162762B1 true KR0162762B1 (ko) 1999-01-15

Family

ID=19438031

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019950047053A KR0162762B1 (ko) 1995-12-06 1995-12-06 객체 지향 병행 언어 에이비씨엘의 성능개선을 위한 형추론기

Country Status (1)

Country Link
KR (1) KR0162762B1 (ko)

Also Published As

Publication number Publication date
KR970049506A (ko) 1997-07-29

Similar Documents

Publication Publication Date Title
EP1145105B1 (en) Determining destinations of a dynamic branch
US6233733B1 (en) Method for generating a Java bytecode data flow graph
JP3041222B2 (ja) ソース・コード作成システム及び方法
Wirth et al. Compiler construction
EP1636701B1 (en) An intermediate representation for multiple exception handling models
Paulson A semantics-directed compiler generator
US5142681A (en) APL-to-Fortran translators
US6973644B2 (en) Program interpreter
JP2001166949A (ja) シンボリック実行を用いてソースコードをコンパイルするための方法及び装置
IE940949A1 (en) Method and process of inter-machine communication and¹generalized method for program preparation therefor
Schell Jr Methods for constructing parallel compilers for use in a multiprocessor environment.
Paulson A compiler generator for semantic grammars
JP2000207221A (ja) 配列レンジ・チェックのためのコ―ド生成方法及び装置、並びにバ―ジョニング方法及び装置
US5892951A (en) Method and apparatus for efficient evaluation of semantic attributes in LALR parsing
KR0162762B1 (ko) 객체 지향 병행 언어 에이비씨엘의 성능개선을 위한 형추론기
Irwin et al. A generated parser of c++
Johnson Language development tools on the Unix system
EP1785848A1 (en) Method and apparatus for semantic checking of program code
Kastens et al. Lifetime analysis for procedure parameters
Wasser et al. Modeling Non-deterministic C Code with Active Objects
Budd et al. Why A Compiler?
JP2002132502A (ja) 言語機能解釈による分散オブジェクト自動生成システム及び方法
Glauert et al. Dactl: an experimental graph rewriting
Di Giacomo Metacasanova: a High-performance Meta-compiler for Domain-specific Languages
Abreu Towards the OAR Language and Computational Model

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: 20070831

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee