9
1 Beyond Annotations: A Proposal for Extensible Java (XJ) Tony Clark, Thames Valley University Paul Sammut, HSBC James Willans, Ceteva [email protected] www.ceteva.com/home/tony.html

1 Beyond Annotations: A Proposal for Extensible Java (XJ) Tony Clark, Thames Valley University Paul Sammut, HSBC James Willans, Ceteva [email protected]

Embed Size (px)

Citation preview

Page 1: 1 Beyond Annotations: A Proposal for Extensible Java (XJ) Tony Clark, Thames Valley University Paul Sammut, HSBC James Willans, Ceteva tony.clark@tvu.ac.uk

1

Beyond Annotations:A Proposal for Extensible Java

(XJ)

Tony Clark, Thames Valley UniversityPaul Sammut, HSBC

James Willans, Ceteva

[email protected]/home/tony.html

Page 2: 1 Beyond Annotations: A Proposal for Extensible Java (XJ) Tony Clark, Thames Valley University Paul Sammut, HSBC James Willans, Ceteva tony.clark@tvu.ac.uk

2

Domain Specific Languages

• Aims: to provide a tailored language; to support mixed languages; language evolution.

• Pros: declarative; maintenance; reuse; verification

• Cons: specialist skills; no standard technology; lack of integration.

• Technologies: macros; pre-processing; roll-your-own; chained calls.

Page 3: 1 Beyond Annotations: A Proposal for Extensible Java (XJ) Tony Clark, Thames Valley University Paul Sammut, HSBC James Willans, Ceteva tony.clark@tvu.ac.uk

3

DSLs: Technology Problems

• Communication: distributing new languages.

• Integration: IDEs; Analysis Tools.• Modularity: clear definition of syntax and

semantics.• DSL Types: Internal and External.• Syntax (concrete and abstract): standard

extension mechanisms.

Page 4: 1 Beyond Annotations: A Proposal for Extensible Java (XJ) Tony Clark, Thames Valley University Paul Sammut, HSBC James Willans, Ceteva tony.clark@tvu.ac.uk

4

DSLs: An OO Proposal

Syntax Classes

• Modular: class-based language constructs.

• Conservative: extends base language.

• Fully Integrated: static; dynamic; IDE.

• Standardized: syntax extension; AST manipulation; static processing; execution.

Page 5: 1 Beyond Annotations: A Proposal for Extensible Java (XJ) Tony Clark, Thames Valley University Paul Sammut, HSBC James Willans, Ceteva tony.clark@tvu.ac.uk

5

Syntax Classes: DSL Architecture

import language p.q.mylang;

class C { void m(...) { ... @mylang { // Syntax and semantics defined // by class mylang. } }}

package p.q;

import language java.syntax.grammar;

class mylang implements java.syntax.AST { ... @grammar { // language definition }}

• modular.• nesting.• conservative.• standard.

Page 6: 1 Beyond Annotations: A Proposal for Extensible Java (XJ) Tony Clark, Thames Valley University Paul Sammut, HSBC James Willans, Ceteva tony.clark@tvu.ac.uk

6

Example DSL Constructspublic Vector<Integer> add1(Vector<Integer> nums) {

return

@Cmp(x + 1) {

int x <- nums

};

}

@Reader CallReader { map(SVCL,ServiceCall) 4-18:CustomerName 19-23:CustomerID 24-27:CallTypeCode 28-35:DataOfCallString end map(USGE,Usage) 4-8:CustomerID 9-22:CustomerName 30-30:Cycle 31-36:ReadDate end do ServiceCall Usage }

@EntityBean Order persistAs "ORDER_TABLE" { private int id persistAs "ORDER_ID" (get,set); private int address persistAs "SHIPPING_ADDRESS" (get,set);}

Page 7: 1 Beyond Annotations: A Proposal for Extensible Java (XJ) Tony Clark, Thames Valley University Paul Sammut, HSBC James Willans, Ceteva tony.clark@tvu.ac.uk

7

Syntax Classes: Technologies

• Grammars: basic library; synthesizes abstract syntax; various languages possible.

• AST interface: factories; types; eval; compile;… • Quasi-quotes: working with concrete/abstract

syntax: [| <o>.m(<a>,1) |]

• Language: import; @; grammar; [| … |].

Page 8: 1 Beyond Annotations: A Proposal for Extensible Java (XJ) Tony Clark, Thames Valley University Paul Sammut, HSBC James Willans, Ceteva tony.clark@tvu.ac.uk

8

Review

• Implemented in XMF: commercial tool; open-source (www.ceteva.com)

• Superlanguages book: (www.ceteva.com/docs/Superlanguages.pdf)

• DSLs require standard technology.

• Open up Java to define new languages.

• Issues: language interaction; IDE support; analysis tool requirements.

Page 9: 1 Beyond Annotations: A Proposal for Extensible Java (XJ) Tony Clark, Thames Valley University Paul Sammut, HSBC James Willans, Ceteva tony.clark@tvu.ac.uk

9

Statement

New languages and constructs can/should implement a standard interface to facilitate program analysis.