pylucene 3.5.0-3
[pylucene.git] / lucene-java-3.5.0 / lucene / contrib / icu / src / data / uax29 / Lao.rbbi
diff --git a/lucene-java-3.5.0/lucene/contrib/icu/src/data/uax29/Lao.rbbi b/lucene-java-3.5.0/lucene/contrib/icu/src/data/uax29/Lao.rbbi
new file mode 100644 (file)
index 0000000..27dcaca
--- /dev/null
@@ -0,0 +1,192 @@
+#\r
+# Licensed to the Apache Software Foundation (ASF) under one or more\r
+# contributor license agreements.  See the NOTICE file distributed with\r
+# this work for additional information regarding copyright ownership.\r
+# The ASF licenses this file to You under the Apache License, Version 2.0\r
+# (the "License"); you may not use this file except in compliance with\r
+# the License.  You may obtain a copy of the License at\r
+#\r
+#     http://www.apache.org/licenses/LICENSE-2.0\r
+#\r
+# Unless required by applicable law or agreed to in writing, software\r
+# distributed under the License is distributed on an "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+# See the License for the specific language governing permissions and\r
+# limitations under the License.\r
+#\r
+# Parses Lao text, with syllable as token.\r
+#\r
+# The definition of Lao syllable is based from:\r
+#\r
+#   Syllabification of Lao Script for Line Breaking\r
+#   Phonpasit Phissamay, Valaxay Dalolay, Chitaphone Chanhsililath, Oulaiphone Silimasak, \r
+#     Sarmad Hussain, Nadir Durrani, Science Technology and Environment Agency, CRULP\r
+#   http://www.panl10n.net/english/final%20reports/pdf%20files/Laos/LAO06.pdf\r
+#      http://www.panl10n.net/Presentations/Cambodia/Phonpassit/LineBreakingAlgo.pdf\r
+#\r
+# NOTE:\r
+# There are some ambiguities in Lao syllabification without additional processing, as mentioned in the paper.\r
+# For this reason, this RBBI grammar really only works with LaoBreakIterator, as it does this additional work.\r
+#\r
+# Syllable structure, where X is the nuclear consonant:\r
+#\r
+#           +----+\r
+#           | X5 |\r
+#           +----+\r
+#           | X4 |\r
+# +----+----+----+----+----+----+----+-----+\r
+# | X0 | X1 | X  | X6 | X7 | X8 | X9 | X10 |\r
+# +----+----+----+----+----+----+----+-----+\r
+#           | X2 |\r
+#           +----+\r
+#           | X3 |\r
+#           +----+\r
+#\r
+# X0 represents a vowel which occurs before the nuclear consonant. \r
+# It can always define the beginning of syllable.\r
+$X0 = [\u0EC0-\u0EC4];\r
+# X1 is a combination consonant which comes before the nuclear consonant, \r
+# but only if nuclear consonant is one of {ງ ຍ ລ ວ ຼ ມ ນ ຣ}\r
+$X1 = [\u0EAB];\r
+# X represents the nuclear consonant.\r
+$X = [\u0E81-\u0EAE\u0EDC\u0EDD];\r
+# X2 is a combination consonant which comes after the nuclear consonant, \r
+# which is placed under or next to the nuclear consonant.\r
+$X2 = [\u0EBC\u0EA3\u0EA7\u0EA5];\r
+# X3 represents a vowel which occurs under the nuclear consonant.\r
+$X3 = [\u0EB8\u0EB9];\r
+# X4 represents a vowel which occurs above the nuclear consonant. \r
+$X4 = [\u0EB4-\u0EB7\u0ECD\u0EBB\u0EB1];\r
+# X5 represents a tone mark which occurs above the nuclear consonant or upper vowel.\r
+$X5 = [\u0EC8-\u0ECB];\r
+# X6 represents a consonant vowel, which occurs after the nuclear consonant. \r
+# It functions when the syllable doesn’t have any vowels. And it always exists with X8.\r
+$X6 = [\u0EA7\u0EAD\u0EBD];\r
+# X7 represents a final vowel. \r
+# However X7_1 always represents the end of syllable and it never exists with tone mark.\r
+$X7 = [\u0EB0\u0EB2\u0EB3];\r
+# X8 represents an alternate consonant.\r
+$X8 = [\u0E81\u0E87\u0E8D\u0E94\u0E99\u0EA1\u0E9A\u0EA7];\r
+# X9 represents alternate consonants to pronounce foreign terms, it always exist with X10_3.\r
+$X9 = [\u0E88\u0EAA\u0E8A\u0E9E\u0E9F\u0EA5];\r
+# X10 represents a sign mark. \r
+# It always occurs at the end of a syllable, but mostly people keep it separate from syllable.\r
+$X10 = [\u0EAF\u0EC6\u0ECC];\r
+\r
+# Section 1\r
+$X0_1 = [\u0EC0];\r
+$X4_1_2 = [\u0EB4\u0EB5];\r
+$X4_3_4 = [\u0EB6\u0EB7];\r
+$X4_6 = [\u0EBB];\r
+$X4_7 = [\u0EB1];\r
+$X6_2 = [\u0EAD];\r
+$X6_3 = [\u0EBD];\r
+$X7_1 = [\u0EB0];\r
+$X7_2 = [\u0EB2];\r
+$X10_1 = [\u0EAF];\r
+$X10_2 = [\u0EC6];\r
+$X10_3 = [\u0ECC];\r
+\r
+$Rule1_1 = $X0_1 ($X1)? $X ($X2)? ($X5)? ($X8)? ($X9 $X10_3)? ($X10_2)? ($X10_1)?;\r
+$Rule1_2 = $X0_1 ($X1)? $X ($X2)? $X4_1_2 ($X5)? ($X8)? ($X9 $X10_3)? ($X10_2)? ($X10_1)?;\r
+$Rule1_3 = $X0_1 ($X1)? $X ($X2)? $X4_3_4 ($X5)? $X6_2 ($X8)? ($X9 $X10_3)? ($X10_2)? ($X10_1)?;\r
+$Rule1_4 = $X0_1 ($X1)? $X ($X2)? ($X7_2)? $X7_1;\r
+$Rule1_5 = $X0_1 ($X1)? $X ($X2)? $X4_6 ($X5)? $X7_2 ($X9 $X10_3)? ($X10_2)? ($X10_1)?;\r
+$Rule1_6 = $X0_1 ($X1)? $X ($X2)? $X4_7 ($X5)? $X8 ($X9 $X10_3)? ($X10_2)? ($X10_1)?;\r
+$Rule1_7 = $X0_1 ($X1)? $X ($X2)? ($X4_7)? ($X5)? $X6_3 ($X9 $X10_3)? ($X10_2)? ($X10_1)?;\r
+\r
+$Rule1 = ($Rule1_1 | $Rule1_2 | $Rule1_3 | $Rule1_4 | $Rule1_5 | $Rule1_6 | $Rule1_7);\r
+\r
+# Section 2\r
+$X0_2 = [\u0EC1];\r
+\r
+$Rule2_1 = $X0_2 ($X1)? $X ($X2)? ($X5)? ($X6)? ($X8)? ($X9 $X10_3)? ($X10_2)? ($X10_1)?;\r
+$Rule2_2 = $X0_2 ($X1)? $X ($X2)? $X7_1;\r
+$Rule2_3 = $X0_2 ($X1)? $X ($X2)? $X4_7 ($X5)? $X8 ($X9 $X10_3)? ($X10_2)? ($X10_1)?; \r
+\r
+$Rule2 = ($Rule2_1 | $Rule2_2 | $Rule2_3);\r
+\r
+# Section 3\r
+$X0_3 = [\u0EC2];\r
+$X8_3 = [\u0E8D];\r
+$X8_8 = [\u0EA7];\r
+\r
+$Rule3_1 = $X0_3 ($X1)? $X ($X2)? ($X5)? ($X8)? ($X9 $X10_3)? ($X10_2)? ($X10_1)?;\r
+$Rule3_2 = $X0_3 ($X1)? $X ($X2)? $X7_1;\r
+$Rule3_3 = $X0_3 ($X1)? $X ($X2)? $X4_7 ($X5)? ($X8_3 | $X8_8);\r
+\r
+$Rule3 = ($Rule3_1 | $Rule3_2 | $Rule3_3);\r
+\r
+# Section 4\r
+$X0_4 = [\u0EC4];\r
+$X6_1 = [\u0EA7];\r
+\r
+$Rule4 = $X0_4 ($X1)? $X ($X2)? ($X5)? ($X6_1)? ($X9 $X10_3)? ($X10_2)? ($X10_1)?;\r
+\r
+# Section 5\r
+$X0_5 = [\u0EC3];\r
+\r
+$Rule5 = $X0_5 ($X1)? $X ($X2)? ($X5)? ($X6_1)? ($X9 $X10_3)? ($X10_2)? ($X10_1)?;\r
+\r
+# Section 6\r
+$Rule6 = ($X1)? $X ($X2)? $X3 ($X5)? ($X8)? ($X9 $X10_3)? ($X10_2)? ($X10_1)?;\r
+\r
+# Section 7\r
+$X4_1_4 = [\u0EB4-\u0EB7];\r
+\r
+$Rule7 = ($X1)? $X ($X2)? $X4_1_4 ($X5)? ($X8)? ($X9 $X10_3)? ($X10_2)? ($X10_1)?;\r
+\r
+# Section 8\r
+$X4_5 = [\u0ECD];\r
+\r
+$Rule8 = ($X1)? $X ($X2)? $X4_5 ($X5)? ($X7_2)? ($X9 $X10_3)? ($X10_2)? ($X10_1)?;\r
+\r
+# Section 9\r
+\r
+$Rule9_1 = ($X1)? $X ($X2)? $X4_6 ($X5)? $X8 ($X9 $X10_3)? ($X10_2)? ($X10_1)?;\r
+$Rule9_2 = ($X1)? $X ($X2)? $X4_6 ($X5)? $X6_1 $X7_1;\r
+\r
+$Rule9 = ($Rule9_1 | $Rule9_2);\r
+\r
+# Section 10\r
+$Rule10 = ($X1)? $X ($X2)? $X4_7 ($X5)? ($X6_1)? $X8 ($X9 $X10_3)? ($X10_2)? ($X10_1)?;\r
+\r
+# Section 11\r
+$Rule11 = ($X1)? $X ($X2)? ($X5)? $X6 $X8 ($X9 $X10_3)? ($X10_2)? ($X10_1)?;\r
+\r
+# Section 12\r
+$Rule12 = ($X1)? $X ($X2)? ($X5)? $X7_1;\r
+\r
+# Section 13\r
+$Rule13 = ($X1)? $X ($X2)? ($X5)? $X7_2 ($X8)? ($X9 $X10_3)? ($X10_2)? ($X10_1)?;\r
+\r
+# Section 14\r
+$X7_3 = [\u0EB3];\r
+\r
+$Rule14 = ($X1)? $X ($X2)? ($X5)? $X7_3 ($X9 $X10_3)? ($X10_2)? ($X10_1)?;\r
+\r
+$LaoSyllableEx = ($Rule1 | $Rule2 | $Rule3 | $Rule4 | $Rule5 | $Rule6 | $Rule7 | $Rule8 | $Rule9 | $Rule10 | $Rule11 | $Rule12 | $Rule13 | $Rule14);\r
+\r
+$WordJoin = [:Line_Break=Word_Joiner:];\r
+\r
+$LaoJoinedSyllableEx = $LaoSyllableEx ($WordJoin $LaoSyllableEx)*;\r
+\r
+#\r
+# default numerical definitions\r
+#\r
+$Extend       = [\p{Word_Break = Extend}];\r
+$Format       = [\p{Word_Break = Format}];\r
+$MidNumLet    = [\p{Word_Break = MidNumLet}];\r
+$MidNum       = [\p{Word_Break = MidNum}];\r
+$Numeric      = [\p{Word_Break = Numeric}];\r
+$ExtendNumLet = [\p{Word_Break = ExtendNumLet}];                                                          \r
+$MidNumLetEx    = $MidNumLet    ($Extend |  $Format)*;\r
+$MidNumEx       = $MidNum       ($Extend |  $Format)*;\r
+$NumericEx      = $Numeric      ($Extend |  $Format)*;\r
+$ExtendNumLetEx = $ExtendNumLet ($Extend |  $Format)*;\r
+\r
+!!forward;\r
+\r
+$LaoJoinedSyllableEx {200};\r
+# default numeric rules\r
+$NumericEx $ExtendNumLetEx? (($MidNumEx | $MidNumLetEx)? $NumericEx $ExtendNumLetEx?)*  {100};\r