//--------------------------------------------------------------------
// Copyright (c) 1999-2000, International Business Machines
// Corporation and others.  All Rights Reserved.
//--------------------------------------------------------------------
// THIS IS A MACHINE-GENERATED FILE
// Tool: src\com\ibm\tools\translit\dumpICUrules.bat
// Source: src\com\ibm\text\resources/TransliterationRule_Latin_Hebrew.java
// Date: Fri May 19 15:50:22 2000
//--------------------------------------------------------------------

// Latin-Hebrew

lhebrew {
  Rule {
    //variable names, derived from the Unicode names.
    
    "$POINT_SHEVA=\u05B0;"
    "$POINT_HATAF_SEGOL=\u05B1;"
    "$POINT_HATAF_PATAH=\u05B2;"
    "$POINT_HATAF_QAMATS=\u05B3;"
    "$POINT_HIRIQ=\u05B4;"
    "$POINT_TSERE=\u05B5;"
    "$POINT_SEGOL=\u05B6;"
    "$POINT_PATAH=\u05B7;"
    "$POINT_QAMATS=\u05B8;"
    "$POINT_HOLAM=\u05B9;"
    "$POINT_QUBUTS=\u05BB;"
    "$POINT_DAGESH_OR_MAPIQ=\u05BC;"
    "$POINT_METEG=\u05BD;"
    "$PUNCTUATION_MAQAF=\u05BE;"
    "$POINT_RAFE=\u05BF;"
    "$PUNCTUATION_PASEQ=\u05C0;"
    "$POINT_SHIN_DOT=\u05C1;"
    "$POINT_SIN_DOT=\u05C2;"
    "$PUNCTUATION_SOF_PASUQ=\u05C3;"
    "$ALEF=\u05D0;"
    "$BET=\u05D1;"
    "$GIMEL=\u05D2;"
    "$DALET=\u05D3;"
    "$HE=\u05D4;"
    "$VAV=\u05D5;"
    "$ZAYIN=\u05D6;"
    "$HET=\u05D7;"
    "$TET=\u05D8;"
    "$YOD=\u05D9;"
    "$FINAL_KAF=\u05DA;"
    "$KAF=\u05DB;"
    "$LAMED=\u05DC;"
    "$FINAL_MEM=\u05DD;"
    "$MEM=\u05DE;"
    "$FINAL_NUN=\u05DF;"
    "$NUN=\u05E0;"
    "$SAMEKH=\u05E1;"
    "$AYIN=\u05E2;"
    "$FINAL_PE=\u05E3;"
    "$PE=\u05E4;"
    "$FINAL_TSADI=\u05E5;"
    "$TSADI=\u05E6;"
    "$QOF=\u05E7;"
    "$RESH=\u05E8;"
    "$SHIN=\u05E9;"
    "$TAV=\u05EA;"
    "$YIDDISH_DOUBLE_VAV=\u05F0;"
    "$YIDDISH_VAV_YOD=\u05F1;"
    "$YIDDISH_DOUBLE_YOD=\u05F2;"
    "$PUNCTUATION_GERESH=\u05F3;"
    "$PUNCTUATION_GERSHAYIM=\u05F4;"
    
    //wildcards
    //The values can be anything we don't use in this file: start at E000.
    
    "$letter=[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ];"
    
    "$softvowel=[eiyEIY];"
    
    "$vowellike=[$ALEF$AYIN$YOD$VAV];"
    
    "$hebrew=[\u0590-\u05FF];" // the whole block -liu
    
    //?>{POINT_SHEVA}
    //?>{POINT_HATAF_SEGOL}
    //?>{POINT_HATAF_PATAH}
    //?>{POINT_HATAF_QAMATS}
    //?>{POINT_HIRIQ}
    //?>{POINT_TSERE}
    //?>{POINT_SEGOL}
    //?>{POINT_PATAH}
    //?>{POINT_QAMATS}
    //?>{POINT_HOLAM}
    //?>{POINT_QUBUTS}
    //?>{POINT_DAGESH_OR_MAPIQ}
    //?>{POINT_METEG}
    //?>{PUNCTUATION_MAQAF}
    //?>{POINT_RAFE}
    //?>{PUNCTUATION_PASEQ}
    //?>{POINT_SHIN_DOT}
    //?>{POINT_SIN_DOT}
    //?>{PUNCTUATION_SOF_PASUQ}
    
    // why is this a special case? -liu
    "k''h <> $KAF $HE ;"
    
    // mark non-final forms in final position as x~ -liu
    "k    <  $KAF   } $hebrew ;"
    "m    <  $MEM   } $hebrew ;"
    "n    <  $NUN   } $hebrew ;"
    "p    <  $PE    } $hebrew ;"
    "ts   <  $TSADI } $hebrew ;"
    "k'~' <> $KAF   ;"
    "m'~' <> $MEM   ;"
    "n'~' <> $NUN   ;"
    "p'~' <> $PE    ;"
    "ts'~'<> $TSADI ;"
    
    // mark final forms in non-final position as x^ -liu
    "k'^' <> $FINAL_KAF   } $hebrew ;"
    "m'^' <> $FINAL_MEM   } $hebrew ;"
    "n'^' <> $FINAL_NUN   } $hebrew ;"
    "p'^' <> $FINAL_PE    } $hebrew ;"
    "ts'^'<> $FINAL_TSADI } $hebrew ;"
    "k    <  $FINAL_KAF;"
    "m    <  $FINAL_MEM;"
    "n    <  $FINAL_NUN;"
    "p    <  $FINAL_PE;"
    "ts   <  $FINAL_TSADI;"
    
    "a>$ALEF;"
    "A>$ALEF;"
    
    "b>$BET;"
    "B>$BET;"
    
    "c}$softvowel>$SAMEKH;"
    "C}$softvowel>$SAMEKH;"
    "c}$letter>$KAF;"
    "C}$letter>$KAF;"
    "c>$FINAL_KAF;"
    "C>$FINAL_KAF;"
    
    "d>$DALET;"
    "D>$DALET;"
    
    "e>$AYIN;"
    "E>$AYIN;"
    
    "f}$letter>$PE;"
    "f>$FINAL_PE;"
    "F}$letter>$PE;"
    "F>$FINAL_PE;"
    
    "g>$GIMEL;"
    "G>$GIMEL;"
    
    "h>$HE;"
    "H>$HE;"
    
    "i>$YOD;"
    "I>$YOD;"
    
    "j>$DALET$SHIN;"
    "J>$DALET$SHIN;"
    
    "kH>$HET;"
    "kh>$HET;"
    "KH>$HET;"
    "Kh>$HET;"
    "k}$letter>$KAF;"
    "K}$letter>$KAF;"
    "k>$FINAL_KAF;"
    "K>$FINAL_KAF;"
    
    "l>$LAMED;"
    "L>$LAMED;"
    
    "m}$letter>$MEM;"
    "m>$FINAL_MEM;"
    "M}$letter>$MEM;"
    "M>$FINAL_MEM;"
    
    "n}$letter>$NUN;"
    "n>$FINAL_NUN;"
    "N}$letter>$NUN;"
    "N>$FINAL_NUN;"
    
    "o>$VAV;"
    "O>$VAV;"
    
    "p}$letter>$PE;"
    "p>$FINAL_PE;"
    "P}$letter>$PE;"
    "P>$FINAL_PE;"
    
    "q>$QOF;"
    "Q>$QOF;"
    
    "r>$RESH;"
    "R>$RESH;"
    
    "sH>$SHIN;"
    "sh>$SHIN;"
    "SH>$SHIN;"
    "Sh>$SHIN;"
    "s>$SAMEKH;"
    "S>$SAMEKH;"
    
    "th>$TAV;"
    "tH>$TAV;"
    "TH>$TAV;"
    "Th>$TAV;"
    "tS}$letter>$TSADI;"
    "ts}$letter>$TSADI;"
    "Ts}$letter>$TSADI;"
    "TS}$letter>$TSADI;"
    "tS>$FINAL_TSADI;"
    "ts>$FINAL_TSADI;"
    "Ts>$FINAL_TSADI;"
    "TS>$FINAL_TSADI;"
    "t>$TET;"
    "T>$TET;"
    
    "u>$VAV;"
    "U>$VAV;"
    
    "v>$VAV;"
    "V>$VAV;"
    
    "w>$VAV;"
    "W>$VAV;"
    
    "x>$KAF$SAMEKH;"
    "X>$KAF$SAMEKH;"
    
    "y>$YOD;"
    "Y>$YOD;"
    
    "z>$ZAYIN;"
    "Z>$ZAYIN;"
    
    //#?>{YIDDISH_DOUBLE_VAV}
    //?>{YIDDISH_VAV_YOD}
    //?>{YIDDISH_DOUBLE_YOD}
    //?>{PUNCTUATION_GERESH}
    //?>{PUNCTUATION_GERSHAYIM}
    
    "''>;"
    
    //{POINT_SHEVA}>@
    //{POINT_HATAF_SEGOL}>@
    //{POINT_HATAF_PATAH}>@
    //{POINT_HATAF_QAMATS}>@
    //{POINT_HIRIQ}>@
    //{POINT_TSERE}>@
    //{POINT_SEGOL}>@
    //{POINT_PATAH}>@
    //{POINT_QAMATS}>@
    //{POINT_HOLAM}>@
    //{POINT_QUBUTS}>@
    //{POINT_DAGESH_OR_MAPIQ}>@
    //{POINT_METEG}>@
    //{PUNCTUATION_MAQAF}>@
    //{POINT_RAFE}>@
    //{PUNCTUATION_PASEQ}>@
    //{POINT_SHIN_DOT}>@
    //{POINT_SIN_DOT}>@
    //{PUNCTUATION_SOF_PASUQ}>@
    
    "a<$ALEF;"
    "e<$AYIN;"
    "b<$BET;"
    "d<$DALET;"
    //+ "k<$FINAL_KAF;"
    //+ "m<$FINAL_MEM;"
    //+ "n<$FINAL_NUN;"
    //+ "p<$FINAL_PE;"
    //+ "ts<$FINAL_TSADI;"
    "g<$GIMEL;"
    "kh<$HET;"
    "h<$HE;"
    //+ "k''<$KAF}$HE;"
    //+ "k<$KAF;"
    "l<$LAMED;"
    //+ "m<$MEM;"
    //+ "n<$NUN;"
    //+ "p<$PE;"
    "q<$QOF;"
    "r<$RESH;"
    "s''<$SAMEKH}$HE;"
    "s<$SAMEKH;"
    "sh<$SHIN;"
    "th<$TAV;"
    "t''<$TET}$HE;"
    "t''<$TET}$SAMEKH;"
    "t''<$TET}$SHIN;"
    "t<$TET;"
    //+ "ts<$TSADI;"
    "v<$VAV}$vowellike;"
    "u<$VAV;"
    "y<$YOD;"
    "z<$ZAYIN;"
    
    //{YIDDISH_DOUBLE_VAV}>@
    //{YIDDISH_VAV_YOD}>@
    //{YIDDISH_DOUBLE_YOD}>@
    //{PUNCTUATION_GERESH}>@
    //{PUNCTUATION_GERSHAYIM}>@
    
    "<'';"
  }
}
