1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#
227f654740f2a26ad62a5c155af9199af9e69b889claireho# Copyright (C) 2002-2010, International Business Machines Corporation 
3ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# and others. All Rights Reserved.
4ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#
5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# file:  word.txt
6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#
7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# ICU Word Break Rules
8ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#      See Unicode Standard Annex #29.
927f654740f2a26ad62a5c155af9199af9e69b889claireho#      These rules are based on UAX-29 Revision 16 for Unicode 6.0
10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#
11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# Note:  Updates to word.txt will usually need to be merged into
12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#        word_POSIX.txt and word_ja.txt also.
13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru##############################################################################
15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#
16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#  Character class definitions from TR 29
17ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#
18ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru##############################################################################
19ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
20ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru!!chain;
21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
22ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#
24ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#  Character Class Definitions.
25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#
26ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
2785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho$CR           = [\p{Word_Break = CR}];
2885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho$LF           = [\p{Word_Break = LF}];
2985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho$Newline      = [\p{Word_Break = Newline}];
3085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho$Extend       = [\p{Word_Break = Extend}];
31ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$Format       = [\p{Word_Break = Format}];
3285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho$Katakana     = [\p{Word_Break = Katakana}];
33ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$ALetter      = [\p{Word_Break = ALetter}];
3485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho$MidNumLet    = [\p{Word_Break = MidNumLet}];
35ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$MidLetter    = [\p{Word_Break = MidLetter}];
36ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$MidNum       = [\p{Word_Break = MidNum}];
37ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$Numeric      = [\p{Word_Break = Numeric}];
38ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$ExtendNumLet = [\p{Word_Break = ExtendNumLet}];
39ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
40ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
41ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#   Dictionary character set, for triggering language-based break engines. Currently
42ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#   limited to LineBreak=Complex_Context. Note that this set only works in Unicode
43ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#   5.0 or later as the definition of Complex_Context was corrected to include all
44ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#   characters requiring dictionary break.
45ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
46ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$dictionary   = [:LineBreak = Complex_Context:];
4785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho$Control        = [\p{Grapheme_Cluster_Break = Control}]; 
4885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho$ALetterPlus  = [$ALetter [$dictionary-$Extend-$Control]];   # Note:  default ALetter does not
4985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho                                                             #  include the dictionary characters.
50ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
51ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#
5285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#  Rules 4    Ignore Format and Extend characters, 
5385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#             except when they appear at the beginning of a region of text.
54ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#
55ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$KatakanaEx     = $Katakana     ($Extend |  $Format)*;
56ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$ALetterEx      = $ALetterPlus  ($Extend |  $Format)*;
5785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho$MidNumLetEx    = $MidNumLet    ($Extend |  $Format)*;
58ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$MidLetterEx    = $MidLetter    ($Extend |  $Format)*;
59ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$MidNumEx       = $MidNum       ($Extend |  $Format)*;
60ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$NumericEx      = $Numeric      ($Extend |  $Format)*;
61ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$ExtendNumLetEx = $ExtendNumLet ($Extend |  $Format)*;
62ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
6385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho$Hiragana       = [\p{script=Hiragana}];
6485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho$Ideographic    = [\p{Ideographic}];
65ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$HiraganaEx     = $Hiragana     ($Extend |  $Format)*;
66ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$IdeographicEx  = $Ideographic  ($Extend |  $Format)*;
67ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
68ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru## -------------------------------------------------
69ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
70ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru!!forward;
71ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
72ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
73ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# Rule 3 - CR x LF
7485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#
7585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho$CR $LF;
76ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
77ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# Rule 4 - ignore Format and Extend characters, except when they appear at the beginning
78ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#          of a region of Text.   The rule here comes into play when the start of text
79ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#          begins with a group of Format chars, or with a "word" consisting of a single
80ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#          char that is not in any of the listed word break categories followed by
81ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#          format char(s).
8285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho[^$CR $LF $Newline]? ($Extend |  $Format)+;
83ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
84ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$NumericEx {100};
85ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$ALetterEx {200};
8685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho$KatakanaEx {300};       # note:  these status values override those from rule 5
8785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho$HiraganaEx {300};       #        by virtual of being numerically larger.
8885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho$IdeographicEx {400};    #
89ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
9085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#
91ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# rule 5
9285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#    Do not break between most letters.
9385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#
94ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$ALetterEx $ALetterEx {200};
95ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
96ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# rule 6 and 7
9785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho$ALetterEx ($MidLetterEx | $MidNumLetEx) $ALetterEx {200};
98ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
99ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# rule 8
100ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
101ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$NumericEx $NumericEx {100};
102ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
103ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# rule 9
104ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
10585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho$ALetterEx $NumericEx {200};
106ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
107ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# rule 10
108ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
109ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$NumericEx $ALetterEx {200};
110ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
111ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# rule 11 and 12 
112ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
11385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho$NumericEx ($MidNumEx | $MidNumLetEx) $NumericEx {100};
114ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
115ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# rule 13
116ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
117ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$KatakanaEx  $KatakanaEx {300};
118ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
119ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# rule 13a/b
120ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
121ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$ALetterEx      $ExtendNumLetEx {200};    #  (13a)
122ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$NumericEx      $ExtendNumLetEx {100};    #  (13a)
123ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$KatakanaEx     $ExtendNumLetEx {300};    #  (13a)
12485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho$ExtendNumLetEx $ExtendNumLetEx {200};    #  (13a)
125ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
126ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$ExtendNumLetEx $ALetterEx  {200};    #  (13b)
127ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$ExtendNumLetEx $NumericEx  {100};    #  (13b)
128ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$ExtendNumLetEx $KatakanaEx {300};    #  (13b)
129ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 
130ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
131ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
132ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru## -------------------------------------------------
133ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
134ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru!!reverse;
135ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
136ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$BackALetterEx     = ($Format | $Extend)* $ALetterPlus;
13785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho$BackMidNumLetEx   = ($Format | $Extend)* $MidNumLet;
138ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$BackNumericEx     = ($Format | $Extend)* $Numeric;
139ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$BackMidNumEx      = ($Format | $Extend)* $MidNum;
140ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$BackMidLetterEx   = ($Format | $Extend)* $MidLetter;
141ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$BackKatakanaEx    = ($Format | $Extend)* $Katakana;
142ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$BackExtendNumLetEx= ($Format | $Extend)* $ExtendNumLet;
143ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
144ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# rule 3
14585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho$LF $CR;
146ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
147ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# rule 4
14885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho($Format | $Extend)*  [^$CR $LF $Newline]?;
149ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
150ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# rule 5
151ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
152ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$BackALetterEx $BackALetterEx;
153ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
154ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# rule 6 and 7
155ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
15685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho$BackALetterEx ($BackMidLetterEx | $BackMidNumLetEx) $BackALetterEx;
157ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
158ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
159ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# rule 8
160ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
161ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$BackNumericEx $BackNumericEx;
162ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
163ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# rule 9
164ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
165ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$BackNumericEx $BackALetterEx;
166ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
167ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# rule 10
168ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
169ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$BackALetterEx $BackNumericEx;
170ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
171ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# rule 11 and 12
172ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
17385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho$BackNumericEx ($BackMidNumEx | $BackMidNumLetEx) $BackNumericEx;
174ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
175ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# rule 13
176ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
177ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$BackKatakanaEx $BackKatakanaEx;
178ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
179ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# rules 13 a/b
180ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#
18185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho$BackExtendNumLetEx ($BackALetterEx | $BackNumericEx | $BackKatakanaEx | $BackExtendNumLetEx);
18285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho($BackALetterEx | $BackNumericEx | $BackKatakanaEx) $BackExtendNumLetEx; 
183ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
184ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru## -------------------------------------------------
185ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
186ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru!!safe_reverse;
187ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
188ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# rule 3
189ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru($Extend | $Format)+ .?;
190ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
191ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# rule 6
19285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho($MidLetter | $MidNumLet) $BackALetterEx;
193ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
194ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# rule 11
19585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho($MidNum | $MidNumLet) $BackNumericEx;
196ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
197ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# For dictionary-based break
198ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$dictionary $dictionary;
199ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
200ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru## -------------------------------------------------
201ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
202ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru!!safe_forward;
203ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
204ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# rule 4
205ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru($Extend | $Format)+ .?;
206ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
207ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# rule 6
20885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho($MidLetterEx | $MidNumLetEx) $ALetterEx;
209ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
210ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# rule 11
21185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho($MidNumEx | $MidNumLetEx) $NumericEx;
212ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
213ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru# For dictionary-based break
214ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru$dictionary $dictionary;
215