In recent years, functional programming languages have been cross-pollinating the object-oriented world. C# is now including constructs and concepts that are typical of functional languages, such as first-order functions and lazy evaluation, and there is a rising interest in multi-paradigm languages, like Python and Scala. The tendency to contamination between different programming styles can be read as the symptom of a need for more flexibility and conciseness in general-purpose languages. This is especially true when the constructs that a programming language provides are felt like insufficient or inadequate to express the solution of a domain-specific problem. In fact, we expect a domain-specific problem to be better modeled using a language that is specific to that domain. The Neverlang framework is designed to assist developers in the implementation of their own problem-oriented languages, using a sectional approach that favors code reuse. Neverlang acts as a toolchain that puts in sequence the typical stages of language development (defining the grammar, the semantics, and compiling the result), and generates code to implement an interpreter or a compiler. Unfortunately, generated code cannot be updated progressively: it has to be regenerated each time the sources change. We developed an LALR(1) parser generator that can update the implementation of an existing parser on the fly, avoiding any code generation intermediate step. We called it DEXTER: the Dynamically EXTEnsible Recognizer. In this paper we present the integration of Neverlang with DEXTER.

DEXTER and neverlang : a union towards dynamicity / W. Cazzola, E. Vacchi - In: Proceedings of the 7th Workshop on the implementation, compilation, optimization of object-oriented languages, programs and systems : ICOOOLPS'12 : Beijing, China, june 11th, 2012 / [a cura di] E. Jul, I. Rogers, O. Zendra. - [s.l] : Association for computing machinery, 2012. (( Intervento presentato al 7. convegno Workshop on the Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems (ICOOOLPS'12) tenutosi a Beijing, China nel 2012.

DEXTER and neverlang : a union towards dynamicity

W. Cazzola
Primo
;
E. Vacchi
Ultimo
2012

Abstract

In recent years, functional programming languages have been cross-pollinating the object-oriented world. C# is now including constructs and concepts that are typical of functional languages, such as first-order functions and lazy evaluation, and there is a rising interest in multi-paradigm languages, like Python and Scala. The tendency to contamination between different programming styles can be read as the symptom of a need for more flexibility and conciseness in general-purpose languages. This is especially true when the constructs that a programming language provides are felt like insufficient or inadequate to express the solution of a domain-specific problem. In fact, we expect a domain-specific problem to be better modeled using a language that is specific to that domain. The Neverlang framework is designed to assist developers in the implementation of their own problem-oriented languages, using a sectional approach that favors code reuse. Neverlang acts as a toolchain that puts in sequence the typical stages of language development (defining the grammar, the semantics, and compiling the result), and generates code to implement an interpreter or a compiler. Unfortunately, generated code cannot be updated progressively: it has to be regenerated each time the sources change. We developed an LALR(1) parser generator that can update the implementation of an existing parser on the fly, avoiding any code generation intermediate step. We called it DEXTER: the Dynamically EXTEnsible Recognizer. In this paper we present the integration of Neverlang with DEXTER.
Parsers ; languages evolution ; domain-specific languages ; development tool
Settore INF/01 - Informatica
2012
Book Part (author)
File in questo prodotto:
Non ci sono file associati a questo prodotto.
Pubblicazioni consigliate

I documenti in IRIS sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/2434/195665
Citazioni
  • ???jsp.display-item.citation.pmc??? ND
  • Scopus ND
  • ???jsp.display-item.citation.isi??? ND
social impact