Lehrstuhl Informatik II   
Sprachen und Beschreibungsstrukturen      
   Home Lehre Wintersemester 16/17 Praktika Compiler Construction - Eclipse & CUP login

Compiler Construction - Eclipse & CUP

Dozent:Dr. Michael Petter
Ort/Zeit:02.07.034 Seminarraum, ?
ModulNummer:IN2106 & IN0012
Beschreibung:    We improve the CUP Eclipse plugin

Important news

  • Vorbesprechung/preliminary discussion will take place on monday 2016/01/30 in room 02.07.034 at 14:00

Proceeding

This lab course will be carried out consolidated during the winter lecture term. The exact timing will be determined with a doodle survey.

Prerequisites

Participants in this course should be familiar with the foundations of compiler construction as tought in IN2227 and have profund skills in Java development.

Topics

In this lab course, we will extend the basic implementation of the CUP Eclipse Plugin. We will enhance the already existing framework by several means:

  1. Improve the handling of inline Java Code by actually parsing it and integrating it into the AST of a CUP file
    1. highlight Java-parts
    2. warn about incorrect java code
  2. Integrate support  for JFlex source files into the CUP plugin
    1. highlight JFlex files
  3. Introduce cross-references between JFlex and CUP files
    1. jump to declaration of Token-Classes from JFlex to CUP
    2. jump to implementation of Token-Classes from CUP to JFlex
    3. consistently rename Terminals throughout
      1. CUP
      2. JFlex
      3. Java Action-Code
  4. Introduce new views like
    1. First(k)-computation for current grammar
  5. Create Content assistants for CUP/JFlex files
    1. Template for lists
    2. Template for separated lists
    3. Template for action code
  6. Create Refactoring tools for Grammar transformations
    1. warning/removing unproductive nonterminals
    2. warning/removing unreachable nonterminals
    3. refactoring right recursion to left recursion


TUM - Lehrstuhl Informatik II (Sprachen und Beschreibungsstrukturen) Thanks: Tango and TinyMCE     Generationszeit: 10 ms