support spaces in node names

This commit is contained in:
David Rose 2005-10-14 21:38:51 +00:00
parent b49c72cc5d
commit 0d8cfd3131
5 changed files with 3471 additions and 3159 deletions

View File

@ -28,7 +28,7 @@
#define YY_FLEX_MINOR_VERSION 5 #define YY_FLEX_MINOR_VERSION 5
#include <stdio.h> #include <stdio.h>
#include <errno.h>
/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
#ifdef c_plusplus #ifdef c_plusplus
@ -41,6 +41,8 @@
#ifdef __cplusplus #ifdef __cplusplus
#include <stdlib.h> #include <stdlib.h>
#ifndef _WIN32
#endif
/* Use prototypes in function declarations. */ /* Use prototypes in function declarations. */
#define YY_USE_PROTOS #define YY_USE_PROTOS
@ -80,6 +82,7 @@
#define YY_PROTO(proto) () #define YY_PROTO(proto) ()
#endif #endif
/* Returned upon end-of-file. */ /* Returned upon end-of-file. */
#define YY_NULL 0 #define YY_NULL 0
@ -302,47 +305,51 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
*yy_cp = '\0'; \ *yy_cp = '\0'; \
yy_c_buf_p = yy_cp; yy_c_buf_p = yy_cp;
#define YY_NUM_RULES 34 #define YY_NUM_RULES 35
#define YY_END_OF_BUFFER 35 #define YY_END_OF_BUFFER 36
static yyconst short int yy_acclist[172] = static yyconst short int yy_acclist[194] =
{ 0, { 0,
35, 33, 34, 2, 33, 34, 1, 34, 30, 33, 36, 34, 35, 2, 34, 35, 1, 35, 30, 34,
34, 4, 33, 34, 33, 34, 10, 33, 34, 32, 35, 4, 34, 35, 34, 35, 10, 34, 35, 32,
33, 34, 9, 33, 34, 33, 34, 26, 33, 34, 34, 35, 9, 34, 35, 34, 35, 26, 34, 35,
11, 33, 34, 31, 33, 34, 7, 33, 34, 8, 11, 34, 35, 31, 34, 35, 7, 34, 35, 8,
33, 34, 32, 33, 34, 32, 33, 34, 32, 33, 34, 35, 32, 34, 35, 32, 34, 35, 32, 34,
34, 32, 33, 34, 32, 33, 34, 32, 33, 34, 35, 32, 34, 35, 32, 34, 35, 32, 34, 35,
32, 33, 34, 32, 33, 34, 32, 33, 34, 32, 32, 34, 35, 32, 34, 35, 32, 34, 35, 32,
33, 34, 5, 33, 34, 6, 33, 34, 1, 4, 34, 35, 5, 34, 35, 6, 34, 35, 1, 4,
26, 32, 26, 32, 3, 27,16412, 32, 32, 32, 26, 32, 33, 26, 32, 32, 33, 3, 27,16412,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 26, 27,16412, 33, 26, 33, 32, 32, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
32, 32, 33, 32, 33, 32, 33, 32, 33, 29,
3, 27, 33, 33, 33, 33, 32, 32, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
8220, 32, 13, 32, 14, 32, 32, 32, 32, 32,
32, 32, 32, 32, 32, 32, 25, 32, 29, 29,
12, 32, 32, 32, 17, 32, 19, 32, 32, 32,
24, 32, 32, 22, 32, 32, 32, 16, 32, 18,
32, 20, 32, 32, 32, 29, 15, 32, 32, 23,
32, 21, 32
32, 29, 3, 27, 32, 32, 32, 32, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32, 8220, 32,
13, 32, 14, 32, 32, 32, 32, 32, 32, 32,
32, 32, 32, 32, 25, 32, 29, 29, 12, 32,
32, 32, 17, 32, 19, 32, 32, 32, 24, 32,
32, 22, 32, 32, 32, 16, 32, 18, 32, 20,
32, 32, 32, 29, 15, 32, 32, 23, 32, 21,
32
} ; } ;
static yyconst short int yy_accept[122] = static yyconst short int yy_accept[136] =
{ 0, { 0,
1, 1, 1, 2, 4, 7, 9, 12, 15, 17, 1, 1, 1, 2, 4, 7, 9, 12, 15, 17,
20, 23, 26, 28, 31, 34, 37, 40, 43, 46, 20, 23, 26, 28, 31, 34, 37, 40, 43, 46,
49, 52, 55, 58, 61, 64, 67, 70, 73, 76, 49, 52, 55, 58, 61, 64, 67, 70, 73, 76,
79, 80, 81, 81, 82, 83, 85, 85, 86, 88, 79, 80, 81, 81, 82, 84, 86, 88, 88, 89,
88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 91, 94, 95, 95, 96, 97, 98, 99, 100, 101,
98, 99, 100, 101, 102, 103, 103, 104, 104, 105, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 112, 114, 116, 118, 120, 121, 121, 122, 122, 123,
116, 117, 118, 119, 119, 119, 119, 119, 119, 120, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
121, 123, 125, 126, 127, 128, 129, 130, 131, 132, 134, 135, 136, 137, 138, 139, 140, 141, 141, 141,
133, 134, 135, 137, 138, 139, 141, 142, 143, 145, 141, 141, 141, 142, 143, 145, 147, 148, 149, 150,
147, 148, 149, 151, 152, 154, 155, 155, 156, 158, 151, 152, 153, 154, 155, 156, 157, 159, 160, 161,
160, 162, 163, 164, 164, 165, 167, 168, 170, 172, 163, 164, 165, 167, 169, 170, 171, 173, 174, 176,
172 177, 177, 178, 180, 182, 184, 185, 186, 186, 187,
189, 190, 192, 194, 194
} ; } ;
static yyconst int yy_ec[256] = static yyconst int yy_ec[256] =
@ -350,17 +357,17 @@ static yyconst int yy_ec[256] =
1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 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, 2, 1, 5, 6, 1, 1, 1, 1, 1, 1, 5, 1, 6, 7, 1, 1, 1, 1, 1,
1, 1, 7, 8, 9, 10, 11, 12, 12, 12, 1, 1, 8, 9, 10, 11, 12, 13, 13, 13,
12, 12, 12, 12, 12, 12, 12, 1, 13, 14, 13, 13, 13, 13, 13, 13, 13, 1, 14, 15,
1, 1, 1, 1, 18, 19, 20, 21, 22, 23, 1, 1, 1, 1, 19, 20, 21, 22, 23, 24,
24, 25, 26, 17, 17, 27, 28, 29, 30, 31, 25, 26, 27, 18, 18, 28, 29, 30, 31, 32,
17, 32, 33, 34, 35, 17, 36, 17, 37, 17, 18, 33, 34, 35, 36, 18, 37, 18, 38, 18,
15, 1, 16, 1, 17, 1, 18, 19, 20, 21, 16, 1, 17, 1, 18, 1, 19, 20, 21, 22,
22, 23, 24, 25, 26, 17, 17, 27, 28, 29, 23, 24, 25, 26, 27, 18, 18, 28, 29, 30,
30, 31, 17, 32, 33, 34, 35, 17, 36, 17, 31, 32, 18, 33, 34, 35, 36, 18, 37, 18,
37, 17, 38, 1, 39, 1, 1, 1, 1, 1, 38, 18, 39, 1, 40, 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, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@ -377,124 +384,120 @@ static yyconst int yy_ec[256] =
1, 1, 1, 1, 1 1, 1, 1, 1, 1
} ; } ;
static yyconst int yy_meta[40] = static yyconst int yy_meta[41] =
{ 0, { 0,
1, 1, 2, 1, 1, 1, 1, 1, 3, 3, 1, 2, 3, 1, 2, 1, 1, 1, 2, 4,
1, 3, 1, 1, 1, 1, 3, 3, 3, 3, 5, 1, 6, 2, 1, 1, 1, 4, 4, 4,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4,
3, 3, 3, 3, 3, 3, 3, 1, 1 4, 4, 4, 4, 4, 4, 4, 4, 1, 1
} ; } ;
static yyconst short int yy_base[125] = static yyconst short int yy_base[146] =
{ 0, { 0,
0, 0, 266, 267, 267, 0, 267, 0, 30, 267, 0, 0, 234, 235, 235, 0, 235, 0, 30, 235,
31, 253, 253, 42, 267, 267, 267, 267, 253, 35, 34, 220, 220, 46, 235, 235, 235, 235, 0, 198,
36, 37, 38, 39, 43, 41, 49, 46, 267, 267, 192, 16, 15, 201, 27, 205, 33, 196, 235, 235,
0, 0, 250, 73, 251, 80, 87, 0, 108, 89, 0, 0, 213, 56, 58, 70, 0, 53, 0, 83,
48, 50, 47, 62, 77, 84, 88, 93, 94, 95, 220, 64, 76, 98, 0, 0, 191, 188, 203, 186,
96, 97, 109, 98, 134, 125, 0, 248, 143, 113, 184, 188, 187, 180, 183, 184, 185, 187, 185, 178,
117, 118, 128, 130, 138, 144, 103, 142, 147, 149, 77, 85, 0, 0, 111, 118, 0, 197, 94, 104,
148, 51, 151, 153, 247, 157, 246, 169, 267, 154, 105, 0, 0, 190, 185, 174, 172, 182, 164, 174,
247, 246, 163, 165, 164, 166, 173, 168, 174, 176, 161, 164, 155, 153, 163, 156, 147, 116, 150, 119,
177, 178, 245, 194, 202, 244, 183, 189, 243, 242, 145, 131, 235, 119, 0, 0, 129, 126, 131, 117,
180, 203, 240, 207, 237, 208, 214, 209, 234, 231, 117, 119, 120, 111, 105, 104, 0, 124, 0, 0,
230, 188, 210, 225, 226, 226, 220, 225, 221, 267, 104, 100, 0, 0, 88, 81, 0, 82, 0, 72,
242, 245, 191, 248 133, 61, 0, 0, 0, 47, 55, 60, 146, 0,
30, 0, 0, 235, 160, 166, 169, 174, 177, 180,
183, 188, 194, 197, 200
} ; } ;
static yyconst short int yy_def[125] = static yyconst short int yy_def[146] =
{ 0, { 0,
120, 1, 120, 120, 120, 121, 120, 122, 120, 120, 134, 1, 134, 134, 134, 135, 134, 136, 134, 134,
123, 120, 120, 120, 120, 120, 120, 120, 123, 123, 137, 134, 134, 138, 134, 134, 134, 134, 139, 139,
123, 123, 123, 123, 123, 123, 123, 123, 120, 120, 139, 139, 139, 139, 139, 139, 139, 139, 134, 134,
121, 122, 120, 120, 123, 123, 120, 124, 120, 120, 135, 136, 134, 134, 140, 137, 141, 142, 143, 134,
123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 40, 144, 142, 138, 145, 139, 139, 139, 139, 139,
123, 123, 123, 123, 120, 120, 124, 120, 120, 123, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 140, 140, 141, 141, 134, 134, 143, 134, 40, 144,
123, 123, 123, 120, 120, 120, 120, 120, 120, 123, 144, 145, 145, 139, 139, 139, 139, 139, 139, 139,
123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 139, 139, 139, 139, 139, 139, 139, 134, 134, 134,
123, 123, 123, 120, 120, 123, 123, 123, 123, 123, 134, 134, 134, 139, 139, 139, 139, 139, 139, 139,
123, 123, 123, 123, 123, 123, 120, 123, 123, 123, 139, 139, 139, 139, 139, 139, 139, 142, 108, 139,
123, 123, 123, 120, 120, 123, 123, 123, 123, 0, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
120, 120, 120, 120 134, 139, 139, 139, 139, 139, 139, 134, 134, 139,
139, 139, 139, 0, 134, 134, 134, 134, 134, 134,
134, 134, 134, 134, 134
} ; } ;
static yyconst short int yy_nxt[307] = static yyconst short int yy_nxt[276] =
{ 0, { 0,
4, 5, 6, 5, 7, 8, 9, 10, 11, 12, 4, 5, 6, 5, 5, 7, 8, 9, 10, 11,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
23, 19, 24, 19, 19, 19, 19, 19, 19, 19, 22, 23, 19, 24, 19, 19, 19, 19, 19, 19,
19, 19, 25, 26, 27, 28, 19, 29, 30, 33, 19, 19, 19, 25, 26, 27, 28, 19, 29, 30,
33, 34, 36, 39, 120, 120, 120, 120, 120, 39, 33, 49, 34, 35, 33, 51, 36, 40, 54, 50,
120, 40, 120, 34, 39, 120, 120, 120, 120, 120, 41, 52, 133, 58, 40, 42, 43, 40, 44, 40,
120, 43, 51, 48, 62, 47, 41, 45, 52, 44, 41, 55, 59, 56, 40, 38, 43, 61, 34, 40,
92, 120, 42, 46, 39, 54, 49, 53, 50, 60, 62, 40, 129, 70, 41, 66, 71, 132, 40, 35,
39, 39, 40, 61, 34, 39, 120, 39, 55, 40, 43, 131, 36, 40, 40, 130, 61, 40, 38, 62,
55, 36, 39, 120, 55, 63, 55, 120, 37, 55, 68, 40, 68, 127, 61, 69, 40, 62, 66, 40,
37, 55, 120, 120, 120, 120, 120, 120, 56, 39, 126, 134, 41, 134, 93, 125, 40, 42, 43, 124,
56, 64, 120, 65, 58, 39, 58, 66, 120, 59, 44, 40, 65, 70, 70, 65, 71, 71, 88, 65,
39, 71, 120, 70, 69, 68, 120, 120, 67, 73, 88, 89, 123, 90, 65, 91, 89, 91, 90, 109,
80, 77, 87, 77, 72, 55, 78, 120, 81, 120, 92, 90, 65, 122, 120, 65, 108, 119, 118, 65,
74, 55, 74, 75, 39, 76, 55, 120, 84, 82, 128, 117, 128, 92, 65, 129, 121, 65, 116, 115,
39, 120, 79, 120, 59, 39, 120, 120, 120, 83, 65, 114, 113, 112, 65, 111, 110, 92, 129, 65,
120, 86, 75, 120, 76, 91, 95, 88, 76, 85, 31, 31, 108, 31, 31, 31, 32, 32, 107, 32,
55, 93, 120, 120, 120, 120, 55, 120, 89, 90, 32, 32, 37, 37, 37, 45, 106, 45, 45, 45,
78, 55, 120, 120, 99, 120, 120, 120, 97, 120, 46, 105, 46, 63, 104, 63, 64, 103, 64, 65,
96, 98, 120, 35, 103, 55, 102, 120, 120, 100, 102, 101, 100, 65, 67, 67, 99, 67, 67, 67,
110, 55, 104, 55, 101, 94, 55, 106, 105, 55, 72, 98, 72, 73, 97, 73, 96, 95, 94, 69,
109, 108, 120, 94, 55, 107, 120, 120, 120, 120, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78,
114, 117, 114, 107, 112, 115, 111, 55, 113, 120, 77, 76, 75, 74, 41, 38, 60, 57, 53, 48,
120, 118, 116, 55, 120, 120, 115, 115, 55, 120, 47, 39, 38, 134, 3, 134, 134, 134, 134, 134,
120, 119, 31, 120, 31, 32, 120, 32, 57, 120, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
57, 120, 120, 120, 120, 120, 120, 78, 94, 59, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
120, 37, 120, 38, 37, 120, 3, 120, 120, 120, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 134, 134, 134, 134, 134
120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
120, 120, 120, 120, 120, 120
} ; } ;
static yyconst short int yy_chk[307] = static yyconst short int yy_chk[276] =
{ 0, { 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, 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, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
11, 9, 11, 14, 20, 21, 22, 23, 24, 14, 9, 22, 9, 11, 11, 23, 11, 14, 25, 22,
26, 14, 25, 14, 14, 28, 43, 41, 27, 42, 14, 23, 131, 27, 14, 14, 14, 34, 14, 14,
72, 22, 26, 25, 43, 24, 20, 23, 27, 22, 34, 25, 27, 25, 34, 38, 34, 35, 34, 34,
72, 44, 21, 23, 34, 28, 25, 27, 25, 41, 35, 36, 128, 42, 36, 38, 42, 127, 36, 36,
34, 36, 34, 42, 34, 34, 45, 36, 37, 36, 36, 126, 36, 36, 40, 122, 61, 40, 43, 61,
40, 36, 36, 46, 37, 44, 40, 47, 37, 37, 40, 40, 40, 120, 62, 40, 40, 62, 43, 44,
40, 40, 48, 49, 50, 51, 52, 54, 37, 39, 118, 69, 44, 69, 69, 116, 44, 44, 44, 115,
40, 45, 67, 46, 39, 39, 39, 47, 53, 39, 44, 44, 65, 70, 71, 65, 70, 71, 65, 65,
39, 52, 60, 51, 50, 49, 61, 62, 48, 54, 65, 65, 112, 65, 65, 66, 88, 66, 88, 90,
60, 56, 67, 56, 53, 55, 56, 63, 61, 64, 66, 90, 92, 111, 106, 92, 108, 105, 104, 92,
55, 55, 55, 55, 59, 55, 55, 65, 64, 62, 121, 103, 121, 92, 92, 121, 108, 129, 102, 101,
59, 68, 59, 66, 59, 59, 69, 71, 70, 63, 129, 100, 99, 98, 129, 97, 94, 91, 129, 129,
73, 66, 74, 80, 74, 71, 76, 68, 76, 65, 135, 135, 89, 135, 135, 135, 136, 136, 87, 136,
78, 73, 83, 85, 84, 86, 78, 88, 69, 70, 136, 136, 137, 137, 137, 138, 86, 138, 138, 138,
78, 78, 87, 89, 85, 90, 91, 92, 83, 101, 139, 85, 139, 140, 84, 140, 141, 83, 141, 142,
80, 84, 97, 123, 89, 94, 88, 112, 98, 86, 82, 81, 80, 142, 143, 143, 79, 143, 143, 143,
101, 94, 90, 95, 87, 94, 94, 92, 91, 95, 144, 78, 144, 145, 77, 145, 76, 75, 74, 68,
98, 97, 102, 95, 95, 94, 104, 106, 108, 113, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51,
107, 112, 107, 95, 104, 107, 102, 115, 106, 117, 50, 49, 48, 47, 41, 33, 28, 26, 24, 21,
119, 113, 108, 115, 118, 116, 114, 115, 115, 111, 20, 13, 12, 3, 134, 134, 134, 134, 134, 134,
110, 117, 121, 109, 121, 122, 105, 122, 124, 103, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
124, 100, 99, 96, 93, 82, 81, 77, 75, 58, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
35, 33, 19, 13, 12, 3, 120, 120, 120, 120, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 134, 134, 134, 134, 134
120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
120, 120, 120, 120, 120, 120
} ; } ;
static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr; static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
@ -919,7 +922,7 @@ inline void accept() {
x_col_number += yyleng; x_col_number += yyleng;
} }
#line 924 "lex.yy.c" #line 927 "lex.yy.c"
/* Macros after this point can all be overridden by user definitions in /* Macros after this point can all be overridden by user definitions in
* section 1. * section 1.
@ -1019,9 +1022,20 @@ YY_MALLOC_DECL
YY_FATAL_ERROR( "input in flex scanner failed" ); \ YY_FATAL_ERROR( "input in flex scanner failed" ); \
result = n; \ result = n; \
} \ } \
else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ else \
&& ferror( yyin ) ) \ { \
YY_FATAL_ERROR( "input in flex scanner failed" ); errno=0; \
while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
{ \
if( errno != EINTR) \
{ \
YY_FATAL_ERROR( "input in flex scanner failed" ); \
break; \
} \
errno=0; \
clearerr(yyin); \
} \
}
#endif #endif
/* No semi-colon after return; correct usage is to write "yyterminate();" - /* No semi-colon after return; correct usage is to write "yyterminate();" -
@ -1067,16 +1081,16 @@ YY_MALLOC_DECL
YY_DECL YY_DECL
{ {
register yy_state_type yy_current_state; register yy_state_type yy_current_state;
register char *yy_cp = NULL, *yy_bp = NULL; register char *yy_cp, *yy_bp;
register int yy_act; register int yy_act;
#line 406 "xLexer.lxx" #line 407 "xLexer.lxx"
#line 1081 "lex.yy.c" #line 1095 "lex.yy.c"
if ( yy_init ) if ( yy_init )
{ {
@ -1124,14 +1138,14 @@ yy_match:
while ( yy_chk[yy_base[yy_current_state] + yy_c] != 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]; yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 121 ) if ( yy_current_state >= 135 )
yy_c = yy_meta[(unsigned int) yy_c]; yy_c = yy_meta[(unsigned int) yy_c];
} }
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
*yy_state_ptr++ = yy_current_state; *yy_state_ptr++ = yy_current_state;
++yy_cp; ++yy_cp;
} }
while ( yy_base[yy_current_state] != 267 ); while ( yy_base[yy_current_state] != 235 );
yy_find_action: yy_find_action:
yy_current_state = *--yy_state_ptr; yy_current_state = *--yy_state_ptr;
@ -1182,7 +1196,7 @@ do_action: /* This label is used only to access EOF actions. */
{ /* beginning of action switch */ { /* beginning of action switch */
case 1: case 1:
YY_RULE_SETUP YY_RULE_SETUP
#line 411 "xLexer.lxx" #line 412 "xLexer.lxx"
{ {
// New line. Save a copy of the line so we can print it out for the // 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. // benefit of the user in case we get an error.
@ -1199,7 +1213,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 2: case 2:
YY_RULE_SETUP YY_RULE_SETUP
#line 425 "xLexer.lxx" #line 426 "xLexer.lxx"
{ {
// Eat whitespace. // Eat whitespace.
accept(); accept();
@ -1207,7 +1221,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 3: case 3:
YY_RULE_SETUP YY_RULE_SETUP
#line 430 "xLexer.lxx" #line 431 "xLexer.lxx"
{ {
// Eat C++-style comments. // Eat C++-style comments.
accept(); accept();
@ -1215,7 +1229,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 4: case 4:
YY_RULE_SETUP YY_RULE_SETUP
#line 435 "xLexer.lxx" #line 436 "xLexer.lxx"
{ {
// Eat sh-style comments. // Eat sh-style comments.
accept(); accept();
@ -1223,7 +1237,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 5: case 5:
YY_RULE_SETUP YY_RULE_SETUP
#line 440 "xLexer.lxx" #line 441 "xLexer.lxx"
{ {
accept(); accept();
return TOKEN_OBRACE; return TOKEN_OBRACE;
@ -1231,7 +1245,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 6: case 6:
YY_RULE_SETUP YY_RULE_SETUP
#line 445 "xLexer.lxx" #line 446 "xLexer.lxx"
{ {
accept(); accept();
return TOKEN_CBRACE; return TOKEN_CBRACE;
@ -1239,7 +1253,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 7: case 7:
YY_RULE_SETUP YY_RULE_SETUP
#line 450 "xLexer.lxx" #line 451 "xLexer.lxx"
{ {
accept(); accept();
return TOKEN_OBRACKET; return TOKEN_OBRACKET;
@ -1247,7 +1261,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 8: case 8:
YY_RULE_SETUP YY_RULE_SETUP
#line 455 "xLexer.lxx" #line 456 "xLexer.lxx"
{ {
accept(); accept();
return TOKEN_CBRACKET; return TOKEN_CBRACKET;
@ -1255,7 +1269,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 9: case 9:
YY_RULE_SETUP YY_RULE_SETUP
#line 460 "xLexer.lxx" #line 461 "xLexer.lxx"
{ {
accept(); accept();
return TOKEN_DOT; return TOKEN_DOT;
@ -1263,7 +1277,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 10: case 10:
YY_RULE_SETUP YY_RULE_SETUP
#line 465 "xLexer.lxx" #line 466 "xLexer.lxx"
{ {
accept(); accept();
return TOKEN_COMMA; return TOKEN_COMMA;
@ -1271,7 +1285,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 11: case 11:
YY_RULE_SETUP YY_RULE_SETUP
#line 470 "xLexer.lxx" #line 471 "xLexer.lxx"
{ {
accept(); accept();
return TOKEN_SEMICOLON; return TOKEN_SEMICOLON;
@ -1279,7 +1293,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 12: case 12:
YY_RULE_SETUP YY_RULE_SETUP
#line 475 "xLexer.lxx" #line 476 "xLexer.lxx"
{ {
accept(); accept();
return TOKEN_ARRAY; return TOKEN_ARRAY;
@ -1287,7 +1301,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 13: case 13:
YY_RULE_SETUP YY_RULE_SETUP
#line 480 "xLexer.lxx" #line 481 "xLexer.lxx"
{ {
accept(); accept();
return TOKEN_UCHAR; return TOKEN_UCHAR;
@ -1295,7 +1309,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 14: case 14:
YY_RULE_SETUP YY_RULE_SETUP
#line 485 "xLexer.lxx" #line 486 "xLexer.lxx"
{ {
accept(); accept();
return TOKEN_CHAR; return TOKEN_CHAR;
@ -1303,7 +1317,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 15: case 15:
YY_RULE_SETUP YY_RULE_SETUP
#line 490 "xLexer.lxx" #line 491 "xLexer.lxx"
{ {
accept(); accept();
return TOKEN_CSTRING; return TOKEN_CSTRING;
@ -1311,7 +1325,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 16: case 16:
YY_RULE_SETUP YY_RULE_SETUP
#line 495 "xLexer.lxx" #line 496 "xLexer.lxx"
{ {
accept(); accept();
return TOKEN_DOUBLE; return TOKEN_DOUBLE;
@ -1319,7 +1333,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 17: case 17:
YY_RULE_SETUP YY_RULE_SETUP
#line 500 "xLexer.lxx" #line 501 "xLexer.lxx"
{ {
accept(); accept();
return TOKEN_DWORD; return TOKEN_DWORD;
@ -1327,7 +1341,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 18: case 18:
YY_RULE_SETUP YY_RULE_SETUP
#line 505 "xLexer.lxx" #line 506 "xLexer.lxx"
{ {
accept(); accept();
return TOKEN_SDWORD; return TOKEN_SDWORD;
@ -1335,7 +1349,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 19: case 19:
YY_RULE_SETUP YY_RULE_SETUP
#line 510 "xLexer.lxx" #line 511 "xLexer.lxx"
{ {
accept(); accept();
return TOKEN_FLOAT; return TOKEN_FLOAT;
@ -1343,7 +1357,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 20: case 20:
YY_RULE_SETUP YY_RULE_SETUP
#line 515 "xLexer.lxx" #line 516 "xLexer.lxx"
{ {
accept(); accept();
return TOKEN_LPSTR; return TOKEN_LPSTR;
@ -1351,7 +1365,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 21: case 21:
YY_RULE_SETUP YY_RULE_SETUP
#line 520 "xLexer.lxx" #line 521 "xLexer.lxx"
{ {
accept(); accept();
return TOKEN_TEMPLATE; return TOKEN_TEMPLATE;
@ -1359,7 +1373,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 22: case 22:
YY_RULE_SETUP YY_RULE_SETUP
#line 525 "xLexer.lxx" #line 526 "xLexer.lxx"
{ {
accept(); accept();
return TOKEN_UCHAR; return TOKEN_UCHAR;
@ -1367,7 +1381,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 23: case 23:
YY_RULE_SETUP YY_RULE_SETUP
#line 530 "xLexer.lxx" #line 531 "xLexer.lxx"
{ {
accept(); accept();
return TOKEN_UNICODE; return TOKEN_UNICODE;
@ -1375,7 +1389,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 24: case 24:
YY_RULE_SETUP YY_RULE_SETUP
#line 535 "xLexer.lxx" #line 536 "xLexer.lxx"
{ {
accept(); accept();
return TOKEN_SWORD; return TOKEN_SWORD;
@ -1383,7 +1397,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 25: case 25:
YY_RULE_SETUP YY_RULE_SETUP
#line 540 "xLexer.lxx" #line 541 "xLexer.lxx"
{ {
accept(); accept();
return TOKEN_WORD; return TOKEN_WORD;
@ -1391,19 +1405,19 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 26: case 26:
YY_RULE_SETUP YY_RULE_SETUP
#line 545 "xLexer.lxx" #line 546 "xLexer.lxx"
{ {
// A signed or unsigned integer number. // A signed or unsigned integer number.
accept(); accept();
xyylval.u.number = atol(xyytext); xyylval.u.number = atol(xyytext);
xyylval.str = yytext; xyylval.str = trim_right(xyytext);
return TOKEN_INTEGER; return TOKEN_INTEGER;
} }
YY_BREAK YY_BREAK
case 27: case 27:
YY_RULE_SETUP YY_RULE_SETUP
#line 554 "xLexer.lxx" #line 555 "xLexer.lxx"
{ {
// An integer as part of a semicolon- or comma-delimited list. // An integer as part of a semicolon- or comma-delimited list.
accept(); accept();
@ -1414,7 +1428,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 28: case 28:
YY_RULE_SETUP YY_RULE_SETUP
#line 562 "xLexer.lxx" #line 563 "xLexer.lxx"
{ {
// This rule is used to match an integer list that is followed by a // This rule is used to match an integer list that is followed by a
// floating-point number. It's designed to prevent "0;0.5" from // floating-point number. It's designed to prevent "0;0.5" from
@ -1427,7 +1441,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 29: case 29:
YY_RULE_SETUP YY_RULE_SETUP
#line 572 "xLexer.lxx" #line 573 "xLexer.lxx"
{ {
// A floating-point number as part of a semicolon- or comma-delimited list. // A floating-point number as part of a semicolon- or comma-delimited list.
accept(); accept();
@ -1438,7 +1452,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 30: case 30:
YY_RULE_SETUP YY_RULE_SETUP
#line 580 "xLexer.lxx" #line 581 "xLexer.lxx"
{ {
// Quoted string. // Quoted string.
accept(); accept();
@ -1448,7 +1462,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 31: case 31:
YY_RULE_SETUP YY_RULE_SETUP
#line 587 "xLexer.lxx" #line 588 "xLexer.lxx"
{ {
// Long GUID string. // Long GUID string.
accept(); accept();
@ -1463,7 +1477,7 @@ YY_RULE_SETUP
YY_BREAK YY_BREAK
case 32: case 32:
YY_RULE_SETUP YY_RULE_SETUP
#line 599 "xLexer.lxx" #line 600 "xLexer.lxx"
{ {
// Identifier. // Identifier.
accept(); accept();
@ -1474,18 +1488,28 @@ YY_RULE_SETUP
case 33: case 33:
YY_RULE_SETUP YY_RULE_SETUP
#line 607 "xLexer.lxx" #line 607 "xLexer.lxx"
{
// Identifier with leading digit.
accept();
xyylval.str = xyytext;
return TOKEN_NAME;
}
YY_BREAK
case 34:
YY_RULE_SETUP
#line 615 "xLexer.lxx"
{ {
// Any other character is invalid. // Any other character is invalid.
accept(); accept();
xyyerror("Invalid character '" + string(xyytext) + "'."); xyyerror("Invalid character '" + string(xyytext) + "'.");
} }
YY_BREAK YY_BREAK
case 34: case 35:
YY_RULE_SETUP YY_RULE_SETUP
#line 612 "xLexer.lxx" #line 620 "xLexer.lxx"
ECHO; ECHO;
YY_BREAK YY_BREAK
#line 1490 "lex.yy.c" #line 1514 "lex.yy.c"
case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(INITIAL):
yyterminate(); yyterminate();
@ -1774,7 +1798,7 @@ static yy_state_type yy_get_previous_state()
while ( yy_chk[yy_base[yy_current_state] + yy_c] != 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]; yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 121 ) if ( yy_current_state >= 135 )
yy_c = yy_meta[(unsigned int) yy_c]; yy_c = yy_meta[(unsigned int) yy_c];
} }
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@ -1804,11 +1828,11 @@ yy_state_type yy_current_state;
while ( yy_chk[yy_base[yy_current_state] + yy_c] != 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]; yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 121 ) if ( yy_current_state >= 135 )
yy_c = yy_meta[(unsigned int) yy_c]; yy_c = yy_meta[(unsigned int) yy_c];
} }
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
yy_is_jam = (yy_current_state == 120); yy_is_jam = (yy_current_state == 134);
if ( ! yy_is_jam ) if ( ! yy_is_jam )
*yy_state_ptr++ = yy_current_state; *yy_state_ptr++ = yy_current_state;
@ -2043,6 +2067,14 @@ YY_BUFFER_STATE b;
} }
#ifndef _WIN32
#else
#ifndef YY_ALWAYS_INTERACTIVE
#ifndef YY_NEVER_INTERACTIVE
extern int isatty YY_PROTO(( int ));
#endif
#endif
#endif
#ifdef YY_USE_PROTOS #ifdef YY_USE_PROTOS
void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
@ -2360,4 +2392,4 @@ int main()
return 0; return 0;
} }
#endif #endif
#line 612 "xLexer.lxx" #line 620 "xLexer.lxx"

View File

@ -402,6 +402,7 @@ inline void accept() {
INTEGERNUM ([+-]?([0-9]+)) INTEGERNUM ([+-]?([0-9]+))
REALNUM ([+-]?(([0-9]+[.])|([0-9]*[.][0-9]+))([eE][+-]?[0-9]+)?) REALNUM ([+-]?(([0-9]+[.])|([0-9]*[.][0-9]+))([eE][+-]?[0-9]+)?)
SEPARATOR [ \t;,]+ SEPARATOR [ \t;,]+
WHITESPACE [ ]+
%% %%
@ -542,11 +543,11 @@ SEPARATOR [ \t;,]+
return TOKEN_WORD; return TOKEN_WORD;
} }
{INTEGERNUM} { {INTEGERNUM}({WHITESPACE})? {
// A signed or unsigned integer number. // A signed or unsigned integer number.
accept(); accept();
xyylval.u.number = atol(xyytext); xyylval.u.number = atol(xyytext);
xyylval.str = yytext; xyylval.str = trim_right(xyytext);
return TOKEN_INTEGER; return TOKEN_INTEGER;
} }
@ -603,6 +604,13 @@ SEPARATOR [ \t;,]+
return TOKEN_NAME; return TOKEN_NAME;
} }
[0-9-]+[A-Za-z_-][A-Za-z_0-9-]* {
// Identifier with leading digit.
accept();
xyylval.str = xyytext;
return TOKEN_NAME;
}
. { . {
// Any other character is invalid. // Any other character is invalid.

File diff suppressed because it is too large Load Diff

View File

@ -1,39 +1,110 @@
#ifndef BISON_Y_TAB_H /* A Bison parser, made by GNU Bison 1.875b. */
# define BISON_Y_TAB_H
# define TOKEN_NAME 1 /* Skeleton parser for Yacc-like parsing with Bison,
# define TOKEN_STRING 2 Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
# define TOKEN_INTEGER 3
# define TOKEN_GUID 5
# define TOKEN_INTEGER_LIST 6
# define TOKEN_REALNUM_LIST 7
# define TOKEN_OBRACE 10
# define TOKEN_CBRACE 11
# define TOKEN_OPAREN 12
# define TOKEN_CPAREN 13
# define TOKEN_OBRACKET 14
# define TOKEN_CBRACKET 15
# define TOKEN_OANGLE 16
# define TOKEN_CANGLE 17
# define TOKEN_DOT 18
# define TOKEN_COMMA 19
# define TOKEN_SEMICOLON 20
# define TOKEN_TEMPLATE 31
# define TOKEN_WORD 40
# define TOKEN_DWORD 41
# define TOKEN_FLOAT 42
# define TOKEN_DOUBLE 43
# define TOKEN_CHAR 44
# define TOKEN_UCHAR 45
# define TOKEN_SWORD 46
# define TOKEN_SDWORD 47
# define TOKEN_VOID 48
# define TOKEN_LPSTR 49
# define TOKEN_UNICODE 50
# define TOKEN_CSTRING 51
# define TOKEN_ARRAY 52
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* As a special exception, when this file is copied by Bison into a
Bison output file, you may use that output file without restriction.
This special exception was added by the Free Software Foundation
in version 1.24 of Bison. */
/* Tokens. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
/* Put the tokens into the symbol table, so that GDB and other debuggers
know about them. */
enum yytokentype {
TOKEN_NAME = 1,
TOKEN_STRING = 2,
TOKEN_INTEGER = 3,
TOKEN_GUID = 5,
TOKEN_INTEGER_LIST = 6,
TOKEN_REALNUM_LIST = 7,
TOKEN_OBRACE = 10,
TOKEN_CBRACE = 11,
TOKEN_OPAREN = 12,
TOKEN_CPAREN = 13,
TOKEN_OBRACKET = 14,
TOKEN_CBRACKET = 15,
TOKEN_OANGLE = 16,
TOKEN_CANGLE = 17,
TOKEN_DOT = 18,
TOKEN_COMMA = 19,
TOKEN_SEMICOLON = 20,
TOKEN_TEMPLATE = 31,
TOKEN_WORD = 40,
TOKEN_DWORD = 41,
TOKEN_FLOAT = 42,
TOKEN_DOUBLE = 43,
TOKEN_CHAR = 44,
TOKEN_UCHAR = 45,
TOKEN_SWORD = 46,
TOKEN_SDWORD = 47,
TOKEN_VOID = 48,
TOKEN_LPSTR = 49,
TOKEN_UNICODE = 50,
TOKEN_CSTRING = 51,
TOKEN_ARRAY = 52
};
#endif
#define TOKEN_NAME 1
#define TOKEN_STRING 2
#define TOKEN_INTEGER 3
#define TOKEN_GUID 5
#define TOKEN_INTEGER_LIST 6
#define TOKEN_REALNUM_LIST 7
#define TOKEN_OBRACE 10
#define TOKEN_CBRACE 11
#define TOKEN_OPAREN 12
#define TOKEN_CPAREN 13
#define TOKEN_OBRACKET 14
#define TOKEN_CBRACKET 15
#define TOKEN_OANGLE 16
#define TOKEN_CANGLE 17
#define TOKEN_DOT 18
#define TOKEN_COMMA 19
#define TOKEN_SEMICOLON 20
#define TOKEN_TEMPLATE 31
#define TOKEN_WORD 40
#define TOKEN_DWORD 41
#define TOKEN_FLOAT 42
#define TOKEN_DOUBLE 43
#define TOKEN_CHAR 44
#define TOKEN_UCHAR 45
#define TOKEN_SWORD 46
#define TOKEN_SDWORD 47
#define TOKEN_VOID 48
#define TOKEN_LPSTR 49
#define TOKEN_UNICODE 50
#define TOKEN_CSTRING 51
#define TOKEN_ARRAY 52
#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
typedef int YYSTYPE;
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
# define YYSTYPE_IS_TRIVIAL 1
#endif
extern YYSTYPE xyylval; extern YYSTYPE xyylval;
#endif /* not BISON_Y_TAB_H */

View File

@ -94,8 +94,9 @@ x_cleanup_parser() {
%type <u.primitive_type> primitive_type %type <u.primitive_type> primitive_type
%type <int_list> integer_list %type <int_list> integer_list
%type <double_list> realnum_list %type <double_list> realnum_list
%type <str> name %type <str> singleword_name
%type <str> optional_name %type <str> multiword_name
%type <str> optional_multiword_name
%type <str> string %type <str> string
%type <guid> class_id %type <guid> class_id
%type <guid> optional_class_id %type <guid> optional_class_id
@ -111,7 +112,7 @@ xfile:
; ;
template: template:
TOKEN_TEMPLATE name TOKEN_OBRACE class_id TOKEN_TEMPLATE singleword_name TOKEN_OBRACE class_id
{ {
$$ = current_node; $$ = current_node;
XFileTemplate *templ = new XFileTemplate(x_file, $2, $4); XFileTemplate *templ = new XFileTemplate(x_file, $2, $4);
@ -155,7 +156,7 @@ template_members:
; ;
primitive: primitive:
primitive_type optional_name TOKEN_SEMICOLON primitive_type optional_multiword_name TOKEN_SEMICOLON
{ {
current_data_def = new XFileDataDef(x_file, $2, $1); current_data_def = new XFileDataDef(x_file, $2, $1);
current_node->add_child(current_data_def); current_node->add_child(current_data_def);
@ -167,7 +168,7 @@ array:
; ;
template_reference: template_reference:
name optional_name TOKEN_SEMICOLON singleword_name optional_multiword_name TOKEN_SEMICOLON
{ {
XFileTemplate *xtemplate = x_file->find_template($1); XFileTemplate *xtemplate = x_file->find_template($1);
if (xtemplate == (XFileTemplate *)NULL) { if (xtemplate == (XFileTemplate *)NULL) {
@ -227,12 +228,12 @@ primitive_type:
; ;
array_data_type: array_data_type:
primitive_type name primitive_type multiword_name
{ {
current_data_def = new XFileDataDef(x_file, $2, $1); current_data_def = new XFileDataDef(x_file, $2, $1);
current_node->add_child(current_data_def); current_node->add_child(current_data_def);
} }
| name name | singleword_name multiword_name
{ {
XFileTemplate *xtemplate = x_file->find_template($1); XFileTemplate *xtemplate = x_file->find_template($1);
if (xtemplate == (XFileTemplate *)NULL) { if (xtemplate == (XFileTemplate *)NULL) {
@ -258,7 +259,7 @@ dimension_size:
{ {
current_data_def->add_array_def(XFileArrayDef($1)); current_data_def->add_array_def(XFileArrayDef($1));
} }
| name | multiword_name
{ {
XFileNode *data_def = current_node->find_child($1); XFileNode *data_def = current_node->find_child($1);
if (data_def == (XFileNode *)NULL) { if (data_def == (XFileNode *)NULL) {
@ -279,7 +280,7 @@ template_option_list:
; ;
template_option_part: template_option_part:
name singleword_name
{ {
XFileTemplate *xtemplate = x_file->find_template($1); XFileTemplate *xtemplate = x_file->find_template($1);
if (xtemplate == (XFileTemplate *)NULL) { if (xtemplate == (XFileTemplate *)NULL) {
@ -288,7 +289,7 @@ template_option_part:
DCAST(XFileTemplate, current_node)->add_option(xtemplate); DCAST(XFileTemplate, current_node)->add_option(xtemplate);
} }
} }
| name class_id | singleword_name class_id
{ {
XFileTemplate *xtemplate = x_file->find_template($2); XFileTemplate *xtemplate = x_file->find_template($2);
if (xtemplate == (XFileTemplate *)NULL) { if (xtemplate == (XFileTemplate *)NULL) {
@ -303,16 +304,28 @@ template_option_part:
} }
; ;
name: singleword_name:
TOKEN_NAME
;
multiword_name:
TOKEN_NAME TOKEN_NAME
| multiword_name TOKEN_NAME
{
$$ = $1 + " " + $2;
}
| multiword_name TOKEN_INTEGER
{
$$ = $1 + " " + $<str>2;
}
; ;
optional_name: optional_multiword_name:
empty empty
{ {
$$ = string(); $$ = string();
} }
| name | multiword_name
; ;
class_id: class_id:
@ -332,7 +345,7 @@ ellipsis:
; ;
object: object:
name optional_name TOKEN_OBRACE singleword_name optional_multiword_name TOKEN_OBRACE
{ {
XFileTemplate *xtemplate = x_file->find_template($1); XFileTemplate *xtemplate = x_file->find_template($1);
$$ = current_node; $$ = current_node;
@ -413,7 +426,7 @@ list_separator:
; ;
data_reference: data_reference:
name multiword_name
{ {
XFileDataNodeTemplate *data_object = x_file->find_data_object($1); XFileDataNodeTemplate *data_object = x_file->find_data_object($1);
if (data_object == (XFileDataObject *)NULL) { if (data_object == (XFileDataObject *)NULL) {
@ -422,7 +435,7 @@ data_reference:
$$ = new XFileDataNodeReference(data_object); $$ = new XFileDataNodeReference(data_object);
} }
| name class_id | multiword_name class_id
{ {
XFileDataNodeTemplate *data_object = x_file->find_data_object($2); XFileDataNodeTemplate *data_object = x_file->find_data_object($2);
if (data_object == (XFileDataObject *)NULL) { if (data_object == (XFileDataObject *)NULL) {