索尔德维拉,马尔库;贝塔·齐利安尼;布鲁诺·西尔维斯特 从规范到测试:Lua 5.2的语义工程。 (英语) Zbl 1512.68056号 J.汽车。推理 66,第4期,905-952(2022). 摘要:我们在5.2版中为Lua编程语言的一大子集提供了形式化语义。语义是构建分析Lua代码的可靠工具的持续努力的主要部分。在这项工作中,我们展示了该语言的几个关键方面的细节,比如它唯一结构化数据类型的语义(桌子),其元编程机制(跖骨)错误处理,以及如何使用这些机制来定义一个复杂的动态语义,该语义必须在运行时处理几种可能的错误情况,具体取决于语言的性质。语义在Redex中实现了机械化,这是一种专门设计用于指定和调试操作语义的DSL。我们通过两种方式验证了机械化:第一,在Redex中执行Lua的引用解释器的测试套件,第二,使用Redex-check工具指定并执行其基本属性的随机测试。总之,它们证明了我们的模型很好地捕获了所选语言片段的语义。此外,我们通过使用一个简单的基于可达性的垃圾收集器实现来捕获Lua的关键方面,解决了在Redex中测试机械化时通常出现的一些性能问题。通过收集语法垃圾,我们减少了运行时配置的大小。最后,我们简要讨论了语义开发的这种途径,以及执行Lua程序静态分析的原型工具的实现。 MSC公司: 68甲15 编程语言理论 第68季度55 计算理论中的语义学 关键词:操作语义学;命令式语言;特定领域的语言;卢阿;约简语义;随机试验 软件:JavaScript脚本;灯塔;卢阿;蟒蛇;PLT兑换;轻量级Java PDF格式BibTeX公司 XML格式引用 \textit{M.Soldevila}等人,J.Autom。推理66,No.4,905--952(2022;Zbl 1512.68056) 全文: 内政部 参考文献: [1] Adobe:Adobe Lightroom®。https://www.adobe.io/apis/creativecloud/lightroom.html (2019). 2020年5月4日查阅 [2] Bodin,M.、Chargueraud,A.、Filareti,D.、Gardner,P.、Maffeis,S.、Naudziuniene,D.、Schmitt,A.、Smith,G.:一种可信的机械化JavaScript规范。In:2014年POPL·Zbl 1284.68381号 [3] Donnelly,K.,Hallett,J.J.,Kfoury,A.:弱引用的形式语义。摘自:ISMM’06第五届记忆管理国际研讨会论文集,第126-137页(2006) [4] Felleisen,M.:lambda-v-cs转换的计算:命令式高阶编程语言中控制和状态的语法理论。印第安纳大学博士论文(1987年) [5] Felleisen,M。;芬尔德,RB;Flatt,M.,《语义工程与PLT Redex》(2009),剑桥:麻省理工学院出版社,剑桥·Zbl 1183.68359号 [6] 加贝,Y。;Kfoury,AJ,java参考对象的微积分,SIGPLAN Not,42,8,9-17(2007)·doi:10.145/1294297.1294299 [7] Graham-Cumming,J.:CloudFlare的新WAF:编译为Lua。https://blog.cloudflare.com/cloudfleas-new-waf-compiling-to-lua (2013). 2020年5月4日访问 [8] Guha,A.,Saftou,C.,Krishnamurthi,S.:JavaScript的本质。In:ECOOP’10(2010) [9] Haas,A.、Rossberg,A.、Schuff,D.L.、Titzer,B.L.、Holman,M.、Gohman,D.、Wagner,L.、Zakai,A.和Bastien,J.:通过WebAssembly加快网络速度。摘自:美国纽约州纽约市计算机械协会第38届ACM SIGPLAN编程语言设计与实现会议记录,PLDI 2017,第185-200页。doi:10.1145/3062341.3062363(2017) [10] Ierusalimschy,R.:Lua编程。Lua.org(2003) [11] Ierusalimschy,R。;de Figueiredo,左侧;Celes,W.,Lua-an可扩展扩展语言,软件,26,6,635-652(1996) [12] Ierusalimschy,R.,de Figueiredo,L.H.,Celes,W.:扩展语言的演变:lua的历史。参加:巴西编程语言研讨会(2001年) [13] Ierusalimschy,R.,de Figueiredo,L.H.,Celes,W.:Lua 5.2参考手册。www.lua.org/manual/5.2/manual.html(2013) [14] Igarashi,A。;不列颠哥伦比亚省皮尔斯;Wadler,P.,Featherweight Java:Java和GJ的最小核心演算,TOPLAS,23396-450(2001)·doi:10.1145/503502.503505 [15] Klein,C.:PLT Redex中的随机测试。In:程序。方案和函数编程,第26-36页(2009年) [16] Klein,C.,McCarthy,J.,Jaconette,S.,Findler,R.B.:上下文相关约简语义。In:APLAS’11(2011) [17] Klein,C.、Clements,J.、Dimoulas,C.、Eastlund,C.、Felleisen,M.、Flatt,M.、McCarthy,J.A.、Rafkind,J.、Tobin Hochstadt,S.、Findler,R.B.:开展你的研究:关于轻量级机械化的有效性。摘自:第39届ACM SIGPLAN-SIGACT编程语言原理年度研讨会论文集,美国纽约州纽约市ACM,POPL'12,第285-296页,doi:10.1145/2103656.2103691(2012)·Zbl 0714.65036号 [18] Krebbers,R.,Wiedijk,F.:非局部控制流和块范围变量的分离逻辑。收录:FOSSACS’13,doi:10.1007/978-3-642-37075-5_17(2013)·Zbl 1260.68101号 [19] 马萨诸塞州利尔;Ierusalimschy,R.,终结器的形式语义,J UCS,11,7,1198-1214(2005)·doi:10.3217/jucs-011-07-1198 [20] Lin,H.:Featherweight Lua的操作语义。圣何塞州立大学硕士论文(2015年) [21] Lua开发团队:Lua 5.2测试套件。https://www.lua.org/tests网站/ (2013). 2020年5月4日查阅 [22] Lua开发团队:Lua 5.2参考手册。https://www.lua.org/manual/5.2/manual.html (2015). 2020年5月4日查阅 [23] Lua开发人员:表达式作为语句。http://lua-users.org/wiki/ExpressionsAsStatements网站 (2009). 2020年5月4日查阅 [24] Lua开发人员:Lua分析器。http://lua-users.org/wiki/ProgramAnalysis (2014). 2020年5月4日查阅 [25] Lua开发人员:Lua实现。http://lua-users.org/wiki/lua实现 (2018). 2020年5月4日查阅 [26] Lua开发人员:Lua目录。http://lua-users.org/wiki/lua目录 (2020). 2020年5月4日查阅 [27] Lua开发人员:用途。https://www.lua.org/uses.html (2017). 访问日期:2020年5月4日 [28] LuaTex:LuaTex。http://www.luatex.org/languages.html (2018). 2020年5月4日查阅 [29] Maffeis,S.、Mitchell,J.C.、Taly,A.:JavaScript的操作语义。纳入:2008年APLAS [30] 曼努拉:瓦拉格是二等公民。http://lua-users.org/wiki/VarargTheSecondClassCitizen(第二类公民) (2007). 访问日期:2020年5月4日 [31] Mascarenhas de Queiroz,F.:将动态语言优化编译为托管运行时环境。里约热内卢卡特里卡蓬蒂菲西亚大学博士论文(2009年) [32] Moura,A。;罗德里格斯,N。;Ierusalimschy,R.,《卢阿岛的Coroutines》,J.Univers。计算。科学。,10, 7, 910-25 (2004) [33] 皮尔斯,BC,类型和编程语言(2002),剑桥:麻省理工学院出版社,剑桥·Zbl 0995.68018号 [34] Politz,J.G.、Carroll,M.J.、Lerner,B.S.、Pombrio,J.、Krishnamurthi,S.:JavaScript中getter、setter和eval的测试语义。纳入:DLS’12(2012) [35] Politz,J.G.,Martinez,A.,Milano,M.,Warren,S.,Patterson,D.,Li,J.,Chitipothu,A.,Krishnamurthi,S.:Python:完整月份:Python编程语言的测试语义。In:OOPSLA’13(2013) [36] Rossberg,A.(编辑):网络组装规范。https://webassembly.github.io/spec/core网站/ (2021). 2021年2月20日访问 [37] Soldevila,M.,Ziliani,B.,Silvestre,B.,Fridlender,D.,Mascarenhas,F.:解码Lua:开发人员和语义学家的形式语义。摘自:第13届ACM SIGPLAN动态语言研讨会论文集,DLS 2017(2017) [38] Soldevila,M.,Ziliani,B.,Fridlender,D.:理解Lua的垃圾收集:走向形式化的静态分析器。摘自:第22届声明性编程原则与实践国际研讨会论文集,PPDP 2020(2020) 此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。