1 /* A Bison parser, made by GNU Bison 3.7.4. */
2
3 /* Bison implementation for Yacc-like parsers in C
4
5 Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
6 Inc.
7
8 This program is free software: you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation, either version 3 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <http://www.gnu.org/licenses/>. */
20
21 /* As a special exception, you may create a larger work that contains
22 part or all of the Bison parser skeleton and distribute that work
23 under terms of your choice, so long as that work isn't itself a
24 parser generator using the skeleton or a modified version thereof
25 as a parser skeleton. Alternatively, if you modify or redistribute
26 the parser skeleton itself, you may (at your option) remove this
27 special exception, which will cause the skeleton and the resulting
28 Bison output files to be licensed under the GNU General Public
29 License without this special exception.
30
31 This special exception was added by the Free Software Foundation in
32 version 2.2 of Bison. */
33
34 /* C LALR(1) parser skeleton written by Richard Stallman, by
35 simplifying the original so-called "semantic" parser. */
36
37 /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
38 especially those whose name start with YY_ or yy_. They are
39 private implementation details that can be changed or removed. */
40
41 /* All symbols defined below should begin with yy or YY, to avoid
42 infringing on user name space. This should be done even for local
43 variables, as they might otherwise be expanded by user macros.
44 There are some unavoidable exceptions within include files to
45 define necessary library symbols; they are noted "INFRINGES ON
46 USER NAME SPACE" below. */
47
48 /* Identify Bison output, and Bison version. */
49 #define YYBISON 30704
50
51 /* Bison version string. */
52 #define YYBISON_VERSION "3.7.4"
53
54 /* Skeleton name. */
55 #define YYSKELETON_NAME "yacc.c"
56
57 /* Pure parsers. */
58 #define YYPURE 0
59
60 /* Push parsers. */
61 #define YYPUSH 0
62
63 /* Pull parsers. */
64 #define YYPULL 1
65
66
67
68
69 /* First part of user prologue. */
70 #line 20 "quote_fmt_parse.y"
71
72
73 #include "defs.h"
74
75 #include <glib.h>
76 #include <glib/gi18n.h>
77
78 #include <ctype.h>
79
80 #include "procmsg.h"
81 #include "procmime.h"
82 #include "utils.h"
83 #include "codeconv.h"
84 #include "procheader.h"
85 #include "addr_compl.h"
86 #include "gtk/inputdialog.h"
87
88 #include "quote_fmt.h"
89 #include "quote_fmt_lex.h"
90 #include "account.h"
91 #include "file-utils.h"
92
93 /* decl */
94 /*
95 flex quote_fmt.l
96 bison -p quote_fmt quote_fmt.y
97 */
98
99 int yylex(void);
100
101 static MsgInfo *msginfo = NULL;
102 static PrefsAccount *account = NULL;
103 #ifdef USE_ENCHANT
104 static gchar default_dictionary[BUFFSIZE];
105 #endif
106 static gboolean *visible = NULL;
107 static gboolean dry_run = FALSE;
108 static gint maxsize = 0;
109 static gint stacksize = 0;
110 static GHashTable *var_table = NULL;
111 static GList *attachments = NULL;
112
113 typedef struct st_buffer
114 {
115 gchar *buffer;
116 gint bufsize;
117 gint bufmax;
118 } st_buffer;
119
120 static struct st_buffer main_expr = { NULL, 0, 0 };
121 static struct st_buffer sub_expr = { NULL, 0, 0 };
122 static struct st_buffer* current = NULL;
123
124 static const gchar *quote_str = NULL;
125 static const gchar *body = NULL;
126 static gint error = 0;
127
128 static gint cursor_pos = -1;
129
130 extern int quote_fmt_firsttime;
131 extern int line;
132 extern int escaped_string;
133
add_visibility(gboolean val)134 static void add_visibility(gboolean val)
135 {
136 stacksize++;
137 if (maxsize < stacksize) {
138 maxsize += 128;
139 visible = g_realloc(visible, maxsize * sizeof(gboolean));
140 if (visible == NULL)
141 maxsize = 0;
142 }
143 if (visible != NULL)
144 visible[stacksize - 1] = val;
145 }
146
remove_visibility(void)147 static void remove_visibility(void)
148 {
149 stacksize--;
150 if (stacksize < 0) {
151 g_warning("Error: visibility stack underflow");
152 stacksize = 0;
153 }
154 }
155
add_buffer(const gchar * s)156 static void add_buffer(const gchar *s)
157 {
158 gint len;
159
160 if (s == NULL)
161 return;
162
163 len = strlen(s);
164 if (current->bufsize + len + 1 > current->bufmax) {
165 if (current->bufmax == 0)
166 current->bufmax = 128;
167 while (current->bufsize + len + 1 > current->bufmax)
168 current->bufmax *= 2;
169 current->buffer = g_realloc(current->buffer, current->bufmax);
170 }
171 strcpy(current->buffer + current->bufsize, s);
172 current->bufsize += len;
173 }
174
clear_buffer(void)175 static void clear_buffer(void)
176 {
177 if (current->buffer)
178 *current->buffer = '\0';
179 else
180 /* force to an empty string, as buffer should not be left unallocated */
181 add_buffer("");
182 current->bufsize = 0;
183 }
184
quote_fmt_get_buffer(void)185 gchar *quote_fmt_get_buffer(void)
186 {
187 if (current != &main_expr)
188 g_warning("Error: parser still in sub-expr mode");
189
190 if (error != 0)
191 return NULL;
192 else
193 return current->buffer;
194 }
195
quote_fmt_get_attachments_list(void)196 GList *quote_fmt_get_attachments_list(void)
197 {
198 return attachments;
199 }
200
quote_fmt_get_line(void)201 gint quote_fmt_get_line(void)
202 {
203 return line;
204 }
205
quote_fmt_get_cursor_pos(void)206 gint quote_fmt_get_cursor_pos(void)
207 {
208 return cursor_pos;
209 }
210
211 #define INSERT(buf) \
212 if (stacksize != 0 && visible[stacksize - 1])\
213 add_buffer(buf); \
214
215 #define INSERT_CHARACTER(chr) \
216 if (stacksize != 0 && visible[stacksize - 1]) { \
217 gchar tmp[2]; \
218 tmp[0] = (chr); \
219 tmp[1] = '\0'; \
220 add_buffer(tmp); \
221 }
222
quote_fmt_reset_vartable(void)223 void quote_fmt_reset_vartable(void)
224 {
225 if (var_table) {
226 g_hash_table_destroy(var_table);
227 var_table = NULL;
228 }
229 if (attachments) {
230 GList *cur = attachments;
231 while (cur) {
232 g_free(cur->data);
233 cur = g_list_next(cur);
234 }
235 g_list_free(attachments);
236 attachments = NULL;
237 }
238 }
239
240 #ifdef USE_ENCHANT
quote_fmt_init(MsgInfo * info,const gchar * my_quote_str,const gchar * my_body,gboolean my_dry_run,PrefsAccount * compose_account,gboolean string_is_escaped,GtkAspell * compose_gtkaspell)241 void quote_fmt_init(MsgInfo *info, const gchar *my_quote_str,
242 const gchar *my_body, gboolean my_dry_run,
243 PrefsAccount *compose_account,
244 gboolean string_is_escaped,
245 GtkAspell *compose_gtkaspell)
246 #else
247 void quote_fmt_init(MsgInfo *info, const gchar *my_quote_str,
248 const gchar *my_body, gboolean my_dry_run,
249 PrefsAccount *compose_account,
250 gboolean string_is_escaped)
251 #endif
252 {
253 quote_str = my_quote_str;
254 body = my_body;
255 msginfo = info;
256 account = compose_account;
257 #ifdef USE_ENCHANT
258 gchar *dict = gtkaspell_get_default_dictionary(compose_gtkaspell);
259 if (dict)
260 strncpy2(default_dictionary, dict, sizeof(default_dictionary));
261 else
262 *default_dictionary = '\0';
263 #endif
264 dry_run = my_dry_run;
265 stacksize = 0;
266 add_visibility(TRUE);
267 main_expr.bufmax = 0;
268 sub_expr.bufmax = 0;
269 current = &main_expr;
270 clear_buffer();
271 error = 0;
272 line = 1;
273 escaped_string = string_is_escaped;
274
275 if (!var_table)
276 var_table = g_hash_table_new_full(g_str_hash, g_str_equal,
277 g_free, g_free);
278
279 /*
280 * force LEX initialization
281 */
282 quote_fmt_firsttime = 1;
283 cursor_pos = -1;
284 }
285
quote_fmterror(char * str)286 void quote_fmterror(char *str)
287 {
288 g_warning("Error: %s at line %d", str, line);
289 error = 1;
290 }
291
quote_fmtwrap(void)292 int quote_fmtwrap(void)
293 {
294 return 1;
295 }
296
isseparator(int ch)297 static int isseparator(int ch)
298 {
299 return g_ascii_isspace(ch) || ch == '.' || ch == '-';
300 }
301
302 /*
303 * Search for glibc extended strftime timezone specs within haystack.
304 * If not found NULL is returned and the integer pointed by tzspeclen is
305 * not changed.
306 * If found a pointer to the start of the specification within haystack
307 * is returned and the integer pointed by tzspeclen is set to the lenght
308 * of specification.
309 */
strtzspec(const char * haystack,int * tzspeclen)310 static const char* strtzspec(const char *haystack, int *tzspeclen)
311 {
312 const char *p = NULL;
313 const char *q = NULL;
314 const char *r = NULL;
315
316 p = strstr(haystack, "%");
317 while (p != NULL) {
318 q = p + 1;
319 if (!*q) return NULL;
320 r = strchr("_-0^#", *q); /* skip flags */
321 if (r != NULL) {
322 ++q;
323 if (!*q) return NULL;
324 }
325 while (*q >= '0' && *q <= '9') ++q; /* skip width */
326 if (!*q) return NULL;
327 if (*q == 'z' || *q == 'Z') { /* numeric or name */
328 *tzspeclen = 1 + (q - p);
329 return p;
330 }
331 p = strstr(q, "%");
332 }
333 return NULL;
334 }
335
quote_fmt_show_date(const MsgInfo * msginfo,const gchar * format)336 static void quote_fmt_show_date(const MsgInfo *msginfo, const gchar *format)
337 {
338 char result[100];
339 char *rptr;
340 char zone[6];
341 struct tm lt;
342 const char *fptr;
343 const char *zptr;
344
345 if (!msginfo->date)
346 return;
347
348 /*
349 * ALF - GNU C's strftime() has a nice format specifier
350 * for time zone offset (%z). Non-standard however, so
351 * emulate it.
352 */
353
354 #define RLEFT (sizeof result) - (rptr - result)
355
356 zone[0] = 0;
357
358 if (procheader_date_parse_to_tm(msginfo->date, <, zone)) {
359 /*
360 * break up format string in tiny bits delimited by valid %z's and
361 * feed it to strftime(). don't forget that '%%z' mean literal '%z'.
362 */
363 for (rptr = result, fptr = format; fptr && *fptr && rptr < &result[sizeof result - 1];) {
364 int perc, zlen;
365 const char *p;
366 char *tmp;
367
368 if (NULL != (zptr = strtzspec(fptr, &zlen))) {
369 /*
370 * count nr. of prepended percent chars
371 */
372 for (perc = 0, p = zptr; p && p >= format && *p == '%'; p--, perc++)
373 ;
374 /*
375 * feed to strftime()
376 */
377 tmp = g_strndup(fptr, zptr - fptr + (perc % 2 ? 0 : zlen));
378 if (tmp) {
379 rptr += strftime(rptr, RLEFT, tmp, <);
380 g_free(tmp);
381 }
382 /*
383 * append time zone offset
384 */
385 if (zone[0] && perc % 2)
386 rptr += g_snprintf(rptr, RLEFT, "%s", zone);
387 fptr = zptr + zlen;
388 } else {
389 rptr += strftime(rptr, RLEFT, fptr, <);
390 fptr = NULL;
391 }
392 }
393
394 if (g_utf8_validate(result, -1, NULL)) {
395 INSERT(result);
396 } else {
397 gchar *utf = conv_codeset_strdup(result,
398 conv_get_locale_charset_str_no_utf8(),
399 CS_INTERNAL);
400 if (utf == NULL ||
401 !g_utf8_validate(utf, -1, NULL)) {
402 g_free(utf);
403 utf = g_malloc(strlen(result)*2+1);
404 conv_localetodisp(utf,
405 strlen(result)*2+1, result);
406 }
407 if (g_utf8_validate(utf, -1, NULL)) {
408 INSERT(utf);
409 }
410 g_free(utf);
411 }
412 }
413 #undef RLEFT
414 }
415
quote_fmt_show_first_name(const MsgInfo * msginfo)416 static void quote_fmt_show_first_name(const MsgInfo *msginfo)
417 {
418 guchar *p;
419 gchar *str;
420
421 if (!msginfo->fromname)
422 return;
423
424 p = (guchar*)strchr(msginfo->fromname, ',');
425 if (p != NULL) {
426 /* fromname is like "Duck, Donald" */
427 p++;
428 while (*p && isspace(*p)) p++;
429 str = alloca(strlen((char *)p) + 1);
430 if (str != NULL) {
431 strcpy(str, (char *)p);
432 INSERT(str);
433 }
434 } else {
435 /* fromname is like "Donald Duck" */
436 str = alloca(strlen(msginfo->fromname) + 1);
437 if (str != NULL) {
438 strcpy(str, msginfo->fromname);
439 p = (guchar *)str;
440 while (*p && !isspace(*p)) p++;
441 *p = '\0';
442 INSERT(str);
443 }
444 }
445 }
446
quote_fmt_show_last_name(const MsgInfo * msginfo)447 static void quote_fmt_show_last_name(const MsgInfo *msginfo)
448 {
449 gchar *p;
450 gchar *str;
451
452 /* This probably won't work together very well with Middle
453 names and the like - thth */
454 if (!msginfo->fromname)
455 return;
456
457 str = alloca(strlen(msginfo->fromname) + 1);
458 if (str != NULL) {
459 strcpy(str, msginfo->fromname);
460 p = strchr(str, ',');
461 if (p != NULL) {
462 /* fromname is like "Duck, Donald" */
463 *p = '\0';
464 INSERT(str);
465 } else {
466 /* fromname is like "Donald Duck" */
467 p = str;
468 while (*p && !isspace(*p)) p++;
469 if (*p) {
470 /* We found a space. Get first
471 none-space char and insert
472 rest of string from there. */
473 while (*p && isspace(*p)) p++;
474 if (*p) {
475 INSERT(p);
476 } else {
477 /* If there is no none-space
478 char, just insert whole
479 fromname. */
480 INSERT(str);
481 }
482 } else {
483 /* If there is no space, just
484 insert whole fromname. */
485 INSERT(str);
486 }
487 }
488 }
489 }
490
quote_fmt_show_sender_initial(const MsgInfo * msginfo)491 static void quote_fmt_show_sender_initial(const MsgInfo *msginfo)
492 {
493 #define MAX_SENDER_INITIAL 20
494 gchar tmp[MAX_SENDER_INITIAL];
495 guchar *p;
496 gchar *cur;
497 gint len = 0;
498
499 if (!msginfo->fromname)
500 return;
501
502 p = (guchar *)msginfo->fromname;
503 cur = tmp;
504 while (*p) {
505 if (*p && g_utf8_validate((gchar *)p, 1, NULL)) {
506 *cur = toupper(*p);
507 cur++;
508 len++;
509 if (len >= MAX_SENDER_INITIAL - 1)
510 break;
511 } else
512 break;
513 while (*p && !isseparator(*p)) p++;
514 while (*p && isseparator(*p)) p++;
515 }
516 *cur = '\0';
517 INSERT(tmp);
518 }
519
quote_fmt_show_msg(MsgInfo * msginfo,const gchar * body,gboolean quoted,gboolean signature,const gchar * quote_str)520 static void quote_fmt_show_msg(MsgInfo *msginfo, const gchar *body,
521 gboolean quoted, gboolean signature,
522 const gchar *quote_str)
523 {
524 gchar buf[BUFFSIZE];
525 FILE *fp;
526
527 if (!(msginfo->folder || body))
528 return;
529
530 if (body)
531 fp = str_open_as_stream(body);
532 else {
533 if (MSG_IS_ENCRYPTED(msginfo->flags))
534 fp = procmime_get_first_encrypted_text_content(msginfo);
535 else
536 fp = procmime_get_first_text_content(msginfo);
537 }
538
539 if (fp == NULL)
540 g_warning("Can't get text part");
541 else {
542 account_sigsep_matchlist_create();
543 while (fgets(buf, sizeof(buf), fp) != NULL) {
544 strcrchomp(buf);
545
546 if (!signature && account_sigsep_matchlist_nchar_found(buf, "%s\n"))
547 break;
548
549 if (quoted && quote_str)
550 INSERT(quote_str);
551
552 INSERT(buf);
553 }
554 account_sigsep_matchlist_delete();
555 fclose(fp);
556 }
557 }
558
quote_fmt_insert_file(const gchar * filename)559 static void quote_fmt_insert_file(const gchar *filename)
560 {
561 FILE *file;
562 char buffer[PATH_MAX];
563
564 if ((file = g_fopen(filename, "rb")) != NULL) {
565 while (fgets(buffer, sizeof(buffer), file)) {
566 INSERT(buffer);
567 }
568 fclose(file);
569 }
570
571 }
572
quote_fmt_insert_program_output(const gchar * progname)573 static void quote_fmt_insert_program_output(const gchar *progname)
574 {
575 FILE *file;
576 char buffer[BUFFSIZE];
577
578 if ((file = get_command_output_stream(progname)) != NULL) {
579 while (fgets(buffer, sizeof(buffer), file)) {
580 INSERT(buffer);
581 }
582 fclose(file);
583 }
584 }
585
quote_fmt_insert_user_input(const gchar * varname)586 static void quote_fmt_insert_user_input(const gchar *varname)
587 {
588 gchar *buf = NULL;
589 gchar *text = NULL;
590
591 if (dry_run)
592 return;
593
594 if ((text = g_hash_table_lookup(var_table, varname)) == NULL) {
595 buf = g_strdup_printf(_("Enter text to replace '%s'"), varname);
596 text = input_dialog(_("Enter variable"), buf, "");
597 g_free(buf);
598 if (!text)
599 return;
600 g_hash_table_insert(var_table, g_strdup(varname), g_strdup(text));
601 } else {
602 /* don't free the one in hashtable at the end */
603 text = g_strdup(text);
604 }
605
606 if (!text)
607 return;
608 INSERT(text);
609 g_free(text);
610 }
611
quote_fmt_attach_file(const gchar * filename)612 static void quote_fmt_attach_file(const gchar *filename)
613 {
614 attachments = g_list_append(attachments, g_strdup(filename));
615 }
616
quote_fmt_attach_file_program_output(const gchar * progname)617 static void quote_fmt_attach_file_program_output(const gchar *progname)
618 {
619 FILE *file;
620 char buffer[BUFFSIZE];
621
622 if ((file = get_command_output_stream(progname)) != NULL) {
623 /* get first line only */
624 if (fgets(buffer, sizeof(buffer), file)) {
625 /* trim trailing CR/LF */
626 strretchomp(buffer);
627 attachments = g_list_append(attachments, g_strdup(buffer));
628 }
629 fclose(file);
630 }
631 }
632
quote_fmt_complete_address(const gchar * addr)633 static gchar *quote_fmt_complete_address(const gchar *addr)
634 {
635 gint count;
636 gchar *res, *tmp, *email_addr;
637 gchar **split;
638
639 debug_print("quote_fmt_complete_address: %s\n", addr);
640 if (addr == NULL)
641 return NULL;
642
643 /* if addr is a list of message, try the 1st element only */
644 split = g_strsplit(addr, ",", -1);
645 if (!split || !split[0] || *split[0] == '\0') {
646 g_strfreev(split);
647 return NULL;
648 }
649
650 Xstrdup_a(email_addr, split[0], return NULL);
651 extract_address(email_addr);
652 if (!*email_addr) {
653 g_strfreev(split);
654 return NULL;
655 }
656
657 res = NULL;
658 start_address_completion(NULL);
659 if (1 < (count = complete_address(email_addr))) {
660 tmp = get_complete_address(1);
661 res = procheader_get_fromname(tmp);
662 g_free(tmp);
663 }
664 end_address_completion();
665 g_strfreev(split);
666
667 debug_print("quote_fmt_complete_address: matched %s\n", res);
668 return res;
669 }
670
671
672 #line 673 "quote_fmt_parse.c"
673
674 # ifndef YY_CAST
675 # ifdef __cplusplus
676 # define YY_CAST(Type, Val) static_cast<Type> (Val)
677 # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
678 # else
679 # define YY_CAST(Type, Val) ((Type) (Val))
680 # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
681 # endif
682 # endif
683 # ifndef YY_NULLPTR
684 # if defined __cplusplus
685 # if 201103L <= __cplusplus
686 # define YY_NULLPTR nullptr
687 # else
688 # define YY_NULLPTR 0
689 # endif
690 # else
691 # define YY_NULLPTR ((void*)0)
692 # endif
693 # endif
694
695 /* Use api.header.include to #include this header
696 instead of duplicating it here. */
697 #ifndef YY_YY_QUOTE_FMT_PARSE_H_INCLUDED
698 # define YY_YY_QUOTE_FMT_PARSE_H_INCLUDED
699 /* Debug traces. */
700 #ifndef YYDEBUG
701 # define YYDEBUG 0
702 #endif
703 #if YYDEBUG
704 extern int yydebug;
705 #endif
706
707 /* Token kinds. */
708 #ifndef YYTOKENTYPE
709 # define YYTOKENTYPE
710 enum yytokentype
711 {
712 YYEMPTY = -2,
713 YYEOF = 0, /* "end of file" */
714 YYerror = 256, /* error */
715 YYUNDEF = 257, /* "invalid token" */
716 SHOW_NEWSGROUPS = 258, /* SHOW_NEWSGROUPS */
717 SHOW_DATE = 259, /* SHOW_DATE */
718 SHOW_FROM = 260, /* SHOW_FROM */
719 SHOW_FULLNAME = 261, /* SHOW_FULLNAME */
720 SHOW_FIRST_NAME = 262, /* SHOW_FIRST_NAME */
721 SHOW_LAST_NAME = 263, /* SHOW_LAST_NAME */
722 SHOW_SENDER_INITIAL = 264, /* SHOW_SENDER_INITIAL */
723 SHOW_SUBJECT = 265, /* SHOW_SUBJECT */
724 SHOW_TO = 266, /* SHOW_TO */
725 SHOW_MESSAGEID = 267, /* SHOW_MESSAGEID */
726 SHOW_PERCENT = 268, /* SHOW_PERCENT */
727 SHOW_CC = 269, /* SHOW_CC */
728 SHOW_REFERENCES = 270, /* SHOW_REFERENCES */
729 SHOW_MESSAGE = 271, /* SHOW_MESSAGE */
730 SHOW_QUOTED_MESSAGE = 272, /* SHOW_QUOTED_MESSAGE */
731 SHOW_BACKSLASH = 273, /* SHOW_BACKSLASH */
732 SHOW_TAB = 274, /* SHOW_TAB */
733 SHOW_MAIL_ADDRESS = 275, /* SHOW_MAIL_ADDRESS */
734 SHOW_QUOTED_MESSAGE_NO_SIGNATURE = 276, /* SHOW_QUOTED_MESSAGE_NO_SIGNATURE */
735 SHOW_MESSAGE_NO_SIGNATURE = 277, /* SHOW_MESSAGE_NO_SIGNATURE */
736 SHOW_EOL = 278, /* SHOW_EOL */
737 SHOW_QUESTION_MARK = 279, /* SHOW_QUESTION_MARK */
738 SHOW_EXCLAMATION_MARK = 280, /* SHOW_EXCLAMATION_MARK */
739 SHOW_PIPE = 281, /* SHOW_PIPE */
740 SHOW_OPARENT = 282, /* SHOW_OPARENT */
741 SHOW_CPARENT = 283, /* SHOW_CPARENT */
742 SHOW_ACCOUNT_FULL_NAME = 284, /* SHOW_ACCOUNT_FULL_NAME */
743 SHOW_ACCOUNT_MAIL_ADDRESS = 285, /* SHOW_ACCOUNT_MAIL_ADDRESS */
744 SHOW_ACCOUNT_NAME = 286, /* SHOW_ACCOUNT_NAME */
745 SHOW_ACCOUNT_ORGANIZATION = 287, /* SHOW_ACCOUNT_ORGANIZATION */
746 SHOW_ACCOUNT_DICT = 288, /* SHOW_ACCOUNT_DICT */
747 SHOW_ACCOUNT_SIG = 289, /* SHOW_ACCOUNT_SIG */
748 SHOW_ACCOUNT_SIGPATH = 290, /* SHOW_ACCOUNT_SIGPATH */
749 SHOW_DICT = 291, /* SHOW_DICT */
750 SHOW_TAGS = 292, /* SHOW_TAGS */
751 SHOW_ADDRESSBOOK_COMPLETION_FOR_CC = 293, /* SHOW_ADDRESSBOOK_COMPLETION_FOR_CC */
752 SHOW_ADDRESSBOOK_COMPLETION_FOR_FROM = 294, /* SHOW_ADDRESSBOOK_COMPLETION_FOR_FROM */
753 SHOW_ADDRESSBOOK_COMPLETION_FOR_TO = 295, /* SHOW_ADDRESSBOOK_COMPLETION_FOR_TO */
754 QUERY_DATE = 296, /* QUERY_DATE */
755 QUERY_FROM = 297, /* QUERY_FROM */
756 QUERY_FULLNAME = 298, /* QUERY_FULLNAME */
757 QUERY_SUBJECT = 299, /* QUERY_SUBJECT */
758 QUERY_TO = 300, /* QUERY_TO */
759 QUERY_NEWSGROUPS = 301, /* QUERY_NEWSGROUPS */
760 QUERY_MESSAGEID = 302, /* QUERY_MESSAGEID */
761 QUERY_CC = 303, /* QUERY_CC */
762 QUERY_REFERENCES = 304, /* QUERY_REFERENCES */
763 QUERY_ACCOUNT_FULL_NAME = 305, /* QUERY_ACCOUNT_FULL_NAME */
764 QUERY_ACCOUNT_ORGANIZATION = 306, /* QUERY_ACCOUNT_ORGANIZATION */
765 QUERY_ACCOUNT_DICT = 307, /* QUERY_ACCOUNT_DICT */
766 QUERY_ACCOUNT_SIG = 308, /* QUERY_ACCOUNT_SIG */
767 QUERY_ACCOUNT_SIGPATH = 309, /* QUERY_ACCOUNT_SIGPATH */
768 QUERY_DICT = 310, /* QUERY_DICT */
769 QUERY_CC_FOUND_IN_ADDRESSBOOK = 311, /* QUERY_CC_FOUND_IN_ADDRESSBOOK */
770 QUERY_FROM_FOUND_IN_ADDRESSBOOK = 312, /* QUERY_FROM_FOUND_IN_ADDRESSBOOK */
771 QUERY_TO_FOUND_IN_ADDRESSBOOK = 313, /* QUERY_TO_FOUND_IN_ADDRESSBOOK */
772 QUERY_NOT_DATE = 314, /* QUERY_NOT_DATE */
773 QUERY_NOT_FROM = 315, /* QUERY_NOT_FROM */
774 QUERY_NOT_FULLNAME = 316, /* QUERY_NOT_FULLNAME */
775 QUERY_NOT_SUBJECT = 317, /* QUERY_NOT_SUBJECT */
776 QUERY_NOT_TO = 318, /* QUERY_NOT_TO */
777 QUERY_NOT_NEWSGROUPS = 319, /* QUERY_NOT_NEWSGROUPS */
778 QUERY_NOT_MESSAGEID = 320, /* QUERY_NOT_MESSAGEID */
779 QUERY_NOT_CC = 321, /* QUERY_NOT_CC */
780 QUERY_NOT_REFERENCES = 322, /* QUERY_NOT_REFERENCES */
781 QUERY_NOT_ACCOUNT_FULL_NAME = 323, /* QUERY_NOT_ACCOUNT_FULL_NAME */
782 QUERY_NOT_ACCOUNT_ORGANIZATION = 324, /* QUERY_NOT_ACCOUNT_ORGANIZATION */
783 QUERY_NOT_ACCOUNT_DICT = 325, /* QUERY_NOT_ACCOUNT_DICT */
784 QUERY_NOT_ACCOUNT_SIG = 326, /* QUERY_NOT_ACCOUNT_SIG */
785 QUERY_NOT_ACCOUNT_SIGPATH = 327, /* QUERY_NOT_ACCOUNT_SIGPATH */
786 QUERY_NOT_DICT = 328, /* QUERY_NOT_DICT */
787 QUERY_NOT_CC_FOUND_IN_ADDRESSBOOK = 329, /* QUERY_NOT_CC_FOUND_IN_ADDRESSBOOK */
788 QUERY_NOT_FROM_FOUND_IN_ADDRESSBOOK = 330, /* QUERY_NOT_FROM_FOUND_IN_ADDRESSBOOK */
789 QUERY_NOT_TO_FOUND_IN_ADDRESSBOOK = 331, /* QUERY_NOT_TO_FOUND_IN_ADDRESSBOOK */
790 INSERT_FILE = 332, /* INSERT_FILE */
791 INSERT_PROGRAMOUTPUT = 333, /* INSERT_PROGRAMOUTPUT */
792 INSERT_USERINPUT = 334, /* INSERT_USERINPUT */
793 ATTACH_FILE = 335, /* ATTACH_FILE */
794 ATTACH_PROGRAMOUTPUT = 336, /* ATTACH_PROGRAMOUTPUT */
795 OPARENT = 337, /* OPARENT */
796 CPARENT = 338, /* CPARENT */
797 CHARACTER = 339, /* CHARACTER */
798 SHOW_DATE_EXPR = 340, /* SHOW_DATE_EXPR */
799 SET_CURSOR_POS = 341 /* SET_CURSOR_POS */
800 };
801 typedef enum yytokentype yytoken_kind_t;
802 #endif
803 /* Token kinds. */
804 #define YYEMPTY -2
805 #define YYEOF 0
806 #define YYerror 256
807 #define YYUNDEF 257
808 #define SHOW_NEWSGROUPS 258
809 #define SHOW_DATE 259
810 #define SHOW_FROM 260
811 #define SHOW_FULLNAME 261
812 #define SHOW_FIRST_NAME 262
813 #define SHOW_LAST_NAME 263
814 #define SHOW_SENDER_INITIAL 264
815 #define SHOW_SUBJECT 265
816 #define SHOW_TO 266
817 #define SHOW_MESSAGEID 267
818 #define SHOW_PERCENT 268
819 #define SHOW_CC 269
820 #define SHOW_REFERENCES 270
821 #define SHOW_MESSAGE 271
822 #define SHOW_QUOTED_MESSAGE 272
823 #define SHOW_BACKSLASH 273
824 #define SHOW_TAB 274
825 #define SHOW_MAIL_ADDRESS 275
826 #define SHOW_QUOTED_MESSAGE_NO_SIGNATURE 276
827 #define SHOW_MESSAGE_NO_SIGNATURE 277
828 #define SHOW_EOL 278
829 #define SHOW_QUESTION_MARK 279
830 #define SHOW_EXCLAMATION_MARK 280
831 #define SHOW_PIPE 281
832 #define SHOW_OPARENT 282
833 #define SHOW_CPARENT 283
834 #define SHOW_ACCOUNT_FULL_NAME 284
835 #define SHOW_ACCOUNT_MAIL_ADDRESS 285
836 #define SHOW_ACCOUNT_NAME 286
837 #define SHOW_ACCOUNT_ORGANIZATION 287
838 #define SHOW_ACCOUNT_DICT 288
839 #define SHOW_ACCOUNT_SIG 289
840 #define SHOW_ACCOUNT_SIGPATH 290
841 #define SHOW_DICT 291
842 #define SHOW_TAGS 292
843 #define SHOW_ADDRESSBOOK_COMPLETION_FOR_CC 293
844 #define SHOW_ADDRESSBOOK_COMPLETION_FOR_FROM 294
845 #define SHOW_ADDRESSBOOK_COMPLETION_FOR_TO 295
846 #define QUERY_DATE 296
847 #define QUERY_FROM 297
848 #define QUERY_FULLNAME 298
849 #define QUERY_SUBJECT 299
850 #define QUERY_TO 300
851 #define QUERY_NEWSGROUPS 301
852 #define QUERY_MESSAGEID 302
853 #define QUERY_CC 303
854 #define QUERY_REFERENCES 304
855 #define QUERY_ACCOUNT_FULL_NAME 305
856 #define QUERY_ACCOUNT_ORGANIZATION 306
857 #define QUERY_ACCOUNT_DICT 307
858 #define QUERY_ACCOUNT_SIG 308
859 #define QUERY_ACCOUNT_SIGPATH 309
860 #define QUERY_DICT 310
861 #define QUERY_CC_FOUND_IN_ADDRESSBOOK 311
862 #define QUERY_FROM_FOUND_IN_ADDRESSBOOK 312
863 #define QUERY_TO_FOUND_IN_ADDRESSBOOK 313
864 #define QUERY_NOT_DATE 314
865 #define QUERY_NOT_FROM 315
866 #define QUERY_NOT_FULLNAME 316
867 #define QUERY_NOT_SUBJECT 317
868 #define QUERY_NOT_TO 318
869 #define QUERY_NOT_NEWSGROUPS 319
870 #define QUERY_NOT_MESSAGEID 320
871 #define QUERY_NOT_CC 321
872 #define QUERY_NOT_REFERENCES 322
873 #define QUERY_NOT_ACCOUNT_FULL_NAME 323
874 #define QUERY_NOT_ACCOUNT_ORGANIZATION 324
875 #define QUERY_NOT_ACCOUNT_DICT 325
876 #define QUERY_NOT_ACCOUNT_SIG 326
877 #define QUERY_NOT_ACCOUNT_SIGPATH 327
878 #define QUERY_NOT_DICT 328
879 #define QUERY_NOT_CC_FOUND_IN_ADDRESSBOOK 329
880 #define QUERY_NOT_FROM_FOUND_IN_ADDRESSBOOK 330
881 #define QUERY_NOT_TO_FOUND_IN_ADDRESSBOOK 331
882 #define INSERT_FILE 332
883 #define INSERT_PROGRAMOUTPUT 333
884 #define INSERT_USERINPUT 334
885 #define ATTACH_FILE 335
886 #define ATTACH_PROGRAMOUTPUT 336
887 #define OPARENT 337
888 #define CPARENT 338
889 #define CHARACTER 339
890 #define SHOW_DATE_EXPR 340
891 #define SET_CURSOR_POS 341
892
893 /* Value type. */
894 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
895 union YYSTYPE
896 {
897 #line 622 "quote_fmt_parse.y"
898
899 char chr;
900 char str[256];
901
902 #line 903 "quote_fmt_parse.c"
903
904 };
905 typedef union YYSTYPE YYSTYPE;
906 # define YYSTYPE_IS_TRIVIAL 1
907 # define YYSTYPE_IS_DECLARED 1
908 #endif
909
910
911 extern YYSTYPE yylval;
912
913 int yyparse (void);
914
915 #endif /* !YY_YY_QUOTE_FMT_PARSE_H_INCLUDED */
916 /* Symbol kind. */
917 enum yysymbol_kind_t
918 {
919 YYSYMBOL_YYEMPTY = -2,
920 YYSYMBOL_YYEOF = 0, /* "end of file" */
921 YYSYMBOL_YYerror = 1, /* error */
922 YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
923 YYSYMBOL_SHOW_NEWSGROUPS = 3, /* SHOW_NEWSGROUPS */
924 YYSYMBOL_SHOW_DATE = 4, /* SHOW_DATE */
925 YYSYMBOL_SHOW_FROM = 5, /* SHOW_FROM */
926 YYSYMBOL_SHOW_FULLNAME = 6, /* SHOW_FULLNAME */
927 YYSYMBOL_SHOW_FIRST_NAME = 7, /* SHOW_FIRST_NAME */
928 YYSYMBOL_SHOW_LAST_NAME = 8, /* SHOW_LAST_NAME */
929 YYSYMBOL_SHOW_SENDER_INITIAL = 9, /* SHOW_SENDER_INITIAL */
930 YYSYMBOL_SHOW_SUBJECT = 10, /* SHOW_SUBJECT */
931 YYSYMBOL_SHOW_TO = 11, /* SHOW_TO */
932 YYSYMBOL_SHOW_MESSAGEID = 12, /* SHOW_MESSAGEID */
933 YYSYMBOL_SHOW_PERCENT = 13, /* SHOW_PERCENT */
934 YYSYMBOL_SHOW_CC = 14, /* SHOW_CC */
935 YYSYMBOL_SHOW_REFERENCES = 15, /* SHOW_REFERENCES */
936 YYSYMBOL_SHOW_MESSAGE = 16, /* SHOW_MESSAGE */
937 YYSYMBOL_SHOW_QUOTED_MESSAGE = 17, /* SHOW_QUOTED_MESSAGE */
938 YYSYMBOL_SHOW_BACKSLASH = 18, /* SHOW_BACKSLASH */
939 YYSYMBOL_SHOW_TAB = 19, /* SHOW_TAB */
940 YYSYMBOL_SHOW_MAIL_ADDRESS = 20, /* SHOW_MAIL_ADDRESS */
941 YYSYMBOL_SHOW_QUOTED_MESSAGE_NO_SIGNATURE = 21, /* SHOW_QUOTED_MESSAGE_NO_SIGNATURE */
942 YYSYMBOL_SHOW_MESSAGE_NO_SIGNATURE = 22, /* SHOW_MESSAGE_NO_SIGNATURE */
943 YYSYMBOL_SHOW_EOL = 23, /* SHOW_EOL */
944 YYSYMBOL_SHOW_QUESTION_MARK = 24, /* SHOW_QUESTION_MARK */
945 YYSYMBOL_SHOW_EXCLAMATION_MARK = 25, /* SHOW_EXCLAMATION_MARK */
946 YYSYMBOL_SHOW_PIPE = 26, /* SHOW_PIPE */
947 YYSYMBOL_SHOW_OPARENT = 27, /* SHOW_OPARENT */
948 YYSYMBOL_SHOW_CPARENT = 28, /* SHOW_CPARENT */
949 YYSYMBOL_SHOW_ACCOUNT_FULL_NAME = 29, /* SHOW_ACCOUNT_FULL_NAME */
950 YYSYMBOL_SHOW_ACCOUNT_MAIL_ADDRESS = 30, /* SHOW_ACCOUNT_MAIL_ADDRESS */
951 YYSYMBOL_SHOW_ACCOUNT_NAME = 31, /* SHOW_ACCOUNT_NAME */
952 YYSYMBOL_SHOW_ACCOUNT_ORGANIZATION = 32, /* SHOW_ACCOUNT_ORGANIZATION */
953 YYSYMBOL_SHOW_ACCOUNT_DICT = 33, /* SHOW_ACCOUNT_DICT */
954 YYSYMBOL_SHOW_ACCOUNT_SIG = 34, /* SHOW_ACCOUNT_SIG */
955 YYSYMBOL_SHOW_ACCOUNT_SIGPATH = 35, /* SHOW_ACCOUNT_SIGPATH */
956 YYSYMBOL_SHOW_DICT = 36, /* SHOW_DICT */
957 YYSYMBOL_SHOW_TAGS = 37, /* SHOW_TAGS */
958 YYSYMBOL_SHOW_ADDRESSBOOK_COMPLETION_FOR_CC = 38, /* SHOW_ADDRESSBOOK_COMPLETION_FOR_CC */
959 YYSYMBOL_SHOW_ADDRESSBOOK_COMPLETION_FOR_FROM = 39, /* SHOW_ADDRESSBOOK_COMPLETION_FOR_FROM */
960 YYSYMBOL_SHOW_ADDRESSBOOK_COMPLETION_FOR_TO = 40, /* SHOW_ADDRESSBOOK_COMPLETION_FOR_TO */
961 YYSYMBOL_QUERY_DATE = 41, /* QUERY_DATE */
962 YYSYMBOL_QUERY_FROM = 42, /* QUERY_FROM */
963 YYSYMBOL_QUERY_FULLNAME = 43, /* QUERY_FULLNAME */
964 YYSYMBOL_QUERY_SUBJECT = 44, /* QUERY_SUBJECT */
965 YYSYMBOL_QUERY_TO = 45, /* QUERY_TO */
966 YYSYMBOL_QUERY_NEWSGROUPS = 46, /* QUERY_NEWSGROUPS */
967 YYSYMBOL_QUERY_MESSAGEID = 47, /* QUERY_MESSAGEID */
968 YYSYMBOL_QUERY_CC = 48, /* QUERY_CC */
969 YYSYMBOL_QUERY_REFERENCES = 49, /* QUERY_REFERENCES */
970 YYSYMBOL_QUERY_ACCOUNT_FULL_NAME = 50, /* QUERY_ACCOUNT_FULL_NAME */
971 YYSYMBOL_QUERY_ACCOUNT_ORGANIZATION = 51, /* QUERY_ACCOUNT_ORGANIZATION */
972 YYSYMBOL_QUERY_ACCOUNT_DICT = 52, /* QUERY_ACCOUNT_DICT */
973 YYSYMBOL_QUERY_ACCOUNT_SIG = 53, /* QUERY_ACCOUNT_SIG */
974 YYSYMBOL_QUERY_ACCOUNT_SIGPATH = 54, /* QUERY_ACCOUNT_SIGPATH */
975 YYSYMBOL_QUERY_DICT = 55, /* QUERY_DICT */
976 YYSYMBOL_QUERY_CC_FOUND_IN_ADDRESSBOOK = 56, /* QUERY_CC_FOUND_IN_ADDRESSBOOK */
977 YYSYMBOL_QUERY_FROM_FOUND_IN_ADDRESSBOOK = 57, /* QUERY_FROM_FOUND_IN_ADDRESSBOOK */
978 YYSYMBOL_QUERY_TO_FOUND_IN_ADDRESSBOOK = 58, /* QUERY_TO_FOUND_IN_ADDRESSBOOK */
979 YYSYMBOL_QUERY_NOT_DATE = 59, /* QUERY_NOT_DATE */
980 YYSYMBOL_QUERY_NOT_FROM = 60, /* QUERY_NOT_FROM */
981 YYSYMBOL_QUERY_NOT_FULLNAME = 61, /* QUERY_NOT_FULLNAME */
982 YYSYMBOL_QUERY_NOT_SUBJECT = 62, /* QUERY_NOT_SUBJECT */
983 YYSYMBOL_QUERY_NOT_TO = 63, /* QUERY_NOT_TO */
984 YYSYMBOL_QUERY_NOT_NEWSGROUPS = 64, /* QUERY_NOT_NEWSGROUPS */
985 YYSYMBOL_QUERY_NOT_MESSAGEID = 65, /* QUERY_NOT_MESSAGEID */
986 YYSYMBOL_QUERY_NOT_CC = 66, /* QUERY_NOT_CC */
987 YYSYMBOL_QUERY_NOT_REFERENCES = 67, /* QUERY_NOT_REFERENCES */
988 YYSYMBOL_QUERY_NOT_ACCOUNT_FULL_NAME = 68, /* QUERY_NOT_ACCOUNT_FULL_NAME */
989 YYSYMBOL_QUERY_NOT_ACCOUNT_ORGANIZATION = 69, /* QUERY_NOT_ACCOUNT_ORGANIZATION */
990 YYSYMBOL_QUERY_NOT_ACCOUNT_DICT = 70, /* QUERY_NOT_ACCOUNT_DICT */
991 YYSYMBOL_QUERY_NOT_ACCOUNT_SIG = 71, /* QUERY_NOT_ACCOUNT_SIG */
992 YYSYMBOL_QUERY_NOT_ACCOUNT_SIGPATH = 72, /* QUERY_NOT_ACCOUNT_SIGPATH */
993 YYSYMBOL_QUERY_NOT_DICT = 73, /* QUERY_NOT_DICT */
994 YYSYMBOL_QUERY_NOT_CC_FOUND_IN_ADDRESSBOOK = 74, /* QUERY_NOT_CC_FOUND_IN_ADDRESSBOOK */
995 YYSYMBOL_QUERY_NOT_FROM_FOUND_IN_ADDRESSBOOK = 75, /* QUERY_NOT_FROM_FOUND_IN_ADDRESSBOOK */
996 YYSYMBOL_QUERY_NOT_TO_FOUND_IN_ADDRESSBOOK = 76, /* QUERY_NOT_TO_FOUND_IN_ADDRESSBOOK */
997 YYSYMBOL_INSERT_FILE = 77, /* INSERT_FILE */
998 YYSYMBOL_INSERT_PROGRAMOUTPUT = 78, /* INSERT_PROGRAMOUTPUT */
999 YYSYMBOL_INSERT_USERINPUT = 79, /* INSERT_USERINPUT */
1000 YYSYMBOL_ATTACH_FILE = 80, /* ATTACH_FILE */
1001 YYSYMBOL_ATTACH_PROGRAMOUTPUT = 81, /* ATTACH_PROGRAMOUTPUT */
1002 YYSYMBOL_OPARENT = 82, /* OPARENT */
1003 YYSYMBOL_CPARENT = 83, /* CPARENT */
1004 YYSYMBOL_CHARACTER = 84, /* CHARACTER */
1005 YYSYMBOL_SHOW_DATE_EXPR = 85, /* SHOW_DATE_EXPR */
1006 YYSYMBOL_SET_CURSOR_POS = 86, /* SET_CURSOR_POS */
1007 YYSYMBOL_YYACCEPT = 87, /* $accept */
1008 YYSYMBOL_quote_fmt = 88, /* quote_fmt */
1009 YYSYMBOL_sub_expr = 89, /* sub_expr */
1010 YYSYMBOL_character_or_special_or_insert_or_query_list = 90, /* character_or_special_or_insert_or_query_list */
1011 YYSYMBOL_character_or_special_list = 91, /* character_or_special_list */
1012 YYSYMBOL_character_or_special_or_insert_or_query = 92, /* character_or_special_or_insert_or_query */
1013 YYSYMBOL_character_or_special = 93, /* character_or_special */
1014 YYSYMBOL_character = 94, /* character */
1015 YYSYMBOL_string = 95, /* string */
1016 YYSYMBOL_special = 96, /* special */
1017 YYSYMBOL_query = 97, /* query */
1018 YYSYMBOL_98_1 = 98, /* $@1 */
1019 YYSYMBOL_99_2 = 99, /* $@2 */
1020 YYSYMBOL_100_3 = 100, /* $@3 */
1021 YYSYMBOL_101_4 = 101, /* $@4 */
1022 YYSYMBOL_102_5 = 102, /* $@5 */
1023 YYSYMBOL_103_6 = 103, /* $@6 */
1024 YYSYMBOL_104_7 = 104, /* $@7 */
1025 YYSYMBOL_105_8 = 105, /* $@8 */
1026 YYSYMBOL_106_9 = 106, /* $@9 */
1027 YYSYMBOL_107_10 = 107, /* $@10 */
1028 YYSYMBOL_108_11 = 108, /* $@11 */
1029 YYSYMBOL_109_12 = 109, /* $@12 */
1030 YYSYMBOL_110_13 = 110, /* $@13 */
1031 YYSYMBOL_111_14 = 111, /* $@14 */
1032 YYSYMBOL_112_15 = 112, /* $@15 */
1033 YYSYMBOL_113_16 = 113, /* $@16 */
1034 YYSYMBOL_114_17 = 114, /* $@17 */
1035 YYSYMBOL_115_18 = 115, /* $@18 */
1036 YYSYMBOL_query_not = 116, /* query_not */
1037 YYSYMBOL_117_19 = 117, /* $@19 */
1038 YYSYMBOL_118_20 = 118, /* $@20 */
1039 YYSYMBOL_119_21 = 119, /* $@21 */
1040 YYSYMBOL_120_22 = 120, /* $@22 */
1041 YYSYMBOL_121_23 = 121, /* $@23 */
1042 YYSYMBOL_122_24 = 122, /* $@24 */
1043 YYSYMBOL_123_25 = 123, /* $@25 */
1044 YYSYMBOL_124_26 = 124, /* $@26 */
1045 YYSYMBOL_125_27 = 125, /* $@27 */
1046 YYSYMBOL_126_28 = 126, /* $@28 */
1047 YYSYMBOL_127_29 = 127, /* $@29 */
1048 YYSYMBOL_128_30 = 128, /* $@30 */
1049 YYSYMBOL_129_31 = 129, /* $@31 */
1050 YYSYMBOL_130_32 = 130, /* $@32 */
1051 YYSYMBOL_131_33 = 131, /* $@33 */
1052 YYSYMBOL_132_34 = 132, /* $@34 */
1053 YYSYMBOL_133_35 = 133, /* $@35 */
1054 YYSYMBOL_134_36 = 134, /* $@36 */
1055 YYSYMBOL_insert = 135, /* insert */
1056 YYSYMBOL_136_37 = 136, /* $@37 */
1057 YYSYMBOL_137_38 = 137, /* $@38 */
1058 YYSYMBOL_138_39 = 138, /* $@39 */
1059 YYSYMBOL_attach = 139, /* attach */
1060 YYSYMBOL_140_40 = 140, /* $@40 */
1061 YYSYMBOL_141_41 = 141 /* $@41 */
1062 };
1063 typedef enum yysymbol_kind_t yysymbol_kind_t;
1064
1065
1066
1067
1068 #ifdef short
1069 # undef short
1070 #endif
1071
1072 /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
1073 <limits.h> and (if available) <stdint.h> are included
1074 so that the code can choose integer types of a good width. */
1075
1076 #ifndef __PTRDIFF_MAX__
1077 # include <limits.h> /* INFRINGES ON USER NAME SPACE */
1078 # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
1079 # include <stdint.h> /* INFRINGES ON USER NAME SPACE */
1080 # define YY_STDINT_H
1081 # endif
1082 #endif
1083
1084 /* Narrow types that promote to a signed type and that can represent a
1085 signed or unsigned integer of at least N bits. In tables they can
1086 save space and decrease cache pressure. Promoting to a signed type
1087 helps avoid bugs in integer arithmetic. */
1088
1089 #ifdef __INT_LEAST8_MAX__
1090 typedef __INT_LEAST8_TYPE__ yytype_int8;
1091 #elif defined YY_STDINT_H
1092 typedef int_least8_t yytype_int8;
1093 #else
1094 typedef signed char yytype_int8;
1095 #endif
1096
1097 #ifdef __INT_LEAST16_MAX__
1098 typedef __INT_LEAST16_TYPE__ yytype_int16;
1099 #elif defined YY_STDINT_H
1100 typedef int_least16_t yytype_int16;
1101 #else
1102 typedef short yytype_int16;
1103 #endif
1104
1105 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
1106 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
1107 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
1108 && UINT_LEAST8_MAX <= INT_MAX)
1109 typedef uint_least8_t yytype_uint8;
1110 #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
1111 typedef unsigned char yytype_uint8;
1112 #else
1113 typedef short yytype_uint8;
1114 #endif
1115
1116 #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
1117 typedef __UINT_LEAST16_TYPE__ yytype_uint16;
1118 #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
1119 && UINT_LEAST16_MAX <= INT_MAX)
1120 typedef uint_least16_t yytype_uint16;
1121 #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
1122 typedef unsigned short yytype_uint16;
1123 #else
1124 typedef int yytype_uint16;
1125 #endif
1126
1127 #ifndef YYPTRDIFF_T
1128 # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
1129 # define YYPTRDIFF_T __PTRDIFF_TYPE__
1130 # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
1131 # elif defined PTRDIFF_MAX
1132 # ifndef ptrdiff_t
1133 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
1134 # endif
1135 # define YYPTRDIFF_T ptrdiff_t
1136 # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
1137 # else
1138 # define YYPTRDIFF_T long
1139 # define YYPTRDIFF_MAXIMUM LONG_MAX
1140 # endif
1141 #endif
1142
1143 #ifndef YYSIZE_T
1144 # ifdef __SIZE_TYPE__
1145 # define YYSIZE_T __SIZE_TYPE__
1146 # elif defined size_t
1147 # define YYSIZE_T size_t
1148 # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
1149 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
1150 # define YYSIZE_T size_t
1151 # else
1152 # define YYSIZE_T unsigned
1153 # endif
1154 #endif
1155
1156 #define YYSIZE_MAXIMUM \
1157 YY_CAST (YYPTRDIFF_T, \
1158 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
1159 ? YYPTRDIFF_MAXIMUM \
1160 : YY_CAST (YYSIZE_T, -1)))
1161
1162 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
1163
1164
1165 /* Stored state numbers (used for stacks). */
1166 typedef yytype_int16 yy_state_t;
1167
1168 /* State numbers in computations. */
1169 typedef int yy_state_fast_t;
1170
1171 #ifndef YY_
1172 # if defined YYENABLE_NLS && YYENABLE_NLS
1173 # if ENABLE_NLS
1174 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
1175 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
1176 # endif
1177 # endif
1178 # ifndef YY_
1179 # define YY_(Msgid) Msgid
1180 # endif
1181 #endif
1182
1183
1184 #ifndef YY_ATTRIBUTE_PURE
1185 # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
1186 # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
1187 # else
1188 # define YY_ATTRIBUTE_PURE
1189 # endif
1190 #endif
1191
1192 #ifndef YY_ATTRIBUTE_UNUSED
1193 # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
1194 # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
1195 # else
1196 # define YY_ATTRIBUTE_UNUSED
1197 # endif
1198 #endif
1199
1200 /* Suppress unused-variable warnings by "using" E. */
1201 #if ! defined lint || defined __GNUC__
1202 # define YYUSE(E) ((void) (E))
1203 #else
1204 # define YYUSE(E) /* empty */
1205 #endif
1206
1207 #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
1208 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
1209 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
1210 _Pragma ("GCC diagnostic push") \
1211 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
1212 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
1213 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
1214 _Pragma ("GCC diagnostic pop")
1215 #else
1216 # define YY_INITIAL_VALUE(Value) Value
1217 #endif
1218 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1219 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1220 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
1221 #endif
1222 #ifndef YY_INITIAL_VALUE
1223 # define YY_INITIAL_VALUE(Value) /* Nothing. */
1224 #endif
1225
1226 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
1227 # define YY_IGNORE_USELESS_CAST_BEGIN \
1228 _Pragma ("GCC diagnostic push") \
1229 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
1230 # define YY_IGNORE_USELESS_CAST_END \
1231 _Pragma ("GCC diagnostic pop")
1232 #endif
1233 #ifndef YY_IGNORE_USELESS_CAST_BEGIN
1234 # define YY_IGNORE_USELESS_CAST_BEGIN
1235 # define YY_IGNORE_USELESS_CAST_END
1236 #endif
1237
1238
1239 #define YY_ASSERT(E) ((void) (0 && (E)))
1240
1241 #if !defined yyoverflow
1242
1243 /* The parser invokes alloca or malloc; define the necessary symbols. */
1244
1245 # ifdef YYSTACK_USE_ALLOCA
1246 # if YYSTACK_USE_ALLOCA
1247 # ifdef __GNUC__
1248 # define YYSTACK_ALLOC __builtin_alloca
1249 # elif defined __BUILTIN_VA_ARG_INCR
1250 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
1251 # elif defined _AIX
1252 # define YYSTACK_ALLOC __alloca
1253 # elif defined _MSC_VER
1254 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
1255 # define alloca _alloca
1256 # else
1257 # define YYSTACK_ALLOC alloca
1258 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
1259 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1260 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
1261 # ifndef EXIT_SUCCESS
1262 # define EXIT_SUCCESS 0
1263 # endif
1264 # endif
1265 # endif
1266 # endif
1267 # endif
1268
1269 # ifdef YYSTACK_ALLOC
1270 /* Pacify GCC's 'empty if-body' warning. */
1271 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
1272 # ifndef YYSTACK_ALLOC_MAXIMUM
1273 /* The OS might guarantee only one guard page at the bottom of the stack,
1274 and a page size can be as small as 4096 bytes. So we cannot safely
1275 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
1276 to allow for a few compiler-allocated temporary stack slots. */
1277 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
1278 # endif
1279 # else
1280 # define YYSTACK_ALLOC YYMALLOC
1281 # define YYSTACK_FREE YYFREE
1282 # ifndef YYSTACK_ALLOC_MAXIMUM
1283 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
1284 # endif
1285 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
1286 && ! ((defined YYMALLOC || defined malloc) \
1287 && (defined YYFREE || defined free)))
1288 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1289 # ifndef EXIT_SUCCESS
1290 # define EXIT_SUCCESS 0
1291 # endif
1292 # endif
1293 # ifndef YYMALLOC
1294 # define YYMALLOC malloc
1295 # if ! defined malloc && ! defined EXIT_SUCCESS
1296 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
1297 # endif
1298 # endif
1299 # ifndef YYFREE
1300 # define YYFREE free
1301 # if ! defined free && ! defined EXIT_SUCCESS
1302 void free (void *); /* INFRINGES ON USER NAME SPACE */
1303 # endif
1304 # endif
1305 # endif
1306 #endif /* !defined yyoverflow */
1307
1308 #if (! defined yyoverflow \
1309 && (! defined __cplusplus \
1310 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
1311
1312 /* A type that is properly aligned for any stack member. */
1313 union yyalloc
1314 {
1315 yy_state_t yyss_alloc;
1316 YYSTYPE yyvs_alloc;
1317 };
1318
1319 /* The size of the maximum gap between one aligned stack and the next. */
1320 # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
1321
1322 /* The size of an array large to enough to hold all stacks, each with
1323 N elements. */
1324 # define YYSTACK_BYTES(N) \
1325 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
1326 + YYSTACK_GAP_MAXIMUM)
1327
1328 # define YYCOPY_NEEDED 1
1329
1330 /* Relocate STACK from its old location to the new one. The
1331 local variables YYSIZE and YYSTACKSIZE give the old and new number of
1332 elements in the stack, and YYPTR gives the new location of the
1333 stack. Advance YYPTR to a properly aligned location for the next
1334 stack. */
1335 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
1336 do \
1337 { \
1338 YYPTRDIFF_T yynewbytes; \
1339 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
1340 Stack = &yyptr->Stack_alloc; \
1341 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
1342 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
1343 } \
1344 while (0)
1345
1346 #endif
1347
1348 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
1349 /* Copy COUNT objects from SRC to DST. The source and destination do
1350 not overlap. */
1351 # ifndef YYCOPY
1352 # if defined __GNUC__ && 1 < __GNUC__
1353 # define YYCOPY(Dst, Src, Count) \
1354 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
1355 # else
1356 # define YYCOPY(Dst, Src, Count) \
1357 do \
1358 { \
1359 YYPTRDIFF_T yyi; \
1360 for (yyi = 0; yyi < (Count); yyi++) \
1361 (Dst)[yyi] = (Src)[yyi]; \
1362 } \
1363 while (0)
1364 # endif
1365 # endif
1366 #endif /* !YYCOPY_NEEDED */
1367
1368 /* YYFINAL -- State number of the termination state. */
1369 #define YYFINAL 135
1370 /* YYLAST -- Last index in YYTABLE. */
1371 #define YYLAST 261
1372
1373 /* YYNTOKENS -- Number of terminals. */
1374 #define YYNTOKENS 87
1375 /* YYNNTS -- Number of nonterminals. */
1376 #define YYNNTS 55
1377 /* YYNRULES -- Number of rules. */
1378 #define YYNRULES 139
1379 /* YYNSTATES -- Number of states. */
1380 #define YYNSTATES 267
1381
1382 /* YYMAXUTOK -- Last valid token kind. */
1383 #define YYMAXUTOK 341
1384
1385
1386 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
1387 as returned by yylex, with out-of-bounds checking. */
1388 #define YYTRANSLATE(YYX) \
1389 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
1390 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
1391 : YYSYMBOL_YYUNDEF)
1392
1393 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
1394 as returned by yylex. */
1395 static const yytype_int8 yytranslate[] =
1396 {
1397 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1398 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1399 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1400 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1401 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1402 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1403 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1404 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1405 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1406 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1407 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1408 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1409 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1410 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1411 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1412 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1413 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1414 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1415 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1416 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1417 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1418 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1419 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1420 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1421 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1422 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
1423 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
1424 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1425 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1426 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
1427 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1428 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1429 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
1430 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1431 85, 86
1432 };
1433
1434 #if YYDEBUG
1435 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
1436 static const yytype_int16 yyrline[] =
1437 {
1438 0, 678, 678, 681, 684, 685, 688, 689, 692, 693,
1439 694, 695, 696, 699, 700, 706, 710, 715, 729, 734,
1440 738, 743, 748, 757, 762, 766, 770, 774, 779, 784,
1441 789, 793, 798, 807, 811, 815, 819, 823, 828, 833,
1442 838, 843, 849, 854, 864, 870, 878, 882, 886, 890,
1443 894, 898, 902, 906, 910, 917, 925, 933, 944, 943,
1444 952, 951, 960, 959, 968, 967, 976, 975, 984, 983,
1445 992, 991, 1000, 999, 1008, 1007, 1023, 1022, 1031, 1030,
1446 1039, 1038, 1049, 1048, 1058, 1057, 1071, 1070, 1083, 1082,
1447 1093, 1092, 1103, 1102, 1115, 1114, 1123, 1122, 1131, 1130,
1448 1139, 1138, 1147, 1146, 1155, 1154, 1163, 1162, 1171, 1170,
1449 1179, 1178, 1194, 1193, 1202, 1201, 1210, 1209, 1220, 1219,
1450 1229, 1228, 1242, 1241, 1254, 1253, 1264, 1263, 1274, 1273,
1451 1286, 1285, 1298, 1297, 1310, 1309, 1324, 1323, 1336, 1335
1452 };
1453 #endif
1454
1455 /** Accessing symbol of state STATE. */
1456 #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
1457
1458 #if YYDEBUG || 0
1459 /* The user-facing name of the symbol whose (internal) number is
1460 YYSYMBOL. No bounds checking. */
1461 static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
1462
1463 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1464 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
1465 static const char *const yytname[] =
1466 {
1467 "\"end of file\"", "error", "\"invalid token\"", "SHOW_NEWSGROUPS",
1468 "SHOW_DATE", "SHOW_FROM", "SHOW_FULLNAME", "SHOW_FIRST_NAME",
1469 "SHOW_LAST_NAME", "SHOW_SENDER_INITIAL", "SHOW_SUBJECT", "SHOW_TO",
1470 "SHOW_MESSAGEID", "SHOW_PERCENT", "SHOW_CC", "SHOW_REFERENCES",
1471 "SHOW_MESSAGE", "SHOW_QUOTED_MESSAGE", "SHOW_BACKSLASH", "SHOW_TAB",
1472 "SHOW_MAIL_ADDRESS", "SHOW_QUOTED_MESSAGE_NO_SIGNATURE",
1473 "SHOW_MESSAGE_NO_SIGNATURE", "SHOW_EOL", "SHOW_QUESTION_MARK",
1474 "SHOW_EXCLAMATION_MARK", "SHOW_PIPE", "SHOW_OPARENT", "SHOW_CPARENT",
1475 "SHOW_ACCOUNT_FULL_NAME", "SHOW_ACCOUNT_MAIL_ADDRESS",
1476 "SHOW_ACCOUNT_NAME", "SHOW_ACCOUNT_ORGANIZATION", "SHOW_ACCOUNT_DICT",
1477 "SHOW_ACCOUNT_SIG", "SHOW_ACCOUNT_SIGPATH", "SHOW_DICT", "SHOW_TAGS",
1478 "SHOW_ADDRESSBOOK_COMPLETION_FOR_CC",
1479 "SHOW_ADDRESSBOOK_COMPLETION_FOR_FROM",
1480 "SHOW_ADDRESSBOOK_COMPLETION_FOR_TO", "QUERY_DATE", "QUERY_FROM",
1481 "QUERY_FULLNAME", "QUERY_SUBJECT", "QUERY_TO", "QUERY_NEWSGROUPS",
1482 "QUERY_MESSAGEID", "QUERY_CC", "QUERY_REFERENCES",
1483 "QUERY_ACCOUNT_FULL_NAME", "QUERY_ACCOUNT_ORGANIZATION",
1484 "QUERY_ACCOUNT_DICT", "QUERY_ACCOUNT_SIG", "QUERY_ACCOUNT_SIGPATH",
1485 "QUERY_DICT", "QUERY_CC_FOUND_IN_ADDRESSBOOK",
1486 "QUERY_FROM_FOUND_IN_ADDRESSBOOK", "QUERY_TO_FOUND_IN_ADDRESSBOOK",
1487 "QUERY_NOT_DATE", "QUERY_NOT_FROM", "QUERY_NOT_FULLNAME",
1488 "QUERY_NOT_SUBJECT", "QUERY_NOT_TO", "QUERY_NOT_NEWSGROUPS",
1489 "QUERY_NOT_MESSAGEID", "QUERY_NOT_CC", "QUERY_NOT_REFERENCES",
1490 "QUERY_NOT_ACCOUNT_FULL_NAME", "QUERY_NOT_ACCOUNT_ORGANIZATION",
1491 "QUERY_NOT_ACCOUNT_DICT", "QUERY_NOT_ACCOUNT_SIG",
1492 "QUERY_NOT_ACCOUNT_SIGPATH", "QUERY_NOT_DICT",
1493 "QUERY_NOT_CC_FOUND_IN_ADDRESSBOOK",
1494 "QUERY_NOT_FROM_FOUND_IN_ADDRESSBOOK",
1495 "QUERY_NOT_TO_FOUND_IN_ADDRESSBOOK", "INSERT_FILE",
1496 "INSERT_PROGRAMOUTPUT", "INSERT_USERINPUT", "ATTACH_FILE",
1497 "ATTACH_PROGRAMOUTPUT", "OPARENT", "CPARENT", "CHARACTER",
1498 "SHOW_DATE_EXPR", "SET_CURSOR_POS", "$accept", "quote_fmt", "sub_expr",
1499 "character_or_special_or_insert_or_query_list",
1500 "character_or_special_list", "character_or_special_or_insert_or_query",
1501 "character_or_special", "character", "string", "special", "query", "$@1",
1502 "$@2", "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", "$@9", "$@10", "$@11",
1503 "$@12", "$@13", "$@14", "$@15", "$@16", "$@17", "$@18", "query_not",
1504 "$@19", "$@20", "$@21", "$@22", "$@23", "$@24", "$@25", "$@26", "$@27",
1505 "$@28", "$@29", "$@30", "$@31", "$@32", "$@33", "$@34", "$@35", "$@36",
1506 "insert", "$@37", "$@38", "$@39", "attach", "$@40", "$@41", YY_NULLPTR
1507 };
1508
1509 static const char *
yysymbol_name(yysymbol_kind_t yysymbol)1510 yysymbol_name (yysymbol_kind_t yysymbol)
1511 {
1512 return yytname[yysymbol];
1513 }
1514 #endif
1515
1516 #ifdef YYPRINT
1517 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
1518 (internal) symbol number NUM (which must be that of a token). */
1519 static const yytype_int16 yytoknum[] =
1520 {
1521 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1522 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1523 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1524 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1525 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
1526 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1527 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
1528 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
1529 335, 336, 337, 338, 339, 340, 341
1530 };
1531 #endif
1532
1533 #define YYPACT_NINF (-51)
1534
1535 #define yypact_value_is_default(Yyn) \
1536 ((Yyn) == YYPACT_NINF)
1537
1538 #define YYTABLE_NINF (-1)
1539
1540 #define yytable_value_is_error(Yyn) \
1541 0
1542
1543 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1544 STATE-NUM. */
1545 static const yytype_int16 yypact[] =
1546 {
1547 -3, -51, -51, -51, -51, -51, -51, -51, -51, -51,
1548 -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
1549 -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
1550 -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
1551 -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
1552 -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
1553 -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
1554 -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
1555 -51, 40, -51, 164, -51, -3, -51, -51, -51, -51,
1556 -51, -51, -51, 91, 92, 93, 94, 95, 96, 97,
1557 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
1558 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
1559 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
1560 128, 129, 130, 131, 132, -51, -51, -3, -3, -3,
1561 -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
1562 -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
1563 -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
1564 -3, -3, -3, 81, 81, 81, 81, 81, -51, -4,
1565 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
1566 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
1567 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
1568 165, 166, 167, 168, 169, 170, 171, -51, 81, 172,
1569 173, 174, 175, -51, -51, -51, -51, -51, -51, -51,
1570 -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
1571 -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
1572 -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
1573 -51, -51, -51, -51, -51, -51, -51
1574 };
1575
1576 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1577 Performed when YYTABLE does not specify something else to do. Zero
1578 means the default is an error. */
1579 static const yytype_uint8 yydefact[] =
1580 {
1581 0, 18, 20, 21, 23, 24, 25, 26, 27, 28,
1582 29, 30, 31, 32, 33, 34, 46, 47, 22, 36,
1583 35, 48, 49, 50, 51, 52, 53, 37, 38, 39,
1584 40, 43, 41, 42, 44, 45, 55, 56, 57, 58,
1585 60, 62, 64, 66, 68, 70, 72, 74, 76, 78,
1586 84, 80, 82, 86, 88, 90, 92, 94, 96, 98,
1587 100, 102, 104, 106, 108, 110, 112, 114, 120, 116,
1588 118, 122, 124, 126, 128, 130, 132, 134, 136, 138,
1589 15, 0, 54, 0, 2, 5, 8, 14, 13, 9,
1590 10, 11, 12, 0, 0, 0, 0, 0, 0, 0,
1591 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1592 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1593 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1594 0, 0, 0, 0, 0, 1, 4, 0, 0, 0,
1595 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1596 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1597 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1598 0, 0, 0, 0, 0, 0, 0, 0, 16, 0,
1599 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1600 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1601 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1602 0, 0, 0, 0, 0, 0, 0, 3, 7, 0,
1603 0, 0, 0, 19, 17, 59, 61, 63, 65, 67,
1604 69, 71, 73, 75, 77, 79, 85, 81, 83, 87,
1605 89, 91, 93, 95, 97, 99, 101, 103, 105, 107,
1606 109, 111, 113, 115, 121, 117, 119, 123, 125, 127,
1607 129, 131, 6, 133, 135, 137, 139
1608 };
1609
1610 /* YYPGOTO[NTERM-NUM]. */
1611 static const yytype_int16 yypgoto[] =
1612 {
1613 -51, -9, -5, 176, 29, -51, -50, -51, -51, -51,
1614 -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
1615 -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
1616 -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
1617 -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
1618 -51, -51, -51, -51, -51
1619 };
1620
1621 /* YYDEFGOTO[NTERM-NUM]. */
1622 static const yytype_int16 yydefgoto[] =
1623 {
1624 -1, 83, 216, 84, 217, 85, 86, 87, 179, 88,
1625 89, 93, 94, 95, 96, 97, 98, 99, 100, 101,
1626 102, 103, 105, 106, 104, 107, 108, 109, 110, 90,
1627 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
1628 121, 123, 124, 122, 125, 126, 127, 128, 91, 129,
1629 130, 131, 92, 132, 133
1630 };
1631
1632 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
1633 positive, shift that token. If negative, reduce the rule whose
1634 number is the opposite. If YYTABLE_NINF, syntax error. */
1635 static const yytype_int16 yytable[] =
1636 {
1637 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
1638 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
1639 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
1640 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
1641 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
1642 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
1643 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
1644 71, 72, 73, 74, 75, 76, 77, 78, 79, 223,
1645 224, 80, 81, 82, 1, 2, 3, 4, 5, 6,
1646 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
1647 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
1648 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
1649 37, 38, 134, 218, 218, 218, 218, 218, 180, 181,
1650 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
1651 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
1652 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
1653 212, 213, 214, 215, 135, 80, 81, 82, 218, 219,
1654 220, 221, 222, 137, 138, 139, 140, 141, 142, 143,
1655 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
1656 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
1657 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
1658 174, 175, 176, 177, 0, 0, 178, 225, 226, 227,
1659 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
1660 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
1661 248, 249, 250, 251, 252, 253, 254, 262, 255, 256,
1662 257, 258, 259, 260, 261, 263, 264, 265, 266, 0,
1663 0, 136
1664 };
1665
1666 static const yytype_int16 yycheck[] =
1667 {
1668 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
1669 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
1670 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
1671 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
1672 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
1673 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
1674 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
1675 73, 74, 75, 76, 77, 78, 79, 80, 81, 83,
1676 84, 84, 85, 86, 3, 4, 5, 6, 7, 8,
1677 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
1678 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
1679 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
1680 39, 40, 82, 173, 174, 175, 176, 177, 137, 138,
1681 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
1682 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
1683 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
1684 169, 170, 171, 172, 0, 84, 85, 86, 218, 174,
1685 175, 176, 177, 82, 82, 82, 82, 82, 82, 82,
1686 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
1687 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
1688 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
1689 82, 82, 82, 82, -1, -1, 84, 83, 83, 83,
1690 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
1691 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
1692 83, 83, 83, 83, 83, 83, 83, 218, 83, 83,
1693 83, 83, 83, 83, 83, 83, 83, 83, 83, -1,
1694 -1, 85
1695 };
1696
1697 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1698 symbol of state STATE-NUM. */
1699 static const yytype_uint8 yystos[] =
1700 {
1701 0, 3, 4, 5, 6, 7, 8, 9, 10, 11,
1702 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
1703 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
1704 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
1705 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
1706 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
1707 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
1708 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
1709 84, 85, 86, 88, 90, 92, 93, 94, 96, 97,
1710 116, 135, 139, 98, 99, 100, 101, 102, 103, 104,
1711 105, 106, 107, 108, 111, 109, 110, 112, 113, 114,
1712 115, 117, 118, 119, 120, 121, 122, 123, 124, 125,
1713 126, 127, 130, 128, 129, 131, 132, 133, 134, 136,
1714 137, 138, 140, 141, 82, 0, 90, 82, 82, 82,
1715 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
1716 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
1717 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
1718 82, 82, 82, 82, 82, 82, 82, 82, 84, 95,
1719 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
1720 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
1721 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
1722 88, 88, 88, 88, 88, 88, 89, 91, 93, 89,
1723 89, 89, 89, 83, 84, 83, 83, 83, 83, 83,
1724 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
1725 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
1726 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
1727 83, 83, 91, 83, 83, 83, 83
1728 };
1729
1730 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
1731 static const yytype_uint8 yyr1[] =
1732 {
1733 0, 87, 88, 89, 90, 90, 91, 91, 92, 92,
1734 92, 92, 92, 93, 93, 94, 95, 95, 96, 96,
1735 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
1736 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
1737 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
1738 96, 96, 96, 96, 96, 96, 96, 96, 98, 97,
1739 99, 97, 100, 97, 101, 97, 102, 97, 103, 97,
1740 104, 97, 105, 97, 106, 97, 107, 97, 108, 97,
1741 109, 97, 110, 97, 111, 97, 112, 97, 113, 97,
1742 114, 97, 115, 97, 117, 116, 118, 116, 119, 116,
1743 120, 116, 121, 116, 122, 116, 123, 116, 124, 116,
1744 125, 116, 126, 116, 127, 116, 128, 116, 129, 116,
1745 130, 116, 131, 116, 132, 116, 133, 116, 134, 116,
1746 136, 135, 137, 135, 138, 135, 140, 139, 141, 139
1747 };
1748
1749 /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
1750 static const yytype_int8 yyr2[] =
1751 {
1752 0, 2, 1, 1, 2, 1, 2, 1, 1, 1,
1753 1, 1, 1, 1, 1, 1, 1, 2, 1, 4,
1754 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1755 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1756 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1757 1, 1, 1, 1, 1, 1, 1, 1, 0, 5,
1758 0, 5, 0, 5, 0, 5, 0, 5, 0, 5,
1759 0, 5, 0, 5, 0, 5, 0, 5, 0, 5,
1760 0, 5, 0, 5, 0, 5, 0, 5, 0, 5,
1761 0, 5, 0, 5, 0, 5, 0, 5, 0, 5,
1762 0, 5, 0, 5, 0, 5, 0, 5, 0, 5,
1763 0, 5, 0, 5, 0, 5, 0, 5, 0, 5,
1764 0, 5, 0, 5, 0, 5, 0, 5, 0, 5,
1765 0, 5, 0, 5, 0, 5, 0, 5, 0, 5
1766 };
1767
1768
1769 enum { YYENOMEM = -2 };
1770
1771 #define yyerrok (yyerrstatus = 0)
1772 #define yyclearin (yychar = YYEMPTY)
1773
1774 #define YYACCEPT goto yyacceptlab
1775 #define YYABORT goto yyabortlab
1776 #define YYERROR goto yyerrorlab
1777
1778
1779 #define YYRECOVERING() (!!yyerrstatus)
1780
1781 #define YYBACKUP(Token, Value) \
1782 do \
1783 if (yychar == YYEMPTY) \
1784 { \
1785 yychar = (Token); \
1786 yylval = (Value); \
1787 YYPOPSTACK (yylen); \
1788 yystate = *yyssp; \
1789 goto yybackup; \
1790 } \
1791 else \
1792 { \
1793 yyerror (YY_("syntax error: cannot back up")); \
1794 YYERROR; \
1795 } \
1796 while (0)
1797
1798 /* Backward compatibility with an undocumented macro.
1799 Use YYerror or YYUNDEF. */
1800 #define YYERRCODE YYUNDEF
1801
1802
1803 /* Enable debugging if requested. */
1804 #if YYDEBUG
1805
1806 # ifndef YYFPRINTF
1807 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1808 # define YYFPRINTF fprintf
1809 # endif
1810
1811 # define YYDPRINTF(Args) \
1812 do { \
1813 if (yydebug) \
1814 YYFPRINTF Args; \
1815 } while (0)
1816
1817 /* This macro is provided for backward compatibility. */
1818 # ifndef YY_LOCATION_PRINT
1819 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1820 # endif
1821
1822
1823 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
1824 do { \
1825 if (yydebug) \
1826 { \
1827 YYFPRINTF (stderr, "%s ", Title); \
1828 yy_symbol_print (stderr, \
1829 Kind, Value); \
1830 YYFPRINTF (stderr, "\n"); \
1831 } \
1832 } while (0)
1833
1834
1835 /*-----------------------------------.
1836 | Print this symbol's value on YYO. |
1837 `-----------------------------------*/
1838
1839 static void
yy_symbol_value_print(FILE * yyo,yysymbol_kind_t yykind,YYSTYPE const * const yyvaluep)1840 yy_symbol_value_print (FILE *yyo,
1841 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
1842 {
1843 FILE *yyoutput = yyo;
1844 YYUSE (yyoutput);
1845 if (!yyvaluep)
1846 return;
1847 # ifdef YYPRINT
1848 if (yykind < YYNTOKENS)
1849 YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
1850 # endif
1851 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1852 YYUSE (yykind);
1853 YY_IGNORE_MAYBE_UNINITIALIZED_END
1854 }
1855
1856
1857 /*---------------------------.
1858 | Print this symbol on YYO. |
1859 `---------------------------*/
1860
1861 static void
yy_symbol_print(FILE * yyo,yysymbol_kind_t yykind,YYSTYPE const * const yyvaluep)1862 yy_symbol_print (FILE *yyo,
1863 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
1864 {
1865 YYFPRINTF (yyo, "%s %s (",
1866 yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
1867
1868 yy_symbol_value_print (yyo, yykind, yyvaluep);
1869 YYFPRINTF (yyo, ")");
1870 }
1871
1872 /*------------------------------------------------------------------.
1873 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1874 | TOP (included). |
1875 `------------------------------------------------------------------*/
1876
1877 static void
yy_stack_print(yy_state_t * yybottom,yy_state_t * yytop)1878 yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
1879 {
1880 YYFPRINTF (stderr, "Stack now");
1881 for (; yybottom <= yytop; yybottom++)
1882 {
1883 int yybot = *yybottom;
1884 YYFPRINTF (stderr, " %d", yybot);
1885 }
1886 YYFPRINTF (stderr, "\n");
1887 }
1888
1889 # define YY_STACK_PRINT(Bottom, Top) \
1890 do { \
1891 if (yydebug) \
1892 yy_stack_print ((Bottom), (Top)); \
1893 } while (0)
1894
1895
1896 /*------------------------------------------------.
1897 | Report that the YYRULE is going to be reduced. |
1898 `------------------------------------------------*/
1899
1900 static void
yy_reduce_print(yy_state_t * yyssp,YYSTYPE * yyvsp,int yyrule)1901 yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
1902 int yyrule)
1903 {
1904 int yylno = yyrline[yyrule];
1905 int yynrhs = yyr2[yyrule];
1906 int yyi;
1907 YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
1908 yyrule - 1, yylno);
1909 /* The symbols being reduced. */
1910 for (yyi = 0; yyi < yynrhs; yyi++)
1911 {
1912 YYFPRINTF (stderr, " $%d = ", yyi + 1);
1913 yy_symbol_print (stderr,
1914 YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
1915 &yyvsp[(yyi + 1) - (yynrhs)]);
1916 YYFPRINTF (stderr, "\n");
1917 }
1918 }
1919
1920 # define YY_REDUCE_PRINT(Rule) \
1921 do { \
1922 if (yydebug) \
1923 yy_reduce_print (yyssp, yyvsp, Rule); \
1924 } while (0)
1925
1926 /* Nonzero means print parse trace. It is left uninitialized so that
1927 multiple parsers can coexist. */
1928 int yydebug;
1929 #else /* !YYDEBUG */
1930 # define YYDPRINTF(Args) ((void) 0)
1931 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
1932 # define YY_STACK_PRINT(Bottom, Top)
1933 # define YY_REDUCE_PRINT(Rule)
1934 #endif /* !YYDEBUG */
1935
1936
1937 /* YYINITDEPTH -- initial size of the parser's stacks. */
1938 #ifndef YYINITDEPTH
1939 # define YYINITDEPTH 200
1940 #endif
1941
1942 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1943 if the built-in stack extension method is used).
1944
1945 Do not make this value too large; the results are undefined if
1946 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1947 evaluated with infinite-precision integer arithmetic. */
1948
1949 #ifndef YYMAXDEPTH
1950 # define YYMAXDEPTH 10000
1951 #endif
1952
1953
1954
1955
1956
1957
1958 /*-----------------------------------------------.
1959 | Release the memory associated to this symbol. |
1960 `-----------------------------------------------*/
1961
1962 static void
yydestruct(const char * yymsg,yysymbol_kind_t yykind,YYSTYPE * yyvaluep)1963 yydestruct (const char *yymsg,
1964 yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
1965 {
1966 YYUSE (yyvaluep);
1967 if (!yymsg)
1968 yymsg = "Deleting";
1969 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
1970
1971 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1972 YYUSE (yykind);
1973 YY_IGNORE_MAYBE_UNINITIALIZED_END
1974 }
1975
1976
1977 /* Lookahead token kind. */
1978 int yychar;
1979
1980 /* The semantic value of the lookahead symbol. */
1981 YYSTYPE yylval;
1982 /* Number of syntax errors so far. */
1983 int yynerrs;
1984
1985
1986
1987
1988 /*----------.
1989 | yyparse. |
1990 `----------*/
1991
1992 int
yyparse(void)1993 yyparse (void)
1994 {
1995 yy_state_fast_t yystate = 0;
1996 /* Number of tokens to shift before error messages enabled. */
1997 int yyerrstatus = 0;
1998
1999 /* Refer to the stacks through separate pointers, to allow yyoverflow
2000 to reallocate them elsewhere. */
2001
2002 /* Their size. */
2003 YYPTRDIFF_T yystacksize = YYINITDEPTH;
2004
2005 /* The state stack: array, bottom, top. */
2006 yy_state_t yyssa[YYINITDEPTH];
2007 yy_state_t *yyss = yyssa;
2008 yy_state_t *yyssp = yyss;
2009
2010 /* The semantic value stack: array, bottom, top. */
2011 YYSTYPE yyvsa[YYINITDEPTH];
2012 YYSTYPE *yyvs = yyvsa;
2013 YYSTYPE *yyvsp = yyvs;
2014
2015 int yyn;
2016 /* The return value of yyparse. */
2017 int yyresult;
2018 /* Lookahead symbol kind. */
2019 yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
2020 /* The variables used to return semantic value and location from the
2021 action routines. */
2022 YYSTYPE yyval;
2023
2024
2025
2026 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
2027
2028 /* The number of symbols on the RHS of the reduced rule.
2029 Keep to zero when no symbol should be popped. */
2030 int yylen = 0;
2031
2032 YYDPRINTF ((stderr, "Starting parse\n"));
2033
2034 yychar = YYEMPTY; /* Cause a token to be read. */
2035 goto yysetstate;
2036
2037
2038 /*------------------------------------------------------------.
2039 | yynewstate -- push a new state, which is found in yystate. |
2040 `------------------------------------------------------------*/
2041 yynewstate:
2042 /* In all cases, when you get here, the value and location stacks
2043 have just been pushed. So pushing a state here evens the stacks. */
2044 yyssp++;
2045
2046
2047 /*--------------------------------------------------------------------.
2048 | yysetstate -- set current state (the top of the stack) to yystate. |
2049 `--------------------------------------------------------------------*/
2050 yysetstate:
2051 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
2052 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
2053 YY_IGNORE_USELESS_CAST_BEGIN
2054 *yyssp = YY_CAST (yy_state_t, yystate);
2055 YY_IGNORE_USELESS_CAST_END
2056 YY_STACK_PRINT (yyss, yyssp);
2057
2058 if (yyss + yystacksize - 1 <= yyssp)
2059 #if !defined yyoverflow && !defined YYSTACK_RELOCATE
2060 goto yyexhaustedlab;
2061 #else
2062 {
2063 /* Get the current used size of the three stacks, in elements. */
2064 YYPTRDIFF_T yysize = yyssp - yyss + 1;
2065
2066 # if defined yyoverflow
2067 {
2068 /* Give user a chance to reallocate the stack. Use copies of
2069 these so that the &'s don't force the real ones into
2070 memory. */
2071 yy_state_t *yyss1 = yyss;
2072 YYSTYPE *yyvs1 = yyvs;
2073
2074 /* Each stack pointer address is followed by the size of the
2075 data in use in that stack, in bytes. This used to be a
2076 conditional around just the two extra args, but that might
2077 be undefined if yyoverflow is a macro. */
2078 yyoverflow (YY_("memory exhausted"),
2079 &yyss1, yysize * YYSIZEOF (*yyssp),
2080 &yyvs1, yysize * YYSIZEOF (*yyvsp),
2081 &yystacksize);
2082 yyss = yyss1;
2083 yyvs = yyvs1;
2084 }
2085 # else /* defined YYSTACK_RELOCATE */
2086 /* Extend the stack our own way. */
2087 if (YYMAXDEPTH <= yystacksize)
2088 goto yyexhaustedlab;
2089 yystacksize *= 2;
2090 if (YYMAXDEPTH < yystacksize)
2091 yystacksize = YYMAXDEPTH;
2092
2093 {
2094 yy_state_t *yyss1 = yyss;
2095 union yyalloc *yyptr =
2096 YY_CAST (union yyalloc *,
2097 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
2098 if (! yyptr)
2099 goto yyexhaustedlab;
2100 YYSTACK_RELOCATE (yyss_alloc, yyss);
2101 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
2102 # undef YYSTACK_RELOCATE
2103 if (yyss1 != yyssa)
2104 YYSTACK_FREE (yyss1);
2105 }
2106 # endif
2107
2108 yyssp = yyss + yysize - 1;
2109 yyvsp = yyvs + yysize - 1;
2110
2111 YY_IGNORE_USELESS_CAST_BEGIN
2112 YYDPRINTF ((stderr, "Stack size increased to %ld\n",
2113 YY_CAST (long, yystacksize)));
2114 YY_IGNORE_USELESS_CAST_END
2115
2116 if (yyss + yystacksize - 1 <= yyssp)
2117 YYABORT;
2118 }
2119 #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
2120
2121 if (yystate == YYFINAL)
2122 YYACCEPT;
2123
2124 goto yybackup;
2125
2126
2127 /*-----------.
2128 | yybackup. |
2129 `-----------*/
2130 yybackup:
2131 /* Do appropriate processing given the current state. Read a
2132 lookahead token if we need one and don't already have one. */
2133
2134 /* First try to decide what to do without reference to lookahead token. */
2135 yyn = yypact[yystate];
2136 if (yypact_value_is_default (yyn))
2137 goto yydefault;
2138
2139 /* Not known => get a lookahead token if don't already have one. */
2140
2141 /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */
2142 if (yychar == YYEMPTY)
2143 {
2144 YYDPRINTF ((stderr, "Reading a token\n"));
2145 yychar = yylex ();
2146 }
2147
2148 if (yychar <= YYEOF)
2149 {
2150 yychar = YYEOF;
2151 yytoken = YYSYMBOL_YYEOF;
2152 YYDPRINTF ((stderr, "Now at end of input.\n"));
2153 }
2154 else if (yychar == YYerror)
2155 {
2156 /* The scanner already issued an error message, process directly
2157 to error recovery. But do not keep the error token as
2158 lookahead, it is too special and may lead us to an endless
2159 loop in error recovery. */
2160 yychar = YYUNDEF;
2161 yytoken = YYSYMBOL_YYerror;
2162 goto yyerrlab1;
2163 }
2164 else
2165 {
2166 yytoken = YYTRANSLATE (yychar);
2167 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2168 }
2169
2170 /* If the proper action on seeing token YYTOKEN is to reduce or to
2171 detect an error, take that action. */
2172 yyn += yytoken;
2173 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
2174 goto yydefault;
2175 yyn = yytable[yyn];
2176 if (yyn <= 0)
2177 {
2178 if (yytable_value_is_error (yyn))
2179 goto yyerrlab;
2180 yyn = -yyn;
2181 goto yyreduce;
2182 }
2183
2184 /* Count tokens shifted since error; after three, turn off error
2185 status. */
2186 if (yyerrstatus)
2187 yyerrstatus--;
2188
2189 /* Shift the lookahead token. */
2190 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
2191 yystate = yyn;
2192 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2193 *++yyvsp = yylval;
2194 YY_IGNORE_MAYBE_UNINITIALIZED_END
2195
2196 /* Discard the shifted token. */
2197 yychar = YYEMPTY;
2198 goto yynewstate;
2199
2200
2201 /*-----------------------------------------------------------.
2202 | yydefault -- do the default action for the current state. |
2203 `-----------------------------------------------------------*/
2204 yydefault:
2205 yyn = yydefact[yystate];
2206 if (yyn == 0)
2207 goto yyerrlab;
2208 goto yyreduce;
2209
2210
2211 /*-----------------------------.
2212 | yyreduce -- do a reduction. |
2213 `-----------------------------*/
2214 yyreduce:
2215 /* yyn is the number of a rule to reduce with. */
2216 yylen = yyr2[yyn];
2217
2218 /* If YYLEN is nonzero, implement the default value of the action:
2219 '$$ = $1'.
2220
2221 Otherwise, the following line sets YYVAL to garbage.
2222 This behavior is undocumented and Bison
2223 users should not rely upon it. Assigning to YYVAL
2224 unconditionally makes the parser a bit smaller, and it avoids a
2225 GCC warning that YYVAL may be used uninitialized. */
2226 yyval = yyvsp[1-yylen];
2227
2228
2229 YY_REDUCE_PRINT (yyn);
2230 switch (yyn)
2231 {
2232 case 14: /* character_or_special: character */
2233 #line 701 "quote_fmt_parse.y"
2234 {
2235 INSERT_CHARACTER((yyvsp[0].chr));
2236 }
2237 #line 2238 "quote_fmt_parse.c"
2238 break;
2239
2240 case 16: /* string: CHARACTER */
2241 #line 711 "quote_fmt_parse.y"
2242 {
2243 (yyval.str)[0] = (yyvsp[0].chr);
2244 (yyval.str)[1] = '\0';
2245 }
2246 #line 2247 "quote_fmt_parse.c"
2247 break;
2248
2249 case 17: /* string: string CHARACTER */
2250 #line 716 "quote_fmt_parse.y"
2251 {
2252 size_t len;
2253
2254 strncpy((yyval.str), (yyvsp[-1].str), sizeof((yyval.str)));
2255 (yyval.str)[sizeof((yyval.str)) - 1] = '\0';
2256 len = strlen((yyval.str));
2257 if (len + 1 < sizeof((yyval.str))) {
2258 (yyval.str)[len + 1] = '\0';
2259 (yyval.str)[len] = (yyvsp[0].chr);
2260 }
2261 }
2262 #line 2263 "quote_fmt_parse.c"
2263 break;
2264
2265 case 18: /* special: SHOW_NEWSGROUPS */
2266 #line 730 "quote_fmt_parse.y"
2267 {
2268 if (msginfo->newsgroups)
2269 INSERT(msginfo->newsgroups);
2270 }
2271 #line 2272 "quote_fmt_parse.c"
2272 break;
2273
2274 case 19: /* special: SHOW_DATE_EXPR OPARENT string CPARENT */
2275 #line 735 "quote_fmt_parse.y"
2276 {
2277 quote_fmt_show_date(msginfo, (yyvsp[-1].str));
2278 }
2279 #line 2280 "quote_fmt_parse.c"
2280 break;
2281
2282 case 20: /* special: SHOW_DATE */
2283 #line 739 "quote_fmt_parse.y"
2284 {
2285 if (msginfo->date)
2286 INSERT(msginfo->date);
2287 }
2288 #line 2289 "quote_fmt_parse.c"
2289 break;
2290
2291 case 21: /* special: SHOW_FROM */
2292 #line 744 "quote_fmt_parse.y"
2293 {
2294 if (msginfo->from)
2295 INSERT(msginfo->from);
2296 }
2297 #line 2298 "quote_fmt_parse.c"
2298 break;
2299
2300 case 22: /* special: SHOW_MAIL_ADDRESS */
2301 #line 749 "quote_fmt_parse.y"
2302 {
2303 if (msginfo->from) {
2304 gchar *stripped_address = g_strdup(msginfo->from);
2305 extract_address(stripped_address);
2306 INSERT(stripped_address);
2307 g_free(stripped_address);
2308 }
2309 }
2310 #line 2311 "quote_fmt_parse.c"
2311 break;
2312
2313 case 23: /* special: SHOW_FULLNAME */
2314 #line 758 "quote_fmt_parse.y"
2315 {
2316 if (msginfo->fromname)
2317 INSERT(msginfo->fromname);
2318 }
2319 #line 2320 "quote_fmt_parse.c"
2320 break;
2321
2322 case 24: /* special: SHOW_FIRST_NAME */
2323 #line 763 "quote_fmt_parse.y"
2324 {
2325 quote_fmt_show_first_name(msginfo);
2326 }
2327 #line 2328 "quote_fmt_parse.c"
2328 break;
2329
2330 case 25: /* special: SHOW_LAST_NAME */
2331 #line 767 "quote_fmt_parse.y"
2332 {
2333 quote_fmt_show_last_name(msginfo);
2334 }
2335 #line 2336 "quote_fmt_parse.c"
2336 break;
2337
2338 case 26: /* special: SHOW_SENDER_INITIAL */
2339 #line 771 "quote_fmt_parse.y"
2340 {
2341 quote_fmt_show_sender_initial(msginfo);
2342 }
2343 #line 2344 "quote_fmt_parse.c"
2344 break;
2345
2346 case 27: /* special: SHOW_SUBJECT */
2347 #line 775 "quote_fmt_parse.y"
2348 {
2349 if (msginfo->subject)
2350 INSERT(msginfo->subject);
2351 }
2352 #line 2353 "quote_fmt_parse.c"
2353 break;
2354
2355 case 28: /* special: SHOW_TO */
2356 #line 780 "quote_fmt_parse.y"
2357 {
2358 if (msginfo->to)
2359 INSERT(msginfo->to);
2360 }
2361 #line 2362 "quote_fmt_parse.c"
2362 break;
2363
2364 case 29: /* special: SHOW_MESSAGEID */
2365 #line 785 "quote_fmt_parse.y"
2366 {
2367 if (msginfo->msgid)
2368 INSERT(msginfo->msgid);
2369 }
2370 #line 2371 "quote_fmt_parse.c"
2371 break;
2372
2373 case 30: /* special: SHOW_PERCENT */
2374 #line 790 "quote_fmt_parse.y"
2375 {
2376 INSERT("%");
2377 }
2378 #line 2379 "quote_fmt_parse.c"
2379 break;
2380
2381 case 31: /* special: SHOW_CC */
2382 #line 794 "quote_fmt_parse.y"
2383 {
2384 if (msginfo->cc)
2385 INSERT(msginfo->cc);
2386 }
2387 #line 2388 "quote_fmt_parse.c"
2388 break;
2389
2390 case 32: /* special: SHOW_REFERENCES */
2391 #line 799 "quote_fmt_parse.y"
2392 {
2393 GSList *item;
2394
2395 INSERT(msginfo->inreplyto);
2396 for (item = msginfo->references; item != NULL; item = g_slist_next(item))
2397 if (item->data)
2398 INSERT(item->data);
2399 }
2400 #line 2401 "quote_fmt_parse.c"
2401 break;
2402
2403 case 33: /* special: SHOW_MESSAGE */
2404 #line 808 "quote_fmt_parse.y"
2405 {
2406 quote_fmt_show_msg(msginfo, body, FALSE, TRUE, quote_str);
2407 }
2408 #line 2409 "quote_fmt_parse.c"
2409 break;
2410
2411 case 34: /* special: SHOW_QUOTED_MESSAGE */
2412 #line 812 "quote_fmt_parse.y"
2413 {
2414 quote_fmt_show_msg(msginfo, body, TRUE, TRUE, quote_str);
2415 }
2416 #line 2417 "quote_fmt_parse.c"
2417 break;
2418
2419 case 35: /* special: SHOW_MESSAGE_NO_SIGNATURE */
2420 #line 816 "quote_fmt_parse.y"
2421 {
2422 quote_fmt_show_msg(msginfo, body, FALSE, FALSE, quote_str);
2423 }
2424 #line 2425 "quote_fmt_parse.c"
2425 break;
2426
2427 case 36: /* special: SHOW_QUOTED_MESSAGE_NO_SIGNATURE */
2428 #line 820 "quote_fmt_parse.y"
2429 {
2430 quote_fmt_show_msg(msginfo, body, TRUE, FALSE, quote_str);
2431 }
2432 #line 2433 "quote_fmt_parse.c"
2433 break;
2434
2435 case 37: /* special: SHOW_ACCOUNT_FULL_NAME */
2436 #line 824 "quote_fmt_parse.y"
2437 {
2438 if (account && account->name)
2439 INSERT(account->name);
2440 }
2441 #line 2442 "quote_fmt_parse.c"
2442 break;
2443
2444 case 38: /* special: SHOW_ACCOUNT_MAIL_ADDRESS */
2445 #line 829 "quote_fmt_parse.y"
2446 {
2447 if (account && account->address)
2448 INSERT(account->address);
2449 }
2450 #line 2451 "quote_fmt_parse.c"
2451 break;
2452
2453 case 39: /* special: SHOW_ACCOUNT_NAME */
2454 #line 834 "quote_fmt_parse.y"
2455 {
2456 if (account && account->account_name)
2457 INSERT(account->account_name);
2458 }
2459 #line 2460 "quote_fmt_parse.c"
2460 break;
2461
2462 case 40: /* special: SHOW_ACCOUNT_ORGANIZATION */
2463 #line 839 "quote_fmt_parse.y"
2464 {
2465 if (account && account->organization)
2466 INSERT(account->organization);
2467 }
2468 #line 2469 "quote_fmt_parse.c"
2469 break;
2470
2471 case 41: /* special: SHOW_ACCOUNT_SIG */
2472 #line 844 "quote_fmt_parse.y"
2473 {
2474 gchar *str = account_get_signature_str(account);
2475 INSERT(str);
2476 g_free(str);
2477 }
2478 #line 2479 "quote_fmt_parse.c"
2479 break;
2480
2481 case 42: /* special: SHOW_ACCOUNT_SIGPATH */
2482 #line 850 "quote_fmt_parse.y"
2483 {
2484 if (account && account->sig_path)
2485 INSERT(account->sig_path);
2486 }
2487 #line 2488 "quote_fmt_parse.c"
2488 break;
2489
2490 case 43: /* special: SHOW_ACCOUNT_DICT */
2491 #line 855 "quote_fmt_parse.y"
2492 {
2493 #ifdef USE_ENCHANT
2494 if (account && account->enable_default_dictionary) {
2495 gchar *dictname = g_path_get_basename(account->default_dictionary);
2496 INSERT(dictname);
2497 g_free(dictname);
2498 }
2499 #endif
2500 }
2501 #line 2502 "quote_fmt_parse.c"
2502 break;
2503
2504 case 44: /* special: SHOW_DICT */
2505 #line 865 "quote_fmt_parse.y"
2506 {
2507 #ifdef USE_ENCHANT
2508 INSERT(default_dictionary);
2509 #endif
2510 }
2511 #line 2512 "quote_fmt_parse.c"
2512 break;
2513
2514 case 45: /* special: SHOW_TAGS */
2515 #line 871 "quote_fmt_parse.y"
2516 {
2517 gchar *tags = procmsg_msginfo_get_tags_str(msginfo);
2518 if (tags) {
2519 INSERT(tags);
2520 }
2521 g_free(tags);
2522 }
2523 #line 2524 "quote_fmt_parse.c"
2524 break;
2525
2526 case 46: /* special: SHOW_BACKSLASH */
2527 #line 879 "quote_fmt_parse.y"
2528 {
2529 INSERT("\\");
2530 }
2531 #line 2532 "quote_fmt_parse.c"
2532 break;
2533
2534 case 47: /* special: SHOW_TAB */
2535 #line 883 "quote_fmt_parse.y"
2536 {
2537 INSERT("\t");
2538 }
2539 #line 2540 "quote_fmt_parse.c"
2540 break;
2541
2542 case 48: /* special: SHOW_EOL */
2543 #line 887 "quote_fmt_parse.y"
2544 {
2545 INSERT("\n");
2546 }
2547 #line 2548 "quote_fmt_parse.c"
2548 break;
2549
2550 case 49: /* special: SHOW_QUESTION_MARK */
2551 #line 891 "quote_fmt_parse.y"
2552 {
2553 INSERT("?");
2554 }
2555 #line 2556 "quote_fmt_parse.c"
2556 break;
2557
2558 case 50: /* special: SHOW_EXCLAMATION_MARK */
2559 #line 895 "quote_fmt_parse.y"
2560 {
2561 INSERT("!");
2562 }
2563 #line 2564 "quote_fmt_parse.c"
2564 break;
2565
2566 case 51: /* special: SHOW_PIPE */
2567 #line 899 "quote_fmt_parse.y"
2568 {
2569 INSERT("|");
2570 }
2571 #line 2572 "quote_fmt_parse.c"
2572 break;
2573
2574 case 52: /* special: SHOW_OPARENT */
2575 #line 903 "quote_fmt_parse.y"
2576 {
2577 INSERT("{");
2578 }
2579 #line 2580 "quote_fmt_parse.c"
2580 break;
2581
2582 case 53: /* special: SHOW_CPARENT */
2583 #line 907 "quote_fmt_parse.y"
2584 {
2585 INSERT("}");
2586 }
2587 #line 2588 "quote_fmt_parse.c"
2588 break;
2589
2590 case 54: /* special: SET_CURSOR_POS */
2591 #line 911 "quote_fmt_parse.y"
2592 {
2593 if (current->buffer)
2594 cursor_pos = g_utf8_strlen(current->buffer, -1);
2595 else
2596 cursor_pos = 0;
2597 }
2598 #line 2599 "quote_fmt_parse.c"
2599 break;
2600
2601 case 55: /* special: SHOW_ADDRESSBOOK_COMPLETION_FOR_CC */
2602 #line 918 "quote_fmt_parse.y"
2603 {
2604 gchar *tmp = quote_fmt_complete_address(msginfo->cc);
2605 if (tmp) {
2606 INSERT(tmp);
2607 g_free(tmp);
2608 }
2609 }
2610 #line 2611 "quote_fmt_parse.c"
2611 break;
2612
2613 case 56: /* special: SHOW_ADDRESSBOOK_COMPLETION_FOR_FROM */
2614 #line 926 "quote_fmt_parse.y"
2615 {
2616 gchar *tmp = quote_fmt_complete_address(msginfo->from);
2617 if (tmp) {
2618 INSERT(tmp);
2619 g_free(tmp);
2620 }
2621 }
2622 #line 2623 "quote_fmt_parse.c"
2623 break;
2624
2625 case 57: /* special: SHOW_ADDRESSBOOK_COMPLETION_FOR_TO */
2626 #line 934 "quote_fmt_parse.y"
2627 {
2628 gchar *tmp = quote_fmt_complete_address(msginfo->to);
2629 if (tmp) {
2630 INSERT(tmp);
2631 g_free(tmp);
2632 }
2633 }
2634 #line 2635 "quote_fmt_parse.c"
2635 break;
2636
2637 case 58: /* $@1: %empty */
2638 #line 944 "quote_fmt_parse.y"
2639 {
2640 add_visibility(msginfo->date != NULL);
2641 }
2642 #line 2643 "quote_fmt_parse.c"
2643 break;
2644
2645 case 59: /* query: QUERY_DATE $@1 OPARENT quote_fmt CPARENT */
2646 #line 948 "quote_fmt_parse.y"
2647 {
2648 remove_visibility();
2649 }
2650 #line 2651 "quote_fmt_parse.c"
2651 break;
2652
2653 case 60: /* $@2: %empty */
2654 #line 952 "quote_fmt_parse.y"
2655 {
2656 add_visibility(msginfo->from != NULL);
2657 }
2658 #line 2659 "quote_fmt_parse.c"
2659 break;
2660
2661 case 61: /* query: QUERY_FROM $@2 OPARENT quote_fmt CPARENT */
2662 #line 956 "quote_fmt_parse.y"
2663 {
2664 remove_visibility();
2665 }
2666 #line 2667 "quote_fmt_parse.c"
2667 break;
2668
2669 case 62: /* $@3: %empty */
2670 #line 960 "quote_fmt_parse.y"
2671 {
2672 add_visibility(msginfo->fromname != NULL);
2673 }
2674 #line 2675 "quote_fmt_parse.c"
2675 break;
2676
2677 case 63: /* query: QUERY_FULLNAME $@3 OPARENT quote_fmt CPARENT */
2678 #line 964 "quote_fmt_parse.y"
2679 {
2680 remove_visibility();
2681 }
2682 #line 2683 "quote_fmt_parse.c"
2683 break;
2684
2685 case 64: /* $@4: %empty */
2686 #line 968 "quote_fmt_parse.y"
2687 {
2688 add_visibility(msginfo->subject != NULL);
2689 }
2690 #line 2691 "quote_fmt_parse.c"
2691 break;
2692
2693 case 65: /* query: QUERY_SUBJECT $@4 OPARENT quote_fmt CPARENT */
2694 #line 972 "quote_fmt_parse.y"
2695 {
2696 remove_visibility();
2697 }
2698 #line 2699 "quote_fmt_parse.c"
2699 break;
2700
2701 case 66: /* $@5: %empty */
2702 #line 976 "quote_fmt_parse.y"
2703 {
2704 add_visibility(msginfo->to != NULL);
2705 }
2706 #line 2707 "quote_fmt_parse.c"
2707 break;
2708
2709 case 67: /* query: QUERY_TO $@5 OPARENT quote_fmt CPARENT */
2710 #line 980 "quote_fmt_parse.y"
2711 {
2712 remove_visibility();
2713 }
2714 #line 2715 "quote_fmt_parse.c"
2715 break;
2716
2717 case 68: /* $@6: %empty */
2718 #line 984 "quote_fmt_parse.y"
2719 {
2720 add_visibility(msginfo->newsgroups != NULL);
2721 }
2722 #line 2723 "quote_fmt_parse.c"
2723 break;
2724
2725 case 69: /* query: QUERY_NEWSGROUPS $@6 OPARENT quote_fmt CPARENT */
2726 #line 988 "quote_fmt_parse.y"
2727 {
2728 remove_visibility();
2729 }
2730 #line 2731 "quote_fmt_parse.c"
2731 break;
2732
2733 case 70: /* $@7: %empty */
2734 #line 992 "quote_fmt_parse.y"
2735 {
2736 add_visibility(msginfo->msgid != NULL);
2737 }
2738 #line 2739 "quote_fmt_parse.c"
2739 break;
2740
2741 case 71: /* query: QUERY_MESSAGEID $@7 OPARENT quote_fmt CPARENT */
2742 #line 996 "quote_fmt_parse.y"
2743 {
2744 remove_visibility();
2745 }
2746 #line 2747 "quote_fmt_parse.c"
2747 break;
2748
2749 case 72: /* $@8: %empty */
2750 #line 1000 "quote_fmt_parse.y"
2751 {
2752 add_visibility(msginfo->cc != NULL);
2753 }
2754 #line 2755 "quote_fmt_parse.c"
2755 break;
2756
2757 case 73: /* query: QUERY_CC $@8 OPARENT quote_fmt CPARENT */
2758 #line 1004 "quote_fmt_parse.y"
2759 {
2760 remove_visibility();
2761 }
2762 #line 2763 "quote_fmt_parse.c"
2763 break;
2764
2765 case 74: /* $@9: %empty */
2766 #line 1008 "quote_fmt_parse.y"
2767 {
2768 gboolean found;
2769 GSList *item;
2770
2771 found = (msginfo->inreplyto != NULL);
2772 for (item = msginfo->references; found == FALSE && item != NULL; item = g_slist_next(item))
2773 if (item->data)
2774 found = TRUE;
2775 add_visibility(found == TRUE);
2776 }
2777 #line 2778 "quote_fmt_parse.c"
2778 break;
2779
2780 case 75: /* query: QUERY_REFERENCES $@9 OPARENT quote_fmt CPARENT */
2781 #line 1019 "quote_fmt_parse.y"
2782 {
2783 remove_visibility();
2784 }
2785 #line 2786 "quote_fmt_parse.c"
2786 break;
2787
2788 case 76: /* $@10: %empty */
2789 #line 1023 "quote_fmt_parse.y"
2790 {
2791 add_visibility(account != NULL && account->name != NULL);
2792 }
2793 #line 2794 "quote_fmt_parse.c"
2794 break;
2795
2796 case 77: /* query: QUERY_ACCOUNT_FULL_NAME $@10 OPARENT quote_fmt CPARENT */
2797 #line 1027 "quote_fmt_parse.y"
2798 {
2799 remove_visibility();
2800 }
2801 #line 2802 "quote_fmt_parse.c"
2802 break;
2803
2804 case 78: /* $@11: %empty */
2805 #line 1031 "quote_fmt_parse.y"
2806 {
2807 add_visibility(account != NULL && account->organization != NULL);
2808 }
2809 #line 2810 "quote_fmt_parse.c"
2810 break;
2811
2812 case 79: /* query: QUERY_ACCOUNT_ORGANIZATION $@11 OPARENT quote_fmt CPARENT */
2813 #line 1035 "quote_fmt_parse.y"
2814 {
2815 remove_visibility();
2816 }
2817 #line 2818 "quote_fmt_parse.c"
2818 break;
2819
2820 case 80: /* $@12: %empty */
2821 #line 1039 "quote_fmt_parse.y"
2822 {
2823 gchar *str = account_get_signature_str(account);
2824 add_visibility(str != NULL && * str != '\0');
2825 g_free(str);
2826 }
2827 #line 2828 "quote_fmt_parse.c"
2828 break;
2829
2830 case 81: /* query: QUERY_ACCOUNT_SIG $@12 OPARENT quote_fmt CPARENT */
2831 #line 1045 "quote_fmt_parse.y"
2832 {
2833 remove_visibility();
2834 }
2835 #line 2836 "quote_fmt_parse.c"
2836 break;
2837
2838 case 82: /* $@13: %empty */
2839 #line 1049 "quote_fmt_parse.y"
2840 {
2841 add_visibility(account != NULL && account->sig_path != NULL
2842 && *account->sig_path != '\0');
2843 }
2844 #line 2845 "quote_fmt_parse.c"
2845 break;
2846
2847 case 83: /* query: QUERY_ACCOUNT_SIGPATH $@13 OPARENT quote_fmt CPARENT */
2848 #line 1054 "quote_fmt_parse.y"
2849 {
2850 remove_visibility();
2851 }
2852 #line 2853 "quote_fmt_parse.c"
2853 break;
2854
2855 case 84: /* $@14: %empty */
2856 #line 1058 "quote_fmt_parse.y"
2857 {
2858 #ifdef USE_ENCHANT
2859 add_visibility(account != NULL && account->enable_default_dictionary == TRUE &&
2860 account->default_dictionary != NULL && *account->default_dictionary != '\0');
2861 #else
2862 add_visibility(FALSE);
2863 #endif
2864 }
2865 #line 2866 "quote_fmt_parse.c"
2866 break;
2867
2868 case 85: /* query: QUERY_ACCOUNT_DICT $@14 OPARENT quote_fmt CPARENT */
2869 #line 1067 "quote_fmt_parse.y"
2870 {
2871 remove_visibility();
2872 }
2873 #line 2874 "quote_fmt_parse.c"
2874 break;
2875
2876 case 86: /* $@15: %empty */
2877 #line 1071 "quote_fmt_parse.y"
2878 {
2879 #ifdef USE_ENCHANT
2880 add_visibility(*default_dictionary != '\0');
2881 #else
2882 add_visibility(FALSE);
2883 #endif
2884 }
2885 #line 2886 "quote_fmt_parse.c"
2886 break;
2887
2888 case 87: /* query: QUERY_DICT $@15 OPARENT quote_fmt CPARENT */
2889 #line 1079 "quote_fmt_parse.y"
2890 {
2891 remove_visibility();
2892 }
2893 #line 2894 "quote_fmt_parse.c"
2894 break;
2895
2896 case 88: /* $@16: %empty */
2897 #line 1083 "quote_fmt_parse.y"
2898 {
2899 gchar *tmp = quote_fmt_complete_address(msginfo->cc);
2900 add_visibility(tmp != NULL && *tmp != '\0');
2901 g_free(tmp);
2902 }
2903 #line 2904 "quote_fmt_parse.c"
2904 break;
2905
2906 case 89: /* query: QUERY_CC_FOUND_IN_ADDRESSBOOK $@16 OPARENT quote_fmt CPARENT */
2907 #line 1089 "quote_fmt_parse.y"
2908 {
2909 remove_visibility();
2910 }
2911 #line 2912 "quote_fmt_parse.c"
2912 break;
2913
2914 case 90: /* $@17: %empty */
2915 #line 1093 "quote_fmt_parse.y"
2916 {
2917 gchar *tmp = quote_fmt_complete_address(msginfo->from);
2918 add_visibility(tmp != NULL && *tmp != '\0');
2919 g_free(tmp);
2920 }
2921 #line 2922 "quote_fmt_parse.c"
2922 break;
2923
2924 case 91: /* query: QUERY_FROM_FOUND_IN_ADDRESSBOOK $@17 OPARENT quote_fmt CPARENT */
2925 #line 1099 "quote_fmt_parse.y"
2926 {
2927 remove_visibility();
2928 }
2929 #line 2930 "quote_fmt_parse.c"
2930 break;
2931
2932 case 92: /* $@18: %empty */
2933 #line 1103 "quote_fmt_parse.y"
2934 {
2935 gchar *tmp = quote_fmt_complete_address(msginfo->to);
2936 add_visibility(tmp != NULL && *tmp != '\0');
2937 g_free(tmp);
2938 }
2939 #line 2940 "quote_fmt_parse.c"
2940 break;
2941
2942 case 93: /* query: QUERY_TO_FOUND_IN_ADDRESSBOOK $@18 OPARENT quote_fmt CPARENT */
2943 #line 1109 "quote_fmt_parse.y"
2944 {
2945 remove_visibility();
2946 }
2947 #line 2948 "quote_fmt_parse.c"
2948 break;
2949
2950 case 94: /* $@19: %empty */
2951 #line 1115 "quote_fmt_parse.y"
2952 {
2953 add_visibility(msginfo->date == NULL);
2954 }
2955 #line 2956 "quote_fmt_parse.c"
2956 break;
2957
2958 case 95: /* query_not: QUERY_NOT_DATE $@19 OPARENT quote_fmt CPARENT */
2959 #line 1119 "quote_fmt_parse.y"
2960 {
2961 remove_visibility();
2962 }
2963 #line 2964 "quote_fmt_parse.c"
2964 break;
2965
2966 case 96: /* $@20: %empty */
2967 #line 1123 "quote_fmt_parse.y"
2968 {
2969 add_visibility(msginfo->from == NULL);
2970 }
2971 #line 2972 "quote_fmt_parse.c"
2972 break;
2973
2974 case 97: /* query_not: QUERY_NOT_FROM $@20 OPARENT quote_fmt CPARENT */
2975 #line 1127 "quote_fmt_parse.y"
2976 {
2977 remove_visibility();
2978 }
2979 #line 2980 "quote_fmt_parse.c"
2980 break;
2981
2982 case 98: /* $@21: %empty */
2983 #line 1131 "quote_fmt_parse.y"
2984 {
2985 add_visibility(msginfo->fromname == NULL);
2986 }
2987 #line 2988 "quote_fmt_parse.c"
2988 break;
2989
2990 case 99: /* query_not: QUERY_NOT_FULLNAME $@21 OPARENT quote_fmt CPARENT */
2991 #line 1135 "quote_fmt_parse.y"
2992 {
2993 remove_visibility();
2994 }
2995 #line 2996 "quote_fmt_parse.c"
2996 break;
2997
2998 case 100: /* $@22: %empty */
2999 #line 1139 "quote_fmt_parse.y"
3000 {
3001 add_visibility(msginfo->subject == NULL);
3002 }
3003 #line 3004 "quote_fmt_parse.c"
3004 break;
3005
3006 case 101: /* query_not: QUERY_NOT_SUBJECT $@22 OPARENT quote_fmt CPARENT */
3007 #line 1143 "quote_fmt_parse.y"
3008 {
3009 remove_visibility();
3010 }
3011 #line 3012 "quote_fmt_parse.c"
3012 break;
3013
3014 case 102: /* $@23: %empty */
3015 #line 1147 "quote_fmt_parse.y"
3016 {
3017 add_visibility(msginfo->to == NULL);
3018 }
3019 #line 3020 "quote_fmt_parse.c"
3020 break;
3021
3022 case 103: /* query_not: QUERY_NOT_TO $@23 OPARENT quote_fmt CPARENT */
3023 #line 1151 "quote_fmt_parse.y"
3024 {
3025 remove_visibility();
3026 }
3027 #line 3028 "quote_fmt_parse.c"
3028 break;
3029
3030 case 104: /* $@24: %empty */
3031 #line 1155 "quote_fmt_parse.y"
3032 {
3033 add_visibility(msginfo->newsgroups == NULL);
3034 }
3035 #line 3036 "quote_fmt_parse.c"
3036 break;
3037
3038 case 105: /* query_not: QUERY_NOT_NEWSGROUPS $@24 OPARENT quote_fmt CPARENT */
3039 #line 1159 "quote_fmt_parse.y"
3040 {
3041 remove_visibility();
3042 }
3043 #line 3044 "quote_fmt_parse.c"
3044 break;
3045
3046 case 106: /* $@25: %empty */
3047 #line 1163 "quote_fmt_parse.y"
3048 {
3049 add_visibility(msginfo->msgid == NULL);
3050 }
3051 #line 3052 "quote_fmt_parse.c"
3052 break;
3053
3054 case 107: /* query_not: QUERY_NOT_MESSAGEID $@25 OPARENT quote_fmt CPARENT */
3055 #line 1167 "quote_fmt_parse.y"
3056 {
3057 remove_visibility();
3058 }
3059 #line 3060 "quote_fmt_parse.c"
3060 break;
3061
3062 case 108: /* $@26: %empty */
3063 #line 1171 "quote_fmt_parse.y"
3064 {
3065 add_visibility(msginfo->cc == NULL);
3066 }
3067 #line 3068 "quote_fmt_parse.c"
3068 break;
3069
3070 case 109: /* query_not: QUERY_NOT_CC $@26 OPARENT quote_fmt CPARENT */
3071 #line 1175 "quote_fmt_parse.y"
3072 {
3073 remove_visibility();
3074 }
3075 #line 3076 "quote_fmt_parse.c"
3076 break;
3077
3078 case 110: /* $@27: %empty */
3079 #line 1179 "quote_fmt_parse.y"
3080 {
3081 gboolean found;
3082 GSList *item;
3083
3084 found = (msginfo->inreplyto != NULL);
3085 for (item = msginfo->references; found == FALSE && item != NULL; item = g_slist_next(item))
3086 if (item->data)
3087 found = TRUE;
3088 add_visibility(found == FALSE);
3089 }
3090 #line 3091 "quote_fmt_parse.c"
3091 break;
3092
3093 case 111: /* query_not: QUERY_NOT_REFERENCES $@27 OPARENT quote_fmt CPARENT */
3094 #line 1190 "quote_fmt_parse.y"
3095 {
3096 remove_visibility();
3097 }
3098 #line 3099 "quote_fmt_parse.c"
3099 break;
3100
3101 case 112: /* $@28: %empty */
3102 #line 1194 "quote_fmt_parse.y"
3103 {
3104 add_visibility(account == NULL || account->name == NULL);
3105 }
3106 #line 3107 "quote_fmt_parse.c"
3107 break;
3108
3109 case 113: /* query_not: QUERY_NOT_ACCOUNT_FULL_NAME $@28 OPARENT quote_fmt CPARENT */
3110 #line 1198 "quote_fmt_parse.y"
3111 {
3112 remove_visibility();
3113 }
3114 #line 3115 "quote_fmt_parse.c"
3115 break;
3116
3117 case 114: /* $@29: %empty */
3118 #line 1202 "quote_fmt_parse.y"
3119 {
3120 add_visibility(account == NULL || account->organization == NULL);
3121 }
3122 #line 3123 "quote_fmt_parse.c"
3123 break;
3124
3125 case 115: /* query_not: QUERY_NOT_ACCOUNT_ORGANIZATION $@29 OPARENT quote_fmt CPARENT */
3126 #line 1206 "quote_fmt_parse.y"
3127 {
3128 remove_visibility();
3129 }
3130 #line 3131 "quote_fmt_parse.c"
3131 break;
3132
3133 case 116: /* $@30: %empty */
3134 #line 1210 "quote_fmt_parse.y"
3135 {
3136 gchar *str = account_get_signature_str(account);
3137 add_visibility(str == NULL || *str == '\0');
3138 g_free(str);
3139 }
3140 #line 3141 "quote_fmt_parse.c"
3141 break;
3142
3143 case 117: /* query_not: QUERY_NOT_ACCOUNT_SIG $@30 OPARENT quote_fmt CPARENT */
3144 #line 1216 "quote_fmt_parse.y"
3145 {
3146 remove_visibility();
3147 }
3148 #line 3149 "quote_fmt_parse.c"
3149 break;
3150
3151 case 118: /* $@31: %empty */
3152 #line 1220 "quote_fmt_parse.y"
3153 {
3154 add_visibility(account == NULL || account->sig_path == NULL
3155 || *account->sig_path == '\0');
3156 }
3157 #line 3158 "quote_fmt_parse.c"
3158 break;
3159
3160 case 119: /* query_not: QUERY_NOT_ACCOUNT_SIGPATH $@31 OPARENT quote_fmt CPARENT */
3161 #line 1225 "quote_fmt_parse.y"
3162 {
3163 remove_visibility();
3164 }
3165 #line 3166 "quote_fmt_parse.c"
3166 break;
3167
3168 case 120: /* $@32: %empty */
3169 #line 1229 "quote_fmt_parse.y"
3170 {
3171 #ifdef USE_ENCHANT
3172 add_visibility(account == NULL || account->enable_default_dictionary == FALSE
3173 || *account->default_dictionary == '\0');
3174 #else
3175 add_visibility(FALSE);
3176 #endif
3177 }
3178 #line 3179 "quote_fmt_parse.c"
3179 break;
3180
3181 case 121: /* query_not: QUERY_NOT_ACCOUNT_DICT $@32 OPARENT quote_fmt CPARENT */
3182 #line 1238 "quote_fmt_parse.y"
3183 {
3184 remove_visibility();
3185 }
3186 #line 3187 "quote_fmt_parse.c"
3187 break;
3188
3189 case 122: /* $@33: %empty */
3190 #line 1242 "quote_fmt_parse.y"
3191 {
3192 #ifdef USE_ENCHANT
3193 add_visibility(*default_dictionary == '\0');
3194 #else
3195 add_visibility(FALSE);
3196 #endif
3197 }
3198 #line 3199 "quote_fmt_parse.c"
3199 break;
3200
3201 case 123: /* query_not: QUERY_NOT_DICT $@33 OPARENT quote_fmt CPARENT */
3202 #line 1250 "quote_fmt_parse.y"
3203 {
3204 remove_visibility();
3205 }
3206 #line 3207 "quote_fmt_parse.c"
3207 break;
3208
3209 case 124: /* $@34: %empty */
3210 #line 1254 "quote_fmt_parse.y"
3211 {
3212 gchar *tmp = quote_fmt_complete_address(msginfo->cc);
3213 add_visibility(tmp == NULL || *tmp == '\0');
3214 g_free(tmp);
3215 }
3216 #line 3217 "quote_fmt_parse.c"
3217 break;
3218
3219 case 125: /* query_not: QUERY_NOT_CC_FOUND_IN_ADDRESSBOOK $@34 OPARENT quote_fmt CPARENT */
3220 #line 1260 "quote_fmt_parse.y"
3221 {
3222 remove_visibility();
3223 }
3224 #line 3225 "quote_fmt_parse.c"
3225 break;
3226
3227 case 126: /* $@35: %empty */
3228 #line 1264 "quote_fmt_parse.y"
3229 {
3230 gchar *tmp = quote_fmt_complete_address(msginfo->from);
3231 add_visibility(tmp == NULL || *tmp == '\0');
3232 g_free(tmp);
3233 }
3234 #line 3235 "quote_fmt_parse.c"
3235 break;
3236
3237 case 127: /* query_not: QUERY_NOT_FROM_FOUND_IN_ADDRESSBOOK $@35 OPARENT quote_fmt CPARENT */
3238 #line 1270 "quote_fmt_parse.y"
3239 {
3240 remove_visibility();
3241 }
3242 #line 3243 "quote_fmt_parse.c"
3243 break;
3244
3245 case 128: /* $@36: %empty */
3246 #line 1274 "quote_fmt_parse.y"
3247 {
3248 gchar *tmp = quote_fmt_complete_address(msginfo->to);
3249 add_visibility(tmp == NULL || *tmp == '\0');
3250 g_free(tmp);
3251 }
3252 #line 3253 "quote_fmt_parse.c"
3253 break;
3254
3255 case 129: /* query_not: QUERY_NOT_TO_FOUND_IN_ADDRESSBOOK $@36 OPARENT quote_fmt CPARENT */
3256 #line 1280 "quote_fmt_parse.y"
3257 {
3258 remove_visibility();
3259 }
3260 #line 3261 "quote_fmt_parse.c"
3261 break;
3262
3263 case 130: /* $@37: %empty */
3264 #line 1286 "quote_fmt_parse.y"
3265 {
3266 current = &sub_expr;
3267 clear_buffer();
3268 }
3269 #line 3270 "quote_fmt_parse.c"
3270 break;
3271
3272 case 131: /* insert: INSERT_FILE $@37 OPARENT sub_expr CPARENT */
3273 #line 1291 "quote_fmt_parse.y"
3274 {
3275 current = &main_expr;
3276 if (!dry_run) {
3277 quote_fmt_insert_file(sub_expr.buffer);
3278 }
3279 }
3280 #line 3281 "quote_fmt_parse.c"
3281 break;
3282
3283 case 132: /* $@38: %empty */
3284 #line 1298 "quote_fmt_parse.y"
3285 {
3286 current = &sub_expr;
3287 clear_buffer();
3288 }
3289 #line 3290 "quote_fmt_parse.c"
3290 break;
3291
3292 case 133: /* insert: INSERT_PROGRAMOUTPUT $@38 OPARENT sub_expr CPARENT */
3293 #line 1303 "quote_fmt_parse.y"
3294 {
3295 current = &main_expr;
3296 if (!dry_run) {
3297 quote_fmt_insert_program_output(sub_expr.buffer);
3298 }
3299 }
3300 #line 3301 "quote_fmt_parse.c"
3301 break;
3302
3303 case 134: /* $@39: %empty */
3304 #line 1310 "quote_fmt_parse.y"
3305 {
3306 current = &sub_expr;
3307 clear_buffer();
3308 }
3309 #line 3310 "quote_fmt_parse.c"
3310 break;
3311
3312 case 135: /* insert: INSERT_USERINPUT $@39 OPARENT sub_expr CPARENT */
3313 #line 1315 "quote_fmt_parse.y"
3314 {
3315 current = &main_expr;
3316 if (!dry_run) {
3317 quote_fmt_insert_user_input(sub_expr.buffer);
3318 }
3319 }
3320 #line 3321 "quote_fmt_parse.c"
3321 break;
3322
3323 case 136: /* $@40: %empty */
3324 #line 1324 "quote_fmt_parse.y"
3325 {
3326 current = &sub_expr;
3327 clear_buffer();
3328 }
3329 #line 3330 "quote_fmt_parse.c"
3330 break;
3331
3332 case 137: /* attach: ATTACH_FILE $@40 OPARENT sub_expr CPARENT */
3333 #line 1329 "quote_fmt_parse.y"
3334 {
3335 current = &main_expr;
3336 if (!dry_run) {
3337 quote_fmt_attach_file(sub_expr.buffer);
3338 }
3339 }
3340 #line 3341 "quote_fmt_parse.c"
3341 break;
3342
3343 case 138: /* $@41: %empty */
3344 #line 1336 "quote_fmt_parse.y"
3345 {
3346 current = &sub_expr;
3347 clear_buffer();
3348 }
3349 #line 3350 "quote_fmt_parse.c"
3350 break;
3351
3352 case 139: /* attach: ATTACH_PROGRAMOUTPUT $@41 OPARENT sub_expr CPARENT */
3353 #line 1341 "quote_fmt_parse.y"
3354 {
3355 current = &main_expr;
3356 if (!dry_run) {
3357 quote_fmt_attach_file_program_output(sub_expr.buffer);
3358 }
3359 }
3360 #line 3361 "quote_fmt_parse.c"
3361 break;
3362
3363
3364 #line 3365 "quote_fmt_parse.c"
3365
3366 default: break;
3367 }
3368 /* User semantic actions sometimes alter yychar, and that requires
3369 that yytoken be updated with the new translation. We take the
3370 approach of translating immediately before every use of yytoken.
3371 One alternative is translating here after every semantic action,
3372 but that translation would be missed if the semantic action invokes
3373 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
3374 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
3375 incorrect destructor might then be invoked immediately. In the
3376 case of YYERROR or YYBACKUP, subsequent parser actions might lead
3377 to an incorrect destructor call or verbose syntax error message
3378 before the lookahead is translated. */
3379 YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
3380
3381 YYPOPSTACK (yylen);
3382 yylen = 0;
3383
3384 *++yyvsp = yyval;
3385
3386 /* Now 'shift' the result of the reduction. Determine what state
3387 that goes to, based on the state we popped back to and the rule
3388 number reduced by. */
3389 {
3390 const int yylhs = yyr1[yyn] - YYNTOKENS;
3391 const int yyi = yypgoto[yylhs] + *yyssp;
3392 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
3393 ? yytable[yyi]
3394 : yydefgoto[yylhs]);
3395 }
3396
3397 goto yynewstate;
3398
3399
3400 /*--------------------------------------.
3401 | yyerrlab -- here on detecting error. |
3402 `--------------------------------------*/
3403 yyerrlab:
3404 /* Make sure we have latest lookahead translation. See comments at
3405 user semantic actions for why this is necessary. */
3406 yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
3407 /* If not already recovering from an error, report this error. */
3408 if (!yyerrstatus)
3409 {
3410 ++yynerrs;
3411 yyerror (YY_("syntax error"));
3412 }
3413
3414 if (yyerrstatus == 3)
3415 {
3416 /* If just tried and failed to reuse lookahead token after an
3417 error, discard it. */
3418
3419 if (yychar <= YYEOF)
3420 {
3421 /* Return failure if at end of input. */
3422 if (yychar == YYEOF)
3423 YYABORT;
3424 }
3425 else
3426 {
3427 yydestruct ("Error: discarding",
3428 yytoken, &yylval);
3429 yychar = YYEMPTY;
3430 }
3431 }
3432
3433 /* Else will try to reuse lookahead token after shifting the error
3434 token. */
3435 goto yyerrlab1;
3436
3437
3438 /*---------------------------------------------------.
3439 | yyerrorlab -- error raised explicitly by YYERROR. |
3440 `---------------------------------------------------*/
3441 yyerrorlab:
3442 /* Pacify compilers when the user code never invokes YYERROR and the
3443 label yyerrorlab therefore never appears in user code. */
3444 if (0)
3445 YYERROR;
3446
3447 /* Do not reclaim the symbols of the rule whose action triggered
3448 this YYERROR. */
3449 YYPOPSTACK (yylen);
3450 yylen = 0;
3451 YY_STACK_PRINT (yyss, yyssp);
3452 yystate = *yyssp;
3453 goto yyerrlab1;
3454
3455
3456 /*-------------------------------------------------------------.
3457 | yyerrlab1 -- common code for both syntax error and YYERROR. |
3458 `-------------------------------------------------------------*/
3459 yyerrlab1:
3460 yyerrstatus = 3; /* Each real token shifted decrements this. */
3461
3462 /* Pop stack until we find a state that shifts the error token. */
3463 for (;;)
3464 {
3465 yyn = yypact[yystate];
3466 if (!yypact_value_is_default (yyn))
3467 {
3468 yyn += YYSYMBOL_YYerror;
3469 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
3470 {
3471 yyn = yytable[yyn];
3472 if (0 < yyn)
3473 break;
3474 }
3475 }
3476
3477 /* Pop the current state because it cannot handle the error token. */
3478 if (yyssp == yyss)
3479 YYABORT;
3480
3481
3482 yydestruct ("Error: popping",
3483 YY_ACCESSING_SYMBOL (yystate), yyvsp);
3484 YYPOPSTACK (1);
3485 yystate = *yyssp;
3486 YY_STACK_PRINT (yyss, yyssp);
3487 }
3488
3489 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3490 *++yyvsp = yylval;
3491 YY_IGNORE_MAYBE_UNINITIALIZED_END
3492
3493
3494 /* Shift the error token. */
3495 YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
3496
3497 yystate = yyn;
3498 goto yynewstate;
3499
3500
3501 /*-------------------------------------.
3502 | yyacceptlab -- YYACCEPT comes here. |
3503 `-------------------------------------*/
3504 yyacceptlab:
3505 yyresult = 0;
3506 goto yyreturn;
3507
3508
3509 /*-----------------------------------.
3510 | yyabortlab -- YYABORT comes here. |
3511 `-----------------------------------*/
3512 yyabortlab:
3513 yyresult = 1;
3514 goto yyreturn;
3515
3516
3517 #if !defined yyoverflow
3518 /*-------------------------------------------------.
3519 | yyexhaustedlab -- memory exhaustion comes here. |
3520 `-------------------------------------------------*/
3521 yyexhaustedlab:
3522 yyerror (YY_("memory exhausted"));
3523 yyresult = 2;
3524 goto yyreturn;
3525 #endif
3526
3527
3528 /*-------------------------------------------------------.
3529 | yyreturn -- parsing is finished, clean up and return. |
3530 `-------------------------------------------------------*/
3531 yyreturn:
3532 if (yychar != YYEMPTY)
3533 {
3534 /* Make sure we have latest lookahead translation. See comments at
3535 user semantic actions for why this is necessary. */
3536 yytoken = YYTRANSLATE (yychar);
3537 yydestruct ("Cleanup: discarding lookahead",
3538 yytoken, &yylval);
3539 }
3540 /* Do not reclaim the symbols of the rule whose action triggered
3541 this YYABORT or YYACCEPT. */
3542 YYPOPSTACK (yylen);
3543 YY_STACK_PRINT (yyss, yyssp);
3544 while (yyssp != yyss)
3545 {
3546 yydestruct ("Cleanup: popping",
3547 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
3548 YYPOPSTACK (1);
3549 }
3550 #ifndef yyoverflow
3551 if (yyss != yyssa)
3552 YYSTACK_FREE (yyss);
3553 #endif
3554
3555 return yyresult;
3556 }
3557
3558