

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Skriptformat
<a name="grammar-ecmascript-spec"></a>

Amazon Lex V2 unterstützt die folgenden ECMAScript Funktionen zum Definieren von Grammatiken.

Amazon Lex V2 unterstützt die folgenden ECMAScript Funktionen bei der Angabe von Tags in der Grammatik. `tag-format`muss an gesendet werden, `semantics/1.0` wenn ECMAScript Tags in der Grammatik verwendet werden. Weitere Informationen finden Sie in der [Sprachspezifikation ECMA-262 ECMAScript 2021](https://www.ecma-international.org/publications-and-standards/standards/ecma-262/).

```
<grammar version="1.0"
xmlns="http://www.w3.org/2001/06/grammar"
xml:lang="en-US"
tag-format="semantics/1.0"
root="card_number">
```

**Topics**
+ [Variable Aussage](ecma-variable.md)
+ [Ausdrücke](ecma-expression.md)
+ [Wenn Aussage](ecma-if.md)
+ [Switch-Anweisung](ecma-switch.md)
+ [Deklarationen von Funktionen](ecma-function.md)
+ [Iterationsanweisung](ecma-iteration.md)
+ [Anweisung blockieren](ecma-block.md)
+ [Kommentare](ecma-comments.md)
+ [Nicht unterstützte Anweisungen](ecma-unsupported.md)

[Dieses Dokument enthält Material aus dem ECMAScript Standard (verfügbar unter https://www.ecma-international). org/publications-and-standards/standards/ecma-262/](https://www.ecma-international.org/publications-and-standards/standards/ecma-262/)). Das Dokument mit den ECMAScript Sprachspezifikationen ist bei Ecma International unter der folgenden Lizenz erhältlich.

## Text der Lizenz
<a name="ecma-license"></a>

© 2020 Ecma International

Dieses Dokument darf kopiert, veröffentlicht und an andere verteilt werden, und bestimmte davon abgeleitete Werke dürfen ganz oder teilweise erstellt, kopiert, veröffentlicht und verteilt werden, vorausgesetzt, dass der obige Copyright-Hinweis und diese Urheberrechtslizenz und dieser Haftungsausschluss auf all diesen Kopien und abgeleiteten Werken enthalten sind. Die einzigen abgeleiteten Werke, die im Rahmen dieser Urheberrechtslizenz und dieses Haftungsausschlusses zulässig sind, sind: 

(i) Werke, die dieses Dokument ganz oder teilweise zum Zweck der Kommentierung oder Erläuterung enthalten (z. B. eine kommentierte Version des Dokuments), 

(ii) Werke, die dieses Dokument ganz oder teilweise enthalten, um Barrierefreiheit zu gewährleisten, 

(iii) Übersetzungen dieses Dokuments in andere Sprachen als Englisch und in verschiedene Formate und 

(iv) verwendet diese Spezifikation in standardkonformen Produkten, indem die darin enthaltene Funktionalität implementiert wird (z. B. durch Kopieren und Einfügen ganz oder teilweise). 

Der Inhalt dieses Dokuments selbst darf jedoch in keiner Weise verändert werden, auch nicht durch Entfernen des Copyright-Hinweises oder Verweise auf Ecma International, es sei denn, dies ist erforderlich, um es in eine andere Sprache als Englisch oder in ein anderes Format zu übersetzen. 

Die offizielle Version eines Dokuments von Ecma International ist die englische Sprachversion auf der Website von Ecma International. Im Falle von Abweichungen zwischen einer übersetzten Version und der offiziellen Version ist die offizielle Version maßgebend. 

Die oben gewährten eingeschränkten Genehmigungen sind unbefristet und können von Ecma International oder ihren Nachfolgern oder Abtretungsempfängern nicht widerrufen werden. Dieses Dokument und die darin enthaltenen Informationen werden „WIE BESEHEN“ zur Verfügung gestellt, und ECMA INTERNATIONAL LEHNT ALLE AUSDRÜCKLICHEN ODER STILLSCHWEIGENDEN GEWÄHRLEISTUNGEN AB, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF JEGLICHE GARANTIE, DASS DIE VERWENDUNG DER HIERIN ENTHALTENEN INFORMATIONEN KEINE EIGENTUMSRECHTE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNGEN DER MARKTGÄNGIGKEIT ODER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK VERLETZT.“

# Variable Aussage
<a name="ecma-variable"></a>

Eine Variablenanweisung definiert eine oder mehrere Variablen.

```
var x = 10;
var x = 10, var y = <expression>;
```

# Ausdrücke
<a name="ecma-expression"></a>

Sie können Ausdruckszeichenfolgen hinzufügen, um Funktionen in Amazon Lex V2 auszuführen. Diese Tabelle zeigt die Syntax und Beispiele, die in SRGS-Ausdrücken verwendet werden können.


| Ausdruckstyp | Syntax | Beispiel | Unterstützt? | 
| --- | --- | --- | --- | 
| Literal für reguläre Ausdrücke | Zeichenkettenliteral, das gültige [Regex-Sonderzeichen](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions) enthält | <pre>"^\d\.$"</pre> | Nein | 
| Funktion | function functionName(parameters) \$1 functionBody\$1 | <pre>var x = function calc() {<br />    return 10;<br />}</pre> | Nein | 
| Delete | delete expression | <pre>delete obj.property;</pre> | Nein | 
| Void | void expression | <pre>void (2 == '2');</pre> | Nein | 
| Typ von | typeof expression | <pre>typeof 42;</pre> | Nein | 
| Index der Mitglieder | expression [ expressions ] | <pre>var fruits = ["apple"];<br />fruits[0];</pre> | Ja | 
| Mitglied Punkt | expression . identifier | <pre>out.value</pre> | Ja | 
| Argumente | expression (arguments) | <pre>new Date('1994-10-11')</pre> | Ja | 
| Erhöhung des Beitrags | expression\$1\$1 | <pre>var x=10; x++;</pre> | Ja | 
| Nach dem Dekrement | expression-- | <pre>var x=10; x--;</pre> | Ja | 
| Nur inkrementiert | \$1\$1expression | <pre>var x=10; ++x;</pre> | Ja | 
| Vor dem Herunterfahren | --expression | <pre>var x=10; --x;</pre> | Ja | 
| Unär plus//Unär minus | \$1expression / -expression | <pre>+x / -x;</pre> | Ja | 
| Aber nicht | \$1 expression | <pre>const a = 5;<br />console.log( ~a );</pre> | Ja | 
| Logisch nicht | \$1 expression | <pre>!(a > 0 || b > 0)</pre> | Ja | 
| Multiplikativ | expression ('\$1' \$1 '/' \$1 '%') expression | <pre>(x + y) * (a / b)</pre> | Ja | 
| Zusatzstoff | expression ('\$1' \$1 '-') expression | <pre>(a + b) - (a - (a + b))</pre> | Ja | 
| Bitverschiebung | expression ('<<' \$1 '>>' \$1 '>>>') expression | <pre>(a >> b) >>> c</pre> | Ja | 
| Relativ | expression ('<' \$1 '>' \$1 '<=' \$1 '>=') expression | <pre>if (a > b) { ... }</pre> | Ja | 
| In | expression in expression | <pre>fruits[0] in otherFruits;</pre> | Ja | 
| Gleichheit | expression ('==' \$1 '\$1=' \$1 '===' \$1 '\$1===') expression | <pre>if (a == b) { ... }</pre> | Ja | 
| Bit und/ xor/oder | expression ('&' \$1 '^' \$1 '\$1') expression | <pre>a & b / a ^ b / a | b</pre> | Ja | 
| Logisch und/ oder | expression ('&&' \$1 '\$1\$1') expression | <pre>if (a && (b ||c)) { ...}</pre> | Ja | 
| Ternär  | expression ? expression : expression | <pre>a > b ? obj.prop : 0</pre> | Ja | 
| Zuweisung | expression = expression | <pre>out.value = "string";</pre> | Ja | 
| Zuweisungsoperator | expression ('\$1=' \$1 '/=' \$1 '\$1=' \$1 '-=' \$1 '%=') expression  | <pre>a *= 10;</pre> | Ja | 
| Bitweiser Zuweisungsoperator | expression ('<<=' \$1 '>>=' \$1 '>>>=' \$1 '&=' \$1 '^=' \$1 '\$1=') expression | <pre>a <<= 10;</pre> | Ja | 
| Kennung | identifierSequence[wobei *IdentifierSequence eine Folge* gültiger Zeichen ist](https://developer.mozilla.org/en-US/docs/Glossary/Identifier) | <pre>fruits=[10, 20, 30];</pre> | Ja | 
| Null-Literal | null | <pre>x = null;</pre> | Ja | 
| Boolesches Literal | true \$1 false | <pre>x = true;</pre> | Ja | 
| Zeichenketten-Literal | 'string' / "string" | <pre>a = 'hello',<br />b = "world";</pre> | Ja | 
| Dezimales Literal | integer [.] digits [exponent] | <pre>111.11 e+12</pre> | Ja | 
| Hex-Literal | 0 (x \$1 X)[0-9a-fA-F] | <pre>0x123ABC</pre> | Ja | 
| Oktales Literalwort | O [0-7] | <pre>"O51"</pre> | Ja | 
| Array-Literal | [ expression, ... ] | <pre>v = [a, b, c];</pre> | Ja | 
| Objekt-Literal | \$1property: value, ...\$1 | <pre>out = {value: 1, flag: false};</pre> | Ja | 
| In Klammern | ( expressions ) | <pre>x + (x + y)</pre> | Ja | 

# Wenn Aussage
<a name="ecma-if"></a>

Sie können if-Anweisungen hinzufügen, um Funktionen in Amazon Lex V2 auszuführen. Dieses Beispiel zeigt die Syntax, die in SRGS-Ausdrücken verwendet werden kann.

```
if (expressions) {
    statements;
} else {
    statements;
}
```

**Hinweis:** Im vorherigen Beispiel `statements` muss es `expressions` sich um eines der unterstützten Programme in diesem Dokument handeln.

# Switch-Anweisung
<a name="ecma-switch"></a>

Sie können Switch-Anweisungen hinzufügen, um Funktionen in Amazon Lex V2 auszuführen. Dieses Beispiel zeigt die Syntax, die in SRGS-Ausdrücken verwendet werden kann.

```
switch (expression) {
    case (expression):
     statements
     .
     .
     .
   default:
      statements
}
```

**Hinweis:** Im vorherigen Beispiel `statements` muss es `expressions` sich um eines der unterstützten Programme in diesem Dokument handeln.

# Deklarationen von Funktionen
<a name="ecma-function"></a>

Sie können Funktionsdeklarationen hinzufügen, um Funktionen in Amazon Lex V2 auszuführen. Dieses Beispiel zeigt die Syntax, die in SRGS-Ausdrücken verwendet werden kann.

```
function functionIdentifier([parameterList, ...]) {
     <function body>
}
```

# Iterationsanweisung
<a name="ecma-iteration"></a>

Iterationsanweisungen können eine der folgenden sein:

```
// Do..While statement
do {
   statements
} while (expressions)


// While Loop
while (expressions) {
   statements
}

// For Loop
for ([initialization]; [condition]; [final-expression])
   statement

// For..In
for (variable in object) {
  statement
}
```

# Anweisung blockieren
<a name="ecma-block"></a>

Sie können Anweisungsblöcke hinzufügen, um Funktionen in Amazon Lex V2 auszuführen. Dieses Beispiel zeigt die Syntax, die in SRGS-Ausdrücken verwendet werden kann.

```
{
   statements
}

// Example
{
    x = 10;
   if (x > 10) {
     console.log("greater than 10");
   }
}
```

**Hinweis:** Im vorherigen Beispiel muss es sich bei den im Block `statements` angegebenen Angaben um eine der unterstützten Optionen aus diesem Dokument handeln.

# Kommentare
<a name="ecma-comments"></a>

Sie können Kommentare in Amazon Lex V2 hinzufügen. Dieses Beispiel zeigt die Syntax, die in SRGS-Ausdrücken verwendet werden kann.

```
// Single Line Comments
"// <comment>"

// Multineline comments
/**
<comment>
**/
```

# Nicht unterstützte Anweisungen
<a name="ecma-unsupported"></a>

Amazon Lex V2 unterstützt die folgenden ECMAScript Funktionen nicht.

**Topics**
+ [Leere Aussage](#ecma-unsupported-empty)
+ [Anweisung fortsetzen](#ecma-unsupported-continue)
+ [Break-Anweisung](#ecma-unsupported-break)
+ [Erklärung zurückgeben](#ecma-unsupported-return)
+ [Aussage werfen](#ecma-unsupported-throw)
+ [Anweisung versuchen](#ecma-unsupported-try)
+ [Debugger-Anweisung](#ecma-unsupported-debugger)
+ [Beschriftete Anweisung](#ecma-unsupported-labelled)
+ [Klassendeklaration](#ecma-unsupported-class)

## Leere Aussage
<a name="ecma-unsupported-empty"></a>

Die leere Anweisung wird verwendet, um keine Aussage abzugeben. Das Folgende ist die Syntax für eine leere Anweisung:

```
;
```

## Anweisung fortsetzen
<a name="ecma-unsupported-continue"></a>

Die Continue-Anweisung ohne Label wird mit der unterstützt[Iterationsanweisung](ecma-iteration.md). Die Continue-Anweisung mit einem Label wird nicht unterstützt.

```
// continue with label
// this allows the program to jump to a
// labelled statement (see labelled statement below)
continue <label>;
```

## Break-Anweisung
<a name="ecma-unsupported-break"></a>

Die Break-Anweisung ohne Label wird mit der unterstützt[Iterationsanweisung](ecma-iteration.md). Die Break-Anweisung mit einer Bezeichnung wird nicht unterstützt.

```
// break with label
// this allows the program to break out of a
// labelled statement (see labelled statement below)
break <label>;
```

## Erklärung zurückgeben
<a name="ecma-unsupported-return"></a>

```
return expression;
```

## Aussage werfen
<a name="ecma-unsupported-throw"></a>

Die Anweisung throw wird verwendet, um eine benutzerdefinierte Ausnahme auszulösen.

```
throw expression;
```

## Anweisung versuchen
<a name="ecma-unsupported-try"></a>

```
try {
  statements
}
catch (expression) {
  statements
}
finally {
  statements
}
```

## Debugger-Anweisung
<a name="ecma-unsupported-debugger"></a>

Die Debugger-Anweisung wird verwendet, um die von der Umgebung bereitgestellte Debugging-Funktionalität aufzurufen.

```
debugger;
```

## Beschriftete Anweisung
<a name="ecma-unsupported-labelled"></a>

Die beschriftete Anweisung kann mit `break` `continue` Oder-Anweisungen verwendet werden.

```
label:
   statements


// Example
let str = '';

loop1:
for (let i = 0; i < 5; i++) {
  if (i === 1) {
    continue loop1;
  }
  str = str + i;
}

console.log(str);
```

## Klassendeklaration
<a name="ecma-unsupported-class"></a>

```
class Rectangle {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
}
```