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 GrossbuchstabeA–Z, eine Ziffer, der Unterstrich_oder das Pluszeichen+(z. B. inWORKPLANE=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.