

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 문법 정의
<a name="grammar-srgs-spec"></a>

이 주제에서는 Amazon Lex V2가 지원하는 SRGS 사양의 일부를 보여줍니다. 모든 규칙은 SRGS 사양에 정의되어 있습니다. 자세한 내용은 [음성 인식 문법 사양 버전 1.0](https://www.w3.org/TR/speech-grammar/) W3C 권장 사항을 참조하세요.

**Topics**
+ [헤더 선언](srgs-header.md)
+ [지원되는 XML 요소](srgs-supported-xml.md)
+ [토큰](srgs-tokens.md)
+ [규칙 참조](srgs-rule-reference.md)
+ [시퀀스 및 캡슐화](srgs-sequence.md)
+ [반복](srgs-repeats.md)
+ [언어](srgs-language.md)
+ [Tags](srgs-tags.md)
+ [가중치](grammar-weights.md)

이 문서에는 W3C 음성 인식 문법 사양 버전 1.0([https://www.w3.org/TR/speech-grammar/](https://www.w3.org/TR/speech-grammar/) 참조) 에서 복사 및 파생된 자료가 포함되어 있습니다. 인용 정보는 다음과 같습니다.

[Copyright](http://www.w3.org/Consortium/Legal/ipr-notice#Copyright) © 2004 [W3C®](http://www.w3.org/) ([MIT](http://www.csail.mit.edu/), [ERCIM](http://www.ercim.org/), [Keio](http://www.keio.ac.jp/), All Rights Reserved. W3C [책임](http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer), [상표권](http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks), [문서 사용](http://www.w3.org/Consortium/Legal/copyright-documents) 및 [소프트웨어 라이선스](http://www.w3.org/Consortium/Legal/copyright-software) 규칙이 적용됩니다.

[W3C 권장 사항](https://www.w3.org/2004/02/Process-20040205/tr.html#RecsW3C)인 SRGS 사양 문서는 다음 라이선스에 따라 W3C에서 제공됩니다.

## 라이선스 텍스트
<a name="license-text"></a>

라이선스

이 문서 또는 본 설명서가 링크된 W3C 문서를 사용 및/또는 복사함으로써 귀하(사용권자)는 다음 이용 약관을 읽고 이해했으며 준수하는 것에 동의하게 됩니다.

사용하는 문서의 모든 사본 또는 그 일부에 다음 사항을 포함하는 경우, 본 문서의 내용 또는 본 설명서가 링크된 W3C 문서를 어떤 목적으로든 수수료 또는 로열티 없이 모든 매체에서 복사 및 배포할 수 있는 권한이 부여됩니다.
+ 원본 W3C 문서에 대한 링크 또는 URL.
+ 원저자의 기존 저작권 고지 또는 존재하지 않는 경우, "Copyright © [\$1date-of-document] [World Wide Web Consortium](http://www.w3.org/), ([MIT](http://www.csail.mit.edu/), [ERCIM](http://www.ercim.org/), [Keio](http://www.keio.ac.jp/), [Beihang](http://ev.buaa.edu.cn/)). [http://www.w3.org/Consortium/Legal/2015/doc-license](http://www.w3.org/Consortium/Legal/2015/doc-license)" 형식의 고지(가급적 하이퍼텍스트를 사용하되 텍스트 표현은 허용됨)
+ *존재하는 경우*, W3C 문서의 상태.

공간에 여유가 있을 경우, 본 **고지**의 전문을 포함해야 합니다. 당사는 이 문서의 내용 또는 그 일부의 구현에 따라 사용자가 만드는 모든 소프트웨어, 문서 또는 기타 항목이나 제품에 저작권 표시를 제공하도록 요청합니다.

다음과 같은 경우를 제외하고 이 라이선스에 따라 W3C 문서를 수정하거나 파생 문서를 만들 수 있는 권리는 부여되지 않습니다. 이 문서에 명시된 기술 사양의 구현을 용이하게 하기 위해 누구든지 소프트웨어, 소프트웨어와 함께 제공되는 지원 자료 및 소프트웨어 설명서에 이 문서의 파생 저작물 및 일부를 준비하고 배포할 수 있습니다. 단, 그러한 모든 저작물에 아래 고지가 포함되어 있어야 합니다. 그러나 기술 사양으로 사용하기 위한 이 문서의 파생 저작물의 출판은 명시적으로 금지됩니다.

또한 웹 IDL로 명확하게 표시된 섹션의 웹 IDL과 W3C 정의 마크업(HTML, CSS 등) 및 코드 예제로 명확하게 표시된 컴퓨터 프로그래밍 언어 코드인 '코드 구성 요소'는 [W3C 소프트웨어 라이선스](http://www.w3.org/Consortium/Legal/copyright-software)에 따라 사용이 허가됩니다.

고지는 다음과 같습니다.

"Copyright © 2015 W3C® (MIT, ERCIM, Keio, Beihang). 이 소프트웨어 또는 문서에는 [W3C 문서의 제목 및 URI]에서 복사하거나 파생된 자료가 포함되어 있습니다.”

면책 조항

본 문서는 “있는 그대로” 제공되며, 저작권 소유자는 상품성, 특정 목적에의 적합성, 비침해성 또는 소유권에 대한 보증을 포함하되 이에 국한되지 않고, 문서의 내용이 특정 목적에 적합하며 그러한 내용의 구현이 제3자의 특허, 저작권, 상표 또는 기타 권리를 침해하지 않는다는 명시적 또는 묵시적 진술이나 보증을 하지 않습니다.

저작권 소유자는 문서 사용 또는 문서 내용의 실행 또는 구현으로 인해 발생하는 직접적, 간접적, 특별 또는 결과적 손해에 대해 책임을 지지 않습니다.

저작권 소유자의 이름과 상표는 명시적인 사전 서면 허가 없이는 이 문서 또는 그 내용과 관련된 광고 또는 홍보에 사용할 수 없습니다. 이 문서의 저작권에 대한 소유권은 항상 저작권 소유자에게 있습니다.

# 헤더 선언
<a name="srgs-header"></a>

다음 표에는 문법 슬롯 유형이 지원하는 헤더 선언이 나와 있습니다. 자세한 내용은 *음성 인식 문법 사양 버전 1* W3C 권장 사항의 [문법 헤더 선언](https://www.w3.org/TR/speech-grammar/#S4.1)을 참조하세요.


| 선언 | 사양 요구 사항 | XML 양식 | Amazon Lex 지원 | 사양 | 
| --- | --- | --- | --- | --- | 
| 문법 버전 | 필수 | [4.3](https://www.w3.org/TR/speech-grammar/#S4.3): grammar 요소의 version 속성 | 필수 | SRGS | 
| XML 네임스페이스 | 필수(XML만 해당) | [4.3](https://www.w3.org/TR/speech-grammar/#S4.3): grammar 요소의 xmlns 속성 | 필수 | SRGS | 
| 문서 유형 | 필수(XML만 해당) | [4.3](https://www.w3.org/TR/speech-grammar/#S4.3): XML 문서 유형 | 권장 | SRGS | 
| 문자 인코딩 | 권장 | [4.4](https://www.w3.org/TR/speech-grammar/#S4.4): XML 선언의 encoding 속성 | 권장 | SRGS | 
| 언어 | 음성 모드에 필요 DTMF 모드에서는 무시됨 | [4.5](https://www.w3.org/TR/speech-grammar/#S4.5): grammar 요소의 xml:lang 속성 | 음성 모드에 필요 DTMF 모드에서는 무시됨 | SRGS | 
| Mode | 선택 사항 | [4.6](https://www.w3.org/TR/speech-grammar/#S4.6): grammar 요소의 mode 속성 | 선택 사항 | SRGS | 
| 루트 규칙 | 선택 사항 | [4.7](https://www.w3.org/TR/speech-grammar/#S4.7): grammar 요소의 root 속성 | 필수 | SRGS | 
| 태그 형식 | 선택 사항 | [4.8](https://www.w3.org/TR/speech-grammar/#S4.8): grammar 요소의 tag-format 속성 | 문자열 리터럴 및 ECMAScript 지원 | SRGS, SISR | 
| 기본 URI | 선택 사항 | [4.9](https://www.w3.org/TR/speech-grammar/#S4.9): grammar 요소의 xml:base 속성 | 선택 사항 | SRGS | 
| 발음 어휘 | 선택 사항, 복수 허용 | [4.10](https://www.w3.org/TR/speech-grammar/#S4.`0): lexicon 요소 | 지원되지 않음 | SRGS, PLS | 
| Metadata | 선택 사항, 복수 허용 | [4.11.1](https://www.w3.org/TR/speech-grammar/#S4.11.1): meta 요소 | 필수 | SRGS | 
| XML 메타데이터 | 선택 사항, XML만 해당 | [4.11.2](https://www.w3.org/TR/speech-grammar/#S4.11.2): metadata 요소 | 선택 사항 | SRGS | 
| 태그 | 선택 사항, 복수 허용 | [4.12](https://www.w3.org/TR/speech-grammar/#S4.12): tag 요소 | 글로벌 태그는 지원되지 않음 | SRGS | 

**예제**

```
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE grammar PUBLIC "-//W3C//DTD GRAMMAR 1.0//EN"
                  "http://www.w3.org/TR/speech-grammar/grammar.dtd">

<grammar xmlns="http://www.w3.org/2001/06/grammar"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xml:base="http://www.example.com/base-file-path"
         xsi:schemaLocation="http://www.w3.org/2001/06/grammar
                             http://www.w3.org/TR/speech-grammar/grammar.xsd"
         xml:lang="en-US"
         version="1.0"
         mode="voice"
         root="city"
         tag-format="semantics/1.0">
```

# 지원되는 XML 요소
<a name="srgs-supported-xml"></a>

Amazon Lex V2는 사용자 지정 문법에 대해 다음과 같은 XML 요소를 지원합니다.
+ `<item>`
+ `<token>`
+ `<tag>`
+ `<one-of>`
+ `<rule-ref>`

# 토큰
<a name="srgs-tokens"></a>

다음 표에 문법 슬롯 유형이 지원하는 토큰 사양이 나와 있습니다. 자세한 내용은 *음성 인식 문법 사양 버전 1* W3C 권장 사항의 [토큰](https://www.w3.org/TR/speech-grammar/#S2.1)을 참조하세요.


| 토큰 유형 | 예제 | 지원 여부 | 
| --- | --- | --- | 
| 따옴표가 없는 단일 토큰 | hello | 예 | 
| 따옴표가 없는 단일 토큰: 비 알파벳 | 2 | 예 | 
| 따옴표가 있는 단일 토큰, 공백 없음 | "hello" | 예, 토큰이 한 개만 포함된 경우에는 큰따옴표를 사용하지 마세요. | 
| 공백으로 구분된 두 개의 토큰 | bon voyage | 예 | 
| 공백으로 구분된 네 개의 토큰 | this is a test | 예 | 
| 따옴표가 있는 단일 토큰, 공백 포함 | "San Francisco | 아니요 | 
| <token> 태그 속의 단일 XML 토큰 | <token>San Francisco</token> | 아니요(따옴표가 있는 단일 토큰과 동일, 공백 포함) | 

**참고**
+ *따옴표가 있는 단일 토큰, 공백 포함* – 사양에 따르면 큰따옴표로 묶인 단어를 단일 토큰으로 취급해야 합니다. Amazon Lex V2는 이를 공백으로 구분된 토큰으로 취급합니다.
+ *<token> 속의 단일 XML 토큰* – 사양에 따르면 <token>으로 구분된 단어는 하나의 토큰을 나타내야 합니다. Amazon Lex V2는 이를 공백으로 구분된 토큰으로 취급합니다.
+ Amazon Lex V2에서는 문법에서 두 사용법 중 하나가 발견되면 검증 오류가 발생합니다.

**예제**

```
<rule id="state" scope="public">
    <one-of>
        <item>FL</item>
        <item>MA</item>
        <item>NY</item>
    </one-of>
</rule>
```

# 규칙 참조
<a name="srgs-rule-reference"></a>

다음 표에는 문법 문서 내에서 사용할 수 있는 다양한 형태의 규칙 참조가 요약되어 있습니다. 자세한 내용은 *음성 인식 문법 사양 버전 1* W3C 권장 사항의 [규칙 참조](https://www.w3.org/TR/speech-grammar/#S2.2)를 참조하세요.


| 참조 유형 | XML 양식 | 지원됨 | 
| --- | --- | --- | 
| [2.2.1](https://www.w3.org/TR/speech-grammar/#S2.2.1) 명시적 로컬 규칙 참조 | <ruleref uri="\$1rulename"/> | 예 | 
| [ 2.2.2 ](https://www.w3.org/TR/speech-grammar/#S2.2.2) [URI](https://www.w3.org/TR/speech-grammar/#term-uri)로 식별되는 문법의 명명된 규칙에 대한 명시적 참조 | <ruleref uri="grammarURI\$1rulename"/> | 아니요 | 
| [ 2.2.2 ](https://www.w3.org/TR/speech-grammar/#S2.2.2) [URI](https://www.w3.org/TR/speech-grammar/#term-uri)로 식별되는 문법의 루트 규칙에 대한 암시적 참조 | <ruleref uri="grammarURI"/> | 아니요 | 
| [ 2.2.2 ](https://www.w3.org/TR/speech-grammar/#S2.2.2) [미디어 유형](https://www.w3.org/TR/speech-grammar/#term-media-type)이 있는 [URI](https://www.w3.org/TR/speech-grammar/#term-uri)로 식별되는 문법의 명명된 규칙에 대한 명시적 참조 | <ruleref uri="grammarURI\$1rulename" type="media-type"/> | 아니요 | 
| [ 2.2.2 ](https://www.w3.org/TR/speech-grammar/#S2.2.2) [미디어 유형](https://www.w3.org/TR/speech-grammar/#term-media-type)이 있는 [URI](https://www.w3.org/TR/speech-grammar/#term-uri)로 식별되는 문법의 루트 규칙에 대한 암시적 참조 | <ruleref uri="grammarURI" type="media-type"/> | 아니요 | 
| [ 2.2.3 ](https://www.w3.org/TR/speech-grammar/#S2.2.3) 특수 규칙 정의 | `<ruleref special="NULL"/>` `<ruleref special="VOID"/>` `<ruleref special="GARBAGE"/>` | 아니요 | 

**참고**

1. 문법 URI는 외부 URI입니다. 예를 들어 `http://grammar.example.com/world-cities.grxml`입니다.

1. 미디어 유형은 다음과 같을 수 있습니다.
   + `application/srgs+xml`
   + `text/plain`

**예제**

```
<rule id="city" scope="public">
    <one-of>
        <item>Boston</item>
        <item>Philadelphia</item>
        <item>Fargo</item>
    </one-of>
</rule>

<rule id="state" scope="public">
    <one-of>
        <item>FL</item>
        <item>MA</item>
        <item>NY</item>
    </one-of>
</rule>

<!-- "Boston MA" -> city = Boston, state = MA -->
<rule id="city_state" scope="public">
    <ruleref uri="#city"/> <ruleref uri="#state"/>
</rule>
```

# 시퀀스 및 캡슐화
<a name="srgs-sequence"></a>

다음 예제에서는 지원되는 시퀀스를 보여줍니다. 자세한 내용은 *음성 인식 문법 사양 버전 1* W3C 권장 사항의 [시퀀스 및 캡슐화](https://www.w3.org/TR/speech-grammar/#S2.3)를 참조하세요.

**예제**

```
<!-- sequence of tokens -->
this is a test

<!--sequence of rule references-->
<ruleref uri="#action"/> <ruleref uri="#object"/>

<!--sequence of tokens and rule references-->
the <ruleref uri="#object"/> is <ruleref uri="#color"/>

<!-- sequence container -->
<item>fly to <ruleref uri="#city"/> </item>
```

# 반복
<a name="srgs-repeats"></a>

다음 표에는 지원되는 규칙 반복 확장이 나와 있습니다. 자세한 내용은 *음성 인식 문법 사양 버전 1* W3C 권장 사항의 [반복](https://www.w3.org/TR/speech-grammar/#S2.5)을 참조하세요.


| XML 양식예제 | 동작 | 지원 여부 | 
| --- | --- | --- | 
| *repeat="n"* repeat="6" | 포함된 표현식이 정확히 “n”번 반복됩니다. “n”은 “0"이거나 양의 정수여야 합니다. | 예 | 
| *repeat="m-n"* repeat="4-6" | 포함된 확장은 “m”에서 “n”회 사이에서 반복됩니다 (포함). “m”과 “n”은 모두 “0"이거나 양의 정수여야 하고, “m”은 “n”보다 작거나 같아야 합니다. | 예 | 
| *repeat="m-"* repeat="3-" | 포함된 확장이 “m”번 이상(포함) 반복됩니다. “m”은 “0"이거나 양의 정수여야 합니다. 예를 들어, “3-”는 포함된 확장이 세 번, 네 번, 다섯 번 또는 그 이상 발생할 수 있음을 선언합니다. | 예 | 
| *repeat="0-1"*  | 포함된 확장은 선택 사항입니다. | 예 | 
| <item repeat="2-4" repeat-prob="0.8"> |   | 아니요 | 

# 언어
<a name="srgs-language"></a>

다음 논의는 문법에 적용되는 언어 식별자에 적용됩니다. 자세한 내용은 *음성 인식 문법 사양 버전 1* W3C 권장 사항의 [언어](https://www.w3.org/TR/speech-grammar/#S2.7)를 참조하세요.

기본적으로 문법은 [문법 헤더](https://www.w3.org/TR/speech-grammar/#S4.1)의 언어 선언에 [언어 식별자](https://www.w3.org/TR/speech-grammar/#term-language)가 제공된 단일 언어 문서입니다. 달리 선언되지 않는 한 해당 문법 내의 모든 토큰은 **문법의 언어에 따라 처리됩니다**. 문법 수준의 언어 선언은 **지원되지 않습니다**.

이 예에서 다음과 같이 합니다.

1. Amazon Lex V2는 “en-US” 언어에 대한 문법 헤더 선언을 **지원합니다**.

1. 항목 수준 언어 첨부(*빨간색*으로 강조 표시)는 **지원되지 않습니다**. Amazon Lex V2에서는 언어 첨부가 헤더 선언과 다른 경우 검증 오류가 발생합니다.

```
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE grammar PUBLIC "-//W3C//DTD GRAMMAR 1.0//EN"
                  "http://www.w3.org/TR/speech-grammar/grammar.dtd">

<!-- the default grammar language is US English -->
<grammar xmlns="http://www.w3.org/2001/06/grammar"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.w3.org/2001/06/grammar
                             http://www.w3.org/TR/speech-grammar/grammar.xsd"
         xml:lang="en-US" version="1.0">

  <!--
     single language attachment to tokens
     "yes" inherits US English language
     "oui" is Canadian French language
  -->
  <rule id="yes">
    <one-of>
      <item>yes</item>
      <item xml:lang="fr-CA">oui</item>
    </one-of>
  </rule>

  <!-- Single language attachment to an expansion -->
  <rule id="people1">
    <one-of xml:lang="fr-CA">
      <item>Michel Tremblay</item>
      <item>André Roy</item>
    </one-of>
  </rule>
</grammar>
```

# Tags
<a name="srgs-tags"></a>

다음 설명은 문법에 정의된 태그에 적용됩니다. 자세한 내용은 *음성 인식 문법 사양 버전 1* W3C 권장 사항의 [태그](https://www.w3.org/TR/speech-grammar/#S2.6)를 참조하세요.

SRGS 사양에 따라 태그는 다음과 같은 방식으로 정의될 수 있습니다.

1. [헤더 선언](srgs-header.md)에 설명된 대로 헤더 선언의 일부로.

1. *<rule>* 정의의 일부로.

다음 태그 형식이 지원됩니다.
+ `semantics/1.0`(SISR, ECMAScript)
+ `semantics/1.0-literals`(SISR 문자열 리터럴)

다음 태그 형식은 지원되지 않습니다.
+ `swi-semantics/1.0`(뉘앙스 전용)

**예제**

```
<grammar xmlns="http://www.w3.org/2001/06/grammar"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xml:base="http://www.example.com/base-file-path"
         xsi:schemaLocation="http://www.w3.org/2001/06/grammar
                             http://www.w3.org/TR/speech-grammar/grammar.xsd"
         xml:lang="en-US"
         version="1.0"
         mode="voice"
         root="city"
         tag-format="semantics/1.0-literals">
    <rule id="no">
        <one-of>
            <item>no</item>
            <item>nope</item>
            <item>no way</item>
        </one-of>
        <tag>no</tag>
    </rule>
</grammar>
```

# 가중치
<a name="grammar-weights"></a>

요소에 *가중치* 속성을 추가할 수 있습니다. 가중치는 음성 인식 중에 항목의 문구가 부스팅되는 정도를 나타내는 양의 부동 소수점 값입니다. 자세한 내용은 음성 인식 문법 사양 버전 1 W3C 권장 사항의 [가중치](https://www.w3.org/TR/speech-grammar/)를 참조하세요.

가중치는 0보다 크고 10보다 작거나 같아야 하며 소수점 한 자리만 사용할 수 있습니다. 가중치가 0보다 크고 1보다 작으면 문구가 음으로 부스팅됩니다. 가중치가 1보다 크고 10보다 작거나 같으면 문구가 양으로 부스팅됩니다. 가중치가 1이면 가중치를 전혀 주지 않는 것과 같으며, 해당 문구는 부스팅되지 않습니다.

음성 인식 성능 향상을 위해 항목에 적절한 가중치를 할당하는 것은 어려운 작업입니다. 가중치를 할당할 때 따를 수 있는 몇 가지 팁은 다음과 같습니다.
+ 항목 가중치를 할당되지 않은 문법으로 시작하세요.
+ 음성에서 자주 잘못 식별하는 패턴이 무엇인지 확인해 보세요.
+ 음성 인식 성능이 향상되고 회귀가 없을 때까지 가중치에 다른 값을 적용하세요.

**예제 1**.

예를 들어 공항에 대한 문법이 있는데 *New York*이 *Newark*로 잘못 인식되는 경우가 많다면 가중치 5를 할당하여 New York을 양으로 부스팅시킬 수 있습니다.

```
<rule> id="airport">
    <one-of>
        <item>
            Boston
            <tag>out="Boston"</tag>
        </item>
        <item weight="5">
            New York
            <tag>out="New York"</tag>
        </item>
        <item>
            Newark
            <tag>out="Newark"</tag>
        </item>
    </one-of>
</rule>
```

**예제 2**.

예를 들어, 항공사 예약 코드의 문법은 영어 알파벳으로 시작하고 그 뒤에 세 자리 숫자가 오는 경우를 예로 들 수 있습니다. 예약 코드는 B 또는 D로 시작할 가능성이 높지만 B는 P로, D는 T로 잘못 식별되는 경우가 많습니다. B와 D를 양으로 부스팅시킬 수 있습니다.

```
<rule> id="alphabet">
    <one-of>
        <item>A<tag>out.letters+='A';</tag></item>
        <item weight="3.5">B<tag>out.letters+='B';</tag></item>
        <item>C<tag>out.letters+='C';</tag></item>
        <item weight="2.9">D<tag>out.letters+='D';</tag></item>
        <item>E<tag>out.letters+='E';</tag></item>
        <item>F<tag>out.letters+='F';</tag></item>
        <item>G<tag>out.letters+='G';</tag></item>
        <item>H<tag>out.letters+='H';</tag></item>
        <item>I<tag>out.letters+='I';</tag></item>
        <item>J<tag>out.letters+='J';</tag></item>
        <item>K<tag>out.letters+='K';</tag></item>
        <item>L<tag>out.letters+='L';</tag></item>
        <item>M<tag>out.letters+='M';</tag></item>
        <item>N<tag>out.letters+='N';</tag></item>
        <item>O<tag>out.letters+='O';</tag></item>
        <item>P<tag>out.letters+='P';</tag></item>
        <item>Q<tag>out.letters+='Q';</tag></item>
        <item>R<tag>out.letters+='R';</tag></item>
        <item>S<tag>out.letters+='S';</tag></item>
        <item>T<tag>out.letters+='T';</tag></item>
        <item>U<tag>out.letters+='U';</tag></item>
        <item>V<tag>out.letters+='V';</tag></item>
        <item>W<tag>out.letters+='W';</tag></item>
        <item>X<tag>out.letters+='X';</tag></item>
        <item>Y<tag>out.letters+='Y';</tag></item>
        <item>Z<tag>out.letters+='Z';</tag></item>
    </one-of>
</rule>
```