/*
 *******************************************************************************
 * Copyright (C) 2003-2010, International Business Machines Corporation and
 * others. All Rights Reserved.
 *******************************************************************************
 */
 
package com.ibm.icu.text;
 
/**
 * Generated Java File.  Do not edit by hand.
 * This file contains the state table for the ICU Rule Based Break Iterator
 * rule parser.
 * It is generated by the Perl script "rbbicst.pl" from
 * the rule parser state definitions file "rbbirpt.txt".
 */
class RBBIRuleParseTable
{
     static final short doCheckVarDef = 1;
     static final short doDotAny = 2;
     static final short doEndAssign = 3;
     static final short doEndOfRule = 4;
     static final short doEndVariableName = 5;
     static final short doExit = 6;
     static final short doExprCatOperator = 7;
     static final short doExprFinished = 8;
     static final short doExprOrOperator = 9;
     static final short doExprRParen = 10;
     static final short doExprStart = 11;
     static final short doLParen = 12;
     static final short doNOP = 13;
     static final short doOptionEnd = 14;
     static final short doOptionStart = 15;
     static final short doReverseDir = 16;
     static final short doRuleChar = 17;
     static final short doRuleError = 18;
     static final short doRuleErrorAssignExpr = 19;
     static final short doScanUnicodeSet = 20;
     static final short doSlash = 21;
     static final short doStartAssign = 22;
     static final short doStartTagValue = 23;
     static final short doStartVariableName = 24;
     static final short doTagDigit = 25;
     static final short doTagExpectedError = 26;
     static final short doTagValue = 27;
     static final short doUnaryOpPlus = 28;
     static final short doUnaryOpQuestion = 29;
     static final short doUnaryOpStar = 30;
     static final short doVariableNameExpectedErr = 31;
 
     static final short kRuleSet_default = 255;
     static final short kRuleSet_digit_char = 128;
     static final short kRuleSet_eof = 252;
     static final short kRuleSet_escaped = 254;
     static final short kRuleSet_name_char = 129;
     static final short kRuleSet_name_start_char = 130;
     static final short kRuleSet_rule_char = 131;
     static final short kRuleSet_white_space = 132;


   static class RBBIRuleTableElement { 
      short      fAction; 
      short      fCharClass; 
      short      fNextState; 
      short      fPushState; 
      boolean    fNextChar;  
      String     fStateName; 
      RBBIRuleTableElement(short a, int cc, int ns, int ps, boolean nc, String sn) {  
      fAction = a; 
      fCharClass = (short)cc; 
      fNextState = (short)ns; 
      fPushState = (short)ps; 
      fNextChar  = nc; 
      fStateName = sn; 
   } 
   } 
  
    static RBBIRuleTableElement[] gRuleParseStateTable = { 
       new RBBIRuleTableElement(doNOP, 0, 0,0,  true,   null )     //  0 
     , new RBBIRuleTableElement(doExprStart, 254, 21, 8, false,   "start")     //  1 
     , new RBBIRuleTableElement(doNOP, 132, 1,0,  true,   null )     //  2 
     , new RBBIRuleTableElement(doExprStart,'$',  80, 90, false,   null )     //  3 
     , new RBBIRuleTableElement(doNOP,'!',  11,0,  true,   null )     //  4 
     , new RBBIRuleTableElement(doNOP,';',  1,0,  true,   null )     //  5 
     , new RBBIRuleTableElement(doNOP, 252, 0,0,  false,   null )     //  6 
     , new RBBIRuleTableElement(doExprStart, 255, 21, 8, false,   null )     //  7 
     , new RBBIRuleTableElement(doEndOfRule,';',  1,0,  true,   "break-rule-end")     //  8 
     , new RBBIRuleTableElement(doNOP, 132, 8,0,  true,   null )     //  9 
     , new RBBIRuleTableElement(doRuleError, 255, 95,0,  false,   null )     //  10 
     , new RBBIRuleTableElement(doNOP,'!',  13,0,  true,   "rev-option")     //  11 
     , new RBBIRuleTableElement(doReverseDir, 255, 20, 8, false,   null )     //  12 
     , new RBBIRuleTableElement(doOptionStart, 130, 15,0,  true,   "option-scan1")     //  13 
     , new RBBIRuleTableElement(doRuleError, 255, 95,0,  false,   null )     //  14 
     , new RBBIRuleTableElement(doNOP, 129, 15,0,  true,   "option-scan2")     //  15 
     , new RBBIRuleTableElement(doOptionEnd, 255, 17,0,  false,   null )     //  16 
     , new RBBIRuleTableElement(doNOP,';',  1,0,  true,   "option-scan3")     //  17 
     , new RBBIRuleTableElement(doNOP, 132, 17,0,  true,   null )     //  18 
     , new RBBIRuleTableElement(doRuleError, 255, 95,0,  false,   null )     //  19 
     , new RBBIRuleTableElement(doExprStart, 255, 21, 8, false,   "reverse-rule")     //  20 
     , new RBBIRuleTableElement(doRuleChar, 254, 30,0,  true,   "term")     //  21 
     , new RBBIRuleTableElement(doNOP, 132, 21,0,  true,   null )     //  22 
     , new RBBIRuleTableElement(doRuleChar, 131, 30,0,  true,   null )     //  23 
     , new RBBIRuleTableElement(doNOP,'[',  86, 30, false,   null )     //  24 
     , new RBBIRuleTableElement(doLParen,'(',  21, 30, true,   null )     //  25 
     , new RBBIRuleTableElement(doNOP,'$',  80, 29, false,   null )     //  26 
     , new RBBIRuleTableElement(doDotAny,'.',  30,0,  true,   null )     //  27 
     , new RBBIRuleTableElement(doRuleError, 255, 95,0,  false,   null )     //  28 
     , new RBBIRuleTableElement(doCheckVarDef, 255, 30,0,  false,   "term-var-ref")     //  29 
     , new RBBIRuleTableElement(doNOP, 132, 30,0,  true,   "expr-mod")     //  30 
     , new RBBIRuleTableElement(doUnaryOpStar,'*',  35,0,  true,   null )     //  31 
     , new RBBIRuleTableElement(doUnaryOpPlus,'+',  35,0,  true,   null )     //  32 
     , new RBBIRuleTableElement(doUnaryOpQuestion,'?',  35,0,  true,   null )     //  33 
     , new RBBIRuleTableElement(doNOP, 255, 35,0,  false,   null )     //  34 
     , new RBBIRuleTableElement(doExprCatOperator, 254, 21,0,  false,   "expr-cont")     //  35 
     , new RBBIRuleTableElement(doNOP, 132, 35,0,  true,   null )     //  36 
     , new RBBIRuleTableElement(doExprCatOperator, 131, 21,0,  false,   null )     //  37 
     , new RBBIRuleTableElement(doExprCatOperator,'[',  21,0,  false,   null )     //  38 
     , new RBBIRuleTableElement(doExprCatOperator,'(',  21,0,  false,   null )     //  39 
     , new RBBIRuleTableElement(doExprCatOperator,'$',  21,0,  false,   null )     //  40 
     , new RBBIRuleTableElement(doExprCatOperator,'.',  21,0,  false,   null )     //  41 
     , new RBBIRuleTableElement(doExprCatOperator,'/',  47,0,  false,   null )     //  42 
     , new RBBIRuleTableElement(doExprCatOperator,'{',  59,0,  true,   null )     //  43 
     , new RBBIRuleTableElement(doExprOrOperator,'|',  21,0,  true,   null )     //  44 
     , new RBBIRuleTableElement(doExprRParen,')',  255,0,  true,   null )     //  45 
     , new RBBIRuleTableElement(doExprFinished, 255, 255,0,  false,   null )     //  46 
     , new RBBIRuleTableElement(doSlash,'/',  49,0,  true,   "look-ahead")     //  47 
     , new RBBIRuleTableElement(doNOP, 255, 95,0,  false,   null )     //  48 
     , new RBBIRuleTableElement(doExprCatOperator, 254, 21,0,  false,   "expr-cont-no-slash")     //  49 
     , new RBBIRuleTableElement(doNOP, 132, 35,0,  true,   null )     //  50 
     , new RBBIRuleTableElement(doExprCatOperator, 131, 21,0,  false,   null )     //  51 
     , new RBBIRuleTableElement(doExprCatOperator,'[',  21,0,  false,   null )     //  52 
     , new RBBIRuleTableElement(doExprCatOperator,'(',  21,0,  false,   null )     //  53 
     , new RBBIRuleTableElement(doExprCatOperator,'$',  21,0,  false,   null )     //  54 
     , new RBBIRuleTableElement(doExprCatOperator,'.',  21,0,  false,   null )     //  55 
     , new RBBIRuleTableElement(doExprOrOperator,'|',  21,0,  true,   null )     //  56 
     , new RBBIRuleTableElement(doExprRParen,')',  255,0,  true,   null )     //  57 
     , new RBBIRuleTableElement(doExprFinished, 255, 255,0,  false,   null )     //  58 
     , new RBBIRuleTableElement(doNOP, 132, 59,0,  true,   "tag-open")     //  59 
     , new RBBIRuleTableElement(doStartTagValue, 128, 62,0,  false,   null )     //  60 
     , new RBBIRuleTableElement(doTagExpectedError, 255, 95,0,  false,   null )     //  61 
     , new RBBIRuleTableElement(doNOP, 132, 66,0,  true,   "tag-value")     //  62 
     , new RBBIRuleTableElement(doNOP,'}',  66,0,  false,   null )     //  63 
     , new RBBIRuleTableElement(doTagDigit, 128, 62,0,  true,   null )     //  64 
     , new RBBIRuleTableElement(doTagExpectedError, 255, 95,0,  false,   null )     //  65 
     , new RBBIRuleTableElement(doNOP, 132, 66,0,  true,   "tag-close")     //  66 
     , new RBBIRuleTableElement(doTagValue,'}',  69,0,  true,   null )     //  67 
     , new RBBIRuleTableElement(doTagExpectedError, 255, 95,0,  false,   null )     //  68 
     , new RBBIRuleTableElement(doExprCatOperator, 254, 21,0,  false,   "expr-cont-no-tag")     //  69 
     , new RBBIRuleTableElement(doNOP, 132, 69,0,  true,   null )     //  70 
     , new RBBIRuleTableElement(doExprCatOperator, 131, 21,0,  false,   null )     //  71 
     , new RBBIRuleTableElement(doExprCatOperator,'[',  21,0,  false,   null )     //  72 
     , new RBBIRuleTableElement(doExprCatOperator,'(',  21,0,  false,   null )     //  73 
     , new RBBIRuleTableElement(doExprCatOperator,'$',  21,0,  false,   null )     //  74 
     , new RBBIRuleTableElement(doExprCatOperator,'.',  21,0,  false,   null )     //  75 
     , new RBBIRuleTableElement(doExprCatOperator,'/',  47,0,  false,   null )     //  76 
     , new RBBIRuleTableElement(doExprOrOperator,'|',  21,0,  true,   null )     //  77 
     , new RBBIRuleTableElement(doExprRParen,')',  255,0,  true,   null )     //  78 
     , new RBBIRuleTableElement(doExprFinished, 255, 255,0,  false,   null )     //  79 
     , new RBBIRuleTableElement(doStartVariableName,'$',  82,0,  true,   "scan-var-name")     //  80 
     , new RBBIRuleTableElement(doNOP, 255, 95,0,  false,   null )     //  81 
     , new RBBIRuleTableElement(doNOP, 130, 84,0,  true,   "scan-var-start")     //  82 
     , new RBBIRuleTableElement(doVariableNameExpectedErr, 255, 95,0,  false,   null )     //  83 
     , new RBBIRuleTableElement(doNOP, 129, 84,0,  true,   "scan-var-body")     //  84 
     , new RBBIRuleTableElement(doEndVariableName, 255, 255,0,  false,   null )     //  85 
     , new RBBIRuleTableElement(doScanUnicodeSet,'[',  255,0,  true,   "scan-unicode-set")     //  86 
     , new RBBIRuleTableElement(doScanUnicodeSet,'p',  255,0,  true,   null )     //  87 
     , new RBBIRuleTableElement(doScanUnicodeSet,'P',  255,0,  true,   null )     //  88 
     , new RBBIRuleTableElement(doNOP, 255, 95,0,  false,   null )     //  89 
     , new RBBIRuleTableElement(doNOP, 132, 90,0,  true,   "assign-or-rule")     //  90 
     , new RBBIRuleTableElement(doStartAssign,'=',  21, 93, true,   null )     //  91 
     , new RBBIRuleTableElement(doNOP, 255, 29, 8, false,   null )     //  92 
     , new RBBIRuleTableElement(doEndAssign,';',  1,0,  true,   "assign-end")     //  93 
     , new RBBIRuleTableElement(doRuleErrorAssignExpr, 255, 95,0,  false,   null )     //  94 
     , new RBBIRuleTableElement(doExit, 255, 95,0,  true,   "errorDeath")     //  95 
 };
} 
