Wörtliche Schnur

Eine wörtliche Schnur ist die Darstellung eines Schnur-Werts innerhalb des Quellcodes eines Computerprogramms. Es gibt zahlreiche abwechselnde Notationen, um Schnur-Druckfehler anzugeben, und die genaue Notation hängt von der individuellen fraglichen Programmiersprache ab. Dennoch gibt es einen

allgemeine Richtlinien, denen modernste Programmiersprachen folgen.

Spezifisch können die meisten Schnur-Druckfehler angegeben werden mit:

  • Aussagenotation;
  • Whitespace-Begrenzungszeichen (Einrückung);
  • eingeklammerte Begrenzungszeichen (Bezug);
  • Flucht-Charaktere; oder
  • eine Kombination von einigen oder der ganze obengenannte

Aussagenotation

Auf der ursprünglichen FORTRAN Programmiersprache (zum Beispiel) wurden Schnur-Druckfehler in der so genannten Notation von Hollerith geschrieben, wo einer dezimalen Zählung der Zahl von Charakteren vom Brief H, und dann den Charakteren der Schnur gefolgt wurde:

Diesem Aussagenotationsstil wird mit dem eingeklammerten Begrenzungszeichen-Bezug gegenübergestellt, weil es tut

nicht verlangen den Gebrauch von erwogenen "eingeklammerten" Charakteren auf beiden Seiten der Schnur.

Vorteile:

  • beseitigt Textsuche (für den Begrenzungszeichen-Charakter) und verlangt deshalb bedeutsam weniger oberirdischen
  • vermeidet das Problem der Begrenzungszeichen-Kollision
  • ermöglicht die Einschließung von metacharacters, der als Befehle sonst falsch sein könnte
  • kann für die ziemlich wirksame Datenkompression von Klartext Schnuren verwendet werden

Nachteile:

  • dieser Typ der Notation, ist wenn verwendet, als manueller Zugang durch Programmierer fehlbar

Das ist jedoch nicht ein Nachteil, wenn das Präfix durch einen Algorithmus als am wahrscheinlichsten der Fall erzeugt wird

Begrenzungszeichen von Whitespace

In YAML können Schnur-Druckfehler durch die Verhältnispositionierung von whitespace und angegeben werden

Einrückung.

- Titel: Eine Beispiel-Mehrlinie spannt in YAML

Körper: |

Das ist eine Mehrlinienschnur.

"spezieller" metacharacters kann

erscheinen Sie hier. Das Ausmaß dieser Schnur ist

angezeigt durch die Einrückung.

Eingeklammerte Begrenzungszeichen

Die meisten modernen Programmiersprachen verwenden Klammer-Begrenzungszeichen (auch erwogene Begrenzungszeichen, oder zitierend)

Schnur-Druckfehler anzugeben. Doppelte Zitate sind die allgemeinsten zitierenden verwendeten Begrenzungszeichen:

"Hallo Dort!"

Einige Sprachen erlauben auch dem Gebrauch von einzelnen Zitaten als eine Alternative, Zitate zu verdoppeln (obwohl die Schnur beginnen und mit derselben Art des Anführungszeichens enden muss):

'Hallo Dort!'

Bemerken Sie, dass diese Anführungszeichen allein stehend sind (derselbe Charakter wird als ein Öffner und ein näherer verwendet), der ein Kater von der Schreibmaschine-Technologie ist, die der Vorgänger des frühsten Computereingangs und der Produktionsgeräte war. Die Unicode Codierung schließt paarweise angeordnet (getrennte Öffnung und das Schließen) Versionen sowohl von einzelnen als auch von doppelten Zitaten ein, die im Text größtenteils auf anderen Sprachen verwendet sind als Englisch:

"Hallo Dort!"

'Hallo Dort!'

"Hallo Dort!"

"Hallo dort!"

Die paarweise angeordneten doppelten Zitate können in Visuellem Grundlegendem.NET verwendet werden, aber viele andere Programmiersprachen werden sie nicht akzeptieren. Allein stehende Zeichen werden für die Vereinbarkeit - viele WWW-Browser, Textaufbereiter bevorzugt, und andere Werkzeuge werden paarweise angeordnete Notierungen von unicode, und so sogar auf Sprachen nicht richtig zeigen, wo ihnen erlaubt wird, verbieten viele Projekte ihren Gebrauch für den Quellcode.

Die Programmiersprache von PostScript verwendet Parenthesen, mit eingebettetem newlines erlaubt,

und auch eingebettete unentkommene Parenthesen, vorausgesetzt dass sie richtig paarweise angeordnet werden:

(Der schnelle

(brauner

Fuchs))

Ähnlich haben die geschweiften Programmiersprache-Gebrauch-Klammern von Tcl (hat erlaubten newlines eingebettet, unentkommene geschweifte Klammern erlaubt zur Verfügung gestellt richtig paarweise angeordnet eingebettet):

{Der schnelle

{brauner

Fuchs} }\

Einerseits wird diese Praxis aus den einzelnen Zitaten in Schalen von Unix abgeleitet (das sind rohe Schnuren), und, auf dem anderen, vom Gebrauch von geschweiften Klammern in C für zusammengesetzte Behauptungen, da Blöcke des Codes in Tcl syntaktisch dasselbe Ding wie Schnur-Druckfehler sind. Dass die Begrenzungszeichen paarweise angeordnet werden, ist notwendig, um das ausführbar zu machen.

Begrenzungszeichen-Kollision

Begrenzungszeichen-Kollision ist ein häufiges Problem. Nicht nur in der Verweisung auf die wirklichen Schnur-Begrenzungszeichen, sondern auch hinsichtlich des Redakteurs selbst. Zum Beispiel: Wie kann eine Rücktaste in die Schnur eingefügt werden? Verschiedene Sprachen nähern sich dem Problem in verschiedenen Manieren.

Flucht-Folgen

Flucht-Folgen sind bei weitem die umfassendste Lösung der Begrenzungszeichen-Kollision und sind ringsherum seit der Morgendämmerung von ASCII gewesen. Flucht-Folgen sind nicht immer hübsch oder leicht zu verwenden, so viele Bearbeiter bieten auch andere Mittel an, die häufigen Probleme zu lösen. Flucht-Folgen beheben jedoch jedes Begrenzungszeichen-Problem, und die meisten Bearbeiter interpretieren Flucht-Folgen. Wenn ein Flucht-Charakter innerhalb einer wörtlichen Schnur ist, bedeutet es, dass "das der Anfang der Flucht-Folge ist". Jede Flucht-Folge gibt einen Charakter an, der direclty in die Schnur gelegt werden soll. Die wirkliche Zahl von in einer Flucht-Folge erforderlichen Charakteren ändert sich. Der Flucht-Charakter ist auf der obersten/linken von der Tastatur, aber der Redakteur wird es übersetzen, deshalb ist es nicht direkt tapeable in eine Schnur. Der umgekehrte Schrägstrich wird verwendet, um den Flucht-Charakter in einer wörtlichen Schnur zu vertreten.

Zeichen: Die obengenannte Liste ist minimal, weil Bearbeiter gewöhnlich mehr Flucht-Folgen verstehen. Drucker und Terminals übersetzen ihre Flucht-Folgen, wenn sie den wirklichen Flucht-Charakter \x1B erhalten.

Vielfache zitierende Stile

Die meisten Sprachen (wie Pascal, GRUNDLEGEND, DCL, Plausch und SQL) vermeiden Begrenzungszeichen-Kollision, indem sie auf den Anführungszeichen gekrümmt wird, die beabsichtigt sind, um ein Teil der Schnur wörtlicher zu sein

selbst:

'Dieses Pascal stringcontains zwei Apostrophe'

"Ich sagte, ""Können Sie mich hören?"""

</pre>

Einige Sprachen (z.B, Modula-2, JavaScript und Pythonschlange) versuchen, das Begrenzungszeichen-Kollisionsproblem durch das Erlauben des Doppelbezugs zu vermeiden. Gewöhnlich besteht das daraus, dem Programmierer zu erlauben, entweder einzelne Zitate oder doppelte Zitate austauschbar zu verwenden.

"Das ist der Apfel von John."

'Ich sagte, "Können Sie mich hören?"'

Einige Programmiersprachen erlauben feine Schwankungen auf dem Doppelbezug, einzelne Zitate behandelnd

und doppelte Zitate ein bisschen verschieden (z.B sch, Perl).

Dreifacher Bezug:

Einige Sprachen, wie Pythonschlange-Gebrauch des dreifachen Bezugs.

Dreifache angesetzte Schnur-Druckfehler können durch abgegrenzt werden oder

Vielfacher Bezug:

Eine andere solche Erweiterung ist der Gebrauch des vielfachen Bezugs, der dem Autor erlaubt zu wählen, welche Charaktere die Grenzen einer wörtlichen Schnur angeben sollten.

Zum Beispiel in Perl:

alle erzeugen das gewünschte Ergebnis.

Obwohl diese Notation flexibler ist, unterstützen wenige Sprachen sie. Perl

und Ruby ist zwei Jahre alt, die tun.

Hier Dokumente

Hier ist Dokument eine abwechselnde zitierende Notation, die dem Programmierer erlaubt

einen willkürlichen einzigartigen Bezeichner als eine zufriedene Grenze für eine wörtliche Schnur anzugeben.

Das vermeidet Begrenzungszeichen-Kollision, und bewahrt auch newlines im Quelle Code

als newlines in der Schnur wörtlich selbst.

Verkettung

Auf einigen Sprachen (z.B GRUNDLEGEND) gibt es keine Bestimmung für Flucht-Folgen oder einigen der workarounds, die oben besprochen sind. Um einen Schnur-Begrenzungszeichen-Charakter in eine Schnur zu legen, ist es notwendig, Schnur-Verkettung zu verwenden. Das folgende Beispiel zeigt, wie das im GRUNDLEGENDEN auf einem System mit ASCII getan werden könnte:

Hier gibt der CHR$ Funktion den Charakter entsprechend seinem Argument zurück; in ASCII hat das Anführungszeichen den Wert 34.

Metacharacters

Viele Sprachen unterstützen den Gebrauch von metacharacters innerhalb von Schnur-Druckfehlern. Metacharacters

haben Sie unterschiedliche Interpretationen abhängig vom Zusammenhang und der Sprache, aber sind allgemein eine Art

des 'in einer Prozession gehenden Befehls', um Druck oder nicht bedruckbare Charaktere zu vertreten.

Zum Beispiel, in einer wörtlichen C-Schnur, wenn dem umgekehrten Schrägstrich gefolgt wird

durch einen Brief wie "b", "n" oder "t", dann vertritt das eine nicht bedruckbare Rücktaste, newline

oder Etikett-Charakter beziehungsweise. Oder wenn dem umgekehrten Schrägstrich von 1-3 Oktalziffern, gefolgt wird

dann wird diese Folge als das Darstellen des willkürlichen Charakters mit dem angegebenen interpretiert

ASCII Code. Das wurde später erweitert, um modernere hexadecimal Charakter-Codenotation zu erlauben:

Rohe Schnuren

Einige Sprachen stellen eine Methode zur Verfügung anzugeben, dass ein Druckfehler ohne jede sprachspezifische Interpretation bearbeitet werden soll.

Zum Beispiel in der Pythonschlange 'wird rohen Schnuren' durch einen r vorangegangen. In solchen Schnuren werden umgekehrte Schrägstriche als Flucht-Folgen nicht interpretiert, es einfacher machend, Pfade des DOS/WINDOWS und regelmäßige Ausdrücke zu schreiben:

r "Der Windows-Pfad ist C:\Foo\Bar\Baz\"

C# wird Notation - Bezug genannt:

"C:\Foo\Bar\Baz\"

</Quelle>

Der auch doppelte Zitate erlaubt:

"Ich, habe ""Hallo dort gesagt. """

</Quelle>

In XML Dokumenten erlauben CDATA Abteilungen Gebrauch von Charakteren solcher als & und &lt; ohne einen XML parser versuchend, sie als ein Teil der Struktur des Dokumentes selbst zu interpretieren. Das kann wenn einschließlich des wörtlichen Textes und Scripting-Codes nützlich sein, um das Dokument gut gebildet zu halten.

</Quelle>

Variable Interpolation

Sprachen unterscheiden sich darauf, ob, und wie man Schnur-Druckfehler als irgendein interpretiert

'Rohstoff' oder 'interpolierte Variable'. Variable Interpolation ist der Prozess

einen Ausdruck zu bewerten, der eine oder mehr Variablen enthält, und zurückkehrt

Produktion, wo die Variablen durch ihre entsprechenden Werte in ersetzt werden

Gedächtnis.

In sch vereinbaren Schalen von Unix Kostenvoranschlag-abgegrenzt (") werden Schnuren, während Apostroph-abgegrenzt, interpoliert Schnuren sind nicht.

Zum Beispiel, der folgende Code von Perl:

$name = "Nancy";

$greeting = "Hallo Welt";

drucken Sie "$name hat der $greeting der Menge von Leuten gesagt.";

</Quelle>

erzeugt die Produktion:

Nancy hat Hallo Welt der Menge von Leuten gesagt.

Der sigil Charakter ($) wird interpretiert, um Variable anzuzeigen

Interpolation.

Ähnlich erzeugt die Funktion dieselbe Produktion

das Verwenden der Notation wie:

Die metacharacters (%s) zeigen variable Interpolation an.

Dem wird mit "rohen" Schnuren gegenübergestellt:

die Produktion erzeugen wie:

$name hat $greeting der Menge von Leuten gesagt.

Hier sind die $-Charaktere nicht sigils und werden nicht interpretiert, um jede Bedeutung außer dem Klartext zu haben.

Binär und Hexadecimal-Schnuren

REXX verwendet Nachsilbe-Charaktere, um Charaktere oder Schnuren mit ihrem hexadecimal oder binärem Code anzugeben. Z.B,

'20'x

"0010 0000" b

"00100000" b

</pre>

der ganze Ertrag der Raumcharakter, den Funktionsanruf vermeidend.

Das Einbetten der Quelle codiert in Schnur-Druckfehlern

Sprachen, die an Flexibilität im Spezifizieren von Schnur-Druckfehlern Mangel haben, machen

es besonders beschwerlich, um Programmcode zu schreiben, der erzeugt

anderer Programmcode. Das ist wenn die Generation besonders wahr

Sprache ist dasselbe oder ähnlich der Produktionssprache.

zum Beispiel:

  • das Schreiben des Codes, um quines zu erzeugen
  • das Erzeugen einer Produktionssprache aus einer Webschablone;
  • das Verwenden von XSLT, um XSLT oder SQL zu erzeugen, um mehr SQL zu erzeugen
  • das Erzeugen einer Darstellung von PostScript eines Dokumentes, um Zwecke aus einer Belegverarbeitungsanwendung zu drucken, die in C oder einer anderen Sprache geschrieben ist.

Dennoch werden einige Sprachen besonders gut angepasst, um zu erzeugen

diese Sorte der selbstähnlichen Produktion, besonders diejenigen, die vielfache Optionen unterstützen

um Begrenzungszeichen-Kollision zu vermeiden.

Das Verwenden von Schnur-Druckfehlern als Code, der erzeugt

anderer Code kann nachteilige Sicherheitsimplikationen besonders haben, wenn die Produktion mindestens teilweise auf unvertrautem basiert

Benutzer eingegeben. Das ist im Fall von Webbasierten Anwendungen besonders akut, wo böswillige Benutzer solche Schwächen ausnutzen können, um die Operation der Anwendung zum Beispiel zu stürzen, indem sie einen SQL Spritzenangriff organisieren.

Siehe auch

  • Sigil (Computerprogrammierung)

Außenverbindungen


Germantown, Virginia / Zwanzig Penny
Impressum & Datenschutz