43

Was ist der Unterschied zwischen einem Schlüsselwort und einem reservierten Wort?Was ist der Unterschied zwischen "Schlüsselwort" und "reserviertem Wort"?

Zum Beispiel in dem proposal for concepts in C++ kann man die folgende Aussage lesen:

Dieser Vorschlag stellt fünf neue Schlüsselwörter: Konzept, Konzept Karte, wo, Axiom und später Check. Alle diese Schlüsselwörter werden auch reservierte Wörter sein.

+2

@Piotr Beachten Sie, dass es eine schlechte Idee ist, eine Antwort zu akzeptieren, bis einige Leute eine Chance hatten, zu antworten. Ich empfehle, mindestens 12 Stunden zu warten. –

+0

@Neil Es ist wirklich eine sehr gute Antwort, die akzeptiert wurde :) –

+2

@Piotr Ich kritisiere nicht die Antwort. Aber wenn Sie wissen, dass es irgendwie "gut" ist, ohne es mit anderen, möglicherweise diametral entgegengesetzten Antworten zu vergleichen, warum haben Sie dann die Frage gestellt? –

Antwort

48

Keywords hat eine besondere Bedeutung in einer Sprache, und ist Teil der Syntax.

Reservierte Wörter sind Wörter, die nicht als Bezeichner (Variablen, Funktionen usw.) verwendet werden können, da sie von der Sprache reserviert sind.

In der Praxis sind die meisten Schlüsselwörter reservierte Wörter und umgekehrt. Da es sich jedoch um zwei verschiedene Dinge handelt, kann es vorkommen, dass ein Schlüsselwort kein reserviertes Wort ist (zB hat ein Schlüsselwort nur in einem speziellen Kontext Bedeutung und kann daher als Bezeichner verwendet werden) oder ein reserviertes Wort ist kein Schlüsselwort (zB weil es für zukünftige Verwendung reserviert ist).

Update: Einige Beispiele, wie von anderen gegeben, der den Unterschied verdeutlichen:

  • In Java goto ist ein reserviertes Wort aber nicht ein Schlüsselwort (als Folge, man kann es nicht verwenden)
  • Fortran hat keine reservierte Wörter, alle Schlüsselwörter (wenn, dann, etc.) können als Bezeichner viel es hängt
+0

Alle Schlüsselwörter sind reservierte Wörter, aber nicht alle reservierten Wörter sind Schlüsselwörter, obwohl der Unterschied ziemlich vage ist. Einige Sprachen haben Anweisungen, die auf dem Kontext eine besondere Bedeutung haben.Und kann als Bezeichner an anderen Orten verwendet werden. –

+1

In Java ist ein reserviertes Wort, aber kein Schlüsselwort. – pjp

+1

@Gamecat, nein das ist nicht wahr. Es gibt einen grundlegenden Unterschied, und es gibt sogar Beispiele aus der Praxis, bei denen Schlüsselwörter keine reservierten Wörter sind (Fortran, Postscript, ... andere?). – molf

1

Ich denke, Stichwort ein Wort als „Schlüsselwort“ (wie wenn zum Wechseln, etc ...), während eines reservierten Wortes verwendet wird, ist etwas, das man nicht als Variablennamen verwenden, weil es könnte ein Schlüsselwort wird in eine zukünftige Version der Sprache.

0

wirklich verwendet werden auf Kontext. Zum Beispiel sagt der ISO C++ Standard, dass Dinge wie "if", "while", "int" usw. sind Schlüsselwörter, und nicht tatsächlich den Begriff reserviertes Wort, außer einmal, in einer Fußnote, wo etwas anderes war wahrscheinlich gemeint :-)

Der Standard Doe angeben reservierte Namen - zum Beispiel sind alle Namen, die mit einem Unterstrich und einem Großbuchstaben beginnen reservierte Namen.

+0

Es könnte bald eine deutliche Trennung zwischen Schlüsselwörtern und (spezifischen) reservierten Bezeichnern geben: C++ 17 lässt die verpasste Hintbedeutung des Bezeichners 'register' fallen, behält sie aber als reserviert, so dass Leute keine Variablen aufrufen können, und vielleicht auch es wird später eine neue Bedeutung bekommen, als es "auto" (so gnädig) getan hat. –

8

Ein gutes Beispiel für diese Unterscheidung ist "goto" in Java. Es ist kein Sprachschlüsselwort (d. H. Es ist kein gültiges Java), aber es ist ein reserviertes Wort.

Es scheint, dass die Java-Designer uns sagen: "Wir werden 'goto' nicht verwenden, und du auch nicht".

+2

Gutes Beispiel für nicht jedes "reservierte Wort" ist ein Schlüsselwort. Vielen Dank. –

+0

['goto' ist ein Schlüsselwort in Java.] (Https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.9) – EJP

17

Nur um zu zeigen, dass die Unterscheidung sehr sinnvoll ist:

Nicht in allen Sprachen sind alle Wörter reservierten Schlüsselwörter. In Fortran ist es möglich, dies zu tun:

if if then then else else 

In diesem Fall werden die Schlüsselwörter nicht reserviert, aber je nach Kontext kann durch den Compiler als Variablen interpretiert werden.

+2

Gutes Beispiel für nicht jedes Schlüsselwort ist ein "reserviertes Wort". Vielen Dank. –

+0

Lustig. Und das deutet darauf hin, dass die Konstrukteure von Fortran-Compilern zusätzliche Anstrengungen unternehmen, um Entwickler dazu zu bringen, unordentlichen Code zu erstellen: P – RBT

+0

Kann auch tun, wenn dann dann = sonst anders else = dann –

1
  • Stichwort: Es hat eine Bedeutung und wir können im Programm verwenden.
  • Reserviertes Wort: Wir können nicht im Programm verwenden. Sie können in Zukunft verwendet werden. Beispiel: goto
+1

Woher kommen diese Nekromanten? Ich möchte auch Leichen wiederbeleben! – delnan

-1

Reservierte Wörter und Schlüsselwörter sind meist die gleichen, und sie haben Bedeutungen in GW-BASIC vordefinierte ... Diese vordefinierten Anwendungen haben und nicht verwendet werden kann, oder für einen anderen Zweck in Basic neu definiert . Schlüsselwörter können nicht als Variablenname verwendet werden. Einige der Schlüsselwörter von Grundlegend sind ... IF, , WHILE usw.

0

Schlüsselwörter: Schlüsselwörter hat einige spezielle Funktionalitäten zum Compiler. Daher können die Schlüsselwörter nicht als Kennungen in der Codierung verwendet werden. Reservierte Wörter: Reservierungswörter sind die Wörter, die für zukünftige Verwendung reserviert sind. In java sind const und goto die reservierten Wörter, die momentan nicht verwendet werden und in Zukunft wieder in Java erscheinen können. Wenn wir hier Java-Sprache Schlüsselwörter (https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html) überprüfen, sagt es, dass Java (späteste ich denke) 50 Schlüsselwörter einschließlich goto und const hat. Also goto und const sind die Schlüsselwörter, die reserviert sind.

-1

Stichwort, - ein Wort mit besonderer Bedeutung in einem bestimmten Kontext . Es ist semantische Definition.

reserviertes Wort ist ein Wort, das nicht als Kennung verwendet werden kann - wie Variable, und Funktionsnamen. Es ist syntaktisch Definition.

In Java sind alle Schlüsselwörter reservierte Wörter. Wahrscheinlich nicht das Gegenteil. goto ist reserviertes Wort aber nicht benutzt und hat keine Funktion.

In älteren Sprachen wie FORTRAN gab es Schlüsselwörter, aber keine reservierten Wörter.

Schlüsselwort und reserviertes Wort werden jedoch synonym verwendet.

+0

['goto' ist ein Schlüsselwort in Java.] (Https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.9) Schlüsselwörter sind syntaktisch. – EJP

+0

für die Vorwärtskompatibilität reservierte Wörter wie goto können Schlüsselwörter werden. Aber goto hat keine besondere Bedeutung. Keywords haben im Kontext, in dem sie verwendet werden, eine Bedeutung. Refer: https://en.wikipedia.org/wiki/Reserved_word – Yergalem

+0

Wikipedia hat damit nichts zu tun. Ich zitiere und zitiere die Java Language Specification. Wenn Wikipedia dem nicht zustimmt, ist das per Definition falsch. – EJP

Verwandte Themen