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