author: Richard Gankema
title: High-level definitions of control-flow semantics
topics: Logics and semantics
committee: Arend Rensink
started: August 2015
end: January 2016


There is no commonly agreed language for specifying the semantics of programming languages, on par with EBNF for the syntax. Instead, programming languages semantics are typically only described in natural language. An initial attempt to define a language for the specification of control flow semantics for imperative programming languages was presented by Smelik et al. [1]. The visual language in [1] (Control Flow Specification Language – CFSL) is defined using GROOVE graphs. The GROOVE suite is a set of graph transformation tools that manipulates attributed directed graphs. The visual representation of these graphs is very simple and as a consequence the usage of CFSL is somewhat a cumbersome task. Therefore, some syntactic sugar should be added. The assignment is to develop tools to improve the usability of CFSL.


During the development of this project the student is expected to perform the following tasks:

  • Study the previous solutions for the definition of flow semantics that use GROOVE graphs.
  • Identify patterns in the solutions and define new (richer) visual elements to represent these patterns, thus defining a new visual language.
  • Develop a tool that provides an editor for the elements of the new visual language and that translates these elements to GROOVE graphs.

This is a programming oriented project, the student should in particular have an affinity with GUI programming.


If you are interested in taking this project or want more information, please write Eduardo Zambon in the e-mail listed above, or drop by his office at the Zilverling building, room 5078.


[1] R. Smelik, A. Rensink, and H. Kastenberg, Specification and Construction of Control Flow Semantics. Visual Languages and Human-Centric Computing (VL/HCC) 2006.


Additional Resources

  1. The paper