None
None.
Embodiments of the present invention relate to the field of compilers. More particularly, embodiments of the invention are directed to a system and method for compiling markup language files into full-fledged applications or dynamic link libraries (DLLs).
With the growth of Internet use, the use of web programming languages such as markup languages has become widespread. A markup language is a notation system for describing documents in which the text of documents is intermixed with markup or annotations that describe aspects of the structure or format of a document. Markup languages include such languages as Extensible Markup Language (XML), Hypertext Markup Language (HTML), Standard Generalized Markup Language (SGML), and Transaction Authority Markup Language (XAML). These markup languages are typically used to create documents that are deployed the web.
A tool is needed for enabling the creation of a real executable application or a dynamic link library (dll) that can be reused in one or more executable applications, using a markup language. Writing an application declaratively enables a RAD environment, thus greatly reducing the time it takes to write a typical application program. Furthermore, the ability to mix both markup and code-behind files enables the development of an application that has the best of both the Web Applications and traditional applications written in a language like C#. Thus, a markup language can be used just like any other traditional coding language to build real applications and libraries, but with the ease of use that comes with the declarative nature of a markup language.
Embodiments of the present invention are directed to a system for compiling a markup language file into an executable application. The compiling system includes a parser for parsing the markup language file and providing the compiling system with detailed token information. The system further includes a code generator for generating a language-independent tree of code expressions based on the token information, wherein the code expressions represent the markup file as a class. The compiling system also includes a compiler for compiling the code expressions to create an executable application or a library dll. The compiling system may compile code-behind files along with the markup language files.
In a further aspect, the invention is directed to a compiling system including a parser for parsing the markup language file and providing the compiling system with detailed token information to the compiling system, which may be user specified code snippet tokens or non-code tokens such as tags, properties or events in the markup. The compiling system may also include a binary file generator for generating a binary file from the non-code token information, wherein the binary file contains one record for each non-code token. The system may additionally include a code generator for generating a language-independent code expression representing the root tag in the markup language file as a class. The compiling system also includes a compiler for compiling the code expression to create an executable application or a library dill. The compiling system may compile code-behind files along with the markup language files. The compiling system also adds the binary file generated above into a resource that is embedded into the main application executable or library dll, or into a separate satellite assembly dll for localization scenarios.
The present invention is described in detail below with reference to the attached drawings figures, wherein:
System Overview
Embodiments of the present invention are directed to a system and method for compiling markup files. As illustrated in
A compiling system 10 may receive the markup file 2 and the code-behind file 4 separately or may receive the information from the code-behind file 4 added “inline” inside the markup file 2. The compiling system 10 includes at least a compiler 12 and a parser 14. The parser 14 divides the original files into small components or tokens and passes the tokens to the compiler 12.
In the embodiment of the invention illustrated in
In an alternative embodiment of the invention illustrated in
Additional details of the compiling system and method will be described below with respect to
Exemplary Operating Environment
The invention is described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the invention may be practiced with other computer system configurations, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
With reference to
Computer 110 typically includes a variety of computer readable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. The system memory 130 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 131 and random access memory (RAM) 132. A basic input/output system 133 (BIOS), containing the basic routines that help to transfer information between elements within computer 110, such as during start-up, is typically stored in ROM 131. RAM 132 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 120. By way of example, and not limitation,
The computer 110 may also include other removable/nonremovable, volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media discussed above and illustrated in
The computer 110 in the present invention will operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 180. The remote computer 180 may be a personal computer, and typically includes many or all of the elements described above relative to the computer 110, although only a memory storage device 181 has been illustrated in
When used in a LAN networking environment, the computer 110 is connected to the LAN 171 through a network interface or adapter 170. When used in a WAN networking environment, the computer 110 typically includes a modem 172 or other means for establishing communications over the WAN 173, such as the Internet. The modem 172, which may be internal or external, may be connected to the system bus 121 via the user input interface 160, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 110, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
Although many other internal components of the computer 110 are not shown, those of ordinary skill in the art will appreciate that such components and the interconnection are well known. Accordingly, additional details concerning the internal construction of the computer 110 need not be disclosed in connection with the present invention.
Compiling System
As set forth above,
The compiling system 10 may include a compiler 12 having a code generator 16, a binary file generator 18 and an application/library generator 20. The compiling system 12 may further include a parser 14. The functions of each of these components are further described below with reference to
The following code may be generated:
In step B30, the compiling system 210 determines a code provider for generating code in an appropriate language from the language-independent code expression tree that the compiling system 210 created in step B20. Finally, in step B40, the compiling system 210 uses the application/library generator 20 to compile the code files generated from each markup page file that is passed as input to the compiling system, together into the requested IL application or DLL.
In step C40, the code generator 16 generates a code expression representing a class that subclasses a root tag of the markup being parsed. In a constructor of this class, the code generator 16 generates code to load the binary format file created in step C30 as a resource. The code generator 16 adds appropriate code expressions for any code associated tokens such as events or user code snippets, if present, to the subclass created above. For example,
Given the same markup snippet above:
The following code may be generated along with a binary file called page1.binaryfile:
In step C50, the compiler 12 determines a code provider for generating code in the appropriate language from the language-independent code expression that the compiling system 210 created in step C40. After step C50, each page of markup that is passed as input to the compiling system, has generated one binary file and one code file. In step C60, the application/library generator 20 takes all the code files generated from each markup page file in the current project and compiles them into an application executable or library DLL. Additionally, the application/library generator 20 combines all of the binary files generated for each markup page file in the project into a single resource and embeds that resource in the main application executable or library assembly dll or alternatively into a satellite assembly dll.
The system and method described above fully utilize the advantages of declarative markup by enabling a rapid application development (RAD) environment that enables programmers to quickly build working programs or library dlls. Furthermore, the above-described system and method provides the ability to mix both markup and code-behind files to enable the development of an application that takes advantage of the best of web applications and Win32 (trademark of the Microsoft Corporation of Redmond, Wash.) applications. Finally, the system and method described above provide a language-agnostic technique for building an application when no user code is involved.
While particular embodiments of the invention have been illustrated and described in detail herein, it should be understood that various changes and modifications might be made to the invention without departing from the scope and intent of the invention. The embodiments described herein are intended in all respects to be illustrative rather than restrictive. Alternate embodiments will become apparent to those skilled in the art to which the present invention pertains without departing from its scope.
From the foregoing it will be seen that this invention is one well adapted to attain all the ends and objects set forth above, together with other advantages, which are obvious and inherent to the system and method. It will be understood that certain features and sub-combinations are of utility and may be employed without reference to other features and sub-combinations. This is contemplated and within the scope of the appended claims.