Ausdruckssyntax
In diesem Kapitel werden die folgenden syntaxbezogenen Aspekte behandelt: Token, Grammatik, unterstützte Operationen, in Berechnungen verwendete vordefinierte Namen und Ausdrucksfunktionen. Nähere Informationen dazu finden Sie in den Unterabschnitten weiter unten.
Token
Der für eine bestimmte Eigenschaft eingegebene Ausdruck wird zu einer Sequenz von Token verarbeitet, die der in diesem Unterabschnitt beschriebenen Struktur entsprechen müssen. Whitespaces zwischen Token haben keine Bedeutung und werden ignoriert.
Identifier
Zum Referenzieren von integrierten Objekten werden integrierte Identifier verwendet. Integrierte Identifier beginnen mit einem Groß- oder Kleinbuchstaben oder einem Unterstrich (Top bezieht sich z.B. auf den oberen Rand einer Region). Benutzer-Identifier werden in eckige Klammern [ ] gesetzt und können beliebige Unicode-Zeichen enthalten ([Sep1] kann sich z.B. auf den äußersten linken Rand der Tabellenspalte namens Description beziehen).
Aus einem einzelnen Zeichen bestehende Token
Aus einem einzelnen Zeichen bestehende Token sind ein wesentlicher Bestandteil von Programmiersprachen und werden normalerweise zu komplexen Ausdrücken kombiniert. Zu aus einem einzelnen Zeichen bestehenden Zeichen gehören die folgenden: (, ), {, }, ,, :, ..
Zahlenliterale
Zahlenliterale stehen für numerische Werte. Zahlenliterale haben kein Vorzeichen (dieses wird als unitärer Operator behandelt) und müssen mindestens eine Stelle vor und nach dem Dezimalkomma (bzw. Dezimalpunkt) haben.
String-Literale
String-Literale repräsentieren in doppelte Anführungszeichen gesetzte Zeichensequenzen. String-Literale können jedes beliebige Unicode-Zeichen und mit dem umgekehrten Schrägstrich gekennzeichnete Sonderzeichen enthalten (so steht z.B. das Zeichen \n für einen Zeilenumbruch).
Farbliterale
Zahlenliterale stehen für Farbwerte. Farbliterale haben dieselbe Form wie in HTML und CSS und werden als drei oder sechs hexadezimale Stellen dargestellt (#FFF ist z.B. ein hexadezimaler Farbcode, der für Weiß steht).
Operatoren
Operatoren sind Symbole, die zur Durchführung verschiedener Operationen wie dem Vergleichen von Werten, der Durchführung von mathematischen Berechnungen, dem Verketten von Strings, usw. verwendet werden. Die folgenden Operatoren werden unterstützt: +, -, *, /, &, |, =, !, <, >, ^, %.
Grammatik
In diesem Unterabschnitt werden die folgenden Grammatikaspekte beschrieben: binäre und unäre Ausdrücke.
Binäre Ausdrücke
Ein binärer Ausdruck ist ein Ausdruck, der zwei Operanden und einen Operator, der eine Aktion (z.B. eine Multiplikation) an den Operanden durchführt, enthält.
Multiplikations- (*, /), Additionsoperatoren (+, -) und logische Operatoren (&&, ||, !) sind linksassoziative Operatoren. Das bedeutet, dass Operatoren derselben Operatorvorrangstellung von links nach rechts verarbeitet werden (so wird etwa im Ausdruck 5+2*4 die Multiplikation vor der Addition durchgeführt, da die Multiplikation Vorrang vor der Addition hat). Linksassoziative Operatoren können verkettet werden.
Gleichheits- (==, !=, =), relationale Operatoren (<, >, ≤, ≥) und allgemeine Operatoren (nicht in anderen Klassen enthaltene Operatoren) sind nicht assoziativ. Daher führt die Verkettung solcher Operatoren ohne Klammern zu einem Parser-Fehler.
Unäre Ausdrücke
Ein unärer Ausdruck ist ein Ausdruck, der nur einen Operanden und einen unären Operator enthält, der auf diesen einzelnen Operanden angewendet wird. Unten sind die unterstützten unären Ausdrücke beschrieben.
•Ein integrierter Verweis-Ausdruck ist ein Identifier, ein von einer Sequenz von Mitgliedsselektoren gefolgter Identifier oder ein von einem Tupel gefolgter Identifier, der ein Funktionsaufruf ist.
•Ein Benutzerverweis-Ausdruck ist dasselbe wie ein integrierter Verweis, mit der Ausnahme, das keine Funktionsaufrufe möglich sind.
•Ein unäres-Präfix-Operator-Ausdruck ist ein Operator, der auf einen einzelnen Operanden angewendet wird und vor den Operanden gesetzt wird. Häufig gebrauchte unäre Präfix-Operatoren sind +, -, !, ++, --.
•Ein String-Literal-Ausdruck: siehe Beschreibung in String-Literale im Unterabschnitt Token oben.
•Ein Zahl-Ausdruck ist ein Zahlenliteral mit einem optionalen Suffix, bei dem es sich um jeden integrierten Identifier handeln kann. Diese Ausdrucksart kann z.B. bei Abstandsliteralen nützlich sein.
•Ein Farbliteral-Ausdruck: siehe Beschreibung in Farbliteral im Unterabschnitt Token oben.
•Bei Tupel-Ausdrücken gibt es die folgenden Arten: (i) ein leeres Tupel, das keine Elemente enthält und als () dargestellt wird; (ii) ein Singleton-Tupel, das ein einziges Element enthält (z.B. (50,)); (iii) alle anderen Tupel, die mindestens zwei Werte enthalten (z.B. ist 5pt, “Hello” ein Tupel mit einem Abstand als erstem Wert und einem String als zweitem Wert).
•Ein Struktur-Ausdruck ähnelt einem Tupel-Ausdruck, mit dem Unterschied, dass Tupel-Mitglieder zum Identifizieren Indizes haben, während Struktur-Mitglieder Namen anstelle von Indizes haben. Im Gegensatz zu einem Tupel ist eine Struktur mit einem einzigen Mitglied noch immer eine Struktur, da sie einen Namen hat. Eine leere Struktur entspricht jedoch einem leeren Tupel. Beispiel für eine Struktur: { X: 30pt, Y: -20pt } ist eine Struktur mit den Mitgliedern X und Y, wobei beides Abstände sind.
Unterstützte Operationen
In diesem Unterabschnitt werden unterstützte Operationen beschrieben.
Zahlen
Zahlen können addiert, subtrahiert, negiert, multipliziert, dividiert und verglichen werden. Der PDF Extractor unterstützt die Funktionen odd und even, um zu überprüfen, ob die Zahl eine gerade oder ungerade Ganzzahl ist. Das Ergebnis ist nicht definiert, wenn eine Zahl keine Ganzzahl ist.
Booleans
Boolesche Operationen (Boolean) können Gleichheitsvergleiche (==, !=), logische Konjunktionen (AND) und Disjunktionen (OR) erhalten.
Positionen
Positionen definieren die Position einer Kante auf der Seite. Mit Hilfe von logischen Operationen können Sie eine Kante auf der Seite positionieren. Normalerweise verwenden Sie dazu eine Kante oder fügen einen Abstand zu einer Kante hinzu (z.B. Left + 50pt). In derselben Richtung definierte Positionen können voneinander subtrahiert werden, um eine Ergebnisposition zu erhalten (z.B. (Top + 500 pt) - (Top + 200pt) = Top+300pt).
Abstände
Abstände definieren, wie weit zwei Positionen auf der Seite voneinander entfernt sind. Die Abstandsfunktion wird in pt, in, cm, mm und pc gemessen, wobei diese Einheiten dieselbe Bedeutung wie in CSS haben. Sie können Abstände addieren und subtrahieren und einen Abstand mit einer Zahl multiplizieren. Abstände können auch dividiert werden, um das Verhältnis zu erhalten.
Operationen mit Rechtecken
Der PDF Extractor unterstützt die folgenden Funktionen zur Bearbeitung von Rechtecken:
Mit der Funktion inflate ändern Sie die Größe eines Rechtecks. Wenn Sie negative Zahlen eingeben, wird das Rechteck um den angegebenen Wert verkleinert. Wenn Sie positive Zahlen eingeben, wird das Rechteck vergrößert. Diese Funktion könnte sich als nützlich erweisen, wenn eine Seite z.B. einen Rahmen hat, der von der Verarbeitung ausgenommen werden soll. Sie können die Größe des Rechtecks manuell oder mit Hilfe der inflate-Funktion ändern (Beispiel unten).
Syntaxinflate(rectangle, horizontal distance, vertical distance) -> rectangle
BeispielSo versetzt etwa der Ausdruck inflate(PageRect, -1cm, -1cm) in der Eigenschaft Region das Rechteck 1 cm von beiden horizontalen Rändern und vertikalen Seitenrändern aus nach innen (siehe Abbildung unten). Informationen zu PageRect finden Sie unten unter Integrierte Namen.
|
Die Funktion offset versetzt das Rechteck um den angegebenen horizontalen und vertikalen Abstand.
Syntaxoffset(rectangle, horizontal distance, vertical distance) -> rectangle
|
Die Funktion clip erhält zwei Rechtecke als ihre zwei Argumente und gibt ein Rechteck zurück, das aus dem Überlappungsbereich der zwei Input-Rechtecke besteht.
Syntaxclip(rectangle, rectangle) -> rectangle
|
Die Funktion contains überprüft, ob sich die definierten Positionen innerhalb der Rechteckgrenzen befinden.
Syntaxcontains(rectangle, horizontal location, vertical location) -> boolean
|
Integrierte Namen
Der PDF Extractor unterstützt die folgenden integrierten Namen, die in Berechnungen verwendet werden können:
•Left: Der linke Rand der aktuellen Seite. Left ist ein Alias von PageRect.Left.
•Top: Der obere Rand der aktuellen Seite. Top ist ein Alias von PageRect.Top.
•Right: Der rechte Rand der aktuellen Seite. Right ist ein Alias von PageRect.Right.
•Bottom: Der untere Rand der aktuellen Seite. Bottom ist ein Alias von PageRect.Bottom.
•PageRect: Ein Rechteck, mit dem die Ränder der aktuellen Seite definiert werden. Der vordefinierte Name PageRect ist in Kombination mit Rechteckverarbeitungsfunktionen wie inflate nützlich (siehe "Operationen mit Rechtecken" oben).
•PageNumber: Die Seitennummer der aktuellen Seite.