IP Library Granted Patent US 8,782,619
Granted Patent B2
US 8,782,619 · App. 12/912,581 · Granted Jul 15, 2014

Extending programming language semantics while maintaining standard syntax through aliasing

Inventors: Zhe Wu (San Jose, CA); Vladimir Kolovski (Cambridge, MA)
Assignee: Oracle International Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,782,619
App. No.
12/912,581
Granted
Jul 15, 2014
Kind
B2
Abstract

A method is provided for allowing programmers to specify program execution control semantics using standard programming language syntax even when the standard language does not provide a language construct for specifying execution control. In a similar manner, the approach provides programmers the ability to extend the expressiveness of a language by introducing statements expressed in the syntax of a target programming language. A program written in a first programming language may be translated into statements of a second programming language, where the target programming language is more expressive than the first. This language-based approach preserves the standard syntax of the first programming language, allowing a program written with semantic extensions to be compiled and run according to the standard on any standards-compliant system.

Claims (56)

1. A method comprising:

a code processor pre-processing a set of statements that conform to a computer programming language standard, said set of statements including a first aliasing directive and a second aliasing directive, both of which conform to a syntax defined by the computer programming language standard;

wherein said syntax specifies that an aliasing directive includes an alias expression and a substitute expression;

wherein the first aliasing directive includes a first alias expression and a first substitute expression and the second aliasing directive includes a second alias expression and a second substitute expression;

wherein a semantic specified by said computer programming language standard for an aliasing directive is that instances of an alias expression in the set of statements are replaced with a substitute expression corresponding to the aliasing directive during pre-processing of the set of statements;

wherein the second substitute expression specifies a processing directive having a semantic different than any semantic specified by said computer programming language standard for a substitute expression of an aliasing directive;

wherein said set of statements does not refer to the second alias expression outside of the second aliasing directive;

wherein said code processor pre-processing the set of statements includes:

replacing the first alias expression with the first substitute expression;

pre-processing the second aliasing directive by generating code to carry out the processing directive specified in the second substitute expression.

2. The method of claim 1 , wherein

the second aliasing directive contains a pragma for controlling query execution; and

in response to interpreting said pragma, the code processor executing said set of statements further comprises performing one of:

a) setting a timeout for a query;

b) controlling a number of parallel execution threads to execute a query; or

c) providing hints to a query optimizer for optimizing a query execution plan.

3. The method of claim 1 , wherein

said computer programming language standard defines a first programming language;

the substitute expression of said second aliasing directive contains program source code for a second programming language, wherein the program source code for the second programming language is not syntactically correct in said first programming language.

4. The method of claim 3 , wherein the code processor translates said set of statements in said first programming language into said second programming language.

5. The method of claim 1 , wherein the code processor is comprised of a programming language compiler.

6. The method of claim 1 , wherein the code processor is comprised of a programming language interpreter.

7. The method of claim 1 , wherein the second aliasing directive defines a namespace prefix.

8. The method of claim 1 , wherein the second aliasing directive defines a macro.

9. The method of claim 7 , wherein a substitute expression for the namespace prefix is a URI.

10. The method of claim 7 , wherein a substitute expression for the namespace prefix is a URL.

11. The method of claim 10 , wherein content retrieved at a location of the URL includes query execution control directives.

12. The method of claim 10 , wherein content retrieved at the URL includes one or more expressions coded in a second programming language.

13. A non-transitory computer-readable storage medium storing one or more sequences of instructions which, when executed by one or more processors cause:

a code processor pre-processing a set of statements that conform to a computer programming language standard, said set of statements including a first aliasing directive and a second aliasing directive, both of which conform to a syntax defined by the computer programming language standard;

wherein said syntax specifies that an aliasing directive includes an alias expression and a substitute expression;

wherein the first aliasing directive includes a first alias expression and a first substitute expression and the second aliasing directive includes a second alias expression and a second substitute expression;

wherein a semantic specified by said computer programming language standard for an aliasing directive is that instances of an alias expression in the set of statements are replaced with a substitute expression corresponding to the aliasing directive during pre-processing of the set of statements;

wherein the second substitute expression specifies a processing directive having a semantic different than any semantic specified by said computer programming language standard for a substitute expression of an aliasing directive;

wherein said set of statements does not refer to the second alias expression outside of the second aliasing directive;

wherein said code processor pre-processing the set of statements includes:

replacing the first alias expression with the first substitute expression;

pre-processing the second aliasing directive by generating code to carry out the processing directive specified in the second substitute expression.

14. The non-transitory computer-readable storage medium of claim 13 , wherein

the second aliasing directive contains a pragma for controlling query execution; and

in response to interpreting said pragma, the code processor executing said set of statements further comprises performing one of:

a) setting a timeout for a query;

b) controlling a number of parallel execution threads to execute a query; or

c) providing hints to a query optimizer for optimizing a query execution plan.

15. The non-transitory computer-readable storage medium of claim 13 , wherein

said computer programming language standard defines a first programming language;

the substitute expression of said second aliasing directive contains program source code for a second programming language, wherein the program source code for the second programming language is not syntactically correct in said first programming language.

16. The non-transitory computer-readable storage medium of claim 15 , wherein the code processor translates said set of statements in said first programming language into said second programming language.

17. The non-transitory computer-readable storage medium of claim 13 , wherein the code processor is comprised of a programming language compiler.

18. The non-transitory computer-readable storage medium of claim 13 , wherein the code processor is comprised of a programming language interpreter.

19. The non-transitory computer-readable storage medium of claim 13 , wherein the second aliasing directive defines a namespace prefix.

20. The non-transitory computer-readable storage medium of claim 13 , wherein the second aliasing directive defines a macro.

21. The non-transitory computer-readable storage medium of claim 19 , wherein a substitute expression for the namespace prefix is a URI.

22. The non-transitory computer-readable storage medium of claim 19 , wherein a substitute expression for the namespace prefix is a URL.

23. The non-transitory computer-readable storage medium of claim 22 , wherein content retrieved at a location of the URL includes query execution control directives.

24. The non-transitory computer-readable storage medium of claim 22 , wherein content retrieved at the URL includes one or more expressions coded in a second programming language.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 26, 2010
From: WU, ZHE; KOLOVSKI, VLADIMIR
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 025199/0075 →
Continuity (1)
Related Publication 20120102472A1 · Apr 26, 2012