Imported Upstream version 58.1
[platform/upstream/icu.git] / source / common / rbbirpt.h
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