KR970007760B1 - 클래스 독립 파서 및 다수의 클래스 종속 파서를 갖고 있는 모듈러 컴파일러 - Google Patents

클래스 독립 파서 및 다수의 클래스 종속 파서를 갖고 있는 모듈러 컴파일러 Download PDF

Info

Publication number
KR970007760B1
KR970007760B1 KR1019890006886A KR890006886A KR970007760B1 KR 970007760 B1 KR970007760 B1 KR 970007760B1 KR 1019890006886 A KR1019890006886 A KR 1019890006886A KR 890006886 A KR890006886 A KR 890006886A KR 970007760 B1 KR970007760 B1 KR 970007760B1
Authority
KR
South Korea
Prior art keywords
parser
class
scanner
dependent
independent
Prior art date
Application number
KR1019890006886A
Other languages
English (en)
Other versions
KR900018809A (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 휴렛트-팩카드 캄파니
Publication of KR900018809A publication Critical patent/KR900018809A/ko
Application granted granted Critical
Publication of KR970007760B1 publication Critical patent/KR970007760B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing

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)
  • Stored Programmes (AREA)
  • Input From Keyboards Or The Like (AREA)
  • Medicines That Contain Protein Lipid Enzymes And Other Medicines (AREA)
  • Computer And Data Communications (AREA)

Abstract

내용없음.

Description

클래스 독립 파서 및 다수의 클래스 종속 파서를 갖고 있는 모듈러 컴파일러
제1도는 응용, 에이전트 환경과 도움 환경간의 상호 작동을 도시한 블럭도.
제2도는 작업 언어가 본 발명의 양호한 실시예에 따라 발생 및 수행되는 방식을 도시한 블럭도.
제3도는 본 발명의 양호한 실시예에 따른 제1도에 도시된 응용의 블럭도.
제4도는 본 발명의 양호한 실시예에 따른 제1도에 도시된 응용을 통하는 데이터 흐름을 도시한 블럭도.
제5도는 본 발명의 양호한 실시예에 따른 컴파일러의 블럭도.
제6도는 본 발명의 양호한 실시예에 따른 컴퓨터, 모니터, 키보드 및 마우스를 도시한 도면.
제7도는 제6도에 도시된 마우스의 평면도.
제8도 내지 제18도는 제6도에 도시된 모니터상의 디스플레이가 사용자 작동이 본 발명의 양호한 실시예에 따라 기록 및 재생되는 사용자 세션내에서 나타나는 방식을 도시한 도면.
제19도는 제5도에 도시된 컴파일러내에서의 데이터 흐름을 도시한 도면.
* 도면의 주요부분에 대한 부호의 설명
19 : 키보드 20 : 마우스
27, 28 : 버튼 100 : 응용
101 : 작동 프로세서 102 : 코맨드 프로세서
103 : 도움 응용 104 : 도움 문구
105 : 도움 기구 107 : 에이전트 작업
108 : 에이전트 엔진 111 : 사용자
112 : 소프트웨어 환경 113 : 데이터 채널
114, 115, 116, 117 : 데이터 채널
120 : 작업 언어 컴파일러
121 : 프로그램(P)코드 파일 122 : 독립 파서
122a : 스캐너 루틴 123a : 종속 스캐너
123, 124, 124 : 클래스 종속 파서
125 : 클래스 독립 기록기
126, 127 : 클래스 종속 기록기
129 : 외부 형태로의 번역 프로세서
130 : 응용 프로그램 인터페이스(API)
131 : 작업 언어 파일
132 : 에이전트 작업 편집기
141 : 모델리스 사용자 작동 인터페이스 부품
142 : 모델리스 작동 프로세서
143 : 모델리스 코맨드 인터페이스 부품
145 : 사용자 작동 인터페이스 부품
146 : 코맨드 인터페이스 부품
147 : 복귀 인터페이스 부품
148 : 모드 진단 박스 프로세서
149 : 에러 진단 박스 부품
150 : 재생메시지 검사 부품
152 : 모드 진단 박스 검사 부품
164 : 입력 스트림 프로세서
166 : 표현식 파서 171 : 기억 파일 버퍼
176 : 임시 파일 200 : 커서
201, 202, 203, 206 : 아이콘 204, 205 : 윈도우
본 발명은 에이전트 엔진에 의해 수행될 코드를 컴파일하기 위한 모듈러 컴파일러 및 컴퓨터상에서 실행되는 다수의 응용 프로그램의 사용에 관한 것이다.
소정의 시판중인 응용 프로그램, 예를 들면 여러가지 대중용 스프레드쉬트(spreadsheet) 및 데이터 베이스 프로그램은 사용자가 나중에 배치(batch) 수행하기 위해 스크립트(script) 파일내에 기억되는 코맨드를 타이프하게 하는 코맨드 언어를 실행한다. 이 스크립트들은 사용자가 복잡한 코맨드 셋트를 자동적으로 실행시키게 된다. 부수적으로, 사용자는 자주 반복되는 작업을 스크립트의 수행하에서 간략화시킬 수 있다.
그러나, 코맨드 언어 스크립의 기존 수행 방법은 능력면에서 제한을 받는다. 예를 들어, 기존의 기법들은 응용(application) 종속적이다. 각 응용은 이 응용에 의해서만 수행될 수 있는 자체 코맨드 언어 스크립트를 발생시킨다. 다수의 응용은 동일한 스크립트를 수행하게 할 수 있는 수단이 전혀 없다. 더욱이, 발생되는 스크립트 파일은 스크립트 파일들이 응용에 의해 실제로 수행된 코맨드를 포함하고 있기 때문에 이해 및 변형이 매우 어렵다.
본 발명의 양호한 실시예에 따르면, 다수의 응용 및 에이전트 엔진을 포함하는 컴퓨팅 시스템이 제공된다. 각 응용 프로그램은 일련의 의미 코맨드를 수행한다.
모듈러 컴파일러는 응용 프로그램 및 에이전트 엔진에 의해 수행되도록 코드를 컴파일하는데 사용되나, 모듈러 컴파일러는 에이전트 엔진에 의해 수행될 프로그램 코드를 분석하는 클래스 독립 컴파일러를 포함한다. 또한, 모듈러 컴파일러는 각 응용 프로그램 클래스 종속 파서(parser)를 포함한다. 각 클래스 종속 파서는 각 응용 프로그램에 의해 수행될 프로그램 코드를 분석한다. 응용 프로그램이 컴퓨팅 시스템에 추가될 때, 관련된 클래스 종속 파서는 모듈러 컴파일러에 추가된다. 응용 프로그램이 컴퓨팅 시스템으로부터 제거될 때, 관련된 클래스 종속 파서는 모듈러 컴파일러로부터 제거된다.
본 발명은 응용이 컴퓨팅 시스템에 추가되거나 이로부터 제거될 수 있게 하는 융통성을 허용한다. 새로운 응용이 컴퓨팅 시스템에 추가될 때, 새로운 응용에 의해 수행된 코맨드를 고려하기 위해 컴파일러를 재기입할 필요가 없다. 오히려, 별도의 클래스 종속 파서가 새로운 응용에 의해 수행될 코맨드를 발생시키기 위해 모듈러 컴파일러에 추가될 수 있다.
이하, 첨부 도면을 참조하여 본 발명에 대해 상세하게 설명하겠다.
제1도는 본 발명의 양호한 실시예에 따른 컴퓨팅 시스템의 블럭도이다. 사용자(111)는 소프트웨어환경(112)을 통해 컴퓨팅 시스템과 통신한다. 소프트웨어 환경(112)은, 예를 들어 미합중국 98073-9717 워싱턴주 레드모드 엔이써티 씩스 웨이 160H에 주소를 둔 Microsoft Corporation사가 시판중인 프로그램인 Microsoft Window로 될 수 있다. 소프트웨어 환경(112)은 응용(100)과 상호 작동한다. 사용자 작동을 설명하는 정보를 포함하는 메시지는 소프트웨어 환경(112)에 의해 응용(100)에 보내진다. 양호한 실시예내에서, 사용자 작동을 포함하는 메시지는 Microsoft Window에 의해 보내진 표준 메시지이다. 응용(100)은 구문 사용자 작동을 단일 의미 코맨드로 변환시키는 작동 프로세서(101)를 포함한다. 예를 들어, 작동 프로세서(101)는 사용자에 의해 사용된 마우스의 클릭(click) 및 이동을 관찰하고, 구문적 의미의 코맨드가 발생될 때까지 대기한다. 작동 프로세서(101)는 사용자가 특정 코맨드를 형성할 수 있는 여러가지 방식을 구문적으로 번역할 수 있다. 구문 사용자 작동외에, 작동 프로세서(101)는 응용(100)으로 들어오는 다른 메시지도 프로세스한다. 어떤 메시지는 발생되는 의미 코맨드를 발생시키고, 다른 메시지들은 작동 프로세서(101)로 완전히 취급될 수 있다.
또한, 응용(100)은 의미 코맨드를 수행하는 코맨드 프로세서(102)를 포함한다. 코맨드 프로세서(102)는 더욱 상세하게 후술한 내부 형태로 의미 코맨드를 수신하고, 코맨드가 수행될 수 없는 경우에 에러를 복귀시킨다.
응용(100) 및 소프트웨어 환경(112)은 소프트웨어 환경(112)과 응용(100)사이의 인터페이스 레벨에서 도움(help) 환경(119)과 상호 작동한다. 도움 환경(119)은 도움 문구(text, 104)를 사용하는 도움 응용(103)을 포함한다. 또한, 도움 환경(119)는 도움 문구(104)를 발생시키는데 사용되는 도움 기구(105)를 포함한다.
또한, 소프트웨어 환경(112)는 에이전트 환경(118)과 상호 작동한다. 에이전트 환경(118)은 에이전트 작업(107) 및 에이전트 엔진(108)을 포함한다.
에이전트 엔진(108)은, 5가지 기능을 수행하기 위해서 5가지 상이한 개념적 부류(category)에서 응용(100)과 상호 작동한다. 에이전트 엔진(108)은 질문을 위해 데이터 채널(113)을 통해 작동 프로세서(101)과 상호 작동한다. 에이전트 엔진(108)은 응용(100)의 작동 상태를 모니터하기 위해 데이터 채널(114)을 통해 작동 프로세서(101)와 코맨드 프로세서(102) 사이에서 상호 작동한다. 에이전트 엔진(108)은 응용(100)에 의해 수행된 코맨드를 갖기 위해 데이터 채널(115)을 통해 코맨드 프로세서(102)와 상호 작동한다. 에이전트 엔진(108)은 응용(100)내의 코맨드 프로세싱시의 에러를 처리하기 위해 데이터 채널(116)을 통해 코맨드 프로세서(102)와 상호 작동한다. 에이전트 엔진(108)은 응용(100)의 수행 상태를 기록하고, 코맨드의 완료 통지를 수신하기 위해 데이터 채널(117)을 통해 코맨드 프로세서(102)와 상호 작동한다.
본 발명의 양호한 실시예에서, 코맨드들은 4가지 방식, 즉 (1) 키워드 및 파라메터로서 기억된 작업 언어 형태, (2) 에이전트(108)에 의해 번역된 부수적인 헤더(header)를 갖고 있는 외부 형태로된 2진 코드인 P코드 형태, (3) 응용(100)에 의해 이해된 2진 데이터이고, 에이전트(108)와 응용(100) 사이를 통과하는 외부 형태, 및 (4) 응용(100)내에서 수행되는 2진 코맨드로서의 외부 형태로 표현될 수 있다. 또한 코맨드를 나타내는 4가지 방식은 본 명세서에 첨부된 부록(A)내에 기술되어 있다.
제2도는 전체 에이전트 시스템이 어떻게 작용하는지를 도시한 블럭도이다. 작업 언어 파일(131)은 작업 언어를 포함하는 파일이다. 작업 언어는 응용의 기능을 설명하는 코맨드의 문구 형태이다. 작업 언어는 클래스 종속(class dependent) 코맨드 및 클래스 독립(class independent) 코맨드로 구성된다. 클래스 종속 코맨드는 응용에 의해 실행될 코맨드이다. 제2도내에는, 단지 한개의 응용, 즉 응용(100)만이 도시되어 있지만, 에이전트(108)은 다수의 응용들과 상호 작동한다.
본 발명의 양호한 실시예내에서, 응용에 의해 동작될 데이터 파일은 목적의 사용에 의해 참조된다. 각 목적은 데이터 파일의 참조 및 응용의 참조를 포함한다. 동일한 응용을 참조하는 목적들은 동일 클래스의 멤버로 불리워진다. 각 응용은 상이한 코맨드 셋트를 수행한다. 그러므로, 클래스 종속 코맨드는 응용-응용과 다르다.
에이전트(108)는 에이전트(108)에 의해 이해된 코맨드인 클래스 독립 코맨드를 수행한다. 클래스 독립 코맨드는 응용에 의해서가 아니라 에이전트(108)에 의해 수행된다.
작업 언어 파일(131)은 P(프로세스) 코드 파일(121)을 준비하기 위해 클래스 독립 파서(parser, 122)에 의해 사용된다. P 코드 파일(121)을 준비할 때, 독립 파서(122)는 클래스 종속 파서(123, 124)등을 호출한다. 더욱 상세하게 후술한 바와 같이, 클래스 종속 파서는 P 코드 형태로 캡슐화되는 클래스 종속 코맨드를 발생시키는 파서이다. 에이전트(108)는 P 코드 형태로부터 이들의 외부 형태로된 코맨드를 추출하여, 이 코맨드들을 적합한 응용으로 전송한다. P 코드내의 클래스 필드는 어느 응용이 특정한 클래스 종속 코맨드를 수신할 지를 나타낸다. 클래스 독립 파서(122)는 에이전트(108)에 의해 수행되는 P 코드를 발생시키는 파서이다.
작업 언어 파일(131)은 에이전트 작업 편집기(132)로 사용자(111)에 의해 준비될 수 있다. 선택적으로, 작업 언어 파일은 클래스 종속 기록기(126, 127등)을 사용하는 클래스 독립 기록기(125)의 사용에 의해 준비될 수 있다. 일반적으로, 기록기는 나중에 재생하기 위해 응용의 코맨드를 기록한다. 컴퓨팅 시스템이 기록 모드내에 있을 때, 에이전트 작업 편집기(132)는 어떻게 에이전트 엔진(108)을 작동시켜 응용이 행해지는지를 나타내는 응용(100)과 같은 응용으로부터의 입력을 수신한다. 응용은 응용프로그램 인터페이스(API)(130)을 통해 에이전트 작업 편집기(132)와 통신한다. 에이전트 작업 편집기(132)는 데이터를 컴퓨팅 시스템이 기록 모드내에 있을 때 클랙스 독립 기록기(125)로 전송하고, 에이전트 작업 편집기가 사용자(111)에 의해 사용되고 있을 때 작업 언어 파일(131)로 전송한다.
클래스 독립 기록기(125)는 정보를 수신하여, 작업 언어 파일(131)을 형성한다. 클래스 독립 기록기(125)가 에이전트 작업 편집기(132)가 응용에 의해 행해진 작동에 관한 정보를 전송하고 있을 때, 클래스 독립 기록기는 이 작동용 작업 언어 형태를 발생시키는 이 응용용 클래스 종속 기록기를 호출한다. 클래스 독립 기록기(108)는 에이전트 엔진에 의해 행해진 작동용 작업 언어 행태를 발생시킨다.
P 코드 파일(121)을 수행할 때, 에이전트 엔진(108)은 각각의 P 코드 코맨트를 해독하여, P 코드 코맨드가 에이전트(108)에 의해 수행될 클래스 독립 코맨드를 포함하는지를 결정한다. P 코드 코맨드가 클래스 독립 코맨드를 포함하면, 에이전트(108)는 코맨드를 수행한다. P 코드 코맨드가 클래스 종속 코맨드를 포함하면, 에이전트(108)는 코맨드를 수신할 응용을 P 코드 코맨드에 의해 결정한다. 그다음, 에이전트(108)는 P 코드내에 매입된 외부 형태로 된 클래스 종속 코맨드를 추출한다. 그 다음, 이 클래스 종속 코맨드는 응용응로 보내진다. 예를 들면, 클래스 종속 코맨드가 응용(100)용인 경우, 클래스 종속 코맨드는 응용(100)으로 보내진다. 응용(100)내에서, 내부 형태로의 번역 프로세서(128)은 외부형태로 보내진 클래스 종속 코맨드를 코맨드의 내부 형태로 번역하는데 사용된다.
에이전트 엔진(108)과 응용(100) 사이의 상호 작동 시에, API(130)이 사용된다. API(130)은 에이전트 엔진(108) 및 다른 수단을 억세스하기 위한 한 셋트의 기능 및 메시지이다.
시스템이 기록 모드내에 있을때, 내부 형태로의 번역 프로세서(128)는 에이전트 엔진(108)으로부터의 코맨드를 번역하여, 이들은 제3도에 도시된 코맨드 인터페이스 부품(146)을 통해 코맨드 프로세서(102)에 공급한다. 외부 형태로의 번역 프로세서(129)는 코맨드 프로세서(102)에 의해 수행된 내부 형태로 된 코맨드를 수신한다. 코맨드는 제3도에 도시된 복귀 인터페이스 부품(147)을 통해 수신된다. 외부 형태로의 번역 프로세서(129)는 내부 형태로된 코맨드를 외부 형태로된 코맨드로 번역한다. 그 다음, 외부 형태로된 코맨드는 API(130)을 통해 작업 편집기(132)에 전달된다.
제3도는 본 발명의 양호한 실시예에 따른 응용(100)의 구조를 상세하게 도시한 도면이다. 응용(100)은 작동 프로세서(101)와 코맨드 프로세서(102)와 통신하는 소프트웨어 환경(112)과 코맨드 접속 부품(146)과 상호 작동하는 사용자 작동 인터페이스 부품(145)을 포함한다. 도시된 바와 같이, 작동 프로세서(101)와 코맨드 프로세서(102)는 응용 데이터(144)를 억세스한다. 복귀 인터페이스 부품(147)은 코맨드 프로세서(102)에 응답하여, 제어를 소프트웨어 환경(112)로 다시 복귀시킨다. 외부 형태로의 번역 프로세서(129)는 복귀 인터페이스 부품(147)과 상호 작동하는 것으로 도시되어 있다. 복귀 인터페이스 부품(147)은 응용(100)이 재생 모드 또는 기록 모드내에 있을 때에만 호출된다. 이 모드들은 더욱 상세하게 후술되어 있다. 복귀 인터페이스 부품(147)은 코맨드가 응용(100)에 의해 수행되었고, 응용(100)이 다음 코맨드를 대기하고 있다는 것을 에이전트 엔진(108)에 표시한다.
또한, 응용(100)내에는 모드 진단 박스 프로세서(148) 및 에러 진단 박스 부품(149)이 포함된다. 이들은 사용자(111)와 통신하는 진단 박스의 디스플레이를 제어하기 위해 소프트웨어 환경(112)과 상호 작동한다.
소정의 응용들은 1번에 1개 이상의 윈도우(window)내에서 동작할 수 있다. 이것이 실행될 때, 모델리스(modeless) 사용자 작동 인터페이스 부품, 모델리스 작동 프로세서, 및 모델리스 코맨드 인터페이스 부품은 응용이 동작하는 1개이상의 각 윈도우에 추가된다. 예를 들어, 응용(100)내에는 모델리스 사용자 작동 인터페이스 부품(141), 모델리스 작동 프로세스(142) 및 모델리스 코맨드 인터페이스 부품(143)이 도시되어 있다.
제4도는 응용(100)내에서의 데이터 흐름이 도시되어 있다. 응용(100)으로의 메시지들은 사용자 작동 인터페이스 부품(145)에 의해 수신된다. 소정 형태의 메시지, 예를 들어 도움 응용(103)으로부터의 메시지의 경우에, 사용자 작동 인터페이스 부품(145)은 응용(100)을 즉시 복귀시키게 한다. 그렇지 않으면, 메시지는 재생 메시지 검사 부품(150)으로 전송된다.
메시지가 기록 또는 파싱에 의해 발생된 코맨드의 재생용이면, 메시지는 메시지 형태내의 명령을 외부 형태로부터 내부 형태로 번역하는 내부 프로세서(128)로 번역되기 위해 보내진다.
메시지가 재생 메시지가 아닌 경우, 메시지는 예를 들어 메시지를 발생시키는 사용자 작동을 구문적으로 번역하기 위해 작동 프로세서(101)로 보내진다. 작동 프로세서(101)에 의해 발생되거나, 내부 프로세서(128)에 의해 발생된 의미 코맨드가 전혀 없는 경우, 재생 메시지 검사 부품(150)은 응용(128)을 복귀시킨다. 발생된 의미 코맨드가 있는 경우, 코맨드는 코맨드 인터페이스 부품(146)으로 전송된다.
에이전트(108)가 응용(100)에 의한 코맨드의 수행을 모니터하고 있는 경우, 코맨드 인터페이스 부품(146)은 코맨드를 외부 형태로 번역하며, 이 코맨드를 에이전트(108)로 전달하는 외부 형태로의 번역 프로세서(129)에, 수신된 소정의 데이터를 보낸다. 또한, 코맨드 인터페이스 부품은 데이터를 모드 진단 박스 검사 부품(152)으로 전송한다.
전송된 데이터가 진단 박스 요구를 포함하는 경우, 모드 진단 박스 검사 부품(152)은 데이터를 프로세스하기 위해 모드 진단 박스 프로세서(148)로 보낸다. 그렇지 않으면, 모드 진단 박스 검사 부품(152)은 데이터를 코맨드 검사 부품(151)으로 보낸다.
데이터가 코맨드를 포함하는 경우, 코맨드 검사 부품(151)은 코맨드를 수행하기 위해 코맨드 프로세서(102)로 보낸다. 코맨드 검사 부품(151)은 데이터를 복귀 인터페이스 부품(147)으로 보낸다.
에이전트(108)이 코맨드를 기록하고 있는 경우, 복귀 인터페이스 부품(147)은 데이터를 외부 형태로 번역하기 위해 외부 형태로의 번역 프로세서(129)로 보내고, 복귀 인터페이스 부품(147)을 통해 에이전트(108)로 전달된다. 복귀 인터페이스 부품은 다음 메시지가 수신될 때까지 복귀한다.
다음 설명은 작동이 본 발명의 양호한 실시예에 따라 어떻게 기록 및 재생되는지를 설명한다.
제8도내에서, 응용 "NewWave Office"가 도시된 바와 같이 윈도우(205)내에서 실행되고 있다. 윈도우(205)내에는 아이콘(icon, 201)에 의해 나타난 목적 "Joe", 아이콘(206)에 의해 나타난 폴더(Folder)"Bill", 및 아이콘(202)에 의해 나타난 폴더 "Sam"이 도시되어 있다. 목적 "Joe"는 문구 파일의 참조, 문구 파일상에서 동작하는 응용의 참조를 포함한다. 폴더 "Sam"이 개방되었으므로, 아이콘(202)은 가려지고, 윈도우(204)는 폴더 "Sam"의 내용을 나타낸다. 폴더 "Sam"내에는 아이콘(203)에 의해 나타난 폴더 "Fred"가 있다. 커서(200)는 제6도에 도시된 바와 같이 마우스(20) 또는 키보드(19)에 의해 제어된다.
또한, 제6도에는 컴퓨터(18), 및 윈도우(205)가 위에 나타나는 모니터(14)가 도시되어 있다. 제7도에는 버튼(27) 및 버튼(28)을 포함하는 마우스(20)이 도시되어 있다.
목적 "Joe"는 목적 "목적 "Joe"상에 커서(200)를 배치하기 위해 마우스(20)를 사용하고, 버튼(27)을 누르며, 폴더 "Bill"상으로 커서(200)를 이동시키고, 버튼(27)을 해제함으로써 폴더 "Bill"내에 배치될 수 있다. 이와 마찬가지로, 목적 "Joe"는 목적 "Joe"상에 커서(20)를 배치하기 위해 마우스(20)를 사용하고, 버튼(27)을 누르며, 윈도우(204)내에서 커서(200)를 이동시키고, 버튼(27)을 해제함으로써 폴더 "Sam"내에 배치될 수 있다. 최종적으로, 목적 "Joe"는 목적 "Joe"상에 커서(20)를 배치하기 위해 마오스(20)를 사용하고, 버튼(27)을 누르면, 윈도우(204)내에서 커서(200)를 이동시키고, 버튼(27)을 해제함으로써 폴더 "Sam"내에 배치될 수 있다. 최종적으로, 목적 "Joe"는 목적 "Joe"상에 커서(20)를 배치하기 위해 마우스(20)를 사용하고, 버튼(27)을 누르며, 폴더 "Fred"상으로 커서(200)를 이동시키고, 버튼(27)을 해제함으로써 폴더 "Fred"내에 배치될 수 있다.
폴더 "Sam"내의 폴더 "Fred" 또는 폴더 "Bill"내의 목적 "Joe"의 배치는 후술한 바와 같이 기록될 수 있다. 사용자가 마우스(20)를 이동시킬 때 마다, 구문 사용자 작동을 포함하는 메시지가 사용자 작동 인터페이스 부품(145)에 의해 수신되고, 재생 메시지 검사 부품(150)을 통해 작동 프로세서(101)로 중계된다. 이 구문 사용자 작동에 기초를 두고, 작동 프로세서(101)는 코맨드 프로세서(102)에 의해 수행되는 의미 코맨드를 발생시킨다.
다음 설명은 폴더 "Bill"내의 목적 "Joe"의 배치 상태 기록을 설명한 것이다. 제8도내에서는, 윈도우(205)가 작동하고 있다. 커서(20)는 윈도우(205)내에서 자유롭게 이동될 수 있다. 사용자가 마우스(20)를 이동시킬 때, 구문 사용자 작동은 상술한 바와 같이 작동 프로세서(101)로 보내진다. 작동 프로세서(101)는 커서(200)의 자표 위치 트랙(track)을 유지한다. 버튼(27)이 눌려질 때, 작동 프로세서(101)는 커서(200)의 현재 좌표 위치에 무엇이 존재하는지를 알아보기 위해 검사한다. 버튼(17)이 툴려질 때 커서(200)가 목적 "Joe"상에 배치되는 경우,작동 프로세서(101)은 목적 "Joe"가 커서(200)의 위치에 있다는 것을 발견한다. 이때, 작동 프로세서(101)는 의미 코맨드 "Select Document 'Joe'"를 발생시킨다. 의미 코맨드는 재생 메시지 검사 부품(151)을 통과하고, 모드 진단 박스 검사 부품(152), 및 코맨드 검사 부품(151)을 통과하여, 의미 코맨드를 실행하는 코맨드 프로세서(102)에 제공된다. 또한, 의미 코맨드는 복귀 인터페이스 부품(147)에 의해 수신되고, 외부 형태로의 번역 프로세서(129)로 보내진다. 외부 형태로의 번역 프로세서는 외부 형태로된 코맨드를 출력시켜서, 이것을 클래스 독립 기록기(125)로 보내므로, 작업 언어 파일내에 작업 언어 형태로된 코맨드를 기록하는 클래스 독립 기록기(126)에 보낸다.
마우스(20)가 이동될 때, 구문 사용자 작동은 작동 프로세서(101)에 계속 보내진다. 작동 프로세서는 커서(200)의 좌표 위치 트랙을 계속해서 유지한다. 제9도내에서, 커서(200)은 목적 "Joe"의 가상선으로 이동하고 있는 것으로 도시되어 있다. 제10도내에서, 커서(200)는 폴더 "Bill"상에 배치되는 것으로 도시되어 있다.
버튼(27)이 해제될 때, 작동 프로세서(101)는 의미 코맨드 "MOVE_TO Folder 'Bill'"을 발생시킨다. 의미 코맨드는 이미 선택된 목적 "Joe"가 폴더 "Bill"로 전달되게 하는 코맨드 프로세서(102)로 보내진다. 제11도는 목적 "Joe"가 폴더 "Bill"내에 있는 전달 완료 상태가 도시되어 있다. 외부형태로의 번역 프로세서(129)는 외부 형태로된 코맨드를 출력시켜, 이것을 클래스 독립 기록기(125)로 보내므로, 작업언어 파일내에 코맨드를 기록하는 클래스 독립 기록기(126)로 보낸다. 폴더 "Bill"이 제12도에 도시된 바와 같이 개방될 때, 목적 "Joe"를 볼 수 있다.
이 경우에, 외부 형태로의 번역 프로세서(129)는 목적 "Joe" 또는 "Bill"에 관한 부수적인 정보를 얻을 수 없는데, 그 이유는 응용 "NewWave Office"가 목적 "Joe" 및 폴더 "Bill"이 이것의 탁상위에 있다는 것을 나타내는 정보를 갖기 때문이다. 부수적으로, 응용(100) "NewWave Office"는 폴더 "Bill"이 폐쇄된다는 것을 안다.
폴더 "Sam"내의 목적 "Joe"의 배치는 상기 설명과 유사하다. 제8도내에서는, 윈도우(205)가 작동하고 있다. 커서(200)는 윈도우(205)내에서 자유롭게 이동될 수 있다. 커서(200)는 윈도우(205)내에서 자유롭게 이동될 수 있다. 버튼(27)이 눌려질 때, 작동 프로세서(101)는 커서(200)가 현재 좌표 위치에 무엇이 존재하는지를 알아보기 위해 검사한다. 버튼(27)이 눌려질 때 커서(200)가 목적 "Joe"상에 배치되는 경우, 작동 프로세서(101)는 목적 "Joe"가 커서(200)의 위치에 있는 것을 발견한다. 이때, 작동 프로세서(101)는 의미 코맨드 "Select Document 'Joe'"를 발생시킨다. 의미 코맨드는 재생 메시지 검사부품(150), 코맨드 인터페이스 부품(146), 모드 진단 박스 검사 부품(152), 및 코맨드 검사 부품(151)을 통해, 의미 코맨드를 실행하는 코맨드 프로세서(102)로 제공된다. 의미 코맨드는 또한 복귀 인터페이스 부품(147)에 의해 수신되어, 외부 형태로의 번역 프로세서(129)로 보내진다. 외부 형태로의 프로세서는 외부 형태로된 코맨드를 출력시켜, 이것을 클래스 독립 기록기(125)로 보내므로, 작업 언어 파일내에 코맨드를 기록하는 클래스 종속 기록기(126)로 보낸다.
마우스(20)가 이동될 때, 구문 사용자 작동은 작동 프로세서(101)로 계속 보내진다. 작동 프로세서는 커서(200)의 좌표 위치 트랙을 계속 유지한다. 제13도내에는, 커서(200)가 윈도우(204)내에 배치되어 있는 것으로 도시되어 있다. 버튼(27)이 해제될 때, 작동 프로세서(101)는 MOVE_TO Folder "Sam" 코맨드를 발생시킨다. 의미 코맨드는 이미 선택된 목적 "Joe"를 폴더 "Bill"로 전달되게 하는 코맨드 프로세서(102)로 보내진다. 의미 코맨드는 복귀 인터페이스 부품(147)에 의해서 수신되어, 외부 형태로의 번역 프로세서(129)로 보내진다. 외부 형태로의 번역 프로세서(129)는 "API_INTERROGATE_MSG"를 보낸다. 메시지의 기능은 "API_ WHO_ARE_YOU_FN"이다. 이 메시지로 인해, 외부 형태로의 번역 프로세서(129)는 폴더 "Sam"용 개방 윈도우가 커서(200)의 위치에 있다는 것을 나타내는 복귀된 데이터를 얻는다. 외부 형태로의 번역 프로세서(129)는 다른 "API_INTERROGATE_ MSG"를 보낸다. 메시지의 기능은 다시 "API_WHATS_INSERTABLE_AT_FN"이다. 커서(200) 위치에서의 윈도우(204)내에 아무것도 없기 때문에, 부수적인 엔티티(entity)가 식별되지 않는다. "API_INTERROGATE_MSG"이 다른 설명은 부록 C를 참조하기 바란다.
외부 형태로의 번역 프로세서는 외부 형태로 된 코맨드를 출력시켜, 이것을 클래스 독립 기록기(25)로 보내므로, 클래스 독립 기록기(126)로 보내고, 코맨드는 작업 언어 파일(131)내에 기록된다. 제14도는 목적 "Joe"가 윈도우(204)내에 있는 전달 완료 결과를 도시한 것이다.
이와 마찬가지로, 목적 "Joe"는 폴더 "Fred"로 전달될 수 있었다. 제15도내에서, 커서(200)는 윈도우(204)내의 폴더 "Fred"상에 배치되어 있는 것으로 도시되어 있다. 버튼(27)이 해제될 때, 작동 프로세서(101)은 의미 코맨드 "MOVE_ TO Folder 'Fred' WITHIN Folder 'Sam'"을 발생시킨다. 의미 코맨드는 이미 선택된 목적 "Joe"가 폴더 "Sam"내의 폴더 "Fred"로 전달되게 하는 코맨드 프로세서(102)로 보내진다. 의미 코맨드는 복귀 인터페이스 부품(147)에 의해서 수신되어, 외부 형태로의 번역 프로세서(129)로 보내진다.
외부 형태로의 번역 프로세서(129)는 다음과 같은 방식으로 외부 형태로된 코맨드를 출력시킨다. 외부 형태로의 번역 프로세서(129)는 "API_INTERROGATE_ MSG"를 보낸다. 메시지의 기능은 "API_WHATS_INSERTABLE_AT_FN"이다. 이 메시지가 발생될 때, 외부 형태로의 번역 프로세서(129)는 폴더 "Fred"가 커서(200)의 위치에 있다는 것을 나타내는 복귀 메시지를 수신한다. 외부 형태로의 번역 프로세서는 다른 "API-INTERROGATE_MSG"를 보낸다. 메시지의 기능은 "API_ WHO_ YOU_ FN"이다. 이 메시지가 발생될 때, 외부 형태로의 번역 프로세서(129)는 폴더 "Sam"이 커서(200)의 위치에 있다는 것을 나타내는 복귀 데이터를 수신한다.
이때, 외부 형태로의 번역 프로세서는 외부 형태로된 코맨드를 API(130)을 통해 클래스 독립 기록기(125) 및 클래스 종속 기록기(126)로 보낼 수 있다. 클래스 독립 기록기(126)는 작업 언어 파일(131)내에 외부 코맨드를 기록한다. 제16도는 목적 "Joe"가 폴더 "Fred"내에 있는 전달 완료 상태를 도시한 것이다. 폴더 "Fred"가 제17도에 도시된 바와 같이 개방될 때, 목적 "Joe"를 볼 수 있다.
작업 언어 파일내에 있을 때, 목적 "Joe"를 폴더 "Fred"로 전달된 코맨드는 재생될 수 있다. 예를 들면, 윈도우(205)가 제18도에 도시된 바와 같이 나타난다고 가정한다. 윈도우(204), 목적 문구 "Joe" 및 폴더 "Fred"가 모두 윈도우(205)내의 상이한 위치에 있기 때문에, 구문 사용자 작동의 재생은 목적 "Joe"가 폴더 "Fred"내에 배치되지 않게 한다. 그러나, 기록된 것은 구문 사용자 작동이 아니라 알 수 없지만 의미 코맨드였다. 그러므로, 의미 코맨드의 재생은 목적 "Joe"가 폴더 "Fred"내에 배치되게 한다.
특히, 작업 언어 파일의 다음과 같은 코맨드를 포함하였다고 가정한다.
FOCUS on Desktop "NewWave Office"
SELECT Document "Joe"
MOVE_TO Folder "Fred WITHIN Folder Sam."
클래스 독립 코맨드이고, 제5도에 도시된 바와 같이 작업 언어 컴파일러(120)에 의해 컴파일될 때의 FOCUS on Desktop "NewWave Office"는 에이전트(108)에 의해 수행될 수 있다. 후술한 바와 같이, FOCUS 코맨드는 응용 "NewWave Office"상에 초점(focus)를 맞춘다. 이것은 작업 언어 코맨드가 가능한 경우 클래스 종속 코맨드로서 처리되어 수행되기 위해 응용 "NewWave Office"로 보내질 것이라는 것을 의미한다. 간단히 설명하기 위해, 응용 "NewWave Office"를 응용(100)이라 한다.
제2 및 제3코맨드, 즉 SELECT Document "Joe" 및 MOVE TO Folder "Fred" WITHIN Folder "Sam"은 클래스 종속 코맨드이다. 작업 언어 컴파일러(120)에 의해 P 코드 형태로 컴파일된 때의 이 클래스 종속 코맨드들은 에이전트 엔진(108)에 의해 수신된다. 에이전트 엔진은 P 코드 형태로부터 외부 형태로된 클래스 코맨드를 수출하고, 클래스 종속 코맨드를 응용(100)으로 보낸다. 응용(100)의 사용자 작동 부품(145)은 외부 코맨드를 포함하는 메시지를 수신하여, 이 메시지를 재생 메시지 검사 부품(150)으로 전송한다. 재생 메시지 검사 부품(150)은 코맨드를 내부형태의 번역 프로세서(128)로 보낸다. 내부 형태로의 번역 프로세서(128)은 코맨드를 외부 형태로부터 내부 형태로 번역하여, 내부 형태로 된 코맨드를 재생 검사 부품(150)으로 복귀시킨다. 그 다음, 내부 형태로된 코맨드는 코맨드 인터페이스 부품(146), 모드 진단 박스 검사 부품(152), 및 코맨드 검사 부품(151)을 통해 코맨드 프로세서(102)로 보내진다. 코맨드 프로세서(102)는 코맨드를 수행한다.
에이전트(108)는 윈도우(205)를 작동시킴으로써 코맨드 "FOCUS on Desktop 'NewWave Office'"를 수행한다. 커서(200)의 위치는 윈도우(205)의 좌표에 관련하여 결정된다.
코맨드 프로세서(102))가 코맨드 "SELECT Document 'Joe'"를 수신할 때, 코맨드 프로세서(102)는 "Joe"가 선택되게 한다. 목적 "Joe"가 윈도우 내에 있기 때문에, 부수적인 질문이 불필요하다.
코맨드 "MOVE_TO Folder 'Fred' WITHIN Folder 'Sam'"용의 내부 코맨드 형태를 구성할 때, 외부 형태로의 번역 프로세서(128)는 "API_ INTERROGATE MSG"를 각 개방 윈도우로 보낸다. 메시지의 기능은 "API_WHO_ARE_YOU_FN"이다.
Folder "Sam"용 윈도우가 이 메시지를 수신할 때, 이것은 "Folder 'Sam'"에 응답한다. 내부 형태로의 번역 프로세서(128)는 다른 "API_INTERROGATE_MSG"를 보낸다. 메시지의 기능은 "API_ WHERS_ IS_TN"이다. 폴더 "Fred"는 파라메터로서 포함된다. 메시지는 윈도우(204)내의 폴더 "Fred"의 좌표를 나타내는 데이터를 복귀시키는 폴더 "Sam"으로 전송된다. 그 다음, 내부 형태로의 번역 프로세서(128)은 코맨드 MOVE_TO 'Fred' WITHIN Folder "Sam"의 내부 형태를 발생시킨다. 코맨드 프로세서(102)는 코맨드를 수신하고, 목적 "Joe"를 폴더 "Fred"로 전달한다.
작업 언어 파일(121)은 기록에 의해서 뿐만 아니라, 사용자에 의해 기입된 컴파일된 코드에 의해 발생될 수 있다. 제5도내에는, 작업 언어 컴파일러(120)를 통하는 데이터 흐름이 도시되어 있다. 본 발명의 양호한 실시예내에서, 작업 언어는 본 명세서의 부록 B로서 첨부된 Agent Task Language Guidelines에 따라서 기입된다.
작업 언어 컴파일러(120)은 2개의 패스(pass) 컴파일러이다. 제1패스 컴파일러내에서, 사용된 루틴은 입력 스트림(stream) 프로세서(164), 표현식(expression) 파서(166), 클래스 독립 파서(122), 기억(save) 파일 버퍼(171), 제2패스 루틴, 및 클래스 종속 파서(123, 167 및 168)로 도시된 클래스 종속 파서를 포함한다. 제1패스의 결과로서, 임시 파일(176)이 만들어진다.
클래스 독립 파서(122)는 부록 B에 기재된 클래스 독립 작업 언어 코맨드를 분석한다. 또한, 시스템상에서 실행되는 각 응용은 이것이 수행하는 특수 코맨드를 갖고 있다. 그러므로, 각 응용의 경우, 별도의 클래스 종속 파서가 개발된다. 이 파서는 개발 목적의 응용에 의해 수행될 코맨드를 분석할 수 있다. 클래스 종속 파서들은, 응용이 시스템에 추가되거나 이로부터 삭제될 때 작업 언어 컴파일러(120)에 추가되거나 이로부터 삭제될 수 있다.
컴파일러링을 개시할 때, 클래스 독립 파서(122)는 입력 스트림 프로세서(164)로부터의 토큰(token)을 요구한다. 입력 스트림 프로세서(164)는 작업 언어 파일(131)을 스캔하여, 토큰을 발생시킨다. 그다음, 클래스 독립 파서(122)는 몇 가지 기능들 중 한가지 기능을 행한다. 클래스 독립 파서(122)는 파일 버퍼(177)에 기억되기 위해 보내질 P 코드를 발생시킬 수 있다. 클래스 독립 파서(122)가 표현 식으로될 다음 토큰을 기대할 경우, 클래스 독립 파서(122)는 표현식 파서(166)를 호출하는 루틴 Make Expression( )을 호출한다. 표현식 파서(166)는 식이 완료될 때까지 입력 스트림 프로세서(146)로부터의 토큰을 요구한다. 그 다음, 표현식 파서(166)는 파일 버퍼(171)로 보내진 다음, 임시 파일(176)내에 기억될 P 코드를 발생시킨다. 부수적으로 표현식 파서(166)는 입력 스트림 프로세서(164)로 복귀되는 표현식 토큰을 발생시킨다. 입력 스트림 프로세서(164)는 독립 파서(122)에 의해 요구될 때 이 표현식을 독립 파서(122)로 전달한다.
FOCUS 코맨드의 결과로서, 특정한 클래스 종속 파서는 우선권을 갖게 된다. 그러므로, 이것의 분석루프내에서, 클래스 독립 스캐너(122a)는 현재 초점이 맞추어진 응용용 클래스 종속 파서를 호출한다. 클래스 종속 파서는 클래스 종속 파서에 의해 호출된 의미 루틴들이 외부 코맨드 형태로 변환시키는 클래스 종속 코맨드를 수신할 때까지, 또는 수신한 표현식을 분석할 수 없다는 것을 클래스 종속 파서가 결정할 때까지 입력 스트림 프로세서(164)로부터의 토큰을 요구한다. 클래스 종속 파서가 표현식을 만나면 이것은 호출 Make Expression( )을 사용하여 표현식 파서(166)를 불러낼 수 있다. 클래스 종속 파서가 수신하는 토큰을 분석하지 못할 경우, 클래스 종속 파서는 에러를 복귀시키고, 클래스 독립 파서는 토큰을 분석하게 된다.
FOCUS OFF 코맨드는 모든 코맨드를 종속 파서로 보내지 않고서 모든 코맨드를 즉시 분석하는 독립 파서(122)를 발생시키게 된다. 클래스 독립 코맨드의 스트링(string)이 분석되고 있을 때, 이것은 종속 파서 소프트웨어의 불필요한 실행을 방지할 수 있으므로, 작업 언어를 컴파일하는데 필요한 컴퓨팅 시간을 절약하게 된다.
제19도내에는, 종속 파서(123) 및 종속 파서(124)인 종속 파서와 독립 파서(122) 사이에서의 데이터 흐름이 도시되어 있다. 파서들간의 관계를 중점적으로 설명하기 위해, 스캐너(122a)에 의한 표현식 파서(166)의 호출에 대해서는 제19도 설명시에 고려하지 않는다.
독립 파서(122)가 토큰을 대기하고 있을 때, 독립 파서(122)는 스캐너 루틴(122a)을 호출한다. 스캐너(122a)는 응용상에 초점이 맞추어져 있는 경우를 검사한다. 응용상에 초점이 맞추어져 있지 않을 경우, 스캐너(122a)는 토큰을 스캐너(122a)로 복귀시키는 입력 스트림 프로세서(164)를 호출한다. 스캐너(122a)는 토큰을 독립 파서(122a)로 복귀시킨다.
응용상에 초점이 맞추어져 있는 경우, 응용용 종속 파서는 선행하여 호출된다. 예를 들면, 초점이 파서(123)용 응용상에 맞추어져 있을 때, 파서(123)는 종속 스캐너(122a)를 통해 스캐너(122a)를 호출한다. 스캐너(122a)는 이것의 상태를 검사하여, 이것이 종속 파서에 의해 호출될지를 결정하므로, 이것은 다른 종속 파서를 반복적으로 호출하지 않는다. 스캐너(122a)는 토큰을 스캐너(122a)로 복귀시키는 입력 스트림 프로세서(164)를 호출한다. 스캐너(122a)는 토큰을 종속 스캐너(123a)를 통해 종속 파서(123)로 복귀시킨다. 본 발명의 현재 실행이 종속 스캐너(123a)를 포함하고 있지만, 다른 실행시에, 종속 스캐너(123a)는 제거될 수 있고, 파서(123)는 스캐너(122a)를 직접 호출할 수 있다.
종속 파서(123)는 종속 파서(123)이 수신하는 토큰을 분석할 수 있는 한 종속 스캐너(123a)를 통한 토큰을 계속 요구하게 된다. 이들 토큰으로, 종속 파서는 P 코드내에 매입된 클래스 종속 외부 명령을 발생시키는 의미 루틴을 호출한다. 종속 파서(123)가 수신하는 토큰을 분석할 수 없을 때, 종속 파서는 에러를 스캐너(122a)로 복귀시킨다. 그 다음, 스캐너(122a)는 입력 스트림 프로세서(164)를 호출하고, 종속 파서(123)가 분석할 수 없었던 토큰을 입력 스트림 프로세서(164)로부터 수신한다. 이 토큰은 독립 파서(122)로 복귀된다. 독립 파서(122)는 토큰을 분석하여, 에이전트(108)에 의한 수행용 P 코드를 발생시키기 위해 의미 루틴을 호출한다. 독립 파서(122)가 스캐너(122a)로부터 토큰을 요구한 후, 스캐너(122a)는 FOCUS OFF 코맨드가 있거나 다른 응용상에 초점이 맞추어질 때까지 종속 파서(123)를 다시 호출한다.
초점이 종속 파서(124)용 응용상에 맞추어질 때, 스캐너(122a)는 종속 파서(124)를 호출한다. 종속 파서(124) 종속 스캐너(124a)를 호출하여, 종속 스캐너(123)와 유사하게 동작한다.
제5도에 도시된 기억 파일 버퍼(171)는 클래스 독립 파서(122) 및 표현식 파서(166)로부터 P 코드를 수신하고, 클래스 종속 파서로부터 P 코드내에 매입된 외부 코맨드 형태를 수신한다. 기억 파일 버퍼(171)는 이 정보를 임시 파일(176)내에 기억시킨다. 제2패스 루틴(174)은 임시 파일(176)내에 기억된 P 코드 및 외부 코맨드 형태를 취하고, 작업 언어 파일(121)을 발생시키기 위해서 보조 관리(housekeeping)를 발생, 예를 들어 어드레스등을 고정시킨다.
부록 A는 API(130)의 소개를 포함한다(Programmer's Fuide chapter 4).
부록 B는 에이전트 작업 언어를 발생시키기 위한 안내문을 포함한다(Agent Task Language Guideline).
부록 C는 Task Language Internals의 설명을 포함한다.
부록 D는 API_INTERROGATE_MSG의 설명을 포함한다.

Claims (10)

  1. 다수의 응용 및 에이전트 엔진을 갖고 있는 컴퓨팅 시스템내에서, 에이전트 엔진에 의해 수행될 코맨드를 포함하는 프로그램 코드를 분석하기 위한 클래스 독립 파서, 및 다수의 응용으로부터의 한 응용과 각각 관련되고, 관련된 응용에 의해 수행될 코맨드를 포함하는 프로그램 코드를 각각 분석할 수 있으며, 관련된 응용이 컴퓨팅 시스템에 추가될 때 모듈러 컴파일러에 각각 추가되고, 관련된 응용이 컴퓨팅 시스템으로부터 제거될 때 모듈러 컴파일러로부터 각각 제거되는 다수의 클래스 종속 파서를 포함하는 것을 특징으로 하는 모듈러 컴파일러.
  2. 제1항에 있어서, 소오스 파일 포함 코드를 스캔하고, 클래스 독립 파서, 및 다수의 클래스 종속 파서내의 각각의 클래스 종속 파서로 토큰을 전달하는 스캐너, 및 표현식을 분석하고 표현식 토큰을 스캐너로 복귀시키는 클래스 독립 파서 및 각각의 클래스 종속 파서에 의해 호출된 표현식 파서를 포함하는 것을 특징으로 하는 모듈러 컴파일러.
  3. 다수의 응용 및 에이전트 엔진을 갖고 있는 컴퓨팅 시스템내에서, 에이전트 엔진에 의해 수행될 코맨드를 포함하는 프로그램 코드를 분석하기 위한 클래스 독립 파서, 제1스캐너 루틴이 클래스 독립 파서에 의해 호출될 때 토큰을 클래스 독립 파서로 복귀시키는 제1스캐너 루틴, 제1스캐너 루틴에 의해 호출되고, 상이한 셋트의 코맨드를 각각 분석하는 다수의 클래스 종속 파서, 각 클래스 종속 파서가 자체 스캐너 루틴을 호출하도록 다수의 클래스 종속 파서로부터의 한 클래스 종속 파서에 의해 하나의 스캐너 루틴이 호출되고, 호출된 스캐너 루틴이 토큰을 호출 클래스 종속 파서로 복귀시키는 다수의 스캐너 루틴, 및 입력 스트림 프로세서를 호출하는 스캐너 루틴으로 토큰을 복귀시키는 다수의 스캐너 루틴으로부터의 각각의 스캐너 루틴 및 제1스캐너 루틴에 의해 호출된 입력 스트림 프로세서를 포함하는 것을 특징으로 하는 모듈러 컴파일러.
  4. 제3항에 있어서, 표현식을 분석하는 클래스 독립 파서 및 각각의 클래스 종속 파서에 의해 호출된 표현식 파서를 포함하는 것을 특징으로 하는 모듈러 컴파일러.
  5. 제3항에 있어서, 제1스캐너 수단은 호출하기 위한 클래스 종속 파서들 중 하나의 파서와 입력 스트림 프로세서를 결정하기 위한 초점 수단을 포함하는 것을 특징으로 하는 모듈러 컴파이러.
  6. 제3항에 있어서, 클래스 종속 파서들중 한개의 파서가 에러를 복귀시킬 때, 제1스캐너 루틴이 입력 스트림 프로세서를 호출하여, 입력 스트림 프로세서로부터 수신된 토큰을 클래스 독립 파서로 복귀시키는 것을 특징으로 하는 모듈러, 컴파일러.
  7. 컴퓨팅 시스템내에서, 에이전트 엔진 및 상이한 셋트의 코맨드를 각각 수행할 수 있는 다수의 응용에 의해 수행될 코맨드로 프로그램 코드를 컴파일하기 위한 방법에 있었서, (a) 클래스 독립 파서를 사용하여 에이전트 엔진에 의해 수행될 코맨드를 포함하는 프로그램 코드를 분석하는 스템, 및 (b) 응용에 관련된 클래스 종속 파서로 응용에 의해 수행될 코맨드를 포함하는 프로그램 코드를 분석하는 스텝을 포함하는 것을 특징으로 하는 방법.
  8. 컴퓨팅 시스템내에서, 클래스 독립 파서, 최소한 1개의 클래스 종속 파서, 독립 파서용 클래스 독립 스캐너 루틴 및 각각의 종속 파서용 클래스 종속 스캐너 루틴을 사용하여 코드를 발생시키기 위한 방법에 있어서, (a) 독립 파서로부터 클래스 독립 스캐너 루틴을 호출하는 스텝, (b) 제1클래스 종속 파서가 우선권을 가질때, (b.1) 클래스 독립 스캐너 루틴으로부터 제1클래스 종속 파서를 호출하는 서브스텝, (b.2) 제1클래스 종속 파서로부터, 제1클래스 종속 파서용 제1클래스 종속 스캐너를 최소한 한번 호출하는 서브스텝, (b.3) 제1클래스 종속 파서가 제1클래스 종속 스캐너를 호출할 때마다 제1클래스 종속 스캐너로부터 제1클래스 종속 파서로 토큰을 복귀시키는 서브스텝, (b.4) 제1클래스 종속 파서로부터 수신된 토큰을 제1클래스 종속 파서로 분석하는 서브스텝, (b.5) 제1클래스 종속 파서가 제1클래스 종속 스캐너로부터 수신된 토큰을 분석할 수 없을 때 제1클래스 종속 파서로부터 클래스 독립 스캐너 루틴으로 에러를 복귀시키는 서브스텝을 실행하는 스텝, 및 (c) 클래스 독립 스캐너 루틴으로부터 클래스 독립 파서로 토큰을 복귀시키는 스텝을 포함하는 것을 특징으로 하는 방법.
  9. 제8항에 있어서, 서브스텝(b.4)가 (b.4.a) 제1클래스 종속 파서가 제1클래스 종속 스캐너로부터 수신된 토큰을 분석할 수 있을 때, 코드내에 미입되고, 에이전트 엔진에 의해 추출되며, 수행되기 위해 응용으로 전송되는 응용 종속 코맨드를 발생시키기 위해 의미 루틴을 호출하는 서브스텝을 포함하는 것을 특징으로 하는 방법.
  10. 제9항에 있었서, (d) 독립 파서가 스캐너로부터 토큰을 분석할 수 있을 때, 에이전트에 의해 수행하기 위한 코드를 발생시키기 위해 의미 루틴을 호출하는 스텝을 포함하는 것을 특징으로 하는 방법.
KR1019890006886A 1988-05-23 1989-05-23 클래스 독립 파서 및 다수의 클래스 종속 파서를 갖고 있는 모듈러 컴파일러 KR970007760B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/197,795 US4914585A (en) 1988-05-23 1988-05-23 Modular complier with a class independent parser and a plurality of class dependent parsers
US197,795 1994-02-15

Publications (2)

Publication Number Publication Date
KR900018809A KR900018809A (ko) 1990-12-22
KR970007760B1 true KR970007760B1 (ko) 1997-05-16

Family

ID=22730798

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019890006886A KR970007760B1 (ko) 1988-05-23 1989-05-23 클래스 독립 파서 및 다수의 클래스 종속 파서를 갖고 있는 모듈러 컴파일러

Country Status (9)

Country Link
US (1) US4914585A (ko)
EP (1) EP0343883B1 (ko)
JP (1) JP2842889B2 (ko)
KR (1) KR970007760B1 (ko)
CN (1) CN1018206B (ko)
AU (1) AU617776B2 (ko)
CA (1) CA1331887C (ko)
DE (1) DE68926835T2 (ko)
HK (1) HK33197A (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5276880A (en) * 1989-12-15 1994-01-04 Siemens Corporate Research, Inc. Method for parsing and representing multi-versioned computer programs, for simultaneous and synchronous processing of the plural parses
US5204960A (en) * 1990-01-08 1993-04-20 Microsoft Corporation Incremental compiler
WO1993000776A1 (en) * 1991-06-28 1993-01-07 Telefonaktiebolaget Lm Ericsson Application modularity in telecommunications exchanges
US5386570A (en) * 1993-05-24 1995-01-31 Hewlett-Packard Company Method for a two pass compiler with the saving parse states from first to second pass
KR100404274B1 (ko) * 1994-09-30 2004-04-30 코닌클리케 필립스 일렉트로닉스 엔.브이. 멀티플랫폼인터프리터를포함한응용프로그램을포함하는대량데이타의표현을수신하는멀티미디어시스템,상기멀티플랫폼인터프리터와상호작용하는플랫폼서브시스템및,그시스템또는서브시스템용대용량메모리
US6401080B1 (en) 1997-03-21 2002-06-04 International Business Machines Corporation Intelligent agent with negotiation capability and method of negotiation therewith
US6192354B1 (en) 1997-03-21 2001-02-20 International Business Machines Corporation Apparatus and method for optimizing the performance of computer tasks using multiple intelligent agents having varied degrees of domain knowledge
TW504632B (en) 1997-03-21 2002-10-01 Ibm Apparatus and method for optimizing the performance of computer tasks using intelligent agent with multiple program modules having varied degrees of domain knowledge
US6085178A (en) * 1997-03-21 2000-07-04 International Business Machines Corporation Apparatus and method for communicating between an intelligent agent and client computer process using disguised messages
US5991539A (en) * 1997-09-08 1999-11-23 Lucent Technologies, Inc. Use of re-entrant subparsing to facilitate processing of complicated input data
KR20010076775A (ko) * 2000-01-28 2001-08-16 오길록 스크립트 자동 생성 에이전트 및 그 방법
US7089541B2 (en) * 2001-11-30 2006-08-08 Sun Microsystems, Inc. Modular parser architecture with mini parsers
US7480657B1 (en) * 2003-01-06 2009-01-20 Cisco Technology, Inc. Caching information for multiple service applications
US8334995B2 (en) * 2007-09-19 2012-12-18 Sharp Laboratories Of America, Inc. Method and system for adaptive control of imaging node
CN102012900B (zh) * 2009-09-04 2013-01-30 阿里巴巴集团控股有限公司 信息检索方法和系统
US10379825B2 (en) 2017-05-22 2019-08-13 Ab Initio Technology Llc Automated dependency analyzer for heterogeneously programmed data processing system

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4787035A (en) * 1985-10-17 1988-11-22 Westinghouse Electric Corp. Meta-interpreter
CA1267229A (en) * 1986-03-10 1990-03-27 Randal H. Kerr Reconfigurable automatic tasking system

Also Published As

Publication number Publication date
CA1331887C (en) 1994-09-06
AU617776B2 (en) 1991-12-05
US4914585A (en) 1990-04-03
JPH0237455A (ja) 1990-02-07
CN1037977A (zh) 1989-12-13
JP2842889B2 (ja) 1999-01-06
DE68926835D1 (de) 1996-08-22
EP0343883A3 (en) 1990-07-11
EP0343883B1 (en) 1996-07-17
HK33197A (en) 1997-03-27
CN1018206B (zh) 1992-09-09
EP0343883A2 (en) 1989-11-29
DE68926835T2 (de) 1996-11-21
KR900018809A (ko) 1990-12-22
AU3151789A (en) 1989-11-23

Similar Documents

Publication Publication Date Title
US6434629B1 (en) Computing system which implements recording and playback of semantic commands
US5317688A (en) Software agent used to provide instruction to a user for a plurality of computer applications
KR970007760B1 (ko) 클래스 독립 파서 및 다수의 클래스 종속 파서를 갖고 있는 모듈러 컴파일러
CN100590604C (zh) 可插部件上的断点调试
KR100431169B1 (ko) 소프트웨어 프로그램의 텍스트 데이터 편집방법, 컴퓨터시스템 및 컴퓨터 프로그램 제품
KR101213843B1 (ko) 원활한 객체 비교 시스템 및 방법
KR20060046326A (ko) 컴퓨터-판독가능 매체
EP3491527B1 (en) Debugging tool for a jit compiler
US20050177775A1 (en) Data race detection using sequential program analysis
US20030191559A1 (en) System and method for generating a set of robot commands based on user entry events in a user interface
JP5047621B2 (ja) 対話環境における構文への制約を入手し適用する機構
JP2007519073A (ja) 管理用ツール環境
Gisi et al. Extending a tool integration language
US8108829B2 (en) Method for automating variables in end-user programming system
JP2007509407A (ja) コマンドライン命令への拡張機能を提供する機構
JP2007510203A (ja) 部分的に未解決の入力を分析する機構
EP0352908A2 (en) Computing system and method used to provide instruction to a user for a plurality of computer applications
Cook Applescript
Zeigler et al. Ada for the Intel 432 microcomputer
Lippman C# primer: a practical approach
Tribou et al. Millipede: A Multilevel Debugging Environment for Distributed Systems.
KFKI-MSZKI et al. Visual Programming
Mackert et al. A generalized conformance test tool for communication protocols
Curbow et al. William R. Cook, University of Texas at Austin
Al-Sharif et al. UDB: An Agent-Oriented Source-Level Debugger

Legal Events

Date Code Title Description
A201 Request for examination
G160 Decision to publish patent application
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20070208

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee