Compiler design for hyper-metaprogramming

被引:0
作者
Teodorescu, Lucian Radu [1 ]
Potolea, Rodica [1 ]
机构
[1] Tech Univ Cluj Napoca, Dept Comp Sci, Cluj Napoca, Romania
来源
2013 15TH INTERNATIONAL SYMPOSIUM ON SYMBOLIC AND NUMERIC ALGORITHMS FOR SCIENTIFIC COMPUTING (SYNASC 2013) | 2014年
关键词
D O I
10.1109/SYNASC.2013.34
中图分类号
TP301 [理论、方法];
学科分类号
081202 ;
摘要
Although static metaprogramming is not a new technique and is present in some of the most popular programming languages today, it is still considered an esoteric feature. This is mainly because writing metaprograms requires syntactic constructs and programming abstractions different from those used for writing regular programs. We propose in this paper the concept of hyper-metaprogramming, a new kind of Turing-complete compile-time metaprogramming, which allows metaprograms to be written in the same way as traditional programs: with the same abstractions, syntax, and semantics. Using this feature, programmers can easily implement any complex algorithms and data structures at compile-time, before producing the final run-time program. The paper focuses on discussing the main mechanisms involved in implementing hyper-metaprogramming.
引用
收藏
页码:201 / 208
页数:8
相关论文
共 13 条
[1]  
Abrahams D., 2004, C TEMPLATE METAPROGR
[2]  
Abrahams D., 2004, C DEPTH SERIES
[3]  
Gottschling P., 2008, GPCE 08
[4]  
Lattner Chris, 2002, Master's Thesis
[5]  
Porkolab Zoltan, 2010, Central European Functional Programming School. Third Summer School (CEFP 2009). Revised Selected Lectures, P306, DOI 10.1007/978-3-642-17685-2_9
[6]  
Sethi Ravi, 2006, COMPILERS PRINCIPLES
[7]  
Sheard T., 2001, Semantics, Applications, and Implementation of Program Generation. Second International Workshop, SAIG 2001. Proceedings (Lecture Notes in Computer Science Vol.2196), P2
[8]  
Siek J. G., 1998, ISCOPE 98
[9]  
Steele G., 1998, OOPSLA 98 ADDENDUM
[10]  
Sutton Andrew, 2012, Software Language Engineering. 4th International Conference, SLE 2011. Revised Selected Papers, P97, DOI 10.1007/978-3-642-28830-2_6