KR0168929B1 - 칠 전위처리기의 전위처리 방법 - Google Patents

칠 전위처리기의 전위처리 방법 Download PDF

Info

Publication number
KR0168929B1
KR0168929B1 KR1019950055870A KR19950055870A KR0168929B1 KR 0168929 B1 KR0168929 B1 KR 0168929B1 KR 1019950055870 A KR1019950055870 A KR 1019950055870A KR 19950055870 A KR19950055870 A KR 19950055870A KR 0168929 B1 KR0168929 B1 KR 0168929B1
Authority
KR
South Korea
Prior art keywords
processing
chill
potential
checking
generating
Prior art date
Application number
KR1019950055870A
Other languages
English (en)
Other versions
KR970049615A (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 KR1019950055870A priority Critical patent/KR0168929B1/ko
Publication of KR970049615A publication Critical patent/KR970049615A/ko
Application granted granted Critical
Publication of KR0168929B1 publication Critical patent/KR0168929B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/37Compiler construction; Parser generation

Landscapes

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

Abstract

본 발명은 CHILL 프로그램을 컴파일하기 위한 CHILL 컴파일러의 전위처리기의 구조 및 기능에 관한 것이다. 이는 통신시스템과 같은 대용량의 안정성이 있는 소프트웨어를 생산하는데 필요한 다양한 언어기능을 가지는 복잡한 언어의 컴파일러 개발에 사용되는 다단계 처리 구조 및 방법으로써 이식성과 안정성이 높고 효율적인 CHILL 컴파일러를 개발하는데 이용할 수 있다.

Description

칠 전위처리기의 전위처리 방법
제1도는 본 발명에 적용되는 하드웨어의 구성도.
제2도는 본 발명에 따른 전위처리기의 전위처리 방법에 대한 상세처리 흐름도.
본 발명은 CHILL 프로그램을 컴파일하기 위한 CHILL 전위처리기의 전위처리방법에 관한 것이다.
CHILL은 모듈 프로그래밍, 구조적 프로그래밍, 병렬 처리, 분리 컴파일, 강한 형 점검(strong type checking), 높은 신뢰성, 예외 처리 그리고 데이타 추상화(data abstraction) 기능을 가지고 있으며 호처리, 시스템 시험 및 응용, 운영체제, 온라인 및 off-line 도구 개발등의 응용 분야 뿐만 아니라 다양한 응용 분야에 적용할 수 있는 일반적인 기능을 포함하고 있는 사실상 시스템 프로그래밍을 위한 고급 프로그래밍 언어이다.
따라서 기존의 프로그래밍 언어가 가지는 대부분의 기능을 포함하는 크고 복잡한 고급 프로그래밍 언어로서 다양한 응용 분야에 적용할 수 있는 일반적인 기능에 중점을 두고 신뢰성 보장, 효율적인 목적 코드의 생성과 변경 및 추가의 용이성등을 고려하여 설계되었다.
CHILL 프로그램의 구성은 프로그래밍할 때 발생하는 오류를 줄이고 자연스런 방법으로 시스템을 구성할 수 있도록 융통성을 부여하기 위해 모듈 프로그래밍, 구조적 프로그래밍, 병렬 처리 기능을 구현할 수 있도록 여러 종류의 구조문을 가지고 있다.
또한 대형 소프트웨어의 개발과 융통성있는 프로그램 구조를 제공하기 위해 piecewise 프로그래밍 방식도 채택하고 있다.
본 발명의 목적은 이와 같은 CHILL 프로그램을 컴파일 하기 위해서 행해지는 EDML 처리기, 프리프로세스, 전위처리기, 후위처리기 등 으로 구성되는 컴파일 시스템중에서 입력 CHILL 프로그램을 중간 코드인 EM 코드로 변환하는 전위처리기의 전위처리 방법을 제공함에 있다.
상기 목적을 달성하기 위하여 본 발명은 호스트 컴퓨터에 존재하는 메임메모리보드, 중앙처리보드, 보조기억장치, 입출력장치, 법용운영체제 상에서 수행되는 CHILL 전위처리기에서 구문을 점검하고 처리하는 제 1 단계; 상기 제 1 단계가 끝난 뒤 가시성을 점검하고 처리하는 제 2 단계; 상기 제 2 단계가 끝난 뒤 어의를 점검하고 처리하는 제 3 단계; 상기 제 3 단계가 끝난 뒤 스펙화일를 생성하는 제 4 단계; 상기 제 4 단계가 끝난 뒤 중간코드를 생성하는 제 5 단계로 이루어지는 것을 특징으로 한다.
이하, 첨부된 도면을 참조하여 본 발명에 대하여 상세히 설명한다.
제1도는 본 발명이 수행되기 위한 호스트 컴퓨터의 하드웨어 불럭 구성도로서, 101은 호스트 컴퓨터의 메임메모리, 102는 중앙처리보드, 103은 범용운용체제, 104는 보조기억장치, 105는 입/출력장치, 106은 시스템버스 장치이다.
도면에 표시한 각 불럭들의 기능을 살펴보면, 호스트 컴퓨터의 메임메모리(101)는 CHILL 컴파일러의 전위처리기가 탐재되는 보드이며 중앙처리보드(102)는 메임메모리에 탑재된 파일을 실행시키는 보드이다.
그리고 보조기억장치(104)는 호스트 컴퓨터에서 사용되는 화일 및 데이타들을 저장하는 장치로 메임메모리에 탑재되지 않은 화일들이 저장된다.
입/출력장치(105)는 CHILL 전위처리기가 수행되는 동안 발생하는 모든 오류 메세지를 입/출력하는 장치이다. 범용운영체제(103)는 상기 보드 및 장치를 제어하며 각 보드 및 장치간에 주고 받는 메세지는 시스템버스(106)를 통하여 이루어진다.
제2도에서는 메인메모리 보드상에 탑재되는 CHILL 컴파일러에서 수행되는 전위처리기의 전위처리 방법에 관하여 설명한다.
CHILL 전위처리기는 구문 분석, 가시성 분석, 어의 분석, 스펙화일 생성 및 중간코드 생성인 다섯 단계의 연속적인 과정을 통하여 중간언어인 EM 코드를 생성한다.
이러한 다섯가지 과정은 CHILL에 있어서 정의와 선언에 대한 순서의 제한이 없기 때문에 이름 분석을 위해 수없이 백 패칭(back patching)이 요구되고, 이름 범위(name scope)분석이 그랜트(GRANT)나 시스(SEIZE)된 이름의 분석을 위하여 선행되어야 하며, 자세한 어의 오류 메세지를 생성하고, 기계에 종속하는 부분에만 국한시키기 위하여 단계별로 처리되도록 설계하였다.
제 1 단계인 구문 분석은 먼저 201에서 렉시칼 분석(lexical analysis)과 동시에 LALR(1) 파싱 테이블을 이용하여 원시 프로그램의 문법을 분석한다.
구문 분석기는 계속되는 과정에서 사용될 구문 지향 변환(syntax-directed translation)을 위해 중요데이타 구조를 생성한다.
이때 202에서 구분하는 종류에 따라 203에서는 모듈, 스펙 모듈, 리즌, 스펙 리즌, 프로시듀어, 프로세스를 정의하기 위한 모든 프로그램 구조문을 분석하여 원시 프로그램의 구조와 같은 프로그램 구조 트리(PST: Program Structure Tree)를 구성한다.
204에서는 수식과 실행문의 문법 표현을 위한 추상 구문 트리(AST: Abstract Syntax Tree)를 생성하고 205에서는 이름의 저장 및 선언문 또는 정의문에서 정의된 속성(attribute)을 저장하기 위한 심볼 테이블을 생성한다.
이때 생성된 심볼테이블과 AST는 PAT에 연결한다.
문법 규칙을 YACC에 입력하여 문법문석기를 생성하고 YACC에 의해 제공되는 오류 토큰을 이용하여 panic 방식 문법 오류 복원을 사용하였다.
제 2 단계인 가시성 분석은 대형 소프트웨어 개발시 이름의 관리를 위한 가시성 제어 방법을 제공한다.
블록은 이름의 존재 기간(life time)을 결정함으로써 가시성을 제어하며, modulion(MODULE과 REGION)은 이름의 존재 기간 범위내에서 modulion내에 선언된 이름이 밖으로 보여지는 것을 막으며, 만일 그 이름을 밖으로 보여주기 위해서 이름을 grant하고 밖의 이름을 보기 위해서는 seize해야 한다.
가시성 분석 단계에서는 가시성을 분석하고, grant되거나 seize된 모든 이름을 분석한다.
grant된 이름과 seize된 이름을 동시에 분석한다면 완전성을 보장하지 못하고 cyclic 정의가 존재한 경우 이의 처리가 복잡하므로, 먼저 grant된 이름을 해결하고 다음으로 seize된 이름을 해결한다.
이를 의해 207에서는 가장 안쪽 modulion부터 가장 바깥 modulion까지 PST를 따라가면서 grant된 이름에 대한 일치성을 조사한 후 바깥 modulion의 심볼 테이블에 복제한다. 208에서는 seize된 이름의 분석을 위해서는 바깥 modulion의 심불 테이블에서 그 이름의 정보를 현재 modulion의 심볼 테이블에 복제한다.
이와 함께 이름에 대한 해결을 불가능하게 하는 grant와 seize의 cyclic 정의를 찾을 수 있다.
제 3 단계인 어의분석은 전 단계에서 만들어진 PST, AST, 그리고 심볼 테이블을 이용하여 실행문에서의 모드 점검(mode checking)을 제외한 어의 분석을 수행한다.
즉, 209에서는 프로그램 구조에 대한 어의 조사, 각 프로세스에 필요한 run-time stack의 길이를 결정하고 210에서는 이름에 대한 어의 조사 및 분석(resolution), 장소(location) 계산에 따른 이름의 결정(binding), 각 선언된 이름의 어드레스 계산을 계산하고 211에서는 선언된 모드의 정적인 성질들에 대한 어의 조사, 모드의 메모리 배역(layout)을 결정한다. 212는 모든 데이타 구조에 대하여 분석이 끝났는가를 판단하고 213에서는 종료되지 못한 과정을 반복하여 수행한다.
제 4 단계인 스펙화일을 생성하기 위해서 214는 어의 분석후 이름의 가시성 및 어의 오류가 발생하지 않았으면 화일 밖으로 grant하는 이름에 대하여 실제 선언문 또는 정의문에 대한 정보를 가시성 규칙에 위배되지 않는 범위 내에서 필요한 상수 수식의 계산등을 수행한다.
215는 CHILL 구문 형태로 어미가 '.sp'인 화일을 생성한다.
이 spec 화일은 스펙 모듈/스펙 리즌의 프로그램 구조문으로 구성되며, 그 내용은 grant하는 이름들의 리스트와 각 이름들에 대한 실제 정보, 그리고 seize하는 이름들의 리스트를 가진다.
Spec 화일은 분리 컴파일을 위해 각 원시 화일의 global context를 자동 생성하여 정보의 일치성을 보장하고 name binder의 입력 정보가 된다.
제 5 단계인 중간 코드 생성은 AST와 심볼 테이블을 참조하고 동시에 모드 점검을 하여 EM 코드를 생성한다.
216은 프로그램 구조에 대하여 해당 EM 코드를 생성하고 217은 변수에 대한 EM 코드를 생성하고 218은 수식과 실행문에 대한 어의 및 형점검을 수행한다.
CHILL은 강한 형 언어(strongly typed language)이므로 각 장소는 모드를 가지며 각 모드는 class를 가진다.
장소와 값의 정적 성질을 결정하기 위하여 얼마나 강하게 모드 점검을 할것인가에 따라 다양한 방법이 있다.
이와 같은 모드 점검 방법을 지원하기 위하여 Read-only 장소(location)에 대하여 read-only 특성 조사, 사용자가 선언한 모드 이름에 대한 novelty 조사, 점검의 정도에 따른 정적 모드 조사, Run-time시 입력된 코드의 boundedness 에 대한 모드 조사 등을 실시한다. 이와 같이 모드 점검과 함께 219는 AST에 나타나 있는 속성에 따라서 트리 탐색 방법이 결정되고 이에 의해 EM 코드를 생성한다.
아울러 216, 217, 218, 219에서는 source-level 디버깅을 위하여 디버깅 정보를 동시에 생성한다. 입력프로그램에 대한 처리가 모두 끝나면 종료되고 그렇지 않으면 종료되지 못한 각 종류에 따라 반복한다.
이때 전위처리기의 각 5 단계를 통해서 전위처리되는 CHILL 언어의 기능으로는 remote 모듈, romote 스펙 모듈, remote 리즌, remote 스펙 리즌, 스펙 모듈, 리즌, 스펙 리즌, grant 문, seize 문, grant all 문, grant pervasive 문, grant directly pervasive 문, synmode 정의, newmode 정의, signal 정의, 상수 정의, 정수 모드, 불리언 모드, 문자 모드, *[ 모드, 레인지 모드, 참조 모드, 프로시듀어 모드, 파워*[ 모드, 스트링 모드, 배열 모드, 구조체 모드, 이벤트 모드, 버퍼 모드, 인스탄스 모드, 변수 선언, 프로시듀어 정의, 프로세스 정의, 파라미터 정의, return 모드 정의, call-by-value, call-by-location, 프로세스 인스탄스, 정수 상수, 불리언 상수, *[ 상수, emptiness 상수, 문자스트링 상수, 비트스트링 상수, 비트 스라이스, XOR, OR, relational 연산자(=, /=, , =, . =), 멤버쉽 연산자(IN), powerset inclusion 연산자(=, =, , ), 수식연산자(+, -), powerset different operator(-), monadic 연산자(-, NOT), receive buffer 수식, this 수식, 초기화문, 치환문 if then else 문, if then else if 문, case 문, do for 문, do for ever 문, do while 문, do for while 문, exit 문, 호출문, return 문, goto 문, empty 문, start 문, stop 문, delay event 문, delay event case 문, continue 문, send buffer 문, receive buffer case 문, send signal 문, receive signal case 문, 어셈블리 언어 사용, C 프로그램과의 인터페이스 기능이 있다.

Claims (6)

  1. 호스트 컴퓨터에 존재하는 메임메모리보드(101), 중앙처리보드(102), 보조기억장치(104), 입출력장치(105), 법용운영체제(106) 상에서 수행되는 CHILL 전위처리기에서 구문을 점검하고 처리하는 제 1 단계; 상기 제 1 단계가 끝난 뒤 가시성을 점검하고 처리하는 제 2 단계; 상기 제 2 단계가 끝난 뒤 어의를 점검하고 처리하는 제 3 단계; 상기 제 3 단계가 끝난 뒤 스펙화일를 생성하는 제 4 단계; 상기 제 4 단계가 끝난 뒤 중간코드를 생성하는 제 5 단계; 로 이루어지는 것을 특징으로 하는 CHILL 전위처리기의 전위처리 방법.
  2. 제1항에 있어서, 상기 제 1 단계인 구문을 점검 및 처리는, 파싱하는 제 1과정(201); 데이타 구조를 생성하는 제 2과정(202, 203, 204, 205, 206); 을 포함하여 이루어지는 것을 특징으로 하는 CHILL 전위처리기의 전위처리기의 전위처리 방법.
  3. 제1항에 있어서, 상기 제 2 단계의 가시성 점검 및 처리는, 그랜트(grant)를 처리하는 제 1과정(207); 시즈(seize)를 처리하는 제2과정(208);을 포함하여 이루어지는 것을 특징으로 하는 CHILL 전위처리기의 전위처리 방법.
  4. 제1항에 있어서, 상기 3 단계의 어의 점검 및 처리는, 프로그램 구조의 어의를 처리하는 제 1과정(209); 이름에 대한 어의를 처리하는 제 2과정(210); 모드에 대한 어의를 처리하는 제 3과정(211, 212, 213); 을 포함하여 이루어지는 것을 특징으로 하는 CHILL 전위처리기의 전위처리 방법.
  5. 제1항에 있어서, 상기 제 4 단계의 스펙화일 생성은, 화일 수준의 그랜트(grant)/시즈(seize) 이름을 분석하는 제1과정(214); 화일 수준의 그랜트(grant)/시즈(seize) 이름을 분석하는 제 1과정(214); 화일 수준의 그랜트(grant)/시즈(seize) 이름을 생성하는 제 2과정(215); 을 포함하여 이루어지는 것을 특징으로 하는 CHILL 전위처리기의 전위처리방법.
  6. 제1항에 있어서, 상기 제 5 단계의 코드 생성은, 프로그램 구조에 관한 EM 코드를 생성하는 제 1과정(216); 변수에 관하 EM 코드를 생성하는 제 2과정(217); 수식과 실행문의 어의 점검 및 처리하는 제 3과정(218); 수식 및 실행문에 관한 EM 코드를 생성하는 제 4과정(219, 220, 221); 을 포함하여 이루어지는 것을 특징으로 하는 CHILL 전위처리기의 전위처리 방법.
KR1019950055870A 1995-12-23 1995-12-23 칠 전위처리기의 전위처리 방법 KR0168929B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019950055870A KR0168929B1 (ko) 1995-12-23 1995-12-23 칠 전위처리기의 전위처리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019950055870A KR0168929B1 (ko) 1995-12-23 1995-12-23 칠 전위처리기의 전위처리 방법

Publications (2)

Publication Number Publication Date
KR970049615A KR970049615A (ko) 1997-07-29
KR0168929B1 true KR0168929B1 (ko) 1999-01-15

Family

ID=19444034

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019950055870A KR0168929B1 (ko) 1995-12-23 1995-12-23 칠 전위처리기의 전위처리 방법

Country Status (1)

Country Link
KR (1) KR0168929B1 (ko)

Also Published As

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

Similar Documents

Publication Publication Date Title
Bahlke et al. The PSG system: From formal language definitions to interactive programming environments
US8099721B2 (en) Parsing of declarations in all branches of preprocessor conditionals
US6353925B1 (en) System and method for lexing and parsing program annotations
Levine et al. Lex & yacc
US6434742B1 (en) Symbol for automatically renaming symbols in files during the compiling of the files
US20060031820A1 (en) Method for program transformation and apparatus for COBOL to Java program transformation
Annamaa et al. An interactive tool for analyzing embedded SQL queries
Uhl et al. An attribute grammar for the semantic analysis of Ada
Fritzson Preliminary experience from the dice system a distributed incremantal compiling environment
Breuer et al. A prettier compiler‐compiler: Generating higher‐order parsers in C
Lee et al. Marco: Safe, expressive macros for any language
Brown et al. Lex & yacc
Brabrand et al. The metafront system: Extensible parsing and transformation
Koskimies et al. The design of a language processor generator
Parr et al. Purdue compiler-construction tool set
Fritzson et al. Metamodelica–a symbolic-numeric modelica language and comparison to julia
KR0168929B1 (ko) 칠 전위처리기의 전위처리 방법
Griswold et al. Variant Translators for Version 8 of Icon
Grigorev et al. String-embedded language support in integrated development environment
Milos et al. Direct implementation of compiler specifications or the pascal p-code compiler revisited
Bak et al. An overview of the Mjølner BETA System
Fédèle et al. Towards a toolkit for building language implementations
Johnstone et al. A tutorial guide to rdp for new users
Mäkelä Applying compiler techniques to reachability analysis of high-level models
Firth et al. The compilation of Ada

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

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee