Präprozessoren

Präprozessoren für Quellcode − Pretty printing und Minifying.

Präprozessoren Joachim Christ

Formatierer


Scan zeigt die gefundenen Sprachelemente der Quelle − eines pro Zeile − an. Parse behält die Zeilenstruktur der Quelle bei, eliminiert aber alle Leerzeichen und -zeilen.

Prettify bereitet ein beliebig geschriebenes Programme in einer einheitlichen Form auf. Die Option Parenthesize steuert dabei, ob eine einzelne Anweisung durch '{' und '}' geklammert werden soll. Andernfalls wird eine if-else if-else if-else-Kaskade flach dargestellt.

Minify stellt ein Programme möglichst kompakt dar und erschwert dadurch das Erkennen seiner Bedeutung. Dabei werden insbesondere Kommentare und Leerraum entfernt.

Demgegenüber behält Compress Kommentare und Leerzeilen bei, verdichtet aber Leerraum.

Obfuscate ersetzt die Bezeichner eines Programms und verschleiert damit dessen Bedeutung fast vollständig.

Präprozessor


Die Option Preprocess leistet:

  • das Ersetzen der Namen von Konstanten durch deren Werte
  • eine bedingte Compilierung durch die Auswahl des richtigen Zweigs einer Anweisung if-else
  • die Eliminierung von nicht erreichbarem Code nach 'return', 'break', 'continue' oder 'goto'
  • das Entfernen von Kommentaren

Weiterlesen…

Algebraische Arithmetik

Algebraische Arithmetik.

Algebraische Arithmetik Joachim Christ

Arithmetische Sprachelemente


Folgende Sprachelemente sind implementiert:

  • Skalare numerische Werte und Zeichenketten
  • Vorzeichen: + oder
  • Klammerung von Ausdrücken: ()
  • Operatoren: +, , *, /, div (ganzzahlige Division), % (Rest bei der ganzzahliger Division) und ** (Exponentiation)
  • Bit-Operatoren: ~ (Bitweises Nicht), & (Bitweises Und), | (Bitweises Oder), ^ (Bitweises exklusives Oder), >> (Shift rechts), << (Shift links), >>> (Shift rechts ohne Vorzeichen)
  • (Präfix-)Operatoren: abs, sign sowie trunc (ganzzahliger Anteil) und frac (Dezimalstellen)
  • sowie: ++ (Inkrement) und -- (Dekrement)
  • Vergleichs-Operatoren: == sowie != (für alle Datentypen)
  • weiterhin: <, <=, > und >= (für Zeichenketten und Zahlen)
  • Logische Operatoren: ! (logisches Nicht), && (logisches Und), || (logisches Oder) und ^^ (exklusives Oder)
  • sowie: ? … : … (Bedingung)
  • Nicht skalare Werte: [ …, … ] (Felder) sowie { …, … } (Strukturen)
  • Zugriffs-Operatoren: [ … ] und . …
  • Test-Operator: in (Index in Feld bzw. Komponente in Struktur)

Algebraische Sprachelemente


Folgende Sprachelemente können zusätzlich bei einer algebraischen Auswertung benutzt werden:

  • Variable
  • Reguläre Ausdrücke
  • Anweisung: return
  • (Präfix-)Operator: typeof (Typ eines Ausdrucks) und new (Neue Instanz)
  • (Postfix-)Operatoren: ++ und --
  • Zuweisungs-Operatoren: =, +=, −=, *=, /=, %=, **=, &=, |=, ^=, >>=, <<= und >>>=
  • Vergleichs-Operatoren: === und !==
  • Aufrufe: ƒ( …, …) und .ƒ( …, …)
  • Funktionsdefinitionen: function ( …, … ) { …; … } und ( …, … ) => { …; … }

Weiterlesen…