KR20010106514A - Method and system for an extensible macro language - Google Patents

Method and system for an extensible macro language

Info

Publication number
KR20010106514A
KR20010106514A KR1020017004671A KR20017004671A KR20010106514A KR 20010106514 A KR20010106514 A KR 20010106514A KR 1020017004671 A KR1020017004671 A KR 1020017004671A KR 20017004671 A KR20017004671 A KR 20017004671A KR 20010106514 A KR20010106514 A KR 20010106514A
Authority
KR
South Korea
Prior art keywords
macro
language
keywords
keyword
code
Prior art date
Application number
KR1020017004671A
Other languages
Korean (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 KR20010106514A publication Critical patent/KR20010106514A/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99936Pattern matching access
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing

Abstract

A method and system for an extensible macro language is provided. The system for providing the extensible macro language includes a parser and a macro handler for processing macro commands not previously defined in the macro language. The parser analyzes keywords in a macro language expression and recognizes one or more keywords representing macro commands that were not previously defined in the macro language. The macro handler receives the keywords in the macro expression and retrieves from a registry of keywords, an executable code or procedure associated with the keyword. The executable code is run to process the macro command represented by the keyword. The template language registry may be augmented to include any keywords and associated codes for extending the macro language.

Description

확장 가능한 매크로 언어를 위한 방법 및 시스템{METHOD AND SYSTEM FOR AN EXTENSIBLE MACRO LANGUAGE}METHOD AND SYSTEM FOR AN EXTENSIBLE MACRO LANGUAGE}

매크로는 소정 작업을 수행하도록 재생될 수 있는 일련의 명령이다. 이러한 작업들의 예는 공통 사용된 명(名)과 주소를 워드 프로세서내에 삽입하거나 또는 파일을 포맷하기 위해 일련의 키스트로크를 수행하는 것을 포함한다. 매크로로 수행된 작업들은 통상 수동으로 명령을 반복하는 대신에 매크로를 실행함으로써 시간을 현저하게 줄이는 것을 가능하게 하는 특성이 반복된다.A macro is a series of instructions that can be played back to perform a given task. Examples of such tasks include inserting a commonly used name and address into a word processor or performing a series of keystrokes to format a file. Tasks performed with macros are typically repeated in a property that makes it possible to significantly reduce time by executing macros instead of manually repeating commands.

현재, 상이한 응용 프로그램은 유저로 하여금 허용된 영역의 범위내에서, 즉 특정 응용 프로그램의 범위내에서 매크로 및 스크립트를 기록하게 한다. 예를 들면, 프로세서는 통상 유저로 하여금 나중에 재생될 일련의 키스트로크를 기록함으로써 매크로를 작성 가능하게 한다. 다른 응용 프로그램은 유저로 하여금 응용 프로그램의 범위내에서 데이터를 검색하고 조정하기 위한 매크로를 작성 가능하게 한다. 그러므로, 이러한 응용 프로그램은 제한된 매크로 세트, 예컨대 키스트로크를 기록하기 위한 매크로, 데이터를 검색하기 위한 매크로를 포함한다. 이때 유저는 통상 응용 프로그램에 의해서 제공된 매크로에 제한된다.Currently, different applications allow users to record macros and scripts within the scope of the allowed area, ie within the scope of a particular application. For example, a processor typically allows a user to create a macro by recording a series of keystrokes to be reproduced later. Other applications allow users to write macros to retrieve and manipulate data within the scope of the application. Therefore, such applications include a limited set of macros, such as macros for recording keystrokes, and macros for retrieving data. The user is usually limited to macros provided by the application program.

그러나, 흔히 응용 프로그램을 사용하는 유저는 사전에 제공되지 않는 응용 프로그램에서 유저가 매크로로서 포함하고 싶어하는 지시 또는 명령의 특정 세트를 가진다. 매크로는 통상 응용 프로그램 또는 응용 프로그램에 포함된 매크로 언어내에 하드 코딩되므로, 응용 프로그램내에 추가 매크로를 포함하도록 현재 이용 가능한 유일의 가용한 방법은 새로운 매크로를 사용할 수 있기 전에 소스 코드를 수정해서 그것을 다시 컴파일함으로써 응용 프로그램내에서 새로운 매크로를 하드 코딩하는 것이다. 그러나, 보통 이것은 유저에게는 수정하려는 응용 프로그램 또는 매크로 언어의 소스 코드로의 엑세스가 주어지지 않았기 때문에 문제점이 있다. 게다가, 그것은 유저가 갖길 원하는 매크로를 포함하도록 응용 프로그램을 맞춤화하여 개개의 유저의 선호도에 맞추려는 응용 프로그램 개발자들에게는 큰 짐이 될 것이다.Often, however, a user using an application has a specific set of instructions or commands that the user wants to include as a macro in an application that is not provided in advance. Macros are usually hard coded in the application or macro language included in the application, so the only available method currently available to include additional macros in the application is to modify the source code and recompile it before the new macro is available. By hard coding new macros in your application. However, this is usually a problem because the user is not given access to the source code of the application or macro language to be modified. In addition, it would be a heavy burden for application developers to customize their applications to include the macros they want to have, to suit individual user preferences.

그러므로, 매크로 언어를 이용할 때 유저로 하여금 유저의 선호도를 포함하도록 언어를 수정하고 확장 가능하게 하는 확장 가능한 매크로 언어를 갖는 것이 아주 바람직하다. 게다가, 유저로 하여금 소스 코드가 유저에게 분배되지 않는 특허 특성으로서 취급되기 때문에 매크로 언어의 소스 코드를 수정하거나 액세스하지 않고 매크로를 확장 가능하게 하는 것이 매우 바람직하다.Therefore, it is highly desirable to have an extensible macro language that allows the user to modify and extend the language to include the user's preferences when using the macro language. In addition, it is highly desirable to allow macros to be extended without modifying or accessing the source code of the macro language because the user is treated as a patent feature that the source code is not distributed to the user.

본 출원은 1998년 10월 16일자로 출원된 발명의 명칭이 모델링 도구 시스템 및 방법인 미국 특허 출원 제60/104,682호의 출원일의 이익을 향유한다.This application enjoys the benefit of the filing date of US Patent Application No. 60 / 104,682, entitled Modeling Tools System and Method, filed October 16,1998.

본 출원은 여기서 참조 문헌으로 결합되고 있는 동일자로 제출된 발명의 명칭이 2개 이상의 모델간 차이를 결정하기 위한 방법인 동시 계류 중인 미국 특허 제60/104,682호와 관련이 있다.This application is related to co-pending U. S. Patent No. 60 / 104,682, which is a method for determining differences between two or more models whose name is filed herein as incorporated by reference.

본 출원은 여기서 참조 문헌으로 결합되고 있는 동일자로 제출된 발명의 명칭이 모델의 임팩트 분석을 위한 방법인 동시 계류 중인 미국 특허 제60/104,682호와 관련이 있다.This application is related to co-pending U.S. Patent No. 60 / 104,682, the name of the invention filed as the same hereby incorporated by reference, which is a method for impact analysis of the model.

본 출원은 여기서 참조 문헌으로 결합되고 있는 동일자로 제출된 발명의 명칭이 SQL 입력을 통해 계층적 데이터 기억 장치로의 엑세스를 제공하는 방법 및 장치인 동시 계류 중인 미국 특허 제60/104,682호와 관련이 있다.This application is related to co-pending U.S. Patent No. 60 / 104,682, which is a method and apparatus for providing access to hierarchical data storage via SQL input, the name of which is hereby incorporated by reference. have.

본 출원은 여기서 참조 문헌으로 결합되고 있는 동일자로 제출된 발명의 명칭이 도구를 모델링 하기 위한 장치 및 방법인 동시 계류 중인 미국 특허 제60/104,682호와 관련이 있다.This application is related to co-pending U. S. Patent No. 60 / 104,682, entitled Apparatus and Method for Modeling Tools, of which the invention is filed hereby, which is hereby incorporated by reference.

본 발명은 일반적으로 컴퓨터 언어 프로세서에 관한 것으로서, 특히 확장 가능한 매크로 언어에 관한 것이다.The present invention relates generally to computer language processors, and more particularly to extensible macro languages.

본 발명의 양호한 실시예에 대해서 예증의 첨부 도면을 참조하여 설명하기로 한다.Best Mode for Carrying Out the Invention A preferred embodiment of the present invention will be described with reference to the accompanying drawings in the illustration.

도 1은 본 발명의 확장 가능한 매크로 언어의 구성 요소를 도시하는 블록도이다.1 is a block diagram illustrating the components of an extensible macro language of the present invention.

도 2는 반복자 매크로를 가진 매크로 표현의 일례를 도시한다.2 shows an example of a macro representation with an iterator macro.

상기한 종래 기술의 매크로 언어 프로세서의 단점을 극복하기 위해 본 발명은 매크로 언어 프로세서의 소스 코드를 수정할 필요없이 유저의 특정 요구에 맞추어진 절차들을 포함하는 새로운 매크로 명령을 유저로 하여금 기록 가능하게 하는 확장 가능한 매크로 언어를 제공한다. 확장 가능한 매크로 언어는 언어를 모르는 새로운 매크로 명령을 인식하여 새로운 매크로 명령을 레지스트리, 즉 저장소에 저장된 절차 호출과 새로운 매크로 명령을 연계시킴으로써 새로운 매크로 명령의 처리가 가능해져서 매크로 언어의 동적 확장이 가능하게 된다.To overcome the drawbacks of the macro language processor of the prior art described above, the present invention provides an extension that enables a user to write a new macro instruction that includes procedures tailored to the user's specific needs without having to modify the source code of the macro language processor. Provides a macro language where possible. The extensible macro language recognizes new macro commands that do not know the language and associates the new macro commands with the procedure calls stored in the registry, namely the repository, and the new macro commands, allowing for the dynamic expansion of the macro language. .

본 발명에서, 레지스트리에 새로운 매크로 명령을 동적으로 등록하기 위한메카니즘이 또한 확장성이 가능하도록 제공된다. 새로운 매크로 명령을 등록하기 위해, 유저는 확장 가능한 매크로 언어에 의한 실행을 위해 새로운 매크로 명령을 나타내는 키워드와 관련 코드 또는 절차를 레지스트리에 삽입할 수 있다.In the present invention, a mechanism for dynamically registering a new macro command in the registry is also provided to be extensible. To register a new macro command, a user can insert a keyword and associated code or procedure into the registry representing a new macro command for execution by an extensible macro language.

본 발명은 또한 새로운 매크로 명령이 어떤 기능을 수행하는 지를 알 필요없이 새로운 매크로 명령을 인식하기 위해 확장된 매크로 언어에 대한 간단한 구문(syntax)을 정의한다.The present invention also defines a simple syntax for an extended macro language to recognize new macro commands without having to know what function the new macro command performs.

본 발명의 목표에 따르면, 매크로 언어로 사전에 정의되지 않은 매크로 명령을 처리하는 매크로 핸들러 및 파서(parser)를 제공한다. 매크로 언어로 사전 정의되지 않거나 정의되지 않은 매크로 명령이란 유저에게 분배 또는 릴리즈 시 매크로 언어로 이용 가능한 일련의 명령에 포함되지 않는 매크로 명령을 지칭한다. 파서는 매크로 언어 표현으로 키워드를 분석하고 매크로 언어로 사전 정의되지 않는 매크로 명령을 나타내는 하나 이상의 키워드를 인식한다. 매크로 핸들러는 매크로 표현으로 키워드를 수신하고 키워드의 레지스트리로부터 키워드와 관련된 실행 가능한 코드를 검색한다. 실행 가능한 코드는 키워드로 표현된 매크로 명령을 처리하도록 실행된다. 키워드의 레지스트리는 매크로 언어를 확장하기 위한 관련 코드 및 키워드를 포함하도록 증가될 수 있다.According to an object of the present invention, there is provided a macro handler and parser for processing macro instructions not defined in advance in a macro language. Macro commands that are not predefined or undefined in a macro language refer to macro commands that are not included in the set of commands available in the macro language at the time of distribution or release to a user. The parser analyzes keywords in macro language representation and recognizes one or more keywords that represent macro commands that are not predefined in macro language. The macro handler receives the keyword as a macro representation and retrieves the executable code associated with the keyword from the keyword's registry. Executable code is executed to process macro instructions represented by keywords. The registry of keywords can be increased to include relevant codes and keywords for extending the macro language.

본 발명의 또 다른 특징 및 이점과 본 발명의 각종 실시예의 구조 및 동작에 대해서 첨부 도면을 참조하여 설명하기로 한다.Further features and advantages of the present invention and the structure and operation of various embodiments of the present invention will be described with reference to the accompanying drawings.

도면에서 동일 참조 부호는 동일 또는 기능적으로 유사한 요소를 가리킨다Like reference symbols in the drawings indicate like or functionally similar elements.

본 발명은 매크로 언어를 재구축하고 다시 컴파일할 필요없이 실행 시간 환경에서 동적으로 확장될 수 있는 확장 가능한 매크로 언어에 관한 것이다. 비록 확장 가능한 매크로 언어가 소정 세트의 매크로 명령을 포함하고 있을 지라도, 본 발명은 유저로 하여금 원하는 대로 추가 또는 새로운 매크로 명령을 부가하는 것을 가능하게 한다. 도 1은 본 발명의 확장 가능한 매크로 언어를 제공하기 위한 시스템의 구성 요소를 나타내는 블록도(100)이다. 파서(102)는 파서를 사용해서 소정 표현을 분석하고 파싱하는 문법 또는 구문(104)을 포함한다. 도 1에 도시한 바와 같이, 파서(102)는 매크로 언어 표현(106)을 수신하여 그 표현을 매크로 언어의 구문(104)에 따른 구성 요소로 파싱한다. 이후, 본 발명의 일실시예에서 사용된 구문에 대해서 보다 상세히 설명하기로 한다. 도 1에 있어서, 파서(102)는 새로운 매크로 명령의 존재를 나타내는 구문에서 사전 정의된 어떤 토큰을 인식하는 표현(106)을 판독한다. 이 예에서, 파서(102)가 표현(106)에서 컬리 브레이스(curly brace)와 조우할 때, 파서(102)는 키워드, 예컨대 브레이스내에 포함된 "특성(명(名))"을 새로운 매크로 명령으로서 취급한다. 게다가, 파서(102)는 삽입구내에 삽입된 "명"이 새로운 매크로 명령에 대한 파라미터임을 구문(104)에 기초해서 인식한다. 구문(104)의 다른 형태는 리터랄 문자열로서 해석될 어느 심볼 외부 문자의 문자열을 따르게 할 수 있다. 따라서, 파서(102)는 표현의 각 원소를 (108)로 도시한 바와 같은 구성요소들로 분할한다. 본 발명에서 파서(102)의 신규한 특징은 파서(102)가 토큰내의 실제의 내용, 즉 컬리 브레이스와는 무관하다는 것이다. 즉, 새로운 매크로 명령 또는 키워드가 인식 가능한 토큰내에에 삽입되는 한, 파서(102)는 키워드가 매크로 언어로 사전 정의되었는 지에 관계없이 구성 요소들로 분할한다. 그러므로, (108)로 도시한 바와 같이, 매크로 표현(106)은 확장된 매크로 언어의 구문(104)에 따라서 구성 요소들로 분할된다. 새로운 키워드 "특성"은 토큰 구성 요소(108a)로서 분할되고, 삽입구내의 문자열 "명"은 파라미터 구성 요소(108b)로서 분할되며, 문자열 "좋아하다"는 리터랄 구성 요소(108c)로서 분할되고, 문자열 "피자"는 리터랄 구성 요소(108d)로서 분할된다.The present invention relates to an extensible macro language that can be dynamically extended in a runtime environment without the need to rebuild and recompile the macro language. Although the extensible macro language includes a set of macro instructions, the present invention allows the user to add additional or new macro instructions as desired. 1 is a block diagram 100 illustrating components of a system for providing an extensible macro language of the present invention. Parser 102 includes grammar or syntax 104 that parses and parses certain expressions using the parser. As shown in FIG. 1, the parser 102 receives the macro language representation 106 and parses it into components according to the syntax 104 of the macro language. Hereinafter, the syntax used in the embodiment of the present invention will be described in more detail. In FIG. 1, the parser 102 reads a representation 106 that recognizes some predefined token in a syntax that indicates the presence of a new macro command. In this example, when parser 102 encounters a curly brace in expression 106, parser 102 may add a new macro command to a keyword, such as a "character" contained within the brace. Treat as. In addition, the parser 102 recognizes based on the syntax 104 that the "name" inserted in the insertion phrase is a parameter for the new macro instruction. Another form of syntax 104 may be to follow a string of characters outside any symbol to be interpreted as a literal string. Thus, parser 102 divides each element of the representation into components as shown by 108. A novel feature of the parser 102 in the present invention is that the parser 102 is independent of the actual content in the token, namely Curly Brace. That is, as long as a new macro command or keyword is inserted into a recognizable token, parser 102 splits it into components regardless of whether the keyword is predefined in a macro language. Thus, as shown at 108, the macro representation 106 is divided into components according to the syntax 104 of the extended macro language. The new keyword "attribute" is split as token component 108a, the string "name" in the insert is split as parameter component 108b, and the string "like" is split as literal component 108c and , The string "pizza" is split as a literal component 108d.

도 1에 도시한 바와 같이, 본 발명은 또한 매크로 핸들러(110), 키워드 및 키워드에 대응하는 실행 가능한 코드를 갖는 저장소(112)를 포함하고 있다. 실행 가능한 코드는 실행을 위해 실제 코드에 대한 포인터로서 저장소(112)에 저장될 수 있다. 저장소(112)는 하나 이상의 키워드 및 관련 코드를 포함하며, 동적으로 수정될 수 있으며, 예컨대 저장소에 부가된 새로운 키워드 및 코드는 필요에 따라 매크로 언어의 유저에 의해서 발생한다. 본 발명의 저장소(112)는 키워드 및 관련 코드의 테이블을 가진 단순 파일일 수 있다. 대안적으로, 별개의 데이터베이스가 저장소(112)로서 사용될 수 있다.As shown in FIG. 1, the present invention also includes a macro handler 110, a repository 112 having keywords and executable code corresponding to the keywords. Executable code may be stored in storage 112 as a pointer to actual code for execution. Repository 112 includes one or more keywords and associated code, and can be dynamically modified, for example, new keywords and codes added to the repository are generated by users of the macro language as needed. Repository 112 of the present invention may be a simple file having a table of keywords and associated codes. Alternatively, a separate database can be used as the repository 112.

매크로 표현이 파서(102)와 관련하여 전술한 바와 같이 별개의 구성 요소로 파싱된 후, 구성 요소는 부가적인 처리를 위해 매크로 핸들러(110)로 패스된다. 키워드 "특성"(108a)을 가진 토큰 구성 요소의 경우, 매크로 핸들러는 키워드 "특성"에 대해 저장소를 체크한다. 키워드 특성을 찾으면, 키워드 "특성"과 관련된 코드가 검색되고 실행된다. 코드를 실행하는데 있어, 매크로 핸들러(110)는 매크로 표현에서 발견되어 파라미터로서 파싱(구문 분석)된 모든 파라미터를 실행 코드로 패스한다. 매크로 핸들러(110)는 코드 자체내에서 수행될 수 있는 다른 처리를 알 필요가 없다. 매크로 핸들러(110)가 인식할 필요가 있는 모든 것은 "특성"이 그의 대응 코드에 대해 저장소(112)에서 찾아질 키워드와, 어느 파라미터로 실행될 저장소(112)에서 규정된 대응 코드이다. 대응 코드는 통상 실제 코드 자체(114)에 포인터로서 저장소(112)에서 규정된다.After the macro representation is parsed into separate components as described above with respect to parser 102, the components are passed to macro handler 110 for further processing. For token components with the keyword "attribute" 108a, the macro handler checks the repository for the keyword "attribute". Once the keyword property is found, the code associated with the keyword "attribute" is retrieved and executed. In executing the code, the macro handler 110 passes all the parameters found in the macro representation and parsed (parsed) as parameters into the executable code. The macro handler 110 does not need to know other processing that can be performed within the code itself. All that macro handler 110 needs to be aware of is the keyword whose "characteristic" is to be found in the repository 112 for its corresponding code, and the corresponding code defined in the repository 112 to be executed with some parameter. The corresponding code is typically defined in the storage 112 as a pointer to the actual code itself 114.

저장소에서 규정된 코드(114)의 적절한 실행 후, 매크로 핸들러(110)는 실행된 코드의 하나 이상의 출력을 수용하며 키워드 대신해 그 출력을 매크로 표현에 다시 위치시킨다. 이와 같이, 도1에 도시한 예에서, 파라미터 "명"과 "특성"과 관련된 코드의 출력은 메리(MARY)일 수 있다. 따라서, (106)에서 "{특성(명)}은 피자를 좋아한다"와 같은 확장된 매크로 표현의 결과는 (116)에서 도시한 바와 같이 "메리는 피자를 좋아한다"이다.After proper execution of the defined code 114 in the repository, the macro handler 110 accepts one or more outputs of the executed code and places the output back in the macro representation instead of a keyword. As such, in the example shown in FIG. 1, the output of the code associated with the parameters "name" and "characteristic" may be Mary. Thus, the result of the expanded macro expression, such as "{character (s)} like pizza" at 106, is "Mary likes pizza", as shown at 116.

본 발명의 새로운 특징은 파서와 같은 매크로 핸들러가 코드의 어떤 것도 알 필요가 없거나, 또는 어느 기능 유형이 실행 가능한 코드에 의해서 수행되는지를 알 필요가 없다. 매크로 핸들러는 단지 키워드와 관련된 실행 가능한 코드로의 입문을 제공한다. 본 발명의 예증의 실시예에서, 어느 코드가 행해져야 하고, 그에 따라서 어느 명령이 키워드에 의해서 수행되는 지를 정확하게 정의하는 것은 유저에게 달려 있기 때문에 융통성 있고 확장 가능한 매크로 언어가 제공된다.A new feature of the present invention is that a macro handler such as a parser does not need to know anything in the code, or need to know which function type is performed by the executable code. Macro handlers only provide an introduction to the executable code associated with a keyword. In the illustrative embodiment of the present invention, a flexible and extensible macro language is provided because it is up to the user to precisely define which code should be executed and therefore which commands are performed by keywords.

상기 실시예에서, 출력 메리(MARY)는 매크로 언어와는 무관한 각종 방식으로 얻어질 수 있다. 예를 들면, 명(名) 메리는 월드 와이드 웹에서 검색을 수행함으로써 얻을 수가 있거나 본 발명에 의해서 허용될 수 있는 확장성을 설명하는 질의 언어를 이용하여 데이터베이스로부터 얻을 수 있다.In this embodiment, the output MARY can be obtained in a variety of ways independent of the macro language. For example, the name Mary can be obtained from a database using a query language that describes the scalability that can be obtained by performing a search on the World Wide Web or is acceptable by the present invention.

언어 구문Language syntax

확장 가능한 매크로 언어의 일실시예에 사용된 구문 또는 문법에 대해서 보다 상세히 설명하기로 한다. 본 발명의 확장 가능한 매크로 언어는 리터랄, 매크로, 코맨트 및 연산자/스코핑 문자를 포함하는 구문(도 1의 104)을 포함한다.The syntax or grammar used in one embodiment of the extensible macro language will be described in more detail. The extensible macro language of the present invention includes syntax (104 in FIG. 1) that includes literals, macros, comments, and operator / scoping characters.

리터랄Literal

이 실시예에서 구문은 컬리 브레이스 외부의 모드 텍스트를 리터랄로서 취급하며 정확하게 타이핑되어 발생된다. 컬리 브레이스내에서 이중 인용 부호내의 텍스트는 리터랄로서 취급된다. 이러한 방법은 매크로 호출내에서 리터랄을 삽입하는 것을 가능하게 한다. 리터랄의 어떤 예는 다음과 같다.In this embodiment, the syntax treats the mode text outside the Curly Brace as a literal and is generated by typing correctly. Within curly braces, text in double quotes is treated as a literal. This method makes it possible to insert literals within macro calls. Some examples of literals are:

이 텍스트는 다음과 같이 발생된다.This text is generated as follows:

{"So would this text"}{"So would this text"}

매크로Macro

매크로는 프로그래밍 언어로 절차 또는 기능과 같은 매크로 프로세서에 대한지시들을 포함한다. 본 발명에서 정의된 구문에 따르면, 모든 매크로는 컬리 브레이스내에 삽입된다. 일실시예에서, 매크로는 2가지 범주, 즉 절차 매크로 및 반복 매크로에 속한다.A macro contains instructions for a macro processor, such as a procedure or function, in a programming language. According to the syntax defined in the present invention, all macros are inserted into the curly brace. In one embodiment, macros fall into two categories: procedural macros and repeat macros.

절차 매크로는 어떤 작업을 수행하도록 설계되어 있다. 절차 매크로는 한 값으로 확장할 수 있고, 절차 매크로는 한 변수를 나타낼 수 있고, 절차 매크로는 프로세스를 시작할 수 있다. 수행된 조처는 매크로의 설계자에 의해서 전체적으로 규정된다. 그러나, 일실시예에서, 매크로는 매크로 작업을 성공적으로 완료하면 "참" 값을, 작업을 실패하면 "허위" 값을 리턴한다.Procedural macros are designed to do something. A procedural macro can expand to one value, a procedural macro can represent a variable, and a procedural macro can start a process. The action taken is defined entirely by the designer of the macro. However, in one embodiment, the macro returns a "true" value upon successful completion of the macro operation and a "false" value if the operation fails.

다음의 표현은 문자열 리터랄과 그 다음에 이어지는 인쇄 시 페이지 번호을 얻기 위한 매크로 호출을 나타낸다.The following expression represents a string literal followed by a macro call to get the page number on printing.

My Model Report - Page {HeaderPage} : InputMy Model Report-Page {HeaderPage}: Input

My Model Report - Page 1 : OutputMy Model Report-Page 1: Output

상기 예에서, HeaderPage는 페이지 번호를 추출하기 위해 유저가 정의한 매크로이다.In the above example, HeaderPage is a user defined macro to extract the page number.

반복자 매크로는 유저로 하여금 데이터 구조를 횡단하게 한다. 반복자는 반복자 선언(iterator declaration)에 이어지는 코드 블록을 구분하는 키워드 "시작"과 "끝"에 의해서 구별된다. "시작/끝" 블록내의 코드는 각 반복에 대해서 한번 실행된다. 반복자가 그의 풀에서 모든 오브젝트를 가로질러 이동할 때, 제어에 의해는 반복 블록으로 분할하여 블록 다음의 매크로 표현으로 다음 문장을 계속해서 실행한다.Iterator macros allow users to traverse a data structure. Iterators are distinguished by the keywords "start" and "end", which separate the blocks of code that follow the iterator declaration. The code in the "start / end" block is executed once for each iteration. When an iterator moves across all objects in its pool, the control divides it into repeating blocks and continues executing the next statement with the macro representation following the block.

매크로 표현의 다음 블록은 반복자 매크로의 사용을 표시한다.The next block of macro expressions indicates the use of iterator macros.

{{

MyIteratorMyiterator

beginbegin

DoSomethingDoSomething

endend

}}

상기 예에서, 절차 매크로 "DoSomething"은 "MyIterator" 매크로에 의해서 리턴된 각 요소에 대해 한번 실행한다. 전체 프래그먼트를 에워싸는 컬리 브레이스느 브레이스내의 모든 표현이 매크로 코드로서 취급됨을 표시한다.In the example above, the procedure macro "DoSomething" executes once for each element returned by the "MyIterator" macro. Indicates that all expressions in Curly Brace enclosing the entire fragment are treated as macro code.

파라미터parameter

본 발명의 확장 가능한 매크로 언어에서 정의된 구문은 절차 및 반복자로 하여금 파라미터를 수용하여 처리 가능하게 한다. 파라미터는 문자열 또는 다른 매크로를 포함할 수 있다. 파라미터를 구분하기 위해 파라미터는 매크로 다음의 삽입구내에 내포된다. 매크로는 원하는 대로 가변장 파라미터 리스트를 받아들일 수 있다. 다음은 파라미터 "foo"를 가진 매크로 표현을 나타낸다.The syntax defined in the extensible macro language of the present invention allows procedures and iterators to accept and process parameters. The parameter may include a string or other macro. To distinguish between parameters, the parameters are nested within the insert following the macro. The macro can accept a variable length parameter list as desired. The following shows a macro representation with the parameter "foo".

{MacroWithParameter ("foo")}{MacroWithParameter ("foo")}

제어 블록Control block

어느 경우, 매크로 표현의 어느 부분을 표현하는 것을 실패하면 실패의 매크로 표현 블록을 갖는 것이 바람직하다. 다음의 예는 이러한 경우를 나타낸다.In either case, it is desirable to have a macro representation block of failure if it fails to represent any part of the macro representation. The following example illustrates this case.

{FirstName [MiddleInitial "."] LastName}{FirstName [MiddleInitial "."] LastName}

중간 이니셜이 없다면, MiddleInitial 매크로는 닐(nil) 값 또는 실패 값을 리턴할 것이다. 그 경우, 리터랄 "."은 인쇄되지 않아야 한다. 이러한 조건들을 이용하기 위해 본 발명은 그 구문에서 조건적 표현을 나타내는 스퀘어 브래킷("[]")을 포함한다. 그러므로, 스퀘어 브래킷내의 매크로가 실패이면, 스퀘어 브래킷에서 나머지 표현은 발생되지 않는다. 상기 예에서, MiddleInitial가 값의 부족으로 실패이면, 리터랄 "."은 인쇄되지 않는다.If there is no middle initial, the MiddleInitial macro will return a nil value or a failure value. In that case, the literal "." Should not be printed. To use these conditions, the present invention includes a square bracket ("[]") that represents a conditional expression in its syntax. Therefore, if the macro in the square bracket fails, the remaining representation in the square bracket does not occur. In the above example, if MiddleInitial fails due to lack of value, the literal "." Is not printed.

조건적 블록은 내부 스코프를 갖는다. 즉 조건적 블록의 실패는 주변 코드에 영향을 미치지 않는다. 외부 블록에 영향을 미치는 블록의 조건의 경우, 구문은 각도 브래킷(angle bracket)으로 표지된 전파 조건으로서 불리는 것을 부가적으로 포함한다. 한쌍의 각도 브래킷내의 어느 매크로가 고장이면, 각도 브래킷내의 블록과 다음 외부 블록은 고장이다. 다음의 예는 조건적 전파 조건을 갖는 매크로 표현을 나타낸다.Conditional blocks have internal scopes. In other words, the failure of a conditional block does not affect the surrounding code. In the case of a block condition affecting an outer block, the phrase additionally includes what is called a propagation condition labeled with an angle bracket. If any macro in a pair of angle brackets fails, the block in the angle bracket and the next outer block are broken. The following example shows a macro representation with conditional propagation conditions.

{Print " " [Print [Fail] ] } : input{Print "" [Print [Fail]]}: input

foo foo : outputfoo foo: output

{Print " " [Print 〈 Fail 〉] } : input{Print "" [Print 〈Fail〉]}: input

foo : outputfoo: output

두 예에서 "프린트" 매크로는 워드 "foo"를 출력한다. 제1 예에서, 스퀘어 브래킷에서 고장인 매크로는 그의 블록내에 포함되어 있다. 그러므로, "프린트"를 갖는 다음 외부 블록은 제1 "프린트"로서 실행됨으로써 출력 "foo foo"로 된다.제2 예에서, 각도 브래킷내의 매크로가 고장이면, 그 고장은 "프린트" 매크로를 가진 다음 블록으로 전파된다. 그러므로, "프린트"와 함께 다음 외부 블록은 실행되지 않는다. 이 프린트 매크로가 한쌍의 스퀘어 브래킷내에 포함되므로, 고장은 블록내에 내포된다. 그러므로, 제1 "프린트" 매크로는 실행되고 출력 "foo"가 출력된다.In both examples, the "print" macro outputs the word "foo". In a first example, a macro that has failed in a square bracket is contained within its block. Therefore, the next outer block with "print" is executed as the first "print", resulting in the output "foo foo". In the second example, if the macro in the angle bracket fails, then the failure has the "print" macro. Propagated to the block. Therefore, the next outer block with "print" is not executed. Since this print macro is contained within a pair of square brackets, a failure is contained within the block. Therefore, the first "print" macro is executed and the output "foo" is output.

도 2는 본 발명의 반복자 매크로를 포함하는 매크로 표현의 일례이다. 도 1을 참조해서 기술한 바와 같이, 키워드 "ForEach"는 파서(102)(도 1)에 의해서 매크로로서 인식되고 워드 "Employee"는 매크로 "ForEach"에 대한 파라미터로서 인식된다. 매크로 핸들러가 토큰 키워드 "ForEach"를 수신할 때, 매크로 핸들러(110)(도 1)는 레지스트리(112)에서 키워드 "ForEach"의 룩업을 수행하고 대응 코드를 실행한다. "ForEach" 매크로에 대한 코드는 규정된 파라미터 "employee"의 타입을 갖는 소정의 오브젝트(204)의 모든 서브 오브젝트(204b,204c)에 대한 매크로 표현의 시작/끝 블록내에서 발견된 명령들을 수행한다. 이 매크로 표현(202)에서, 또 다른 매크로는 시작/끝 블록내에 존재한다. 따라서, 매크로 핸들러(110)(도 1)는 레지스트리(112)에서 키워드 "Property"의 룩업을 수행하고 "ForEach" 키워드에서 규정한 바와 같은 고용인 타입을 갖는 서브 오브젝트(204b, 204c) 각각에 대한 대응 코드를 실행한다. "Property" 키워드와 관련된 코드는 키워드 "Property"의 파라미터에서 규정된 타입의 값, 이 예에서 "EmpName"로 규정된 바와 같은 고용인 명을 인쇄하는 지시를 포함할 수 있다. 따라서, 매크로 표현(202)의 결과는 (208)로 도시한 출력, "Mary John"이다.2 is an example of a macro representation comprising an iterator macro of the present invention. As described with reference to FIG. 1, the keyword "ForEach" is recognized as a macro by the parser 102 (FIG. 1) and the word "Employee" is recognized as a parameter for the macro "ForEach". When the macro handler receives the token keyword "ForEach", the macro handler 110 (FIG. 1) performs a lookup of the keyword "ForEach" in the registry 112 and executes the corresponding code. The code for the "ForEach" macro performs the instructions found in the start / end block of the macro representation for all sub-objects 204b, 204c of the given object 204 with the type of the defined parameter "employee". . In this macro representation 202, another macro is present in the start / end block. Thus, the macro handler 110 (FIG. 1) performs a lookup of the keyword "Property" in the registry 112 and corresponds to each of the sub-objects 204b and 204c having the employee type as defined by the "ForEach" keyword. Run the code The code associated with the "Property" keyword may include an instruction to print a value of the type specified in the parameter of the keyword "Property", an employee name as defined in this example as "EmpName". Thus, the result of the macro representation 202 is the output, "Mary John", shown at 208.

본 발명의 확장 가능한 매크로 언어는 개개의 유저의 특정 요구에 매크로를 맞추기 위해 유용하다. 예를 들면, 확장 가능한 매크로 언어는 유저가 원하는 대로 UMA 모델로부터 각종 오브젝트를 검색하기 위해 UMA 모델과 인터페이스된다. UMA에 대해서는 여기서 참조 문헌으로 결합되고 있는 1999년 10월 15일자로 제출된 발명의 명칭이 도구를 모델링하기 위한 장치 및 방법인 동시 계류중인 미국 특허 출원 제60/104,682호에 개시되어 있다. 부록 A는 UMA 모델에서 사용되고 UMA 탬플릿 언어로서 지칭되는 본 발명의 확장 가능한 매크로 언어의 간략한 설명을 포함한다. 부록 A에서 설명은 확장 가능한 매크로 언어의 일실시예를 설명하고 있으며 확장 가능한 매크로 언어의 범위와 능력을 여기서 포함하고 있는 설명에 한정하는 것으로서 분석하지 않아야 한다.The extensible macro language of the present invention is useful for tailoring macros to the specific needs of individual users. For example, an extensible macro language is interfaced with the UMA model to retrieve various objects from the UMA model as desired by the user. The name of the invention, filed October 15, 1999, which is incorporated herein by reference, is disclosed in co-pending US patent application Ser. No. 60 / 104,682, which is an apparatus and method for modeling a tool. Appendix A contains a brief description of the extensible macro language of the present invention, used in the UMA model and referred to as the UMA template language. The description in Appendix A describes an embodiment of an extensible macro language and should not be construed as limiting the scope and capabilities of the extensible macro language to the description contained herein.

본 발명이 실시예와 관련하여 도시되고 기술되었지만 당업자라면 발명의 사상 및 범위를 벗어나지 않는 전술한 형태의 수정 및 변경이 가능함을 이해할 것이다.While the invention has been shown and described in connection with the embodiments, those skilled in the art will recognize that modifications and variations of the foregoing forms may be made without departing from the spirit and scope of the invention.

부록 AAppendix A

개요summary

이 문서의 목적은 UMA로 구현된 탬플릿 언어에 대한 간략한 소개를 제공하는 것이다. 이 문서를 읽는 사람은 UMA의 오브젝트/특성 메타모델에 대한 실용 지식을 갖고 있는 것으로 간주한다.The purpose of this document is to provide a brief introduction to the template language implemented in UMA. Readers of this document assume that they have a working knowledge of UMA's object / property metamodel.

이 문서는 아키텍쳐의 배타적인 설명만을 제공하는 것으로 고려되어서는 않된다. UMA 팀 멤버는 이 문서를 읽는 사람에게 이러한 설명을 제공할 수 있으며,읽는 이에게 이러한 유용성을 이용하는 많은 코드 샘플로 지향시킬 수 있다.This document should not be considered as providing an exclusive description of the architecture. UMA team members can provide this description to readers of this document, and can direct readers to many code samples that take advantage of this usefulness.

UMA 탬플릿 언어(UTL)의 목적은 UMA를 근간으로 하는 응용 프로그램에 스크립팅 기능을 제공하는 것이다. 이러한 기능은 각종 특징에 대해서 사용 가능하며, 다음을 포함하나, 이들 만에 제한되는 것은 아니다.The purpose of the UMA Template Language (UTL) is to provide scripting capabilities for applications based on UMA. These functions are available for various features and include, but are not limited to, the following.

·매크로 확장: 모델에 대한 코드 탬플릿의 실행 시간 확장. 예들은 OR·Compass에서의 트리거 코드 및 저장된 절차, SQL·Compass에서의 비쥬얼 베이직 및 자바 구성요소를 포함한다. Macro extension : Extend the execution time of code templates for models. Examples include trigger code and stored procedures in OR Compass, Visual Basic and Java components in SQL Compass.

·스크립팅: 모델에 대한 일련의 명령의 실행. 일례는 OR·Compass에서의 순방향 엔지니어링용 제어기 코드이다. Scripting : Execution of a series of instructions to a model. One example is controller code for forward engineering in OR Compass.

UTL의 아키텍쳐는 가능한 UMA를 근간으로 하는 제품의 다양한 형태에서 그의 사용을 촉진하도록 의도된다. 이는 그의 제품의 특정 요구에 언어를 맞추는데 있어 유저의 최대 융통성을 허용하고, 가능한 많은 구현 지원을 제공하며, 새로운 구현 코드의 재사용을 허용하는 메카니즘을 드러냄으로써 달성된다.UTL's architecture is intended to facilitate its use in various forms of products, possibly based on UMA. This is accomplished by revealing mechanisms that allow the user maximum flexibility in adapting the language to the specific needs of his product, provide as much implementation support as possible, and allow reuse of new implementation code.

이러한 목표을 성취하기 위해, UTL은To achieve this goal, UTL

1. 언어에 대한 최소 구문을 정의하고,1. Define the minimum syntax for the language,

2. 유저로 하여금 절차 및 반복자를 기록 가능하게 하며,2. enable the user to record procedures and iterators,

3. 레지스트리에 절차 및 반복자를 등록하기 위한 메카니즘을 제공한다.3. Provide a mechanism for registering procedures and iterators in the registry.

구문 요약Syntax Summary

다음은 구현을 이해하는 데 필요한 최소의 베어(bare)를 제공하도록 의도된 UTL의 구문의 개요이다. 더 상세한 정보에 대해서는 OR·Compass 1.0으로 이동된문서에서 찾을 수 있다.The following is an overview of the syntax of the UTL, which is intended to provide the minimum bareness needed to understand the implementation. More information can be found in the documentation moved to OR Compass 1.0.

탬플릿 코드는 리터랄, 매크로, 몇개의 연산자/스코핑 문자로 이루어진다. 현재, UTL은 문자열로서 모든 코드를 관찰한다. 즉, 수자값은 문자열 표현으로 기술되며, 대부분의 매크로는 문자열 등을 계산한다.Template code consists of literals, macros, and some operator / scoping characters. Currently, UTL observes all code as strings. In other words, numeric values are described as string representations, and most macros calculate strings and the like.

리터랄Literal

탬플릿 소스 코드에서, 컬리 브레이스의 모든 텍스트 외부는 리터랄로서 취급되며, 타이핑된 바와 같이 정확하게 발생된다. 컬리 브레이스내에서, 이중 인용부호내의 텍스트는 리터랄로서 취급된다. 전자는 큰 보일러판의 블록으로 하여금 예컨대 저장된 절차의 몸체에 입력되게 한다. 후자는 매크로 셀내에 리터랄를 내포 가능하게 한다.In the template source code, all textual exterior of the Curly Brace is treated as a literal and is generated exactly as typed. Within Curly Brace, the text in double quotes is treated as a literal. The former causes a large block of boilerplate to be input into the body of a stored procedure, for example. The latter makes it possible to embed literals in macro cells.

예:Yes:

이 텍스트는 이와 같이 발행될 것이다.This text will be issued like this.

{"So would this text."}{"So would this text."}

매크로Macro

매크로는 매크로 프로세서, 기본적으로 절차에 대한 특정 지시이다. 모든 매크로는 컬리 브레이스내에 포함된다. 매크로는 기본적으로 2가지 범주에 속한다. 즉 절차 매크로와 반복자 매크로에 속한다.A macro is a macro processor, basically a specific instruction for a procedure. All macros are contained within the Curly Brace. Macros basically fall into two categories. That is, it belongs to procedural macros and iterator macros.

절차 매크로는 어떤 작업을 수행하기 위해 설계되어 있다. 절차 매크로는 어떤 값으로 확장될 수 있다. 절차 매크로는 변수를 표명하며, 프로세스를 시작할 수 있다. 수행된 조처는 매크로의 설계자에 의해서 전적으로 규정된다. 절차 매크로에과해지는 유일의 제한 사항은 절차 매크로가 절차 매크로의 작업의 성공적인 완료에 대한 참(True)과 실패에 대한 허위(False)를 리턴하는 것이다.Procedural macros are designed to do something. Procedural macros can be expanded to any value. A procedural macro declares a variable and can start a process. The action taken is fully defined by the macro's designer. The only restriction on procedural macros is that the procedural macros return true and false for failures for successful completion of the procedural macro's work.

예-다음은 인쇄 시 페이지 번호를 얻기 위한 매크로 호출 다음에 이어지는 문자열 리터랄을 보여준다.Example—The following shows a string literal following a macro call to get the page number on printing.

My Model Report - Page {HeaderPage} ←InputMy Model Report-Page {HeaderPage} ← Input

My Model Report - Page 1 ←OutputMy Model Report-Page 1 ← Output

반복자 매크로는 유저로 하여금 데이터 구조를 가로질러 횡단하게 한다. 반복자는 반복자 선언 다음의 코드 블록을 구분하는 키워드 시작 및 끝에 의해서 식별된다. 이 시작/끝 블록내의 모든 코드는 각 반복 동안 한 번 실행될 것이다. 반복자가 그의 풀에서 모든 오브젝트에 걸쳐 이동할 때, 제어는 반복 블록을 분할하여 블록 다음의 제1 문장을 실행한다.Iterator macros allow users to traverse across data structures. An iterator is identified by the beginning and end of the keyword that separates the code block following the iterator declaration. All code in this start / end block will be executed once during each iteration. When an iterator moves across all objects in its pool, control divides the repeating block to execute the first statement following the block.

예-다음은 MyIterator 매크로에 의해서 리턴된 각 원소에 대해 한번 절차 매크로 DoSomething을 실행한다. 모든 코드가 매크로 코드로서 다루어짐을 나타내는 전체 코드 프래그먼트를 에워싸는 컬러 브레이스에 주목하라Example-The following executes the procedural macro DoSomething once for each element returned by the MyIterator macro. Note the color brace surrounding the entire code fragment, indicating that all code is treated as macro code.

{{

MyIteratorMyiterator

beginbegin

DoSomethingDoSomething

endend

}}

절차 및 반복자 매크로는 파라미터를 취할 수 있다. 파라미터는 문자열 또는 또 다른 매크로와 같은 문자열에 대해 계산하는 어떤 것이다. 매크로가 파라미터를 취하면, 파라미터는 매크로 다음에 삽입구에 포함된다. 매크로의 순방향 선언이 필요하지 않기 때문에, 매크로는 원한다면, 가변장 파라미터 리스트를 받아들일 수 있다.Procedures and iterator macros can take parameters. A parameter is something you compute on a string, such as a string or another macro. If the macro takes a parameter, the parameter is included in the insert after the macro. Since no forward declaration of the macro is required, the macro can accept a variable-length parameter list if desired.

예:Yes:

{MacroWithParameters("foo")}{MacroWithParameters ("foo")}

제어 블록Control block

때때로, 탬플릿 코드의 어느 부분이 고장이면 탬플릿 코드 고장의 전체 블록을 갖는 것이 바람직하다. 일례는 선택값이 뒤따르는 어떤 보일러판 텍스트가 있는 경우가 있게 될 것이다. 그 값이 존재하지 않으면, 보일러판은 발생되지 않아야 한다.Sometimes it is desirable to have an entire block of template code failures if any portion of the template code fails. An example would be if there is some boilerplate text followed by a selection. If the value is not present, no boiler plate should be generated.

스퀘어 브래킷에 내포된 코드는 조건적이다. 코드의 어느 부분이 고장이면 그것은 모두 고장이다. "고장"이란 매크로가 실행하지 않고 리터랄이 발생되지 않는다는 것을 의미한다.Cords embedded in square brackets are conditional. If any part of the code is broken, it is all broken. "Fault" means that the macro does not run and no literals are generated.

예-미들 네임이 없다면, 마침표를 찍지 않는다.Yes-If there is no middle name, do not put a period.

{FirstName [MiddleInitial "."] LastName}{FirstName [MiddleInitial "."] LastName}

조건적 블록은 그의 내부 범위를 감춘다. 이것은 조건적 블록의 고장이 주위 코드에 영향을 미치지 않는다는 것을 의미한다. 각도 브래킷에 내포된 코드가 전파 조건적이다. 코드의 어느 부분이 고장이면 코드는 고장이며 코드는 그 고장을 다음블록으로부터 전파할 것이다.The conditional block hides its inner range. This means that the failure of the conditional block does not affect the surrounding code. The cords enclosed in the angle brackets are propagated. If any part of the code fails, the code is broken and the code will propagate the failure from the next block.

이러한 두 가지 유형의 블록을 구별하는 최상의 방법은 다음의 예와 같다. 두 예에서, 인쇄 매크로는 워드 "foo"를 발생하고 고장 매크로는 어쨋든 실패한다.The best way to distinguish these two types of blocks is as follows: In both examples, the print macro generates the word "foo" and the fault macro fails anyway.

조건적 블록의 예Example of conditional block

{Print " " [ Print [ Fail ] ] } ←Input{Print "" [Print [Fail]]} ← Input

foo foo ←Outputfoo foo ← Output

전파 조건적 블록의 예Example of Propagation Conditional Block

{Print " " [ Print 〈 Fail 〈 ] } ←Input{Print "" [Print 〈Fail 〈]} ← Input

foo foo ←Outputfoo foo ← Output

아키텍쳐Architecture

LWMDataButlerLWMDataButler

UTL의 원하는 기능은 데이터 버틀러라 불리는 오브젝트를 이용하여 달성된다. 데이터 버틀러는 탬플릿 코드를 실행할 때 매크로 프로세서가 조우하는 매크로에 대한 구현을 제공하는 역할을 한다. 매크로 프로세서가 개시될 때, 데이터 버틀러 인터페이스는 매크로 프로세서에 제공된다. 필수적으로, 데이터 버틀러는 전략 패턴(Strategy pattern)을 이용하는 것이다.The desired functionality of the UTL is accomplished using an object called a data butler. Data Butler is responsible for providing an implementation for the macros encountered by the macro processor when executing the template code. When the macro processor is started, the data butler interface is provided to the macro processor. Essentially, the data butler uses a strategy pattern.

이것은 언어 설계의 제1 목표를 달성한다. 상이한 데이터 버틀러를 매크로 프로세서에 제공함으로써, UTL의 문법은 장래의 응용 프로그램 및 작업을 위해 구성될 수 있다. 데이터 버틀러 구현은 작업에 적합한 키워드 세트(매크로) 수용하고 받아들일 수 없는 키워드를 거절할 수 있다. 게다가, 소정 키워드가 상이한 데이터버틀러에 의해서 상이한 방식으로 구현될 수 있어, 탬플릿 코드로 하여금 기저 구현을 무시 가능하게 한다. 이것은 기저 데이터 모델이 상이할 때 동일 탬플릿으로부터 복수개의 제품을 작업 가능하게 하는 데 있어 유용하다.This achieves the first goal of language design. By providing different data butlers to the macro processor, the grammar of the UTL can be configured for future applications and tasks. The data butler implementation may accept a set of keywords (macro) appropriate for the task and reject the unacceptable keywords. In addition, certain keywords may be implemented in different ways by different data Butlers, allowing the template code to ignore the underlying implementation. This is useful for making it possible to work with multiple products from the same template when the underlying data models are different.

MCDataButlerlMCDataButlerl

UTL의 제2 설계 목표는 유저에게 가능한 한 많은 기능을 제공하여 그로 하여금 재사용을 위한 자신의 코드를 공표하게 하는 것이다.The second design goal of the UTL is to give the user as much functionality as possible so that he can publish his code for reuse.

UMA 모델의 은유가 매우 추상적인 레벨로 모든 데이터를 다루기 때문에, 오브젝트 및 특성, 즉 탬플릿 언어의 많은 문법 원소는 추상적으로 기록될 수 있다. 이러한 원소는 UMA를 근간으로 하는 제품이 필요로 하는 언어의 주요 부분을 형성하도록 함께 모아질 수 있다. 유저는 특정 제품인 몇 개의 영역에서 이러한 베이스를 확장하여야 한다. 이상적으로, 언어는 유저에 의해서 뿐만 아니라 유저의 제품의 최종 사용자에 의해서 확장되어야 한다. 이는 우리의 솔루션에서 달성된다.Since the metaphor of the UMA model covers all data at a very abstract level, many grammatical elements of objects and properties, i.e., template language, can be recorded abstractly. These elements can be brought together to form a major part of the language needed by products based on UMA. The user should extend this base in several areas of specific products. Ideally, the language should be extended not only by the user but also by the end user of the user's product. This is achieved in our solution.

솔루션에 의해서 해결되는 기본적인 문제가 2개 있다.There are two basic problems solved by the solution.

1. 구현을 공유하기 위한 메카니즘이 필요하다. 새로운 키워드가 부가될 때, 새로운 키워드는 공표되어야 한다.A mechanism is needed to share the implementation. When a new keyword is added, a new keyword must be published.

2. 매크로의 실행 문맥을 제어하기 위한 메카니즘이 필요하다. 이것에 의해 실행 시 UMA 모델의 상태와 매크로가 영향을 미치는 특정 오브젝트 또는 특성을 참조한다.2. A mechanism is needed to control the execution context of the macro. This refers to specific objects or properties that the macro and state of the UMA model affect at run time.

이러한 기준에 부합하기 위해 UMA에는 데이터 버틀러의 기본적인 구현이 존재한다. 이러한 구현, 즉 MCDataButler5는 원하는 문법을 점진적으로 정의하고 UMA 모델에서 문맥 정보를 관리하기 위한 메카니즘을 제공한다.To meet these criteria, UMA has a basic implementation of data butler. This implementation, MCDataButler 5 , provides a mechanism for progressively defining the desired grammar and managing contextual information in the UMA model.

이러한 구현은 LWMDataButler 인터페이스의 슈퍼세트이다. LWMDataButler 인터페이스가 드러날지라도, 유저는 데이터 버틀러를 구현할 때 유저 자신을 인터페이스에 관련지울 필요는 없다. MCDataButlerI에서 구현은 LWMDataButler 인터페이스 구현을 고려하여 해야 할 필요를 찾은 모든 것을 달성한다.This implementation is a superset of the LWMDataButler interface. Although the LWMDataButler interface is exposed, the user does not need to associate himself with the interface when implementing the data butler. The implementation in MCDataButlerI achieves everything that needs to be done considering the implementation of the LWMDataButler interface.

첫째, LWMDataButlerI는 매크로 핸들러의 레지스트를 관리한다. 매크로 핸들러는 문맥이 주어지면, 어떤 조치를 수행하는 법을 아는 오브젝트이다. 개념적으로, 매크로 핸들러는 명령 패턴의 일례이다. 데이터 버틀러는 매크로 명에 의해서 키된(keyed) 매크로 핸들러의 사전이다. 매크로 프로세서가 매크로를 다루기 위한(예, 값() 대체를 통해) 데이터 버틀러를 요청할 때, 데이터 버틀러는 그의 사전에 적절한 매크로 핸들러를 위치시키고 사전으로 제어를 위임한다. 매크로 핸들러는 요구를 처리하고 제어를 리턴값(있다면)과 성공 상태를 매크로 프로세서로 단순히진행하는 데이터 버틀러로 리턴한다.First, LWMDataButlerI manages the macro handler's registry. Macro handlers are objects that know how to perform an action, given a context. Conceptually, a macro handler is an example of a command pattern. Data Butler is a dictionary of macro handlers keyed by macro name. When the macro processor requests a data butler to handle a macro (eg, via value () substitution), the data butler places the appropriate macro handler in its dictionary and delegates control to the dictionary. The macro handler processes the request and returns control (if any) and success status to the data butler, which simply proceeds to the macro processor.

매크로 핸들러는 주문을 위해 데이터 버틀러가 사용하는 인터페이스를 드러낸다.The macro handler exposes the interface that the data butler uses for ordering.

LWMDataButlerI는 새로운 핸들러를 등록하기 위해 구현 서명을 드러낸다.LWMDataButlerI exposes the implementation signature to register a new handler.

문법을 구현하기 위해 유저는 LWMDataButlerI의 구현을 구성하고 모든 필요한 매크로 핸들러를 구현할 수 있다. 대안적으로, 매크로 핸들러 레지스트리가 싱글톤 대신에 데이터 버틀러의 멤버 변수이므로, 유저는 기존의 데이터 버틀러를 서브클래스할 수 있다. 이는 유저에게 서브클래스에 알려진 모든 매크로 플러스 유저가 개발한 것을 제공한다. 이 일례가 OR·Compass 순방향 엔지니어링 데이터 버틀러이며, 그것은 MCDataButler를 부분류한다. 후자는 오브젝트를 작성하고, 특성을 판독하며, 반복하고, 변수를 구성하기 위한 광범위한 각종 일반적 매크로를 구현한다. 순방향 엔지니어링 데이터 버틀러는 순방향 엔지니어링과 관련이 있는 하나 이상의 매크로(데이터베이스에 대한 정확한 실행 명령을 결정하는 매크로와 같은)를 구현하고 DDL을 발행하기 위한 완전한 문법으로 종료한다.To implement the grammar, you can configure the implementation of LWMDataButlerI and implement all the necessary macro handlers. Alternatively, because the macro handler registry is a member of the data butler instead of a singleton, the user can subclass an existing data butler. This gives the user the development of all the macro plus users known to the subclass. An example of this is OR Compass Forward Engineering Data Butler, which subclasses MCDataButler. The latter implements a wide variety of general macros for creating objects, reading properties, iterating, and constructing variables. The forward engineering data butler implements one or more macros (such as macros that determine the correct execution instructions for a database) that are related to forward engineering and ends with a complete syntax for issuing DDL.

둘째, LWMDataButlerI는 문맥 스택을 관리한다. 문맥 스택에 의해서 매크로 핸들러는 매크로가 실행할 때 UMA 모델에서 어느 오브젝트를 참조하는 지를 알게된다. 예를 들면, 특성() 매크로는 오브젝트로부터 명명된 특성을 검색한다. 특성()에 대한 매크로 핸들러는 어느 오브젝트가 질의하는 지를 알 필요가 있다.Second, LWMDataButlerI manages the context stack. The context stack lets the macro handler know which object in the UMA model it refers to when the macro runs. For example, the property macro retrieves a named property from an object. The macro handler for the property () needs to know which object to query.

LWMDataButlerI는 오브젝트 레퍼런스의 스택을 유지하고 이 스택에 대한 오브젝트를 푸시해서 팝하고 스택에 질의하기 위한 인터페이스를 드러낸다. 매크로 핸들러는 연산의 문맥을 찾기 위해 인터페이스에 질의할 수 있다.LWMDataButlerI exposes an interface for holding a stack of object references, pushing and popping objects to this stack, and querying the stack. The macro handler can query the interface to find the context of the operation.

부가적으로, LWMDataButlerI는 MCObject 반복자로 하여금 문맥을 자동으로 관리하게 하기 위한 기능을 드러낸다. 반복자 매크로를 위한 매크로 핸들러는 반복자 프록시를 예시화할 수 있다. 이는 반복자에 대한 문맥 스택을 자동으로 유지하는 오브젝트이다. 예시화 시, 문맥 스택에서 반복되는 제1 오브젝트를 푸시한다. 트래버스할 항목이 더 이상 없을면, 스택은 팝되고, 반복자가 조우될 때 존재한 상태로 그것을 남겨둔다. 이러한 반복자 프록시는 중첩 반복자를 관리하기 위해 반복자 프록시 자신의 스택에서 유지된다.In addition, LWMDataButlerI exposes the ability to allow MCObject iterators to automatically manage context. Macro handlers for iterator macros can illustrate an iterator proxy. This is the object that automatically maintains the context stack for the iterator. When instantiated, it pushes the first object repeated in the context stack. If there are no more items to traverse, the stack is popped, leaving it as it existed when the iterator was encountered. This iterator proxy is kept on its own stack to manage nested iterators.

예-다음은 특성 매크로가 문맥에 따라 어떻게 상이하게 행동하는 지를 보여주는 샘플 코드이다. 속성 "MyColumn1"과 제2 속성 "MyColum2"을 갖는 엔티티 명명된 "MyTable"을 고려한다. 속성 "MyColumn3"을 갖는 제2 엔티티 명명된 "MyTable2"를 고려하다. 이 때 이 탬플릿 코드가 실행하고, 현재의 스택이 어느 다른 코드에주어져야 할 상부에서 모델을 갖고 있다고 가정한다.Example- Here is sample code that shows how a property macro behaves differently depending on the context. Consider the entity named "MyTable" with the attribute "MyColumn1" and the second attribute "MyColum2". Consider a second entity named "MyTable2" with the attribute "MyColumn3". This template code executes and assumes that the current stack has a model on top of which it should be given to some other code.

MyTable1 MyColumn1 MyColumn2 MyTable2 MyColumn3 ←OutputMyTable1 MyColumn1 MyColumn2 MyTable2 MyColumn3 ← Output

Claims (5)

확장 가능한 매크로 언어를 제공하기 위한 방법으로서,As a way to provide an extensible macro language, 매크로 언어 표현을 분석하는 단계와,Analyzing the macro language expression, 매크로 언어의 소정 구문에 기초해서 상기 분석된 매크로 언어 표현에서 상기 매크로 언어로 사전 정의되지 않은 매크로 명령을 나타내는 하나 이상의 키워드를 결정하는 단계와,Determining one or more keywords in the analyzed macro language representation based on a predetermined syntax of the macro language, the macro command representing a macro command not predefined in the macro language; 키워드의 레지스트로부터 상기 키워드와 관련된 코드를 검색하는 단계와,Retrieving the code associated with the keyword from the registry of keywords; 상기 키워드와 관련된 코드를 실행하는 단계를 포함하는 확장 가능한 매크로 언어 제공 방법.Executing code associated with the keyword. 제1항에 있어서, 새로운 키워드와 상기 새로운 키워드와 관련된 코드를 삽입하여 키워드의 레지스트리를 확장하는 단계를 더 포함하는 확장 가능한 매크로 언어 제공 방법.2. The method of claim 1, further comprising extending a registry of keywords by inserting new keywords and code associated with the new keywords. 확장 가능한 매크로 언어를 제공하기 위한 시스템으로서,As a system for providing an extensible macro language, 매크로 언어 표현내에 내포되며, 매크로 언어의 소정 세트의 매크로 명령으로 정의되지 않은 매크로 명령을 나타내는 하나 이상의 확장된 키워드를 결정하기 위한 소정의 구문을 가진 파서와,A parser embedded within a macro language representation, the parser having a predetermined syntax for determining one or more extended keywords that are indicative of a macro command that is not defined by a predetermined set of macro commands in the macro language; 하나 이상의 키워드와 관련 코드를 가진 키워드 저장소와,A keyword store with one or more keywords and associated codes, 상기 파서에 연결되어 상기 파서로부터 확장된 키워드를 수신하기 위한 매크로 핸들러를 포함하며, 상기 매크로 핸드러는 수신된 확장 키워드에 응답하여 상기 키워드 저장소로부터 수신된 확장 키워드와 관련된 코드를 검색하고, 확장 키워드로 표현된 매크로 명령을 실행하기 위한 코드를 실행하는 확장 가능한 매크로 언어 제공 시스템.A macro handler coupled to the parser for receiving an extended keyword from the parser, the macro hander retrieving code associated with the extended keyword received from the keyword store in response to the received extended keyword; An extensible macro language-providing system that executes code for executing macro commands expressed in. 제3항에 있어서, 상기 키워드 저장소는 새로운 키워드 및 관련 코드를 포함하도록 증가되는 것인 확장 가능한 매크로 언어 제공 시스템.4. The system of claim 3, wherein the keyword repository is increased to include new keywords and associated code. 매크로 언어 표현을 파싱하기 위한 방법으로서,As a way to parse macro language expressions, 매크로 언어 표현을 분석하기 위한 단계와,Analyzing macro language expressions, 매크로 언어의 소정 구문에 기초해서 상기 분석된 매크로 언어 표현에서 하나 이상의 키워드를 결정하기 위한 단계를 포함하며, 상기 키워드는 매크로 언어의 소정 세트의 매크로 명령으로 정의되지 않는 매크로 명령을 나타내는 것인 매크로 언어 표현을 파싱하기 위한 방법.Determining one or more keywords in the analyzed macro language representation based on a predetermined syntax of a macro language, wherein the keywords represent macro commands that are not defined by a predetermined set of macro commands in the macro language. Method for parsing an expression.
KR1020017004671A 1998-10-16 1999-10-15 Method and system for an extensible macro language KR20010106514A (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10468298P 1998-10-16 1998-10-16
US60/104,682 1998-10-16
PCT/US1999/024115 WO2000023919A1 (en) 1998-10-16 1999-10-15 Method and system for an extensible macro language

Publications (1)

Publication Number Publication Date
KR20010106514A true KR20010106514A (en) 2001-11-29

Family

ID=22301805

Family Applications (5)

Application Number Title Priority Date Filing Date
KR1020017004770A KR20010103603A (en) 1998-10-16 1999-10-15 Impact analysis of a model
KR1020017004595A KR20010093777A (en) 1998-10-16 1999-10-15 Accessing a hierarchical data store through an sql input
KR1020017004771A KR20010103604A (en) 1998-10-16 1999-10-15 Apparatus and method for building modeling tools
KR1020017004671A KR20010106514A (en) 1998-10-16 1999-10-15 Method and system for an extensible macro language
KR1020017004801A KR20010089309A (en) 1998-10-16 1999-10-15 Method for determining differences between two or more models

Family Applications Before (3)

Application Number Title Priority Date Filing Date
KR1020017004770A KR20010103603A (en) 1998-10-16 1999-10-15 Impact analysis of a model
KR1020017004595A KR20010093777A (en) 1998-10-16 1999-10-15 Accessing a hierarchical data store through an sql input
KR1020017004771A KR20010103604A (en) 1998-10-16 1999-10-15 Apparatus and method for building modeling tools

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020017004801A KR20010089309A (en) 1998-10-16 1999-10-15 Method for determining differences between two or more models

Country Status (13)

Country Link
US (3) US6385610B1 (en)
EP (5) EP1121654A4 (en)
JP (6) JP2002528788A (en)
KR (5) KR20010103603A (en)
CN (5) CN1361891A (en)
AT (1) ATE333125T1 (en)
AU (5) AU6518099A (en)
BR (5) BR9914553A (en)
CA (5) CA2347467A1 (en)
DE (1) DE69932344T2 (en)
HK (4) HK1040552A1 (en)
IL (10) IL142564A0 (en)
WO (5) WO2000023882A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10564971B2 (en) 2014-12-10 2020-02-18 Samsung Electronics Co., Ltd. Method and apparatus for processing macro instruction using one or more shared operators
US11769489B2 (en) 2021-01-28 2023-09-26 Samsung Electronics Co., Ltd. Electronic device and method for performing shortcut command in electronic device

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU6518099A (en) * 1998-10-16 2000-05-08 Computer Associates Think, Inc. Method for determining differences between two or more models
US20050160401A1 (en) * 1999-10-16 2005-07-21 Computer Associates Think, Inc. System and method for adding user-defined objects to a modeling tool
US7734457B2 (en) * 1999-10-16 2010-06-08 Computer Associates Think, Inc. Method and system for generating dynamic comparison models
US7194405B2 (en) * 2000-04-12 2007-03-20 Activepoint Ltd. Method for presenting a natural language comparison of items
US6480970B1 (en) * 2000-05-17 2002-11-12 Lsi Logic Corporation Method of verifying data consistency between local and remote mirrored data storage systems
US6853997B2 (en) * 2000-06-29 2005-02-08 Infoglide Corporation System and method for sharing, mapping, transforming data between relational and hierarchical databases
US7089256B2 (en) * 2000-07-11 2006-08-08 Knowledge Dynamics, Inc. Universal data editor
US7421587B2 (en) * 2001-07-26 2008-09-02 Mcafee, Inc. Detecting computer programs within packed computer files
US7069547B2 (en) 2001-10-30 2006-06-27 International Business Machines Corporation Method, system, and program for utilizing impact analysis metadata of program statements in a development environment
US7194475B2 (en) 2001-10-30 2007-03-20 International Business Machines Corporation Method, system, and program for performing an impact analysis of program statements in at least one source code file
US7069263B1 (en) * 2002-02-19 2006-06-27 Oracle International Corporation Automatic trend analysis data capture
CH698890B1 (en) * 2003-03-19 2009-11-30 Roland Pulfer Modeling a complex system.
CH703081B1 (en) * 2003-03-19 2011-11-15 Roland Pulfer Analysis of a model of a complex system.
CH703073B1 (en) * 2003-03-19 2011-11-15 Roland Pulfer Comparing models a complex system.
CA2429335A1 (en) * 2003-05-22 2004-11-22 Cognos Incorporated System and method of determining impact of reports based on metadata model changes
CN1910576B (en) * 2003-10-22 2010-11-03 英特尔公司 Device for structured data transformation
KR100611098B1 (en) * 2003-12-12 2006-08-09 한국전자통신연구원 Satellite simulation modeling system using Interface Model
US8793602B2 (en) * 2004-01-15 2014-07-29 The Mathworks, Inc. System and method for scheduling the execution of model components using model events
US7484212B2 (en) * 2004-02-27 2009-01-27 International Business Machines Corporation Methods and arrangements for automated change plan construction and impact analysis
US7555531B2 (en) * 2004-04-15 2009-06-30 Microsoft Corporation Efficient algorithm and protocol for remote differential compression
US20060074980A1 (en) * 2004-09-29 2006-04-06 Sarkar Pte. Ltd. System for semantically disambiguating text information
GB2419700B (en) * 2004-10-29 2010-03-31 Hewlett Packard Development Co Methods for indexing data, systems, software and apparatus relng thereto
US20060168577A1 (en) * 2005-01-21 2006-07-27 Melo Antonio A V Software development system and method
EP1684170A3 (en) * 2005-01-21 2007-01-24 Outsystems, software em redes, S. A. Software development system and method
US7735062B2 (en) 2005-01-21 2010-06-08 Outsystems—Software Em Rede, S.A. Software development system and method
US20060168555A1 (en) * 2005-01-21 2006-07-27 Represas Ferrao Lucio E Software development system and method
JP4755427B2 (en) 2005-02-23 2011-08-24 インターナショナル・ビジネス・マシーンズ・コーポレーション Database access system and database access method
US20060259781A1 (en) * 2005-04-29 2006-11-16 Sony Corporation/Sony Electronics Inc. Method and apparatus for detecting the falsification of metadata
US20070006130A1 (en) * 2005-06-02 2007-01-04 Arnold Stamler Model oriented method of automatically detecting alterations in the design of a software system
CN100432999C (en) * 2005-06-06 2008-11-12 上海宝信软件股份有限公司 Method for data access for complete record by using list architecture under ORACLE
US20070250927A1 (en) * 2006-04-21 2007-10-25 Wintutis, Inc. Application protection
US9626161B2 (en) * 2006-12-12 2017-04-18 Ca, Inc. Computer readable medium and methods for filtering a dynamic comparison model
US8156147B1 (en) * 2007-02-06 2012-04-10 The Mathworks, Inc. Sharing of instructions across model boundaries
US8334995B2 (en) * 2007-09-19 2012-12-18 Sharp Laboratories Of America, Inc. Method and system for adaptive control of imaging node
US20090094616A1 (en) * 2007-10-04 2009-04-09 Delima Roberto Comparing Middleware Configurations
US20090138846A1 (en) * 2007-11-23 2009-05-28 Microsoft Corporation Extended macro recording
US7962457B2 (en) * 2008-02-12 2011-06-14 Computer Associates Think, Inc. System and method for conflict resolution
US8321407B2 (en) * 2008-02-24 2012-11-27 Panaya Ltd. Methods for calculating a combined impact analysis repository
US8170988B2 (en) * 2008-04-17 2012-05-01 The Boeing Company System and method for synchronizing databases
KR100956921B1 (en) * 2008-04-28 2010-05-11 권순용 database access method
US20100088686A1 (en) * 2008-10-06 2010-04-08 Microsoft Corporation Programming language with extensible syntax
CN101587492B (en) * 2009-05-11 2011-05-11 金蝶软件(中国)有限公司 Method and system for positioning processed object
KR100921255B1 (en) * 2009-05-14 2009-10-13 주식회사 신시웨이 Sql masking apparatus and method thereof
US20110313736A1 (en) * 2010-06-18 2011-12-22 Bioproduction Group, a California Corporation Method and Algorithm for Modeling and Simulating A Discrete-Event Dynamic System
US8316314B2 (en) * 2010-06-30 2012-11-20 Thermo Electron Scientific Instruments Llc Intelligent multi-functional macros language for analytical measurements
US8706744B2 (en) 2011-05-31 2014-04-22 Ca, Inc. Determining dependencies during macro expansion
US20130139113A1 (en) * 2011-11-30 2013-05-30 Microsoft Corporation Quick action for performing frequent tasks on a mobile device
US8990187B2 (en) 2012-05-21 2015-03-24 Google Inc. Efficient top-down hierarchical join on a hierarchically clustered data stream
CN107408113B (en) * 2015-03-31 2020-03-31 华为技术有限公司 Analysis engine and method for analyzing pre-generated data reports
US10585648B2 (en) 2016-06-01 2020-03-10 The Mathworks, Inc. Systems and methods for aggregating implicit and explicit event code of executable models
KR102195838B1 (en) 2019-04-10 2020-12-28 주식회사 티맥스 소프트 Method for managing database

Family Cites Families (95)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3656178A (en) * 1969-09-15 1972-04-11 Research Corp Data compression and decompression system
US4667290A (en) * 1984-09-10 1987-05-19 501 Philon, Inc. Compilers using a universal intermediate language
US4787035A (en) * 1985-10-17 1988-11-22 Westinghouse Electric Corp. Meta-interpreter
JPS63181033A (en) * 1987-01-23 1988-07-26 Hitachi Ltd Automatic program generating system
US5070534A (en) * 1988-10-17 1991-12-03 International Business Machines Corporation Simplified cad parametric macroinstruction capability including variational geometrics feature
US4931928A (en) * 1988-11-09 1990-06-05 Greenfeld Norton R Apparatus for analyzing source code
GB2227339A (en) * 1989-01-21 1990-07-25 Kashinath Narayan Dandeker Complex expression generator
JPH0363581A (en) * 1989-04-28 1991-03-19 Internatl Business Mach Corp <Ibm> Method of testing electronic circuit
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
US5257363A (en) 1990-04-09 1993-10-26 Meta Software Corporation Computer-aided generation of programs modelling complex systems using colored petri nets
US5699310A (en) * 1990-06-29 1997-12-16 Dynasty Technologies, Inc. Method and apparatus for a fully inherited object-oriented computer system for generating source code from user-entered specifications
FR2667711B1 (en) * 1990-10-09 1992-11-27 Thomson Csf METHOD FOR RECOGNIZING OBJECTS IN IMAGES AND ITS APPLICATION TO TRACKING OBJECTS IN IMAGE SEQUENCES.
US5295256A (en) * 1990-12-14 1994-03-15 Racal-Datacom, Inc. Automatic storage of persistent objects in a relational schema
US5507030A (en) * 1991-03-07 1996-04-09 Digitial Equipment Corporation Successive translation, execution and interpretation of computer program having code at unknown locations due to execution transfer instructions having computed destination addresses
US5596746A (en) 1991-10-21 1997-01-21 General Electric Company Method for transforming relational data base schemas into object models using ideal table meta models
US5421016A (en) 1991-12-12 1995-05-30 International Business Machines Corporation System and method for dynamically invoking object methods from an application designed for static method invocation
FR2688611A1 (en) * 1992-03-12 1993-09-17 Bull Sa USE OF A LANGUAGE WHICH TYPES RELATES TO THE CONTENT OF THE VARIABLES AND ALLOWS TO HANDLE COMPLEX CONSTRUCTIONS.
US5664181A (en) * 1992-03-17 1997-09-02 International Business Machines Corporation Computer program product and program storage device for a data transmission dictionary for encoding, storing, and retrieving hierarchical data processing information for a computer system
US5517641A (en) 1992-05-27 1996-05-14 Cdb Software, Inc. Restartable method to reorganize DB2 tablespace records by determining new physical positions for the records prior to moving using a non sorting technic
FR2694105B1 (en) 1992-07-22 1994-11-25 Bull Sa Use of an on-board interpreter language for the creation of an interactive user interface definition tool.
US5295059A (en) * 1992-09-09 1994-03-15 Allen-Bradley Company, Inc. Programmable controller with ladder diagram macro instructions
US5794229A (en) * 1993-04-16 1998-08-11 Sybase, Inc. Database system with methodology for storing a database table by vertically partitioning all columns of the table
JPH06332710A (en) * 1993-05-21 1994-12-02 Fujitsu Ltd Object directional data processing system
US5550971A (en) 1993-06-30 1996-08-27 U S West Technologies, Inc. Method and system for generating a user interface adaptable to various database management systems
JPH07244605A (en) * 1994-03-03 1995-09-19 Fujitsu Ltd Data base system and its update method
US5724425A (en) 1994-06-10 1998-03-03 Sun Microsystems, Inc. Method and apparatus for enhancing software security and distributing software
US5742828A (en) * 1994-08-03 1998-04-21 Microsoft Corporation Compiler and method for evaluation of foreign syntax expressions in source code
US5694539A (en) * 1994-08-10 1997-12-02 Intrinsa Corporation Computer process resource modelling method and apparatus
US5495613A (en) * 1994-08-18 1996-02-27 Unisys Corporation Method and apparatus for extending the capability of a system editor using high-level language transforms
US5692195A (en) 1994-08-31 1997-11-25 International Business Machines Corporation Parent class shadowing
US5768564A (en) * 1994-10-07 1998-06-16 Tandem Computers Incorporated Method and apparatus for translating source code from one high-level computer language to another
US5732192A (en) 1994-11-30 1998-03-24 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Global qualitative flow-path modeling for local state determination in simulation and analysis
US5721915A (en) 1994-12-30 1998-02-24 International Business Machines Corporation Interaction between application of a log and maintenance of a table that maps record identifiers during online reorganization of a database
US5768586A (en) * 1995-01-10 1998-06-16 Peoplesoft, Inc. Net change management for object-oriented modeling
US5513314A (en) 1995-01-27 1996-04-30 Auspex Systems, Inc. Fault tolerant NFS server system and mirroring protocol
US5644764A (en) * 1995-01-31 1997-07-01 Unisys Corporation Method for supporting object modeling in a repository
US5548754A (en) 1995-02-07 1996-08-20 International Business Machines Corporation Optimization of SQL queries using early-out join transformations
US5701487A (en) * 1995-03-27 1997-12-23 Sun Microsystems, Inc. Method and apparatus for displaying locations of errors detected inside software macro calls
EP0823092A1 (en) 1995-04-24 1998-02-11 Aspect Development, Inc. Modeling of object-oriented database structures, translation to relational database structures, and dynamic searches thereon
US5737592A (en) * 1995-06-19 1998-04-07 International Business Machines Corporation Accessing a relational database over the Internet using macro language files
US5717924A (en) * 1995-07-07 1998-02-10 Wall Data Incorporated Method and apparatus for modifying existing relational database schemas to reflect changes made in a corresponding object model
US5790861A (en) * 1995-07-07 1998-08-04 Sun Microsystems, Inc. Method and apparatus for generating executable code from object-oriented C++ source code
US5638381A (en) * 1995-07-21 1997-06-10 Motorola, Inc. Apparatus and method for deriving correspondence between storage elements of a first circuit model and storage elements of a second circuit model
JPH09511859A (en) 1995-08-23 1997-11-25 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン Method and computer system for generating a process management computer program from a process model
US5721929A (en) * 1995-10-06 1998-02-24 Electronic Data Systems Corporation Method for extending a fourth generation programming language
US5855014A (en) * 1995-11-03 1998-12-29 Application Partners, Inc. Getfield function for a relational workgroup platform using keyword and workflow databases
US6003037A (en) 1995-11-14 1999-12-14 Progress Software Corporation Smart objects for development of object oriented software
US5721925A (en) * 1995-12-01 1998-02-24 Unisys Corporation Method for generically invoking operation in an object oriented repository
US5802511A (en) * 1996-01-02 1998-09-01 Timeline, Inc. Data retrieval method and apparatus with multiple source capability
US5815415A (en) * 1996-01-19 1998-09-29 Bentley Systems, Incorporated Computer system for portable persistent modeling
US6091895A (en) 1996-03-27 2000-07-18 International Business Machines Corporation Object oriented central maintenance for programs and scripts
US5715453A (en) * 1996-05-31 1998-02-03 International Business Machines Corporation Web server mechanism for processing function calls for dynamic data queries in a web page
US5987123A (en) * 1996-07-03 1999-11-16 Sun Microsystems, Incorporated Secure file system
US5819305A (en) * 1996-08-23 1998-10-06 Motorola, Inc. Method and apparatus for configuring operating modes in a memory
US5974201A (en) * 1996-10-01 1999-10-26 Siemens Corporate Research, Inc. Smart image system
US6112024A (en) 1996-10-02 2000-08-29 Sybase, Inc. Development system providing methods for managing different versions of objects with a meta model
US5761494A (en) 1996-10-11 1998-06-02 The Sabre Group, Inc. Structured query language to IMS transaction mapper
US6065002A (en) 1996-10-31 2000-05-16 Systems And Computer Technology Corporation Simplified interface for relational database access using open database connectivity
US5983016A (en) 1996-11-12 1999-11-09 International Business Machines Corporation Execution engine in an object modeling tool
US5857197A (en) 1997-03-20 1999-01-05 Thought Inc. System and method for accessing data stores as objects
US5905982A (en) 1997-04-04 1999-05-18 International Business Machines Corporation Handling null values in SQL queries over object-oriented data
US6182274B1 (en) * 1997-05-01 2001-01-30 International Business Machines Corporation Reusing code in object-oriented program development
US5978789A (en) * 1997-05-07 1999-11-02 Lucent Technologies Inc. Efficient hypothetical query evaluation in a database system
US5878411A (en) 1997-06-27 1999-03-02 International Business Machines Corporation Dependent object class and subclass mapping to relational data store
US5822750A (en) * 1997-06-30 1998-10-13 International Business Machines Corporation Optimization of correlated SQL queries in a relational database management system
US6513152B1 (en) 1997-07-23 2003-01-28 International Business Machines Corporation Object oriented framework mechanism for customization of object oriented frameworks
US6081774A (en) * 1997-08-22 2000-06-27 Novell, Inc. Natural language information retrieval system and method
US6112304A (en) * 1997-08-27 2000-08-29 Zipsoft, Inc. Distributed computing architecture
US6292811B1 (en) * 1997-09-19 2001-09-18 Modernsoft, Inc. Populating cells of an electronic financial statement
US5974407A (en) 1997-09-29 1999-10-26 Sacks; Jerome E. Method and apparatus for implementing a hierarchical database management system (HDBMS) using a relational database management system (RDBMS) as the implementing apparatus
US6085120A (en) * 1997-11-17 2000-07-04 International Business Machines Corporation Data system processing and method for creating application extension
US6105043A (en) * 1997-12-16 2000-08-15 International Business Machines Corporation Creating macro language files for executing structured query language (SQL) queries in a relational database via a network
US6247020B1 (en) 1997-12-17 2001-06-12 Borland Software Corporation Development system with application browser user interface
US6374256B1 (en) 1997-12-22 2002-04-16 Sun Microsystems, Inc. Method and apparatus for creating indexes in a relational database corresponding to classes in an object-oriented application
US6243709B1 (en) 1998-06-29 2001-06-05 Sun Microsystems, Inc. Method and apparatus for loading stored procedures in a database corresponding to object-oriented data dependencies
US6114978A (en) 1998-01-14 2000-09-05 Lucent Technologies Inc. Method and apparatus for assignment of shortcut key combinations in a computer software application
US6453356B1 (en) 1998-04-15 2002-09-17 Adc Telecommunications, Inc. Data exchange system and method
US6052720A (en) 1998-05-14 2000-04-18 Sun Microsystems, Inc. Generic schema for storing configuration information on a server computer
US6446109B2 (en) 1998-06-29 2002-09-03 Sun Microsystems, Inc. Application computing environment
US6226792B1 (en) 1998-10-14 2001-05-01 Unisys Corporation Object management system supporting the use of application domain knowledge mapped to technology domain knowledge
AU6518099A (en) 1998-10-16 2000-05-08 Computer Associates Think, Inc. Method for determining differences between two or more models
US6859919B1 (en) 1998-10-16 2005-02-22 Computer Associates Think, Inc. Object modeling tool with meta model semantic registry (rules) a meta data manager for object(s) properties an object/property interface for instance(s) of objects/properties received via object/property interface of the object factory registry
US6502234B1 (en) 1999-01-15 2002-12-31 International Business Machines Corporation Component based wizard for creating wizards
US6678882B1 (en) 1999-06-30 2004-01-13 Qwest Communications International Inc. Collaborative model for software systems with synchronization submodel with merge feature, automatic conflict resolution and isolation of potential changes for reuse
KR200258626Y1 (en) 1999-06-30 2001-12-28 윤청목 Mixer combined with Juice Extractor
US6385767B1 (en) 1999-09-30 2002-05-07 Unisys Corporation Method and system for creating and manipulating extensions to version control systems
US6665677B1 (en) 1999-10-01 2003-12-16 Infoglide Corporation System and method for transforming a relational database to a hierarchical database
US7734457B2 (en) 1999-10-16 2010-06-08 Computer Associates Think, Inc. Method and system for generating dynamic comparison models
US20050160401A1 (en) 1999-10-16 2005-07-21 Computer Associates Think, Inc. System and method for adding user-defined objects to a modeling tool
JP2001265361A (en) 2000-03-14 2001-09-28 Sony Corp Device and method for providing information, device and method for providing information, and program storage medium
US7353289B2 (en) 2000-11-06 2008-04-01 Telecommunication Systems, Inc. System for an open architecture development platform with centralized synchronization
US6754671B2 (en) 2001-05-02 2004-06-22 Sun Microsystems, Inc. Apparatus for Meta Object Facility repository bootstrap
US20030014439A1 (en) 2001-06-20 2003-01-16 International Business Machines Corporation Defining a markup language representation for state chart data
US7322025B2 (en) 2001-07-17 2008-01-22 Tata Consultancy Services Limited Method and apparatus for versioning and configuration management of object models
US6904588B2 (en) 2001-07-26 2005-06-07 Tat Consultancy Services Limited Pattern-based comparison and merging of model versions

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10564971B2 (en) 2014-12-10 2020-02-18 Samsung Electronics Co., Ltd. Method and apparatus for processing macro instruction using one or more shared operators
US11769489B2 (en) 2021-01-28 2023-09-26 Samsung Electronics Co., Ltd. Electronic device and method for performing shortcut command in electronic device

Also Published As

Publication number Publication date
CA2346928A1 (en) 2000-04-27
HK1040440A1 (en) 2002-06-07
BR9914552A (en) 2001-11-27
WO2000023919A9 (en) 2000-11-16
KR20010103603A (en) 2001-11-23
CN1323424A (en) 2001-11-21
IL142564A0 (en) 2002-03-10
IL142572A (en) 2007-06-03
BR9914549A (en) 2002-01-15
ATE333125T1 (en) 2006-08-15
IL142484A (en) 2006-10-31
CA2347467A1 (en) 2000-04-27
JP2002528793A (en) 2002-09-03
JP2002528783A (en) 2002-09-03
JP2002528788A (en) 2002-09-03
EP1121655A1 (en) 2001-08-08
EP1129391A4 (en) 2003-03-12
IL142482A (en) 2006-08-20
EP1121654A1 (en) 2001-08-08
IL142482A0 (en) 2002-03-10
IL142572A0 (en) 2002-03-10
CN1129859C (en) 2003-12-03
KR20010103604A (en) 2001-11-23
AU1445200A (en) 2000-05-08
AU1315400A (en) 2000-05-08
BR9914553A (en) 2001-06-26
EP1121655B1 (en) 2006-07-12
IL142564A (en) 2006-08-01
US6601023B1 (en) 2003-07-29
CA2346925A1 (en) 2000-04-27
EP1129391A2 (en) 2001-09-05
CN1192321C (en) 2005-03-09
AU775431B2 (en) 2004-07-29
EP1121640B1 (en) 2016-07-27
CN1129068C (en) 2003-11-26
AU772191B2 (en) 2004-04-08
HK1040441A1 (en) 2002-06-07
WO2000023917A9 (en) 2000-11-02
CN1361891A (en) 2002-07-31
US6385610B1 (en) 2002-05-07
AU1207100A (en) 2000-05-08
EP1121640A1 (en) 2001-08-08
EP1121655A4 (en) 2003-02-05
JP2005285141A (en) 2005-10-13
DE69932344T2 (en) 2007-07-05
KR20010089309A (en) 2001-09-29
CA2346924A1 (en) 2000-04-27
BR9914427A (en) 2001-06-26
CA2347495A1 (en) 2000-04-27
EP1121639A1 (en) 2001-08-08
EP1121639B1 (en) 2016-08-03
WO2000023863A3 (en) 2000-11-23
CN1359489A (en) 2002-07-17
CN1325514A (en) 2001-12-05
EP1121639A4 (en) 2002-09-11
WO2000023883A1 (en) 2000-04-27
IL142484A0 (en) 2002-03-10
HK1040552A1 (en) 2002-06-14
AU761228B2 (en) 2003-05-29
BR9914551A (en) 2002-03-05
JP2002528789A (en) 2002-09-03
DE69932344D1 (en) 2006-08-24
WO2000023863A2 (en) 2000-04-27
US7711685B1 (en) 2010-05-04
EP1121654A4 (en) 2003-09-24
AU6518099A (en) 2000-05-08
WO2000023882A1 (en) 2000-04-27
HK1042140A1 (en) 2002-08-02
KR20010093777A (en) 2001-10-29
AU1315200A (en) 2000-05-08
EP1121640A4 (en) 2002-09-11
IL142571A (en) 2007-02-11
CN1323416A (en) 2001-11-21
WO2000023919A1 (en) 2000-04-27
WO2000023917A1 (en) 2000-04-27
JP2002528794A (en) 2002-09-03
IL142571A0 (en) 2002-03-10

Similar Documents

Publication Publication Date Title
KR20010106514A (en) Method and system for an extensible macro language
World Wide Web Consortium XSL transformations (XSLT) version 2.0
EP1477897A2 (en) Reflection-based processing of input parameters for commands
JP5047621B2 (en) Mechanisms for obtaining and applying syntax constraints in interactive environments
Patrascoiu Yatl: Yet another transformation language-reference manual version 1.0
JP2007519073A (en) Administrative tool environment
EP0789885A2 (en) Method and apparatus for tree data structure manipulation and translating source code from one high-level computer language to another
JP2007509411A (en) Mechanism to provide data driven command line output
JP2007509407A (en) A mechanism that provides an extension to command line instructions
US8566790B2 (en) Integration of external schemas and types into native programming languages
KR20040097937A (en) System and method for employing object-based pipelines
JP2007510203A (en) Mechanism for analyzing partially unresolved input
Schröer The GENTLE Compiler Construction System
Arnoldus et al. Code generation with templates
US20080244380A1 (en) Method and device for evaluating an expression on elements of a structured document
EP1444071B1 (en) A robot system and a method and a software product for the robot system
Lopez-Rojas OMCCp: A MetaModelica Based Parser Generator Applied to Modelica
JP2011513824A (en) System representation and handling technology
Kay et al. An XSLT compiler written in XSLT: can it perform
Wielemaker SWI-Prolog 2.9. 6
Asai et al. Functional un| unparsing
Satmári Frege IDE with JetBrains MPS
Wielemaker SWI-Prolog 3.2
Schäufele SKilL language server
Watson et al. Practicalities of Syntax Analysis

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application