• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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