View
212
Download
0
Category
Preview:
Citation preview
1
Beyond Annotations:A Proposal for Extensible Java
(XJ)
Tony Clark, Thames Valley UniversityPaul Sammut, HSBC
James Willans, Ceteva
tony.clark@tvu.ac.ukwww.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
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.
Recommended