1 / 9

Beyond Annotations: A Proposal for Extensible Java (XJ)

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

ivana
Télécharger la présentation

Beyond Annotations: A Proposal for Extensible Java (XJ)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. 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 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. } } } • modular. • nesting. • conservative. • standard.

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

  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.

More Related