Reserviertes Wort
In einem Computer Sprache, a reserviertes Wort (auch bekannt als a Reservierte Kennung) ist ein Wort, das nicht als verwendet werden kann Kennungwie der Name einer Variablen, Funktion oder Etikett - Es ist "vom Gebrauch reserviert". Das ist ein syntaktisch Definition und ein reserviertes Wort haben möglicherweise keine benutzerdefinierte Bedeutung.
Ein eng verwandter und oft zusammengestellter Begriff ist a Stichwort, was ein Wort mit besonderer Bedeutung in einem bestimmten Kontext ist. Das ist ein semantisch Definition. Im Gegensatz dazu Namen in a Standardbibliothek Aber nicht in die Sprache eingebaut werden nicht als reservierte Wörter oder Schlüsselwörter betrachtet. Die Begriffe "reserviertes Wort" und "Schlüsselwort" werden häufig austauschbar verwendet - man kann sagen, dass ein reserviertes Wort "als Schlüsselwort" reserviert ist - und die formale Verwendung variiert von Sprache zu Sprache. Für diesen Artikel unterscheiden wir wie oben.
Im Allgemeinen müssen reservierte Wörter und Schlüsselwörter nicht überfallen, aber in den meisten modernen Sprachen sind Schlüsselwörter eine Untergruppe reservierter Wörter, da dies das Parsen erleichtert, da Schlüsselwörter nicht mit Kennungen verwechselt werden können. In einigen Sprachen, wie C oder Python, sind reservierte Wörter und Schlüsselwörter übereinstimmen, während in anderen Sprachen wie Java alle Schlüsselwörter reservierte Wörter sind, einige reservierte Wörter sind jedoch keine Schlüsselwörter - diese sind "reserviert für die zukünftige Verwendung". In noch anderen Sprachen, wie die älteren Sprachen Algol, Forran und Pl/iEs gibt Schlüsselwörter, aber keine reservierten Wörter, wobei Schlüsselwörter auf anderen Mitteln von Kennungen unterschieden werden. Dies erschwert die Parsen mit Aussehen, die mit den Parsers notwendig sind.
Unterscheidung
Die Sätze reservierter Wörter und Schlüsselwörter in einer Sprache fällt oft überein oder sind fast gleich, und die Unterscheidung ist subtil, sodass die Begriffe häufig austauschbar verwendet werden. In sorgfältiger Verwendung werden sie jedoch unterschieden.
Keywords sein, die reservierten Wörtern sind, macht macht Lexing Einfacher, da eine Zeichenfolge eindeutig entweder ein Schlüsselwort oder ein Bezeichner ist, ohne vom Kontext abhängig zu sein. Daher sind Schlüsselwörter normalerweise eine Untergruppe reservierter Wörter. Reservierte Wörter müssen jedoch keine Schlüsselwörter sein - beispielsweise in Java, gehe zu
ist ein reserviertes Wort, hat aber keine Bedeutung und erscheint in keinen Produktionsregeln in der Grammatik. Dies geschieht normalerweise für VorwärtskompatibilitätDaher kann ein reserviertes Wort zu einem Schlüsselwort in einer zukünftigen Version werden, ohne vorhandene Programme zu brechen.
Umgekehrt müssen Schlüsselwörter keine reservierten Wörter sein, wobei ihre Rolle aus dem Kontext verstanden wird, oder sie können auf eine andere Weise unterschieden werden, wie z. Stropping. Zum Beispiel der Ausdruck If = 1
ist in den meisten Grammatiken eindeutig, da eine Steuererklärung einer If -Klausel nicht mit einem beginnen kann =
und ist so in einigen Sprachen erlaubt, wie z. Forran. Alternativ in Algol 68, Schlüsselwörter müssen in der strikten Sprache in der strengen Sprache gestoppt werden - markiert in irgendeiner Weise zu unterscheiden -, indem sie fett gezogen werden, und sind daher keine reservierten Wörter. In der strengen Sprache ist der folgende Ausdruck also legal, da das mutige Schlüsselwort wenn widerspricht nicht mit der gewöhnlichen Kennung wenn
:
- wenn wenn Gl 0 dann 1 fi
In Algol 68 gibt es jedoch auch ein Stropping -Regime, in dem Schlüsselwörter reservierte Wörter sind, ein Beispiel dafür, wie diese unterschiedlichen Konzepte häufig übereinstimmen. Dies folgt in vielen modernen Sprachen.
Syntax
Ein reserviertes Wort ist eines, das wie ein normales Wort "aussieht", darf aber nicht als normales Wort verwendet werden. Formal bedeutet dies, dass es das Übliche erfüllt lexikalische Syntax (Syntax von Wörtern) von Identifikatoren - zum Beispiel eine Abfolge von Buchstaben - kann aber nicht dort verwendet werden, wenn Kennungen verwendet werden. Zum Beispiel das Wort wenn
ist häufig ein reserviertes Wort x
Im Allgemeinen ist es nicht so x = 1
ist eine gültige Zuordnung, aber If = 1
ist nicht.
Schlüsselwörter haben unterschiedliche Verwendungszwecke, aber hauptsächlich in einige Klassen fallen: Teil der Phrase -Grammatik (insbesondere a Produktionsregel mit Nicht terminale Symbole) mit verschiedenen Bedeutungen, die oft für verwendet werden Steuerflusswie das Wort wenn
In den meisten prozeduralen Sprachen, die a anzeigen bedingt und nimmt Klauseln (die nicht terminalen Symbole); Namen von primitiven Typen in einer Sprache, die a unterstützen Typ System, wie zum Beispiel int
; Primitive wörtlich Werte wie Stimmt
für boolean wahr; oder manchmal spezielle Befehle wie Ausfahrt
. Andere Verwendungen von Schlüsselwörtern in Phrasen sind für Eingabe/Ausgabe, wie z. drucken
.
Die unterschiedlichen Definitionen sind klar, wenn eine Sprache durch eine Kombination aus einem Lexer und einem Parser analysiert wird, und die Syntax der Sprache wird durch a generiert lexikalische Grammatik für die Worte und a Kontextfreie Grammatik von Produktionsregeln für die Phrasen. Dies ist bei der Analyse moderner Sprachen üblich, und in diesem Fall sind Schlüsselwörter eine Untergruppe reservierter Wörter, da sie auf der Wortebene (daher reservierte Wörter) von Identifikatoren unterschieden werden müssen, um auf der Phrasenebene (als Schlüsselwörter) syntaktisch unterschiedlich analysiert zu werden.
In diesem Fall werden reservierte Wörter als Teil der lexikalischen Grammatik definiert und als separater Typ, die sich von Kennungen unterscheidet, jeweils tokenisiert. In herkömmlicher Notation die reservierten Wörter wenn
und dann
Zum Beispiel werden als Typen tokenisiert WENN
und DANN
während x
und y
werden beide als Typ tokenisiert Kennung
.
Schlüsselwörter dagegen erscheinen syntaktisch in der Phrase -Grammatik als Terminalsymbole. Zum Beispiel kann die Produktionsregel für einen bedingten Ausdruck sein Wenn Ausdruck, dann Ausdruck
. In diesem Fall WENN
und DANN
sind terminale Symbole, was "ein Token von Typ bedeutet WENN
oder DANN
jeweils " - und aufgrund der lexikalischen Grammatik bedeutet dies die Saite wenn
oder dann
in der ursprünglichen Quelle. Als Beispiel eines primitiven konstanten Wertes, Stimmt
Kann ein Schlüsselwort sein, das den Booleschen Wert "true" darstellt. In diesem Fall sollte es in der Grammatik als mögliche Erweiterung der Produktion erscheinen Binaryexpression
, zum Beispiel.
Reservierte Bereiche
Einige Sprachen reservieren nicht nur spezifische Listen von Wörtern, reservieren alle Wörterbereiche, als private Räume für zukünftige Sprachversion, verschiedene Dialekte, Compiler-Lieferanten-spezifische Erweiterungen oder für den internen Gebrauch durch einen Kompiler, insbesondere in Nennen Sie Mangling.
Dies geschieht am häufigsten mit einem Präfix, oft eine oder mehrere unterstreicht. C und C ++ zeichnen sich in dieser Hinsicht auf Dateiumfang;[1] Mit C ++ 03 Weitere Reserven -Kennungen, die überall einen Doppel -Unterstrich enthalten[2] - Dies ermöglicht die Verwendung eines doppelten Unterstrichs als Trennzeichen (zum Beispiel, um Benutzerkennungen zu verbinden).
Die häufige Verwendung eines doppelten Unterstrichs in internen Identifikatoren in Python führte zur Abkürzung Dunder; Dies wurde von geprägt von Mark Jackson[3] und unabhängig von Tim Hochberg,[4] Innerhalb von Minuten voneinander, beide als Antwort auf dieselbe Frage im Jahr 2002.[5][6]
Spezifikation
Die Liste der reservierten Wörter und Schlüsselwörter in einer Sprache wird definiert, wenn eine Sprache entwickelt wird, und beide sind Teil der Sprache einer Sprache Formale Spezifikation. Im Allgemeinen möchte man die Anzahl der reservierten Wörter minimieren, um die Einschränkung gültiger Bezeichnungsnamen zu vermeiden. Darüber hinaus bricht die Einführung neuer reservierter Wörter vorhandene Programme, die dieses Wort verwenden (es ist nicht rückwärts kompatibel), so dass dies vermieden wird. Um dies zu verhindern und bereitzustellen VorwärtskompatibilitätManchmal sind Wörter reserviert, ohne eine aktuelle Verwendung zu haben (ein reserviertes Wort, das kein Schlüsselwort ist), da das Wort in Zukunft ohne Brechen vorhandener Programme verwendet wird. Alternativ können neue Sprachmerkmale als Vordefinierte implementiert werden, die überschrieben werden können, wodurch vorhandene Programme nicht verstoßen.
Zu den Gründen für die Flexibilität gehört es, Compiler-Anbietern zu ermöglichen, die Spezifikation durch Einbeziehung von nicht standardmäßigen Funktionen, unterschiedlichen Standarddialekten der Sprache oder zukünftige Versionen der Sprache für zusätzliche Funktionen zu erweitern. Beispielsweise kann eine prozedurale Sprache das Hinzufügen erwarten objektorientierter Funktionen in einer zukünftigen Version oder einem Dialekt, an welchem Punkt man Keywords wie möglich hinzufügen kann Klasse
oder Objekt
. Um diese Möglichkeit auszugleichen, kann die aktuelle Spezifikation diese reservierten Wörter ergeben, auch wenn sie derzeit nicht verwendet werden.
Ein bemerkenswertes Beispiel ist in Java, wo Const
und gehe zu
sind reservierte Wörter - sie haben in Java keine Bedeutung, aber sie können auch nicht als Kennungen verwendet werden. Durch die Reservierung der Begriffe können sie in zukünftigen Versionen von Java implementiert werden, falls gewünscht, ohne den älteren Java -Quellcode zu brechen. Zum Beispiel gab es 1999 einen Vorschlag, C ++ hinzuzufügen-wie Const
zu der Sprache, die mit dem möglich war Const
Wort, da es reserviert war, aber derzeit ungenutzt; Dieser Vorschlag wurde jedoch abgelehnt - insbesondere, denn obwohl das Hinzufügen der Funktion keine vorhandenen Programme in der Standardbibliothek (insbesondere in Sammlungen) unter Verwendung von vorhandenen Programmen brechen würde, wurde dies, obwohl das Hinzufügen der Funktion nicht brechen würde (insbesondere in den Sammlungen). möchten Kompatibilität brechen.[7] JavaScript Enthält auch eine Reihe reservierter Wörter ohne besondere Funktionalität; Die genaue Liste variiert je nach Version und Modus.[8]
Sprachen unterscheiden sich erheblich, wie häufig sie neue reservierte Wörter oder Schlüsselwörter einführen und wie sie sie nennen, wobei einige Sprachen sehr konservativ sind und neue Keywords selten oder nie einführen, um vorhandene Programme zu brechen, während andere Sprachen neue Keywords freier einführen, um vorhanden zu werden Programme zur Änderung bestehender Identifikatoren, die Konflikte haben. Eine Fallstudie wird durch neue Schlüsselwörter in angegeben C11 im Vergleich zu C ++ 11Erinnern Sie sich sowohl ab 2011 - erinnern Sie sich daran, dass in C und C ++ Identifikatoren, die mit einem Unterstrich beginnen, gefolgt von einem Großbuchstaben reserviert sind:[9]
Das C -Komitee bevorzugt es, keine neuen Keywords im Benutzernamenraum zu erstellen, da allgemein erwartet wird, dass jede Überarbeitung von C ältere C -Programme vermeidet. Zum Vergleich: Das C ++ - Komitee (WG21) bevorzugt es, neue Schlüsselwörter als normal aussehend wie die alten Schlüsselwörter zu machen. Zum Beispiel definiert C ++ 11 eine neue
Thread_local
Schlüsselwort zur Bestimmung des statischen Speichers lokal zu einem Thread. C11 definiert das neue Schlüsselwort als_Thread_local.
Im neuen C11 -Header <Threads.h> gibt es eine Makrodefinition, um den normalen Namen anzugeben:[10]
#define thread_local _thread_local
Das heißt, C11 führte das Schlüsselwort vor _Thread_local
Innerhalb eines vorhandenen Satzes reservierter Wörter (diejenigen mit einem bestimmten Präfix) und dann eine separate Einrichtung (Makroverarbeitung) verwendeten, um die Verwendung so zu ermöglichen, als wäre es ein neues Schlüsselwort ohne Präfix, während C ++ 11 das Schlüsselwort einführen Thread_local
Obwohl dies kein vorhandenes vorbehaltliches Wort ist, bricht Sie alle Programme, die dies verwendeten, jedoch ohne Makroverarbeitung.
Vordefinierte Namen
Ein verwandter Begriff mit reservierten Wörtern sind vordefinierte Funktionen, Methoden, Unterroutinen oder Variablen, insbesondere Bibliotheksroutinen aus der Standardbibliothek. Diese sind insofern ähnlich, als sie Teil der Grundsprache sind und für ähnliche Zwecke verwendet werden können. Diese unterscheiden sich jedoch darin, dass der Name einer vordefinierten Funktion, Methode oder Unterroutine typischerweise als Kennung anstelle eines reservierten Wortes kategorisiert und nicht speziell in der syntaktischen Analyse behandelt wird. Darüber hinaus werden reservierte Wörter vom Programmierer möglicherweise nicht neu definiert, aber Vordefinierte können in gewisser Weise häufig überschrieben werden.
Die Sprachen variieren in Bezug auf das, was als Schlüsselwort bereitgestellt wird und was vordefiniert ist. Einige Sprachen bieten beispielsweise Schlüsselwörter für Eingabe-/Ausgaberoperationen, während dies in anderen Bibliotheksroutinen sind. Im Python (Versionen früher als 3,0) und viele BASIC Dialekte, drucken
ist ein Schlüsselwort. Im Gegensatz dazu die C-, Lisp- und Python 3.0 -Äquivalente printf
, Format
, und drucken
sind Funktionen in der Standardbibliothek. In ähnlicher Weise in Python vor 3.0, Keiner
, WAHR
, und FALSCH
waren vordefinierte Variablen, aber keine reservierten Wörter, aber in Python 3.0 wurden sie zu reservierten Wörtern gemacht.[11]
Definition
Einige verwenden die Begriffe "Schlüsselwort" und "reserviertes Wort" austauschbar, während andere die Verwendung unterscheiden, sagen Sie, indem Sie "Schlüsselwort" verwenden, um ein Wort zu bedeuten, das nur in bestimmten Kontexten, aber "reserviert" ein spezielles Wort bedeutet, das nicht verwendet werden kann Als benutzerdefinierter Name. Die Bedeutung von Schlüsselwörtern - und in der Tat die Bedeutung des Begriffs von Stichwort - unterscheidet sich stark von Sprache zu Sprache. In Algol 68 werden die Schlüsselwörter konkret (in der strengen Sprache, in fettem) und nicht reservierten Wörtern gestoßen - das nicht gestaltete Wort kann als gewöhnliche Kennung verwendet werden.
Das "Java -Sprache Spezifikation "verwendet den Begriff" Schlüsselwort ".[12] Der ISO 9899 Standard für die C Programmiersprache Verwendet den Begriff "Schlüsselwort".[13]
In vielen Sprachen, wie z. C und ähnliche Umgebungen wie C ++, a Stichwort ist ein reserviertes Wort, das eine syntaktische Form identifiziert. Wörter verwendet in Steuerfluss Konstrukte wie z. wenn
, dann
, und anders
sind Schlüsselwörter. In diesen Sprachen können Schlüsselwörter nicht auch als Namen von Variablen oder Funktionen verwendet werden.
In einigen Sprachen, wie z. Algol und Algol 68, Keywords können nicht wörtlich geschrieben werden, aber müssen sein gestürzt. Dies bedeutet, dass Schlüsselwörter irgendwie gekennzeichnet sein müssen. Z.B. Indem Sie sie zitieren oder durch einen besonderen Charakter ein Präfix. Infolgedessen sind Schlüsselwörter keine reservierten Wörter, und daher kann dasselbe Wort als normale Kennung verwendet werden. Ein Stropping -Regime bestand jedoch darin, die Schlüsselwörter nicht zu stürzen und sie stattdessen einfach reservierte Wörter zu haben.
Einige Sprachen, wie z. PostScriptsind in diesem Ansatz äußerst liberal und ermöglichen es, dass Kernschlüsselwörter für bestimmte Zwecke neu definiert werden.
Im Common Lisp, Der Begriff "Schlüsselwort" (oder "Schlüsselwortsymbol") wird für eine spezielle Art von Art verwendet Symbol, oder Kennung. Im Gegensatz zu anderen Symbolen, die normalerweise für Variablen oder Funktionen stehen, sind Schlüsselwörter selbst selbstZitieren und Selbstbewertung[14]: 98 und sind interniert in dem STICHWORT
Paket.[15] Schlüsselwörter werden normalerweise verwendet, um benannte Argumente für Funktionen zu kennzeichnen und symbolische Werte darzustellen. Die Symbole, die Funktionen, Variablen, spezielle Formen und Makros in dem Paket namens Common-LISP im Grunde genommen reservierten Wörtern sind. Die Auswirkung der Neudefinition ist in ANSI Common Lisp nicht definiert.[16] Sie zu binden ist möglich. Zum Beispiel der Ausdruck (Wenn Fall oder)
ist möglich, wenn wenn
ist eine lokale Variable. Die links wenn
bezieht sich auf wenn
Operator; Die verbleibenden Symbole werden als variable Namen interpretiert. Da es einen separaten Namespace für Funktionen und Variablen gibt, wenn
könnte eine lokale Variable sein. Im gemeinsamen Lisp gibt es jedoch zwei spezielle Symbole, die sich nicht im Schlüsselwortpaket befinden: die Symbole t
und Null
. Wenn sie als Ausdrücke bewertet werden, bewerten sie sich selbst. Sie können nicht als Namen von Funktionen oder Variablen verwendet werden, also sind de facto reserviert. (sei ((t 42)))
ist ein wohlgeformter Ausdruck, aber der Lassen
Der Betreiber erlaubt die Verwendung nicht.
Wenn ein Programmierer versucht, ein Schlüsselwort für einen Variablen- oder Funktionsnamen zu verwenden, wird normalerweise ein Kompilierungsfehler ausgelöst. Bei den meisten modernen Redakteuren werden die Schlüsselwörter automatisch so eingestellt, dass eine bestimmte Textfarbe erinnert oder die Programmierer darüber informiert, dass sie Schlüsselwörter sind.
In Sprachen mit Makros oder faule Bewertung, Kontrollflusskonstrukte wie z. wenn
kann als Makros oder Funktionen implementiert werden. In Sprachen ohne diese ausdrucksstarken Merkmale sind sie im Allgemeinen Schlüsselwörter.
Vergleich von Sprachen
Nicht alle Sprachen haben die gleichen Zahlen von reservierten Wörtern. Zum Beispiel Java (und andere C Derivate) hat eine ziemlich spärliche Ergänzung von reservierten Wörtern - ungefähr 50 - während Cobol hat ungefähr 400. Am anderen Ende des Spektrums, rein Prolog Und pl/ich habe überhaupt keine.
Die Anzahl der reservierten Wörter in einer Sprache hat wenig damit zu tun, wie „mächtig“ eine Sprache ist. COBOL wurde in den 1950er Jahren als Geschäftssprache entworfen und als Selbstdokumentation unter Verwendung englischartiger struktureller Elemente wie Verben, Klauseln, Sätzen, Abschnitten und Abteilungen hergestellt. C hingegen wurde sehr knapp (syntaktisch) und mehr Text auf den Bildschirm erhalten. Vergleichen Sie beispielsweise die äquivalenten Codeblöcke von C und COBOL, um die wöchentlichen Einnahmen zu berechnen:
// Berechnung in C: wenn (angehandelt) Menge = 40 * Lohnsatz; anders Menge = Std. * Lohnsatz;
*> Berechnung in COBOL: WENN Angehandelt DANN MULTIPLIZIEREN Lohnsatz DURCH 40 Geben Menge ANDERS MULTIPLIZIEREN Lohnsatz DURCH Std Geben Menge End-wenn.
*> Anderes Beispiel für die Berechnung in COBOL: WENN Angehandelt BERECHNEN Menge = Lohnsatz * 40 ANDERS BERECHNEN Menge = Std. * Lohnsatz End-wenn.
Die reine Prolog -Logik wird in Bezug auf die Beziehungen ausgedrückt, und die Ausführung wird durch Ausführen von Abfragen über diese Beziehungen ausgelöst. Konstrukte wie Schleifen werden mit rekursiven Beziehungen implementiert.
Alle drei dieser Sprachen können die gleichen Arten von „Problemen“ lösen, obwohl sie unterschiedliche Anzahl von reservierten Wörtern aufweisen. Diese „Macht“ bezieht sich auf ihre Zugehörigkeit zum Satz von Turing-Complete Sprachen.
Nachteile
Die Definition von reservierten Wörtern in einer Sprache wirft Probleme auf. Die Sprache kann für neue Benutzer schwierig sein, aufgrund einer langen Liste reservierter Wörter zu lernen, die sich auswendig machen können, die nicht als Kennungen verwendet werden können. Es kann schwierig sein, die Sprache zu erweitern, da die Zugabe von reservierten Wörtern für neue Funktionen vorhandene Programme ungültig oder umgekehrt "Überlastung" vorhandener reservierten Wörter mit neuen Bedeutungen kann verwirrend sein. Portierungsprogramme können problematisch sein, da ein Wort, das nicht von einem System/Compiler reserviert ist, von einem anderen reserviert werden kann.
Da reservierte Wörter nicht als Bezeichner verwendet werden können, können Benutzer absichtliche Rechtschreibfehler von reservierten Wörtern als Kennungen wählen, wie z. B. clazz
Für Java -Variablen vom Typ Class
.[17]
Reservierte Wörter und Sprachunabhängigkeit
Microsoft's .NETZ Gemeinsame Sprachinfrastruktur (CLI) Die Spezifikation ermöglicht es, Code in 40+ verschiedenen Programmiersprachen zu einem Endprodukt zu kombinieren. Aus diesem Grund können Kollisionen von Identifier/Reserved Words auftreten, wenn der in einer Sprache implementierte Code versucht, Code in einer anderen Sprache auszuführen. Zum Beispiel a Visual Basic.net Bibliothek kann a enthalten Klasse Definition wie:
'Klassendefinition davon in Visual Basic.net: Öffentlichkeit Klasse Dies 'Diese Klasse macht etwas ... Ende Klasse
Wenn dies als Teil einer Toolbox kompiliert und verteilt wird, a C# Programmierer, der eine Variable des Typs definieren möchte “Dies
”Würde auf ein Problem stoßen: 'Dies'
ist ein reserviertes Wort in C#. So wird das Folgende in C#nicht kompilieren:
// Verwenden dieser Klasse in C#: Dies x = Neu Dies(); // wird nicht kompilieren!
Ein ähnliches Problem tritt beim Zugriff auf Mitglieder auf, überschrieben Virtuelle Methodenund identifizieren Namespaces.
Dies wird von gelöst von Stropping. Um dieses Problem zu umgehen, ermöglicht die Spezifikation dem Programmierer (in C#) das platzieren AT-Sign Vor dem Kennung, der es zwingt, vom Compiler eher als Kennung als als reserviertes Wort angesehen zu werden:
// Verwenden dieser Klasse in C#: @Dies x = Neu @Dies(); // wird kompilieren!
Für die Konsistenz ist diese Verwendung auch in nicht öffentlichen Einstellungen wie lokalen Variablen, Parameternamen und privaten Mitgliedern zulässig.
Siehe auch
Verweise
- ^ C99 -Spezifikation, 7.1.3 Reservierte Kennungen
- ^ C ++ 03 Spezifikation, 17.4.3.2.1 Globale Namen [lib.global.names]
- ^ Jackson, Mark (26. September 2002). "Wie spricht man" __ "aus (doppelte Unterstrich)?". Python-Liste (Mailingliste). Abgerufen 9. November, 2014.
- ^ Hochberg, Tim (26. September 2002). "Wie spricht man" __ "aus (doppelte Unterstrich)?". Python-Liste (Mailingliste). Abgerufen 9. November, 2014.
- ^ "Dunderalias - Python Wiki". Wiki.python.org.
- ^ NOTZ, PAT (26. September 2002). "Wie spricht man" __ "aus (doppelte Unterstrich)?". Python-Liste (Mailingliste). Abgerufen 9. November, 2014.
- ^ "Fehler-ID: JDK-4211070 Java sollte die CONT-Parameter (wie C ++) für die Code-Wartung unterstützen [sic] ". Bugs.sun.com. Abgerufen 2014-11-04.
- ^ "Lexikalische Grammatik - JavaScript | Mdn". Entwickler.mozilla.org.
- ^ C99 -Spezifikation, 7.1.3 Reservierte Kennungen: "Alle Kennungen, die mit einem Unterstrich und einem Großbuchstaben oder einem anderen Unterstrich beginnen, sind immer für jede Verwendung reserviert."
- ^ C11: Der neue C -Standard, Thomas Plum, "Ein Hinweis zu Schlüsselwörtern"
- ^ "Die Geschichte von None, wahr und falsch (und eine Erklärung von Literalen, Schlüsselwörtern und gebauten, die hineingeworfen werden)",", Die Geschichte von Python, 10. November 2013, Guido van Rossum
- ^ "Die Java -Sprachspezifikation, 3. Auflage, Abschnitt 3.9: Schlüsselwörter". Sun Microsystems. 2000. Abgerufen 2009-06-17.
Die folgenden Zeichensequenzen, die aus ASCII -Buchstaben gebildet wurden, sind für die Verwendung als Schlüsselwörter reserviert und können nicht als Bezeichner verwendet werden [...]
- ^ "ISO/IEC 9899: TC3, Abschnitt 6.4.1: Schlüsselwörter" (PDF). Internationale Standardisierungsorganisation JTC1/SC22/WG14. 2007-09-07.
Die obigen Token (Fallempfindlichkeit) sind für die Verwendung als Schlüsselwörter (in den Übersetzungsphasen 7 und 8) reserviert und dürfen anders verwendet werden.
- ^ Peter Norvig: Paradigmen der Programmierung künstlicher Intelligenz: Fallstudien in gemeinsamer Lisp, Morgan Kaufmann, 1991, ISBN1-55860-191-0,, Netz
- ^ Typ STICHWORT von dem Common Lisp hyperspec
- ^ "CLHS: Abschnitt 11.1.2.1.2". www.lispworks.com.
- ^ Zammetti, Frank (2007). Praktische JavaScript-, DOM Scripting- und Ajax -Projekte. Apress. ISBN 9781430201977.