跳到主要内容
10.1145/3486609.3487203acm会议文章/章节视图摘要出版物页面通用电气公司会议记录会议集合
研究论文

带有生成宏和分析宏的多阶段编程

出版:2021年11月22日 出版历史

摘要

在元编程中,代码生成和代码分析是互补的。传统上,编程语言(如MetaML和BER MetaOCaml)的原则元编程扩展为代码生成提供了坚实的基础,但缺乏对代码分析的同等支持。类似地,现有的宏系统偏向于代码生成方面。
在这项工作中,我们提出了一种宏演算,它同时具有代码生成和代码分析功能。微积分直接为宏的单独编译建模,将宏的一个通常被忽视的方面内在化。系统确保生成的代码类型良好且卫生。
我们在Scala 3中实现了我们的系统,提供了形式化,并证明了它的可靠性。

补充材料

辅助演示视频 (splashws21gpcemain-p21-p-video.mp4)
在元编程中,代码生成和代码分析是互补的。传统上,编程语言(如MetaML和BER MetaOCaml)的原则元编程扩展为代码生成提供了坚实的基础,但缺乏对代码分析的同等支持。类似地,现有的宏系统偏向于代码生成方面。在这项工作中,我们提出了一种宏演算,它同时具有代码生成和代码分析功能。微积分直接为宏的单独编译建模,将宏的一个通常被忽视的方面内化。系统确保生成的代码类型良好且卫生。我们在Scala 3中实现了我们的系统,提供了形式化,并证明了它的可靠性。

工具书类

[1]
Leif Andersen、Stephen Chang和Matthias Felleisen。2017.电影制作的超级8种语言(功能明珠)。程序。ACM计划。Lang.,1,ICFP(2017),第30条,8月,29页。https://doi.org/10.1145/3110274
[2]
亨克·巴伦德雷格特。1992年,Lambda Calculi与类型。
[3]
克里斯蒂亚诺·卡尔卡尼奥(Cristiano Calcagno)、瓦利德·塔哈(Walid Taha)、黄利文(Liwen Huang)和泽维尔·勒罗伊(Xavier Leroy)。2003.使用AST、Gensym和Reflection实现多阶段语言。程序中。第二届生成性编程和组件工程国际会议(GPCE’03)。斯普林格·弗拉格,柏林,海德堡。57-76。国际标准编号:3-540-20102-5https://doi.org/10.1007/978-3-540-39815-8_4
[4]
Krzysztof Czarnecki、John T.O'Donnell、Jörg Striegnitz和Walid Taha。2004.MetaOCaml、Template Haskell和C++中的DSL实现。施普林格-柏林-海德堡,柏林,海德堡。51-72。国际标准编号:978-3-540-25935-0https://doi.org/10.1007/978-3-540-25935-0_4
[5]
Krzysztof Czarnecki、KasperØsterbay和Markus Völter。2002.生成性编程。胡安·埃尔南德斯(Juan Hernández)和安娜·莫雷拉(Ana Moreira)(编辑)在《面向对象技术ECOOP 2002年研讨会读取器》(Object-Oriented Technology ECOOP 2002Workshop Reader)中写道。施普林格-柏林-海德堡,柏林,海德堡。15-29。国际标准编号:978-3-540-36208-1https://doi.org/10.1007/3-540-36208-8_2
[6]
罗文·戴维斯(Rowan Davies)。2017年,绑定时间分析的时间逻辑方法。J.ACM,64,1(2017),第1条,3月,45页。编号:0004-5411https://doi.org/10.1145/3011069
[7]
Rowan Davies和Frank Pfenning。2001.分阶段计算的模态分析。J.ACM,48,3(2001),5月,555-604。编号:0004-5411https://doi.org/10.1145/382780.382785
[8]
马修·弗拉特。2002.可组合和可编译宏:何时需要?SIGPLAN否。,37,9(2002),9月,72–83日。发行编号:0362-1340https://doi.org/10.1145/583852.581486
[9]
Steven E.Ganz、Amr Sabry和Walid Taha。2001.作为多级计算的宏:MacroML中的类型安全、生成、绑定宏。SIGPLAN否。,36,10(2001),10月,74-85日。发行编号:0362-1340https://doi.org/10.1145/507669.507646
[10]
乌尔里克·约尔和威廉·谢利斯。1986.编译器和阶段转换。计算机械协会,美国纽约州纽约市,86–96。编号:9781450373470https://doi.org/10.1145/512644.512652
[11]
奥列格·基塞利约夫。2014.BER MetaOCaml的设计和实施。在函数和逻辑编程中,Michael Codish和Eijiro Sumii(编辑)。施普林格国际出版公司,Cham。86–102.编号:978-3-319-07151-0https://doi.org/10.1007/978-3-319-07151-0_6
[12]
奥列格·基塞利约夫。2018年,将抽象与高绩效相协调:元OCaml方法。编程语言基础与趋势®,5,1(2018),1–101。发行编号:2325-1107https://doi.org/10.1561/250000038
[13]
Oleg Kiselyov和Chung-chieh Shan。2010年,MetaOCaml文件-状态报告和研究建议。在ML的ACM SIGPLAN研讨会上。
[14]
亚尼斯·利利斯和安东尼·萨维迪斯。2019.元编程语言调查。ACM计算。调查。,52、6(2019年),第113条,10月,39页。发行编号:0360-0300https://doi.org/10.1145/3354584
[15]
弗雷德·麦克布莱德。1970年,符号的计算机辅助操作。博士论文。贝尔法斯特女王大学。
[16]
Lionel Parreaux、Amir Shaikhha和Christoph E.Koch。2017.引用的分阶段改写:图书馆定义优化的实用方法。SIGPLAN否。,52、12(2017年),10月131–145日。发行编号:0362-1340https://doi.org/10.1145/3170492.3136043
[17]
莱昂内尔·帕雷奥(Lionel Parreaux)、阿米尔·谢赫哈(Amir Shaikhha)和克里斯托夫·科赫(Christoph E.Koch)。2017年。鱿鱼:类型安全、卫生和可重复使用准引号。第八届ACM SIGPLAN Scala国际研讨会论文集(Scala 2017)。计算机械协会,美国纽约州纽约市,56–66。编号:9781450355292https://doi.org/10.1145/313600.3136005
[18]
莱昂内尔·帕雷奥(Lionel Parreaux)、安托万·沃扎德(Antoine Voizard)、埃米尔·谢赫哈(Amir Shaikhha)和克里斯托夫·科赫(Christoph E.Koch)。2017.统一分析型和统计型准报价。程序。ACM计划。Lang.,2,POPL(2017),第13条,12月,33页。https://doi.org/10.1145/3158101
[19]
F.Pfenning和C.Elliott。1988.高阶抽象语法。SIGPLAN否。,1993年6月23日、7日(1988年)至208日。发行编号:0362-1340https://doi.org/10.11145/960116.54010
[20]
蒂姆·谢尔德(Tim Sheard)和西蒙·佩顿·琼斯(Simon Peyton Jones)。2002.Haskell的模板元编程。2002年ACM SIGPLAN Haskell研讨会论文集(Haskell'02)。计算机协会,美国纽约州纽约市,1-16。国际标准编号:1581136056https://doi.org/10.1145/581690.581691
[21]
亚尼斯·斯马拉格达基斯(Yannis Smaragdakis)、阿格洛斯·比布迪斯(Aggelos Biboudis)和乔治·福图尼斯(George Fourtounis)。2017.结构化程序生成技术。在软件工程的重大适时主题中,Jácome Cunha、Joáo P.Fernandes、Ralf Lämmel、Joóo Saraiva和Vadim Zaytsev(编辑)。施普林格国际出版公司,Cham。154–178. 国际标准编号:978-3-319-60074-1https://doi.org/10.1007/978-3-319-600074-1_7
[22]
尼古拉斯·斯塔基(Nicolas Stucki)、阿格洛斯·比布迪斯(Aggelos Biboudis)、塞巴斯蒂安·多雷纳(Sébastien Doeraene)和马丁·奥德斯基(Martin Odersky)。2020年。元编程的语义保留内联。在第11届ACM SIGPLAN斯卡拉国际研讨会(Scala 2020)上发表。计算机协会,美国纽约州纽约市14-24。编号:9781450381772https://doi.org/10.1145/3426426.3428486
[23]
尼古拉斯·斯塔基(Nicolas Stucki)、阿格洛斯·比布迪斯(Aggelos Biboudis)和马丁·奥德斯基(Martin Odersky)。2018年,多阶段编程和宏的实际统一。第17届ACM SIGPLAN生成性编程国际会议论文集:概念和经验(GPCE 2018)。计算机协会,美国纽约州纽约市14-27。编号:9781450360456https://doi.org/10.1145/3278122.3278139
[24]
尼古拉斯·斯塔基(Nicolas Stucki)、乔纳森·伊曼纽尔·布拉斯(Jonathan Immanuel Brachthäuser)和马丁·奥德斯基(Martin Odersky)。2021.用生成宏和分析宏证明多阶段编程。EPFL。
[25]
瓦利德·塔哈和蒂姆·谢尔德。1997.带显式注释的多级编程。SIGPLAN否。,32、12(1997年),203-217年12月。发行编号:0362-1340https://doi.org/10.1145/258994.259019
[26]
Sam Tobin-Hochstadt、Vincent St-Amour、Ryan Culppeper、Matthew Flatt和Matthias Felleisen。2011.语言作为图书馆。SIGPLAN否。,第46、6页(2011年),第132–141页,6月。发行编号:0362-1340https://doi.org/10.1145/1993316.1993514
[27]
Sam Tobin-Hochstadt、Vincent St-Amour、Eric Dobson和Asumu Takikawa。2021.打字球拍指南-注意事项和限制。
[28]
T Veldhuizen和E Gannon。1998.活动库:重新思考编译器和库的角色。程序中。1998年SIAM研讨会:可互操作科学与工程计算的面向对象方法。286–295.

引用人

查看全部
  • (2023)具有多形语境的语境模态类型理论程序设计语言与系统10.1007/978-3-031-30044-8_11(281-308)在线发布日期:2023年4月22日
  • (2022)在线数据处理的本质美国计算机学会程序设计语言会议录10.1145/35633206:OOPSLA2(899-928)在线发布日期:2022年10月31日

建议

评论

信息和贡献者

问询处

发布于

封面图片ACM会议
GPCE 2021:第20届ACM SIGPLAN生成性编程国际会议论文集:概念和经验
2021年10月
209页
国际标准图书编号:9781450391122
内政部:10.1145/3486609
如果复制品不是为了盈利或商业利益而制作或分发的,并且复制品的第一页载有本通知和完整引文,则允许免费制作本作品的全部或部分数字或硬拷贝以供个人或课堂使用。必须尊重ACM以外的其他人对本作品组成部分的版权。允许用信用证进行摘要。要以其他方式复制或重新发布,在服务器上发布或重新发布到列表,需要事先获得特定许可和/或付费。从请求权限[电子邮件保护]

赞助商

出版商

计算机协会

美国纽约州纽约市

出版历史

出版:2021年11月22日

权限

请求对此文章的权限。

检查更新

作者标记

  1. 形式化
  2. 宏系统
  3. 元编程
  4. 多阶段编程

限定符

  • 研究文章

资金来源

  • 瑞士国家科学基金会

会议

GPCE’21
GPCE’21:概念和经验
2021年10月17日至18日
伊利诺伊州,芝加哥,美国

接受率

总体接受率180份提交文件中的56份,31%

即将召开的会议

GPCE’24
第23届ACM SIGPLAN生成性编程国际会议:概念和经验
2024年10月21日至22日
帕萨迪纳,加利福尼亚州,美国

贡献者

其他指标

文献计量学和引文

文献计量学

文章度量标准

  • 下载次数(过去12个月)58
  • 下载次数(最近6周)5
反映截至2024年9月18日的下载量

其他指标

引文

引用人

查看全部
  • (2023)具有多形语境的语境模态类型理论编程语言和系统10.1007/978-3-031-30044-8_11(281-308)在线发布日期:2023年4月22日
  • (2022)在线数据处理的本质美国计算机学会程序设计语言会议录10.1145/35633206:OOPSLA2(899-928)在线发布日期:2022年10月31日

视图选项

获取访问权限

登录选项

完全访问权限

查看选项

PDF格式

以PDF文件查看或下载。

PDF格式

电子阅读器

使用联机查看电子阅读器.

电子阅读器

媒体

数字

其他

桌子

分享

分享

共享此出版物链接

在社交媒体上分享