6 research outputs found
Using Spoofax to Support Online Code Navigation
Spoofax is a language workbench. A Spoofax language specification generally includes name resolution: the analysis of bindings between definitions and references. When browsing code in the specified language using Spoofax, the bindings appear as hyperlinks, supporting precise name-based code navigation. However, Spoofax cannot be used for browsing code in online repositories.
This paper is about a toolchain that uses Spoofax to generate hyperlinked twins of code repositories. These generated artefacts support the same precise code navigation as Spoofax, and can be browsed online. The technique has been prototyped on the CBS (Component-Based Semantics) specification language developed by the PLanCompS project, but could be used on any language after specifying its name resolution in Spoofax
Fundamental Constructs in Programming Languages
Specifying the semantics of a programming language formally can have many
benefits. However, it can also require a huge effort. The effort can be
significantly reduced by translating language syntax to so-called fundamental
constructs (funcons). A translation to funcons is easy to update when the
language evolves, and it exposes relationships between individual language
constructs.
The PLanCompS project has developed an initial collection of funcons
(primarily for translation of functional and imperative languages). The
behaviour of each funcon is defined, once and for all, using a modular variant
of structural operational semantics. The definitions are available online.
This paper introduces and motivates funcons. It illustrates translation of
language constructs to funcons, and how funcons are defined. It also relates
funcons to notation used in previous frameworks, including monadic semantics
and action semantics.Comment: 20 pages plus appendix, submitted to ISoLA 202
Development of a system for example-driven software language engineering
Masteroppgave i informatikkINF399MAMN-PROGMAMN-IN
A Component-Based Formal Language Workbench
The CBS framework supports component-based specification of programming languages. It aims to significantly reduce the effort of formal language specification, and thereby encourage language developers to exploit formal semantics more widely. CBS provides an extensive library of reusable language specification components, facilitating co-evolution of languages and their specifications. After introducing CBS and its formal definition, this short paper reports work in progress on generating an IDE for CBS from the definition. It also considers the possibility of supporting component-based language specification in other formal language workbenches.Programming Language