Extendable compiler framework
First Claim
1. A method for performing a compilation process on a computer program, the method comprising:
- initializing a compiler framework, a programming language-independent portion of the compilation process that;
controls overall compilation process of the computer program; and
maintains a type cache to store types defined, wherein the type cache allows types defined in different programming languages to be intermixed;
invoking through a language interface a first language module to perform programming language-dependent analysis of the computer program;
retrieving language-specific information about the computer program from the language interface;
interacting between the first language module and a second language module through the language interface, wherein the second language is a nested language in the first language;
invoking through the first language interface the first language module to perform code generation for the computer program;
providing compilation result to one or more clients based on at least one of the analysis and the code generation.
1 Assignment
0 Petitions
Accused Products
Abstract
To meet the current trend in computer programming, a multi-programming-language compiler system is designed to include a compiler framework which creates a general environment in which to carry out compilation and language modules to encapsulate the details of various programming languages. Such a system makes it easy for tool vendors and end users to adapt to a world where computer programs are written in multiple languages. New language modules may be written that add support for new languages to the compiler framework. It may also be possible to extend existing language modules so that a variant on an existing language may be added to the compiler framework. Such a system may also be adapted to permit several different clients to access detailed language information from the compiler framework. These clients may include a standard command-line shell or a sophisticated multi-language integrated development environment.
This description is not intended to be a complete description of, or limit the scope of, the invention. Other features, aspects, and objects of the invention can be obtained from a review of the specification, the figures, and the claims.
210 Citations
12 Claims
-
1. A method for performing a compilation process on a computer program, the method comprising:
-
initializing a compiler framework, a programming language-independent portion of the compilation process that; controls overall compilation process of the computer program; and maintains a type cache to store types defined, wherein the type cache allows types defined in different programming languages to be intermixed; invoking through a language interface a first language module to perform programming language-dependent analysis of the computer program; retrieving language-specific information about the computer program from the language interface; interacting between the first language module and a second language module through the language interface, wherein the second language is a nested language in the first language; invoking through the first language interface the first language module to perform code generation for the computer program; providing compilation result to one or more clients based on at least one of the analysis and the code generation. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A machine readable medium having instructions stored thereon to cause a system to:
-
initializing a compiler framework, a programming language-independent portion of the compilation process that; controls overall compilation process of the computer program; and maintains a type cache to store types defined, wherein the type cache allows types defined in different programming languages to be intermixed; invoke through a language interface a first language module to perform programming language-dependent analysis of the computer program; retrieve language-specific information about the computer program from the language interface; interact between the first language module and a second language module through the language interface, wherein the second language is a nested language in the first language; invoke through the language interface the first language module to perform code generation for the computer program; provide compilation result to one or more clients based on at least one of the analysis and the code generation. - View Dependent Claims (8, 9, 10, 11, 12)
-
Specification