ABSTRACT
The need for easily extendable programming language tools has all but disappeared with the proliferation of language and paradigms and new compilation tools. A particular area of new language research is the domain of parallel programming which often requires new language abstractions on various levels.
We introduce a framework for building extendable compilers with composable abstractions utilizing features of object-oriented design, functional programming and dependent types. We demonstrate our approach with examples from parsing and intermediate representation formats extracted from the compiler for a parallel Replica language and make a brief evaluation of the approach from point of view of developer productivity.
- Åkesson, D. An LLVM Back-end for REPLICA: Code Generation for a Multi-core VLIW Processor with Chaining. PhD thesis, Linköping, 2012.Google Scholar
- Amin, N., Rompf, T, and Odersky, M. Foundations of Path-Dependent Types. In Proceedings of the 2014 ACM Int. Conf. on Object Oriented Programming Systems Languages & Applications (OOPSLA) (2014), OOPSLA '14, ACM, pp. 233--249. Google ScholarDigital Library
- Bonér, J. Real-World Scala: Dependency Injection (Dl), 2008.Google Scholar
- Ford, B. Parsing Expression Grammars: A Recognition-based Syntactic Foundation. In ACM SIGPLAN Notices (2004), vol. 39, ACM, pp. 111--122. Google ScholarDigital Library
- Hopcroft, J. E. Introduction to Automata Theory, Languages, and Computation. Pearson Education India, 1979. Google ScholarDigital Library
- Mäkelä, J.-M., Hansson, E., Forsell, M., Kessler, C, and Leppänen, V. Design Principles of the Programming Language Replica for Hybrid PRAM-NUMA Many-Core Architectures. In Proc. MCC2011 (2011), Linköping University, p. 136.Google Scholar
- Ng, K., Warren, M., Golde, P., and Hejlsberg, A. The Roslyn Project, Exposing the C# and VB compiler's code analysis. White paper, Microsoft (Oct. 2011).Google Scholar
- Nystrom, N., Qi, X., and Myers, A. J&: Nested Intersection for Scalable Software Composition. In ACM SIGPLAN Notices (2006), vol. 41, ACM, pp. 21--36. Google ScholarDigital Library
- Odersky, M., and Zenger, M. Scalable Component Abstractions. In Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications (2005), OOPSLA '05, ACM, pp. 41--57. Google ScholarDigital Library
- Parr, T, and Fisher, K. LL(*): The Foundation of the ANTLR Parser Generator. In Proceedings of the 32nd ACM SIGPLAN Conf. on Programming Language Design and Implementation (New York, NY, USA, 2011), PLDI '11, ACM, pp. 425--436. Google ScholarDigital Library
- Pierce, B. The Weird World of Bi-directional Programming. In Programming Languages and Systems, P. Sestoft, Ed., vol. 3924 of Lecture Notes in Computer Science. Springer Berlin Heidelberg, 2006, pp. 342--342. Google ScholarDigital Library
- Reynolds, J. Design of the Programming Language Forsythe. In Algol-like Languages, P. O'Hearn and R. Tennent, Eds., Progress in Theoretical Computer Science. Birkhäuser Boston, 1997, pp. 173--233. Google ScholarDigital Library
- Univalent Foundations Program, T. Homotopy Type Theory: Univalent Foundations of Mathematics. Institute for Advanced Study, 2013.Google Scholar
Recommendations
Integrated language definition testing: enabling test-driven language development
OOPSLA '11: Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applicationsThe reliability of compilers, interpreters, and development environments for programming languages is essential for effective software development and maintenance. They are often tested only as an afterthought. Languages with a smaller scope, such as ...
Testing domain-specific languages
OOPSLA '11: Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companionThe Spoofax testing language provides a new approach to testing domain-specific languages as they are developed. It allows test cases to be written using fragments of the language under test, providing full IDE support for writing test cases and ...
Integrated language definition testing: enabling test-driven language development
OOPSLA '11The reliability of compilers, interpreters, and development environments for programming languages is essential for effective software development and maintenance. They are often tested only as an afterthought. Languages with a smaller scope, such as ...
Comments