Home | History | Annotate | Download | only in common
      1 //  2016 and later: Unicode, Inc. and others.
      2 // License & terms of use: http://www.unicode.org/copyright.html
      3 //---------------------------------------------------------------------------------
      4 //
      5 // Generated Header File.  Do not edit by hand.
      6 //    This file contains the state table for the ICU Rule Based Break Iterator
      7 //    rule parser.
      8 //    It is generated by the Perl script "rbbicst.pl" from
      9 //    the rule parser state definitions file "rbbirpt.txt".
     10 //
     11 //   Copyright (C) 2002-2016 International Business Machines Corporation
     12 //   and others. All rights reserved.
     13 //
     14 //---------------------------------------------------------------------------------
     15 #ifndef RBBIRPT_H
     16 #define RBBIRPT_H
     17 
     18 #include "unicode/utypes.h"
     19 
     20 U_NAMESPACE_BEGIN
     21 //
     22 // Character classes for RBBI rule scanning.
     23 //
     24     static const uint8_t kRuleSet_digit_char = 128;
     25     static const uint8_t kRuleSet_name_char = 129;
     26     static const uint8_t kRuleSet_name_start_char = 130;
     27     static const uint8_t kRuleSet_rule_char = 131;
     28     static const uint8_t kRuleSet_white_space = 132;
     29 
     30 
     31 enum RBBI_RuleParseAction {
     32     doCheckVarDef,
     33     doDotAny,
     34     doEndAssign,
     35     doEndOfRule,
     36     doEndVariableName,
     37     doExit,
     38     doExprCatOperator,
     39     doExprFinished,
     40     doExprOrOperator,
     41     doExprRParen,
     42     doExprStart,
     43     doLParen,
     44     doNOP,
     45     doNoChain,
     46     doOptionEnd,
     47     doOptionStart,
     48     doReverseDir,
     49     doRuleChar,
     50     doRuleError,
     51     doRuleErrorAssignExpr,
     52     doScanUnicodeSet,
     53     doSlash,
     54     doStartAssign,
     55     doStartTagValue,
     56     doStartVariableName,
     57     doTagDigit,
     58     doTagExpectedError,
     59     doTagValue,
     60     doUnaryOpPlus,
     61     doUnaryOpQuestion,
     62     doUnaryOpStar,
     63     doVariableNameExpectedErr,
     64     rbbiLastAction};
     65 
     66 //-------------------------------------------------------------------------------
     67 //
     68 //  RBBIRuleTableEl    represents the structure of a row in the transition table
     69 //                     for the rule parser state machine.
     70 //-------------------------------------------------------------------------------
     71 struct RBBIRuleTableEl {
     72     RBBI_RuleParseAction          fAction;
     73     uint8_t                       fCharClass;       // 0-127:    an individual ASCII character
     74                                                     // 128-255:  character class index
     75     uint8_t                       fNextState;       // 0-250:    normal next-stat numbers
     76                                                     // 255:      pop next-state from stack.
     77     uint8_t                       fPushState;
     78     UBool                         fNextChar;
     79 };
     80 
     81 static const struct RBBIRuleTableEl gRuleParseStateTable[] = {
     82     {doNOP, 0, 0, 0, TRUE}
     83     , {doExprStart, 254, 29, 9, FALSE}     //  1      start
     84     , {doNOP, 132, 1,0,  TRUE}     //  2
     85     , {doNoChain, 94 /* ^ */, 12, 9, TRUE}     //  3
     86     , {doExprStart, 36 /* $ */, 88, 98, FALSE}     //  4
     87     , {doNOP, 33 /* ! */, 19,0,  TRUE}     //  5
     88     , {doNOP, 59 /* ; */, 1,0,  TRUE}     //  6
     89     , {doNOP, 252, 0,0,  FALSE}     //  7
     90     , {doExprStart, 255, 29, 9, FALSE}     //  8
     91     , {doEndOfRule, 59 /* ; */, 1,0,  TRUE}     //  9      break-rule-end
     92     , {doNOP, 132, 9,0,  TRUE}     //  10
     93     , {doRuleError, 255, 103,0,  FALSE}     //  11
     94     , {doExprStart, 254, 29,0,  FALSE}     //  12      start-after-caret
     95     , {doNOP, 132, 12,0,  TRUE}     //  13
     96     , {doRuleError, 94 /* ^ */, 103,0,  FALSE}     //  14
     97     , {doExprStart, 36 /* $ */, 88, 37, FALSE}     //  15
     98     , {doRuleError, 59 /* ; */, 103,0,  FALSE}     //  16
     99     , {doRuleError, 252, 103,0,  FALSE}     //  17
    100     , {doExprStart, 255, 29,0,  FALSE}     //  18
    101     , {doNOP, 33 /* ! */, 21,0,  TRUE}     //  19      rev-option
    102     , {doReverseDir, 255, 28, 9, FALSE}     //  20
    103     , {doOptionStart, 130, 23,0,  TRUE}     //  21      option-scan1
    104     , {doRuleError, 255, 103,0,  FALSE}     //  22
    105     , {doNOP, 129, 23,0,  TRUE}     //  23      option-scan2
    106     , {doOptionEnd, 255, 25,0,  FALSE}     //  24
    107     , {doNOP, 59 /* ; */, 1,0,  TRUE}     //  25      option-scan3
    108     , {doNOP, 132, 25,0,  TRUE}     //  26
    109     , {doRuleError, 255, 103,0,  FALSE}     //  27
    110     , {doExprStart, 255, 29, 9, FALSE}     //  28      reverse-rule
    111     , {doRuleChar, 254, 38,0,  TRUE}     //  29      term
    112     , {doNOP, 132, 29,0,  TRUE}     //  30
    113     , {doRuleChar, 131, 38,0,  TRUE}     //  31
    114     , {doNOP, 91 /* [ */, 94, 38, FALSE}     //  32
    115     , {doLParen, 40 /* ( */, 29, 38, TRUE}     //  33
    116     , {doNOP, 36 /* $ */, 88, 37, FALSE}     //  34
    117     , {doDotAny, 46 /* . */, 38,0,  TRUE}     //  35
    118     , {doRuleError, 255, 103,0,  FALSE}     //  36
    119     , {doCheckVarDef, 255, 38,0,  FALSE}     //  37      term-var-ref
    120     , {doNOP, 132, 38,0,  TRUE}     //  38      expr-mod
    121     , {doUnaryOpStar, 42 /* * */, 43,0,  TRUE}     //  39
    122     , {doUnaryOpPlus, 43 /* + */, 43,0,  TRUE}     //  40
    123     , {doUnaryOpQuestion, 63 /* ? */, 43,0,  TRUE}     //  41
    124     , {doNOP, 255, 43,0,  FALSE}     //  42
    125     , {doExprCatOperator, 254, 29,0,  FALSE}     //  43      expr-cont
    126     , {doNOP, 132, 43,0,  TRUE}     //  44
    127     , {doExprCatOperator, 131, 29,0,  FALSE}     //  45
    128     , {doExprCatOperator, 91 /* [ */, 29,0,  FALSE}     //  46
    129     , {doExprCatOperator, 40 /* ( */, 29,0,  FALSE}     //  47
    130     , {doExprCatOperator, 36 /* $ */, 29,0,  FALSE}     //  48
    131     , {doExprCatOperator, 46 /* . */, 29,0,  FALSE}     //  49
    132     , {doExprCatOperator, 47 /* / */, 55,0,  FALSE}     //  50
    133     , {doExprCatOperator, 123 /* { */, 67,0,  TRUE}     //  51
    134     , {doExprOrOperator, 124 /* | */, 29,0,  TRUE}     //  52
    135     , {doExprRParen, 41 /* ) */, 255,0,  TRUE}     //  53
    136     , {doExprFinished, 255, 255,0,  FALSE}     //  54
    137     , {doSlash, 47 /* / */, 57,0,  TRUE}     //  55      look-ahead
    138     , {doNOP, 255, 103,0,  FALSE}     //  56
    139     , {doExprCatOperator, 254, 29,0,  FALSE}     //  57      expr-cont-no-slash
    140     , {doNOP, 132, 43,0,  TRUE}     //  58
    141     , {doExprCatOperator, 131, 29,0,  FALSE}     //  59
    142     , {doExprCatOperator, 91 /* [ */, 29,0,  FALSE}     //  60
    143     , {doExprCatOperator, 40 /* ( */, 29,0,  FALSE}     //  61
    144     , {doExprCatOperator, 36 /* $ */, 29,0,  FALSE}     //  62
    145     , {doExprCatOperator, 46 /* . */, 29,0,  FALSE}     //  63
    146     , {doExprOrOperator, 124 /* | */, 29,0,  TRUE}     //  64
    147     , {doExprRParen, 41 /* ) */, 255,0,  TRUE}     //  65
    148     , {doExprFinished, 255, 255,0,  FALSE}     //  66
    149     , {doNOP, 132, 67,0,  TRUE}     //  67      tag-open
    150     , {doStartTagValue, 128, 70,0,  FALSE}     //  68
    151     , {doTagExpectedError, 255, 103,0,  FALSE}     //  69
    152     , {doNOP, 132, 74,0,  TRUE}     //  70      tag-value
    153     , {doNOP, 125 /* } */, 74,0,  FALSE}     //  71
    154     , {doTagDigit, 128, 70,0,  TRUE}     //  72
    155     , {doTagExpectedError, 255, 103,0,  FALSE}     //  73
    156     , {doNOP, 132, 74,0,  TRUE}     //  74      tag-close
    157     , {doTagValue, 125 /* } */, 77,0,  TRUE}     //  75
    158     , {doTagExpectedError, 255, 103,0,  FALSE}     //  76
    159     , {doExprCatOperator, 254, 29,0,  FALSE}     //  77      expr-cont-no-tag
    160     , {doNOP, 132, 77,0,  TRUE}     //  78
    161     , {doExprCatOperator, 131, 29,0,  FALSE}     //  79
    162     , {doExprCatOperator, 91 /* [ */, 29,0,  FALSE}     //  80
    163     , {doExprCatOperator, 40 /* ( */, 29,0,  FALSE}     //  81
    164     , {doExprCatOperator, 36 /* $ */, 29,0,  FALSE}     //  82
    165     , {doExprCatOperator, 46 /* . */, 29,0,  FALSE}     //  83
    166     , {doExprCatOperator, 47 /* / */, 55,0,  FALSE}     //  84
    167     , {doExprOrOperator, 124 /* | */, 29,0,  TRUE}     //  85
    168     , {doExprRParen, 41 /* ) */, 255,0,  TRUE}     //  86
    169     , {doExprFinished, 255, 255,0,  FALSE}     //  87
    170     , {doStartVariableName, 36 /* $ */, 90,0,  TRUE}     //  88      scan-var-name
    171     , {doNOP, 255, 103,0,  FALSE}     //  89
    172     , {doNOP, 130, 92,0,  TRUE}     //  90      scan-var-start
    173     , {doVariableNameExpectedErr, 255, 103,0,  FALSE}     //  91
    174     , {doNOP, 129, 92,0,  TRUE}     //  92      scan-var-body
    175     , {doEndVariableName, 255, 255,0,  FALSE}     //  93
    176     , {doScanUnicodeSet, 91 /* [ */, 255,0,  TRUE}     //  94      scan-unicode-set
    177     , {doScanUnicodeSet, 112 /* p */, 255,0,  TRUE}     //  95
    178     , {doScanUnicodeSet, 80 /* P */, 255,0,  TRUE}     //  96
    179     , {doNOP, 255, 103,0,  FALSE}     //  97
    180     , {doNOP, 132, 98,0,  TRUE}     //  98      assign-or-rule
    181     , {doStartAssign, 61 /* = */, 29, 101, TRUE}     //  99
    182     , {doNOP, 255, 37, 9, FALSE}     //  100
    183     , {doEndAssign, 59 /* ; */, 1,0,  TRUE}     //  101      assign-end
    184     , {doRuleErrorAssignExpr, 255, 103,0,  FALSE}     //  102
    185     , {doExit, 255, 103,0,  TRUE}     //  103      errorDeath
    186  };
    187 #ifdef RBBI_DEBUG
    188 static const char * const RBBIRuleStateNames[] = {    0,
    189      "start",
    190     0,
    191     0,
    192     0,
    193     0,
    194     0,
    195     0,
    196     0,
    197      "break-rule-end",
    198     0,
    199     0,
    200      "start-after-caret",
    201     0,
    202     0,
    203     0,
    204     0,
    205     0,
    206     0,
    207      "rev-option",
    208     0,
    209      "option-scan1",
    210     0,
    211      "option-scan2",
    212     0,
    213      "option-scan3",
    214     0,
    215     0,
    216      "reverse-rule",
    217      "term",
    218     0,
    219     0,
    220     0,
    221     0,
    222     0,
    223     0,
    224     0,
    225      "term-var-ref",
    226      "expr-mod",
    227     0,
    228     0,
    229     0,
    230     0,
    231      "expr-cont",
    232     0,
    233     0,
    234     0,
    235     0,
    236     0,
    237     0,
    238     0,
    239     0,
    240     0,
    241     0,
    242     0,
    243      "look-ahead",
    244     0,
    245      "expr-cont-no-slash",
    246     0,
    247     0,
    248     0,
    249     0,
    250     0,
    251     0,
    252     0,
    253     0,
    254     0,
    255      "tag-open",
    256     0,
    257     0,
    258      "tag-value",
    259     0,
    260     0,
    261     0,
    262      "tag-close",
    263     0,
    264     0,
    265      "expr-cont-no-tag",
    266     0,
    267     0,
    268     0,
    269     0,
    270     0,
    271     0,
    272     0,
    273     0,
    274     0,
    275     0,
    276      "scan-var-name",
    277     0,
    278      "scan-var-start",
    279     0,
    280      "scan-var-body",
    281     0,
    282      "scan-unicode-set",
    283     0,
    284     0,
    285     0,
    286      "assign-or-rule",
    287     0,
    288     0,
    289      "assign-end",
    290     0,
    291      "errorDeath",
    292     0};
    293 #endif
    294 
    295 U_NAMESPACE_END
    296 #endif
    297