mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-30 16:58:40 -04:00
better range checking in grammar
This commit is contained in:
parent
11634708c4
commit
d86367d609
@ -300,30 +300,30 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
|
||||
*yy_cp = '\0'; \
|
||||
yy_c_buf_p = yy_cp;
|
||||
|
||||
#define YY_NUM_RULES 47
|
||||
#define YY_END_OF_BUFFER 48
|
||||
static yyconst short int yy_accept[187] =
|
||||
#define YY_NUM_RULES 48
|
||||
#define YY_END_OF_BUFFER 49
|
||||
static yyconst short int yy_accept[188] =
|
||||
{ 0,
|
||||
0, 0, 48, 46, 2, 1, 43, 46, 46, 46,
|
||||
40, 40, 44, 45, 45, 45, 45, 45, 45, 45,
|
||||
45, 45, 45, 45, 45, 45, 1, 0, 40, 42,
|
||||
4, 3, 42, 41, 45, 45, 45, 45, 45, 45,
|
||||
35, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||||
45, 45, 45, 45, 0, 3, 41, 45, 45, 45,
|
||||
45, 45, 45, 45, 45, 45, 45, 45, 45, 33,
|
||||
34, 45, 45, 45, 45, 45, 0, 42, 45, 22,
|
||||
45, 11, 45, 45, 45, 45, 7, 45, 45, 45,
|
||||
45, 12, 45, 45, 45, 45, 45, 45, 45, 45,
|
||||
0, 0, 49, 47, 2, 1, 44, 47, 47, 47,
|
||||
40, 40, 45, 46, 46, 46, 46, 46, 46, 46,
|
||||
46, 46, 46, 46, 46, 46, 1, 0, 41, 43,
|
||||
4, 3, 43, 40, 42, 46, 46, 46, 46, 46,
|
||||
46, 35, 46, 46, 46, 46, 46, 46, 46, 46,
|
||||
46, 46, 46, 46, 46, 0, 3, 42, 46, 46,
|
||||
46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
|
||||
33, 34, 46, 46, 46, 46, 46, 0, 43, 46,
|
||||
22, 46, 11, 46, 46, 46, 46, 7, 46, 46,
|
||||
46, 46, 12, 46, 46, 46, 46, 46, 46, 46,
|
||||
|
||||
45, 45, 45, 45, 45, 45, 45, 13, 14, 15,
|
||||
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
|
||||
16, 39, 23, 45, 37, 36, 5, 45, 8, 45,
|
||||
45, 45, 45, 45, 21, 6, 10, 45, 17, 18,
|
||||
19, 45, 45, 20, 45, 45, 45, 38, 45, 9,
|
||||
45, 45, 45, 45, 45, 45, 45, 45, 31, 45,
|
||||
45, 45, 45, 32, 45, 45, 24, 45, 45, 45,
|
||||
45, 25, 26, 45, 45, 45, 27, 28, 29, 45,
|
||||
45, 45, 45, 45, 30, 0
|
||||
46, 46, 46, 46, 46, 46, 46, 46, 13, 14,
|
||||
15, 46, 46, 46, 46, 46, 46, 46, 46, 46,
|
||||
46, 16, 39, 23, 46, 37, 36, 5, 46, 8,
|
||||
46, 46, 46, 46, 46, 21, 6, 10, 46, 17,
|
||||
18, 19, 46, 46, 20, 46, 46, 46, 38, 46,
|
||||
9, 46, 46, 46, 46, 46, 46, 46, 46, 31,
|
||||
46, 46, 46, 46, 32, 46, 46, 24, 46, 46,
|
||||
46, 46, 25, 26, 46, 46, 46, 27, 28, 29,
|
||||
46, 46, 46, 46, 46, 30, 0
|
||||
} ;
|
||||
|
||||
static yyconst int yy_ec[256] =
|
||||
@ -364,125 +364,127 @@ static yyconst int yy_meta[44] =
|
||||
5, 5, 5, 5, 5, 5, 1, 6, 6, 7,
|
||||
6, 6, 6, 6, 6, 6, 7, 7, 7, 7,
|
||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||
7, 7, 7
|
||||
7, 8, 7
|
||||
} ;
|
||||
|
||||
static yyconst short int yy_base[194] =
|
||||
static yyconst short int yy_base[196] =
|
||||
{ 0,
|
||||
0, 0, 223, 224, 224, 0, 224, 215, 0, 39,
|
||||
38, 214, 224, 0, 191, 16, 27, 27, 23, 23,
|
||||
178, 207, 35, 20, 174, 187, 0, 0, 208, 43,
|
||||
224, 0, 0, 0, 0, 178, 180, 179, 174, 27,
|
||||
0, 180, 176, 175, 173, 168, 173, 170, 172, 167,
|
||||
165, 171, 165, 166, 191, 0, 0, 171, 173, 173,
|
||||
168, 167, 166, 169, 168, 157, 154, 55, 149, 0,
|
||||
0, 146, 37, 146, 158, 144, 175, 174, 156, 166,
|
||||
153, 0, 153, 143, 137, 135, 0, 136, 156, 159,
|
||||
156, 147, 142, 137, 133, 141, 140, 138, 62, 121,
|
||||
0, 0, 230, 231, 231, 0, 231, 222, 0, 39,
|
||||
38, 39, 231, 0, 199, 18, 28, 28, 23, 24,
|
||||
186, 215, 36, 22, 182, 195, 0, 0, 216, 43,
|
||||
231, 0, 0, 0, 0, 0, 186, 188, 187, 182,
|
||||
28, 0, 188, 184, 183, 181, 176, 181, 178, 180,
|
||||
175, 173, 179, 173, 174, 199, 0, 0, 179, 181,
|
||||
181, 176, 175, 174, 177, 176, 165, 162, 57, 157,
|
||||
0, 0, 154, 37, 154, 166, 152, 183, 182, 164,
|
||||
174, 161, 0, 161, 151, 145, 143, 0, 144, 164,
|
||||
167, 164, 155, 150, 145, 141, 149, 148, 146, 67,
|
||||
|
||||
149, 136, 118, 133, 119, 140, 116, 132, 131, 0,
|
||||
115, 118, 113, 121, 109, 118, 120, 129, 132, 129,
|
||||
120, 0, 0, 119, 0, 0, 0, 126, 0, 102,
|
||||
101, 100, 111, 109, 0, 0, 0, 107, 111, 30,
|
||||
0, 95, 93, 0, 93, 92, 106, 0, 102, 0,
|
||||
89, 88, 94, 86, 83, 99, 98, 75, 0, 81,
|
||||
80, 83, 93, 0, 70, 69, 0, 90, 89, 71,
|
||||
65, 0, 0, 64, 63, 89, 0, 0, 0, 82,
|
||||
58, 46, 58, 32, 0, 224, 80, 84, 68, 85,
|
||||
92, 95, 99
|
||||
129, 157, 144, 126, 141, 127, 148, 124, 140, 139,
|
||||
0, 123, 126, 121, 129, 117, 126, 128, 137, 140,
|
||||
137, 128, 0, 0, 127, 0, 0, 0, 134, 0,
|
||||
110, 109, 108, 119, 117, 0, 0, 0, 115, 119,
|
||||
31, 0, 103, 101, 0, 101, 100, 114, 0, 110,
|
||||
0, 97, 96, 102, 94, 91, 107, 106, 83, 0,
|
||||
89, 88, 91, 101, 0, 78, 77, 0, 98, 97,
|
||||
79, 73, 0, 0, 71, 61, 81, 0, 0, 0,
|
||||
75, 49, 42, 54, 31, 0, 231, 83, 88, 66,
|
||||
90, 94, 102, 106, 110
|
||||
|
||||
} ;
|
||||
|
||||
static yyconst short int yy_def[194] =
|
||||
static yyconst short int yy_def[196] =
|
||||
{ 0,
|
||||
186, 1, 186, 186, 186, 187, 186, 188, 189, 186,
|
||||
188, 188, 186, 190, 190, 190, 190, 190, 190, 190,
|
||||
190, 190, 190, 190, 190, 190, 187, 189, 188, 189,
|
||||
186, 191, 30, 192, 190, 190, 190, 190, 190, 190,
|
||||
190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
|
||||
190, 190, 190, 190, 193, 191, 192, 190, 190, 190,
|
||||
190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
|
||||
190, 190, 190, 190, 190, 190, 193, 193, 190, 190,
|
||||
190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
|
||||
190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
|
||||
187, 1, 187, 187, 187, 188, 187, 189, 190, 187,
|
||||
191, 191, 187, 192, 192, 192, 192, 192, 192, 192,
|
||||
192, 192, 192, 192, 192, 192, 188, 190, 189, 190,
|
||||
187, 193, 30, 12, 194, 192, 192, 192, 192, 192,
|
||||
192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
|
||||
192, 192, 192, 192, 192, 195, 193, 194, 192, 192,
|
||||
192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
|
||||
192, 192, 192, 192, 192, 192, 192, 195, 195, 192,
|
||||
192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
|
||||
192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
|
||||
|
||||
190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
|
||||
190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
|
||||
190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
|
||||
190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
|
||||
190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
|
||||
190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
|
||||
190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
|
||||
190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
|
||||
190, 190, 190, 190, 190, 0, 186, 186, 186, 186,
|
||||
186, 186, 186
|
||||
192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
|
||||
192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
|
||||
192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
|
||||
192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
|
||||
192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
|
||||
192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
|
||||
192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
|
||||
192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
|
||||
192, 192, 192, 192, 192, 192, 0, 187, 187, 187,
|
||||
187, 187, 187, 187, 187
|
||||
|
||||
} ;
|
||||
|
||||
static yyconst short int yy_nxt[268] =
|
||||
static yyconst short int yy_nxt[275] =
|
||||
{ 0,
|
||||
4, 5, 6, 7, 4, 8, 9, 10, 11, 12,
|
||||
12, 12, 12, 12, 12, 12, 13, 14, 14, 14,
|
||||
15, 16, 17, 18, 14, 19, 14, 14, 20, 14,
|
||||
14, 14, 21, 22, 14, 23, 24, 25, 26, 14,
|
||||
14, 14, 14, 31, 33, 37, 32, 39, 41, 42,
|
||||
152, 38, 43, 45, 46, 49, 40, 51, 44, 50,
|
||||
52, 55, 62, 63, 89, 95, 90, 55, 153, 91,
|
||||
92, 118, 30, 119, 185, 96, 120, 121, 184, 34,
|
||||
27, 183, 27, 27, 27, 27, 27, 29, 29, 35,
|
||||
35, 35, 56, 182, 56, 56, 56, 56, 56, 57,
|
||||
14, 14, 14, 31, 33, 33, 32, 38, 40, 42,
|
||||
43, 153, 44, 39, 46, 47, 50, 41, 45, 52,
|
||||
51, 56, 53, 63, 64, 96, 90, 56, 91, 154,
|
||||
30, 92, 93, 186, 185, 97, 119, 184, 120, 35,
|
||||
187, 121, 122, 27, 183, 27, 27, 27, 27, 27,
|
||||
27, 29, 29, 34, 34, 182, 181, 34, 36, 36,
|
||||
|
||||
57, 78, 181, 78, 180, 179, 178, 177, 176, 175,
|
||||
174, 173, 172, 171, 170, 169, 168, 167, 166, 165,
|
||||
164, 163, 162, 161, 160, 159, 158, 157, 156, 155,
|
||||
154, 151, 150, 149, 148, 147, 146, 145, 144, 143,
|
||||
142, 141, 140, 139, 138, 137, 136, 135, 134, 133,
|
||||
132, 131, 130, 129, 128, 127, 126, 125, 124, 123,
|
||||
122, 117, 116, 115, 114, 113, 112, 111, 110, 109,
|
||||
108, 107, 106, 105, 104, 103, 102, 101, 100, 186,
|
||||
186, 99, 98, 97, 94, 93, 88, 87, 86, 85,
|
||||
84, 83, 82, 81, 80, 79, 77, 76, 75, 74,
|
||||
36, 36, 57, 180, 57, 57, 57, 57, 57, 57,
|
||||
58, 58, 79, 179, 79, 178, 177, 176, 175, 174,
|
||||
173, 172, 171, 170, 169, 168, 167, 166, 165, 164,
|
||||
163, 162, 161, 160, 159, 158, 157, 156, 155, 152,
|
||||
151, 150, 149, 148, 147, 146, 145, 144, 143, 142,
|
||||
141, 140, 139, 138, 137, 136, 135, 134, 133, 132,
|
||||
131, 130, 129, 128, 127, 126, 125, 124, 123, 118,
|
||||
117, 116, 115, 114, 113, 112, 111, 110, 109, 108,
|
||||
107, 106, 105, 104, 103, 102, 101, 187, 187, 100,
|
||||
99, 98, 95, 94, 89, 88, 87, 86, 85, 84,
|
||||
|
||||
73, 72, 71, 70, 69, 68, 67, 66, 65, 64,
|
||||
61, 60, 59, 58, 33, 54, 53, 48, 47, 36,
|
||||
33, 28, 186, 3, 186, 186, 186, 186, 186, 186,
|
||||
186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
|
||||
186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
|
||||
186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
|
||||
186, 186, 186, 186, 186, 186, 186
|
||||
83, 82, 81, 80, 78, 77, 76, 75, 74, 73,
|
||||
72, 71, 70, 69, 68, 67, 66, 65, 62, 61,
|
||||
60, 59, 33, 55, 54, 49, 48, 37, 28, 187,
|
||||
3, 187, 187, 187, 187, 187, 187, 187, 187, 187,
|
||||
187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
|
||||
187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
|
||||
187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
|
||||
187, 187, 187, 187
|
||||
} ;
|
||||
|
||||
static yyconst short int yy_chk[268] =
|
||||
static yyconst short int yy_chk[275] =
|
||||
{ 0,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 10, 11, 16, 10, 17, 18, 18,
|
||||
140, 16, 19, 20, 20, 23, 17, 24, 19, 23,
|
||||
24, 30, 40, 40, 68, 73, 68, 30, 140, 68,
|
||||
68, 99, 189, 99, 184, 73, 99, 99, 183, 11,
|
||||
187, 182, 187, 187, 187, 187, 187, 188, 188, 190,
|
||||
190, 190, 191, 181, 191, 191, 191, 191, 191, 192,
|
||||
1, 1, 1, 10, 11, 12, 10, 16, 17, 18,
|
||||
18, 141, 19, 16, 20, 20, 23, 17, 19, 24,
|
||||
23, 30, 24, 41, 41, 74, 69, 30, 69, 141,
|
||||
190, 69, 69, 185, 184, 74, 100, 183, 100, 11,
|
||||
12, 100, 100, 188, 182, 188, 188, 188, 188, 188,
|
||||
188, 189, 189, 191, 191, 181, 177, 191, 192, 192,
|
||||
|
||||
192, 193, 180, 193, 176, 175, 174, 171, 170, 169,
|
||||
168, 166, 165, 163, 162, 161, 160, 158, 157, 156,
|
||||
155, 154, 153, 152, 151, 149, 147, 146, 145, 143,
|
||||
142, 139, 138, 134, 133, 132, 131, 130, 128, 124,
|
||||
121, 120, 119, 118, 117, 116, 115, 114, 113, 112,
|
||||
111, 109, 108, 107, 106, 105, 104, 103, 102, 101,
|
||||
100, 98, 97, 96, 95, 94, 93, 92, 91, 90,
|
||||
89, 88, 86, 85, 84, 83, 81, 80, 79, 78,
|
||||
77, 76, 75, 74, 72, 69, 67, 66, 65, 64,
|
||||
63, 62, 61, 60, 59, 58, 55, 54, 53, 52,
|
||||
192, 192, 193, 176, 193, 193, 193, 193, 193, 193,
|
||||
194, 194, 195, 175, 195, 172, 171, 170, 169, 167,
|
||||
166, 164, 163, 162, 161, 159, 158, 157, 156, 155,
|
||||
154, 153, 152, 150, 148, 147, 146, 144, 143, 140,
|
||||
139, 135, 134, 133, 132, 131, 129, 125, 122, 121,
|
||||
120, 119, 118, 117, 116, 115, 114, 113, 112, 110,
|
||||
109, 108, 107, 106, 105, 104, 103, 102, 101, 99,
|
||||
98, 97, 96, 95, 94, 93, 92, 91, 90, 89,
|
||||
87, 86, 85, 84, 82, 81, 80, 79, 78, 77,
|
||||
76, 75, 73, 70, 68, 67, 66, 65, 64, 63,
|
||||
|
||||
51, 50, 49, 48, 47, 46, 45, 44, 43, 42,
|
||||
39, 38, 37, 36, 29, 26, 25, 22, 21, 15,
|
||||
12, 8, 3, 186, 186, 186, 186, 186, 186, 186,
|
||||
186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
|
||||
186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
|
||||
186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
|
||||
186, 186, 186, 186, 186, 186, 186
|
||||
62, 61, 60, 59, 56, 55, 54, 53, 52, 51,
|
||||
50, 49, 48, 47, 46, 45, 44, 43, 40, 39,
|
||||
38, 37, 29, 26, 25, 22, 21, 15, 8, 3,
|
||||
187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
|
||||
187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
|
||||
187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
|
||||
187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
|
||||
187, 187, 187, 187
|
||||
} ;
|
||||
|
||||
static yy_state_type yy_last_accepting_state;
|
||||
@ -797,7 +799,7 @@ inline void accept() {
|
||||
col_number += yyleng;
|
||||
}
|
||||
|
||||
#line 802 "lex.yy.c"
|
||||
#line 804 "lex.yy.c"
|
||||
|
||||
/* Macros after this point can all be overridden by user definitions in
|
||||
* section 1.
|
||||
@ -948,7 +950,7 @@ YY_DECL
|
||||
register char *yy_cp = NULL, *yy_bp = NULL;
|
||||
register int yy_act;
|
||||
|
||||
#line 307 "dcLexer.lxx"
|
||||
#line 308 "dcLexer.lxx"
|
||||
|
||||
|
||||
|
||||
@ -959,7 +961,7 @@ YY_DECL
|
||||
}
|
||||
|
||||
|
||||
#line 964 "lex.yy.c"
|
||||
#line 966 "lex.yy.c"
|
||||
|
||||
if ( yy_init )
|
||||
{
|
||||
@ -1010,13 +1012,13 @@ yy_match:
|
||||
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
|
||||
{
|
||||
yy_current_state = (int) yy_def[yy_current_state];
|
||||
if ( yy_current_state >= 187 )
|
||||
if ( yy_current_state >= 188 )
|
||||
yy_c = yy_meta[(unsigned int) yy_c];
|
||||
}
|
||||
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
|
||||
++yy_cp;
|
||||
}
|
||||
while ( yy_base[yy_current_state] != 224 );
|
||||
while ( yy_base[yy_current_state] != 231 );
|
||||
|
||||
yy_find_action:
|
||||
yy_act = yy_accept[yy_current_state];
|
||||
@ -1044,7 +1046,7 @@ do_action: /* This label is used only to access EOF actions. */
|
||||
|
||||
case 1:
|
||||
YY_RULE_SETUP
|
||||
#line 317 "dcLexer.lxx"
|
||||
#line 318 "dcLexer.lxx"
|
||||
{
|
||||
// New line. Save a copy of the line so we can print it out for the
|
||||
// benefit of the user in case we get an error.
|
||||
@ -1061,7 +1063,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 2:
|
||||
YY_RULE_SETUP
|
||||
#line 331 "dcLexer.lxx"
|
||||
#line 332 "dcLexer.lxx"
|
||||
{
|
||||
// Eat whitespace.
|
||||
accept();
|
||||
@ -1069,7 +1071,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 3:
|
||||
YY_RULE_SETUP
|
||||
#line 336 "dcLexer.lxx"
|
||||
#line 337 "dcLexer.lxx"
|
||||
{
|
||||
// Eat C++-style comments.
|
||||
accept();
|
||||
@ -1077,7 +1079,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 4:
|
||||
YY_RULE_SETUP
|
||||
#line 341 "dcLexer.lxx"
|
||||
#line 342 "dcLexer.lxx"
|
||||
{
|
||||
// Eat C-style comments.
|
||||
accept();
|
||||
@ -1086,7 +1088,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 5:
|
||||
YY_RULE_SETUP
|
||||
#line 348 "dcLexer.lxx"
|
||||
#line 349 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_DCLASS;
|
||||
@ -1094,7 +1096,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 6:
|
||||
YY_RULE_SETUP
|
||||
#line 353 "dcLexer.lxx"
|
||||
#line 354 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_STRUCT;
|
||||
@ -1102,7 +1104,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 7:
|
||||
YY_RULE_SETUP
|
||||
#line 358 "dcLexer.lxx"
|
||||
#line 359 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_FROM;
|
||||
@ -1110,7 +1112,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 8:
|
||||
YY_RULE_SETUP
|
||||
#line 363 "dcLexer.lxx"
|
||||
#line 364 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_IMPORT;
|
||||
@ -1118,7 +1120,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 9:
|
||||
YY_RULE_SETUP
|
||||
#line 368 "dcLexer.lxx"
|
||||
#line 369 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_TYPEDEF;
|
||||
@ -1126,7 +1128,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 10:
|
||||
YY_RULE_SETUP
|
||||
#line 373 "dcLexer.lxx"
|
||||
#line 374 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_SWITCH;
|
||||
@ -1134,7 +1136,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 11:
|
||||
YY_RULE_SETUP
|
||||
#line 378 "dcLexer.lxx"
|
||||
#line 379 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_CASE;
|
||||
@ -1142,7 +1144,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 12:
|
||||
YY_RULE_SETUP
|
||||
#line 383 "dcLexer.lxx"
|
||||
#line 384 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_INT8;
|
||||
@ -1150,7 +1152,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 13:
|
||||
YY_RULE_SETUP
|
||||
#line 388 "dcLexer.lxx"
|
||||
#line 389 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_INT16;
|
||||
@ -1158,7 +1160,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 14:
|
||||
YY_RULE_SETUP
|
||||
#line 393 "dcLexer.lxx"
|
||||
#line 394 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_INT32;
|
||||
@ -1166,7 +1168,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 15:
|
||||
YY_RULE_SETUP
|
||||
#line 398 "dcLexer.lxx"
|
||||
#line 399 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_INT64;
|
||||
@ -1174,7 +1176,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 16:
|
||||
YY_RULE_SETUP
|
||||
#line 403 "dcLexer.lxx"
|
||||
#line 404 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_UINT8;
|
||||
@ -1182,7 +1184,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 17:
|
||||
YY_RULE_SETUP
|
||||
#line 408 "dcLexer.lxx"
|
||||
#line 409 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_UINT16;
|
||||
@ -1190,7 +1192,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 18:
|
||||
YY_RULE_SETUP
|
||||
#line 413 "dcLexer.lxx"
|
||||
#line 414 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_UINT32;
|
||||
@ -1198,7 +1200,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 19:
|
||||
YY_RULE_SETUP
|
||||
#line 418 "dcLexer.lxx"
|
||||
#line 419 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_UINT64;
|
||||
@ -1206,7 +1208,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 20:
|
||||
YY_RULE_SETUP
|
||||
#line 423 "dcLexer.lxx"
|
||||
#line 424 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_FLOAT64;
|
||||
@ -1214,7 +1216,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 21:
|
||||
YY_RULE_SETUP
|
||||
#line 428 "dcLexer.lxx"
|
||||
#line 429 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_STRING;
|
||||
@ -1222,7 +1224,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 22:
|
||||
YY_RULE_SETUP
|
||||
#line 433 "dcLexer.lxx"
|
||||
#line 434 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_BLOB;
|
||||
@ -1230,7 +1232,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 23:
|
||||
YY_RULE_SETUP
|
||||
#line 438 "dcLexer.lxx"
|
||||
#line 439 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_BLOB32;
|
||||
@ -1238,7 +1240,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 24:
|
||||
YY_RULE_SETUP
|
||||
#line 443 "dcLexer.lxx"
|
||||
#line 444 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_INT8ARRAY;
|
||||
@ -1246,7 +1248,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 25:
|
||||
YY_RULE_SETUP
|
||||
#line 448 "dcLexer.lxx"
|
||||
#line 449 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_INT16ARRAY;
|
||||
@ -1254,7 +1256,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 26:
|
||||
YY_RULE_SETUP
|
||||
#line 453 "dcLexer.lxx"
|
||||
#line 454 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_INT32ARRAY;
|
||||
@ -1262,7 +1264,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 27:
|
||||
YY_RULE_SETUP
|
||||
#line 458 "dcLexer.lxx"
|
||||
#line 459 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_UINT8ARRAY;
|
||||
@ -1270,7 +1272,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 28:
|
||||
YY_RULE_SETUP
|
||||
#line 463 "dcLexer.lxx"
|
||||
#line 464 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_UINT16ARRAY;
|
||||
@ -1278,7 +1280,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 29:
|
||||
YY_RULE_SETUP
|
||||
#line 468 "dcLexer.lxx"
|
||||
#line 469 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_UINT32ARRAY;
|
||||
@ -1286,7 +1288,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 30:
|
||||
YY_RULE_SETUP
|
||||
#line 473 "dcLexer.lxx"
|
||||
#line 474 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_UINT32UINT8ARRAY;
|
||||
@ -1294,7 +1296,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 31:
|
||||
YY_RULE_SETUP
|
||||
#line 478 "dcLexer.lxx"
|
||||
#line 479 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_REQUIRED;
|
||||
@ -1302,7 +1304,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 32:
|
||||
YY_RULE_SETUP
|
||||
#line 483 "dcLexer.lxx"
|
||||
#line 484 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_BROADCAST;
|
||||
@ -1310,7 +1312,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 33:
|
||||
YY_RULE_SETUP
|
||||
#line 488 "dcLexer.lxx"
|
||||
#line 489 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_P2P;
|
||||
@ -1318,7 +1320,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 34:
|
||||
YY_RULE_SETUP
|
||||
#line 493 "dcLexer.lxx"
|
||||
#line 494 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_RAM;
|
||||
@ -1326,7 +1328,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 35:
|
||||
YY_RULE_SETUP
|
||||
#line 498 "dcLexer.lxx"
|
||||
#line 499 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_DB;
|
||||
@ -1334,7 +1336,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 36:
|
||||
YY_RULE_SETUP
|
||||
#line 503 "dcLexer.lxx"
|
||||
#line 504 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_CLSEND;
|
||||
@ -1342,7 +1344,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 37:
|
||||
YY_RULE_SETUP
|
||||
#line 508 "dcLexer.lxx"
|
||||
#line 509 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_CLRECV;
|
||||
@ -1350,7 +1352,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 38:
|
||||
YY_RULE_SETUP
|
||||
#line 513 "dcLexer.lxx"
|
||||
#line 514 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_OWNSEND;
|
||||
@ -1358,7 +1360,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 39:
|
||||
YY_RULE_SETUP
|
||||
#line 518 "dcLexer.lxx"
|
||||
#line 519 "dcLexer.lxx"
|
||||
{
|
||||
accept();
|
||||
return KW_AIRECV;
|
||||
@ -1366,13 +1368,40 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 40:
|
||||
YY_RULE_SETUP
|
||||
#line 523 "dcLexer.lxx"
|
||||
#line 524 "dcLexer.lxx"
|
||||
{
|
||||
// An integer number.
|
||||
// An unsigned integer number.
|
||||
accept();
|
||||
|
||||
// atoll isn't fully portable, so we'll decode the integer by hand.
|
||||
dcyylval.u.integer = 0;
|
||||
dcyylval.str = dcyytext;
|
||||
dcyylval.u.uint64 = 0;
|
||||
const char *p = dcyytext;
|
||||
while (*p != '\0') {
|
||||
PN_uint64 next_value = dcyylval.u.uint64 * 10;
|
||||
if (next_value < dcyylval.u.uint64) {
|
||||
dcyyerror("Number out of range.");
|
||||
dcyylval.u.uint64 = 1;
|
||||
return UNSIGNED_INTEGER;
|
||||
}
|
||||
|
||||
dcyylval.u.uint64 = next_value + (*p - '0');
|
||||
++p;
|
||||
}
|
||||
|
||||
return UNSIGNED_INTEGER;
|
||||
}
|
||||
YY_BREAK
|
||||
case 41:
|
||||
YY_RULE_SETUP
|
||||
#line 547 "dcLexer.lxx"
|
||||
{
|
||||
// A signed integer number.
|
||||
accept();
|
||||
|
||||
// atoll isn't fully portable, so we'll decode the integer by hand.
|
||||
dcyylval.str = dcyytext;
|
||||
|
||||
bool neg = false;
|
||||
const char *p = dcyytext;
|
||||
if (*p == '-') {
|
||||
@ -1381,44 +1410,70 @@ YY_RULE_SETUP
|
||||
} else if (*p == '+') {
|
||||
++p;
|
||||
}
|
||||
|
||||
PN_uint64 value = 0;
|
||||
while (*p != '\0') {
|
||||
dcyylval.u.integer = dcyylval.u.integer * 10 + (*p - '0');
|
||||
PN_uint64 next_value = value * 10;
|
||||
if (next_value < value) {
|
||||
dcyyerror("Number out of range.");
|
||||
dcyylval.u.int64 = 1;
|
||||
return SIGNED_INTEGER;
|
||||
}
|
||||
|
||||
value = next_value + (*p - '0');
|
||||
++p;
|
||||
}
|
||||
|
||||
if (neg) {
|
||||
dcyylval.u.integer = -dcyylval.u.integer;
|
||||
}
|
||||
dcyylval.u.int64 = -(PN_int64)value;
|
||||
if (dcyylval.u.int64 > 0) {
|
||||
dcyyerror("Number out of range.");
|
||||
dcyylval.u.int64 = 1;
|
||||
}
|
||||
} else {
|
||||
dcyylval.u.int64 = (PN_int64)value;
|
||||
if (dcyylval.u.int64 < 0) {
|
||||
dcyyerror("Number out of range.");
|
||||
dcyylval.u.int64 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
dcyylval.str = dcyytext;
|
||||
return INTEGER;
|
||||
return SIGNED_INTEGER;
|
||||
}
|
||||
YY_BREAK
|
||||
case 41:
|
||||
case 42:
|
||||
YY_RULE_SETUP
|
||||
#line 549 "dcLexer.lxx"
|
||||
#line 593 "dcLexer.lxx"
|
||||
{
|
||||
// A hexadecimal integer number.
|
||||
accept();
|
||||
|
||||
// As above, we'll decode the hex string by hand.
|
||||
dcyylval.u.integer = 0;
|
||||
dcyylval.str = dcyytext;
|
||||
dcyylval.u.uint64 = 0;
|
||||
const char *p = dcyytext + 2;
|
||||
while (*p != '\0') {
|
||||
PN_uint64 next_value = dcyylval.u.uint64 * 16;
|
||||
if (next_value < dcyylval.u.uint64) {
|
||||
dcyyerror("Number out of range.");
|
||||
dcyylval.u.uint64 = 1;
|
||||
return UNSIGNED_INTEGER;
|
||||
}
|
||||
|
||||
if (isalpha(*p)) {
|
||||
dcyylval.u.integer = dcyylval.u.integer * 16 + (tolower(*p) - 'a' + 10);
|
||||
dcyylval.u.uint64 = next_value + (tolower(*p) - 'a' + 10);
|
||||
} else {
|
||||
dcyylval.u.integer = dcyylval.u.integer * 16 + (*p - '0');
|
||||
dcyylval.u.uint64 = next_value + (*p - '0');
|
||||
}
|
||||
++p;
|
||||
}
|
||||
|
||||
dcyylval.str = dcyytext;
|
||||
return INTEGER;
|
||||
return UNSIGNED_INTEGER;
|
||||
}
|
||||
YY_BREAK
|
||||
case 42:
|
||||
case 43:
|
||||
YY_RULE_SETUP
|
||||
#line 569 "dcLexer.lxx"
|
||||
#line 620 "dcLexer.lxx"
|
||||
{
|
||||
// A floating-point number.
|
||||
accept();
|
||||
@ -1427,9 +1482,9 @@ YY_RULE_SETUP
|
||||
return REAL;
|
||||
}
|
||||
YY_BREAK
|
||||
case 43:
|
||||
case 44:
|
||||
YY_RULE_SETUP
|
||||
#line 577 "dcLexer.lxx"
|
||||
#line 628 "dcLexer.lxx"
|
||||
{
|
||||
// Quoted string.
|
||||
accept();
|
||||
@ -1437,9 +1492,9 @@ YY_RULE_SETUP
|
||||
return STRING;
|
||||
}
|
||||
YY_BREAK
|
||||
case 44:
|
||||
case 45:
|
||||
YY_RULE_SETUP
|
||||
#line 584 "dcLexer.lxx"
|
||||
#line 635 "dcLexer.lxx"
|
||||
{
|
||||
// Long hex string.
|
||||
accept();
|
||||
@ -1447,9 +1502,9 @@ YY_RULE_SETUP
|
||||
return HEX_STRING;
|
||||
}
|
||||
YY_BREAK
|
||||
case 45:
|
||||
case 46:
|
||||
YY_RULE_SETUP
|
||||
#line 591 "dcLexer.lxx"
|
||||
#line 642 "dcLexer.lxx"
|
||||
{
|
||||
// Identifier.
|
||||
accept();
|
||||
@ -1457,21 +1512,21 @@ YY_RULE_SETUP
|
||||
return IDENTIFIER;
|
||||
}
|
||||
YY_BREAK
|
||||
case 46:
|
||||
case 47:
|
||||
YY_RULE_SETUP
|
||||
#line 599 "dcLexer.lxx"
|
||||
#line 650 "dcLexer.lxx"
|
||||
{
|
||||
// Send any other printable character as itself.
|
||||
accept();
|
||||
return dcyytext[0];
|
||||
}
|
||||
YY_BREAK
|
||||
case 47:
|
||||
case 48:
|
||||
YY_RULE_SETUP
|
||||
#line 605 "dcLexer.lxx"
|
||||
#line 656 "dcLexer.lxx"
|
||||
ECHO;
|
||||
YY_BREAK
|
||||
#line 1476 "lex.yy.c"
|
||||
#line 1531 "lex.yy.c"
|
||||
case YY_STATE_EOF(INITIAL):
|
||||
yyterminate();
|
||||
|
||||
@ -1763,7 +1818,7 @@ static yy_state_type yy_get_previous_state()
|
||||
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
|
||||
{
|
||||
yy_current_state = (int) yy_def[yy_current_state];
|
||||
if ( yy_current_state >= 187 )
|
||||
if ( yy_current_state >= 188 )
|
||||
yy_c = yy_meta[(unsigned int) yy_c];
|
||||
}
|
||||
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
|
||||
@ -1798,11 +1853,11 @@ yy_state_type yy_current_state;
|
||||
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
|
||||
{
|
||||
yy_current_state = (int) yy_def[yy_current_state];
|
||||
if ( yy_current_state >= 187 )
|
||||
if ( yy_current_state >= 188 )
|
||||
yy_c = yy_meta[(unsigned int) yy_c];
|
||||
}
|
||||
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
|
||||
yy_is_jam = (yy_current_state == 186);
|
||||
yy_is_jam = (yy_current_state == 187);
|
||||
|
||||
return yy_is_jam ? 0 : yy_current_state;
|
||||
}
|
||||
@ -2352,4 +2407,4 @@ int main()
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
#line 605 "dcLexer.lxx"
|
||||
#line 656 "dcLexer.lxx"
|
||||
|
@ -300,9 +300,10 @@ inline void accept() {
|
||||
|
||||
%}
|
||||
|
||||
INTEGERNUM ([+-]?([0-9]+))
|
||||
HEXNUM 0x[0-9a-fA-F]*
|
||||
REALNUM ([+-]?(([0-9]+[.])|([0-9]*[.][0-9]+))([eE][+-]?[0-9]+)?)
|
||||
UNSIGNED_INTEGERNUM ([0-9]+)
|
||||
SIGNED_INTEGERNUM ([+-]([0-9]+))
|
||||
UNSIGNED_HEXNUM (0x[0-9a-fA-F]*)
|
||||
REALNUM ([+-]?(([0-9]+[.])|([0-9]*[.][0-9]+))([eE][+-]?[0-9]+)?)
|
||||
|
||||
%%
|
||||
|
||||
@ -520,12 +521,36 @@ REALNUM ([+-]?(([0-9]+[.])|([0-9]*[.][0-9]+))([eE][+-]?[0-9]+)?)
|
||||
return KW_AIRECV;
|
||||
}
|
||||
|
||||
{INTEGERNUM} {
|
||||
// An integer number.
|
||||
{UNSIGNED_INTEGERNUM} {
|
||||
// An unsigned integer number.
|
||||
accept();
|
||||
|
||||
// atoll isn't fully portable, so we'll decode the integer by hand.
|
||||
dcyylval.u.integer = 0;
|
||||
dcyylval.str = dcyytext;
|
||||
dcyylval.u.uint64 = 0;
|
||||
const char *p = dcyytext;
|
||||
while (*p != '\0') {
|
||||
PN_uint64 next_value = dcyylval.u.uint64 * 10;
|
||||
if (next_value < dcyylval.u.uint64) {
|
||||
dcyyerror("Number out of range.");
|
||||
dcyylval.u.uint64 = 1;
|
||||
return UNSIGNED_INTEGER;
|
||||
}
|
||||
|
||||
dcyylval.u.uint64 = next_value + (*p - '0');
|
||||
++p;
|
||||
}
|
||||
|
||||
return UNSIGNED_INTEGER;
|
||||
}
|
||||
|
||||
{SIGNED_INTEGERNUM} {
|
||||
// A signed integer number.
|
||||
accept();
|
||||
|
||||
// atoll isn't fully portable, so we'll decode the integer by hand.
|
||||
dcyylval.str = dcyytext;
|
||||
|
||||
bool neg = false;
|
||||
const char *p = dcyytext;
|
||||
if (*p == '-') {
|
||||
@ -534,36 +559,62 @@ REALNUM ([+-]?(([0-9]+[.])|([0-9]*[.][0-9]+))([eE][+-]?[0-9]+)?)
|
||||
} else if (*p == '+') {
|
||||
++p;
|
||||
}
|
||||
|
||||
PN_uint64 value = 0;
|
||||
while (*p != '\0') {
|
||||
dcyylval.u.integer = dcyylval.u.integer * 10 + (*p - '0');
|
||||
PN_uint64 next_value = value * 10;
|
||||
if (next_value < value) {
|
||||
dcyyerror("Number out of range.");
|
||||
dcyylval.u.int64 = 1;
|
||||
return SIGNED_INTEGER;
|
||||
}
|
||||
|
||||
value = next_value + (*p - '0');
|
||||
++p;
|
||||
}
|
||||
|
||||
if (neg) {
|
||||
dcyylval.u.integer = -dcyylval.u.integer;
|
||||
}
|
||||
dcyylval.u.int64 = -(PN_int64)value;
|
||||
if (dcyylval.u.int64 > 0) {
|
||||
dcyyerror("Number out of range.");
|
||||
dcyylval.u.int64 = 1;
|
||||
}
|
||||
} else {
|
||||
dcyylval.u.int64 = (PN_int64)value;
|
||||
if (dcyylval.u.int64 < 0) {
|
||||
dcyyerror("Number out of range.");
|
||||
dcyylval.u.int64 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
dcyylval.str = dcyytext;
|
||||
return INTEGER;
|
||||
return SIGNED_INTEGER;
|
||||
}
|
||||
|
||||
{HEXNUM} {
|
||||
{UNSIGNED_HEXNUM} {
|
||||
// A hexadecimal integer number.
|
||||
accept();
|
||||
|
||||
// As above, we'll decode the hex string by hand.
|
||||
dcyylval.u.integer = 0;
|
||||
dcyylval.str = dcyytext;
|
||||
dcyylval.u.uint64 = 0;
|
||||
const char *p = dcyytext + 2;
|
||||
while (*p != '\0') {
|
||||
PN_uint64 next_value = dcyylval.u.uint64 * 16;
|
||||
if (next_value < dcyylval.u.uint64) {
|
||||
dcyyerror("Number out of range.");
|
||||
dcyylval.u.uint64 = 1;
|
||||
return UNSIGNED_INTEGER;
|
||||
}
|
||||
|
||||
if (isalpha(*p)) {
|
||||
dcyylval.u.integer = dcyylval.u.integer * 16 + (tolower(*p) - 'a' + 10);
|
||||
dcyylval.u.uint64 = next_value + (tolower(*p) - 'a' + 10);
|
||||
} else {
|
||||
dcyylval.u.integer = dcyylval.u.integer * 16 + (*p - '0');
|
||||
dcyylval.u.uint64 = next_value + (*p - '0');
|
||||
}
|
||||
++p;
|
||||
}
|
||||
|
||||
dcyylval.str = dcyytext;
|
||||
return INTEGER;
|
||||
return UNSIGNED_INTEGER;
|
||||
}
|
||||
|
||||
{REALNUM} {
|
||||
|
@ -268,11 +268,19 @@ get_max(int n) const {
|
||||
template <class NUM>
|
||||
INLINE void DCNumericRange<NUM>::
|
||||
output_minmax(ostream &out, Number divisor, const MinMax &range) const {
|
||||
if (range._min == range._max) {
|
||||
out << (double)range._min / (double)divisor;
|
||||
if (divisor == 1) {
|
||||
if (range._min == range._max) {
|
||||
out << range._min;
|
||||
} else {
|
||||
out << range._min << "-" << range._max;
|
||||
}
|
||||
} else {
|
||||
out << (double)range._min / (double)divisor
|
||||
<< "-"
|
||||
<< (double)range._max / (double)divisor;
|
||||
if (range._min == range._max) {
|
||||
out << (double)range._min / (double)divisor;
|
||||
} else {
|
||||
out << (double)range._min / (double)divisor
|
||||
<< "-"
|
||||
<< (double)range._max / (double)divisor;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,48 +1,49 @@
|
||||
#ifndef BISON_Y_TAB_H
|
||||
# define BISON_Y_TAB_H
|
||||
|
||||
# define INTEGER 257
|
||||
# define REAL 258
|
||||
# define STRING 259
|
||||
# define HEX_STRING 260
|
||||
# define IDENTIFIER 261
|
||||
# define KW_DCLASS 262
|
||||
# define KW_STRUCT 263
|
||||
# define KW_FROM 264
|
||||
# define KW_IMPORT 265
|
||||
# define KW_TYPEDEF 266
|
||||
# define KW_SWITCH 267
|
||||
# define KW_CASE 268
|
||||
# define KW_INT8 269
|
||||
# define KW_INT16 270
|
||||
# define KW_INT32 271
|
||||
# define KW_INT64 272
|
||||
# define KW_UINT8 273
|
||||
# define KW_UINT16 274
|
||||
# define KW_UINT32 275
|
||||
# define KW_UINT64 276
|
||||
# define KW_FLOAT64 277
|
||||
# define KW_STRING 278
|
||||
# define KW_BLOB 279
|
||||
# define KW_BLOB32 280
|
||||
# define KW_INT8ARRAY 281
|
||||
# define KW_INT16ARRAY 282
|
||||
# define KW_INT32ARRAY 283
|
||||
# define KW_UINT8ARRAY 284
|
||||
# define KW_UINT16ARRAY 285
|
||||
# define KW_UINT32ARRAY 286
|
||||
# define KW_UINT32UINT8ARRAY 287
|
||||
# define KW_REQUIRED 288
|
||||
# define KW_BROADCAST 289
|
||||
# define KW_P2P 290
|
||||
# define KW_RAM 291
|
||||
# define KW_DB 292
|
||||
# define KW_CLSEND 293
|
||||
# define KW_CLRECV 294
|
||||
# define KW_OWNSEND 295
|
||||
# define KW_AIRECV 296
|
||||
# define START_DC 297
|
||||
# define START_PARAMETER_VALUE 298
|
||||
# define UNSIGNED_INTEGER 257
|
||||
# define SIGNED_INTEGER 258
|
||||
# define REAL 259
|
||||
# define STRING 260
|
||||
# define HEX_STRING 261
|
||||
# define IDENTIFIER 262
|
||||
# define KW_DCLASS 263
|
||||
# define KW_STRUCT 264
|
||||
# define KW_FROM 265
|
||||
# define KW_IMPORT 266
|
||||
# define KW_TYPEDEF 267
|
||||
# define KW_SWITCH 268
|
||||
# define KW_CASE 269
|
||||
# define KW_INT8 270
|
||||
# define KW_INT16 271
|
||||
# define KW_INT32 272
|
||||
# define KW_INT64 273
|
||||
# define KW_UINT8 274
|
||||
# define KW_UINT16 275
|
||||
# define KW_UINT32 276
|
||||
# define KW_UINT64 277
|
||||
# define KW_FLOAT64 278
|
||||
# define KW_STRING 279
|
||||
# define KW_BLOB 280
|
||||
# define KW_BLOB32 281
|
||||
# define KW_INT8ARRAY 282
|
||||
# define KW_INT16ARRAY 283
|
||||
# define KW_INT32ARRAY 284
|
||||
# define KW_UINT8ARRAY 285
|
||||
# define KW_UINT16ARRAY 286
|
||||
# define KW_UINT32ARRAY 287
|
||||
# define KW_UINT32UINT8ARRAY 288
|
||||
# define KW_REQUIRED 289
|
||||
# define KW_BROADCAST 290
|
||||
# define KW_P2P 291
|
||||
# define KW_RAM 292
|
||||
# define KW_DB 293
|
||||
# define KW_CLSEND 294
|
||||
# define KW_CLRECV 295
|
||||
# define KW_OWNSEND 296
|
||||
# define KW_AIRECV 297
|
||||
# define START_DC 298
|
||||
# define START_PARAMETER_VALUE 299
|
||||
|
||||
|
||||
extern YYSTYPE dcyylval;
|
||||
|
@ -64,7 +64,8 @@ dc_cleanup_parser() {
|
||||
|
||||
%}
|
||||
|
||||
%token <u.integer> INTEGER
|
||||
%token <u.uint64> UNSIGNED_INTEGER
|
||||
%token <u.int64> SIGNED_INTEGER
|
||||
%token <u.real> REAL
|
||||
%token <str> STRING HEX_STRING IDENTIFIER
|
||||
|
||||
@ -130,6 +131,9 @@ dc_cleanup_parser() {
|
||||
%type <str> import_identifier
|
||||
%type <str> slash_identifier
|
||||
%type <str> optional_name
|
||||
%type <u.s_uint> small_unsigned_integer
|
||||
%type <u.int64> signed_integer
|
||||
%type <u.uint64> unsigned_integer
|
||||
%type <u.real> number
|
||||
|
||||
%%
|
||||
@ -379,24 +383,24 @@ type_name:
|
||||
}
|
||||
$$ = simple_param;
|
||||
}
|
||||
| type_token '/' INTEGER
|
||||
| type_token '/' small_unsigned_integer
|
||||
{
|
||||
DCSimpleParameter *simple_param = new DCSimpleParameter($1);
|
||||
if ($3 == 0) {
|
||||
yyerror("Invalid divisor.");
|
||||
|
||||
} else if (!simple_param->set_divisor((int)$3)) {
|
||||
} else if (!simple_param->set_divisor($3)) {
|
||||
yyerror("A divisor is only valid on a numeric type.");
|
||||
}
|
||||
$$ = simple_param;
|
||||
}
|
||||
| type_token '/' INTEGER '(' double_range ')'
|
||||
| type_token '/' small_unsigned_integer '(' double_range ')'
|
||||
{
|
||||
DCSimpleParameter *simple_param = new DCSimpleParameter($1);
|
||||
if ($3 == 0) {
|
||||
yyerror("Invalid divisor.");
|
||||
|
||||
} else if (!simple_param->set_divisor((int)$3)) {
|
||||
} else if (!simple_param->set_divisor($3)) {
|
||||
yyerror("A divisor is only valid on a numeric type.");
|
||||
}
|
||||
if (!simple_param->set_range(double_range)) {
|
||||
@ -404,13 +408,13 @@ type_name:
|
||||
}
|
||||
$$ = simple_param;
|
||||
}
|
||||
| type_token '(' double_range ')' '/' INTEGER
|
||||
| type_token '(' double_range ')' '/' small_unsigned_integer
|
||||
{
|
||||
DCSimpleParameter *simple_param = new DCSimpleParameter($1);
|
||||
if ($6 == 0) {
|
||||
yyerror("Invalid divisor.");
|
||||
|
||||
} else if (!simple_param->set_divisor((int)$6)) {
|
||||
} else if (!simple_param->set_divisor($6)) {
|
||||
yyerror("A divisor is only valid on a numeric type.");
|
||||
}
|
||||
if (!simple_param->set_range(double_range)) {
|
||||
@ -494,62 +498,29 @@ uint_range:
|
||||
{
|
||||
uint_range.clear();
|
||||
}
|
||||
| INTEGER
|
||||
{
|
||||
if ($1 < 0) {
|
||||
yyerror("Nonnegative values only");
|
||||
} else {
|
||||
uint_range.clear();
|
||||
if (!uint_range.add_range((unsigned int)$1, (unsigned int)$1)) {
|
||||
yyerror("Overlapping range");
|
||||
}
|
||||
}
|
||||
}
|
||||
| INTEGER '-' INTEGER
|
||||
{
|
||||
if ($1 < 0 || $3 < 0) {
|
||||
yyerror("Nonnegative values only");
|
||||
} else {
|
||||
uint_range.clear();
|
||||
if (!uint_range.add_range((unsigned int)$1, (unsigned int)$3)) {
|
||||
yyerror("Overlapping range");
|
||||
}
|
||||
}
|
||||
}
|
||||
| INTEGER INTEGER
|
||||
| small_unsigned_integer
|
||||
{
|
||||
uint_range.clear();
|
||||
if ($2 >= 0) {
|
||||
yyerror("Syntax error");
|
||||
} else if ($1 < 0) {
|
||||
yyerror("Nonnegative values only");
|
||||
} else if (!uint_range.add_range((unsigned int)$1, (unsigned int)-$2)) {
|
||||
if (!uint_range.add_range($1, $1)) {
|
||||
yyerror("Overlapping range");
|
||||
}
|
||||
}
|
||||
| uint_range ',' INTEGER
|
||||
| small_unsigned_integer '-' small_unsigned_integer
|
||||
{
|
||||
if ($3 < 0) {
|
||||
yyerror("Nonnegative values only");
|
||||
} else if (!uint_range.add_range((unsigned int)$3, (unsigned int)$3)) {
|
||||
uint_range.clear();
|
||||
if (!uint_range.add_range($1, $3)) {
|
||||
yyerror("Overlapping range");
|
||||
}
|
||||
}
|
||||
| uint_range ',' INTEGER '-' INTEGER
|
||||
| uint_range ',' small_unsigned_integer
|
||||
{
|
||||
if ($3 < 0 || $5 < 0) {
|
||||
yyerror("Nonnegative values only");
|
||||
} else if (!uint_range.add_range((unsigned int)$3, (unsigned int)$5)) {
|
||||
if (!uint_range.add_range($3, $3)) {
|
||||
yyerror("Overlapping range");
|
||||
}
|
||||
}
|
||||
| uint_range ',' INTEGER INTEGER
|
||||
| uint_range ',' small_unsigned_integer '-' small_unsigned_integer
|
||||
{
|
||||
if ($4 >= 0) {
|
||||
yyerror("Syntax error");
|
||||
} else if ($3 < 0) {
|
||||
yyerror("Nonnegative values only");
|
||||
} else if (!uint_range.add_range((unsigned int)$3, (unsigned int)-$4)) {
|
||||
if (!uint_range.add_range($3, $5)) {
|
||||
yyerror("Overlapping range");
|
||||
}
|
||||
}
|
||||
@ -569,7 +540,7 @@ parameter_definition:
|
||||
current_parameter->set_name($1);
|
||||
$$ = current_parameter;
|
||||
}
|
||||
| parameter_definition '/' INTEGER
|
||||
| parameter_definition '/' small_unsigned_integer
|
||||
{
|
||||
if ($3 == 0) {
|
||||
yyerror("Invalid divisor.");
|
||||
@ -578,7 +549,7 @@ parameter_definition:
|
||||
yyerror("A divisor is only allowed on a primitive type.");
|
||||
|
||||
} else {
|
||||
if (!$1->as_simple_parameter()->set_divisor((int)$3)) {
|
||||
if (!$1->as_simple_parameter()->set_divisor($3)) {
|
||||
yyerror("A divisor is only valid on a numeric type.");
|
||||
}
|
||||
}
|
||||
@ -589,8 +560,31 @@ parameter_definition:
|
||||
}
|
||||
;
|
||||
|
||||
small_unsigned_integer:
|
||||
UNSIGNED_INTEGER
|
||||
{
|
||||
$$ = (unsigned int)$1;
|
||||
if ($$ != $1) {
|
||||
yyerror("Number out of range.");
|
||||
$$ = 1;
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
signed_integer:
|
||||
SIGNED_INTEGER
|
||||
;
|
||||
|
||||
unsigned_integer:
|
||||
UNSIGNED_INTEGER
|
||||
;
|
||||
|
||||
number:
|
||||
INTEGER
|
||||
unsigned_integer
|
||||
{
|
||||
$$ = (double)$1;
|
||||
}
|
||||
| signed_integer
|
||||
{
|
||||
$$ = (double)$1;
|
||||
}
|
||||
@ -598,9 +592,13 @@ number:
|
||||
;
|
||||
|
||||
parameter_value:
|
||||
INTEGER
|
||||
signed_integer
|
||||
{
|
||||
current_packer->pack_int64($1);
|
||||
}
|
||||
| unsigned_integer
|
||||
{
|
||||
current_packer->pack_uint64($1);
|
||||
}
|
||||
| REAL
|
||||
{
|
||||
@ -638,21 +636,27 @@ parameter_value:
|
||||
{
|
||||
current_packer->pop();
|
||||
}
|
||||
| INTEGER '*' INTEGER
|
||||
| signed_integer '*' small_unsigned_integer
|
||||
{
|
||||
for (int i = 0; i < $3; i++) {
|
||||
for (unsigned int i = 0; i < $3; i++) {
|
||||
current_packer->pack_int64($1);
|
||||
}
|
||||
}
|
||||
| REAL '*' INTEGER
|
||||
| unsigned_integer '*' small_unsigned_integer
|
||||
{
|
||||
for (int i = 0; i < $3; i++) {
|
||||
for (unsigned int i = 0; i < $3; i++) {
|
||||
current_packer->pack_uint64($1);
|
||||
}
|
||||
}
|
||||
| REAL '*' small_unsigned_integer
|
||||
{
|
||||
for (unsigned int i = 0; i < $3; i++) {
|
||||
current_packer->pack_double($1);
|
||||
}
|
||||
}
|
||||
| HEX_STRING '*' INTEGER
|
||||
| HEX_STRING '*' small_unsigned_integer
|
||||
{
|
||||
for (int i = 0; i < $3; i++) {
|
||||
for (unsigned int i = 0; i < $3; i++) {
|
||||
current_packer->pack_literal_value($1);
|
||||
}
|
||||
}
|
||||
|
@ -45,7 +45,10 @@ int dcyyparse();
|
||||
class DCTokenType {
|
||||
public:
|
||||
union U {
|
||||
PN_int64 integer;
|
||||
int s_int;
|
||||
unsigned int s_uint;
|
||||
PN_int64 int64;
|
||||
PN_uint64 uint64;
|
||||
double real;
|
||||
bool flag;
|
||||
DCClass *dclass;
|
||||
|
@ -31,7 +31,7 @@ DCSimpleParameter::Uint32Uint8Type *DCSimpleParameter::_uint32uint8_type = NULL;
|
||||
// Description:
|
||||
////////////////////////////////////////////////////////////////////
|
||||
DCSimpleParameter::
|
||||
DCSimpleParameter(DCSubatomicType type, int divisor) :
|
||||
DCSimpleParameter(DCSubatomicType type, unsigned int divisor) :
|
||||
_type(type),
|
||||
_divisor(1)
|
||||
{
|
||||
@ -270,7 +270,7 @@ get_divisor() const {
|
||||
// accept a divisor.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
bool DCSimpleParameter::
|
||||
set_divisor(int divisor) {
|
||||
set_divisor(unsigned int divisor) {
|
||||
if (_pack_type == PT_string || divisor == 0) {
|
||||
return false;
|
||||
}
|
||||
@ -306,11 +306,11 @@ set_range(const DCDoubleRange &range) {
|
||||
case ST_int8array:
|
||||
_int_range.clear();
|
||||
for (i = 0; i < num_ranges; i++) {
|
||||
int min = (int)floor(range.get_min(i) * _divisor + 0.5);
|
||||
int max = (int)floor(range.get_max(i) * _divisor + 0.5);
|
||||
validate_int_limits(min, 8, range_error);
|
||||
validate_int_limits(max, 8, range_error);
|
||||
_int_range.add_range(min, max);
|
||||
PN_int64 min = (PN_int64)floor(range.get_min(i) * _divisor + 0.5);
|
||||
PN_int64 max = (PN_int64)floor(range.get_max(i) * _divisor + 0.5);
|
||||
validate_int64_limits(min, 8, range_error);
|
||||
validate_int64_limits(max, 8, range_error);
|
||||
_int_range.add_range((int)min, (int)max);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -318,11 +318,11 @@ set_range(const DCDoubleRange &range) {
|
||||
case ST_int16array:
|
||||
_int_range.clear();
|
||||
for (i = 0; i < num_ranges; i++) {
|
||||
int min = (int)floor(range.get_min(i) * _divisor + 0.5);
|
||||
int max = (int)floor(range.get_max(i) * _divisor + 0.5);
|
||||
validate_int_limits(min, 16, range_error);
|
||||
validate_int_limits(max, 16, range_error);
|
||||
_int_range.add_range(min, max);
|
||||
PN_int64 min = (PN_int64)floor(range.get_min(i) * _divisor + 0.5);
|
||||
PN_int64 max = (PN_int64)floor(range.get_max(i) * _divisor + 0.5);
|
||||
validate_int64_limits(min, 16, range_error);
|
||||
validate_int64_limits(max, 16, range_error);
|
||||
_int_range.add_range((int)min, (int)max);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -330,9 +330,11 @@ set_range(const DCDoubleRange &range) {
|
||||
case ST_int32array:
|
||||
_int_range.clear();
|
||||
for (i = 0; i < num_ranges; i++) {
|
||||
int min = (int)floor(range.get_min(i) * _divisor + 0.5);
|
||||
int max = (int)floor(range.get_max(i) * _divisor + 0.5);
|
||||
_int_range.add_range(min, max);
|
||||
PN_int64 min = (PN_int64)floor(range.get_min(i) * _divisor + 0.5);
|
||||
PN_int64 max = (PN_int64)floor(range.get_max(i) * _divisor + 0.5);
|
||||
validate_int64_limits(min, 32, range_error);
|
||||
validate_int64_limits(max, 32, range_error);
|
||||
_int_range.add_range((int)min, (int)max);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -349,11 +351,11 @@ set_range(const DCDoubleRange &range) {
|
||||
case ST_uint8array:
|
||||
_uint_range.clear();
|
||||
for (i = 0; i < num_ranges; i++) {
|
||||
unsigned int min = (unsigned int)floor(range.get_min(i) * _divisor + 0.5);
|
||||
unsigned int max = (unsigned int)floor(range.get_max(i) * _divisor + 0.5);
|
||||
validate_uint_limits(min, 8, range_error);
|
||||
validate_uint_limits(max, 8, range_error);
|
||||
_uint_range.add_range(min, max);
|
||||
PN_uint64 min = (PN_uint64)floor(range.get_min(i) * _divisor + 0.5);
|
||||
PN_uint64 max = (PN_uint64)floor(range.get_max(i) * _divisor + 0.5);
|
||||
validate_uint64_limits(min, 8, range_error);
|
||||
validate_uint64_limits(max, 8, range_error);
|
||||
_uint_range.add_range((unsigned int)min, (unsigned int)max);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -361,11 +363,11 @@ set_range(const DCDoubleRange &range) {
|
||||
case ST_uint16array:
|
||||
_uint_range.clear();
|
||||
for (i = 0; i < num_ranges; i++) {
|
||||
unsigned int min = (unsigned int)floor(range.get_min(i) * _divisor + 0.5);
|
||||
unsigned int max = (unsigned int)floor(range.get_max(i) * _divisor + 0.5);
|
||||
validate_uint_limits(min, 16, range_error);
|
||||
validate_uint_limits(max, 16, range_error);
|
||||
_uint_range.add_range(min, max);
|
||||
PN_uint64 min = (PN_uint64)floor(range.get_min(i) * _divisor + 0.5);
|
||||
PN_uint64 max = (PN_uint64)floor(range.get_max(i) * _divisor + 0.5);
|
||||
validate_uint64_limits(min, 16, range_error);
|
||||
validate_uint64_limits(max, 16, range_error);
|
||||
_uint_range.add_range((unsigned int)min, (unsigned int)max);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -373,9 +375,11 @@ set_range(const DCDoubleRange &range) {
|
||||
case ST_uint32array:
|
||||
_uint_range.clear();
|
||||
for (i = 0; i < num_ranges; i++) {
|
||||
unsigned int min = (unsigned int)floor(range.get_min(i) * _divisor + 0.5);
|
||||
unsigned int max = (unsigned int)floor(range.get_max(i) * _divisor + 0.5);
|
||||
_uint_range.add_range(min, max);
|
||||
PN_uint64 min = (PN_uint64)floor(range.get_min(i) * _divisor + 0.5);
|
||||
PN_uint64 max = (PN_uint64)floor(range.get_max(i) * _divisor + 0.5);
|
||||
validate_uint64_limits(min, 32, range_error);
|
||||
validate_uint64_limits(max, 32, range_error);
|
||||
_uint_range.add_range((unsigned int)min, (unsigned int)max);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -401,11 +405,11 @@ set_range(const DCDoubleRange &range) {
|
||||
case ST_blob:
|
||||
_uint_range.clear();
|
||||
for (i = 0; i < num_ranges; i++) {
|
||||
unsigned int min = (unsigned int)floor(range.get_min(i) * _divisor + 0.5);
|
||||
unsigned int max = (unsigned int)floor(range.get_max(i) * _divisor + 0.5);
|
||||
validate_uint_limits(min, 16, range_error);
|
||||
validate_uint_limits(max, 16, range_error);
|
||||
_uint_range.add_range(min, max);
|
||||
PN_uint64 min = (PN_uint64)floor(range.get_min(i) * _divisor + 0.5);
|
||||
PN_uint64 max = (PN_uint64)floor(range.get_max(i) * _divisor + 0.5);
|
||||
validate_uint64_limits(min, 16, range_error);
|
||||
validate_uint64_limits(max, 16, range_error);
|
||||
_uint_range.add_range((unsigned int)min, (unsigned int)max);
|
||||
}
|
||||
if (_uint_range.has_one_value()) {
|
||||
// If we now have a fixed-length string requirement, we don't
|
||||
@ -424,9 +428,11 @@ set_range(const DCDoubleRange &range) {
|
||||
case ST_blob32:
|
||||
_uint_range.clear();
|
||||
for (i = 0; i < num_ranges; i++) {
|
||||
unsigned int min = (unsigned int)floor(range.get_min(i) * _divisor + 0.5);
|
||||
unsigned int max = (unsigned int)floor(range.get_max(i) * _divisor + 0.5);
|
||||
_uint_range.add_range(min, max);
|
||||
PN_uint64 min = (PN_uint64)floor(range.get_min(i) * _divisor + 0.5);
|
||||
PN_uint64 max = (PN_uint64)floor(range.get_max(i) * _divisor + 0.5);
|
||||
validate_uint64_limits(min, 32, range_error);
|
||||
validate_uint64_limits(max, 32, range_error);
|
||||
_uint_range.add_range((unsigned int)min, (unsigned int)max);
|
||||
}
|
||||
if (_uint_range.has_one_value()) {
|
||||
// If we now have a fixed-length string requirement, we don't
|
||||
@ -1952,7 +1958,7 @@ generate_hash(HashGenerator &hashgen) const {
|
||||
// if it is not already created.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
DCSimpleParameter *DCSimpleParameter::
|
||||
create_nested_field(DCSubatomicType type, int divisor) {
|
||||
create_nested_field(DCSubatomicType type, unsigned int divisor) {
|
||||
DivisorMap divisor_map = _nested_field_map[type];
|
||||
DivisorMap::iterator di;
|
||||
di = divisor_map.find(divisor);
|
||||
|
@ -35,7 +35,7 @@
|
||||
////////////////////////////////////////////////////////////////////
|
||||
class EXPCL_DIRECT DCSimpleParameter : public DCParameter {
|
||||
public:
|
||||
DCSimpleParameter(DCSubatomicType type, int divisor = 1);
|
||||
DCSimpleParameter(DCSubatomicType type, unsigned int divisor = 1);
|
||||
DCSimpleParameter(const DCSimpleParameter ©);
|
||||
|
||||
PUBLISHED:
|
||||
@ -47,7 +47,7 @@ PUBLISHED:
|
||||
int get_divisor() const;
|
||||
|
||||
public:
|
||||
bool set_divisor(int divisor);
|
||||
bool set_divisor(unsigned int divisor);
|
||||
bool set_range(const DCDoubleRange &range);
|
||||
|
||||
virtual int calc_num_nested_fields(size_t length_bytes) const;
|
||||
@ -87,12 +87,13 @@ public:
|
||||
virtual void generate_hash(HashGenerator &hashgen) const;
|
||||
|
||||
private:
|
||||
static DCSimpleParameter *create_nested_field(DCSubatomicType type, int divisor);
|
||||
static DCSimpleParameter *create_nested_field(DCSubatomicType type,
|
||||
unsigned int divisor);
|
||||
static DCPackerInterface *create_uint32uint8_type();
|
||||
|
||||
private:
|
||||
DCSubatomicType _type;
|
||||
int _divisor;
|
||||
unsigned int _divisor;
|
||||
|
||||
DCSubatomicType _nested_type;
|
||||
DCPackerInterface *_nested_field;
|
||||
@ -101,7 +102,7 @@ private:
|
||||
// The rest of this is to maintain the static list of
|
||||
// DCPackerInterface objects for _nested_field, above. We allocate
|
||||
// each possible object once, and don't delete it.
|
||||
typedef pmap<int, DCSimpleParameter *> DivisorMap;
|
||||
typedef pmap<unsigned int, DCSimpleParameter *> DivisorMap;
|
||||
typedef pmap<DCSubatomicType, DivisorMap> NestedFieldMap;
|
||||
static NestedFieldMap _nested_field_map;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user