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

Beyond Annotations: A Proposal for Extensible Java (XJ)

Embed Size (px)

DESCRIPTION

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. Domain Specific Languages. - PowerPoint PPT Presentation

Citation preview

1

Beyond Annotations:A Proposal for Extensible Java

(XJ)Tony Clark, Thames Valley University

Paul Sammut, HSBCJames Willans, Ceteva

[email protected]/home/tony.html

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.

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.

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.

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.

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);}

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; [| … |].

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.

9

Statement

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