In der ECMAScript-Grammatikspezifikation für Javascript sind Blöcke definiert mit einem doppelten Doppelpunkt wie folgt:
%Vor%Und Blöcke mit einem einzigen Doppelpunkt wie folgt definiert:
%Vor%Und sogar Blöcke mit einem dreifachen Doppelpunkt:
%Vor%Was ist der Unterschied zwischen den Einfach-, Doppel- und Dreifach-Doppelpunkten?
Die lexikalische JSON-Grammatik wird verwendet, um Zeichenfolgen in Token zu übersetzen, und ähnelt Teilen der lexikalischen Grammatik von ECMAScript. Die syntaktische JSON-Grammatik beschreibt, wie Sequenzen von Token aus der lexikalischen JSON-Grammatik syntaktisch korrekte JSON-Objektbeschreibungen bilden können.
Lexikalische Regeln ( "::"
) für Token bedeuten "wie die Teile der Sprache aussehen". Es definiert Regeln wie " 5.5
ist eine Zahl".
Syntaktische Regeln ( ":"
) für Ausdrücke bedeuten "wie die Teile miteinander interagieren". Es definiert Regeln wie " 5.5 abc
macht keinen Sinn".
Der Tripel-Doppelpunkt ( ":::"
) scheint speziell reserviert zu sein, um Regeln für die Umwandlung von Strings in Zahlen zu definieren. Die Zeichenfolge " 0x1235 "
(mit Leerzeichen) ist eine gültige Zahl. Die Triple-Colon-Regeln definieren das.
Der Tripel-Doppelpunkt ( ":::"
) scheint auch für die Uri-String-Grammatik verwendet zu werden. Am häufigsten wie folgt verwendet: "f%20o%20o"
dekodiert zu "f o o"
. Diese Regeln definieren die Struktur des "numerischen" Teils der Strings.
Siehe Standard-ECMA-262 5.1 Ausgabe / Juni 2011 /
%Vor%5.1.1 Kontextfreie Grammatiken
Eine kontextfreie Grammatik besteht aus einer Reihe von Produktionen. Jeder Produktion hat ein abstraktes Symbol, das als Nichtterminal bezeichnet wird linke Seite, und eine Folge von null oder mehr nichtterminalen und Terminal-Symbole als seine rechte Seite. Für jede Grammatik, die Terminalsymbole werden aus einem bestimmten Alphabet gezeichnet.
Ausgehend von einem Satz, der aus einem einzelnen unterschiedenen besteht Nonterminal, genannt das Zielsymbol, eine gegebene kontextfreie Grammatik spezifiziert eine Sprache, nämlich die (vielleicht unendliche) Menge von möglichen Folgen von Endsymbolen, die sich wiederholt ergeben können Ersetzen irgendeines Nichtterminals in der Sequenz durch eine rechte Seite von a Produktion, für die das Nonterminal die linke Seite ist.
5.1.6 Grammatiknotation
Terminalsymbole der lexikalischen und String-Grammatiken und einige der terminalen Symbole der syntaktischen Grammatik werden in fester Breite angezeigt Schriftart, sowohl in den Produktionen der Grammatiken als auch in diesem Spezifikation, wenn der Text sich direkt auf ein solches Terminal bezieht Symbol. Diese sollen in einem Programm genau so erscheinen wie geschrieben. Alle auf diese Weise spezifizierte Terminal-Symbol-Zeichen sind zu verstehen als das entsprechende Unicode-Zeichen aus dem ASCII-Bereich, im Gegensatz zu ähnlich aussehenden Zeichen aus anderen Unicode-Bereichen.
Nichtterminale Symbole werden kursiv dargestellt. Die Definition von a Nichtterminal wird eingeführt, indem der Name des Nichtterminals definiert wird gefolgt von einem oder mehreren Doppelpunkten. (Die Anzahl der Doppelpunkte gibt an zu welcher Grammatik die Produktion gehört.) Eine oder mehrere Alternativen rechte Seiten für das Nichtterminal folgen dann auf nachfolgenden Zeilen. Zum Beispiel die syntaktische Definition:
%Vor%gibt an, dass das Nonterminal WhileStatement das Token darstellt, während gefolgt von einem Token mit der linken Klammer, gefolgt von einem Ausdruck, gefolgt von einem Token mit der rechten Klammer, gefolgt von einer Anweisung. Das Vorkommen von Ausdruck und Aussage sind selbst Nichtterminale. Ein weiteres Beispiel ist die syntaktische Definition:
:::
Produktionen der numerischen Zeichenkettengrammatik unterscheiden sich dadurch, dass sie haben drei Doppelpunkte ":::" als Satzzeichen.
::
Die Produktionen der lexikalischen und RegExp-Grammatiken unterscheiden sich durch mit zwei Doppelpunkten "::" als Trennzeichen. Das lexikalische und RegExp-Grammatiken teilen einige Produktionen.
:
Produktionen der syntaktischen Grammatik zeichnen sich dadurch aus, dass sie einfach sind Ein Doppelpunkt ":" als Interpunktion.
Hinweis,
5.1.5 Die JSON-Grammatik
Produktionen der JSON lexikalischen Grammatik zeichnen sich dadurch aus, dass sie zwei Doppelpunkte "::" als Trennzeichen. Die JSON lexikalische Grammatik verwendet einige Produktionen aus der lexikalischen Grammatik ECMAScript. Der JSON syntaktische Grammatik ähnelt Teilen der ECMAScript-Syntax Grammatik. Produktionen der syntaktischen JSON-Grammatik werden unterschieden Verwenden Sie einen Doppelpunkt ":" als Trennzeichen.
Tags und Links javascript grammar