Skip to content

Catalogue.cfg Format

asyndeton edited this page Jul 14, 2016 · 5 revisions

Das Konfigurationsformat ist an Java-Blöcke angelehnt: Ein Block wird durch ein Schlüsselwort und eine öffnende geschweifte Klammer eingeleitet und durch eine schließende geschweifte Klammer geschlossen. Der ganze Katalog besteht aus einem catalogue-Block, wie folgt:

catalogue {
  ...
}

Darin befinden sich beliebig viele (0 oder mehr) project-Blöcke:

  project "Beispielprojekt" {
    ...
  }

Ein project-Block enthält beliebig viele (0 oder mehr) instruction-Anweisungen:

  project "Beispielprojekt" {
    instruction "Tun Sie X.";
    instruction "Vergessen Sie nicht, auch noch Y und Z zu machen.";
  }

Beim Parsen werden die instruction-Anweisungen zusammengefügt, Leerzeichen u.U. ergänzt. Die Anweisungen zu obigem Projekt werden in der GUI wie folgt aussehen:

Tun Sie X. Vergessen Sie nicht, auch noch Y und Z zu machen.

Außerdem kann jedes Projekt beliebig viele template-Blöcke enthalten. Davon gibt es zwei Arten: Implementation-Templates und Test-Templates. Der Java-Code kommt direkt und ohne weitere Anführungszeichen in den Klammernblock. Das setzt voraus, dass es sich um gültigen Java-Quelltext handelt, insbesondere die Zahl öffnender und schließender geschweifter Klammern übereinstimmt. Dabei werden Klammern in Kommentaren und Stringliteralen selbstverständlich ignoriert.

    test template "ExampleTest.java" {
      import bla.blub.*;
      
      public class ExampleTest {
        private static final String SOME_CONST = "Diese Klammer wird ignoriert: {";
        // Diese Klammer auch: {
        /* Und diese ebenfalls: { */
      }
    }
    implementation template "ExampleClass.java" {
      package de.hhu.somepackage;
      
      public class ExampleClass {
        // ...
      }
    }

Die Reihenfolge von instruction-Anweisungen und template-Blöcken ist beliebig. Sie können auch vermischt werden.

Es ist zu Beachten, dass im Gegensatz zu Java das Konfigurationsformat keine Kommentare zulässt. Ausnahme: Innerhalb der template-Blöcke.


Beispielkatalog

catalogue {
  project "Example Project" {
    instruction "Bla";
    instruction "Blub";

    test template "SomeTest.java" {
      public class SomeTest {
        private String bla = "{\"{";
      }
    }
	    
    implementation template "SomeClass.java" {
      public class SomeClass {
        //  ... }
        /* } */
      }
    }
  }
}

Erweiterte Backus-Naur-Form (EBNF)

brace-open  =  "{" ;
brace-close  =  "}" ;
quoted-string  =  "\"", { string-character }, "\"" ;
catalogue-block  =  "catalogue", brace-open, { catalogue-content }, brace-close ;
catalogue-content  =  project-block ;
project-block  =  "project", quoted-string, brace-open, { project-content }, brace-close ;
project-content  =  instruction | template-block ;
instruction  =  "instruction", quoted-string, ";" ;
template-block  =  ("test" | "implementation"), "template", quoted-string, brace-open, java-code, brace-close ;

Verzeichnis

Catalogue

Controller

  • Logic
  • [Main Controller](Main Controller)
  • [Project Controller](Project Controller)

File Interaction

Tracking

Clone this wiki locally