Definition – Grammatik der NCX-Sprache

Die Grammatik der NCX-Sprache in Backus-Naur-Form: Wie sich NC-Programme aus Blöcken und Zellen mit Funktion, Adresse und Wert zusammensetzen.

Die NCX-Sprache ist als formale Grammatik in Backus-Naur-Form (BNF) definiert. Ein NC-Programm besteht danach aus Blöcken (Zeilen), die sich aus Zellen der Form [KEYWORD:ADDRESS=VALUE] zusammensetzen.

Grammatik

<program>   ::= ( <block> <new-line> )+
<new-line>  ::= "\n"
<block>     ::= <cell>+
<cell>      ::= "[" <content> "]"
<content>   ::= <function> "=" <target>
<function>  ::= <text> | <text> ":" <address>
<address>   ::= <text>
<target>    ::= <value> | <value> "," <target>
<value>     ::= <text> | <decimal> | <integer>
<decimal>   ::= <integer> "." <digits>
<integer>   ::= <digits> | "-" <digits>
<digits>    ::= <digit>+
<digit>     ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
<text>      ::= <character>+
<character> ::= "A" ... "Z" | <digit> | "_" | "+"

Die Produktionen im Einzelnen

  • <program> – Ein Programm besteht aus einem oder mehreren Blöcken, die jeweils mit einem Zeilenumbruch abgeschlossen werden.
  • <block> – Ein Block ist eine Folge von einer oder mehreren Zellen und entspricht einer Programmzeile.
  • <cell> – Die Zelle ist die Grundeinheit eines Programms. Jede Zelle besteht aus einem Inhalt, der in eckige Klammern […] eingeschlossen ist.
  • <content> – Der Inhalt einer Zelle setzt sich aus einer Funktion und einem Ziel zusammen, getrennt durch ein Gleichheitszeichen =.
  • <function> – Die Funktion gibt an, welche Aktion die Zelle ausführt. Sie besteht entweder aus einem Text oder aus einem Text, gefolgt von einem Doppelpunkt : und einer Adresse.
  • <address> – Die Adresse ist optional und wird nur verwendet, wenn die Funktion sie benötigt. Sie besteht aus Text.
  • <target> – Das Ziel gibt an, worauf die Funktion angewendet wird: ein einzelner Wert oder eine durch Kommas getrennte Liste von Werten (z. B. INTERPO=ARC,CCW).
  • <value> – Ein Wert kann Text, eine Dezimalzahl oder eine Ganzzahl sein.
  • <decimal> – Eine Dezimalzahl besteht aus einem Ganzzahlteil und einem Nachkommateil, getrennt durch einen Punkt . (z. B. -22.543).
  • <integer> – Eine Ganzzahl ist eine positive oder negative ganze Zahl ohne Dezimalstellen; negative Zahlen beginnen mit einem Minuszeichen -.
  • <digits> – Eine Folge von einer oder mehreren Ziffern.
  • <text> – Text ist eine Folge von einem oder mehreren Zeichen.
  • <character> – Ein einzelnes Zeichen ist ein Grossbuchstabe AZ, eine Ziffer, der Unterstrich _ oder das Pluszeichen + (z. B. in WORKPLANE=XY+Z). Leerzeichen sind nicht zulässig.

Beispiel

Ein Block – hier ein Kreisbogen im Uhrzeigersinn mit Mittelpunkt – besteht aus mehreren Zellen:

[INTERPO=ARC,CW,CENTER][GOTO:X=20][GOTO:Y=20][CENTER:X=10][CENTER:Y=10]

Was die einzelnen Schlüsselwörter bedeuten, dokumentiert die Spezifikation; weitere Umsetzungen zeigen die Beispiele.