×

使用自定义符号对体量进行模式匹配。 (英语) Zbl 1243.68164号

摘要:对于许多程序员来说,“模式匹配”的概念只会产生正则表达式来匹配非结构化文本,或者使用XPath等技术来匹配XML中的半结构化数据。这种对模式匹配的普遍看法部分是由于正则表达式和XPath的成功,它们在当今许多流行的编程语言中都得到了支持,无论是作为标准库还是作为语言的一部分。但这也是由于许多程序员从未使用过另一种优雅的模式匹配形式,即结构化数据,即编程语言的本地数据结构。这种匹配形式在研究中使用的函数或逻辑语言中很常见,但不幸的是,在软件行业中很少使用。在这项技术被发现并不断改进几十年后,今天使用的流行语言中没有一种以标准形式支持几乎通用形式的结构化数据匹配,这确实非常令人惊讶。
本文表明,程序员不必等待下一代语言集成模式匹配,也不必使用非标准预处理器,从而失去了在工业环境中最重要的一些优势:官方支持、兼容性、标准化等。相反,自定义符号中本地数据的模式匹配可以作为流行对象语言中的最简库来实现。因此,可以重用逻辑语言中一些舒适的现有符号,可以平滑扩展结构化数据的现有标准符号,如JSON(JavaScript对象符号),以支持模式匹配,还可以设计新的符号。
与大多数正则表达式的库实现一样,自定义符号模式只表示为字符串。它们可以在两种不同的模式下使用:解释和编译。本文介绍了两种用于Java和JavaScript的自定义匹配符号的开源实现,与其他形式的模式匹配相比,显示了合理的开销。

MSC公司:

68第05页 数据结构
68甲15 编程语言理论
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] A.Aasa,K.Peterson,D.Synek,函数语言中数据对象的具体语法,收录于:LISP和函数编程(LFP),1988年7月25日至27日。
[2] M.Bravenboer,E.Visser,《对象的具体语法:无限制的领域特定语言嵌入和同化》,载于:面向对象编程、系统、语言和应用程序(OOPSLA),2004年10月24日至28日。
[3] Bravenboer,M。;Visser,E.:解析表组成,Lncs 5452,74-94(2009)
[4] 埃米尔,B。;Odersky,M。;Williams,J.:将物体与图案相匹配,Lncs 4609、273-298(2007)
[5] Erwig,M.:《主动模式》,Lncs 1268,21-40(1997)
[6] M.Fernandez,K.Fisher,R.Gruber,Y.Mandelbaum,PADX:使用XQuery查询大规模临时数据,收录于:PLAN-X,2006年1月14日。
[7] K.Fisher,R.Gruber,《PADS:一种处理特殊数据的特定于域的语言》,载于《编程语言设计与实现》,2005年6月11日至15日。SIGPLAN不是。40(2005)第295-304页。
[8] Hirzel,M。;奈斯特罗姆,北。;布鲁姆,B。;维泰克,J.:《马切特:穿过模式匹配丛林的路径》,Lncs 4902150-166(2008)
[9] Hutton,G.:解析的高阶函数,函数编程杂志2,323-343(1992)·Zbl 0817.68097号 ·doi:10.1017/S0956796800000411
[10] JSON(JavaScript对象表示法)。http://www.json.org/, 2010.
[11] P.Klint,T.van der Storm,J.Vinju,RASCAL:一种用于源代码分析和操作的领域特定语言,见:《源代码分析与操作》(SCAM),2009年9月20日至21日,第168-177页。
[12] J.Liu,A.Myers,JMatch:Java plus模式匹配,《2002-1878年技术报告》,康奈尔大学计算机科学系。2002年10月,2005年4月修订·Zbl 1026.68795号
[13] G.大陆,《为什么很高兴被引用:Haskell的准引用》,收录于:2007年9月30日,ACM SIGPLAN研讨会。
[14] Y.Mandelbaum,K.Fisher,D.Walker,M.Fernandez,A.Gleyzer,PADS/ML:一种函数数据描述语言,收录于:编程语言原理(POPL),2007年1月17日至19日。SIGPLAN不是。2007年第42期,第77-83页。
[15] M.Mauny,解析器和打印机,作为嵌入函数语言的流析构函数和构造函数。《函数编程语言和计算机体系结构》(FPCA),1989年9月11-13日,第360-370页。
[16] 莫罗,P.-E。;Ringeissen,C。;Vittek,M.:多目标语言的模式匹配编译器,Lncs 262261-76(2003)·Zbl 1032.68920号
[17] M.Odersky,P.Wadler,《Pizza into Java:将理论转化为实践》,载于《编程语言原理》,1997年1月15日至17日,第146至159页。
[18] Okasaki,C.:《函数环境中的红黑树》,《函数编程杂志》第9期,第471-477页(1999年)·Zbl 0949.68518号 ·doi:10.1017/S0956796899003494
[19] Plump,D.:术语图重写,图文法和图变换计算手册,第2卷:应用程序、语言和工具,第12章,3-61(1999)
[20] D.de Rauglaudre,Camlp4-教程。版本3.07。http://caml.inia.fr/pub/docs/tutorial-camlp4/, 2003.
[21] Rhiger,M.:类型安全模式组合器,《函数编程杂志》19,145-156(2009)·Zbl 1162.68395号 ·文件编号:10.1017/S0956796808007089
[22] Rinderknecht,C。;Volanschi,N.:元编译中未分析模式的理论与实践,《计算机编程科学》75,85-105(2010)·兹比尔1191.68173 ·doi:10.1016/j.scico.2009.0011
[23] C.Simonyi、M.Christerson和S.Clifford,《意向性软件》,收录于:面向对象编程、系统、语言和应用(OOPSLA),2006年10月22日至26日。
[24] B.Stein,JavaScript中的功能模式匹配。http://www.bramstein.com/projects/jfun/, 2010.
[25] D.Syme,G.Neverov,J.Margetson,通过轻量级语言扩展进行可扩展模式匹配,收录于:函数式编程国际会议,2007年10月1日至3日·兹比尔1291.68133
[26] Visser,E.:使用具体对象语法的元编程,Lncs 2487,299-315(2002)·Zbl 1028.68921号
[27] Visser,J.:《不带语言扩展的匹配对象》,《对象技术杂志》5,81-100(2006)
[28] N.Volanschi,myPatterns:自定义符号的开源实现。http://mypatterns.free.fr/, 2010.
[29] P.Wadler,《视图:模式匹配与数据抽象共存的方法》,载于《编程语言原理》(POPL)。1987年1月21日至23日。
[30] A.Warth,I.Piumarta,《OMeta:用于模式匹配的面向对象语言》,摘自:《动态语言研讨会》,2007年10月22日。
[31] A.Warth,M.Stanojevic,T.Millstein,使用扩展器的静态范围对象自适应,收录于:面向对象编程、系统、语言和应用(OOPSLA),2006年10月22日至26日。
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。