WO2001006357A1 - Metalangage pour applications commerciales en c?++¿ - Google Patents

Metalangage pour applications commerciales en c?++¿ Download PDF

Info

Publication number
WO2001006357A1
WO2001006357A1 PCT/US1999/016770 US9916770W WO0106357A1 WO 2001006357 A1 WO2001006357 A1 WO 2001006357A1 US 9916770 W US9916770 W US 9916770W WO 0106357 A1 WO0106357 A1 WO 0106357A1
Authority
WO
WIPO (PCT)
Prior art keywords
script
recited
stack machine
user
language
Prior art date
Legal status (The legal status 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 status listed.)
Ceased
Application number
PCT/US1999/016770
Other languages
English (en)
Inventor
Andreas Hohmann
Erik Duymelinck
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CGI Technologies and Solutions Inc
Original Assignee
American Management Systems Inc
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 American Management Systems Inc filed Critical American Management Systems Inc
Priority to AU52275/99A priority Critical patent/AU5227599A/en
Priority to CA002302306A priority patent/CA2302306A1/fr
Priority to EP99937436A priority patent/EP1196846A1/fr
Publication of WO2001006357A1 publication Critical patent/WO2001006357A1/fr
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages

Definitions

  • microfiche appendix having 3 microfiche and 262 frames is included herewith containing the detailed design specification for the present invention.
  • the present invention is directed to a meta-language for C++ business software applications. More particularly, to a C++ metalanguage that can access C++ objects and interface to a run-time type identification mechanism that enables the changing of a C++ meta- language scripts without the need to recompile C++ source code or for the user to be familiar with a programming language.
  • Meta-languages were developed to eliminate the programmer from the loop, but did not offer access to C++ objects.
  • CML C++ Meta- Language
  • CML C++ Meta- Language
  • CML C++ Meta-Language
  • the CML provides a scripting layer on top of and interfacing to a C++ layer.
  • the use of a meta-language allows to control the functionality at run-time, using conditions and processing rules, stored in reference data or plain text files.
  • Business functionality, implemented using the CML can be changed without recompilation of C++ code and due to the higher level of abstraction of the CML, non-technical staff can maintain meta-language scripts.
  • Figure 1 is an overall software configuration of the present invention.
  • Figure 2 is a diagram showing the interaction between the CML source script, the CML Framework and the business application in the present invention.
  • Figure 3 is a flowchart showing the method of creating and executing a CML script as shown in figure 2 as practiced by an embodiment of the present invention.
  • Figure 4 is a diagram showing the architecture of the stack- machine in the present invention.
  • a scripting language is a high-level language providing basic programming constructs.
  • a meta-language is a high-level language that is directly tied to a specific application.
  • Reference data is usually stored on a permanent storage such as a database and is used by processing the data as reference values for validation or conditional logic.
  • Business logic is the implementation of a business process using rules and processing logic. If a business process or associated rules need to be changed, the business logic must also be modified.
  • a class is a program module that combines logic and state.
  • An example of a « class is the Event class that is used to represent telephone calls.
  • An object is a specific instance of a class.
  • An example of an object is the instance of a Event object that represents a specific telephone call.
  • the Event object is an instance of the Event class, its state represents the data of the specific telephone call.
  • An attribute is part of an object's state and defines some property of the class.
  • An example of an attribute in an Event object is the originating phone number of the telephone call that is represented by the object.
  • a method is part of a class or object and performs specific operations. Methods can be called by other objects or by the object itself.
  • An example of a method in an Event object is a method providing the call duration. The duration can either be calculated (from start and end time) or simply provide access to a duration attribute in the Event object.
  • a reflection layer provides a mechanism to browse objects at runtime for their type, attributes and methods. This facilitates late binding where it is determined at runtime what operations are executed.
  • a strongly typed system allows the use of typed data in programs to be checked when the program is compiled. For example it can be verified whether a return value of a certain type can be assigned to a variable of a certain type.
  • a type inference in a language providing type inference, the types of literals, values, and expressions in a program do not have to be declared by the programmer but are calculated once the program is compiled.
  • the C++ Meta-Language (CML) framework 34 shown in Figure 2 comprises compiler 120 and stack machine 100 and provides applications with tools necessary to compile and execute metalanguage scripts.
  • the CML framework is coupled with a C++ reflection layer, also referred to as run-time type identification ("RTTI")
  • meta-language layer 10 without the existence of the metalanguage layer 10, all business application logic would be traditionally implemented in the application core layer 20 in form of C++ business objects. In order to change to the business logic, C++ code would have to be modified, the application core layer would have to be recompiled and re-tested. Non-technical staff, familiar with the business process, could not perform these modifications. However, with meta-language layer 10, business logic can be implemented in the meta-language layer 10 by the non-technical staff. The metalanguage 10 provides a higher level of abstraction than C++ and can more easily be maintained by non-technical staff. Business logic contained in meta-language 10 can be modified without the extensive effort of rebuilding the application. A drawback of the meta-language layer 10 is performance. Processing implemented in meta-language 10 is executed more slowly than processing implemented in application core 20 C++ objects. Therefore, a balance of flexibility and performance needs to be considered when planning where to place business logic.
  • meta-language layer 10 contains the specification of the business logic. This meta-language layer 10 covers the functionality that is subject to frequent change such as the output formats or processing rules. The meta-language layer 10 is based on building blocks provided by the application core 20. Most of the complex logic of the business functions is contained in the meta- language layer 10.
  • the application core layer 20 includes application-specific C++ classes. This application core layer 20 also contains the hard-coded business functionality that is not embedded in the meta-language layer 10. The application core layer 20 is built on top of the infrastructure layer 30 for the particular kind of application (batch, online, server) intended. Performance critical processing has to be carried out by low level C++ objects and is implemented in the application core layer 20.
  • the infrastructure layer 30 provides services that can be used by all applications.
  • the infrastructure offers a standard interface to the operating system 40 including additional services such database access, logging, messaging, and profiling.
  • the infrastructure layer 30 provides common services that can be used by ail applications built on top of the infrastructure.
  • the infrastructure layer 30 also provides a reflection layer (RTTI) 32 that allows for access to attributes and methods of C++ objects by name as required by the scripting layer.
  • RTTI reflection layer
  • a reflection layer is a conventional mechanism for changing structure and behavior of software systems dynamically.
  • the reflection layer provides information and access to system properties and makes the software self-aware.
  • Programming languages, such as JAVA contain reflection layers as a feature of the language itself. Implementation of reflection layers is described in A SYSTEM OF PATTERNS, by Frank Buschman et. al., Wiley and
  • CML C++ meta-language
  • the CML framework 34 shown in Figure 1 uses a combination of techniques to provide the meta-language layer 10 on top of application core layer 20.
  • the main features of the CML framework 34 comprises:
  • CML is a strongly-typed compiled language, as illustrated in the discussion of table 1 below.
  • the target of the compilation is not machine code, but a sequence of instructions for a small virtual machine (stack machine 100 shown in Figure 2).
  • this stack machine program 80 (SMP 80) is contained in a C++ structure and executed by a stack machine 100 realized in C++ when executing the program.
  • This approach ensures that most of the burden of translating the CML source script 60, shown in Figure 2, can be carried out before actually executing the program.
  • the compiler 120 shown in Figure 2, can check the types of all operations avoiding type errors during the execution of the program.
  • the compiler can generate typed operations for the stack machine 100 that can be executed much faster than dynamically typed operations.
  • Table 1 below depicts a simple CML script 60, shown in figure 2, provided for illustrative purposes only dealing with a very simple example of bill formatting.
  • the purpose of this script is to print all events contained in the given document sorted by start time. It also has to compute the total duration as well as the total charge grouped by "event group”. As a final operation the sample program prints the results.
  • C++ classes In the sample program shown in table 1 , it is assumed that three C++ classes have been defined with run-time type information using the RTTI mechanism. These three C++ classes are the Document class, Invoice class, and Event class.
  • the Document class contains a list of events which is simply called events.
  • the Invoice class extends the Document class by an integer attribute number.
  • An Event class has four attributes, the start time, the duration, the charge, and the group. Moreover, it provides a method getDestination which returns the destination (called number) as a string.
  • Lines 2-4 of table 1 define the first program printEvent which contains the print commands for a single event.
  • the argument type declaration uses a Pascal-like style.
  • Event is the C++ class supplied with run-time type information so that its attributes and methods can be used from CML as shown in Line 3.
  • Lines 7-8 of table 1 show how the Invoice number attribute can be used.
  • a type-check condition such as "is Invoice” automatically changes the type of the variable within the associated block (here, the "then” block of the if-statement). In this way attributes of derived classes can be accessed without any additional type casting.
  • Line 11 of table 1 introduces a new variable. Variables do not have to be declared. They are created with the first assignment, and their type is the type of the value which is assigned to it (here an integer).
  • Line 12 of table 1 defines another new variable which is a list of events. The right hand side of the assignment creates this list.
  • container types such as lists, vectors, tuples and maps, the contained types have to be specified to allow for compile-time type checking.
  • Line 13 of table 1 defines a map (also called associative array) of decimals indexed by strings. For maps, both, the type of the keys and the type of the values, have to be provided.
  • Line 15 of table 1 shows the sort statement for lists. It is one of the CML commands which have been built in for convenience.
  • Line 17 of table 1 starts a loop through the list of event contained in the document.
  • the syntax for the control statements has been chosen to be short but readable (no begin-end, no curly brackets as in some programming languages).
  • Line 18 of table 1 calls the first program printEvent with the current event.
  • Line 19 of table 1 shows the with statement which (as in most scripting languages) allows for using attributes names directly ("duration” instead of "event.duration”).
  • Figure 2 is a diagrams illustrating the data and processing flow in the present invention as well as illustrating the different phases of compilation and execution.
  • Figure 3 is a flowchart showing the method of creating or modifying and executing a CML source script. Both figures will be discussed together to illustrate the processing flow of the present invention.
  • the CML source script 60 is stored on a Datastore (e.g. database or file system) 55 external to the CML source script 60 .
  • a Datastore e.g. database or file system
  • the CML source script 60 can be created and modified with standard text editing tools.
  • An Application intending to execute a CML program contained in a CML source script 60 loads the corresponding CML source script 60 from the Datastore 55 in operation 210 of figure 3.
  • the Compiler 120 is invoked which is part of the CML Framework 34. Compilation is organized into two operations within operation 220.
  • the syntactical analysis of the CML source script 60 is performed that transforms the source text into a parse tree 70, shown in figure 2, reflecting the syntactical structure of the program and the actual translation of the parse tree into the stack machine program 100.
  • Second, a translation process transforms the parse tree 70 into a Stack-Machine Program SMP 80.
  • the implementation of the CML translation uses a set of translator objects, one for each type of parse node (not shown) (e.g., a translator for if-statements, another one for assignments, etc.).
  • a translator for if-statements, another one for assignments, etc.
  • An essential part of the translation process is the handling of types.
  • the CML compiler 120 uses bindings and environments.
  • a binding gives a path (such as "event.duration") a specific meaning (such as "field of type int"). More precisely, a binding maps a path to a variable, field (attribute of an object variable), method, or a CML program that is part of another CML module.
  • An environment manages the bindings during the compilation process. Besides keeping the bindings, the environment also handles the scope of variables and the logic for "with" statements.
  • the environment changes during the compilation as new variables are created or existing ones go out of scope. Those changes are kept in a history that allows for recovering the state of the environment. The history is implemented as stacks (detailed further below) for each bound variable and another stack containing the paths that have been changed.
  • the application calls the stack machine 100 with the SMP 80 and the input data 90.
  • the stack machine 100 executes the SMP 80 and returns the output data 110 to the application. If the CML source script 60 was modified, the application loads the modified version of the script and recompiles it before executing it.
  • the CML framework uses a stack 160 to hold temporary values and a frame 150 to hold variables accessible by an index.
  • the virtual stack machine 100 operates by copying data between stack 160 and frame 150 or act on the stack 160 itself as depicted in Figure 4.
  • frame 150 and stack 160 use vectors of generic values.
  • a stack machine program (SMP) 80 is a sequence of operations 140 which determine the actions carried out with stack 160, frame 150, and output stream 110.
  • the stack 160 is a LIFO system (Last-In, First-Out). Values are retrieved (or popped) from the stack in the reverse order they were added (or pushed) onto it.
  • LIFO system Last-In, First-Out
  • the frame 150 is an indexed storage system, i.e., it can be viewed as a set of numbered cells. Moving a value from or to the frame requires to know the index number of the cell from which a value is read or to which it is written. From the CML point of view, the frame manages the variables used in a program.
  • a called program will always have its own local Frame 150.
  • a Frame 150 is associated with one instance of a SMP 80 only. At startup, it only contains the objects that are the parameters of that program (Input Data 90 shown in figure 2).
  • the output stream 110 is the piace where text is sent to for output. From a CML program, the output stream 110 is the target of print statements. Alternate Embodiments
  • any number of computer languages may be used.
  • Java may be used instead of C++.
  • Different version of UNIX may also be used as well as any comparable operating system.
  • Almost any processor or computer may be used such as a Sun computer.

Landscapes

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

Abstract

Cette invention se rapporte à un langage d'information en code machine du type métalangage C++ ('CML'), implémenté au-dessus de C++ et fournissant un couplage direct à C++ en utilisant une couche de réflexion. Ce langage d'information en code machine CML forme un langage d'information en code machine basé objet de niveau élevé avec un syntaxe simple. Il constitué également un langage fortement typé avec une capacité d'afférence du type. En utilisant ce langage d'information en code machine CML, la compilation dans une représentation interne pour une machine à pile est d'abord réalisée. Une structure de réflexion (RTTI) permet l'accès direct aux attributs et méthodes de classe C++ par nom et permet à l'information en code machine d'interagir avec des objets commerciaux programmés en C++.
PCT/US1999/016770 1999-07-15 1999-07-26 Metalangage pour applications commerciales en c?++¿ Ceased WO2001006357A1 (fr)

Priority Applications (3)

Application Number Priority Date Filing Date Title
AU52275/99A AU5227599A (en) 1999-07-15 1999-07-26 Meta-language for c++ business applications
CA002302306A CA2302306A1 (fr) 1999-07-15 1999-07-26 Langage meta pour application de transactions en c++
EP99937436A EP1196846A1 (fr) 1999-07-15 1999-07-26 Metalangage pour applications commerciales en c++

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US35339499A 1999-07-15 1999-07-15
US09/353,394 1999-07-15

Publications (1)

Publication Number Publication Date
WO2001006357A1 true WO2001006357A1 (fr) 2001-01-25

Family

ID=23388903

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1999/016770 Ceased WO2001006357A1 (fr) 1999-07-15 1999-07-26 Metalangage pour applications commerciales en c?++¿

Country Status (4)

Country Link
EP (1) EP1196846A1 (fr)
AU (1) AU5227599A (fr)
CA (1) CA2302306A1 (fr)
WO (1) WO2001006357A1 (fr)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6883144B2 (en) 2001-06-26 2005-04-19 Siemens Medical Solutions Health Services Corporation System supporting use of customizable expressions by applications
EP1249743B1 (fr) * 2001-04-11 2006-11-02 ALSTOM Technology Ltd Procédé et programme d'ordinateur pour la simulation statique des rapports non-linéaires dans des réseaux thermodynamiques
US7392237B2 (en) 2001-04-26 2008-06-24 Siemens Medical Solutions Usa, Inc. Identifier code translation system
US7873592B2 (en) 2007-04-20 2011-01-18 Microsoft Corporation Type inference for object-oriented languages
US10318635B2 (en) 2012-09-28 2019-06-11 Cerner Innovation, Inc. Automated mapping of service codes in healthcare systems
US10403391B2 (en) 2012-09-28 2019-09-03 Cerner Health Services, Inc. Automated mapping of service codes in healthcare systems
US10490306B2 (en) 2015-02-20 2019-11-26 Cerner Innovation, Inc. Medical information translation system
US10565315B2 (en) 2012-09-28 2020-02-18 Cerner Innovation, Inc. Automated mapping of service codes in healthcare systems
CN115686470A (zh) * 2022-11-02 2023-02-03 四川大学 基于CAX软件录制用户操作自动生成Python脚本的方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0722140A1 (fr) * 1994-07-12 1996-07-17 Jr East Japan Information Systems Co., Ltd. Procede d'ecriture d'un programme pour une entreprise specifique
GB2320111A (en) * 1996-12-06 1998-06-10 Jba Holdings Plc Data processing system and method for software development/configuration

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0722140A1 (fr) * 1994-07-12 1996-07-17 Jr East Japan Information Systems Co., Ltd. Procede d'ecriture d'un programme pour une entreprise specifique
GB2320111A (en) * 1996-12-06 1998-06-10 Jba Holdings Plc Data processing system and method for software development/configuration

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
BREUER P T ET AL: "A PRETTIER COMPILER-COMPILER: GENERATING HIGHER-ORDER PARSERS IN C", SOFTWARE PRACTICE & EXPERIENCE,GB,JOHN WILEY & SONS LTD. CHICHESTER, vol. 25, no. 11, 1 November 1995 (1995-11-01), pages 1263 - 1297, XP000655547, ISSN: 0038-0644 *
HOEVE VAN F ET AL: "AN OBJECT-ORIENTED APPROACH TO APPLICATION GENERATION", SOFTWARE PRACTICE & EXPERIENCE,GB,JOHN WILEY & SONS LTD. CHICHESTER, vol. 17, no. 9, 1 September 1987 (1987-09-01), pages 623 - 645, XP000001704, ISSN: 0038-0644 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1249743B1 (fr) * 2001-04-11 2006-11-02 ALSTOM Technology Ltd Procédé et programme d'ordinateur pour la simulation statique des rapports non-linéaires dans des réseaux thermodynamiques
US7392237B2 (en) 2001-04-26 2008-06-24 Siemens Medical Solutions Usa, Inc. Identifier code translation system
US6883144B2 (en) 2001-06-26 2005-04-19 Siemens Medical Solutions Health Services Corporation System supporting use of customizable expressions by applications
US7873592B2 (en) 2007-04-20 2011-01-18 Microsoft Corporation Type inference for object-oriented languages
US10318635B2 (en) 2012-09-28 2019-06-11 Cerner Innovation, Inc. Automated mapping of service codes in healthcare systems
US10403391B2 (en) 2012-09-28 2019-09-03 Cerner Health Services, Inc. Automated mapping of service codes in healthcare systems
US10565315B2 (en) 2012-09-28 2020-02-18 Cerner Innovation, Inc. Automated mapping of service codes in healthcare systems
US10490306B2 (en) 2015-02-20 2019-11-26 Cerner Innovation, Inc. Medical information translation system
US11978541B2 (en) 2015-02-20 2024-05-07 Cerner Innovation, Inc. Medical information translation system
CN115686470A (zh) * 2022-11-02 2023-02-03 四川大学 基于CAX软件录制用户操作自动生成Python脚本的方法和装置

Also Published As

Publication number Publication date
AU5227599A (en) 2001-02-05
CA2302306A1 (fr) 2001-01-15
EP1196846A1 (fr) 2002-04-17

Similar Documents

Publication Publication Date Title
Clifton et al. MultiJava: Design rationale, compiler implementation, and applications
US5586328A (en) Module dependency based incremental compiler and method
US8850409B2 (en) Notification-based constraint set translation to imperative execution
US7272821B2 (en) System and method of universal programming language conversion
EP1258805B1 (fr) Placement d'une instruction de signalisation d'exception dans du code compilé
US6823504B1 (en) Method and apparatus for interfacing a javascript interpreter with library of host objects implemented in java
Snyder CommonObjects: an overview
US20040268301A1 (en) Adding new compiler methods to an integrated development environment
EP0789875A1 (fr) Procede et appareil de traduction d'un code source d'un langage informatique evolue a un autre
US6951014B1 (en) Method and apparatus for representation of a JavaScript program for execution by a JavaScript interpreter
Gisi et al. Extending a tool integration language
US6898786B1 (en) Javascript interpreter engine written in Java
Buro et al. On multi-language abstraction: Towards a static analysis of multi-language programs
US20040268307A1 (en) Representing type information in a compiler and programming tools framework
EP1196846A1 (fr) Metalangage pour applications commerciales en c++
Biboudis et al. Recaf: Java dialects as libraries
Brandis et al. The Oberon system family
US20070074185A1 (en) Identifier expressions
Ghuloum An incremental approach to compiler construction
Holt et al. The Turing language report
Gregor et al. Concepts for C++ 0x (revision 1)
Sostaks et al. The implementation of MOLA to L3 compiler
Beevi et al. MetaJC++: A flexible and automatic program transformation technique using meta framework
Hicks Types and intermediate representations
Wielemaker SWI-Prolog 2.9. 6

Legal Events

Date Code Title Description
ENP Entry into the national phase

Ref document number: 2302306

Country of ref document: CA

WWE Wipo information: entry into national phase

Ref document number: 1999937436

Country of ref document: EP

AK Designated states

Kind code of ref document: A1

Designated state(s): AL AM AT AU AZ BA BB BG BR BY CA CH CN CU CZ DE DK EE ES FI GB GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT UA UG US UZ VN YU ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW SD SL SZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
121 Ep: the epo has been informed by wipo that ep was designated in this application
WWP Wipo information: published in national office

Ref document number: 1999937436

Country of ref document: EP

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

WWW Wipo information: withdrawn in national office

Ref document number: 1999937436

Country of ref document: EP