bool 1.0.14 → 1.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ext/bool_ext/ast.c +37 -40
- data/ext/bool_ext/ast.h +18 -9
- data/ext/bool_ext/ext.c +33 -18
- data/ext/bool_ext/lexer.c +224 -1940
- data/ext/bool_ext/lexer.h +4 -347
- data/ext/bool_ext/parser.c +83 -109
- data/ext/bool_ext/parser.h +12 -16
- data/lib/bool.rb +5 -5
- data/lib/bool/ast.rb +23 -10
- data/lib/bool/evaluator.rb +1 -1
- data/lib/bool/renderer.rb +4 -4
- metadata +4 -4
data/ext/bool_ext/lexer.h
CHANGED
|
@@ -1,350 +1,7 @@
|
|
|
1
|
-
#
|
|
2
|
-
#define yyHEADER_H 1
|
|
3
|
-
#define yyIN_HEADER 1
|
|
1
|
+
#include "ast.h"
|
|
4
2
|
|
|
5
|
-
|
|
3
|
+
void scan_init(const char* data);
|
|
6
4
|
|
|
7
|
-
|
|
5
|
+
int yylex(void);
|
|
8
6
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
/* A lexical scanner generated by flex */
|
|
12
|
-
|
|
13
|
-
#define FLEX_SCANNER
|
|
14
|
-
#define YY_FLEX_MAJOR_VERSION 2
|
|
15
|
-
#define YY_FLEX_MINOR_VERSION 5
|
|
16
|
-
#define YY_FLEX_SUBMINOR_VERSION 37
|
|
17
|
-
#if YY_FLEX_SUBMINOR_VERSION > 0
|
|
18
|
-
#define FLEX_BETA
|
|
19
|
-
#endif
|
|
20
|
-
|
|
21
|
-
/* First, we deal with platform-specific or compiler-specific issues. */
|
|
22
|
-
|
|
23
|
-
/* begin standard C headers. */
|
|
24
|
-
#include <stdio.h>
|
|
25
|
-
#include <string.h>
|
|
26
|
-
#include <errno.h>
|
|
27
|
-
#include <stdlib.h>
|
|
28
|
-
|
|
29
|
-
/* end standard C headers. */
|
|
30
|
-
|
|
31
|
-
/* flex integer type definitions */
|
|
32
|
-
|
|
33
|
-
#ifndef FLEXINT_H
|
|
34
|
-
#define FLEXINT_H
|
|
35
|
-
|
|
36
|
-
/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
|
|
37
|
-
|
|
38
|
-
#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
|
|
39
|
-
|
|
40
|
-
/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
|
|
41
|
-
* if you want the limit (max/min) macros for int types.
|
|
42
|
-
*/
|
|
43
|
-
#ifndef __STDC_LIMIT_MACROS
|
|
44
|
-
#define __STDC_LIMIT_MACROS 1
|
|
45
|
-
#endif
|
|
46
|
-
|
|
47
|
-
#include <inttypes.h>
|
|
48
|
-
typedef int8_t flex_int8_t;
|
|
49
|
-
typedef uint8_t flex_uint8_t;
|
|
50
|
-
typedef int16_t flex_int16_t;
|
|
51
|
-
typedef uint16_t flex_uint16_t;
|
|
52
|
-
typedef int32_t flex_int32_t;
|
|
53
|
-
typedef uint32_t flex_uint32_t;
|
|
54
|
-
#else
|
|
55
|
-
typedef signed char flex_int8_t;
|
|
56
|
-
typedef short int flex_int16_t;
|
|
57
|
-
typedef int flex_int32_t;
|
|
58
|
-
typedef unsigned char flex_uint8_t;
|
|
59
|
-
typedef unsigned short int flex_uint16_t;
|
|
60
|
-
typedef unsigned int flex_uint32_t;
|
|
61
|
-
|
|
62
|
-
/* Limits of integral types. */
|
|
63
|
-
#ifndef INT8_MIN
|
|
64
|
-
#define INT8_MIN (-128)
|
|
65
|
-
#endif
|
|
66
|
-
#ifndef INT16_MIN
|
|
67
|
-
#define INT16_MIN (-32767-1)
|
|
68
|
-
#endif
|
|
69
|
-
#ifndef INT32_MIN
|
|
70
|
-
#define INT32_MIN (-2147483647-1)
|
|
71
|
-
#endif
|
|
72
|
-
#ifndef INT8_MAX
|
|
73
|
-
#define INT8_MAX (127)
|
|
74
|
-
#endif
|
|
75
|
-
#ifndef INT16_MAX
|
|
76
|
-
#define INT16_MAX (32767)
|
|
77
|
-
#endif
|
|
78
|
-
#ifndef INT32_MAX
|
|
79
|
-
#define INT32_MAX (2147483647)
|
|
80
|
-
#endif
|
|
81
|
-
#ifndef UINT8_MAX
|
|
82
|
-
#define UINT8_MAX (255U)
|
|
83
|
-
#endif
|
|
84
|
-
#ifndef UINT16_MAX
|
|
85
|
-
#define UINT16_MAX (65535U)
|
|
86
|
-
#endif
|
|
87
|
-
#ifndef UINT32_MAX
|
|
88
|
-
#define UINT32_MAX (4294967295U)
|
|
89
|
-
#endif
|
|
90
|
-
|
|
91
|
-
#endif /* ! C99 */
|
|
92
|
-
|
|
93
|
-
#endif /* ! FLEXINT_H */
|
|
94
|
-
|
|
95
|
-
#ifdef __cplusplus
|
|
96
|
-
|
|
97
|
-
/* The "const" storage-class-modifier is valid. */
|
|
98
|
-
#define YY_USE_CONST
|
|
99
|
-
|
|
100
|
-
#else /* ! __cplusplus */
|
|
101
|
-
|
|
102
|
-
/* C99 requires __STDC__ to be defined as 1. */
|
|
103
|
-
#if defined (__STDC__)
|
|
104
|
-
|
|
105
|
-
#define YY_USE_CONST
|
|
106
|
-
|
|
107
|
-
#endif /* defined (__STDC__) */
|
|
108
|
-
#endif /* ! __cplusplus */
|
|
109
|
-
|
|
110
|
-
#ifdef YY_USE_CONST
|
|
111
|
-
#define yyconst const
|
|
112
|
-
#else
|
|
113
|
-
#define yyconst
|
|
114
|
-
#endif
|
|
115
|
-
|
|
116
|
-
/* An opaque pointer. */
|
|
117
|
-
#ifndef YY_TYPEDEF_YY_SCANNER_T
|
|
118
|
-
#define YY_TYPEDEF_YY_SCANNER_T
|
|
119
|
-
typedef void* yyscan_t;
|
|
120
|
-
#endif
|
|
121
|
-
|
|
122
|
-
/* For convenience, these vars (plus the bison vars far below)
|
|
123
|
-
are macros in the reentrant scanner. */
|
|
124
|
-
#define yyin yyg->yyin_r
|
|
125
|
-
#define yyout yyg->yyout_r
|
|
126
|
-
#define yyextra yyg->yyextra_r
|
|
127
|
-
#define yyleng yyg->yyleng_r
|
|
128
|
-
#define yytext yyg->yytext_r
|
|
129
|
-
#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
|
|
130
|
-
#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
|
|
131
|
-
#define yy_flex_debug yyg->yy_flex_debug_r
|
|
132
|
-
|
|
133
|
-
/* Size of default input buffer. */
|
|
134
|
-
#ifndef YY_BUF_SIZE
|
|
135
|
-
#define YY_BUF_SIZE 16384
|
|
136
|
-
#endif
|
|
137
|
-
|
|
138
|
-
#ifndef YY_TYPEDEF_YY_BUFFER_STATE
|
|
139
|
-
#define YY_TYPEDEF_YY_BUFFER_STATE
|
|
140
|
-
typedef struct yy_buffer_state *YY_BUFFER_STATE;
|
|
141
|
-
#endif
|
|
142
|
-
|
|
143
|
-
#ifndef YY_TYPEDEF_YY_SIZE_T
|
|
144
|
-
#define YY_TYPEDEF_YY_SIZE_T
|
|
145
|
-
typedef size_t yy_size_t;
|
|
146
|
-
#endif
|
|
147
|
-
|
|
148
|
-
#ifndef YY_STRUCT_YY_BUFFER_STATE
|
|
149
|
-
#define YY_STRUCT_YY_BUFFER_STATE
|
|
150
|
-
struct yy_buffer_state
|
|
151
|
-
{
|
|
152
|
-
FILE *yy_input_file;
|
|
153
|
-
|
|
154
|
-
char *yy_ch_buf; /* input buffer */
|
|
155
|
-
char *yy_buf_pos; /* current position in input buffer */
|
|
156
|
-
|
|
157
|
-
/* Size of input buffer in bytes, not including room for EOB
|
|
158
|
-
* characters.
|
|
159
|
-
*/
|
|
160
|
-
yy_size_t yy_buf_size;
|
|
161
|
-
|
|
162
|
-
/* Number of characters read into yy_ch_buf, not including EOB
|
|
163
|
-
* characters.
|
|
164
|
-
*/
|
|
165
|
-
yy_size_t yy_n_chars;
|
|
166
|
-
|
|
167
|
-
/* Whether we "own" the buffer - i.e., we know we created it,
|
|
168
|
-
* and can realloc() it to grow it, and should free() it to
|
|
169
|
-
* delete it.
|
|
170
|
-
*/
|
|
171
|
-
int yy_is_our_buffer;
|
|
172
|
-
|
|
173
|
-
/* Whether this is an "interactive" input source; if so, and
|
|
174
|
-
* if we're using stdio for input, then we want to use getc()
|
|
175
|
-
* instead of fread(), to make sure we stop fetching input after
|
|
176
|
-
* each newline.
|
|
177
|
-
*/
|
|
178
|
-
int yy_is_interactive;
|
|
179
|
-
|
|
180
|
-
/* Whether we're considered to be at the beginning of a line.
|
|
181
|
-
* If so, '^' rules will be active on the next match, otherwise
|
|
182
|
-
* not.
|
|
183
|
-
*/
|
|
184
|
-
int yy_at_bol;
|
|
185
|
-
|
|
186
|
-
int yy_bs_lineno; /**< The line count. */
|
|
187
|
-
int yy_bs_column; /**< The column count. */
|
|
188
|
-
|
|
189
|
-
/* Whether to try to fill the input buffer when we reach the
|
|
190
|
-
* end of it.
|
|
191
|
-
*/
|
|
192
|
-
int yy_fill_buffer;
|
|
193
|
-
|
|
194
|
-
int yy_buffer_status;
|
|
195
|
-
|
|
196
|
-
};
|
|
197
|
-
#endif /* !YY_STRUCT_YY_BUFFER_STATE */
|
|
198
|
-
|
|
199
|
-
void yyrestart (FILE *input_file ,yyscan_t yyscanner );
|
|
200
|
-
void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
|
|
201
|
-
YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
|
|
202
|
-
void yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
|
|
203
|
-
void yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
|
|
204
|
-
void yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
|
|
205
|
-
void yypop_buffer_state (yyscan_t yyscanner );
|
|
206
|
-
|
|
207
|
-
YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
|
|
208
|
-
YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
|
|
209
|
-
YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner );
|
|
210
|
-
|
|
211
|
-
void *yyalloc (yy_size_t ,yyscan_t yyscanner );
|
|
212
|
-
void *yyrealloc (void *,yy_size_t ,yyscan_t yyscanner );
|
|
213
|
-
void yyfree (void * ,yyscan_t yyscanner );
|
|
214
|
-
|
|
215
|
-
/* Begin user sect3 */
|
|
216
|
-
|
|
217
|
-
#define yywrap(yyscanner) 1
|
|
218
|
-
#define YY_SKIP_YYWRAP
|
|
219
|
-
|
|
220
|
-
#define yytext_ptr yytext_r
|
|
221
|
-
|
|
222
|
-
#ifdef YY_HEADER_EXPORT_START_CONDITIONS
|
|
223
|
-
#define INITIAL 0
|
|
224
|
-
|
|
225
|
-
#endif
|
|
226
|
-
|
|
227
|
-
#ifndef YY_NO_UNISTD_H
|
|
228
|
-
/* Special case for "unistd.h", since it is non-ANSI. We include it way
|
|
229
|
-
* down here because we want the user's section 1 to have been scanned first.
|
|
230
|
-
* The user has a chance to override it with an option.
|
|
231
|
-
*/
|
|
232
|
-
#include <unistd.h>
|
|
233
|
-
#endif
|
|
234
|
-
|
|
235
|
-
#ifndef YY_EXTRA_TYPE
|
|
236
|
-
#define YY_EXTRA_TYPE void *
|
|
237
|
-
#endif
|
|
238
|
-
|
|
239
|
-
int yylex_init (yyscan_t* scanner);
|
|
240
|
-
|
|
241
|
-
int yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
|
|
242
|
-
|
|
243
|
-
/* Accessor methods to globals.
|
|
244
|
-
These are made visible to non-reentrant scanners for convenience. */
|
|
245
|
-
|
|
246
|
-
int yylex_destroy (yyscan_t yyscanner );
|
|
247
|
-
|
|
248
|
-
int yyget_debug (yyscan_t yyscanner );
|
|
249
|
-
|
|
250
|
-
void yyset_debug (int debug_flag ,yyscan_t yyscanner );
|
|
251
|
-
|
|
252
|
-
YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner );
|
|
253
|
-
|
|
254
|
-
void yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
|
|
255
|
-
|
|
256
|
-
FILE *yyget_in (yyscan_t yyscanner );
|
|
257
|
-
|
|
258
|
-
void yyset_in (FILE * in_str ,yyscan_t yyscanner );
|
|
259
|
-
|
|
260
|
-
FILE *yyget_out (yyscan_t yyscanner );
|
|
261
|
-
|
|
262
|
-
void yyset_out (FILE * out_str ,yyscan_t yyscanner );
|
|
263
|
-
|
|
264
|
-
yy_size_t yyget_leng (yyscan_t yyscanner );
|
|
265
|
-
|
|
266
|
-
char *yyget_text (yyscan_t yyscanner );
|
|
267
|
-
|
|
268
|
-
int yyget_lineno (yyscan_t yyscanner );
|
|
269
|
-
|
|
270
|
-
void yyset_lineno (int line_number ,yyscan_t yyscanner );
|
|
271
|
-
|
|
272
|
-
int yyget_column (yyscan_t yyscanner );
|
|
273
|
-
|
|
274
|
-
void yyset_column (int column_no ,yyscan_t yyscanner );
|
|
275
|
-
|
|
276
|
-
YYSTYPE * yyget_lval (yyscan_t yyscanner );
|
|
277
|
-
|
|
278
|
-
void yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
|
|
279
|
-
|
|
280
|
-
YYLTYPE *yyget_lloc (yyscan_t yyscanner );
|
|
281
|
-
|
|
282
|
-
void yyset_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner );
|
|
283
|
-
|
|
284
|
-
/* Macros after this point can all be overridden by user definitions in
|
|
285
|
-
* section 1.
|
|
286
|
-
*/
|
|
287
|
-
|
|
288
|
-
#ifndef YY_SKIP_YYWRAP
|
|
289
|
-
#ifdef __cplusplus
|
|
290
|
-
extern "C" int yywrap (yyscan_t yyscanner );
|
|
291
|
-
#else
|
|
292
|
-
extern int yywrap (yyscan_t yyscanner );
|
|
293
|
-
#endif
|
|
294
|
-
#endif
|
|
295
|
-
|
|
296
|
-
#ifndef yytext_ptr
|
|
297
|
-
static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
|
|
298
|
-
#endif
|
|
299
|
-
|
|
300
|
-
#ifdef YY_NEED_STRLEN
|
|
301
|
-
static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
|
|
302
|
-
#endif
|
|
303
|
-
|
|
304
|
-
#ifndef YY_NO_INPUT
|
|
305
|
-
|
|
306
|
-
#endif
|
|
307
|
-
|
|
308
|
-
/* Amount of stuff to slurp up with each read. */
|
|
309
|
-
#ifndef YY_READ_BUF_SIZE
|
|
310
|
-
#define YY_READ_BUF_SIZE 8192
|
|
311
|
-
#endif
|
|
312
|
-
|
|
313
|
-
/* Number of entries by which start-condition stack grows. */
|
|
314
|
-
#ifndef YY_START_STACK_INCR
|
|
315
|
-
#define YY_START_STACK_INCR 25
|
|
316
|
-
#endif
|
|
317
|
-
|
|
318
|
-
/* Default declaration of generated scanner - a define so the user can
|
|
319
|
-
* easily add parameters.
|
|
320
|
-
*/
|
|
321
|
-
#ifndef YY_DECL
|
|
322
|
-
#define YY_DECL_IS_OURS 1
|
|
323
|
-
|
|
324
|
-
extern int yylex \
|
|
325
|
-
(YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
|
|
326
|
-
|
|
327
|
-
#define YY_DECL int yylex \
|
|
328
|
-
(YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
|
|
329
|
-
#endif /* !YY_DECL */
|
|
330
|
-
|
|
331
|
-
/* yy_get_previous_state - get the state just before the EOB char was reached */
|
|
332
|
-
|
|
333
|
-
#undef YY_NEW_FILE
|
|
334
|
-
#undef YY_FLUSH_BUFFER
|
|
335
|
-
#undef yy_set_bol
|
|
336
|
-
#undef yy_new_buffer
|
|
337
|
-
#undef yy_set_interactive
|
|
338
|
-
#undef YY_DO_BEFORE_ACTION
|
|
339
|
-
|
|
340
|
-
#ifdef YY_DECL_IS_OURS
|
|
341
|
-
#undef YY_DECL_IS_OURS
|
|
342
|
-
#undef YY_DECL
|
|
343
|
-
#endif
|
|
344
|
-
|
|
345
|
-
#line 32 "lexer.l"
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
#line 349 "lexer.h"
|
|
349
|
-
#undef yyIN_HEADER
|
|
350
|
-
#endif /* yyHEADER_H */
|
|
7
|
+
void yyerror(Node** node, const char* msg);
|
data/ext/bool_ext/parser.c
CHANGED
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
#define YYSKELETON_NAME "yacc.c"
|
|
51
51
|
|
|
52
52
|
/* Pure parsers. */
|
|
53
|
-
#define YYPURE
|
|
53
|
+
#define YYPURE 0
|
|
54
54
|
|
|
55
55
|
/* Push parsers. */
|
|
56
56
|
#define YYPUSH 0
|
|
@@ -66,14 +66,13 @@
|
|
|
66
66
|
#line 1 "parser.y"
|
|
67
67
|
|
|
68
68
|
|
|
69
|
+
#include <stdio.h>
|
|
69
70
|
#include "parser.h"
|
|
70
71
|
#include "lexer.h"
|
|
71
72
|
|
|
72
|
-
void yyerror(YYLTYPE *locp, yyscan_t scanner, Node** node, const char* msg);
|
|
73
|
-
|
|
74
73
|
|
|
75
74
|
/* Line 371 of yacc.c */
|
|
76
|
-
#line
|
|
75
|
+
#line 76 "parser.c"
|
|
77
76
|
|
|
78
77
|
# ifndef YY_NULL
|
|
79
78
|
# if defined __cplusplus && 201103L <= __cplusplus
|
|
@@ -104,18 +103,13 @@ extern int yydebug;
|
|
|
104
103
|
#endif
|
|
105
104
|
/* "%code requires" blocks. */
|
|
106
105
|
/* Line 387 of yacc.c */
|
|
107
|
-
#line
|
|
108
|
-
|
|
106
|
+
#line 9 "parser.y"
|
|
109
107
|
|
|
110
108
|
#include "ast.h"
|
|
111
|
-
#ifndef YY_TYPEDEF_YY_SCANNER_T
|
|
112
|
-
#define YY_TYPEDEF_YY_SCANNER_T
|
|
113
|
-
typedef void* yyscan_t;
|
|
114
|
-
#endif
|
|
115
109
|
|
|
116
110
|
|
|
117
111
|
/* Line 387 of yacc.c */
|
|
118
|
-
#line
|
|
112
|
+
#line 113 "parser.c"
|
|
119
113
|
|
|
120
114
|
/* Tokens. */
|
|
121
115
|
#ifndef YYTOKENTYPE
|
|
@@ -138,14 +132,14 @@ typedef void* yyscan_t;
|
|
|
138
132
|
typedef union YYSTYPE
|
|
139
133
|
{
|
|
140
134
|
/* Line 387 of yacc.c */
|
|
141
|
-
#line
|
|
135
|
+
#line 21 "parser.y"
|
|
142
136
|
|
|
143
|
-
|
|
137
|
+
Token* token;
|
|
144
138
|
Node* node;
|
|
145
139
|
|
|
146
140
|
|
|
147
141
|
/* Line 387 of yacc.c */
|
|
148
|
-
#line
|
|
142
|
+
#line 143 "parser.c"
|
|
149
143
|
} YYSTYPE;
|
|
150
144
|
# define YYSTYPE_IS_TRIVIAL 1
|
|
151
145
|
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
|
|
@@ -165,7 +159,8 @@ typedef struct YYLTYPE
|
|
|
165
159
|
# define YYLTYPE_IS_TRIVIAL 1
|
|
166
160
|
#endif
|
|
167
161
|
|
|
168
|
-
|
|
162
|
+
extern YYSTYPE yylval;
|
|
163
|
+
extern YYLTYPE yylloc;
|
|
169
164
|
#ifdef YYPARSE_PARAM
|
|
170
165
|
#if defined __STDC__ || defined __cplusplus
|
|
171
166
|
int yyparse (void *YYPARSE_PARAM);
|
|
@@ -174,7 +169,7 @@ int yyparse ();
|
|
|
174
169
|
#endif
|
|
175
170
|
#else /* ! YYPARSE_PARAM */
|
|
176
171
|
#if defined __STDC__ || defined __cplusplus
|
|
177
|
-
int yyparse (Node** node
|
|
172
|
+
int yyparse (Node** node);
|
|
178
173
|
#else
|
|
179
174
|
int yyparse ();
|
|
180
175
|
#endif
|
|
@@ -185,7 +180,7 @@ int yyparse ();
|
|
|
185
180
|
/* Copy the second part of user declarations. */
|
|
186
181
|
|
|
187
182
|
/* Line 390 of yacc.c */
|
|
188
|
-
#line
|
|
183
|
+
#line 184 "parser.c"
|
|
189
184
|
|
|
190
185
|
#ifdef short
|
|
191
186
|
# undef short
|
|
@@ -476,7 +471,7 @@ static const yytype_int8 yyrhs[] =
|
|
|
476
471
|
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
|
|
477
472
|
static const yytype_uint8 yyrline[] =
|
|
478
473
|
{
|
|
479
|
-
0,
|
|
474
|
+
0, 42, 42, 46, 47, 48, 49, 50
|
|
480
475
|
};
|
|
481
476
|
#endif
|
|
482
477
|
|
|
@@ -611,7 +606,7 @@ do \
|
|
|
611
606
|
} \
|
|
612
607
|
else \
|
|
613
608
|
{ \
|
|
614
|
-
yyerror (
|
|
609
|
+
yyerror (node, YY_("syntax error: cannot back up")); \
|
|
615
610
|
YYERROR; \
|
|
616
611
|
} \
|
|
617
612
|
while (YYID (0))
|
|
@@ -702,9 +697,9 @@ yy_location_print_ (yyo, yylocp)
|
|
|
702
697
|
|
|
703
698
|
/* YYLEX -- calling `yylex' with the right arguments. */
|
|
704
699
|
#ifdef YYLEX_PARAM
|
|
705
|
-
# define YYLEX yylex (
|
|
700
|
+
# define YYLEX yylex (YYLEX_PARAM)
|
|
706
701
|
#else
|
|
707
|
-
# define YYLEX yylex (
|
|
702
|
+
# define YYLEX yylex ()
|
|
708
703
|
#endif
|
|
709
704
|
|
|
710
705
|
/* Enable debugging if requested. */
|
|
@@ -727,7 +722,7 @@ do { \
|
|
|
727
722
|
{ \
|
|
728
723
|
YYFPRINTF (stderr, "%s ", Title); \
|
|
729
724
|
yy_symbol_print (stderr, \
|
|
730
|
-
Type, Value, Location, node
|
|
725
|
+
Type, Value, Location, node); \
|
|
731
726
|
YYFPRINTF (stderr, "\n"); \
|
|
732
727
|
} \
|
|
733
728
|
} while (YYID (0))
|
|
@@ -741,16 +736,15 @@ do { \
|
|
|
741
736
|
#if (defined __STDC__ || defined __C99__FUNC__ \
|
|
742
737
|
|| defined __cplusplus || defined _MSC_VER)
|
|
743
738
|
static void
|
|
744
|
-
yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, Node** node
|
|
739
|
+
yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, Node** node)
|
|
745
740
|
#else
|
|
746
741
|
static void
|
|
747
|
-
yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, node
|
|
742
|
+
yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, node)
|
|
748
743
|
FILE *yyoutput;
|
|
749
744
|
int yytype;
|
|
750
745
|
YYSTYPE const * const yyvaluep;
|
|
751
746
|
YYLTYPE const * const yylocationp;
|
|
752
747
|
Node** node;
|
|
753
|
-
yyscan_t scanner;
|
|
754
748
|
#endif
|
|
755
749
|
{
|
|
756
750
|
FILE *yyo = yyoutput;
|
|
@@ -759,7 +753,6 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, node, scanner)
|
|
|
759
753
|
return;
|
|
760
754
|
YYUSE (yylocationp);
|
|
761
755
|
YYUSE (node);
|
|
762
|
-
YYUSE (scanner);
|
|
763
756
|
# ifdef YYPRINT
|
|
764
757
|
if (yytype < YYNTOKENS)
|
|
765
758
|
YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
|
|
@@ -781,16 +774,15 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, node, scanner)
|
|
|
781
774
|
#if (defined __STDC__ || defined __C99__FUNC__ \
|
|
782
775
|
|| defined __cplusplus || defined _MSC_VER)
|
|
783
776
|
static void
|
|
784
|
-
yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, Node** node
|
|
777
|
+
yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, Node** node)
|
|
785
778
|
#else
|
|
786
779
|
static void
|
|
787
|
-
yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, node
|
|
780
|
+
yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, node)
|
|
788
781
|
FILE *yyoutput;
|
|
789
782
|
int yytype;
|
|
790
783
|
YYSTYPE const * const yyvaluep;
|
|
791
784
|
YYLTYPE const * const yylocationp;
|
|
792
785
|
Node** node;
|
|
793
|
-
yyscan_t scanner;
|
|
794
786
|
#endif
|
|
795
787
|
{
|
|
796
788
|
if (yytype < YYNTOKENS)
|
|
@@ -800,7 +792,7 @@ yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, node, scanner)
|
|
|
800
792
|
|
|
801
793
|
YY_LOCATION_PRINT (yyoutput, *yylocationp);
|
|
802
794
|
YYFPRINTF (yyoutput, ": ");
|
|
803
|
-
yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, node
|
|
795
|
+
yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, node);
|
|
804
796
|
YYFPRINTF (yyoutput, ")");
|
|
805
797
|
}
|
|
806
798
|
|
|
@@ -843,15 +835,14 @@ do { \
|
|
|
843
835
|
#if (defined __STDC__ || defined __C99__FUNC__ \
|
|
844
836
|
|| defined __cplusplus || defined _MSC_VER)
|
|
845
837
|
static void
|
|
846
|
-
yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, Node** node
|
|
838
|
+
yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, Node** node)
|
|
847
839
|
#else
|
|
848
840
|
static void
|
|
849
|
-
yy_reduce_print (yyvsp, yylsp, yyrule, node
|
|
841
|
+
yy_reduce_print (yyvsp, yylsp, yyrule, node)
|
|
850
842
|
YYSTYPE *yyvsp;
|
|
851
843
|
YYLTYPE *yylsp;
|
|
852
844
|
int yyrule;
|
|
853
845
|
Node** node;
|
|
854
|
-
yyscan_t scanner;
|
|
855
846
|
#endif
|
|
856
847
|
{
|
|
857
848
|
int yynrhs = yyr2[yyrule];
|
|
@@ -865,7 +856,7 @@ yy_reduce_print (yyvsp, yylsp, yyrule, node, scanner)
|
|
|
865
856
|
YYFPRINTF (stderr, " $%d = ", yyi + 1);
|
|
866
857
|
yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
|
|
867
858
|
&(yyvsp[(yyi + 1) - (yynrhs)])
|
|
868
|
-
, &(yylsp[(yyi + 1) - (yynrhs)]) , node
|
|
859
|
+
, &(yylsp[(yyi + 1) - (yynrhs)]) , node);
|
|
869
860
|
YYFPRINTF (stderr, "\n");
|
|
870
861
|
}
|
|
871
862
|
}
|
|
@@ -873,7 +864,7 @@ yy_reduce_print (yyvsp, yylsp, yyrule, node, scanner)
|
|
|
873
864
|
# define YY_REDUCE_PRINT(Rule) \
|
|
874
865
|
do { \
|
|
875
866
|
if (yydebug) \
|
|
876
|
-
yy_reduce_print (yyvsp, yylsp, Rule, node
|
|
867
|
+
yy_reduce_print (yyvsp, yylsp, Rule, node); \
|
|
877
868
|
} while (YYID (0))
|
|
878
869
|
|
|
879
870
|
/* Nonzero means print parse trace. It is left uninitialized so that
|
|
@@ -1153,22 +1144,20 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
|
|
|
1153
1144
|
#if (defined __STDC__ || defined __C99__FUNC__ \
|
|
1154
1145
|
|| defined __cplusplus || defined _MSC_VER)
|
|
1155
1146
|
static void
|
|
1156
|
-
yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, Node** node
|
|
1147
|
+
yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, Node** node)
|
|
1157
1148
|
#else
|
|
1158
1149
|
static void
|
|
1159
|
-
yydestruct (yymsg, yytype, yyvaluep, yylocationp, node
|
|
1150
|
+
yydestruct (yymsg, yytype, yyvaluep, yylocationp, node)
|
|
1160
1151
|
const char *yymsg;
|
|
1161
1152
|
int yytype;
|
|
1162
1153
|
YYSTYPE *yyvaluep;
|
|
1163
1154
|
YYLTYPE *yylocationp;
|
|
1164
1155
|
Node** node;
|
|
1165
|
-
yyscan_t scanner;
|
|
1166
1156
|
#endif
|
|
1167
1157
|
{
|
|
1168
1158
|
YYUSE (yyvaluep);
|
|
1169
1159
|
YYUSE (yylocationp);
|
|
1170
1160
|
YYUSE (node);
|
|
1171
|
-
YYUSE (scanner);
|
|
1172
1161
|
|
|
1173
1162
|
if (!yymsg)
|
|
1174
1163
|
yymsg = "Deleting";
|
|
@@ -1185,6 +1174,33 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, node, scanner)
|
|
|
1185
1174
|
|
|
1186
1175
|
|
|
1187
1176
|
|
|
1177
|
+
/* The lookahead symbol. */
|
|
1178
|
+
int yychar;
|
|
1179
|
+
|
|
1180
|
+
|
|
1181
|
+
#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
|
|
1182
|
+
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
|
|
1183
|
+
# define YY_IGNORE_MAYBE_UNINITIALIZED_END
|
|
1184
|
+
#endif
|
|
1185
|
+
#ifndef YY_INITIAL_VALUE
|
|
1186
|
+
# define YY_INITIAL_VALUE(Value) /* Nothing. */
|
|
1187
|
+
#endif
|
|
1188
|
+
|
|
1189
|
+
/* The semantic value of the lookahead symbol. */
|
|
1190
|
+
YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
|
|
1191
|
+
|
|
1192
|
+
/* Location data for the lookahead symbol. */
|
|
1193
|
+
YYLTYPE yylloc
|
|
1194
|
+
# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
|
|
1195
|
+
= { 1, 1, 1, 1 }
|
|
1196
|
+
# endif
|
|
1197
|
+
;
|
|
1198
|
+
|
|
1199
|
+
|
|
1200
|
+
/* Number of syntax errors so far. */
|
|
1201
|
+
int yynerrs;
|
|
1202
|
+
|
|
1203
|
+
|
|
1188
1204
|
/*----------.
|
|
1189
1205
|
| yyparse. |
|
|
1190
1206
|
`----------*/
|
|
@@ -1203,56 +1219,14 @@ yyparse (YYPARSE_PARAM)
|
|
|
1203
1219
|
#if (defined __STDC__ || defined __C99__FUNC__ \
|
|
1204
1220
|
|| defined __cplusplus || defined _MSC_VER)
|
|
1205
1221
|
int
|
|
1206
|
-
yyparse (Node** node
|
|
1222
|
+
yyparse (Node** node)
|
|
1207
1223
|
#else
|
|
1208
1224
|
int
|
|
1209
|
-
yyparse (node
|
|
1225
|
+
yyparse (node)
|
|
1210
1226
|
Node** node;
|
|
1211
|
-
yyscan_t scanner;
|
|
1212
1227
|
#endif
|
|
1213
1228
|
#endif
|
|
1214
1229
|
{
|
|
1215
|
-
/* The lookahead symbol. */
|
|
1216
|
-
int yychar;
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
|
|
1220
|
-
/* Suppress an incorrect diagnostic about yylval being uninitialized. */
|
|
1221
|
-
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
|
|
1222
|
-
_Pragma ("GCC diagnostic push") \
|
|
1223
|
-
_Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
|
|
1224
|
-
_Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
|
|
1225
|
-
# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
|
|
1226
|
-
_Pragma ("GCC diagnostic pop")
|
|
1227
|
-
#else
|
|
1228
|
-
/* Default value used for initialization, for pacifying older GCCs
|
|
1229
|
-
or non-GCC compilers. */
|
|
1230
|
-
static YYSTYPE yyval_default;
|
|
1231
|
-
# define YY_INITIAL_VALUE(Value) = Value
|
|
1232
|
-
#endif
|
|
1233
|
-
static YYLTYPE yyloc_default
|
|
1234
|
-
# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
|
|
1235
|
-
= { 1, 1, 1, 1 }
|
|
1236
|
-
# endif
|
|
1237
|
-
;
|
|
1238
|
-
#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
|
|
1239
|
-
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
|
|
1240
|
-
# define YY_IGNORE_MAYBE_UNINITIALIZED_END
|
|
1241
|
-
#endif
|
|
1242
|
-
#ifndef YY_INITIAL_VALUE
|
|
1243
|
-
# define YY_INITIAL_VALUE(Value) /* Nothing. */
|
|
1244
|
-
#endif
|
|
1245
|
-
|
|
1246
|
-
/* The semantic value of the lookahead symbol. */
|
|
1247
|
-
YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
|
|
1248
|
-
|
|
1249
|
-
/* Location data for the lookahead symbol. */
|
|
1250
|
-
YYLTYPE yylloc = yyloc_default;
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
/* Number of syntax errors so far. */
|
|
1254
|
-
int yynerrs;
|
|
1255
|
-
|
|
1256
1230
|
int yystate;
|
|
1257
1231
|
/* Number of tokens to shift before error messages enabled. */
|
|
1258
1232
|
int yyerrstatus;
|
|
@@ -1504,44 +1478,44 @@ yyreduce:
|
|
|
1504
1478
|
switch (yyn)
|
|
1505
1479
|
{
|
|
1506
1480
|
case 2:
|
|
1507
|
-
/* Line
|
|
1508
|
-
#line
|
|
1481
|
+
/* Line 1807 of yacc.c */
|
|
1482
|
+
#line 42 "parser.y"
|
|
1509
1483
|
{ *node = (yyvsp[(1) - (1)].node); }
|
|
1510
1484
|
break;
|
|
1511
1485
|
|
|
1512
1486
|
case 3:
|
|
1513
|
-
/* Line
|
|
1514
|
-
#line
|
|
1515
|
-
{ (yyval.node) = create_var((yyvsp[(1) - (1)].
|
|
1487
|
+
/* Line 1807 of yacc.c */
|
|
1488
|
+
#line 46 "parser.y"
|
|
1489
|
+
{ (yyval.node) = create_var((yyvsp[(1) - (1)].token)); }
|
|
1516
1490
|
break;
|
|
1517
1491
|
|
|
1518
1492
|
case 4:
|
|
1519
|
-
/* Line
|
|
1520
|
-
#line
|
|
1521
|
-
{ (yyval.node) = create_and((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); }
|
|
1493
|
+
/* Line 1807 of yacc.c */
|
|
1494
|
+
#line 47 "parser.y"
|
|
1495
|
+
{ (yyval.node) = create_and((yyvsp[(2) - (3)].token), (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); }
|
|
1522
1496
|
break;
|
|
1523
1497
|
|
|
1524
1498
|
case 5:
|
|
1525
|
-
/* Line
|
|
1526
|
-
#line
|
|
1527
|
-
{ (yyval.node) = create_or((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); }
|
|
1499
|
+
/* Line 1807 of yacc.c */
|
|
1500
|
+
#line 48 "parser.y"
|
|
1501
|
+
{ (yyval.node) = create_or((yyvsp[(2) - (3)].token), (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); }
|
|
1528
1502
|
break;
|
|
1529
1503
|
|
|
1530
1504
|
case 6:
|
|
1531
|
-
/* Line
|
|
1532
|
-
#line
|
|
1533
|
-
{ (yyval.node) = create_not((yyvsp[(2) - (2)].node)); }
|
|
1505
|
+
/* Line 1807 of yacc.c */
|
|
1506
|
+
#line 49 "parser.y"
|
|
1507
|
+
{ (yyval.node) = create_not((yyvsp[(1) - (2)].token), (yyvsp[(2) - (2)].node)); }
|
|
1534
1508
|
break;
|
|
1535
1509
|
|
|
1536
1510
|
case 7:
|
|
1537
|
-
/* Line
|
|
1538
|
-
#line
|
|
1511
|
+
/* Line 1807 of yacc.c */
|
|
1512
|
+
#line 50 "parser.y"
|
|
1539
1513
|
{ (yyval.node) = (yyvsp[(2) - (3)].node); }
|
|
1540
1514
|
break;
|
|
1541
1515
|
|
|
1542
1516
|
|
|
1543
|
-
/* Line
|
|
1544
|
-
#line
|
|
1517
|
+
/* Line 1807 of yacc.c */
|
|
1518
|
+
#line 1519 "parser.c"
|
|
1545
1519
|
default: break;
|
|
1546
1520
|
}
|
|
1547
1521
|
/* User semantic actions sometimes alter yychar, and that requires
|
|
@@ -1592,7 +1566,7 @@ yyerrlab:
|
|
|
1592
1566
|
{
|
|
1593
1567
|
++yynerrs;
|
|
1594
1568
|
#if ! YYERROR_VERBOSE
|
|
1595
|
-
yyerror (
|
|
1569
|
+
yyerror (node, YY_("syntax error"));
|
|
1596
1570
|
#else
|
|
1597
1571
|
# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
|
|
1598
1572
|
yyssp, yytoken)
|
|
@@ -1619,7 +1593,7 @@ yyerrlab:
|
|
|
1619
1593
|
yymsgp = yymsg;
|
|
1620
1594
|
}
|
|
1621
1595
|
}
|
|
1622
|
-
yyerror (
|
|
1596
|
+
yyerror (node, yymsgp);
|
|
1623
1597
|
if (yysyntax_error_status == 2)
|
|
1624
1598
|
goto yyexhaustedlab;
|
|
1625
1599
|
}
|
|
@@ -1643,7 +1617,7 @@ yyerrlab:
|
|
|
1643
1617
|
else
|
|
1644
1618
|
{
|
|
1645
1619
|
yydestruct ("Error: discarding",
|
|
1646
|
-
yytoken, &yylval, &yylloc, node
|
|
1620
|
+
yytoken, &yylval, &yylloc, node);
|
|
1647
1621
|
yychar = YYEMPTY;
|
|
1648
1622
|
}
|
|
1649
1623
|
}
|
|
@@ -1700,7 +1674,7 @@ yyerrlab1:
|
|
|
1700
1674
|
|
|
1701
1675
|
yyerror_range[1] = *yylsp;
|
|
1702
1676
|
yydestruct ("Error: popping",
|
|
1703
|
-
yystos[yystate], yyvsp, yylsp, node
|
|
1677
|
+
yystos[yystate], yyvsp, yylsp, node);
|
|
1704
1678
|
YYPOPSTACK (1);
|
|
1705
1679
|
yystate = *yyssp;
|
|
1706
1680
|
YY_STACK_PRINT (yyss, yyssp);
|
|
@@ -1742,7 +1716,7 @@ yyabortlab:
|
|
|
1742
1716
|
| yyexhaustedlab -- memory exhaustion comes here. |
|
|
1743
1717
|
`-------------------------------------------------*/
|
|
1744
1718
|
yyexhaustedlab:
|
|
1745
|
-
yyerror (
|
|
1719
|
+
yyerror (node, YY_("memory exhausted"));
|
|
1746
1720
|
yyresult = 2;
|
|
1747
1721
|
/* Fall through. */
|
|
1748
1722
|
#endif
|
|
@@ -1754,7 +1728,7 @@ yyreturn:
|
|
|
1754
1728
|
user semantic actions for why this is necessary. */
|
|
1755
1729
|
yytoken = YYTRANSLATE (yychar);
|
|
1756
1730
|
yydestruct ("Cleanup: discarding lookahead",
|
|
1757
|
-
yytoken, &yylval, &yylloc, node
|
|
1731
|
+
yytoken, &yylval, &yylloc, node);
|
|
1758
1732
|
}
|
|
1759
1733
|
/* Do not reclaim the symbols of the rule which action triggered
|
|
1760
1734
|
this YYABORT or YYACCEPT. */
|
|
@@ -1763,7 +1737,7 @@ yyreturn:
|
|
|
1763
1737
|
while (yyssp != yyss)
|
|
1764
1738
|
{
|
|
1765
1739
|
yydestruct ("Cleanup: popping",
|
|
1766
|
-
yystos[*yyssp], yyvsp, yylsp, node
|
|
1740
|
+
yystos[*yyssp], yyvsp, yylsp, node);
|
|
1767
1741
|
YYPOPSTACK (1);
|
|
1768
1742
|
}
|
|
1769
1743
|
#ifndef yyoverflow
|
|
@@ -1780,6 +1754,6 @@ yyreturn:
|
|
|
1780
1754
|
|
|
1781
1755
|
|
|
1782
1756
|
/* Line 2055 of yacc.c */
|
|
1783
|
-
#line
|
|
1757
|
+
#line 53 "parser.y"
|
|
1784
1758
|
|
|
1785
1759
|
|