Skip to content

Kink-Development-Group/hyp-docs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 

Repository files navigation

HypnoScript

HypnoScript ist eine esoterische, TypeScript-inspirierte Sprache mit hypnotischem Flair.

Inhaltsverzeichnis

Einleitung

HypnoScript ist eine minimalistische, esoterische Sprache, die sich an die Syntax von TypeScript/JavaScript anlehnt und dabei alle möglichen Klischees rund um Hypnose, Trance und hypnotische Induktion verwendet. Trotz des humorvollen Charakters ist sie auf Turing-Vollständigkeit ausgelegt und unterstützt Variablen, Schleifen, bedingte Anweisungen, Funktionen, Objektorientierung (als Session-Konzept) und diverse Sprach-Gimmicks im hypnotischen Stil.

Die Sprache verfügt über eine umfassende Standardbibliothek mit hypnotisch benannten Funktionen für:

  • Mathematische Operationen (Hypno-Math)
  • String-Manipulation (StringSpell)
  • Datenstrukturen (MemoryPalace)
  • Zeit- und Datumsfunktionen (TimeWarp)
  • Erweiterte Kontrollstrukturen (DeepMind)
  • Ein-/Ausgabe-Funktionen (SensoryInput)

Für die vollständige Sprachdefinition siehe DEFINITION.md.

Grundaufbau

Lexikalische Struktur

  • Groß- und Kleinschreibung: Schlüsselwörter sind case-sensitive und stets in Kleinschreibung.
  • Kommentare: Einzeilig (// Kommentar) und mehrzeilig (/* ... */).

Schlüsselwörter

Beispiele für Schlüsselwörter sind Focus, Relax, if, else, while, loop, suggestion, awaken, induce, observe, trance, session, constructor, drift, tranceify, trigger, anchor, oscillate, pendulum, whisper, command, freeze, finale, etc.

Die Sprache bietet auch hypnotische Operator-Synonyme wie:

  • youAreFeelingVerySleepy für ==
  • lookAtTheWatch für >
  • fallUnderMySpell für <
  • yourEyesAreGettingHeavy für >=
  • goingDeeper für <=
  • youCannotResist für !=
  • underMyControl für &&
  • resistanceIsFutile für ||

Operatoren und Sonderzeichen

  • Zuweisung: =
  • Arithmetisch: +, -, *, /, %
  • Vergleich: ==, !=, >, >=, <, <=
  • Logisch: &&, ||, !
  • Trennzeichen/Klammern: ;, ,, (, ), {, }, [, ]

Bezeichner (Identifier)

Bezeichner beginnen mit einem Buchstaben a-z/A-Z oder _ und können beliebige Buchstaben, Ziffern 0-9 oder _ enthalten.

Literale

  • Numerisch: 42, 3.14
  • String: "Hello Trance!"
  • Boolean: true, false

Syntax

Programmstruktur

Ein einfaches HypnoScript-Programm wird von Focus { ... } Relax umschlossen. Innerhalb dieses Blocks stehen Deklarationen, Funktionen und Anweisungen.

Deklarationen

  • Variablen: induce x: number = 5;
  • Funktionen: suggestion add(a: number, b: number): number { awaken a + b; }

Kontrollstrukturen

  • Bedingung: if (x > 0) { observe "x ist positiv"; } else { observe "x ist nicht positiv"; }
  • Schleifen: while (counter < 10) { observe counter; counter = counter + 1; }

Blöcke

Blöcke werden mit { ... } oder optional deepFocus { ... } umschlossen.

Erweiterte Konzepte

  • Objektorientierung: session Person { ... }
  • Warte-Mechanismus: drift(ms)
  • Hypnotische Operator-Synonyme: youAreFeelingVerySleepy statt ==
  • Benutzerdefinierte Strukturen/Typen: tranceify HypnoRecord { ... }

Grammatik (EBNF)

Eine beispielhafte EBNF-Skizze, die die Kernsyntax abbildet, ist in der DEFINITION.md enthalten.

Semantik

  • Variablen und Scope: Variablen sind innerhalb des Blockes und seiner Unterblöcke sichtbar.
  • Ein- / Ausgabe: observe expr; gibt den Wert von expr aus.
  • Turing-Vollständigkeit: Schleifen, Rekursion und bedingte Verzweigungen ermöglichen Turing-Vollständigkeit.

Beispielprogramme

Einfaches „Hello Trance!“

Focus {
  entrance {
      observe "Starte jetzt das HypnoScript-Programm...";
  }
  induce greeting: string = "Hello Trance!";
  induce counter: number = 0;
  suggestion repeatGreet(times: number) {
      while (times > 0) {
          observe greeting;
          times = times - 1;
      }
  }
  repeatGreet(3);
} Relax

Summierung mit Input

Focus {
  induce n: number from external;
  induce sum: number = 0;
  loop (induce i: number = 1; i <= n; i = i + 1) {
      sum = sum + i;
  }
  observe "Die Summe von 1 bis " + n + " ist " + sum;
} Relax

Verwendung erweiterter Konzepte

Focus {
  entrance {
      observe "Willkommen in der tiefen Hypno-Welt...";
      drift(2000);
      observe "Wir werden nun zwei Personen hypnotisieren!";
  }
  session Person {
      expose name: string;
      suggestion constructor(newName: string) {
          this.name = newName;
      }
      suggestion greet() {
          observe "Du fühlst dich sehr entspannt, " + this.name;
      }
      suggestion slowGreet() {
          greet();
          observe "... Warte kurz ...";
          drift(1500);
      }
  }
  induce alice = Person("Alice");
  induce bob   = Person("Bob");
  induce x: number = 5;
  induce y: number = 5;
  if (x youAreFeelingVerySleepy y) {
      observe "x ist gleich y!";
  }
  alice.slowGreet();
  bob.slowGreet();
} Relax

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •