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, &lt, 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, &lt);
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, &lt);
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