//---------------------------------------------------------------------------------
//
// Generated Header File.  Do not edit by hand.
//    This file contains the state table for the ICU Regular Expression Pattern Parser
//    It is generated by the Perl script "regexcst.pl" from
//    the rule parser state definitions file "regexcst.txt".
//
//   Copyright (C) 2002 International Business Machines Corporation 
//   and others. All rights reserved.  
//
//---------------------------------------------------------------------------------
#ifndef RBBIRPT_H
#define RBBIRPT_H

U_NAMESPACE_BEGIN
//
// Character classes for regex pattern scanning.
//
    static const uint8_t kRuleSet_digit_char = 128;
    static const uint8_t kRuleSet_white_space = 129;
    static const uint8_t kRuleSet_rule_char = 130;


enum Regex_PatternParseAction {
    doCloseParen,
    doProperty,
    doBeginMatchMode,
    doOrOperator,
    doOpenCaptureParen,
    doBadOpenParenType,
    doRuleError,
    doIntevalLowerDigit,
    doBackslashs,
    doOctal,
    doNGOpt,
    doBackslashw,
    doPossesiveStar,
    doMismatchedParenErr,
    doOpenLookBehind,
    doBackslashz,
    doIntervalError,
    doStar,
    doCaret,
    doEnterQuoteMode,
    doPossesivePlus,
    doNGStar,
    doMatchMode,
    doIntervalUpperDigit,
    doOpenLookAheadNeg,
    doPlus,
    doOpenNonCaptureParen,
    doBackslashA,
    doBackslashB,
    doNGPlus,
    doSetMatchMode,
    doPatFinish,
    doBackslashD,
    doPossesiveOpt,
    doEscapeError,
    doBackslashG,
    doSuppressComments,
    doMatchModeParen,
    doOpt,
    doInterval,
    doLiteralChar,
    doPossesiveInterval,
    doIntervalInit,
    doOpenAtomicParen,
    doBackslashS,
    doOpenLookAhead,
    doBackRef,
    doDollar,
    doDotAny,
    doBackslashW,
    doBackslashX,
    doScanUnicodeSet,
    doBackslashZ,
    doPerlInline,
    doNOP,
    doConditionalExpr,
    doExit,
    doNGInterval,
    doPatStart,
    doBackslashb,
    doBackslashd,
    doIntervalSame,
    doOpenLookBehindNeg,
    rbbiLastAction};

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

static const struct RegexTableEl gRuleParseStateTable[] = {
    {doNOP, 0, 0, 0, TRUE}
    , {doPatStart, 255, 2,0,  FALSE}     //  1      start
    , {doLiteralChar, 254, 14,0,  TRUE}     //  2      term
    , {doLiteralChar, 130, 14,0,  TRUE}     //  3 
    , {doScanUnicodeSet, 91 /* [ */, 14,0,  TRUE}     //  4 
    , {doNOP, 40 /* ( */, 27,0,  TRUE}     //  5 
    , {doDotAny, 46 /* . */, 14,0,  TRUE}     //  6 
    , {doCaret, 94 /* ^ */, 2,0,  TRUE}     //  7 
    , {doDollar, 36 /* $ */, 2,0,  TRUE}     //  8 
    , {doNOP, 92 /* \ */, 79,0,  TRUE}     //  9 
    , {doOrOperator, 124 /* | */, 2,0,  TRUE}     //  10 
    , {doCloseParen, 41 /* ) */, 255,0,  TRUE}     //  11 
    , {doPatFinish, 253, 2,0,  FALSE}     //  12 
    , {doRuleError, 255, 100,0,  FALSE}     //  13 
    , {doNOP, 42 /* * */, 57,0,  TRUE}     //  14      expr-quant
    , {doNOP, 43 /* + */, 60,0,  TRUE}     //  15 
    , {doNOP, 63 /* ? */, 63,0,  TRUE}     //  16 
    , {doIntervalInit, 123 /* { */, 66,0,  TRUE}     //  17 
    , {doNOP, 40 /* ( */, 23,0,  TRUE}     //  18 
    , {doNOP, 255, 20,0,  FALSE}     //  19 
    , {doOrOperator, 124 /* | */, 2,0,  TRUE}     //  20      expr-cont
    , {doCloseParen, 41 /* ) */, 255,0,  TRUE}     //  21 
    , {doNOP, 255, 2,0,  FALSE}     //  22 
    , {doSuppressComments, 63 /* ? */, 25,0,  TRUE}     //  23      open-paren-quant
    , {doNOP, 255, 27,0,  FALSE}     //  24 
    , {doNOP, 35 /* # */, 46, 14, TRUE}     //  25      open-paren-quant2
    , {doNOP, 255, 29,0,  FALSE}     //  26 
    , {doSuppressComments, 63 /* ? */, 29,0,  TRUE}     //  27      open-paren
    , {doOpenCaptureParen, 255, 2, 14, FALSE}     //  28 
    , {doOpenNonCaptureParen, 58 /* : */, 2, 14, TRUE}     //  29      open-paren-extended
    , {doOpenAtomicParen, 62 /* > */, 2, 14, TRUE}     //  30 
    , {doOpenLookAhead, 61 /* = */, 2, 20, TRUE}     //  31 
    , {doOpenLookAheadNeg, 33 /* ! */, 2, 20, TRUE}     //  32 
    , {doNOP, 60 /* < */, 43,0,  TRUE}     //  33 
    , {doNOP, 35 /* # */, 46, 2, TRUE}     //  34 
    , {doBeginMatchMode, 105 /* i */, 49,0,  FALSE}     //  35 
    , {doBeginMatchMode, 109 /* m */, 49,0,  FALSE}     //  36 
    , {doBeginMatchMode, 115 /* s */, 49,0,  FALSE}     //  37 
    , {doBeginMatchMode, 120 /* x */, 49,0,  FALSE}     //  38 
    , {doBeginMatchMode, 45 /* - */, 49,0,  FALSE}     //  39 
    , {doConditionalExpr, 40 /* ( */, 100,0,  TRUE}     //  40 
    , {doPerlInline, 123 /* { */, 100,0,  TRUE}     //  41 
    , {doBadOpenParenType, 255, 100,0,  FALSE}     //  42 
    , {doOpenLookBehind, 61 /* = */, 2, 20, TRUE}     //  43      open-paren-lookbehind
    , {doOpenLookBehindNeg, 33 /* ! */, 2, 20, TRUE}     //  44 
    , {doBadOpenParenType, 255, 100,0,  FALSE}     //  45 
    , {doNOP, 41 /* ) */, 255,0,  TRUE}     //  46      paren-comment
    , {doMismatchedParenErr, 253, 100,0,  FALSE}     //  47 
    , {doNOP, 255, 46,0,  TRUE}     //  48 
    , {doMatchMode, 105 /* i */, 49,0,  TRUE}     //  49      paren-flag
    , {doMatchMode, 109 /* m */, 49,0,  TRUE}     //  50 
    , {doMatchMode, 115 /* s */, 49,0,  TRUE}     //  51 
    , {doMatchMode, 120 /* x */, 49,0,  TRUE}     //  52 
    , {doMatchMode, 45 /* - */, 49,0,  TRUE}     //  53 
    , {doSetMatchMode, 41 /* ) */, 2,0,  TRUE}     //  54 
    , {doMatchModeParen, 58 /* : */, 2, 14, TRUE}     //  55 
    , {doNOP, 255, 100,0,  FALSE}     //  56 
    , {doNGStar, 63 /* ? */, 20,0,  TRUE}     //  57      quant-star
    , {doPossesiveStar, 43 /* + */, 20,0,  TRUE}     //  58 
    , {doStar, 255, 20,0,  FALSE}     //  59 
    , {doNGPlus, 63 /* ? */, 20,0,  TRUE}     //  60      quant-plus
    , {doPossesivePlus, 43 /* + */, 20,0,  TRUE}     //  61 
    , {doPlus, 255, 20,0,  FALSE}     //  62 
    , {doNGOpt, 63 /* ? */, 20,0,  TRUE}     //  63      quant-opt
    , {doPossesiveOpt, 43 /* + */, 20,0,  TRUE}     //  64 
    , {doOpt, 255, 20,0,  FALSE}     //  65 
    , {doNOP, 129, 66,0,  TRUE}     //  66      interval-open
    , {doNOP, 128, 69,0,  FALSE}     //  67 
    , {doIntervalError, 255, 100,0,  FALSE}     //  68 
    , {doIntevalLowerDigit, 128, 69,0,  TRUE}     //  69      interval-lower
    , {doNOP, 44 /* , */, 73,0,  TRUE}     //  70 
    , {doIntervalSame, 125 /* } */, 76,0,  TRUE}     //  71 
    , {doIntervalError, 255, 100,0,  FALSE}     //  72 
    , {doIntervalUpperDigit, 128, 73,0,  TRUE}     //  73      interval-upper
    , {doNOP, 125 /* } */, 76,0,  TRUE}     //  74 
    , {doIntervalError, 255, 100,0,  FALSE}     //  75 
    , {doNGInterval, 63 /* ? */, 20,0,  TRUE}     //  76      interval-type
    , {doPossesiveInterval, 43 /* + */, 20,0,  TRUE}     //  77 
    , {doInterval, 255, 20,0,  FALSE}     //  78 
    , {doBackslashA, 65 /* A */, 2,0,  TRUE}     //  79      backslash
    , {doBackslashB, 66 /* B */, 2,0,  TRUE}     //  80 
    , {doBackslashb, 98 /* b */, 2,0,  TRUE}     //  81 
    , {doBackslashd, 100 /* d */, 14,0,  TRUE}     //  82 
    , {doBackslashD, 68 /* D */, 14,0,  TRUE}     //  83 
    , {doBackslashG, 71 /* G */, 2,0,  TRUE}     //  84 
    , {doProperty, 78 /* N */, 14,0,  FALSE}     //  85 
    , {doProperty, 112 /* p */, 14,0,  FALSE}     //  86 
    , {doProperty, 80 /* P */, 14,0,  FALSE}     //  87 
    , {doEnterQuoteMode, 81 /* Q */, 2,0,  TRUE}     //  88 
    , {doBackslashS, 83 /* S */, 14,0,  TRUE}     //  89 
    , {doBackslashs, 115 /* s */, 14,0,  TRUE}     //  90 
    , {doBackslashW, 87 /* W */, 14,0,  TRUE}     //  91 
    , {doBackslashw, 119 /* w */, 14,0,  TRUE}     //  92 
    , {doBackslashX, 88 /* X */, 14,0,  TRUE}     //  93 
    , {doBackslashZ, 90 /* Z */, 2,0,  TRUE}     //  94 
    , {doBackslashz, 122 /* z */, 2,0,  TRUE}     //  95 
    , {doOctal, 48 /* 0 */, 14,0,  TRUE}     //  96 
    , {doBackRef, 128, 14,0,  TRUE}     //  97 
    , {doEscapeError, 253, 100,0,  FALSE}     //  98 
    , {doLiteralChar, 255, 14,0,  TRUE}     //  99 
    , {doExit, 255, 100,0,  TRUE}     //  100      errorDeath
 };
static const char * const RegexStateNames[] = {    0,
     "start",
     "term",
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
     "expr-quant",
    0,
    0,
    0,
    0,
    0,
     "expr-cont",
    0,
    0,
     "open-paren-quant",
    0,
     "open-paren-quant2",
    0,
     "open-paren",
    0,
     "open-paren-extended",
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
     "open-paren-lookbehind",
    0,
    0,
     "paren-comment",
    0,
    0,
     "paren-flag",
    0,
    0,
    0,
    0,
    0,
    0,
    0,
     "quant-star",
    0,
    0,
     "quant-plus",
    0,
    0,
     "quant-opt",
    0,
    0,
     "interval-open",
    0,
    0,
     "interval-lower",
    0,
    0,
    0,
     "interval-upper",
    0,
    0,
     "interval-type",
    0,
    0,
     "backslash",
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
     "errorDeath",
    0};

U_NAMESPACE_END
#endif
