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