Scam 08
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
805
On Slideshare
682
From Embeds
123
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 123

http://www.eis.mdx.ac.uk 123

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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
    www.ceteva.com/home/tony.html
  • 2. 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. 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. 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. 5
    Syntax Classes: DSL Architecture
    package p.q;
    import language java.syntax.grammar;
    class mylang implements java.syntax.AST {
    ...
    @grammar {
    // language definition
    }
    }
    import language p.q.mylang;
    class C {
    void m(...) {
    ...
    @mylang {
    // Syntax and semantics defined
    // by class mylang.
    }
    }
    }
  • 6
    Example DSL Constructs
    public 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);
    }
  • 9. 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; [| … |].
  • 10. 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.
  • 11. 9
    Statement
    New languages and constructs can/should implement a standard interface to facilitate program analysis.