See Bachelor projects

Static views of advanced-dispatching


New programming languages that allow reducing the complexity of software solutions are frequently developed, often as extensions of existing languages or as domain-specific languages. The current trend of using so-called language workbenches to develop programming languages also allows to easily create development tools like syntax highlighting editors or outline views. Current efforts also aim at providing debugging support for newly developed languages. Other tool support which is more oriented towards the semantics (rather than the syntax) of new programming languages are, nevertheless still missing.


In the group, the ALIA4J framework is being developed which provides a very high-level intermediate representation to which new languages can be compiled and which preserves nearly all the semantics of the languages. Currently this framework mainly targets implementing execution environments for new languages, but we are extending it to becoming a language workbench on top of which tools can be developed. Our re-usable debugger, which allows observing the program execution in terms of the semantics of the source-level abstractions, is the first example.

In this assignment, tools should be developed taking benefit from the semantic intermediate representation. These tools should support software comprehension by visualizing semantic dependencies between program elements or predicting the execution of dynamic language features for exploring the source code.

List of Tasks

  • Make a survey of IDE tools provided by programming languages with dedicated IDE support, like AspectJ, JPred or ObjectTeams
  • Get familiar with the ALIA4J intermediate representation
  • Classify which IDE features require syntactic or semantic information about the program and which can be based on the provided intermediate representation
  • Develop analyses that derive the required information from the intermediate representation
  • Visualize the data resulting the analyses in the IDE
  • Where necessary/useful, use the Equinox Aspects framework to enhance existing editors or views in the IDE



Haihan Yin