(en) (de) (sr)

MTC (Abk. von engl. MediaWiki Template Compiler) ist ein kleiner Compiler für die Vorlagen. Sein Zweck ist, Schreiben von robusten und komplizierten Vorlagen zu verienfachen.

Die Syntax уреди

Variablen уреди

Wenn man Variablen in Vorlagen benutzt, muss man normalerweise drei Klammern vor und nach den Namen der Variable schreiben. In MTC kann man das mit einem Dollarsymbol vor und nach dem Namen tun:

 
$ein sonniger Tag$

welches wird als

 
{{{ein sonniger Tag}}}

kompilieren.

Konstanten уреди

Wenn es benötigt wird, ein Teil des Codes mehrmal in der Vorlage zu wiederholen, kann man diesen Teil als eine Konstante definieren. Danach kann dieser Teil immer durch eine Konstante gedruckt werden. In MTC definiert man eine Konstante folgenderweise:

 
$$name inhalt

  • Vor dem namen Name müssen zwei Dollarsymbolen stehen und zwar mit ihm verbunden.
  • Der Name darf nur aus 26 Symbolen englisches Alphabets bestehen.
  • Der Name muss von dem Inhalt mit mindestens einem Leerzeichnen getrennt werden.
  • Der Inhalt darf alles enthalten, was man braucht. Er beenet aber immer mit der neuen Zeile. Nicht früher, nicht nachher.

Um eine Konstante zu benutzen, soll man zuerst ein „at“-Zeichen als Präfix des Namens schreiben, und danach den Namen, mit diesem Zeichen verbunden. Es folgt ein Beispiel:

 
$$diff *($3$ - $2$ + $1$)
@diff@diff

Dieser Code wird folgenderweise Kompiliert:

 
{{ #expr: ({{{3}}} - {{{2}}} + {{{1}}}) }}{{ #expr: ({{{3}}} - {{{2}}} + {{{1}}}) }}

Bemerkung: Man kann mehrere Konstanten nacheinander rufen, und dann wird es zum Beispiel als "@diff@diff@diff" geschrieben. Sonst soll man der Name der Konstante nie mit einem Wort verbinden. Zum Beispiel:

@diffist Abstand zwischen...

ist falsch, während

@diff ist Abstand zwischen...

ist richtig.

Ausdrücke уреди

Normalerweise, soll man beim Schreiben eines Ausdrucks in einer Vorlage die Form {{ #expr: ... }} benutzen. MTC bietet dasselbe über der Form *( ... ) an. Zum Beispiel:

 
*($2$ + $3$)

wird als

 
{{ #expr: ({{{2}}} + {{{3}}}) }}

kompiliert.

Vorlagen уреди

In MTC-Code kann man auch anere Vorlagen rufen. Das wird mit Zeichen „`“, den namen der Vorlage und mit kleinen Klammern „()“ nach dem Namen der Vorlage getan. Zusätzlich können diese Klammern Argumenten der Vorlage enthalten. Alle Argumenten sollen mit Kommas voneinander getrennt werden.

 
`name der Vorlage(arg1,arg2,arg3)
`name der Vorlage()

wird als

 
{{name der Vorlage|arg1|arg2|arg3}}
{{name der Vorlage}}

kompiliert.

Bedingungen уреди

MTC macht den Unterschied zwischen if und if-else Bedingungen. Somit werden diese zwei Gruppen auch getrennt betrachtet werden.

if уреди

Einfache if-Bedingung. Zum Beispiel:

if(Bedingung)(Code)

wird als

{{ #ifexpr: (Bedingung) | Code}}

kompiliert.

ifif уреди

Die if-else Bedingung. Zum Beispiel:

ifif(Bedingung)(Code beim true)(Code beim false)

wird als:

{{ #ifexpr: (Bedingung) | Code beim true | Code beim false}}

kompiliert.

pif уреди

Pif-Bedingung stellt den Äquivalent der {{#if: {{{var|}}}| code }} Form dar. Zum Beispiel:

pif(Eine Variable)(Code)

wird als

{{ #if: {{{Eine Variable|}}} | Code }}

kompiliert.

pifif уреди

Pif-Bedingung stellt den Äquivalent der {{#if: {{{var|}}}| code1 | code2 }} Form dar. Zum Beispiel:

pifif(Eine Variable)(Code beim Existieren)(Code beim Fehlen)

wird als

{{ #if: {{{Eine Variable|}}} | Code beim Existieren | Code beim Fehlen }}

kompiliert.

Einschachtelung уреди

Einschachtelung soll vollkommen möglich sein. Bitte informieren Sie mich, wenn sie irgendetwas ungewöhnliches bemerken.

Speziale Zeichen уреди

Einige Zeichnen sind aufgrund der Funktionalität der MTC-Sprache im Text der komilierten Vorlage untereichbar geworden. Um das zu umgehen, kann man den Backslash '\' als Präfix für diese Zeichnen benutzen. Normal verhaltet sich der Backslash für alle Zeichen, ausser Leerzeichen und 'n' gleich. Wenn man '\n' eingibt, kriegt man kein 'n' sondern eine neue Zeile in kompilierter Vorlage. Es folgt ein Beispiel:

\^\`\n\n\$abc

wird als

^`

$abc

kompiliert.

Kommentare уреди

Genauso wie in anderen Programmiersprachen wie Java oder C++, in MTC kann man auch Kommentare schreiben, um manche Teile besser zu erklären oder einfach von anderen zu trennen. MTC bietet zwei Arten der Kommentaren: Dopperslash beginnende (// ...) und Slash-Stern beginnende (/* ... */). Unten steht ein Beispiel von möglichen Anwendungen:

$$switch1arg <ein robuster Ausdruck>  /* Wenn ein Ausdruck groß ist,
                                         kann man ihn gesondert
                                         definieren */

// nun kann man eine Switch-Anweisung vereinfacht schreiben
$$sw/* unmöglich? */itch1 {{ #switch: @switch1arg | val1=res1 | val2=res2 | ... | defaultres }}

// und am Ende ruft man das alles als eine Konstante
@switch1

wird als

{{ #switch: <ein robuster Ausdruck> | val1=res1 | val2=res2 | ... | defaultres }}

kompilieren.

Ein Beispiel уреди

Es folgt ein komplizierteres Beispiel:

$$diff ($3$ - $2$ + 1)

*(
  $1$
  + `intcast(
         ifif($1$ > $3$)
           (*($2$ - $1$))
	   (
	    ifif($1$ < $2$)
	      (*($3$ - $1$))
	      (0)
	   )
	   / @diff
     )
     * @diff
)

Wenn man das kompiliert, wird es so aussehen (Bemerkung: der Ausgangscode wurde umgebrochen, sodass er die Seite nicht deformiert):

{{ #expr: ( {{{1}}} + {{intcast|{{ #ifexpr: ({{{1}}} > {{{3}}}
) | {{ #expr: ({{{2}}} - {{{1}}}) }} |  {{ #ifexpr: ({{{1}}} <
{{{2}}}) | {{ #expr: ({{{3}}} - {{{1}}}) }} | 0}} }} / ({{{3}}}
- {{{2}}} + 1)}} * ({{{3}}} - {{{2}}} + 1)) }}

Lizenzen уреди

Um dieses Program zu kompilieren, habe ich Borland C++ Compiler 5.5 (freeware tool) für Windows, und GNU g++ 3.4.6 für Linux benutzt. Es kann von irgendjemanden und mit irgendwelchem Zweck benutzt werden.

Weblinks уреди