Language composition using source code annotations

In this paper we examine source code annotations from the viewpoint of formal languages - we discuss their abstract syntax, concrete syntax, and semantics, thus showing the correspondence between annotations and formal languages. We propose to consider a set of all annotations and their parameters processed by the same reference implementation (they belong to the same domain) to be called an annotation-based language. The performed analysis also pinpoints a specificity of annotations in comparison with formal languages in general - the binding between annotations and a host language. We elaborate this idea with an analysis of annotations’ potential for language composition, in particular for pure embedding. We then show how pure embedding with annotations can be used for language unification, language referencing by extension, and language extension. This work provides a basis for further research in the field of source code annotations in the context of formal languages.

[1]  Ivan Lukovic,et al.  Generic and standard database constraint meta-models , 2014, Comput. Sci. Inf. Syst..

[2]  Matús Sulír,et al.  Source code annotations as formal languages , 2015, 2015 Federated Conference on Computer Science and Information Systems (FedCSIS).

[3]  Valentino Vranic,et al.  Animating Organizational Patterns , 2015, 2015 IEEE/ACM 8th International Workshop on Cooperative and Human Aspects of Software Engineering.

[4]  Markus Völter,et al.  Language and IDE Modularization and Composition with MPS , 2011, GTTSE.

[5]  Pierre Deransart,et al.  Attribute Grammars: Definitions, Systems and Bibliography , 1988 .

[6]  A. G. Kleppe,et al.  A Language Description is More than a Metamodel , 2007 .

[7]  Sergej Chodarev,et al.  Model-aware language specification with Java , 2015, 2015 13th International Conference on Engineering of Modern Electric Systems (EMES).

[8]  Edoardo Vacchi,et al.  Neverlang: A framework for feature-oriented language development , 2015, Comput. Lang. Syst. Struct..

[9]  Ronald Metoyer,et al.  A transformational approach to data visualization , 2015 .

[10]  William R. Cook,et al.  The design and implementation of Object Grammars , 2014, Sci. Comput. Program..

[11]  Jaroslav Poruban,et al.  Approaches to human-computer interaction based on observation of a software developer , 2015, 2015 IEEE 13th International Scientific Conference on Informatics.

[12]  Markus Völter Implementing feature variability for models and code with projectional language workbenches , 2010, FOSD '10.

[13]  Ján Kollár,et al.  pLERO: Language for grammar refactoring patterns , 2013, 2013 Federated Conference on Computer Science and Information Systems.

[14]  Michaela Bacíková,et al.  Defining Domain Language of Graphical User Interfaces , 2013, SLATE.

[15]  Eli Tilevich,et al.  Annotation refactoring: inferring upgrade transformations for legacy applications , 2008, OOPSLA.

[16]  Sebastian Erdweg,et al.  Language composition untangled , 2012, LDTA.

[17]  James Newkirk,et al.  How .NET's custom attributes affect design , 2002, IEEE Software.

[18]  Renaud Pawlak,et al.  AVal: an extensible attribute-oriented programming validator for Java: Research Articles , 2007 .

[19]  Jaroslav Porubän,et al.  XML to annotations mapping definition with patterns , 2014, Comput. Sci. Inf. Syst..

[20]  Tijs van der Storm,et al.  Extensible language implementation with object algebras (short paper) , 2014, GPCE 2014.

[21]  Marjan Mernik,et al.  Domain-Specific Languages: A Systematic Mapping Study , 2016, Inf. Softw. Technol..

[22]  Éric Tanter,et al.  A Taxonomy of Domain-Specific Aspect Languages , 2015, ACM Comput. Surv..

[23]  Jana Stastna,et al.  Exploring malware behaviour for improvement of malware signatures , 2015, 2015 IEEE 13th International Scientific Conference on Informatics.

[24]  Marjan Mernik,et al.  Towards building a forensics aware language for secure logging , 2014, Comput. Sci. Inf. Syst..

[25]  Roman Taborskyand Feature Model Driven Generation of Software Artifacts , 2015 .

[26]  Laurence Tratt,et al.  Eco: A Language Composition Editor , 2014, SLE.

[27]  Roberto da Silva Bigonha,et al.  An on-the-fly grammar modification mechanism for composing and defining extensible languages , 2015, Comput. Lang. Syst. Struct..

[28]  Milan Nosál,et al.  Unified compile-time and runtime java annotation processing , 2015, 2015 Federated Conference on Computer Science and Information Systems (FedCSIS).

[29]  Marjan Mernik,et al.  A preliminary study on various implementation approaches of domain-specific language , 2008, Inf. Softw. Technol..

[30]  Mark Lillibridge,et al.  Extended static checking for Java , 2002, PLDI '02.

[31]  Eduardo Martins Guerra,et al.  Quality Improvement in Annotated Code , 2010, CLEI Electron. J..

[32]  Mirko Viroli,et al.  A Prolog-oriented extension of Java programming based on generics and annotations , 2007, PPPJ.

[33]  Eduardo Martins Guerra,et al.  Architectural patterns for metadata-based frameworks usage , 2010, PLOP '10.

[34]  Renaud Pawlak Spoon: Compile-time Annotation Processing for Middleware , 2006, IEEE Distributed Systems Online.

[35]  M Mernik,et al.  When and how to develop domain-specific languages , 2005, CSUR.

[36]  Michael Eichberg,et al.  Incremental concrete syntax for embedded languages with support for separate compilation , 2013, Sci. Comput. Program..

[37]  Ján Kollár,et al.  Abstract syntax driven approach for language composition , 2014, Central European Journal of Computer Science.

[38]  Paolo Arcaini,et al.  CoMA: Conformance Monitoring of Java Programs by Abstract State Machines , 2011, RV.

[39]  Ivan Lukovic,et al.  Model execution: An approach based on extending domain-specific modeling with action reports , 2013, Comput. Sci. Inf. Syst..

[40]  Ján Kollár,et al.  Extensible Host Language for Domain-Specific Languages , 2016, Comput. Informatics.

[41]  Pedro J. Molina,et al.  Evaluating and comparing language workbenches , 2015 .

[42]  Michaela Bacíková,et al.  Declarative specification of references in DSLs , 2013, 2013 Federated Conference on Computer Science and Information Systems.

[43]  Valentino Vranic,et al.  Realizing changes by aspects at the design level , 2015, 2015 IEEE 19th International Conference on Intelligent Engineering Systems (INES).

[44]  Oscar Nierstrasz,et al.  Bounded seas , 2015, Comput. Lang. Syst. Struct..

[45]  Bernhard Rumpe,et al.  MontiCore: Modular Development of Textual Domain Specific Languages , 2008, TOOLS.

[46]  Marjan Mernik,et al.  An object-oriented approach to language compositions for software language engineering , 2013, J. Syst. Softw..

[47]  Ján Kollár,et al.  Towards machine mind evolution , 2015, 2015 Federated Conference on Computer Science and Information Systems (FedCSIS).

[48]  Yannis Smaragdakis,et al.  Reified type parameters using Java annotations , 2014 .