Marcos Viera

dblp:34/5491 · DBLP profile ↗
← Back
14ranked-venue papers
5as first author
3since 2021 · last 2025
0000-0003-2291-6151ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 14 · 5 first-author · 3 since 2021Artificial intelligence and machine learning · 2Databases, data management, data science and information retrieval · 2Theory of computation · 1
YearPublicationVenuePosition
2025 Property-based Testing of Attribute Grammars
abstract
Software testing is an integral part of modern software development. Testing frameworks are part of the toolset of any software language allowing programmers to test their programs in order to detect bugs. Unfortunately, there is no work on testing in attribute grammars.
José Nuno Macedo, Marcos Viera, João Saraiva
SLE2
2024 pyZtrategic: A Zipper-Based Embedding of Strategies and Attribute Grammars in Python
abstract
This paper presents pyZtrategic: a library that embeds strategic term rewriting and attribute grammars in the Python programming language. Strategic term rewriting and attribute grammars are two powerful programming techniques widely used in language engineering: The former relies on strategies to apply term rewrite rules in defining large-scale language transformations, while the latter is suitable to express context-dependent language processing algorithms. Thus, pyZtrategic offers Python programmers recursion schemes (strategies) which apply term rewrite rules in defining large scale language transformations. It also offers attribute grammars to express context-dependent language processing algorithms. PyZtrategic offers the best of those two worlds, thus providing powerful abstractions to express software maintenance and evolution tasks. Moreover, we developed several language engineering problems in pyZtrategic, and we compare it to well established strategic programming and attribute grammar systems. Our preliminary results show that our library offers similar expressiveness as such systems, but, unfortunately, it does suffer from the current poor runtime performance of the Python language.
Emanuel Rodrigues, José Nuno Macedo, Marcos Viera, João Saraiva
ENASE3
2024 Zipper-based embedding of strategic attribute grammars
abstract
Strategic term re-writing and attribute grammars are two powerful programming techniques widely used in language engineering. The former relies on strategies to apply term re-write rules in defining large-scale language transformations, while the latter is suitable to express context-dependent language processing algorithms. These two techniques can be expressed and combined via a powerful navigation abstraction: generic zippers. This results in a concise zipper-based embedding offering the expressiveness of both techniques. In addition, we increase the functionalities of strategic programming, enabling the definition of outwards traversals; i.e. outside the starting position. Such elegant embedding has a severe limitation since it recomputes attribute values. This paper presents a proper and efficient embedding of both techniques. First, attribute values are memoized in the zipper data structure, thus avoiding their re-computation. Moreover, strategic zipper based functions are adapted to access such memoized values. We have hosted our memoized zipper-based embedding of strategic attribute grammars both in the Haskell and Python programming languages. Moreoever, we benchmarked the libraries supporting both embedding against the state-of-the-art Haskell-based Strafunski and Scala-based Kiama libraries. The first results show that our Haskell Ztrategic library is very competitive against those two well established libraries.
José Nuno Macedo, Emanuel Rodrigues, Marcos Viera, João Saraiva
J. Syst. Softw.3
2019 Memoized zipper-based attribute grammars and their higher order extension
João Paulo Fernandes, Pedro Martins 0001, Alberto Pardo, João Saraiva, Marcos Viera
Sci. Comput. Program.5
2018 MateFun: Functional Programming and Math with Adolescents
abstract
The MateFun project arises with the intention of approaching disciplines that intersect in the field of education, based on the transversality of information and communication technologies with respect to Engineering, Communications, Psychology, Teaching and Pedagogy. In Uruguay, computer courses are increasingly being integrated into curricular content, since learning to program seems to be part of the skills needed for today's people. However, programming in general is absent in mathematics teaching, contrary to the inherent relationship of both. In turn, according to 2015 data from the Educational Monitor of the National Administration of Public Education of Uruguay, Mathematics is the least approved subject of the basic secondary cycle. MateFun is a functional programming language, accessible from a web application, especially aimed to math functions learning. It is intended that through MateFun the learning of programming strengthens the appropriation of the concept of mathematical function, at the same through this project we seek to generate scientific evidence of the transfer or the contributions of programming learning to math. Preliminary data show that the adolescents who experimented with MateFun had similar learning to the control group in mathematical functions, but they also acquired basic knowledge of functional programming.
Alejandra Carboni, Víctor Koleszar, Gonzalo Tejera, Marcos Viera, Javier Wagner
CLEI4
2018 Model-Driven Development of an Interpreter for the Object Constraint Language
abstract
The Object Constraint Language (OCL) plays a central role in many Model-Driven Engineering (MDE) initiatives for expressing invariant conditions in models, among other uses. It is defined as a side-effect free language combining model-oriented and functional features. There are works that explore the use of the functional paradigm for the interpretation of OCL such that most of the functional infrastructure could be predefined and automatically generated. In this work we present the MDE-based automatic generation of such functional infrastructure based on Haskell. We also present how the infrastructure is connected with the Eclipse Modeling Framework for final users, allowing the internal complexity to be transparent to them. We provide a different perspective on the interpretation of OCL, together with a sandbox that allows to evaluate in a unified way several proposals that already exist in the scientific community, as well as to collaborate with the migration of functional aspects to the MDE paradigm.
Gonzalo Sintas, Leticia Vaz Lutz, Daniel Calegari, Marcos Viera
CLEI4
2018 An Internalist Approach to Correct-by-Construction Compilers
abstract
In this paper we present a methodology to organize the construction of a correct compiler, taking advantage of the power of full dependently type systems. The basic idea consists in decorating the abstract syntax of languages with their semantics, allowing to express the correctness of the compiler at type level. We show our methodology in a first small example and then explore how it can be promoted to more realistic languages, realizing that our internalistic approach is feasible for defining a correct-by-construction compiler from an imperative language with conditional iteration to a stack based intermediate language. We also show how this methodology can be combined with the externalist approach, compiling from the intermediate language to an assembly-like low level code and separately proving its correctness.
Alberto Pardo, Emmanuel Gunther, Miguel Pagano, Marcos Viera
PPDP4
2015 Compositional compiler construction: Oberon0
Marcos Viera, S. Doaitse Swierstra
Sci. Comput. Program.1
2014 Expand: Towards an Extensible Pandoc System
Jacco Krijnen, S. Doaitse Swierstra, Marcos Viera
PADL3
2014 Attribute grammar macros
Marcos Viera, S. Doaitse Swierstra
Sci. Comput. Program.1
2013 Just do it while compiling!: fast extensible records in haskell
abstract
The library for strongly typed heterogeneous collections HList provides an implementation of extensible records in Haskell that needs only a few common extensions of the language. In HList, records are represented as linked lists of label-value pairs with a lookup operation that is linear-time in the number of fields. In this paper, we use type-level programming techniques to develop a more efficient representation of extensible records for HList. We propose two internal encodings for extensible records that improve lookup at runtime without needing a total order on the labels. One of the encodings performs lookup in constant time but at a cost of linear time insertion. The other one performs lookup in logarithmic time while preserving the fast insertion of simple linked lists. Through staged compilation, the required slow search for a field is moved to compile time in both cases.
Bruno Martinez, Marcos Viera, Alberto Pardo
PEPM2
2009 Attribute grammars fly first-class: how to do aspect oriented programming in Haskell
abstract
Attribute Grammars (AGs), a general-purpose formalism for describing recursive computations over data types, avoid the trade-off which arises when building software incrementally: should it be easy to add new data types and data type alternatives or to add new operations on existing data types? However, AGs are usually implemented as a pre-processor, leaving e.g. type checking to later processing phases and making interactive development, proper error reporting and debugging difficult. Embedding AG into Haskell as a combinator library solves these problems.
Marcos Viera, S. Doaitse Swierstra, Wouter Swierstra
ICFP1
2008 Haskell, do you read me?: constructing and composing efficient top-down parsers at runtime
abstract
The Haskell definition and implementation of read is far from perfect. In the first place read is not able to handle the associativities defined for infix operators. Furthermore, it puts constraints on the way show is defined, and especially forces it to generate far more parentheses than expected. Lastly, it may give rise to exponential parsing times. All this is due to the compositionality requirement for read functions, which imposes a top-down parsing strategy.
Marcos Viera, S. Doaitse Swierstra, Eelco Lempsink
Haskell1
2006 A multi-stage language with intensional analysis
abstract
This paper presents the definition of a language with reflection primitives. The language is a homogeneous multi-stage language that provides the capacity of code analysis by the inclusion of a pattern matching mechanism that permits inspection of the structure of quoted expressions and their destruction into component subparts. Quoted expressions include an explicit annotation of their context which is used for dynamic inference of type, where a dynamic typing discipline based on Hinze and Cheney's approach is used for typing quoted expressions.This paper follows the approach of Sheard and Pasalic about the use of the meta-language Ωmega as a tool for language design. In this sense, it is shown how to represent the syntax, the static as well as the dynamic semantics of the proposed language in terms of Ωmega constructs.
Marcos Viera, Alberto Pardo
GPCE1