90 likes | 183 Views
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.
E N D
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 • 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.
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.
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.
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.
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); }
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; [| … |].
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.
Statement New languages and constructs can/should implement a standard interface to facilitate program analysis.