Online Name-Based Navigation for Software Meta-languages

Conference Paper (2023)
Author(s)

P.D. Mosses (TU Delft - Programming Languages, Swansea University)

Research Group
Programming Languages
Copyright
© 2023 P.D. Mosses
DOI related publication
https://doi.org/10.1145/3623476.3623528
More Info
expand_more
Publication Year
2023
Language
English
Copyright
© 2023 P.D. Mosses
Research Group
Programming Languages
Pages (from-to)
220–225
ISBN (print)
979-8-4007-0396-6
Reuse Rights

Other than for strictly personal use, it is not permitted to download, forward or distribute the text or part of it, without the consent of the author(s) and/or copyright holder(s), unless the work is under an open content license such as Creative Commons.

Abstract

Software language design and implementation often involve specifications written in various esoteric meta-languages. Language workbenches generally include support for precise name-based navigation when browsing language specifications locally, but such support is lacking when browsing the same specifications online in code repositories.

This paper presents a technique to support precise name-based navigation of language specifications in online repositories using ordinary web browsers. The idea is to generate hyperlinked twins: websites where verbatim copies of specification text are enhanced with hyperlinks between name references and declarations. By generating hyperlinks directly from the name binding analysis used internally in a language workbench, online navigation in hyperlinked twins is automatically consistent with local navigation.

The presented technique has been implemented for the Spoofax language workbench, and used to generate hyperlinked twin websites from various language specifications in Spoofax meta-languages. However, the applicability of the technique is not limited to Spoofax, and developers of other language workbenches could presumably implement similar tooling, to make their language specifications more accessible to those who do not have the workbench installed.