1 // Copyright (C) 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