×

用代数组合子构造语言处理器。 (英语) Zbl 1211.68049号

摘要:模块化一元语义(MMS)是一种著名的机制,用于构建编程语言的模块化指称语义定义。MMS的主要吸引力在于,可以独立地指定语言结构家族,然后以混合匹配的方式进行组合,以创建完整的语言语义。事实证明,这对于在构建语言原型时构建正式但可执行的语义很有用。在这项工作中,我们证明了MMS具有额外的软件工程优势。除了为各种语言结构编写语义之外,我们还可以使用MMS为相同的语言结构编写各种不同的语义。此功能允许我们组合和重用正交语言任务,例如类型检查和编译。我们描述了代数组合子,实现这种重用的主要工具,以及该技术在公共语言处理任务中的一系列应用。

MSC公司:

68甲15 编程语言理论
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] Abott,M。;阿尔滕基奇,T。;北加尼。;Mcbride,C.:《基础信息65》,第1-2期,1-28(2005)
[2] Alexander,P.:罗塞塔系统级设计(2006)·Zbl 1112.68018号
[3] Bawden,A.:《lisp中的准引用》,4-12(1999)
[4] 卡特赖特,R。;Felleisen,M.:可扩展指称语言规范,Lncs 789,244-272(1994)·Zbl 0942.68544号
[5] 查克拉瓦蒂,M.M.T。;凯勒,G。;Jones,S.P。;Marlow,S.:与类相关的类型,1-13(2005)·Zbl 1369.68089号
[6] L.Duponcheel,《使用变形、子类型和单子变形金刚来编写模块化功能口译员》,1995年
[7] D.Espinosa,语义乐高,哥伦比亚大学博士论文,1995年
[8] Gayo,J.E.L。;Díez,M.C.L。;Lovelle,J.M.C。;Del Río,A.C.:LPS:使用模块化单子语义的语言原型系统,理论计算机科学电子笔记44,第2期(2001年)
[9] 哈里森·W·L。;Kamin,S.N.:基于元计算的编译器体系结构,213-229(2000)·Zbl 0963.68501号
[10] Huet,G.:《拉链》,《函数编程杂志》第7期,第5期,549-554(1997)·Zbl 0893.68014号
[11] Hutton,G.:折叠和展开程序语义,280-288(1998)·Zbl 1369.68103号
[12] 电气与电子工程师协会。IEEE标准VHDL语言参考手册,1994年
[13] Jansson,P。;Jeuring,J.:Polyp——一种多类型编程语言扩展,470-482(1997)
[14] Jones,M.P.:具有函数依赖性的类型类,Lncs 1782,230-244(2000)·Zbl 0971.68641号
[15] M.P.Jones,L.Duponcheel,《合成单子》,研究报告YALEU/DCS/RR-1004,耶鲁大学,1993年
[16] ,Haskell 98语言和库–修订报告(2003年)·Zbl 1067.68041号
[17] 拉梅尔,R。;Jones,S.P.:废弃样板:泛型编程的实用设计模式,SIGPLAN通知38,第3期,26-37(2003)
[18] 拉梅尔,R。;Jones,S.P.:《废弃更多样板:反射、拉链和通用铸件》,244-255(2004)·Zbl 1323.68130号
[19] 拉梅尔,R。;Visser,J.:用于泛型遍历的类型组合子,Lncs 2257、137-154(2002)
[20] 拉梅尔,R。;Visser,J.:strafunski申请信,Lncs 2562、357-375(2003)·兹比尔1026.68791
[21] R.Lämmel,J.Visser,J.Kort,《处理大香蕉》,摘自:第二次通用编程研讨会论文集,WGP 2000,葡萄牙利马桥,2000年7月6日,乌得勒支大学,2000年,第46–59页
[22] Liang,S。;Hudak,P.:编译器构造的模块指称语义,Lncs 1058219-234(1996)
[23] Liang,S。;Hudak,P。;Jones,M.:《Monad变形金刚和模块化口译员》,333-343(1995)
[24] G.Malcolm,《代数数据类型和程序转换》,格罗宁根大学博士论文,1990年·Zbl 0712.68014号
[25] Mcbride,C。;Paterson,R.:《带效果的应用编程》,《函数编程杂志》18,第1期,第1-13页(2008年)·Zbl 1128.68020号 ·doi:10.1017/S0956796807006326
[26] Meertens,L.:Paramorphisms,Formal aspects of computing 4,No.5,413-424(1992)·Zbl 0754.68086号 ·doi:10.1007/BF01211391
[27] 梅杰,E。;福克加,M。;Paterson,R.:《香蕉、镜头、信封和带刺铁丝网的功能编程》,Lncs 523124-144(1991)
[28] 梅杰,E。;Jeuring,J.:为函数编程合并单子和折叠,Lncs 925,228-266(1995)
[29] E.Moggi,《编程语言的抽象视图》,技术报告ECS-LFCS-90-113,爱丁堡大学,1990年·Zbl 0698.68008号
[30] Moggi,E.:《计算与单数的概念》,《信息与计算》93,第1期,第55-92页(1991年)·Zbl 0723.68073号 ·doi:10.1016/0890-5401(91)90052-4
[31] Jones,S.Peyton:处理笨拙的团队:haskell中的单数输入/输出、并发、异常和外语调用,软件构造工程理论180(2001)·Zbl 0989.68021号
[32] Sheard,T.:多态语言的类型定向在线部分评估器,22-35(1997)
[33] Sheard,T。;Pasalic,E.:两级类型和参数化模块,《函数编程杂志》14,第5期,547-587(2004)·Zbl 1104.68397号 ·doi:10.1017/S095679680300488X
[34] 斯蒂尔·G·L·:通过创作单子来构建口译员,472-492(1994)
[35] Visser,E.:策略:一种基于重写策略的程序转换语言——策略0.5的系统描述,Lncs 2051,357-361(2001)·Zbl 0981.68679号
[36] Wadler,P.:函数编程的Monads,Lncs 925,24-52(1995)
[37] Wadler,P.L.:《理解单子》,61-78(1990)·Zbl 0798.68040号
[38] 韦弗,P。;Kimmell,G。;弗里斯比,N。;Alexander,P.:用代数组合子构建语言处理器,155-164(2007)·Zbl 1211.68049号
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。