Nun, S-Ausdrücke sind im Wesentlichen „abstrakte Syntax“ in dem Sinne, dass sie lediglich eine konkrete Syntax für abstrakte Syntaxbäume sind und daher jede Sprache als S-Ausdrücke dargestellt und mit S-Ausdrucksbefehlen manipuliert werden kann. Daher syntax-ppss
ist der „Sexps“ sprechen einfach die Lisp Art und Weise zu sprechen über abstrakte Syntaxbäume.
In der syntax-ppss
Regel funktioniert dies jedoch in keinem Modus. Es ist grundsätzlich auf Lisp-ähnliche Sprachen ausgerichtet, und wenn die konkrete Sprache einer Sprache zu sehr von Sexps abweicht, ist es nicht mehr sinnvoll, Sexp-Befehle zur Manipulation der Sprache zu verwenden. Es würde funktionieren, aber es würde eine zu große Lücke zwischen der abstrakten Darstellung und der konkreten Syntax geben, was die meisten Befehle nicht intuitiv machen würde.
Ein Teil der zugrunde liegenden Infrastruktur syntax-ppss
ist jedoch ziemlich allgemein. Die wichtigsten Modi sind in der Regel sehr bemüht, eine Verbindung herzustellen, da sie mit vielen integrierten Emacs-Funktionen gut funktionieren und eine allgemeine Schnittstelle für andere Pakete von Drittanbietern wie Smartparens bieten.
Verlässt syntax-ppss
sich insbesondere auf Syntaxtabellen für Zeichenfolgen und Kommentare. Syntaxtabellen kategorisieren einzelne Zeichen nach ihrer syntaktischen Klasse. Es gibt Klassen für gepaarte Begrenzer, Zeichenkettenbegrenzer und Kommentarzeichen.
Die Struktur von Zeichenfolgen und Kommentaren ist in fast allen Programmiersprachen ziemlich ähnlich: Zeichenfolgen werden normalerweise in spezielle Trennzeichen eingeschlossen. Kommentare können auch spezielle Trennzeichen haben oder mit einem bestimmten Zeichen beginnen und sich bis zum Ende der Zeile erstrecken. Diese Strukturen können leicht in Syntaxtabellen erfasst werden, und fast alle Hauptmodi definieren geeignete Syntaxtabellen, wenn auch nur, um von der syntaktischen Verstärkung von Emacs zu profitieren.
Funktioniert daher syntax-ppss
gut für Zeichenfolgen und Kommentare in fast jeder Sprache, aber die Unterstützung und "Nützlichkeit" anderer Funktionen variiert.