2015
DOI: 10.1016/j.scico.2015.11.003
|View full text |Cite
|
Sign up to set email alerts
|

Modular language implementation in Rascal – experience report

Abstract: All software evolves, and programming languages and programming language tools are no exception. And just like in ordinary software construction, modular implementations can help ease the process of changing a language implementation and its dependent tools. However, the syntactic and semantic dependencies between language features make this a challenging problem. In this paper we detail how programming languages can be implemented in a modular fashion using the Rascal meta-programming language.Rascal supports… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
30
0

Year Published

2017
2017
2024
2024

Publication Types

Select...
7
2

Relationship

1
8

Authors

Journals

citations
Cited by 28 publications
(30 citation statements)
references
References 39 publications
0
30
0
Order By: Relevance
“…Rascal [26] is a specialized language for meta-programming. It provides builtin constructs for syntax definition, and strategic traversal and rewriting of trees.…”
Section: Journal Of Information and Organizational Sciencesmentioning
confidence: 99%
“…Rascal [26] is a specialized language for meta-programming. It provides builtin constructs for syntax definition, and strategic traversal and rewriting of trees.…”
Section: Journal Of Information and Organizational Sciencesmentioning
confidence: 99%
“…P3 Structure should not define a field with the old field name P4 No field access expression to the old field Desugar Oberon-0 (DSO) transformation [6,53], translates for-loops and switch-statements to while-loops and nested if-statements, respectively.…”
Section: Experimental Evaluationmentioning
confidence: 99%
“…extending the abstraction for lists to include length in addition to shape of contents. 1 h ps://github.com/cwi-swat/php-analysis 1 data Nat = zero() | suc(Nat pred); 2 data Expr = var(str nm) | cst(Nat vl) 3 | mult(Expr el, Expr er); 4 5 Expr simplify(Expr expr) = 6 bottom-up visit (expr) { 7 case mult(cst(zero()), y) => cst(zero()) 8 case mult(x, cst(zero())) => cst(zero()) 9 }; Figure 2. The running example: eliminating multiplications by zero from expressions 4.…”
Section: Introductionmentioning
confidence: 99%
“…Modular and extensible language definition has also received a lot of attention in the software language engineering community (e.g., [20], [21], [22], [23]). Below, we review related work that addresses these problems in the context of MDE.…”
Section: B Reuse and Extension In Language Engineeringmentioning
confidence: 99%