From Specification to Testing: Semantics Engineering for Lua 5.2
; Ziliani, Luis Francisco
; Silvestre, Bruno Otros responsables
Fecha
08/2022
Editorial
Springer
Revista
Journal Of Automated Reasoning
Título del libro
Nombre del evento
Fecha del evento
Institución organizadora
ISSN
0168-7433
eISSN
ISBN
Idioma
Inglés
Tipo del evento
Clasificación temática
Palabras clave
Resumen
We provide a formal semantics for a large subset of the Lua programming language, in its version 5.2. The semantics is a major part of an ongoing effort to construct reliable tools to analyze Lua code. In this work, we present the details of several key aspects of the language, like the semantics of its only structured data-type (tables), its meta-programming mechanism (metatables), error handling, and how these mechanisms are used to define a complex dynamic semantics that must deal with several possible erroneous situations during run time, given the nature of the language. The semantics is mechanized in Redex, a DSL specially designed to specify and debug operational semantics. We validated the mechanization in two ways: first, by executing within Redex the test suite of the reference interpreter of Lua, and second, by specifying and performing random testing of its fundamental properties using the redex-check tool. Together, they evidence that our model soundly captures the semantics of the selected fragment of the language. Additionally, we address some of the performance problems that typically arise when testing a mechanization in Redex, by using a simple implementation of a reachability-based garbage collector that captures key aspects of Lua’s. By collecting syntactic garbage, we reduce the size of configurations during run time. Finally, we briefly discuss this avenue of development of our semantics, together with the implementation of a prototype tool to perform static analysis of Lua programs.
Colecciones
Aprobación
Revisión
Complementado por
Referenciado por
Licencia Creative Commons
Excepto donde se indique lo contrario, la licencia de este ítem se describe como by-nc-sa
