//---------------------------------------------------------------------------------
//
// Generated Header 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".
//
//   Copyright (C) 2002-2016 International Business Machines Corporation 
//   and others. All rights reserved.  
//
//---------------------------------------------------------------------------------
#ifndef RBBIRPT_H
#define RBBIRPT_H

#include "unicode/utypes.h"

U_NAMESPACE_BEGIN
//
// Character classes for RBBI rule scanning.
//
    static const uint8_t kRuleSet_digit_char = 128;
    static const uint8_t kRuleSet_name_char = 129;
    static const uint8_t kRuleSet_name_start_char = 130;
    static const uint8_t kRuleSet_rule_char = 131;
    static const uint8_t kRuleSet_white_space = 132;


enum RBBI_RuleParseAction {
    doCheckVarDef,
    doDotAny,
    doEndAssign,
    doEndOfRule,
    doEndVariableName,
    doExit,
    doExprCatOperator,
    doExprFinished,
    doExprOrOperator,
    doExprRParen,
    doExprStart,
    doLParen,
    doNOP,
    doNoChain,
    doOptionEnd,
    doOptionStart,
    doReverseDir,
    doRuleChar,
    doRuleError,
    doRuleErrorAssignExpr,
    doScanUnicodeSet,
    doSlash,
    doStartAssign,
    doStartTagValue,
    doStartVariableName,
    doTagDigit,
    doTagExpectedError,
    doTagValue,
    doUnaryOpPlus,
    doUnaryOpQuestion,
    doUnaryOpStar,
    doVariableNameExpectedErr,
    rbbiLastAction};

//-------------------------------------------------------------------------------
//
//  RBBIRuleTableEl    represents the structure of a row in the transition table
//                     for the rule parser state machine.
//-------------------------------------------------------------------------------
struct RBBIRuleTableEl {
    RBBI_RuleParseAction          fAction;
    uint8_t                       fCharClass;       // 0-127:    an individual ASCII character
                                                    // 128-255:  character class index
    uint8_t                       fNextState;       // 0-250:    normal next-stat numbers
                                                    // 255:      pop next-state from stack.
    uint8_t                       fPushState;
    UBool                         fNextChar;
};

static const struct RBBIRuleTableEl gRuleParseStateTable[] = {
    {doNOP, 0, 0, 0, TRUE}
    , {doExprStart, 254, 29, 9, FALSE}     //  1      start
    , {doNOP, 132, 1,0,  TRUE}     //  2 
    , {doNoChain, 94 /* ^ */, 12, 9, TRUE}     //  3 
    , {doExprStart, 36 /* $ */, 88, 98, FALSE}     //  4 
    , {doNOP, 33 /* ! */, 19,0,  TRUE}     //  5 
    , {doNOP, 59 /* ; */, 1,0,  TRUE}     //  6 
    , {doNOP, 252, 0,0,  FALSE}     //  7 
    , {doExprStart, 255, 29, 9, FALSE}     //  8 
    , {doEndOfRule, 59 /* ; */, 1,0,  TRUE}     //  9      break-rule-end
    , {doNOP, 132, 9,0,  TRUE}     //  10 
    , {doRuleError, 255, 103,0,  FALSE}     //  11 
    , {doExprStart, 254, 29,0,  FALSE}     //  12      start-after-caret
    , {doNOP, 132, 12,0,  TRUE}     //  13 
    , {doRuleError, 94 /* ^ */, 103,0,  FALSE}     //  14 
    , {doExprStart, 36 /* $ */, 88, 37, FALSE}     //  15 
    , {doRuleError, 59 /* ; */, 103,0,  FALSE}     //  16 
    , {doRuleError, 252, 103,0,  FALSE}     //  17 
    , {doExprStart, 255, 29,0,  FALSE}     //  18 
    , {doNOP, 33 /* ! */, 21,0,  TRUE}     //  19      rev-option
    , {doReverseDir, 255, 28, 9, FALSE}     //  20 
    , {doOptionStart, 130, 23,0,  TRUE}     //  21      option-scan1
    , {doRuleError, 255, 103,0,  FALSE}     //  22 
    , {doNOP, 129, 23,0,  TRUE}     //  23      option-scan2
    , {doOptionEnd, 255, 25,0,  FALSE}     //  24 
    , {doNOP, 59 /* ; */, 1,0,  TRUE}     //  25      option-scan3
    , {doNOP, 132, 25,0,  TRUE}     //  26 
    , {doRuleError, 255, 103,0,  FALSE}     //  27 
    , {doExprStart, 255, 29, 9, FALSE}     //  28      reverse-rule
    , {doRuleChar, 254, 38,0,  TRUE}     //  29      term
    , {doNOP, 132, 29,0,  TRUE}     //  30 
    , {doRuleChar, 131, 38,0,  TRUE}     //  31 
    , {doNOP, 91 /* [ */, 94, 38, FALSE}     //  32 
    , {doLParen, 40 /* ( */, 29, 38, TRUE}     //  33 
    , {doNOP, 36 /* $ */, 88, 37, FALSE}     //  34 
    , {doDotAny, 46 /* . */, 38,0,  TRUE}     //  35 
    , {doRuleError, 255, 103,0,  FALSE}     //  36 
    , {doCheckVarDef, 255, 38,0,  FALSE}     //  37      term-var-ref
    , {doNOP, 132, 38,0,  TRUE}     //  38      expr-mod
    , {doUnaryOpStar, 42 /* * */, 43,0,  TRUE}     //  39 
    , {doUnaryOpPlus, 43 /* + */, 43,0,  TRUE}     //  40 
    , {doUnaryOpQuestion, 63 /* ? */, 43,0,  TRUE}     //  41 
    , {doNOP, 255, 43,0,  FALSE}     //  42 
    , {doExprCatOperator, 254, 29,0,  FALSE}     //  43      expr-cont
    , {doNOP, 132, 43,0,  TRUE}     //  44 
    , {doExprCatOperator, 131, 29,0,  FALSE}     //  45 
    , {doExprCatOperator, 91 /* [ */, 29,0,  FALSE}     //  46 
    , {doExprCatOperator, 40 /* ( */, 29,0,  FALSE}     //  47 
    , {doExprCatOperator, 36 /* $ */, 29,0,  FALSE}     //  48 
    , {doExprCatOperator, 46 /* . */, 29,0,  FALSE}     //  49 
    , {doExprCatOperator, 47 /* / */, 55,0,  FALSE}     //  50 
    , {doExprCatOperator, 123 /* { */, 67,0,  TRUE}     //  51 
    , {doExprOrOperator, 124 /* | */, 29,0,  TRUE}     //  52 
    , {doExprRParen, 41 /* ) */, 255,0,  TRUE}     //  53 
    , {doExprFinished, 255, 255,0,  FALSE}     //  54 
    , {doSlash, 47 /* / */, 57,0,  TRUE}     //  55      look-ahead
    , {doNOP, 255, 103,0,  FALSE}     //  56 
    , {doExprCatOperator, 254, 29,0,  FALSE}     //  57      expr-cont-no-slash
    , {doNOP, 132, 43,0,  TRUE}     //  58 
    , {doExprCatOperator, 131, 29,0,  FALSE}     //  59 
    , {doExprCatOperator, 91 /* [ */, 29,0,  FALSE}     //  60 
    , {doExprCatOperator, 40 /* ( */, 29,0,  FALSE}     //  61 
    , {doExprCatOperator, 36 /* $ */, 29,0,  FALSE}     //  62 
    , {doExprCatOperator, 46 /* . */, 29,0,  FALSE}     //  63 
    , {doExprOrOperator, 124 /* | */, 29,0,  TRUE}     //  64 
    , {doExprRParen, 41 /* ) */, 255,0,  TRUE}     //  65 
    , {doExprFinished, 255, 255,0,  FALSE}     //  66 
    , {doNOP, 132, 67,0,  TRUE}     //  67      tag-open
    , {doStartTagValue, 128, 70,0,  FALSE}     //  68 
    , {doTagExpectedError, 255, 103,0,  FALSE}     //  69 
    , {doNOP, 132, 74,0,  TRUE}     //  70      tag-value
    , {doNOP, 125 /* } */, 74,0,  FALSE}     //  71 
    , {doTagDigit, 128, 70,0,  TRUE}     //  72 
    , {doTagExpectedError, 255, 103,0,  FALSE}     //  73 
    , {doNOP, 132, 74,0,  TRUE}     //  74      tag-close
    , {doTagValue, 125 /* } */, 77,0,  TRUE}     //  75 
    , {doTagExpectedError, 255, 103,0,  FALSE}     //  76 
    , {doExprCatOperator, 254, 29,0,  FALSE}     //  77      expr-cont-no-tag
    , {doNOP, 132, 77,0,  TRUE}     //  78 
    , {doExprCatOperator, 131, 29,0,  FALSE}     //  79 
    , {doExprCatOperator, 91 /* [ */, 29,0,  FALSE}     //  80 
    , {doExprCatOperator, 40 /* ( */, 29,0,  FALSE}     //  81 
    , {doExprCatOperator, 36 /* $ */, 29,0,  FALSE}     //  82 
    , {doExprCatOperator, 46 /* . */, 29,0,  FALSE}     //  83 
    , {doExprCatOperator, 47 /* / */, 55,0,  FALSE}     //  84 
    , {doExprOrOperator, 124 /* | */, 29,0,  TRUE}     //  85 
    , {doExprRParen, 41 /* ) */, 255,0,  TRUE}     //  86 
    , {doExprFinished, 255, 255,0,  FALSE}     //  87 
    , {doStartVariableName, 36 /* $ */, 90,0,  TRUE}     //  88      scan-var-name
    , {doNOP, 255, 103,0,  FALSE}     //  89 
    , {doNOP, 130, 92,0,  TRUE}     //  90      scan-var-start
    , {doVariableNameExpectedErr, 255, 103,0,  FALSE}     //  91 
    , {doNOP, 129, 92,0,  TRUE}     //  92      scan-var-body
    , {doEndVariableName, 255, 255,0,  FALSE}     //  93 
    , {doScanUnicodeSet, 91 /* [ */, 255,0,  TRUE}     //  94      scan-unicode-set
    , {doScanUnicodeSet, 112 /* p */, 255,0,  TRUE}     //  95 
    , {doScanUnicodeSet, 80 /* P */, 255,0,  TRUE}     //  96 
    , {doNOP, 255, 103,0,  FALSE}     //  97 
    , {doNOP, 132, 98,0,  TRUE}     //  98      assign-or-rule
    , {doStartAssign, 61 /* = */, 29, 101, TRUE}     //  99 
    , {doNOP, 255, 37, 9, FALSE}     //  100 
    , {doEndAssign, 59 /* ; */, 1,0,  TRUE}     //  101      assign-end
    , {doRuleErrorAssignExpr, 255, 103,0,  FALSE}     //  102 
    , {doExit, 255, 103,0,  TRUE}     //  103      errorDeath
 };
#ifdef RBBI_DEBUG
static const char * const RBBIRuleStateNames[] = {    0,
     "start",
    0,
    0,
    0,
    0,
    0,
    0,
    0,
     "break-rule-end",
    0,
    0,
     "start-after-caret",
    0,
    0,
    0,
    0,
    0,
    0,
     "rev-option",
    0,
     "option-scan1",
    0,
     "option-scan2",
    0,
     "option-scan3",
    0,
    0,
     "reverse-rule",
     "term",
    0,
    0,
    0,
    0,
    0,
    0,
    0,
     "term-var-ref",
     "expr-mod",
    0,
    0,
    0,
    0,
     "expr-cont",
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
     "look-ahead",
    0,
     "expr-cont-no-slash",
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
     "tag-open",
    0,
    0,
     "tag-value",
    0,
    0,
    0,
     "tag-close",
    0,
    0,
     "expr-cont-no-tag",
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
     "scan-var-name",
    0,
     "scan-var-start",
    0,
     "scan-var-body",
    0,
     "scan-unicode-set",
    0,
    0,
    0,
     "assign-or-rule",
    0,
    0,
     "assign-end",
    0,
     "errorDeath",
    0};
#endif

U_NAMESPACE_END
#endif
