Table of Contents

SectorMania - Dateiformat für Templates und Konfigurationsdateien

Beispiel

type Identifier
{
  attribute1 = TextWithoutSpaces
  attribute2 = "Text with spaces"
  attribute3 = 3.457
  attribute4 = (a, list, of, entries)
  
  type subIdentifier
  {
    // some comment
    subattr1 = Something
    damage = (15+1d3, 10+1d2, 5)
  }

  type // without identifier
  {
  }
}

Erklärung

Block

Blöcke sind eine Sammlung aus Attributen und Unterblöcken. Sie werden durch eine Typenbezeichnung und einen optionalen Namen deklariert, ihre Inhalte sind im Inneren von geschweiften Klammern aufgeführt.

Attribut

Ein Attribut hat einen Namen und eine zugeordnete Liste von Stringwerten, in der allgemeinsten Form folgendermaßen definiert:

attribut = ("Eine Liste", "von", "String-Werten", "mit Kommata separiert")

String-Werte ohne Leerzeichen können ohne Anführungszeichen angegeben werden. Im Falle einer Liste mit nur einem Wert können die Klammern weggelassen werden. Numerische Werte werden intern auch als String behandelt und beim Zugriff auf Wunsch entsprechend umgewandelt.

Kommentar

Das Auftauchen zweier Forward Slashes deklariert den Rest der Zeile als Kommentar.

Datei

Eine Datei ist der globale Block mit Typnamen “GLOBAL” und unspezifiziertem Bezeichner. Sie enthält beliebig viele Unterblöcke und kann auch Attribute enthalten.

Grammatik

file        ::= inner_block
inner_block ::= (block | attribute)*
block       ::= identifier [identifier] '{' inner_block '}'
identifier  ::= alphanumeric (alphanumeric)*
attribute   ::= identifier '=' value eol
value       ::= list | string
list        ::= '(' (list | string) (',' (list | string))* ')'