KR101314247B1 - 위성 관제 시스템에서 위성 관제 운용 자동화를 위한 언어변환장치 및 방법 - Google Patents

위성 관제 시스템에서 위성 관제 운용 자동화를 위한 언어변환장치 및 방법 Download PDF

Info

Publication number
KR101314247B1
KR101314247B1 KR1020090083214A KR20090083214A KR101314247B1 KR 101314247 B1 KR101314247 B1 KR 101314247B1 KR 1020090083214 A KR1020090083214 A KR 1020090083214A KR 20090083214 A KR20090083214 A KR 20090083214A KR 101314247 B1 KR101314247 B1 KR 101314247B1
Authority
KR
South Korea
Prior art keywords
language
pil
symbol table
satellite
procedure
Prior art date
Application number
KR1020090083214A
Other languages
English (en)
Other versions
KR20110024996A (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 KR1020090083214A priority Critical patent/KR101314247B1/ko
Publication of KR20110024996A publication Critical patent/KR20110024996A/ko
Application granted granted Critical
Publication of KR101314247B1 publication Critical patent/KR101314247B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • G06F40/157Transformation using dictionaries or tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • G06F40/284Lexical analysis, e.g. tokenisation or collocates

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

본 발명은 위성 관제 시스템에서 위성 관제 운용 자동화를 위한 언어변환방법에 관한 것으로, 특히, 위성 관제 시스템에서 위성 관제 운용 자동화를 위해서 PIL언어로 작성된 자동 운용 절차서를 타겟 언어로 변환하는 방법에 관한 것이다.
본 발명에서는 PIL 언어를 자동으로 타겟언어로 변환함으로써 수작업에 의해 발생 가능한 에러를 방지할 수 있고, 자동 운용 절차서를 타겟 언어를 통하여 실행할 수 있는 해석/실행 엔진을 구현할 수 있으며, 자동 운용 절차서를 신속하게 업데이트시킬 수 있는 언어변환장치 및 방법을 제공한다.
위성 운용 절차서, PIL, 언어 변환기

Description

위성 관제 시스템에서 위성 관제 운용 자동화를 위한 언어변환장치 및 방법{LANGUAGE CONVERSION APPARATUS AND METHOD FOR AUTONOMOUS OF SATELLITE CONTROL IN SATELLITE GROUND CONTROL SYSTEM}
본 발명은 위성 관제 시스템에서 위성 관제 운용 자동화를 위한 언어변환방법에 관한 것으로, 특히, 위성 관제 시스템에서 위성 관제 운용 자동화를 위해서 PIL언어로 작성된 자동 운용 절차서를 타겟 언어로 변환하는 방법에 관한 것이다.
위성 관제 시스템은 위성들을 운용하기 위해서 지상에서 위상들의 상태를 감시하고 제어하기 위한 시스템이다. 상기 위성 관제 시스템에서 운용자는 위성들의 상태, 자세, 궤도 데이터 등을 분석하고, 분석결과를 기초하여 위성 임무를 계획한다. 그리고 운용자는 계획된 위성 임무에 따른 원격 명령을 위성에게 전송하고, 위성은 전송받은 원격명령에 따라 임무를 수행한다.
이러한 위성 관제 시스템은 한번 설계가 되면 이미 설계된 위성 관제 시스템을 사용하면 되기 때문에 제작비용은 많이 지출되지 않는다. 하지만, 위성은 한번 발사되면 오랜 기간 동안 임무를 수행하기 때문에, 위성이 임무를 수행하는 시간만큼 지상에서 위성의 상태를 감시하고 제어하는 위성 관제 시스템도 운용되어야한다. 또한, 위성이 임무를 수행하는 시간만큼 위성 관제 시스템을 운용하기 위한 전문 인력이 요구되기 때문에 위성 관제 시스템을 운용하는 비용이 많이 지출된다. 이와 같은 문제점을 해결하기 위해서는 위성 관제 시스템의 운용은 자동화되어야 한다.
위성 관제 시스템의 운용이 자동화되기 위해서는 위성의 상태, 자세, 궤도 등의 데이터에 따른 위성의 임무가 미리 계획되어 있어야 한다. 또한, 위성의 상태, 자세, 궤도 등의 데이터와 실제 위성의 상태, 자세, 궤도가 일치하면 자동으로 계획된 임무에 따른 원격 명령이 위성에게 전송된다. 그리고 위성은 전송받은 원격명령에 따라 임무를 수행한다.
즉, 위성 관제 시스템의 운용이 자동화되기 위해서는 상기와 같은 절차가 미리 정의되어 있어야한다. 이와 같이 위성 관제 시스템의 자동 운용을 위해서는 위성 임무의 계획, 임무 전송, 임무 수행 등의 절차를 미리 정의해둔 자동 위성 운용 절차서가 요구된다. 또한, 위성 관제 시스템에서 자동적으로 자동 운용 절차서를 해석하여 실행할 수 있도록 자동 운용 절차서를 정의할 언어가 필요하다.
그래서 프랑스의 아스트리움 사는 상기 자동 운용 절차서를 정의하기 위해서 PIL(Procedure Intermediate Language)을 개발하였다. 상기 PIL 언어는 아스트리움사가 개발한 위성 버스(EuroStar)를 탑재하는 위성에 대한 자동 위성 운용 절차서를 정의하는데 사용된다. PIL 언어는 범용 프로그래밍 언어에 비하여 기능이 제한 적이지만, 위성 운용 절차를 정의하는데 필요한 분기문, 루프문, 간단한 사칙연산 등을 지원한다. 예를 들어, 분기문의 종류에는 if/then/else 분기문 등이 있으며, 루프문의 종류에는 while 루프문 등이 있다. if/then/else 분기문은 if에 해당하는 조건이 참이면 then에 해당하는 명령들이 실행되며, if에 해당하는 조건이 거짓이면 else에 해당하는 명령들이 실행된다. 또한, while 루프문은 루프안의 조건이 참이 될 때까지 while문안의 명령들이 반복적으로 실행된다.
또한, 위성 관제 시스템에는 PIL 언어로 정의된 자동 위성 운용 절차서를 해석하고 구동하기 위한 실행 엔진이 필요하다. 위와 같은 이유로 자동 운용 절차서가 범용 프로그램을 사용하여 정의된 경우에는 아스트리움 사에서 개발한 PIL 언어를 실행할 수 있는 엔진을 구매하여 사용해야만 하는 제약이 있다.
예를 들어, 스페인의 GMV 사는 범용 스크립트 언어인 Python 언어를 이용해서 위성 자동 운용 절차서를 정의한다. 이 경우, 위성 관제 시스템에서는 범용 스크립트 언어를 해석할 수 있는 인터프리터를 사용하여 위성 자동 운용 절차서를 해석하고 구동할 수 있다. 하지만, 스페인의 GMV 사가 제어하려고 하는 위성의 자동 운용 절차서가 PIL 언어로 정의되어 있다면, 스페인의 GMV 사는 고가의 PIL 언어를 실행할 수 있는 엔진을 구매해야한다. 그렇지 않은 경우에는 스페인의 GMV 사는 PIL 언어를 일일이 수작업으로 Python 언어로 바꾸고, Python 언어를 해석할 수 있는 인터프리터를 사용하여 위성 자동 운용 절차서를 해석하고 구동해야한다.
더구나, 프랑스의 아스트리움 사가 개발한 PIL 언어의 문법과 명령어 등은 범용적 이지 않기 때문에, 범용 프로그래밍 언어를 사용하는 사용자에게는 익숙하 지 않다. 그래서 PIL 언어를 사용하여 위성 자동 운용 절차서를 작성하기 위해서는 PIL 언어의 문법과 명령어 등을 미리 숙지해야한다. 또한, PIL 언어를 사용하여 위성 자동 운용 절차서를 작성한다 하더라도 PIL 언어로 정의된 자동 운용 절차서를 해석하고 구동하기 위한 고가의 PIL 언어를 구동할 수 있는 엔진을 구매해야한다.
따라서 본 발명에서는 PIL 언어를 자동으로 타겟언어로 변환함으로써 수작업에 의해 발생 가능한 에러를 방지할 수 있는 언어변환장치 및 방법을 제공한다.
또한 본 발명에서는 PIL 언어로 작성된 자동 운용 절차서를 타겟 언어를 통하여 실행할 수 있는 해석/실행 엔진을 구현한다.
또한 본 발명에서는 자동 운용 절차서를 신속하게 업데이트시킬 수 있는 언어변환장치 및 방법을 제공한다.
본 발명의 일 실시 예에 따른 언어 변환 장치는, 상기 절차서를 입력받아 문법적으로 의미 있는 최소 단위인 토큰 단위로 잘라 토큰의 나열인 토큰열로 변환하고, 상기 절차서에서 정의한 식별자를 순차적으로 심볼 테이블에 입력하는 어휘 분석기와, 상기 어휘 분석기로부터 상기 토근열을 미리 결정된 순서로 입력받아 요약 문법 트리(Abstract Syntax Tree, AST)를 생성하고, 상기 심볼 테이블을 입력받아 상기 심볼 테이블에 기록된 상기 각 식별자들에 대응하는 정보를 입력하는 구문 분석기와, 상기 구문 분석기에서 입력받은 AST와 심볼 테이블을 이용하여 상기 절차서의 의미상 오류를 검사하는 의미 분석기와, 상기 의미 분석기에서 수신된 심볼 테이블을 입력받아 상기 심볼 테이블의 식별자에 대응하는 정보들을 이용하여 미리 정의된 제 1 데이터 베이스의 스크립트 언어의 타입으로 변환하고, 심볼 테이블의 식별자 중 상기 제 1 데이터 베이스에서 변환되지 않은 식별자를 상기 식별자에 대응하는 정보를 이용하여 미리 정의된 제 2 데이터 베이스의 스크립트 언어의 명령어로 변환하는 코드 생성기를 포함한다.
본 발명의 일 실시 예에 따른 언어 변환 방법은, 상기 절차서를 입력받아 문법적으로 의미 있는 최소 단위인 토큰 단위로 잘라 토큰의 나열인 토큰열로 변환하고, 상기 절차서에서 정의한 식별자를 순차적으로 심볼 테이블에 입력하는 어휘 분석 단계와, 상기 어휘 분석기로부터 상기 토근열을 미리 결정된 순서로 입력받아 요약 문법 트리(Abstract Syntax Tree, AST)를 생성하고, 상기 심볼 테이블을 입력받아 상기 심볼 테이블에 기록된 상기 각 식별자들에 대응하는 정보를 입력하는 구문 분석 단계와, 상기 구문 분석기에서 입력받은 AST와 심볼 테이블을 이용하여 상기 절차서의 의미상 오류를 검사하는 의미 분석 단계와, 상기 의미 분석기에서 수신된 심볼 테이블을 입력받아 상기 심볼 테이블의 식별자에 대응하는 정보들을 이용하여 미리 정의된 제 1 데이터 베이스의 스크립트 언어의 타입으로 변환하고, 심볼 테이블의 식별자 중 상기 제 1 데이터 베이스에서 변환되지 않은 식별자를 상기 식별자에 대응하는 정보를 이용하여 미리 정의된 제 2 데이터 베이스의 스크립트 언어의 명령어로 변환하는 코드 생성 단계를 포함한다.
본 발명에 따른 언어 변환 장치를 사용하면 PIL 언어를 자동으로 타겟언어로 변환함으로써 수작업에 의해 발생 가능한 에러를 방지할 수 있고, PIL 언어로 작성된 자동 운용 절차서를 타겟 언어를 실행할 수 있는 실행 엔진 해석/실행할 수 있으며, 자동 운용 절차서를 신속하게 업데이트시킬 수 있다.
본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에 그 상세한 설명을 생략하기로 한다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시 예를 상세히 설명하기로 한다.
이하에서 설명되는 본 발명의 실시 예에서는 PIL 언어를 범용 언어의 하나인 Python 언어로 변환하는 예를 이용하여 설명하기로 한다. 그러나 PIL 언어를 번역함에 있어서, Python 언어, Angel Script 뿐 아니라 이하에서 설명되는 본 발명을 적용하여 다른 언어 예를 들어 C언어 등의 경우에도 동일한 방법으로 변환할 수 있다. 이하에서 Python 언어, Angel Script 는 스크립트 언어라고 칭한다.
도 1은 본 발명에 따른 PIL 언어를 스크립트 언어로 변환하기 위한 변환기의 블록구성도이다.
언어 변환기(100)는 어휘 분석기(110), 구문 문석기(120), 의미 분석기(130), 코드 생성기(140)로 구성된다. 코드 생성기(140)는 제 1 데이터베이스(141)와 제 2 데이터베이스(142)로 구성된다.
어휘 분석기(110)는 도 1에는 입력부는 도시되어 있지 않지만 위성 임무의 계획, 임무 전송, 임무 수행 등의 절차를 PIL 언어를 사용하여 미리 정의해둔 자동 위성 운용 절차서를 입력부로부터 입력받는다. 여기서, PIL 언어를 사용하게 작성된 위성 운용 절차서는 PIL 언어를 구성하는 예약어, 명령어, 정수, 실수 등으로 구성된다. 즉, 예약서, 명령어, 정수, 실수 등은 알파벳, 숫자 등으로 구성되기 때문에 위성 운용 절차서는 PIL 언어를 구성하는 예약어, 명령어 등의 문자들로 구성이 된다.
즉, 어휘 분석기(110)는 입력부로부터 PIL 언어로 작성된 위성 운용 절차서를 구성하는 문자들을 순서대로 받아들인다. 그리고 어휘 분석기(110)는 PIL 언어를 번역하는데 사용되지 않는 공백, 괄호 등을 제거하기 위해서, 순서대로 받아들인 문자들을 토큰 단위로 자른다. 여기서 토큰은 프로그래밍 언어를 구성하는 가장 기본적인 단위이며, 그 예로는 예약어 및 연산자 등이 있다. 예약어는 PIL 문법에서 사용되는 분기문, 루프 등을 표현하는데 사용되는 토큰이다.
그리고 어휘 분석기(110)는 사용자가 정의한 이름들에 대한 어휘항목들을 심볼 테이블(Symbol Table)에 삽입한다. 이하, 심볼 테이블을 나타내는 <표 1>을 참조하여 심볼 테이블의 정의 및 구조를 설명한다.
이름 타입 초기값
i INT 2
sum LONG 0
<표 1>을 참조하면, 심볼 테이블은 프로그램의 변수나 그 밖의 프로그램에서 사용되는 데이터에 관한 정보를 저장하는 메모리 영역이다. 심볼 테이블은 컴파일 과정에서 데이터베이스로서 사용된다. 또한, 심볼 테이블의 주요 내용은 프로그램에서 사용자가 정의한 각 이름에 대한 타입과 속성 정보이다. 예를 들어, 사용자가 INT i=2 라고 정의했다면, 먼저 어휘 분석기(110)는 사용자가 정의한 이름인 i를 심볼 테이블에 삽입한다. 그 후, 구분 분석기(120)에 의해서 i에 대한 속정 정보인 타입, 초기값 등이 삽입된다. 즉, 이러한 정보는 어휘 분석기(110)와 구문 분석기(120)에 의해서 심볼 테이블에 저장되고, 의미 분석기(130)와 코드 생성기(140)에 의해서 사용된다.
이와 같이 어휘 분석기(110)는 PIL 언어로 작성된 위성 운용 절차서를 구성하는 문자들을 순서대로 받아들이며 토큰으로 잘라 토큰들로 구성된 토큰열을 생성한다. 여기서 어휘 분석기에서 생성된 토큰열에는 공백, 괄호 등이 제거된 예약어, 명령어 등으로 구성된 문자열을 의미한다. 그 후, 어휘 분석기(110)는 추상 구문 트리(Abstract Syntax Tree : 이하 AST)를 생성하기 위해서 생성한 토큰열과 심볼 테이블을 구문 분석기(120)로 전송한다.
구문 분석기(120)는 AST를 생성하기 위해서 어휘 분석기(110)로부터 토큰열을 입력받고, 상향식 파싱 알고리즘을 이용하여 파스 트리를 구성한다. 여기서 상향식 파싱 알고리즘은 이용하여 파스 트리를 구성한다. 파스 트리를 구성하는 알고리즘의 종류에는 하향식과 상향식이 있다. 하향식 파싱 알고리즘의 종류에는 LL 알고리즘이 있으며, 상향식 파싱 알고리즘의 종류에는 LR 알고리즘이 있다. 먼저, LL알고리즘에서 첫 번째 L 은 어휘 분석기(110)로부터 입력받은 토큰열을 왼쪽부터 오른쪽으로(Left-to-right)입력받는 다는 것을 의미한다. 두 번째 L은 최좌단 유도(Leftmost Derivation)로 파스 트리를 구성한다는 것을 의미한다. 즉, 최좌단 유도는 루트(root), 왼쪽 노드, 오른쪽 노드를 구성 후에, 왼쪽 노드를 루트로써 사용하여 자식 노드를 생성함을 의미한다. 다음으로, LR 알고리즘에서 L은 상기와 같이 어휘 분석기(110)로부터 입력받은 토큰열을 왼쪽부터 오른쪽으로(Left-to-right)입력받는 다는 것을 의미한다. 또한, R은 최우단 유도로 (Rightmost Derivation)파스 트리를 구성한다는 것을 의미한다. 여기서, 최우단 유도는 최좌단 유도와 반대되는 개념이다.
상기 어휘 분석기(110)에서 입력된 사용자에 의해 정의한 이름인 어휘항목에 대응하는 정보를 심볼 테이블에 입력한다. 즉, 구분 분석기(120)는 <표 1>에서 설명한 바와 같이 어휘 분석기(110)에서 전송된 토큰열을 계층적으로 분석하여 식별자의 타입, 함수의 파라미터 개수, 배열의 크기와 같은 정보를 입력한다. 그리고 구문 분석기(120)는 생성된 절차서의 타입 검사(Type Checking)를 위해서 심볼 테이블을 의미 분석기(130)에 전송한다.
의미 분석기(130)는 구문 분석기(120)로부터 입력받은 심볼 테이블과 AST를 사용하여 PIL로 작성된 자동 위성 운용 절차서가 의미상 오류가 없는지 검사한다. 예를 들어, 프로그램에서 쓰는 식별자는 모두 미리 선언되어야 하며, 각 연산자에 대하여 해당 피연산자의 타입은 맞아야 한다. 또한, 타입을 변환하는 연산은 필요한 곳에 타입 변산 코드를 삽입 등이 있다. 만약, 의미 분석기(130)에서 심볼 테이블과 AST를 사용하여 의미상 오류가 없는지 검사하는 도중에 오류가 발생되면 사용자에게 오류를 알린다. 의미 분석기(130)는 오류 검사를 마친 후 심볼 테이블 및 AST를 코드 생성기(140)로 전송한다.
코드 생성기(140)는 제 1 데이터베이스(141)와 제 2 데이터베이스(142)를 포함한다. 상기 제 1 데이터베이스(141)와 제 2 데이터베이스(142)는 의미 분석기(130)에서 입력받은 심볼 테이블을 이용하여 스크립트 언어로 작성된 자동 위성 운용 절차서를 생성하기 위해서 사용된다. 코드 생성기(140)는 제 1 데이터베이스(141) 및 제 2 데이터베이스(142)를 기반 하여 PIL 언어로 작성된 위성 운용 절차서를 타겟 언어로 변환한다.
먼저, 제 1 데이터베이스(141)는 PIL 언어의 변수 타입을 타겟 언어의 변수 타입으로 변환할 때 사용된다. PIL 언어의 변수 타입은 INT, REAL, STRING, DATA, TIME 으로 이루어진다. 정수를 저장하는 변수는 INT 타입으로 정의되며, 실수를 저장하는 변수는 REAL 타입으로 정의된다. 또한, 문자열을 저장하는 변수는 STRING 타입으로 정의되며, 날짜와 시간을 저장하는 변수는 각각 DATA 타입과 TIME 타입으로 정의된다.
하지만, 일반 프로그래밍 언어가 상기 PIL 언어의 변수 타입을 정확히 지원하지 않을 수 있다. 예를 들어, Python 의 경우, INT, REAL, STRING 에 대한 예약어가 존재하지 않는다. Python에서는 정수를 변수에 할당하면 상기 변수는 자동으로 정수 타입이 되며, 실수를 변수에 할당하면 상기 변수는 자동으로 실수 타입이 된다. C 의 경우, 정수형 변수를 정의할 타입인 int 와 실수형 변수를 정의할 타입인 double이 존재하지만 PIL 언어의 변수 타입과 정확하게 일치하지 않는다. 또한, PIL 언어와는 달리 문자열을 저장할 수 있는 변수 타입이 존재하지 않기 때문에 문자를 여러 개 저장할 수 있는 배열인 Char array를 사용해야 합니다.
상기와 같은 경우를 지원하기 위해서 PIL 언어의 변수 타입이 타겟 언어의 타입으로 자동 매핑 될 수 있도록 미리 형변환 테이블을 데이터베이스화하여 사용해야한다. 제 1 데이터베이스(141)는 아래 <표 2>과 같은 형태로 구성된다.
PIL 언어의 타입 타겟 언어 타겟 언어의 타입
INT Python 존재하지 않음
REAL Python 존재하지 않음
<표 2>을 참조하면, <표 2>은 3개의 필드로 구성된다. 첫 번째 필드에는 PIL 언어에서 사용되는 타입이 입력되고, 두 번째 필드에는 타켓 언어인 Python이 입력된다. 또한 세 번째 필드에는 타겟 언어에서 사용되는 타입이 입력된다.
PIL 언어의 타입은 상기와 언급한 바와 같이 INT, REAL, STRING, DATA, TIME 으로 이루어지며, 상기 타입에 대한 설명은 앞서 설명했기 때문에 생략한다.
다음으로 제 2 데이터베이스(142)는 PIL 언어에서 명령어로 사용되지만 범용 프로그래밍 언어에서는 제공되지 않는 경우에 사용된다.
즉, PIL 언어에서 사용되는 명령어는 크게 제 1 카테고리와 제 2 카테고리로 구성된다.
제 1 카테고리에 해당하는 명령어는 일반적인 프로그래밍언어에서 공통적으로 지원되는 루프문, 분기문에서 사용되는 명령어이다. 상기 명령어의 특징은 일반적으로 널리 사용되는 프로그래밍 언어에서 공통적으로 지원되는 Language Dependent 기능이기 때문에 자동으로 변환이 가능하다. 따라서 제 1 카테고리에 해당하는 명령어들은 제 2 데이터베이스(142)를 사용하여 명령어를 따로 정의할 필요가 없다.
반면, 제 2 카테고리에 해당하는 명령어는 일반적인 프로그래밍 언어에서 키워드를 통하여 지원하지 않는 명령어들이다. 즉, 제 2 카테고리에 해당하는 명령어들은 제 1 카테고리에 포함되지 않는 나머지 명령어들이다. 따라서 상기와 같은 경우에는 제 2 데이터베이스(142)를 이용하여 자동으로 변환해야한다. 제 2 데이터베이스(142)는 하기의 <표 2>과 같은 형태로 구성된다.
PIL 언어의 명령어 타겟 언어 타켓 언어의 라이브러리 경로
WARNING Python import WARNING
SEND Python import SEND
<표 3>를 참조하면, <표 3>는 3개의 필드로 구성된다. 첫 번째 필드에는 PIL언어에서 사용되는 명령어가 입력되고, 두 번째 필드에는 타겟 언어인 Python이 입력된다. 또한, 세 번째 필드에는 PIL 언어에서 사용되는 명령어지만 일반적으로 범용 프로그래밍 언어에서 제공되지 않는 명령어들의 라이브러리 경로를 저장한다. 즉, PIL 언어의 명령어가 타겟 프로그래밍 언어에서 제공되지 않을 경우에는 타겟 프로그램으로 PIL 언어의 명령어 기능을 미리 정의하고, 그것을 라이브러리로써 제공해야한다.
예를 들어, 제 2 카테고리에 해당하는 PIL 언어의 명령어들은 SEND, WARNING 등이 있다. SEND는 위성 관제 시스템에서 위성으로 위성이 실행할 임무를 보내는 명령이다. 또한 WARNING는 예측하지 못했던 상황이 발생하였을 때 경고창을 사용자에게 팝업 시키기 위한 명령어이다. 사용자는 경고창에서 Yes/No를 선택하여 위성의 운용을 계속 진행할 것인지 선택한다.
하지만, 상기와 같은 기능은 일반적으로 범용 프로그래밍 언어에서는 제공되지 않기 때문에, SEND, WARNING 명령어의 기능은 타겟 언어를 사용하여 미리 정의되어 있어야한다. 그리고 타겟 언어로 미리 정의된 명령어들은 라이브러리로써 이용된다.
예를 들어, 사용자는 C언어를 사용하여 "Hello"를 출력하는 프로그램을 작성하기 위해서 "Hello"를 출력하기 위한 기능을 구현할 필요 없이 미리 정의된 printf 함수를 사용하면 된다. 즉, C언어에서 printf의 기능을 미리 정의해 두어 라이브러리로써 사용자에게 제공하기 때문에, 사용자는 printf의 기능을 구현할 필요 없이 printf의 기능이 미리 정의되어 있는 studio.h를 incldue 시켜서 사용한다. 여기서 include 는 C언어의 예약어로써 studio.h에 정의되어 있는 printf를 사용하기 위해서 사용된다.
이와 같이, 범용 프로그래밍 언어에서 제공되지 않는 명령어인 SEND, WARNING 등의 명령어를 타겟 언어를 사용하여 정의된다. 그리고 미리 정의된 명령어는 라이브러리로써 제공하기 때문에 PIL 언어의 명령어를 타겟 언어의 명령어로 변환할 경우 라이브러리 경로에 있는 명령어의 함수로 변환하면 된다.
결론적으로, 코드 생성기(140)는 상기 의미 분석기(130)에서 수신된 심볼 테이블을 입력받아 상기 사용자가 정의한 각 이름에 대응하는 정보를 이용하여 상기 제 1 데이터 베이스(141)의 스크립트 언어의 타입으로 변환하고, 심볼 테이블에 포함된 사용자가 정의한 각 이름에 대응하는 정보 중 제 1 데이터 베이스에서 변환되지 않은 정보들은 상기 제 2 데이터 베이스(142)의 스크립트 언어의 명령어로 변환한다. 그리고 제 2 카테고리에 해당하는 명령어는 제 2 데이터베이스(142)의 3번째 필드인 타켓 언어의 라이브러리 경로로 이동하여 변환한다. <표 2>를 참조하면, PIL 언어의 명령어 중 SEND를 타겟 언어의 SEND로 변환하기 위해는 <표 2>의 3번째 필드에 저장된 경로로 이동하여 PIL 언어의 명령어 중 SEND를 타겟 언어의 SEND로 변환한다.
도 2는 본 발명에 따른 PIL 언어를 스크립트 언어로 변환하는 과정을 설명하기 위한 도면이다.
도 2를 참조하면, 어휘 분석기(110)는 210단계에서 위성 임무의 계획, 임무 전송, 임무 수행 등의 절차를 PIL 언어를 사용하여 미리 정의해둔 자동 위성 운용 절차서를 입력부로부터 입력받는다. 여기서, PIL 언어를 사용하게 작성된 위성 운용 절차서는 PIL 언어를 구성하는 예약어, 명령어, 정수, 실수 등으로 구성된다. 즉, 예약서, 명령어, 정수, 실수 등은 알파벳, 숫자 등으로 구성되기 때문에 위성 운용 절차서는 PIL 언어를 구성하는 예약어, 명령어 등의 문자들로 구성이 된다. 그리고 어휘 분석기(110)는 220단계에서 PIL 언어로 작성된 위성 운용 절차서를 구성하는 문자들을 순서대로 받아들이며 토큰으로 잘라 토큰들로 구성된 토큰열을 생성한다. 여기서 어휘 분석기에서 생성된 토큰열에는 공백, 괄호 등이 제거된 예약어, 명령어 등으로 구성된 문자열을 의미한다. 그리고 어휘 분석기(110)는 사용자가 정의한 이름들에 대한 어휘항목들을 심볼 테이블(Symbol Table)에 삽입한다. 심볼 테이블은 상기에서 <표 1>을 참조하여 설명하였기 때문에 자세한 설명은 생략한다.
이와 같이 어휘 분석기(110)는 PIL 언어로 작성된 위성 운용 절차서를 구성하는 문자들을 순서대로 받아들이며 토큰으로 잘라 토큰들로 구성된 토큰열을 생성한다. 여기서 어휘 분석기에서 생성된 토큰열에는 공백, 괄호 등이 제거된 예약어, 명령어 등으로 구성된 문자열을 의미한다. 그 후, 어휘 분석기(110)는 추상 구문 트리(Abstract Syntax Tree : 이하 AST)를 생성하기 위해서 생성한 토큰열과 심볼 테이블을 구문 분석기(120)로 전송한다.
구문 분석기(120)는 230단계에서 AST를 생성하기 위해서 어휘 분석기(110)로부터 토큰열을 입력받고, 상향식 파싱 알고리즘을 이용하여 파스 트리를 구성한다. 구문 분석기(120)는 AST를 생성하고, 상기 어휘 분석기(110)에서 입력된 사용자에 의해 정의한 이름인 어휘항목에 대응하는 정보를 심볼 테이블에 입력한다. 즉, 구분 분석기(120)는 어휘 분석기(110)에서 전송된 토큰열을 계층적으로 분석하여 식별자의 타입, 함수의 파라미터 개수, 배열의 크기와 같은 정보를 입력한다. 그리고 구문 분석기(120)는 절차서의 타입 검사(Type Checking)를 위해서 심볼 테이블을 의미 분석기(130)에 전송한다.
의미 분석기(130)는 240단계에서 구문 분석기(120)로부터 입력받은 심볼 테이블을 이용하여 PIL로 작성된 자동 위성 운용 절차서가 의미상 오류가 없는지 검사한다. 예를 들어, 프로그램에서 쓰는 식별자는 모두 미리 선언되어야 하며, 각 연산자에 대하여 해당 피연산자의 타입은 맞아야 한다. 또한, 타입을 변환하는 연산은 필요한 곳에 타입 변산 코드를 삽입 등이 있다. 만약, 의미 분석기(130)에서 심볼 테이블과 AST를 사용하여 의미상 오류가 없는지 검사하는 도중에 오류가 발생되면 사용자에게 오류를 알린다. 의미 분석기(130)는 오류 검사를 마친 후 심볼 테이블 및 AST를 코드 생성기(140)로 전송한다.
코드 생성기(140)는 250단계에서 상기 제 1 데이터베이스(141), 상기 제 2 데이터베이스(142) 및 심볼 테이블을 이용하여 PIL 언어를 스크립트 언어로 변환한다. 제 1 데이터베이스(141) 및 제 2 데이터베이스(142) 에 대한 설명은 도 1에서 설명하였기 때문에 자세한 설명은 생략한다.
즉, 코드 생성기(140)는 상기 의미 분석기(130)에서 수신된 심볼 테이블을입력받아 상기 사용자가 정의한 각 이름에 대응하는 정보를 이용하여 상기 제 1 데이터 베이스(141)의 스크립트 언어의 타입으로 변환하고, 심볼 테이블에 포함된 사용자가 정의한 각 이름에 대응하는 정보 중 제 1 데이터 베이스(141)에서 변환되지 않은 정보들은 상기 제 2 데이터 베이스(142)의 스크립트 언어의 명령어로 변환한다. 그리고 제 2 카테고리에 해당하는 명령어는 제 2 데이터베이스(142)의 3번째 필드인 타켓 언어의 라이브러리 경로로 이동하여 변환한다. 상기 <표 3>를 참조하면, PIL 언어의 명령어 중 SEND를 타겟 언어의 SEND로 변환하기 위해는 <표 3>의 3번째 필드에 저장된 경로로 이동하여 PIL 언어의 명령어 중 SEND 를 타겟 언어의 SEND로 변환한다.
도 1은 본 발명에 따른 PIL 언어를 스크립트 언어로 변환하기 위한 언어 변환기의 블록구성도,
도 2는 본 발명에 따른 PIL 언어를 스크립트 언어로 변환하는 과정을 설명하기 위한 도면.

Claims (8)

  1. PIL(Procedure Intermediate Language)로 작성된 위성 운용 절차서를 스크립트 언어로 변환하는 언어변환장치에 있어서,
    상기 절차서를 입력 받아 문법적으로 의미 있는 최소 단위인 토큰 단위로 잘라 토큰의 나열인 토큰열로 변환하고, 상기 절차서에서 정의한 식별자를 순차적으로 심볼 테이블에 입력하는 어휘 분석기와,
    상기 어휘 분석기로부터 상기 토큰열을 미리 결정된 순서로 입력받아 요약 문법 트리(AST: Abstract Syntax Tree)를 생성하고, 상기 심볼 테이블을 입력 받아 상기 심볼 테이블에 기록된 상기 각 식별자들에 대응하는 정보를 입력하는 구문 분석기와,
    상기 요약 문법 트리와 심볼 테이블을 기초로 하여, 상기 절차서의 의미상 오류를 검사하는 의미 분석기와,
    코드 생성기를 포함하며,
    상기 코드 생성기는,
    상기 입력된 PIL의 타입을, 상기 심볼 테이블의 식별자에 대응하는 정보들을 이용하여, 미리 정의된 제 1 데이터 베이스의 스크립트 언어의 타입으로 변환 또는 매핑하고,
    상기 변환 또는 매핑되지 않은 상기 PIL의 명령어를, 상기 심볼 테이블의 식별자에 대응하는 정보들을 이용하여, 미리 정의된 제 2 데이터 베이스의 스크립트 언어의 명령어로 변환하고,
    상기 스크립트 언어의 명령어가 상기 PIL에 존재하지 않으면,
    상기 스크립트 언어로 상기 스크립트 언어의 명령어에 대한 동작을 정의하고, 상기 명령어에 대한 동작이 정의된 라이브러리 함수의 경로로 이동하여 맵핑하는 것을 특징으로 하는 언어변환장치.
  2. 제 1 항에 있어서, 상기 제 1 데이터 베이스는,
    상기 심볼 테이블의 식별자에 대응하는 정보를 스크립트 언어의 타입으로 변환하기 위한 매핑 테이블임을 특징으로 하는 언어변환장치.
  3. 제 1 항 또는 제 2 항에 있어서, 상기 제 2 데이터 베이스는,
    상기 심볼 테이블의 식별자에 대응하는 정보를 이용하여 스크립트 언어의 명령어로 변환하기 위한 매핑 테이블임을 특징으로 하는 언어변환장치.
  4. 제 3 항에 있어서, 상기 제 2 데이터 베이스는,
    상기 PIL의 명령어 중 스크립트 언어에서 지원되지 않는 명령어에 대한 동작을 정의하는 함수의 경로를 포함함을 특징으로 하는 언어변환장치.
  5. 제 1 항에 있어서, 상기 스크립트 언어는,
    Python 또는 Angel Script임을 특징으로 하는 언어변환장치.
  6. PIL(Procedure Intermediate Language)로 작성된 위성 운용 절차서를 스크립트 언어로 변환하는 언어변환방법에 있어서,
    상기 절차서를 입력받아 문법적으로 의미 있는 최소 단위인 토큰 단위로 잘라 토큰의 나열인 토큰열로 변환하고, 상기 토큰열을 미리 결정된 순서로 입력받아 요약 문법 트리(AST: Abstract Syntax Tree)를 생성하는 문법 트리 생성 단계와,
    상기 절차서에서 정의한 식별자를 순차적으로 심볼 테이블에 입력하고, 상기 심볼 테이블에 기록된 상기 각 식별자들에 대응하는 정보를 입력하는 심볼 매핑 단계와,
    상기 요약 문법 트리와 심볼 테이블을 이용하여 상기 절차서의 의미상 오류를 검사하는 의미 분석 단계와,
    상기 스크립트 언어와 1:1 대응되는 상기 심볼 테이블의 식별자들을, 미리 정의된 제 1 데이터 베이스를 이용하여 상기 스크립트 언어 타입으로 변환하고, 상기 심볼 테이블의 식별자들 중 상기 스크립트 언어와 1:1 대응되지 않는 식별자들을, 미리 정의된 제 2 데이터 베이스를 이용하여 상기 스크립트 언어의 명령어로 변환하는 코드 생성 단계를 포함하고,
    상기 코드 생성 단계는,
    상기 스크립트 언어의 명령어가 PIL에 존재하지 않으면, 상기 스크립트 언어로 상기 명령어에 대한 동작을 정의하는 단계와,
    상기 명령어에 대한 동작이 정의된 라이브러리 함수의 경로로 이동하여 맵핑하는 맵핑 단계를 포함함을 특징으로 하는 언어변환방법.
  7. 제 6 항에 있어서, 상기 스크립트 언어는
    Python 또는 Angel Script임을 특징으로 하는 언어변환방법.
  8. 삭제
KR1020090083214A 2009-09-03 2009-09-03 위성 관제 시스템에서 위성 관제 운용 자동화를 위한 언어변환장치 및 방법 KR101314247B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020090083214A KR101314247B1 (ko) 2009-09-03 2009-09-03 위성 관제 시스템에서 위성 관제 운용 자동화를 위한 언어변환장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090083214A KR101314247B1 (ko) 2009-09-03 2009-09-03 위성 관제 시스템에서 위성 관제 운용 자동화를 위한 언어변환장치 및 방법

Publications (2)

Publication Number Publication Date
KR20110024996A KR20110024996A (ko) 2011-03-09
KR101314247B1 true KR101314247B1 (ko) 2013-10-02

Family

ID=43932742

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090083214A KR101314247B1 (ko) 2009-09-03 2009-09-03 위성 관제 시스템에서 위성 관제 운용 자동화를 위한 언어변환장치 및 방법

Country Status (1)

Country Link
KR (1) KR101314247B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160075211A (ko) * 2014-12-19 2016-06-29 한국전자통신연구원 위성관제 시스템의 절차서 처리 장치 및 처리 방법

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110175047B (zh) * 2019-04-22 2022-03-29 中国科学院信息工程研究所 处理器指令编码的自动生成方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR960003050B1 (ko) * 1991-02-27 1996-03-04 디지탈 이큅먼트 코오포레이숀 중간 컴파일러 언어에 대한 심볼 테이블
KR100379572B1 (ko) 2000-12-28 2003-04-11 주식회사 아이티안 무선 단말언어 실시간 자동 변환 시스템 및 자동 변환 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR960003050B1 (ko) * 1991-02-27 1996-03-04 디지탈 이큅먼트 코오포레이숀 중간 컴파일러 언어에 대한 심볼 테이블
KR100379572B1 (ko) 2000-12-28 2003-04-11 주식회사 아이티안 무선 단말언어 실시간 자동 변환 시스템 및 자동 변환 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
박진기, "임베디드 가상기계를 위한 번연기 시스템," 서경대대학원 박사학위논문, 2006,02.28. *
박진기, "임베디드 가상기계를 위한 번연기 시스템," 서경대대학원 박사학위논문, 2006,02.28.*

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160075211A (ko) * 2014-12-19 2016-06-29 한국전자통신연구원 위성관제 시스템의 절차서 처리 장치 및 처리 방법
KR102239757B1 (ko) * 2014-12-19 2021-04-13 한국전자통신연구원 위성관제 시스템의 절차서 처리 장치 및 처리 방법

Also Published As

Publication number Publication date
KR20110024996A (ko) 2011-03-09

Similar Documents

Publication Publication Date Title
EP0643851B1 (en) Debugger program which includes correlation of computer program source code with optimized objet code
US8438551B2 (en) Code transformation
US6321376B1 (en) Apparatus and method for semi-automated generation and application of language conformity tests
US7107182B2 (en) Program and process for generating data used in software function test
US20080046868A1 (en) Method and system for template-based code generation
KR101099173B1 (ko) 소프트웨어 스위트를 구축하기 위한 시스템 및 방법
US9342435B2 (en) Embedding dynamic information in electronic devices
US20050283758A1 (en) Bi-directional programming system/method for program development
JP2001209547A (ja) ソースコード変換方法、ソースコード変換プログラムを記録した記録媒体及びソースコード変換装置
JPS6375835A (ja) 目的コ−ド、プログラム・リスト及び設計文書を生成する装置
CN108052453A (zh) 可编程逻辑控制器程序的测试方法、装置、设备和介质
KR101314247B1 (ko) 위성 관제 시스템에서 위성 관제 운용 자동화를 위한 언어변환장치 및 방법
Zhang et al. Automated extraction of grammar optimization rule configurations for metamodel-grammar co-evolution
US20090064092A1 (en) Visual programming language optimization
Jácome-Guerrero et al. Software development tools in model-driven engineering
KR102614967B1 (ko) 자바스크립트의 중간 언어 기반 의미론 추출 자동화 시스템 및 방법
KR101306842B1 (ko) 자바 프로그램 검증 조건 생성 시스템 및 방법
AU2012201466B2 (en) Code Transformation
JPH0685150B2 (ja) コンピユータ・プログラム変換装置および方法
CN113608748A (zh) C语言转换Java语言的数据处理方法、装置及设备
CN105867992A (zh) 代码编译方法和装置
JP5181788B2 (ja) ソースプログラムの言語変換装置、方法及びプログラム
Mishchenko et al. New functionalities of the system for processing natural language specifications and its operating environment
Heinen et al. Simple vs. Complex OBCP: Experience and Solutions for managing On-Board Control Procedures
CN117667089A (zh) 前端表单生成方法、装置、存储介质及电子设备

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

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee