flex-2.5.39/0002755000175000017500000000000012314621666013033 5ustar srivastasrivastaflex-2.5.39/scanopt.c0000644000175000017500000004763212314546064014656 0ustar srivastasrivasta/* flex - tool to generate fast lexical analyzers */ /* Copyright (c) 1990 The Regents of the University of California. */ /* All rights reserved. */ /* This code is derived from software contributed to Berkeley by */ /* Vern Paxson. */ /* The United States Government has rights in this work pursuant */ /* to contract no. DE-AC03-76SF00098 between the United States */ /* Department of Energy and the University of California. */ /* This file is part of flex. */ /* Redistribution and use in source and binary forms, with or without */ /* modification, are permitted provided that the following conditions */ /* are met: */ /* 1. Redistributions of source code must retain the above copyright */ /* notice, this list of conditions and the following disclaimer. */ /* 2. Redistributions in binary form must reproduce the above copyright */ /* notice, this list of conditions and the following disclaimer in the */ /* documentation and/or other materials provided with the distribution. */ /* Neither the name of the University nor the names of its contributors */ /* may be used to endorse or promote products derived from this software */ /* without specific prior written permission. */ /* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR */ /* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED */ /* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */ /* PURPOSE. */ #include "flexdef.h" #include "scanopt.h" /* Internal structures */ #ifdef HAVE_STRCASECMP #define STRCASECMP(a,b) strcasecmp(a,b) #else static int STRCASECMP PROTO ((const char *, const char *)); static int STRCASECMP (a, b) const char *a; const char *b; { while (tolower (*a++) == tolower (*b++)) ; return b - a; } #endif #define ARG_NONE 0x01 #define ARG_REQ 0x02 #define ARG_OPT 0x04 #define IS_LONG 0x08 struct _aux { int flags; /* The above hex flags. */ int namelen; /* Length of the actual option word, e.g., "--file[=foo]" is 4 */ int printlen; /* Length of entire string, e.g., "--file[=foo]" is 12 */ }; struct _scanopt_t { const optspec_t *options; /* List of options. */ struct _aux *aux; /* Auxiliary data about options. */ int optc; /* Number of options. */ int argc; /* Number of args. */ char **argv; /* Array of strings. */ int index; /* Used as: argv[index][subscript]. */ int subscript; char no_err_msg; /* If true, do not print errors. */ char has_long; char has_short; }; /* Accessor functions. These WOULD be one-liners, but portability calls. */ static const char *NAME PROTO ((struct _scanopt_t *, int)); static int PRINTLEN PROTO ((struct _scanopt_t *, int)); static int RVAL PROTO ((struct _scanopt_t *, int)); static int FLAGS PROTO ((struct _scanopt_t *, int)); static const char *DESC PROTO ((struct _scanopt_t *, int)); static int scanopt_err PROTO ((struct _scanopt_t *, int, int, int)); static int matchlongopt PROTO ((char *, char **, int *, char **, int *)); static int find_opt PROTO ((struct _scanopt_t *, int, char *, int, int *, int *opt_offset)); static const char *NAME (s, i) struct _scanopt_t *s; int i; { return s->options[i].opt_fmt + ((s->aux[i].flags & IS_LONG) ? 2 : 1); } static int PRINTLEN (s, i) struct _scanopt_t *s; int i; { return s->aux[i].printlen; } static int RVAL (s, i) struct _scanopt_t *s; int i; { return s->options[i].r_val; } static int FLAGS (s, i) struct _scanopt_t *s; int i; { return s->aux[i].flags; } static const char *DESC (s, i) struct _scanopt_t *s; int i; { return s->options[i].desc ? s->options[i].desc : ""; } #ifndef NO_SCANOPT_USAGE static int get_cols PROTO ((void)); static int get_cols () { char *env; int cols = 80; /* default */ #ifdef HAVE_NCURSES_H initscr (); endwin (); if (COLS > 0) return COLS; #endif if ((env = getenv ("COLUMNS")) != NULL) cols = atoi (env); return cols; } #endif /* Macro to check for NULL before assigning a value. */ #define SAFE_ASSIGN(ptr,val) \ do{ \ if((ptr)!=NULL) \ *(ptr) = val; \ }while(0) /* Macro to assure we reset subscript whenever we adjust s->index.*/ #define INC_INDEX(s,n) \ do{ \ (s)->index += (n); \ (s)->subscript= 0; \ }while(0) scanopt_t *scanopt_init (options, argc, argv, flags) const optspec_t *options; int argc; char **argv; int flags; { int i; struct _scanopt_t *s; s = (struct _scanopt_t *) malloc (sizeof (struct _scanopt_t)); s->options = options; s->optc = 0; s->argc = argc; s->argv = (char **) argv; s->index = 1; s->subscript = 0; s->no_err_msg = (flags & SCANOPT_NO_ERR_MSG); s->has_long = 0; s->has_short = 0; /* Determine option count. (Find entry with all zeros). */ s->optc = 0; while (options[s->optc].opt_fmt || options[s->optc].r_val || options[s->optc].desc) s->optc++; /* Build auxiliary data */ s->aux = (struct _aux *) malloc (s->optc * sizeof (struct _aux)); for (i = 0; i < s->optc; i++) { const Char *p, *pname; const struct optspec_t *opt; struct _aux *aux; opt = s->options + i; aux = s->aux + i; aux->flags = ARG_NONE; if (opt->opt_fmt[0] == '-' && opt->opt_fmt[1] == '-') { aux->flags |= IS_LONG; pname = (const Char *)(opt->opt_fmt + 2); s->has_long = 1; } else { pname = (const Char *)(opt->opt_fmt + 1); s->has_short = 1; } aux->printlen = strlen (opt->opt_fmt); aux->namelen = 0; for (p = pname + 1; *p; p++) { /* detect required arg */ if (*p == '=' || isspace (*p) || !(aux->flags & IS_LONG)) { if (aux->namelen == 0) aux->namelen = p - pname; aux->flags |= ARG_REQ; aux->flags &= ~ARG_NONE; } /* detect optional arg. This overrides required arg. */ if (*p == '[') { if (aux->namelen == 0) aux->namelen = p - pname; aux->flags &= ~(ARG_REQ | ARG_NONE); aux->flags |= ARG_OPT; break; } } if (aux->namelen == 0) aux->namelen = p - pname; } return (scanopt_t *) s; } #ifndef NO_SCANOPT_USAGE /* these structs are for scanopt_usage(). */ struct usg_elem { int idx; struct usg_elem *next; struct usg_elem *alias; }; typedef struct usg_elem usg_elem; /* Prints a usage message based on contents of optlist. * Parameters: * scanner - The scanner, already initialized with scanopt_init(). * fp - The file stream to write to. * usage - Text to be prepended to option list. * Return: Always returns 0 (zero). * The output looks something like this: [indent][option, alias1, alias2...][indent][description line1 description line2...] */ int scanopt_usage (scanner, fp, usage) scanopt_t *scanner; FILE *fp; const char *usage; { struct _scanopt_t *s; int i, columns, indent = 2; usg_elem *byr_val = NULL; /* option indices sorted by r_val */ usg_elem *store; /* array of preallocated elements. */ int store_idx = 0; usg_elem *ue; int maxlen[2]; int desccol = 0; int print_run = 0; maxlen[0] = 0; maxlen[1] = 0; s = (struct _scanopt_t *) scanner; if (usage) { fprintf (fp, "%s\n", usage); } else { /* Find the basename of argv[0] */ const char *p; p = s->argv[0] + strlen (s->argv[0]); while (p != s->argv[0] && *p != '/') --p; if (*p == '/') p++; fprintf (fp, _("Usage: %s [OPTIONS]...\n"), p); } fprintf (fp, "\n"); /* Sort by r_val and string. Yes, this is O(n*n), but n is small. */ store = (usg_elem *) malloc (s->optc * sizeof (usg_elem)); for (i = 0; i < s->optc; i++) { /* grab the next preallocate node. */ ue = store + store_idx++; ue->idx = i; ue->next = ue->alias = NULL; /* insert into list. */ if (!byr_val) byr_val = ue; else { int found_alias = 0; usg_elem **ue_curr, **ptr_if_no_alias = NULL; ue_curr = &byr_val; while (*ue_curr) { if (RVAL (s, (*ue_curr)->idx) == RVAL (s, ue->idx)) { /* push onto the alias list. */ ue_curr = &((*ue_curr)->alias); found_alias = 1; break; } if (!ptr_if_no_alias && STRCASECMP (NAME (s, (*ue_curr)->idx), NAME (s, ue->idx)) > 0) { ptr_if_no_alias = ue_curr; } ue_curr = &((*ue_curr)->next); } if (!found_alias && ptr_if_no_alias) ue_curr = ptr_if_no_alias; ue->next = *ue_curr; *ue_curr = ue; } } #if 0 if (1) { printf ("ORIGINAL:\n"); for (i = 0; i < s->optc; i++) printf ("%2d: %s\n", i, NAME (s, i)); printf ("SORTED:\n"); ue = byr_val; while (ue) { usg_elem *ue2; printf ("%2d: %s\n", ue->idx, NAME (s, ue->idx)); for (ue2 = ue->alias; ue2; ue2 = ue2->next) printf (" +---> %2d: %s\n", ue2->idx, NAME (s, ue2->idx)); ue = ue->next; } } #endif /* Now build each row of output. */ /* first pass calculate how much room we need. */ for (ue = byr_val; ue; ue = ue->next) { usg_elem *ap; int len = 0; int nshort = 0, nlong = 0; #define CALC_LEN(i) do {\ if(FLAGS(s,i) & IS_LONG) \ len += (nlong++||nshort) ? 2+PRINTLEN(s,i) : PRINTLEN(s,i);\ else\ len += (nshort++||nlong)? 2+PRINTLEN(s,i) : PRINTLEN(s,i);\ }while(0) if (!(FLAGS (s, ue->idx) & IS_LONG)) CALC_LEN (ue->idx); /* do short aliases first. */ for (ap = ue->alias; ap; ap = ap->next) { if (FLAGS (s, ap->idx) & IS_LONG) continue; CALC_LEN (ap->idx); } if (FLAGS (s, ue->idx) & IS_LONG) CALC_LEN (ue->idx); /* repeat the above loop, this time for long aliases. */ for (ap = ue->alias; ap; ap = ap->next) { if (!(FLAGS (s, ap->idx) & IS_LONG)) continue; CALC_LEN (ap->idx); } if (len > maxlen[0]) maxlen[0] = len; /* It's much easier to calculate length for description column! */ len = strlen (DESC (s, ue->idx)); if (len > maxlen[1]) maxlen[1] = len; } /* Determine how much room we have, and how much we will allocate to each col. * Do not address pathological cases. Output will just be ugly. */ columns = get_cols () - 1; if (maxlen[0] + maxlen[1] + indent * 2 > columns) { /* col 0 gets whatever it wants. we'll wrap the desc col. */ maxlen[1] = columns - (maxlen[0] + indent * 2); if (maxlen[1] < 14) /* 14 is arbitrary lower limit on desc width. */ maxlen[1] = INT_MAX; } desccol = maxlen[0] + indent * 2; #define PRINT_SPACES(fp,n)\ do{\ int _n;\ _n=(n);\ while(_n-- > 0)\ fputc(' ',(fp));\ }while(0) /* Second pass (same as above loop), this time we print. */ /* Sloppy hack: We iterate twice. The first time we print short and long options. The second time we print those lines that have ONLY long options. */ while (print_run++ < 2) { for (ue = byr_val; ue; ue = ue->next) { usg_elem *ap; int nwords = 0, nchars = 0, has_short = 0; /* TODO: get has_short schtick to work */ has_short = !(FLAGS (s, ue->idx) & IS_LONG); for (ap = ue->alias; ap; ap = ap->next) { if (!(FLAGS (s, ap->idx) & IS_LONG)) { has_short = 1; break; } } if ((print_run == 1 && !has_short) || (print_run == 2 && has_short)) continue; PRINT_SPACES (fp, indent); nchars += indent; /* Print, adding a ", " between aliases. */ #define PRINT_IT(i) do{\ if(nwords++)\ nchars+=fprintf(fp,", ");\ nchars+=fprintf(fp,"%s",s->options[i].opt_fmt);\ }while(0) if (!(FLAGS (s, ue->idx) & IS_LONG)) PRINT_IT (ue->idx); /* print short aliases first. */ for (ap = ue->alias; ap; ap = ap->next) { if (!(FLAGS (s, ap->idx) & IS_LONG)) PRINT_IT (ap->idx); } if (FLAGS (s, ue->idx) & IS_LONG) PRINT_IT (ue->idx); /* repeat the above loop, this time for long aliases. */ for (ap = ue->alias; ap; ap = ap->next) { if (FLAGS (s, ap->idx) & IS_LONG) PRINT_IT (ap->idx); } /* pad to desccol */ PRINT_SPACES (fp, desccol - nchars); /* Print description, wrapped to maxlen[1] columns. */ if (1) { const char *pstart; pstart = DESC (s, ue->idx); while (1) { int n = 0; const char *lastws = NULL, *p; p = pstart; while (*p && n < maxlen[1] && *p != '\n') { if (isspace ((Char)(*p)) || *p == '-') lastws = p; n++; p++; } if (!*p) { /* hit end of desc. done. */ fprintf (fp, "%s\n", pstart); break; } else if (*p == '\n') { /* print everything up to here then wrap. */ fprintf (fp, "%.*s\n", n, pstart); PRINT_SPACES (fp, desccol); pstart = p + 1; continue; } else { /* we hit the edge of the screen. wrap at space if possible. */ if (lastws) { fprintf (fp, "%.*s\n", (int)(lastws - pstart), pstart); pstart = lastws + 1; } else { fprintf (fp, "%.*s\n", n, pstart); pstart = p + 1; } PRINT_SPACES (fp, desccol); continue; } } } } } /* end while */ free (store); return 0; } #endif /* no scanopt_usage */ static int scanopt_err (s, opt_offset, is_short, err) struct _scanopt_t *s; int opt_offset; int is_short; int err; { const char *optname = ""; char optchar[2]; const optspec_t *opt = NULL; if (opt_offset >= 0) opt = s->options + opt_offset; if (!s->no_err_msg) { if (s->index > 0 && s->index < s->argc) { if (is_short) { optchar[0] = s->argv[s->index][s->subscript]; optchar[1] = '\0'; optname = optchar; } else { optname = s->argv[s->index]; } } fprintf (stderr, "%s: ", s->argv[0]); switch (err) { case SCANOPT_ERR_ARG_NOT_ALLOWED: fprintf (stderr, _ ("option `%s' doesn't allow an argument\n"), optname); break; case SCANOPT_ERR_ARG_NOT_FOUND: fprintf (stderr, _("option `%s' requires an argument\n"), optname); break; case SCANOPT_ERR_OPT_AMBIGUOUS: fprintf (stderr, _("option `%s' is ambiguous\n"), optname); break; case SCANOPT_ERR_OPT_UNRECOGNIZED: fprintf (stderr, _("Unrecognized option `%s'\n"), optname); break; default: fprintf (stderr, _("Unknown error=(%d)\n"), err); break; } } return err; } /* Internal. Match str against the regex ^--([^=]+)(=(.*))? * return 1 if *looks* like a long option. * 'str' is the only input argument, the rest of the arguments are output only. * optname will point to str + 2 * */ static int matchlongopt (str, optname, optlen, arg, arglen) char *str; char **optname; int *optlen; char **arg; int *arglen; { char *p; *optname = *arg = (char *) 0; *optlen = *arglen = 0; /* Match regex /--./ */ p = str; if (p[0] != '-' || p[1] != '-' || !p[2]) return 0; p += 2; *optname = (char *) p; /* find the end of optname */ while (*p && *p != '=') ++p; *optlen = p - *optname; if (!*p) /* an option with no '=...' part. */ return 1; /* We saw an '=' char. The rest of p is the arg. */ p++; *arg = p; while (*p) ++p; *arglen = p - *arg; return 1; } /* Internal. Look up long or short option by name. * Long options must match a non-ambiguous prefix, or exact match. * Short options must be exact. * Return boolean true if found and no error. * Error stored in err_code or zero if no error. */ static int find_opt (s, lookup_long, optstart, len, err_code, opt_offset) struct _scanopt_t *s; int lookup_long; char *optstart; int len; int *err_code; int *opt_offset; { int nmatch = 0, lastr_val = 0, i; *err_code = 0; *opt_offset = -1; if (!optstart) return 0; for (i = 0; i < s->optc; i++) { char *optname; optname = (char *) (s->options[i].opt_fmt + (lookup_long ? 2 : 1)); if (lookup_long && (s->aux[i].flags & IS_LONG)) { if (len > s->aux[i].namelen) continue; if (strncmp (optname, optstart, len) == 0) { nmatch++; *opt_offset = i; /* exact match overrides all. */ if (len == s->aux[i].namelen) { nmatch = 1; break; } /* ambiguity is ok between aliases. */ if (lastr_val && lastr_val == s->options[i].r_val) nmatch--; lastr_val = s->options[i].r_val; } } else if (!lookup_long && !(s->aux[i].flags & IS_LONG)) { if (optname[0] == optstart[0]) { nmatch++; *opt_offset = i; } } } if (nmatch == 0) { *err_code = SCANOPT_ERR_OPT_UNRECOGNIZED; *opt_offset = -1; } else if (nmatch > 1) { *err_code = SCANOPT_ERR_OPT_AMBIGUOUS; *opt_offset = -1; } return *err_code ? 0 : 1; } int scanopt (svoid, arg, optindex) scanopt_t *svoid; char **arg; int *optindex; { char *optname = NULL, *optarg = NULL, *pstart; int namelen = 0, arglen = 0; int errcode = 0, has_next; const optspec_t *optp; struct _scanopt_t *s; struct _aux *auxp; int is_short; int opt_offset = -1; s = (struct _scanopt_t *) svoid; /* Normalize return-parameters. */ SAFE_ASSIGN (arg, NULL); SAFE_ASSIGN (optindex, s->index); if (s->index >= s->argc) return 0; /* pstart always points to the start of our current scan. */ pstart = s->argv[s->index] + s->subscript; if (!pstart) return 0; if (s->subscript == 0) { /* test for exact match of "--" */ if (pstart[0] == '-' && pstart[1] == '-' && !pstart[2]) { SAFE_ASSIGN (optindex, s->index + 1); INC_INDEX (s, 1); return 0; } /* Match an opt. */ if (matchlongopt (pstart, &optname, &namelen, &optarg, &arglen)) { /* it LOOKS like an opt, but is it one?! */ if (!find_opt (s, 1, optname, namelen, &errcode, &opt_offset)) { scanopt_err (s, opt_offset, 0, errcode); return errcode; } /* We handle this below. */ is_short = 0; /* Check for short opt. */ } else if (pstart[0] == '-' && pstart[1]) { /* Pass through to below. */ is_short = 1; s->subscript++; pstart++; } else { /* It's not an option. We're done. */ return 0; } } /* We have to re-check the subscript status because it * may have changed above. */ if (s->subscript != 0) { /* we are somewhere in a run of short opts, * e.g., at the 'z' in `tar -xzf` */ optname = pstart; namelen = 1; is_short = 1; if (!find_opt (s, 0, pstart, namelen, &errcode, &opt_offset)) { return scanopt_err (s, opt_offset, 1, errcode); } optarg = pstart + 1; if (!*optarg) { optarg = NULL; arglen = 0; } else arglen = strlen (optarg); } /* At this point, we have a long or short option matched at opt_offset into * the s->options array (and corresponding aux array). * A trailing argument is in {optarg,arglen}, if any. */ /* Look ahead in argv[] to see if there is something * that we can use as an argument (if needed). */ has_next = s->index + 1 < s->argc && strcmp ("--", s->argv[s->index + 1]) != 0; optp = s->options + opt_offset; auxp = s->aux + opt_offset; /* case: no args allowed */ if (auxp->flags & ARG_NONE) { if (optarg && !is_short) { scanopt_err (s, opt_offset, is_short, errcode = SCANOPT_ERR_ARG_NOT_ALLOWED); INC_INDEX (s, 1); return errcode; } else if (!optarg) INC_INDEX (s, 1); else s->subscript++; return optp->r_val; } /* case: required */ if (auxp->flags & ARG_REQ) { if (!optarg && !has_next) return scanopt_err (s, opt_offset, is_short, SCANOPT_ERR_ARG_NOT_FOUND); if (!optarg) { /* Let the next argv element become the argument. */ SAFE_ASSIGN (arg, s->argv[s->index + 1]); INC_INDEX (s, 2); } else { SAFE_ASSIGN (arg, (char *) optarg); INC_INDEX (s, 1); } return optp->r_val; } /* case: optional */ if (auxp->flags & ARG_OPT) { SAFE_ASSIGN (arg, optarg); INC_INDEX (s, 1); return optp->r_val; } /* Should not reach here. */ return 0; } int scanopt_destroy (svoid) scanopt_t *svoid; { struct _scanopt_t *s; s = (struct _scanopt_t *) svoid; if (s) { if (s->aux) free (s->aux); free (s); } return 0; } /* vim:set tabstop=8 softtabstop=4 shiftwidth=4: */ flex-2.5.39/tblcmp.c0000644000175000017500000005557712314546064014477 0ustar srivastasrivasta/* tblcmp - table compression routines */ /* Copyright (c) 1990 The Regents of the University of California. */ /* All rights reserved. */ /* This code is derived from software contributed to Berkeley by */ /* Vern Paxson. */ /* The United States Government has rights in this work pursuant */ /* to contract no. DE-AC03-76SF00098 between the United States */ /* Department of Energy and the University of California. */ /* This file is part of flex. */ /* Redistribution and use in source and binary forms, with or without */ /* modification, are permitted provided that the following conditions */ /* are met: */ /* 1. Redistributions of source code must retain the above copyright */ /* notice, this list of conditions and the following disclaimer. */ /* 2. Redistributions in binary form must reproduce the above copyright */ /* notice, this list of conditions and the following disclaimer in the */ /* documentation and/or other materials provided with the distribution. */ /* Neither the name of the University nor the names of its contributors */ /* may be used to endorse or promote products derived from this software */ /* without specific prior written permission. */ /* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR */ /* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED */ /* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */ /* PURPOSE. */ #include "flexdef.h" /* declarations for functions that have forward references */ void mkentry PROTO ((register int *, int, int, int, int)); void mkprot PROTO ((int[], int, int)); void mktemplate PROTO ((int[], int, int)); void mv2front PROTO ((int)); int tbldiff PROTO ((int[], int, int[])); /* bldtbl - build table entries for dfa state * * synopsis * int state[numecs], statenum, totaltrans, comstate, comfreq; * bldtbl( state, statenum, totaltrans, comstate, comfreq ); * * State is the statenum'th dfa state. It is indexed by equivalence class and * gives the number of the state to enter for a given equivalence class. * totaltrans is the total number of transitions out of the state. Comstate * is that state which is the destination of the most transitions out of State. * Comfreq is how many transitions there are out of State to Comstate. * * A note on terminology: * "protos" are transition tables which have a high probability of * either being redundant (a state processed later will have an identical * transition table) or nearly redundant (a state processed later will have * many of the same out-transitions). A "most recently used" queue of * protos is kept around with the hope that most states will find a proto * which is similar enough to be usable, and therefore compacting the * output tables. * "templates" are a special type of proto. If a transition table is * homogeneous or nearly homogeneous (all transitions go to the same * destination) then the odds are good that future states will also go * to the same destination state on basically the same character set. * These homogeneous states are so common when dealing with large rule * sets that they merit special attention. If the transition table were * simply made into a proto, then (typically) each subsequent, similar * state will differ from the proto for two out-transitions. One of these * out-transitions will be that character on which the proto does not go * to the common destination, and one will be that character on which the * state does not go to the common destination. Templates, on the other * hand, go to the common state on EVERY transition character, and therefore * cost only one difference. */ void bldtbl (state, statenum, totaltrans, comstate, comfreq) int state[], statenum, totaltrans, comstate, comfreq; { int extptr, extrct[2][CSIZE + 1]; int mindiff, minprot, i, d; /* If extptr is 0 then the first array of extrct holds the result * of the "best difference" to date, which is those transitions * which occur in "state" but not in the proto which, to date, * has the fewest differences between itself and "state". If * extptr is 1 then the second array of extrct hold the best * difference. The two arrays are toggled between so that the * best difference to date can be kept around and also a difference * just created by checking against a candidate "best" proto. */ extptr = 0; /* If the state has too few out-transitions, don't bother trying to * compact its tables. */ if ((totaltrans * 100) < (numecs * PROTO_SIZE_PERCENTAGE)) mkentry (state, numecs, statenum, JAMSTATE, totaltrans); else { /* "checkcom" is true if we should only check "state" against * protos which have the same "comstate" value. */ int checkcom = comfreq * 100 > totaltrans * CHECK_COM_PERCENTAGE; minprot = firstprot; mindiff = totaltrans; if (checkcom) { /* Find first proto which has the same "comstate". */ for (i = firstprot; i != NIL; i = protnext[i]) if (protcomst[i] == comstate) { minprot = i; mindiff = tbldiff (state, minprot, extrct[extptr]); break; } } else { /* Since we've decided that the most common destination * out of "state" does not occur with a high enough * frequency, we set the "comstate" to zero, assuring * that if this state is entered into the proto list, * it will not be considered a template. */ comstate = 0; if (firstprot != NIL) { minprot = firstprot; mindiff = tbldiff (state, minprot, extrct[extptr]); } } /* We now have the first interesting proto in "minprot". If * it matches within the tolerances set for the first proto, * we don't want to bother scanning the rest of the proto list * to see if we have any other reasonable matches. */ if (mindiff * 100 > totaltrans * FIRST_MATCH_DIFF_PERCENTAGE) { /* Not a good enough match. Scan the rest of the * protos. */ for (i = minprot; i != NIL; i = protnext[i]) { d = tbldiff (state, i, extrct[1 - extptr]); if (d < mindiff) { extptr = 1 - extptr; mindiff = d; minprot = i; } } } /* Check if the proto we've decided on as our best bet is close * enough to the state we want to match to be usable. */ if (mindiff * 100 > totaltrans * ACCEPTABLE_DIFF_PERCENTAGE) { /* No good. If the state is homogeneous enough, * we make a template out of it. Otherwise, we * make a proto. */ if (comfreq * 100 >= totaltrans * TEMPLATE_SAME_PERCENTAGE) mktemplate (state, statenum, comstate); else { mkprot (state, statenum, comstate); mkentry (state, numecs, statenum, JAMSTATE, totaltrans); } } else { /* use the proto */ mkentry (extrct[extptr], numecs, statenum, prottbl[minprot], mindiff); /* If this state was sufficiently different from the * proto we built it from, make it, too, a proto. */ if (mindiff * 100 >= totaltrans * NEW_PROTO_DIFF_PERCENTAGE) mkprot (state, statenum, comstate); /* Since mkprot added a new proto to the proto queue, * it's possible that "minprot" is no longer on the * proto queue (if it happened to have been the last * entry, it would have been bumped off). If it's * not there, then the new proto took its physical * place (though logically the new proto is at the * beginning of the queue), so in that case the * following call will do nothing. */ mv2front (minprot); } } } /* cmptmps - compress template table entries * * Template tables are compressed by using the 'template equivalence * classes', which are collections of transition character equivalence * classes which always appear together in templates - really meta-equivalence * classes. */ void cmptmps () { int tmpstorage[CSIZE + 1]; register int *tmp = tmpstorage, i, j; int totaltrans, trans; peakpairs = numtemps * numecs + tblend; if (usemecs) { /* Create equivalence classes based on data gathered on * template transitions. */ nummecs = cre8ecs (tecfwd, tecbck, numecs); } else nummecs = numecs; while (lastdfa + numtemps + 1 >= current_max_dfas) increase_max_dfas (); /* Loop through each template. */ for (i = 1; i <= numtemps; ++i) { /* Number of non-jam transitions out of this template. */ totaltrans = 0; for (j = 1; j <= numecs; ++j) { trans = tnxt[numecs * i + j]; if (usemecs) { /* The absolute value of tecbck is the * meta-equivalence class of a given * equivalence class, as set up by cre8ecs(). */ if (tecbck[j] > 0) { tmp[tecbck[j]] = trans; if (trans > 0) ++totaltrans; } } else { tmp[j] = trans; if (trans > 0) ++totaltrans; } } /* It is assumed (in a rather subtle way) in the skeleton * that if we're using meta-equivalence classes, the def[] * entry for all templates is the jam template, i.e., * templates never default to other non-jam table entries * (e.g., another template) */ /* Leave room for the jam-state after the last real state. */ mkentry (tmp, nummecs, lastdfa + i + 1, JAMSTATE, totaltrans); } } /* expand_nxt_chk - expand the next check arrays */ void expand_nxt_chk () { register int old_max = current_max_xpairs; current_max_xpairs += MAX_XPAIRS_INCREMENT; ++num_reallocs; nxt = reallocate_integer_array (nxt, current_max_xpairs); chk = reallocate_integer_array (chk, current_max_xpairs); zero_out ((char *) (chk + old_max), (size_t) (MAX_XPAIRS_INCREMENT * sizeof (int))); } /* find_table_space - finds a space in the table for a state to be placed * * synopsis * int *state, numtrans, block_start; * int find_table_space(); * * block_start = find_table_space( state, numtrans ); * * State is the state to be added to the full speed transition table. * Numtrans is the number of out-transitions for the state. * * find_table_space() returns the position of the start of the first block (in * chk) able to accommodate the state * * In determining if a state will or will not fit, find_table_space() must take * into account the fact that an end-of-buffer state will be added at [0], * and an action number will be added in [-1]. */ int find_table_space (state, numtrans) int *state, numtrans; { /* Firstfree is the position of the first possible occurrence of two * consecutive unused records in the chk and nxt arrays. */ register int i; register int *state_ptr, *chk_ptr; register int *ptr_to_last_entry_in_state; /* If there are too many out-transitions, put the state at the end of * nxt and chk. */ if (numtrans > MAX_XTIONS_FULL_INTERIOR_FIT) { /* If table is empty, return the first available spot in * chk/nxt, which should be 1. */ if (tblend < 2) return 1; /* Start searching for table space near the end of * chk/nxt arrays. */ i = tblend - numecs; } else /* Start searching for table space from the beginning * (skipping only the elements which will definitely not * hold the new state). */ i = firstfree; while (1) { /* loops until a space is found */ while (i + numecs >= current_max_xpairs) expand_nxt_chk (); /* Loops until space for end-of-buffer and action number * are found. */ while (1) { /* Check for action number space. */ if (chk[i - 1] == 0) { /* Check for end-of-buffer space. */ if (chk[i] == 0) break; else /* Since i != 0, there is no use * checking to see if (++i) - 1 == 0, * because that's the same as i == 0, * so we skip a space. */ i += 2; } else ++i; while (i + numecs >= current_max_xpairs) expand_nxt_chk (); } /* If we started search from the beginning, store the new * firstfree for the next call of find_table_space(). */ if (numtrans <= MAX_XTIONS_FULL_INTERIOR_FIT) firstfree = i + 1; /* Check to see if all elements in chk (and therefore nxt) * that are needed for the new state have not yet been taken. */ state_ptr = &state[1]; ptr_to_last_entry_in_state = &chk[i + numecs + 1]; for (chk_ptr = &chk[i + 1]; chk_ptr != ptr_to_last_entry_in_state; ++chk_ptr) if (*(state_ptr++) != 0 && *chk_ptr != 0) break; if (chk_ptr == ptr_to_last_entry_in_state) return i; else ++i; } } /* inittbl - initialize transition tables * * Initializes "firstfree" to be one beyond the end of the table. Initializes * all "chk" entries to be zero. */ void inittbl () { register int i; zero_out ((char *) chk, (size_t) (current_max_xpairs * sizeof (int))); tblend = 0; firstfree = tblend + 1; numtemps = 0; if (usemecs) { /* Set up doubly-linked meta-equivalence classes; these * are sets of equivalence classes which all have identical * transitions out of TEMPLATES. */ tecbck[1] = NIL; for (i = 2; i <= numecs; ++i) { tecbck[i] = i - 1; tecfwd[i - 1] = i; } tecfwd[numecs] = NIL; } } /* mkdeftbl - make the default, "jam" table entries */ void mkdeftbl () { int i; jamstate = lastdfa + 1; ++tblend; /* room for transition on end-of-buffer character */ while (tblend + numecs >= current_max_xpairs) expand_nxt_chk (); /* Add in default end-of-buffer transition. */ nxt[tblend] = end_of_buffer_state; chk[tblend] = jamstate; for (i = 1; i <= numecs; ++i) { nxt[tblend + i] = 0; chk[tblend + i] = jamstate; } jambase = tblend; base[jamstate] = jambase; def[jamstate] = 0; tblend += numecs; ++numtemps; } /* mkentry - create base/def and nxt/chk entries for transition array * * synopsis * int state[numchars + 1], numchars, statenum, deflink, totaltrans; * mkentry( state, numchars, statenum, deflink, totaltrans ); * * "state" is a transition array "numchars" characters in size, "statenum" * is the offset to be used into the base/def tables, and "deflink" is the * entry to put in the "def" table entry. If "deflink" is equal to * "JAMSTATE", then no attempt will be made to fit zero entries of "state" * (i.e., jam entries) into the table. It is assumed that by linking to * "JAMSTATE" they will be taken care of. In any case, entries in "state" * marking transitions to "SAME_TRANS" are treated as though they will be * taken care of by whereever "deflink" points. "totaltrans" is the total * number of transitions out of the state. If it is below a certain threshold, * the tables are searched for an interior spot that will accommodate the * state array. */ void mkentry (state, numchars, statenum, deflink, totaltrans) register int *state; int numchars, statenum, deflink, totaltrans; { register int minec, maxec, i, baseaddr; int tblbase, tbllast; if (totaltrans == 0) { /* there are no out-transitions */ if (deflink == JAMSTATE) base[statenum] = JAMSTATE; else base[statenum] = 0; def[statenum] = deflink; return; } for (minec = 1; minec <= numchars; ++minec) { if (state[minec] != SAME_TRANS) if (state[minec] != 0 || deflink != JAMSTATE) break; } if (totaltrans == 1) { /* There's only one out-transition. Save it for later to fill * in holes in the tables. */ stack1 (statenum, minec, state[minec], deflink); return; } for (maxec = numchars; maxec > 0; --maxec) { if (state[maxec] != SAME_TRANS) if (state[maxec] != 0 || deflink != JAMSTATE) break; } /* Whether we try to fit the state table in the middle of the table * entries we have already generated, or if we just take the state * table at the end of the nxt/chk tables, we must make sure that we * have a valid base address (i.e., non-negative). Note that * negative base addresses dangerous at run-time (because indexing * the nxt array with one and a low-valued character will access * memory before the start of the array. */ /* Find the first transition of state that we need to worry about. */ if (totaltrans * 100 <= numchars * INTERIOR_FIT_PERCENTAGE) { /* Attempt to squeeze it into the middle of the tables. */ baseaddr = firstfree; while (baseaddr < minec) { /* Using baseaddr would result in a negative base * address below; find the next free slot. */ for (++baseaddr; chk[baseaddr] != 0; ++baseaddr) ; } while (baseaddr + maxec - minec + 1 >= current_max_xpairs) expand_nxt_chk (); for (i = minec; i <= maxec; ++i) if (state[i] != SAME_TRANS && (state[i] != 0 || deflink != JAMSTATE) && chk[baseaddr + i - minec] != 0) { /* baseaddr unsuitable - find another */ for (++baseaddr; baseaddr < current_max_xpairs && chk[baseaddr] != 0; ++baseaddr) ; while (baseaddr + maxec - minec + 1 >= current_max_xpairs) expand_nxt_chk (); /* Reset the loop counter so we'll start all * over again next time it's incremented. */ i = minec - 1; } } else { /* Ensure that the base address we eventually generate is * non-negative. */ baseaddr = MAX (tblend + 1, minec); } tblbase = baseaddr - minec; tbllast = tblbase + maxec; while (tbllast + 1 >= current_max_xpairs) expand_nxt_chk (); base[statenum] = tblbase; def[statenum] = deflink; for (i = minec; i <= maxec; ++i) if (state[i] != SAME_TRANS) if (state[i] != 0 || deflink != JAMSTATE) { nxt[tblbase + i] = state[i]; chk[tblbase + i] = statenum; } if (baseaddr == firstfree) /* Find next free slot in tables. */ for (++firstfree; chk[firstfree] != 0; ++firstfree) ; tblend = MAX (tblend, tbllast); } /* mk1tbl - create table entries for a state (or state fragment) which * has only one out-transition */ void mk1tbl (state, sym, onenxt, onedef) int state, sym, onenxt, onedef; { if (firstfree < sym) firstfree = sym; while (chk[firstfree] != 0) if (++firstfree >= current_max_xpairs) expand_nxt_chk (); base[state] = firstfree - sym; def[state] = onedef; chk[firstfree] = state; nxt[firstfree] = onenxt; if (firstfree > tblend) { tblend = firstfree++; if (firstfree >= current_max_xpairs) expand_nxt_chk (); } } /* mkprot - create new proto entry */ void mkprot (state, statenum, comstate) int state[], statenum, comstate; { int i, slot, tblbase; if (++numprots >= MSP || numecs * numprots >= PROT_SAVE_SIZE) { /* Gotta make room for the new proto by dropping last entry in * the queue. */ slot = lastprot; lastprot = protprev[lastprot]; protnext[lastprot] = NIL; } else slot = numprots; protnext[slot] = firstprot; if (firstprot != NIL) protprev[firstprot] = slot; firstprot = slot; prottbl[slot] = statenum; protcomst[slot] = comstate; /* Copy state into save area so it can be compared with rapidly. */ tblbase = numecs * (slot - 1); for (i = 1; i <= numecs; ++i) protsave[tblbase + i] = state[i]; } /* mktemplate - create a template entry based on a state, and connect the state * to it */ void mktemplate (state, statenum, comstate) int state[], statenum, comstate; { int i, numdiff, tmpbase, tmp[CSIZE + 1]; Char transset[CSIZE + 1]; int tsptr; ++numtemps; tsptr = 0; /* Calculate where we will temporarily store the transition table * of the template in the tnxt[] array. The final transition table * gets created by cmptmps(). */ tmpbase = numtemps * numecs; if (tmpbase + numecs >= current_max_template_xpairs) { current_max_template_xpairs += MAX_TEMPLATE_XPAIRS_INCREMENT; ++num_reallocs; tnxt = reallocate_integer_array (tnxt, current_max_template_xpairs); } for (i = 1; i <= numecs; ++i) if (state[i] == 0) tnxt[tmpbase + i] = 0; else { transset[tsptr++] = i; tnxt[tmpbase + i] = comstate; } if (usemecs) mkeccl (transset, tsptr, tecfwd, tecbck, numecs, 0); mkprot (tnxt + tmpbase, -numtemps, comstate); /* We rely on the fact that mkprot adds things to the beginning * of the proto queue. */ numdiff = tbldiff (state, firstprot, tmp); mkentry (tmp, numecs, statenum, -numtemps, numdiff); } /* mv2front - move proto queue element to front of queue */ void mv2front (qelm) int qelm; { if (firstprot != qelm) { if (qelm == lastprot) lastprot = protprev[lastprot]; protnext[protprev[qelm]] = protnext[qelm]; if (protnext[qelm] != NIL) protprev[protnext[qelm]] = protprev[qelm]; protprev[qelm] = NIL; protnext[qelm] = firstprot; protprev[firstprot] = qelm; firstprot = qelm; } } /* place_state - place a state into full speed transition table * * State is the statenum'th state. It is indexed by equivalence class and * gives the number of the state to enter for a given equivalence class. * Transnum is the number of out-transitions for the state. */ void place_state (state, statenum, transnum) int *state, statenum, transnum; { register int i; register int *state_ptr; int position = find_table_space (state, transnum); /* "base" is the table of start positions. */ base[statenum] = position; /* Put in action number marker; this non-zero number makes sure that * find_table_space() knows that this position in chk/nxt is taken * and should not be used for another accepting number in another * state. */ chk[position - 1] = 1; /* Put in end-of-buffer marker; this is for the same purposes as * above. */ chk[position] = 1; /* Place the state into chk and nxt. */ state_ptr = &state[1]; for (i = 1; i <= numecs; ++i, ++state_ptr) if (*state_ptr != 0) { chk[position + i] = i; nxt[position + i] = *state_ptr; } if (position + numecs > tblend) tblend = position + numecs; } /* stack1 - save states with only one out-transition to be processed later * * If there's room for another state on the "one-transition" stack, the * state is pushed onto it, to be processed later by mk1tbl. If there's * no room, we process the sucker right now. */ void stack1 (statenum, sym, nextstate, deflink) int statenum, sym, nextstate, deflink; { if (onesp >= ONE_STACK_SIZE - 1) mk1tbl (statenum, sym, nextstate, deflink); else { ++onesp; onestate[onesp] = statenum; onesym[onesp] = sym; onenext[onesp] = nextstate; onedef[onesp] = deflink; } } /* tbldiff - compute differences between two state tables * * "state" is the state array which is to be extracted from the pr'th * proto. "pr" is both the number of the proto we are extracting from * and an index into the save area where we can find the proto's complete * state table. Each entry in "state" which differs from the corresponding * entry of "pr" will appear in "ext". * * Entries which are the same in both "state" and "pr" will be marked * as transitions to "SAME_TRANS" in "ext". The total number of differences * between "state" and "pr" is returned as function value. Note that this * number is "numecs" minus the number of "SAME_TRANS" entries in "ext". */ int tbldiff (state, pr, ext) int state[], pr, ext[]; { register int i, *sp = state, *ep = ext, *protp; register int numdiff = 0; protp = &protsave[numecs * (pr - 1)]; for (i = numecs; i > 0; --i) { if (*++protp == *++sp) *++ep = SAME_TRANS; else { *++ep = *sp; ++numdiff; } } return numdiff; } flex-2.5.39/flexint.h0000644000175000017500000000272612314546064014660 0ustar srivastasrivasta/* flex integer type definitions */ #ifndef FLEXINT_H #define FLEXINT_H /* C99 systems have . Non-C99 systems may or may not. */ #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. */ #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS 1 #endif #include typedef int8_t flex_int8_t; typedef uint8_t flex_uint8_t; typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; /* Limits of integral types. */ #ifndef INT8_MIN #define INT8_MIN (-128) #endif #ifndef INT16_MIN #define INT16_MIN (-32767-1) #endif #ifndef INT32_MIN #define INT32_MIN (-2147483647-1) #endif #ifndef INT8_MAX #define INT8_MAX (127) #endif #ifndef INT16_MAX #define INT16_MAX (32767) #endif #ifndef INT32_MAX #define INT32_MAX (2147483647) #endif #ifndef UINT8_MAX #define UINT8_MAX (255U) #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #endif /* ! C99 */ #endif /* ! FLEXINT_H */ flex-2.5.39/doc/0002755000175000017500000000000012314621664013576 5ustar srivastasrivastaflex-2.5.39/doc/stamp-vti0000644000175000017500000000014612314621637015444 0ustar srivastasrivasta@set UPDATED 6 December 2012 @set UPDATED-MONTH December 2012 @set EDITION 2.5.39 @set VERSION 2.5.39 flex-2.5.39/doc/flex.pdf0000644000175000017500000207062112314621641015230 0ustar srivastasrivasta%PDF-1.5 % 1 0 obj << /Length 587 /Filter /FlateDecode >> stream xmTM@+z&?tBL$d4*.<_fW_wիrc;`GUOV&ʮ[v6W7TvbuYt/N.5=S> stream xmTM@+z&?tBL0d4*.<̿~UfW_uvc;Z̫MfG} I]/ޭmޯo⣩0^'^x]fkn{EK{*ʇupg6;ލ$4;gZ8, M[TPRJGeWxmE7 "/7j;{Yʋ"1tm|oirI ɑc׺>[TқEnn#bBSEV嶭mzsg)gR133w xAb;aGL6K&0+}&"?(Ҧa/ c,!-f3*Ix {asIC%hS7}H=ŤIY(jŧ Z4{SO5Z ekxvKǬ@2a> stream xmSn0+$z"aKU^CvF^p=!94gB˥0pދ s#P~k@hZ+vQڦ(A,Rf5Ħq8>K_X NH3$Ǟ{<0*5c~Pʯ5W42^!0^#rqxƘE3x z)cgl1BҰ?Xq!NAWA*d1)iȧΰО 9璆NVfkVaUJ?%͚5ػbTW=ј52f&p2pjV^cHMcVYxLS7E=1j g endstream endobj 6 0 obj << /Length 306 /Filter /FlateDecode >> stream xڍPMK11&f2I69*BQPYA*텓pQDFiȺx! V8pĠJgUshv]$CJ~ aL9x~JPIp$hڪUIVV, uM ֧~MriG!*'f|: *:d_{y{7 endstream endobj 13 0 obj << /Length 1329 /Filter /FlateDecode >> stream xVKsFWP9*#k4zmy7[d1I Od'U1b~lzs7 AYyD,oΘ U?]g00M A&NPD:p/v$-%X0gM}HݹjJNneDR˦n齰~JfC"Jop\SJy,_|"R~}W"b}F8@P2aAt{;)M d>-`kQYf8 #/Qjon$DԳ2a+O45䡖?PAV;sMjYQxGGm#"'Z&ʶkmC3۬loTSm6%/W(qhi|Cz?P;JMHep7M{>Mky4uVТ%M+[aV˚^_GjEઢw'B:կ<>4!`GIB-DwjS#Z<JO` $wl =8AЂ21M ]pV"q,ĕWa׍ SB YSkɱ]DT&D +mxGZGᢉZA iz7}K&? #Rn޷Y} ;ᢱ XXudkO @]e~BfBRH?BS7R_~d v1i;MtԖqӘbZWE!Uz vbla{T-N c^y7\!ye7ZIK/T^n5{vۯm+?ZouwVius :b9Kv=&wƃJf!߈XNVh.H_6xgYTͮ͹"]v1&}gV+ݟ0:Uf IOy?1\݂Ĺ HLv|&@Vdէ8Z]=܍x\W>1%> stream xMo6:&M)Hn$l)nKD9U  lFBTP$a1h=ukϐon\8w/Ͼ4BH(Q(@r6/:\vhСG)Ѭ(,0,v^ꇳ&hI㢋a ;E`l}aŵʢc_ULϔc2qcmdx*0Nabd 1LأP )6ވY.>53_20 rtit?t?>0ƔzJ# ( J_"(IկbG+u >cBFmj&yvSc8FBDDrU*]gBclDWW#:&5E55h <-J=f/n&U)5$Mt;!݌#F2&pЧ8@.;VIYDžlx@DNp[uM&Г$չ ` 457M N$Sgmr_'cM]c2aLڀ7-,V_c{Nc|(^y-?@(!mKj϶A.&PszVfio+UY  )Q0$Mt;!ݜcɘAJbd}*,+ĿlßsϒlӽTT,mLRS 2:2n$#2}j1Htu}刴OVK3_|VyxnN=!mj  *s7g؉3 endstream endobj 95 0 obj << /Length 2378 /Filter /FlateDecode >> stream xMs6:JJ|doNdI=pF\IN$.eLQLgjwW>Z,b$SIMdd>ڻۋIw6+} Pxrz>ᘣrǴgxY|K[>e9>u*gs ]TM#9|4;qA gQ<~PG>xN}̓3".c:ߡT¤axa~ x49t[lI[>)J$/)eia@X"2GR:=l9)rQEwyM*+OLJ߮Ǥ90M&qB}mR&fސ@MQ}"U3Z!(W)-)!(Lҡ Ġ d OE.){(馭K9%k,;0y,4C01trz1r"#'ӑ̵ Wn S)՟L \?JmQ+lg_ bҘNHo FTa/! 1B>!L+sG7ȳ {cԏbXo ԛQ/c 1Ƣ>cD冱n!W8gW؃-R&HbHAy""Cm5/ $T$MlQ<[f!SR*& &e]&oVxLHF{Fi5j-wu! (GF> hj0< "0S ^n+RH~[u?N%Fc6KI sϽuF2&Oͱ@۱UVp:&@l*Kzzm^zi#GQ#e=Gvuܘ_lC.t[QczᝉH?Ť4@w 1Z>--LU %M]W˕ mN\aZ fIf 6dOǚ(΄c͎NAQ _i/ꦣDz埰f0DIu:EEPQH(Ċ(&,W4q@NbUm '6+n43~=AlS&"S &e4b4@e4Hht4p,4êZkiW 5ho/eYC0 ")D yɶC/V>+TqJ:r>ۍw7FA&JbJì)')JfeSNro7bqk Ex+WɇrdLo  / d O &r=;^,nOuP%nϕ($yBbB¤rD2&dԧ%RҞ>A}}=L.‡dO\Z*67kT[Kh{?&KUJ|h_PD#ѯ)/0(o+3ĵ7@g(#~ F2sԧPAԽg[aezn~WzHV˻H>nU_cfjoG4o3]@LÀ 1|:V̱fY_V^\z%NQa#RU8q'Azr`$cjD}j50n-uO~+S!6Ί]_PE1 O(XEXXO%ET}65>;@jh1B} IO򽁘P 1>Us k21fpZGHm}7Yu" Ƚlx>o51-#!܈&椮.n_/]~_Y!LnpH3L/! 1B>5!#Zڪ !u<YrF:tBz1Bd; Q Y7/~Џt}AU=6I7_x"0[r= endstream endobj 159 0 obj << /Length 3416 /Filter /FlateDecode >> stream x\KsP吝)` 06ko,8J@@-9ûʯ@4@pDXa8CuhIB)JCvݿ _uӟ_ah 7V?z>Np 'g'&w;*Ͼ*"2e[B!4D4*:4Qޯ1Vo*y~F(RB =٣PblБHHC"¤|~~cu0$M4qsN%sLtIR+^75IVY+VU]~q.dS`)q?% zPd~,@Uk|jW)鐕;enfzrutr`t^mVS@_;ui뼼l&N GρO6]'5t3.h3.K94=q#o/̨,y Vöʊ5^iX2Vᱲj;Uy+ią(:!jQK9D2 -o*&fF oo_7(jy K˼ͫ C4%3<|n:K9~xe~0N$%f/=EW^7JzyZ͵(hyy`/˴M0ėWrU׈YV Š<h`WMZ͠Sκh{>p6brBۚՁt+ؚٚ_( #DٶN\kU׎g*mG%̈^C8(&M"'~O.o=,M4D& aQ/* ~]ú^)6?h#qT]ǝn%l+MyUcXvhw+PQÓ,Rd(JpUjgVgV&sfi̊F(I!~VλYHwU^R?Lk@>5 tv͐߬tri߈]ЁC{<6^CBPN,۶#<)đ STU7 uT~b3 hD#SFղp9;>rX@911G @Ì E!KDk=Y?}`Qn7m]54mC۪y`YՕK^-$4F>`cPǢlMfL/STcȋ@^pYpqv^pTIukT2ѽ4wI%v.a`c>t$dsLybZV@`潽\ WXIW oMo' %ѓN]ؔ,lJ|U b|lJ\Ii$vӋQ}p1{>\"ub;ʩ7a$(K9P^ꐢƎM~͠wsSkgއVrdix}U&-7@cq=ԥ O9t[&sxze<ПE_kݪ郅jjo?F<+`SiG%V,MiRyۯb$Bp dULFڸNfJh;)mn2S&b]ؙ r hcCȂIX+F|N'.& CĪYkkDQV=U-\D c8 r^ xac/25/htG up)ꎥ(N ɸ%ĴDO$Fay{JMkf7{Dz_-.ZI^*RBrTCV3R[e&*5<]b$ ɚ۵0q7.uq3 e~k'=˹2t㊍+&s\4\C(C5&)V )QwkYX#NE>>r<8ۢz9|4!exF&s4440jγrWKNԵ!:[c(j4vfi ֏VFIB^NJǼb(E*!V+3nӥDovnx2.L!؁:ɜqyej"Lg xޘc"5{ZS3z`sÙ~Lqd3~3,B)1Ժ:v>zp8xŋ4;tKpaYθl4cWa\BDlL'*r[t;nfDBd=Tu'++rTEx>Ge Q.8]8hq!}J=I5t# T&s4Ru\0uyMo!GϺ>"~Xg* 'UGt9Y|dsd,^,a$C vje5:㨺+z$Iٗ\A0YЁs{[ai00 k['S=P>cBy o`pfCo,MxixC]CkUk9lY )׎Db .&p/gЁI6N2dI^IAίb:LQF0 :x/1nP-ߙ\Y:܃. ]ЁC{<Za蕩1)E,03`7C! z-fﺂg߮Y:V N8v] hAx]/*؁ }Ձt+ٚ_18cyzd%2ߌo|t.hk .]]]ˮ0ս M5sUtA r(|PdJLe\U6^?:.|HQ]ިGGj'y$۬^̸2=P{#3⺟1zHexg2p5l'И:aRl-| oetJOam%AqT96ua;jkk A9t} X|ưE#W5SΰpLY*'VWfE̫έZ=4HV鈖pzܖa!,Mi(um[ghq_+PsB'싆kwTpRDN\́]ΜslY4K9xej0&¤;g(㴦oac5fJw_}eRFr:- ``xCiXjܢS endstream endobj 9 0 obj << /Type /ObjStm /N 100 /First 832 /Length 2154 /Filter /FlateDecode >> stream xZMϯ1pX$ #ȗ0,: 0b<9J,wkـ!Uկk$M$D(zRIGdZyr)<TCKƉH\jb|ǒH#d`4Q9.($1䶪O-OR rS…!SM5AAC|RҨXp1,q,Q>I+&iSv+!P|%C` VK *RF)8i`)FP:Bɠ@ T0-7N0j*8JrpQ\\]!F̃ک6kaַy:`H -!尓gZDS1ݬ}2dj'CXGD؎D ԅ63B>ٰ0P?Z둦= ޣOlDb*"l}$k}(}(qM=KP%,ol>Y? 5^zzt~/W{=Kw8evۯ>!.q?`Я>*g<\}Ĥo_^k(E:ojFjA󋾁T7-ʝ?=wu=0GCQ>p cfC )<"C )2ȐWN~o}:vaUtgՒMr1”OΟ߿OO'8W0.ك7x Eu4f&ASɄ{E3HhJd+K6M4*fCJ'+\ćUmZ^6X%Wc6E21h8Q&hh"z:aI1θ g2u"w"1#9KNd2-ƒ;]bhx8\w2* }7X(Ad^g3on=?y%`.wϒ e7SHZIZGd,,K2a e`Y>Xcu>Xc]u1Y wƐCJ )1ĐCJRR:!)uHCJRj{2 h*G`;zLP 'Ž|Gv;N1NT"2e3uMceUֲԃa,3 ]6\pT`҄p. j.t1.=eޢ08o(7ˬP _T+ x>k%hwؙ/ܸ3Y"ıp(ǂ17N6ޢd͎+ٷ}Ui9ÓZn-:):!/P6ىEQsu׉Ua:s{bUZfk϶}c$DH;3VE?R5+hh @-sqGͫ$wI4/h&ѼNyDB͖ ͞ ͦ ͮ Ͷ ; 7[JSNy4ޯD8ٔgSMy6ٔgvHh'Īȉk{,s7˼ކ>ؾ_نX+H bs]ӯ.Li=XLY)aFgm2362<{]EuqI bivUmWA!Vu=J.. g |^ׂ9ٵRܨ6bڻk_G 4llղ2/CdҎ rхl;]ex8U}YwVu "Qϴsc Tuu2wɶgExwr0b$bՂR\3o݋UxTxxSc2m^\G6;JU]I> n`Fc5x۶"b/VT o}bo'H0 endstream endobj 223 0 obj << /Length 2662 /Filter /FlateDecode >> stream x[oS[È(})bnHI \3: ×rdSvȍ؝Y: ?Θ. .t]Mqz_o V /bA Mw A9ay{ŏͿ~koI0. (O˅4 .{9\1|Zq^.ׇ//]}}cC}N0"UQSnxJ_t/1~`$t->:R6mk"( /eU;S6Z`vbH>=ɫW&֛}ךg|E%õǺmBǽyg]}jco}COьJN1m `C%FG}z_;;Dԗf_8|soGĦƇ0FI%&^Y `A"I IJn}ew.HynV7OT7ͪo}9u lѣlۑ"U6Sh&*D)KTlEuV|h ZQhA$)hQZN Y%ùzs=(|:>TP_港Y1lG3 ` A=ueDbhe}B/ds:5v&m?>xPD3cNF/+.koM|ti[p$7ﶋ|QFm%4>Of 7n~$T cG(!(GDzP2CbFJ3m9Mx[yfsۃnlZ{SOu;>u9K7 cYa 0#́HR̡>sB尢< 6RNh_9zv)㦾uP{7[aM,KZWc& $' #06AbH>jR/HOS2 ]yc哳1`yOIOԧñ+ŗ/3mai>nf1H%x*D1u/ӈ4!2C/`1=T y\~ێ=YB43kIx݋V| H.HHRL>=oiۿ<]My41a>'DEGa$) FTeIԧ'2"&*1'Wx'DEG >`$) 1WwzuWXU,R<Bը.`2B%$E%SYH"dJ>S9q*tT*A$)*QJKR26Nl*!:Z #IPT*J@)f('e\>~ I!Cc_y> rRIAo_ \tEđ"ITQ `0B4hpDzKJUTy `#DoPR,V|G-ρxDz3TE |>3Yf<1A()QGsH}g&ˣ,`A`()QG%U|f<:ͲyhCI;<|<3Y{ic0.h6 #"ѓ( DG'3Ejb0ѠE2uy"|23Yf< ZD+pa()QDz$BD*{|23Yf<1A()QGNIYD*{|23Yf< J0ScEdf#DcGJGԩQSEG3SJMcrAi, endstream endobj 285 0 obj << /Length 1995 /Filter /FlateDecode >> stream x[sF M/:{ hd2c+!v]IձKh7OL)xL/՛y#0ˍcӣ['B$"+ 9=KHB9Ngã{633VK_ywSMbrQg<: )r<T͋3/7XT\wT2i{V! BFBְ fѮ?F4vԭ{DjɞGYHE6x>V"+H ?N61-d:_7eFr?BA:ޘ_<-7#UiY._xtO/W|E҂%'Y/_eLPoJO #T17oXZ/7DB'caM$(35L}NŋHy]*SRzvݤJ'qINǪnϕc*sl^W"=֛qޱ< "#RD|Tv7t@swcwӘ$u\p]2 ,}v4'_vsS$?EkMLOG.@h4yCy &޸[oxz>,jB~r9Y\8&Scl.@H n Pظ>5V a(wK3_"DtLwuB0)'/jE+H*l6媺@Q 7C mI<.@*[0)@Az])Duc'- ӥx]@''0\ >V7d#( H6ѯO= `oP#{֞C:{DrS;znGZZAp 29P DwGG(dvl*7le [/!s>s>s;I2FI!L˟I`}_vG_Eez '.NRy' 7-ߛ[QZꫪ_7o3+D &43FƼVl{2yzog OO{&2BŏlxN]'Y`;>N-'ZT78MVsM\Ì+qmߢM[<<&q)=&IIH&kdc8~yU:hO Us¥Q &%#_;=}xF42ި]?Di h}y^Q1!7SC;Nr><F<2~jYWS> endstream endobj 171 0 obj << /Type /ObjStm /N 100 /First 905 /Length 2098 /Filter /FlateDecode >> stream xڵZю}_U.UZiYB)@`DFh$sFYම niYwuUCI"b-1Y^ReHKb$'?5Q0Eh@?K1Пx_gM :GՊ(RKiOoHܫwC%V $6QyS;j-x$UYK8`0:/4Uj %\0)|50 K|5:pI`It|R#`0|)0M*PM5#}Zjc聩i^iKh,+عb&XR \`AWK70[Ex("3 _yF8XrC04^1ƘXaQVIi`60C`XV\\4.4騘nIU0 dƃ-16q5\[wmcdX2sR܋1L*˲ .]m0bqNU_}ŒJ{?Z{֐"W,*VWp?ܜgy߇훫`ӫw$wn[MŜ49=xt|~Oc|6 Tml0Yv٣w%=Mǿp.zݻ}n>1|: ~gWo:>y8_}K/4ɫW/`1e.ru6:p'n.|eLGzDxD^[E{V-Ex%זhkmG;hV?࣌lq4r꾏| _,I|J-|(#6!ح$ֲG\6tH5$:FMUͣV&Q~Xc<M+='/|Ȣ8ʇ3[nfoȢ8QIt$[YλI|f?.|3}g +_yIXZMzn|IGYشkpVd_>l1Kʻ ׆ a&%@Al7)7ȠVӒm#9LkK[sGۗJ5ɈhUIk2,MʵB{Yfe}\si6teCW$tsqR$yjԝ d ͍tR#ӊ<5'UBXHT;:v|֐*qۚI 8adn;v%dHw"M_g h+YTe-]jaӺ.U'E9ll7Fc,u;;xYN{ !ԋ?Ro%/ïou 7|zt{w}EOo?o|7tsw{zf}'vû+W~TNg~ը8 endstream endobj 322 0 obj << /Type /ObjStm /N 100 /First 866 /Length 1433 /Filter /FlateDecode >> stream xڝWn8}WEQT]tnv ZmHrvPN>8șÙ3CE "&d2#f#a\b?'xr&",KńLF);x"`cMI%U̔L6bZOs%= aGLY虱8 pŒ% 8q̒{!$!\ėpRbi2,eq$(>#Tb5SNĄH !҉hA&P<@d!'22; (#%&ԉ:1 JNlP/)HB!iON֋)hAQR1Ѥ$iTPR2N]TZ&u&[I()p:\N^]tD*[Zz\V~(5{ٻs΋芺j4~>|8x%.Ѡq 3{,!^lS/_M٦j-b|YT g{}?V~B>/%d+ۘz.rSչܸF 4teWܖ靮sxg-Wc5{[ߒwپhsGe 1gT^ŃaʵnL'w(mS?asqYAsCd~_tKz!.dpu;d?|LUfxv:A I2.]Q7^/:ߙ}ٲz| H:#v]gH{ ^"+jSհAb6-f;6;͛-#~,:nc*߂wi4ȞՑ`Ww+p.؆ 7f7vysۡ 5<_809oU3O$}{z0fu/n5zjJw[><.@Ԓہ]NksvM{\]{m۶ube=ܴ }{%}3zܛ c}xhg2~^Oٽ8rϜv3Zf[^ݢL! y}Ӯ+2FWݧnj!#m[ -)f^-?/y!?褳np:0r ʼn(qQV7>c+-sEPْe*o+vMb:~kfQmWODs*:38ÉEhr+aCNj?}' Xkiqoܝ^== endstream endobj 523 0 obj << /Type /ObjStm /N 100 /First 886 /Length 2264 /Filter /FlateDecode >> stream xY[6} a3ADWJIMS%؂i[;RR-ElYS-}DK.Ty!-"n/Hg>qH@ISB]?!8$, |$u@u}7!av7L $nJH+0!n:$,`2 9wHd\ b<)($XQE!G bE=v,};78.(c A3|?QOBpJ0$P V|39Sr  LQ'&xZ-RHaAH0$jNB$9̨ f b0\Cv ISeN'r. 0HJu =@$_- &USShuZ X:0U̹1p`A@IO(,xFaA{@@ayjD](aA(@(+rcX>'b@ Fn aS+`WÂQ`q F)2QX0 X0U2f"X0RAQ q 0P<5GbOMcb Х6ΎUWu_Yz/OVN] u.떕KwUΪ͜W)r4L4yU~G#jVuk m(v:~YrQS]RVZ뫞S s*-EέX/Md {Z5ۭzi#j.ޖ|Y3SA&Pum}Ӭ5Ti;MTm ~y{Q5[5|}x71=T/Mv #KN7v]4zc.K{q֍c~ƈidg=h8OmyFF{JB_+Q:+xv򥉌0^fAu5J4Ƨ7ZѳN+.=/cb'&5W6nlh'䝾g =*"Z_[WTeM2Nxvi|i׷-lfHQU&O2SQ.u7%AS.xuD`,C!4]>lUch͐\ aXdfz^17:VXCq5ڧc-YQ09PUJ^}(W$2^ʂ.MήQ\we`ʅ>q+qQ [LDщMVku:Om^0޼zƽ f}:-XٰP0$+!3YHh 8v Y/;\L>]O/y@*bU4OYz50b7ti'$l~Ӥ}E\ǽl\Y~lZ!V٬.sJ;_5LjU%mÆI]ul̺cy_֥ϗݬ_bY&Kkv_8o2.d"™gXs}OGߥv&Ͽ7fe7ˣ1p .LK;Ցϊ>gzRj-l*жN6g= aJK}wS"){o-8{SOe0V|lSaq6&, +áJ^J{&{zlBLSN0Bϻl:klj[^EoCo(qzŦXZк'BvwX*ma;7t.G-Kr|UNڡX[@Zw_>|RnyL%K=Qia0G@J,PF'?9*82 \]\TG$}lNE֢5TϺgjƀ dޕhW&w*卆@M+Iv&Ѽ HMωK[acVTUѓQ|-yk^p1zsL,Kr^֧_ Q]ץn=H|W)64۽|`Q0xe>dwҽdg߇,{b;wV4ZJ[(˒1Z8oO m տ/DnN;vH~t|Z k]ՎգA9>*g@i zc|a2SG6df% `wQC)ggHN>[!N/֊͙]N,o/Ia$&uÉ> stream xڵ_kG)<%g̽BiLHJIZZC!lTUW2}A(4s0yc S0"&E GÞck4ieCOiu{qU !ƐAL}uv5_7ݼY˺_5VRwzgݔ **<|2=>wOrfRc`kl]hBr)5q2=^-?_Ӊ`Ǚ/n۾`=s"/Xp7BIulNSWCdPG٣{bq)oUN[jՌ:]_5'M zM`?1O{7rG1> 1U&*ĄLL(LL,p& 1Bfbcq > > > >@ >@ >@ >@ >0S0S0S0S0S0S0S0S0̻wٌBEM3-6'n1ݾצ/'נo.~|JzNj~[;^ƹZ}]v8l C?L~+v endstream endobj 996 0 obj << /Length 1384 /Filter /FlateDecode >> stream xWo8 ~_ܓ,e޲4]}h qn%Jde]MC&)r?6HA̹`]^yF$,?]17Qc~& sS/e|o:]qB Gs} t&a'γ;p䧑;lW4v }?gŐ[, lnQ7pfAcR4 *B) 9{Ɇ!sV0gCciAm(-˵Y=a]We]5^ظJ%MR%+Y29r?%5}F8Ý.7 "xQ (KIq'2Y;-5卢ЍKSba;HSC{,ytzsܙ{U% xh]MG~`TGvٴL8eV%z?qS#dGC(?&^:#xN+iMQm#YHmAQ| -F6 8 L A>x]Vz&6*<`!!'j꣦ҲY noQ@ઋ)-($7\Wgw[|Gw >3`JyH-=;`Si)sg0" v֥ Z"q~C3~qu5Yi3PĽli NQ%U%9"Ez_R(;ĺ=7A bW:dI%Lx6y4pqO[A u IbV&gPk6T؎K}mְŠ%L%}s鐼>=~Gl }F)uo?%gBҞ~KG2N(!Ȟ8T\SfI^ybt%pnXcj\v ƆI# U7AZ[bdKy qC/;4eʓfvi[mj~2ƜrJִXbRs]OI >ǫ73k~%ab9]E]|qH/2܊l2w:}zg-.rL3NI/0p ] =-6,JF 7> stream xڍK0-.SmVS@!Y鷯%$UWPd?@i!X*5*^Wv ictV7J!Xr.7z*R*5'ByۮIsĘٗc7.1 k@Ȁ U1[B;0o` `gYm,JG M#>y*u3sUi[uZ^rΝ9E}Bg;b*q}ξ2g1l6 4#Z./q˼u_DKHe @Au ׏Cq7av̈́CGlhKδNw̕π5azOgwv)sy8&9WW]nO lak/ȥdS? endstream endobj 1003 0 obj << /Length 918 /Filter /FlateDecode >> stream xڍVK6 ϯ6Q_ݢ=z][I:!˻$;i"?R$?4yRIU')O'=y㲝2?d;:nv hQ/8OeyC7*W1 b\*']Q D$9!" _y@,o`^]DJQug[TǁViی赹!Xέp`~_|dٮR"shNioNL;mG Ov.5(2Dq'- B^Az<*2z+߿ju1] !FPLT+i~ʹY:G׶Ӯ{s?e*!p*9*R6X^`i3sZ:sE*sYP@i VExDP2ZНIC('Aے3eЎ><nQ@_'>EjׁhϷ G^XZU2x;KێG@jX 3Ti4 @\zbgq]⑑t}y5-ˀ]W2d5ۦsK8Q%@/zZV0x_E v䜱ze(Cv*~t*YT  b><]hbMgpDz{u;"o7 endstream endobj 1007 0 obj << /Length 1796 /Filter /FlateDecode >> stream xڝko6{"ڬHz4ۀm},4#ӶVY2$yIVGɒà[:{Q|e,"tlgwtK \(Z=zFYf|ڌYֳ;}L3_FQȗ*xW aC׷|)T\j8^ D{& hW HrTEKI4@s$"eB%MѴ):5eЎ4 5nSs{>\9o yPE8|Ax,"1kܔ֧T If(L%`W39PP%`Se2wtP}䔥QOTTcGD|AVE"Ў.U]H3kSћ±5U^+l *]tAil#' ZJ=JROm7EYgs(uYtnfwrt%EE=,^ZN3闂apct :B/ !l9abr*Owl7vjuG6kB\٧v!E6 hǦ2S1yz[RÚIBet6kD%Y) q:RNͱ4W LH d' .*U>I GVUw*z`:qn\gE{Vm 5X@]Q{:nӁƂ⏦*_l9gRɳ _^nR}i>Y40P*l;a=)31-j@YC53 xKu*JϘۨVeQ.Non^:wRt.A_vfWap%#=ҷʼn;ף> o{} =oድ3}k_O>$`ONB/}x۫/hVTS1e)hҚ"l=eBC/lNBZ qTklc#z"hgxUt7JuK.agn>J&0[)d sEZAX0|YuˀzӞY@êA(۶2 dk BkVUggl{ Ķu.ÎsC: O(D[qHx̏n R؅9ɮst8W;G[Tm6> ۠#&E6aLaSSJO.k0lGr+wnu ݏhM^Ry 92 WGWn£{ -@܎H3ɣI * qOSyKMPX :I!ÞF9Q ٨}B,db^6L |_ZMT.SIn ~bDD w!\ d ~5c0>/u89Gܩ(X$gHF2k!(,Ts{Bœޤj"if`ݸ*au#:ƎYW廗xFa]}GoeY|2nznd.o?{ƒʠ'ӧ =4~8 Qd]ǯMYߜ1ȗv,ܱ>ʋ/i۫Z>\f}[^^3!~,. endstream endobj 1010 0 obj << /Length 906 /Filter /FlateDecode >> stream xڥVmo8_*ARK ]Iw/}Zf?]CKwOUSDlgyfƌJGFڔ|rFQEs[c2֤躚֍ϔo\/ C'r(w1W8u Lԉݻɿg&qSk%:Zdid.?^@,5kIX }S8oT- `c%ļ͕YfԊ9[FҾ0BuAb?> SaWt70fgB0Cj6NP?cQjB.rސqK+5ruK!W\ySg<lx<,Yy%_KF[\뻁`Vcy#^%$7 xݐ;nSZ+Z~:br!uXTE3zm?JB/T;4J=OO= l.3CWf1)uc#+Q.\ڸ ގkIi=8*KeD#+m3ZMb@^ՆlF~Lq Pݨ-c}Aw -8NYkZΥ}IurF@ զpzͧ2{Vg^Α@njR-j3Tۨ|sɵ endstream endobj 1014 0 obj << /Length 2505 /Filter /FlateDecode >> stream xڭY[6~ϯ05#Do}(AWccJNA us] 0")cO.hIËV~ ְq=o?XHT.nwcRŧ?ٱj^Wkc*1˪>d-p۽xjy!/`Qix_/ Ywu;581Bjì MuϬ,RI~jN6)l4/2 ?BK-WS΋* M5+LW;&줠L\JBܧ҉vzIls'JXo7ç[)kb(bi}{ev - jtP{ p5,т&Rң+or$ (r_la+D$#8\ƝM-Un_=Ya\ćZ> )eV{& \ex"K*Q.y0>:rjL@gF!$, iP` QM7lxo=d  %]t 0%JZD9-ۜR)|HɷH(ӎ }P+ &ʚ)rmVs x`z;_ѼR 'ojFZH== ;)xʮ.,T+!M2r{$i00^!{W,H)M Df"9r6nhFZK3G#P[A =|+!!M 1>/Tb}ctҫoW%_@ES49 :b@uW4cX8Pq#"&6-܁1c,ID sEr*a=Ky<U0Q;`sc\Het+_NM˳xd P 'Aa}7V@e&C>m N4L^LB 7{ iJ aB\UNp)hCeah'ĥshe΅fv/%ԟyǜ4ݶׄ 93dD;tDD~ endstream endobj 1025 0 obj << /Length 2585 /Filter /FlateDecode >> stream xڭY{oߟB@ahr(:uEDE $JtyE|kR€oٙ͌UU^%Qd&*BZmx_^)vBWo[{ 3uu]ywOkQmW[cuj6M{{\ty`QG:77}A %GʧSUlX%Wqjwe]T`we?$y@URO[SrD_qkmIlY,\ tfV8DoNkluX{۪رl=vod6aK j! ;ӉQ`%A8q8IW;@5.:x 5d?Wl[r^M  f3uC d8k|:F˪aќJMz)+# =/rQ:&[ KӹaM`0׫Ρ͎pP =H>"S<̳"?4cOnxӵmvʎw.ϭB2͛典i ꘒ0 x>}ÇB'ʼ.$2qPfóL~:dJs @lL0VKDaf їLWްNy9H6@1JNGi2ǻm,C."][4C06GaׅŠʈB8Ce !Fyr/K\N 1RzY-;'H{ p dB 2 qJ=0$ aƁsC4\m"; nosiȮ{lQ{ZwOm@jOHC{Ͻ$$OEϛ@>=b@ [PAq!**2/Vv(pPOж Y$y%z H=dR0ZzaOzd59'n >4t&1 KVP9to8m9&,I @ fD:ռYYv{o|!i<FC Z3j uWvϱFV6$^W0 D6 =q[yr6c fԵU̓1 3wSy#o4>f9p@03kjɏ8қc3-Ny3/C~\s'@BO1B Axbܫ[g9ͣ[ H(3z9b9q˓? YIV}.6 !qrW!=\;ˀ J?|myT5Ő-}b0D#vz/ endstream endobj 1028 0 obj << /Length 363 /Filter /FlateDecode >> stream xڕR]O0}We ,iK)+jL&n~LLLԘ G`a,1Y-!(fzz{Qgx@ʠE5! W<ƼވsxLVAL>Yg20c'vn,Idy]>Rx4-h3^[cT qc9gnuArC9·ܼ1^a%BIUV>a`xyjxH"+TIdZTGeR;aIޖIܚoO=r#g2Ros<+>_2N"]#u쏅o[A>l.o|? endstream endobj 1034 0 obj << /Length 2083 /Filter /FlateDecode >> stream xڭY[o8~0b{67]nYtL@1i8L-\;)<%Y(Ry9NbrNbMW'n^Q\Bߗ؏Ivr5{TRss> =!9f7> Y<0HTf`Q)V Bp'@8]n]Rr_Ie:I7 ?/2DŽ OO1Ge={=bYe!`I\]iW\_Oɀ{*2!(m.T>KԢ)RBf'dd[$=.H ̉D=lշ ]ewn"ەBcMDQgB=,M8[33IBV+pz\_YSLբ~H(3QѨ@pC #joC֜,zSqw${x"𠁘1.[$񙬖X7$~sO&]2)P4-*juZ]:LJE"->TY~< ! Ε$A7-wFL_nVUh+E:I'iDDZ:=rfVYJWLU+*ӛz"vWڸo9?;BnlFŐhG2϶Ӭsǀy!9[ox. k7vUmTM)%~?+hÃrϾ1 ef< UHL><*AlYo0l E3znnM0!/3P/rZY'Ht8 glf[9|+J$Ivx8%G]7fݼYdTφЇ|BHS>ͰA1Q½A©&1zmEQ \1,Op?~":ʥ*+WSX&dSa|m 0]ogr܆1-b6 '٧ܹlK<$<πm| w =gWaNZ{0eVBG(  τ5Uk}63];Jo:)u*)tJ_WRQ0o4)3]krrI &Jz^@O=B:i\4'Cw}QhOQQBE.>Kv1ɜeBmd",-Uчv7% ?Ĭ(su΀UE~ ҍﲋ%ܠgrnx4>'Abu}|]uc6(~4sH^/I,C{K!b3`sŐVYh|MtvKsd z|Ra mLj9͹^6x5 k]rC7yK  `[;6QX(lb07U-*/Mk!h82F?VܡFP5LJ/weo?`;xYܢ4M]* )`-EY/sj{g@ޘzn"YWFN|.fPe^@BBP@`nQo%7*׮4UgW>_\'խeV ,Ǎsݺk+X+ħcotHiD;-s;> stream xڥYQo~_ab.)-nE[t!Ci*+3JRbcQpf8~ߐ3?1L' e6[>㾷yQ_~'޽Lp\CUw}acmID\J:"Bq<~뭩8>-|/!5Kgi&H$4rP.a<^`)㬓̋QXՍued"pm5Պd7Ek,m[s{-0RF>TQւ]UZ!bi\]M&悽!#f1Mp\Xz5$hj̲anhаy ;K' sbRN벬Q3LRD+A}lʒ_bYnbp3WO뺆u"g0- LQ:{-ŭY&|Jͽ~Ã~U, [F*`ܨϰLJiz]S!T*=( L{6 #$ՓzeW.hCG0:bz+'oSzMǸ4x Zzד{9wS3=Բ37ۈ#Sf4g4! Dxbx~Ad #u،Q'HYS. E:$̅l\$S <)mқ0jY,\9j[[CrT*r&SPrB \ ⩝+&ٵ'a׻5CC*3KYĥv S5"c.cN>|ylQ\atNhdnU2," 'j)WJ@c[=+8|*ѻ@[ yN 󴓇$[ֆO?veZtr ]_ƗJ,V<FTCTQzZG}k펪lU;X,.YzSdAxjVe2,Ab{Z|U uls /u=.Uc6R^ZO!"Pho>dZɉ Ĕ3q΍P7Zp* `ǘbkW0nSHq ^7t7;$죞SYWֳ&Ҭo=گFVAmwMEpZxIt%hS :Hw!8=> GO]kWH'*>_;DÖ' k݉_䯫~Xtv,e\^%L$n~^`&ߵ?FBW&[:jK'? "UL QW$b/7CFrXBm\^>'*@β<@_1-Svm$2xV%~s.[H,<>Y{z#ӌq-gӹb偻eq֧?(95sr-20FaV@ N~!ٚGK\bgq*XusI#s8U= @baxgtz琭t<鳕'HŞ=Q94/8w%"O8P` ,z!! :dn͂YM`鈣"$G5M+E\KS~J#LlM_'Y}D=}~Ƅ\tPŃ= \o({jxr53V3;ZM)C5ZRB˄@1:H# Z[*F(w@ƹ"5) Ο_U~wNc"ـȌb1n}]% NJJ7.~b~%tQ_;M)yE_ m|FwBHÝE%l-J",=R@mFNTi*ߜfL3uЩ>'7)88\FtAD8xĻ4ps@t"?5܋kSpweTj-2h%Nvo.\\Ͷ9fTҭ0P nz8[=J*:ۡmY, %x91 ɎU3. @pC!W{" XnjgBTcsƶlKc88Cɜ%2e\.Vel?jBa*ɔh8e,ËJuɘ^pW\Z2v#֩'+8=? 1pT'X9n0) ß-wͱf CM< ٹ*n\|LN:ɆGޒf!g1~9'{ҝq~3Z8>GKw{5`ú%oc]" #' endstream endobj 1044 0 obj << /Length 2534 /Filter /FlateDecode >> stream xڕYݏ6_o b%_"@hKq݇Iښl~8S6xn![odl^dial/~%_)|^4!8bh'|vsf80%r-j(ي"̅g5 3MjxR4,k_<S-WmyزM # 8kU9 0`E(Zs}㻷oެ&Gr,j#&A3 V^ 9(dDO”Ve7T4ao.D3YwakdjN28_Z1`*Zz"K6A4[SWWOtZHj1myMCDFᤕ1hyӲ!Zc r-4nbYˆN gN48*f)lUSƦ GoF(V]4#pcW Nxm礲I,!հupI $7晟ӪӱPe#P_h|O*=[bG֡ DJ qUޔRzp'#4+r*T06qPCoTH Lin9j^e+ȡ Rm@]NwGzu`ŝ$ Jѭ5 MX?; + ]wpd9c٠ك9h7+XAb6T {BBxDDz:7GSVs 9j f+rA\{kKi6IY:UKA0sr:_$ yQq|EcO^^Q]LKTĵ&0O 4϶Cc Aaudg^0  ),⭨6qDW7n5y g]rl\ĸ'NҲ+GD"m`.|12"9јΑ:WC\̝p]vop8L3ZQ m4Y^`D~'Úuʋ?ip4Қ]UQ c|ɜվ5}%:Ӟ $:7QyG].Qu3Eal&_Dʳ+sM^GdŎtR!Y <7K1FQJYhA6A,W,NU+襮12yѪ?k^*6>+S*D6^#݆؀ %N<^̔;o~n+MաsM: 邃sHf\1bzp$ [e )yS}}EGՒz6G`,C b\e?k[P5²XXA'4HG4u@qyiQP\`%?~׷ ?vI1ĀED~5×b]R@flxTU |qЧh8}|PX3k!B&^QmxT؛9TsRUO# %*j2WiPM5Mm4PH 1F?qV厥)8~ -Vg  uԁn2ژ YXMIZ޻!/ endstream endobj 1048 0 obj << /Length 3274 /Filter /FlateDecode >> stream xk!(`]U4zAh9 Es2Jk=|gkN:h gCrHɑpHď/#/d &3_=E\(ND]\m6oo˕yVrӥ[x\$ KW{U['3#b .ط3mSkqx[ 1JHt+nXM¡T7*/l6 2 &i˦hS,r\*LnjvPOP:vzYzn@ف?O{QݞpʋJy xN `эwV_]nI,6<=(x- Of!O H`ڦ-bLJdžyQ 0)qF0zI` GޡC3z@#!aDž@Z9P!xe[!puE;lAl F@gk_{+[\9,h6+, $/S c0p;^/#=7cTkd}^uS9uIad+W5dlC݄c5'Ҵmj46g'C=Ա`{>ON ` dRlTV'={)2k%FKゕc=+0m6ly]>hȖVuI!gY~`jdDX/>W,s zVwY=4n~} !+c_$ vwBO.x"67(zoOP@? \_|5}hZu1wy;j}Y\m*fCWdu94L6Xӿ3j$nyg2hjbWɉ-/+04yxLvqR {4GsX(bJPgJx~=TSfTIz%mY./2%-őTpk.hjԼT;&!!yzϵ7šx@(k廊=;b\EIqW=1vHΟQH?j%@jta@{tI )3s̚Ez#ۛgF8`޿5333QuWL.E! .@|ҕy5\KCty!K ];Jhxp/ٶTism6Ώ KL9l-AO ]4V1(y4x^Ub'N)+C*NTF;J&Bid2LdL][||?c&H{e$x.cKGC:K>?9MX tk]IA<-gK^%K%]JJ#‘*7P}7kJNs>>6& ,;0hҶ,>DGBz [r͂|-lI8'`Tl}֤ Yv-![[)Se\jph<%7̼0DJ\Nڻwx|VǷ=/a+͏\rڇPІsXwZp6/>{!};[Ӆ"yG2K0\ہ\'[lQ5R.g<iQ[mk#抏0GHؙ^<L,ӑ0G7^:a?jn'<"B8I$anl򖓑'l/v@QlNrh1_}ݏ/z%:6ҎZ#A*ΦV4}-\v썜|KNVyK~d_СoTLK2L|ZdGޒ!?S= x)o V0` _?agWW &nLM⩃6MƷGg)YcN_0ɧ8V#j3_R t-Y=tqLBX~!t:?ϔ|)O\ endstream endobj 1055 0 obj << /Length 915 /Filter /FlateDecode >> stream xڭV[6 ~?fKQha[O8J"Աi6?~E{qϥ ("?~$#,ʥeZD RϏ7( "hJ֛S^{" IS"=ț.!̳22ny',ʊrך2n" g~o_blPsaqڄ]v ʶ;vMeu$Gע֠[ޠPU|iR9r<{tR.hQ2+* Zk߶6y|M㝗vx Bp[TkyKˊӜ Y۶]ibwoX[PZ,ѭ~?$<@ u}8 I W p8; m_K \#p-PYrVOi9%vuNu?%TTr|bP4BMR_kScy*.uXlY,rp^Pg[g*|^ˏWϽ@ffc:(p0 ah<\[dINy!.{C0V:A LhҘsm ^̳ X`+̇=՛s")sgz|+e;B|eA%})JO ;Őx}5Dx1NfJQDJ4+0; aa%#p=00?ƧwClgtw-W5 5aOxzm%+eF~w{߽\=Y;L=ZczW&S={ج1Wfo q؆/3ZϪ~@~̼=#X;F-}:r_Ƣh endstream endobj 1063 0 obj << /Length 3544 /Filter /FlateDecode >> stream xڕZ۸b"8KOz-Pijm[2$"EkY IjDP&?uSe71ie˛UF 7WJ@(vFeiU]<ջ͇䧇45fkI6[k]~3N 6ltިdȏR?4Ve7՟ƜW)l-VҦXBٺ\'lUo& 'C9/qmq .beU¯MUYV}5C=q|]GbN;2pހ@3?"|ymFyOC,Sû~G4es7P&UN.="I;Mr'ЃnL7\Ln/~h5=ԝLP^Fʫꋲ؏ږ n?3 u{Y;\x·f|mT:- g`Fƙ xtI|/pwT㏭F-9A[T@ksHR]ٕɃY8 np/ܑl/܊#oVjW`Rz|_f 3<-ȬWhP\J ; C$4q !;ֻ$i4Q!ǦYF}[@.ˁ*ȟ:x)Mr$m4 Y.5_JlJ/ޒ(Ǐo%{;-  D8[_@2zp40jgDX1ٌ=w8>Ӻ WdK~(@zkK.QK;rz`°u9(eTSe7w0+'VU}/uD͓NbCoS\x'{j'# hvdZR(v x`ό(O$  A VG p8y$i8L~|ͪ/˭m#3RQ^^iˀWH<[όsTza#I;ul ܟbȃMN-|$α%%XR쥎cDi(…"\BnԮikDg]ZB aAXy5;!ܘ2߳yUb{X[YԺ/yQO돀3h8YqN|dpQ0چe֮5W[w#j -A4='hQ)MaM-O)U p3rz-Б >pi0c!|;a1YU<^=)] и Ֆh<5D1>`b P ^dP Fo V|rݗ#4Kڻm }?6\ny_`}9ip)^eϘK葓#?|iǩ$ ~=6rPvsVM9WH*5CP/e?r@W=2Hjwp\@ k36^$]d[쇏?^]y+K3 g!꜔=x;=^@NR^r>ɛp[_3bnkk_v(ϋ>+eȣx&6jw:|okV.V53+xxz7 u`Y]7ԷE`E0zɻCj+j@m[)' srC*h!:Uo*]BUFh ?d Q\!"-xpۙEiOWW PE22k%!oZj.\3LvE7PUR32X2Yr@li@˟"p17gY@.Uqx/ąWM`k_CD,Ǧ5{ο}R w,Ň>T%k[Ja**`@9q-O߂u+٧*D9[AZ> H9Z 6ZM=_vx{l̒Α/o& 95' JXwTYԭL\*3O~&|"@v770"Z|lHt8Km.O ЛtUs{WˉfKK?e Da-yšR]f-^u-nHǭFA`t]s{LQ9y7lɑsHӏT  f>l9WmLpp4Oor<shA^gh7_P}Aٹ<O몚y;ZTw6`E>#_ jH3 yM-Y*O_|*῱0˞-1S^BZr1iCH- endstream endobj 925 0 obj << /Type /ObjStm /N 100 /First 906 /Length 1818 /Filter /FlateDecode >> stream xYKsW佀nV)*;q,@#ybֿ߯1^i%{ݜ2*b#+gdy,)O(y<ɔg{|vx:FٳHe=@gcΤB\*dyF' U1Bp*3ʁU-9#RI.7mޜLaH䔵֏rb R 1ee18 0%gR,3Y0x#"FVَrFa!A al(EVBjq#*/FMPS 0"q^4##_$aQDWFH(}I I@wW  ESDvd D06+&8b #D<2 FT6 Zq >x'C\' & ޜ؅A{P0aMD)gHc vLLz >s1NpL8x~r ‹( :I@8\bp68zWFgU'vLeimڟg4=NE}B'!g,ͅ<Ϸ_ԋ}O꧟F?qx~yYg5ݚoо|Nު|6|톜k^_t2WbN Q%Wʞ|/讫*\^|c zA AeU%n/kn6fs/g ]C ]검4}X9- X nd67w$ߦ鯓|:߼&hҕ^AYw)i l_ fP$bU1veλ]h-PRxYzSɋ`cvGтy3: ) ?茚/?>)1i#J(m3=:ke l% m|@%sOgy?hYG8X7:tF;Y~ꊜ 4U箻a<@;ƗmoXO7'=aCN18? a([B? ^YW̆[v}8z-=׷AfRU 8;ݱv-D7t; /MSz‡S QJXGI ;Jѕgdu.-g znfQ0eގ{DE-bl%il%$cmA=7(H\@f:p[noGh^##:bd=biLڣ4kox>*aǍ€ OV[M8yЀ㦽tvȷS9p+pELP^N~)t:0D^u7ivs'} F[j>무_KNS'ݤV@ zE"@`o@fN{Dg~nM/;@Z0Y1$2tq=*{0И{@~5u ͌MC.;Yۘv݋=K{;RdQ=NF˷#Y r I2LtV> 򙊵|$R)P\h}.9uyq endstream endobj 1071 0 obj << /Length 2985 /Filter /FlateDecode >> stream xڕko6{~\U%Qiw- pk J I߼H=">p82( T_Tg7!Hln5M`_݊$~FVy`4Aȶ 9C(,xgj|ʰD2u9MomĎm,~$wAwRΝbq02aMG'I>CR{B5  3 (S9M79K8̴?9cbcѨ8 ~'#/V0\IlTɼ΂au4ssllG}M)?ObaVzX=0aN9:=%<_c)vQ( uNA=pui9:^?&Άaoy{T"B4 sf*0> $:xa|C6GY ŦfY6"Хx:P'K 5%jI.Mh)a ŶŖ~y|oJeVRQ/ד.Ƣrfs2 REr {R" tQ:夑b#y }"@Q~>~+0µ{da6y>[|Dph](J-qY. Ӆ!4.E=(5|Ms9-FvCRzMUV0ꬨ~oglJ̕hosY *(36m`<\2ei)g+F۩Ң> /X` ]ޖ;W`JʳxudFi4+nMsGS gO'*LsR0qMp]eM~VP!Z|<#Ȱ(42D ѝ4dAѥxx^.[sފ'ĕx FƝ_luZ}ayI HZ^"J0L>ok )+|e:,/=| ȶL*%L ޯ+9X,r0/嫃#JZK#rFzHy1.P\fp˚#GଔA\yE ^ -s;<൲,S|"TS]w"*ta0r!mʼ?f6ږcKn?:xW?Baa2V/RP 0ng:G]uσwF-Vwejm *`MI>ҞrBM`\%Gָ=Y|0 X %#.8`# #>%Q2^ײK,tuFp4vfcdkCMp C4$nyJ0)fa7"D,][' eSS!j6Wq{hFp M 5k7R "vaT])ٝt|S@}n0}6`0N';ծ})ŝn/Ry ;H/+ՌjO tiH-eV @jُ h+@N:ȥxnWp>K*(޾zLR@ W&Q ##z>3 O#˒AZ{˝9#n0n4XtDibxzHSU xOtq"rsrZ<k_f109phU__O~&MLXnס5(HB xn}#.X}, T MY C͜kàt*LIt:Uъ!?!x.h vda% gߝ>~͗7'z/1{P@<˫AD( ;ӄ jn~gBaޣ5$՗B1^őT8DxV<_ZZ4@$uv%t΅,p020Z n !p :Vk#g. +rק/YMhBWbE*Q;li(Q "H8;ژD˸CDr].꼯8({VR}։֬ |Ϝ09A?M* endstream endobj 1075 0 obj << /Length 2676 /Filter /FlateDecode >> stream xڥYێ}We1ڢ 5  $ I8RkĘ"^uVc,Z%HWȴ6+z/?ݽxN,n?]nzSs?7Bۮ#Ȁǻ_6q|D8[TXȐjR2.H0YuAVda_YBnU;q uC x.CQ,f#JVFUUýRUcpD"+0Z; sElIK6OYpL2B ڶyUckU7Ǽ,m֕k+HnuH&] Uޤ, ڗ]G/qaDP g!7.o4 'QT:\"&]Q=' ^*7k#0X,]Fp|Ni9h 33>g#" iRTƒwTA]ɏR1P]=ڰоvc@HVTj ri eowo`W`>EYRcStݒ$_~I'h ͩ~ma)TAjщBTpxw L.'O 0/CM2Rk{[͂}7Ǝ&nBl B ַuZ EʨI\PPAaO`s' aC6UzҐmVUTWipʛe J`bYZ=Xo4 O0籥~ o4>~R bxO#h#+ O"ܔvqd>J[e4]U9Ī66rXy,hkG^i:  '!R )\gYp9n&,*  X]AD'3Ӈ5=7:O jJBPØuq] R$_D@^ ܈bHe[4)qIDXRBQ gLɻ,)|X@aNko,>`ylry ..n3/ueHXD՝a]el'CƋ,R';O] {߽##? (¬Y |z5\p@ǃwY Jp3asPH]Q%@% Ĕ8!8ib0t!\=ìk78]N4|F svnp-cj08oJ*6Y؟J5c}y:d8bH5#[HbXX-Pk|WA~-CE)6u,\\TgXl6fU>DZ bSBS C1.L004!fbtE=Us  )Ez)TB731[:[Smᜩ+6S'׹N~l5CM:|u:L]@i窖, >jF,bE{6r 0Jes'؏RaHO7ZeCc΀D`~GL 5R΅ dSwObX0aj]\˞ܓl9CEn/J endstream endobj 1080 0 obj << /Length 2026 /Filter /FlateDecode >> stream xڽXm6_1-'+ݠ 倶@) PG3cv\~H{lǓ}9,vDQ/(i6ľ/ d'rÆ~zx ox%E*SOm9Lu}wonYWe LQHp*ESTD,MBNy))ׯKay׏DWEB>-C͡?r%NGjOF9]{ՑԷυie(_)"-xC^$%}kL:yor90˺^5yy*j6۴.KCP!ŇbFt]থ眷I߀[rc Ab-k͟=8n@s`d:*hӮ\3):ԏzڍxFs+c>S]NyK틎Zͭ)wdI_Z-"JgRuh9%n턡@I{7S9 mn9厈 ;!uY쨗"*ؕ&3dHګyޣh3 8*`wotP"7alMH*."v(P6F <8[f+u |쮨D<b1q[{~qQc?u9abO-(Ǟ p"!.ǩԎ'NcpySfE",]"2pj=p4 镙_k" _ xFLٻ@13L݂.|b&= nl56?%?DnpX.i@΃K 4=ϔv"< 꺳*xƘkKhߏNK#L5$WC"&m7K)z,sfda _y@<.&zK#+JƳ(dl^i*quYFyw$*'䇣TCH)| md$v]?W1fu6;HA c \$!oĺxtJcvM?lEu13MTCfa>Ar!I RW|O%#Z5NǙmrQ$_,q2m8Lq 'Vt3'Q(9?Q6-Pj0S߱c! E?MW-Tl;Y.5fA"| x0&((!B ~ Ĝ3L1w'|=YY|Bbj;  @`y*Cl@D2v'WΰtKŅroM|*xMQӷDaYB]:@Lga)dɈ}#PQdDVVw9ݔ)nYh gX"U:jRޥzj;IǃR;ċ+.?HXJ.ˆˆRpyM `ĚVX$\$"+oDaxutbSK# &+jtƒp~RӵϾƏRrz{>s[k8[ _60һZ 5Z71/rO=cVbRO~7ϸ+#Ee.0[5Wd%^{sNM9/lZs(˃^l/D x endstream endobj 1087 0 obj << /Length 1300 /Filter /FlateDecode >> stream xڕWKo6WXD4)R6ȡ.$E8AK\[VZQwQwȡdIQ{ 53,('pNHlB-p srEyI%󶻩m]ܩCM9ӟ6su$Yv4zd$v)F1 #ũ ml]˗!Lq"rh&S<*mwq3+)c Ktkʹ,ΉiAQUQ9S~Ƀ3=X11քDWhDRi\Wwpfrߨj@#߾r=njD'dA '"N<P-Q#=JuSp>(Xy}fO0D.1+*kAfV;F0= ױ2\EEb endstream endobj 1096 0 obj << /Length 3585 /Filter /FlateDecode >> stream xڝZoB@ц*t w$ĵQ82 R'W>lEk8)V`X汧."."07b{xQkww>S2n7<[f& H MRض ֆj =j6TM#I$Lu;=<U?EI(r7Z*pƨ<̒bP%ނdـ&xۺp" ZdWl+ ˳hd?IL1~dg,qABk:WkÐx_tU;\TM5Tm# t!X A.e'ݸgشI0b9[#4xyhǎk%Ikfa? 0WdžǮځ$bD#2>Tu-"qK  6\14Ln2pc?p)r(J {&lۚ@; q߉>O%W6<- [+'ω[- ݈ۗ<'vzב-Ԣ-gMZ;@q#1ѹ4RG%0`ߚ‚<< - 5{kKFPAl:9-qztJ#Pڃkh$[Q~+:dP .?uhfԿ~CnξC1Lt'V֜f;\bqغFT&ƛש/z% ~cPfk3)pDf8@g@Iukx |؀A-3c'f.YwSFq'& (ܔM6C5]U%0uYhSK& '@fIf KHAg$d@C "dER:&g7OE5ژ#١c{Z2nR`݇rYB@>+Cc>?elg0G,ءC) %OHFzPpWsX(9 5T^Oy$s|cT*o ]հky\Ni 7eͣ\%.j%81؆У $z`B~B/0:Uv8F:% g^c+^B2"ܻ06!5e/mc\qdq%lud-D3zr)?pl5'r\N"L{ଅau[2hSo%Sf(o|(p>>îRn0g:+7mR|'cL^ q)xu%ןzj֧h>?h:(W"_{n }֞}f0ʂC(]UݍJ爠U)̇R]h+mɝ-620iZ'2+-_ ׆LW׭&=Uq=pHJ3h拞+V !}/dApޑmb1:5KrHn5Ӭ8@p&Isـo.^)JDf[L-@zyjb~plSh 5uTbrCtF^O4I܉, #Pf}MXaZDBƝ$c3.o̓dvGahdCH^;1Yu176uD/"e[> QMS6:)+fk* H~&9O` ”z~ݫW/9D=vQ_qf\I 7 悳ȠnY*y dwp85?S+ ]=*[ɂGed,9Yb#"RږMϳj~j޵.+C`e9 i&H6ew!?iC&~s}shg9p:TYd1t7<|Z*b~=,ͪqP.nf1sEO%4\ɵ?S~r`$s2Zj; @_~ EP9LU yu20> "5 aC>񝦷)r慉 [/+*I~{39s#=-neFbN:ό-ZLt{$%yB$+dD`tPVè?V?Hh`Ӹ8QfCU3++tdS.@;2ԪIk!xUv~ /@47fڀAAPi6I32|jv H 7i c; )_8l . zbBXs5%0VD~Fl&T~m&aS[&*BS*Odh R4-~;PP|~*? $VY^}\IA(|ѻi)_iWAlf5Sv&ϯ> stream xڕXmo6_a`(7HV]-." :flrS%GADt|x/G ~|Q"et4[1;[/FoGɍApܑ|9=,FhzU5.W|x, c`4.u7zNËY^(,$W<j H(08U!ΎE,:` ,u>Ƿ4jz6fUiď zPݛ7NDPVs{ջB3fg6 Dr^40(=Ó 3ӥ<7v5xౌA\ ;pf>#au,pPx ZQ48",0ԕM6(NrEKɪ=D7i[+tB쟥F,vpX_.p3]|FLu9C`Y5-:$cQCo_[Vd&B CID +6"U2 E"m58k,Ȭ*,V6CNp4z>>1^$vuypqˀ7Ҳ(ʂ {EY)֧mQf[[Jxp %6oB-h{C$LOC¹1۵m"!(םbf.+c'ҽvCF 8crC mXnItNgiҒ r7K̘&0KR+<4[\$qko; 7V4q_">cArx(]z> i0'VѳhƳ|ҵ-~O_ ul<k=Anqh!Zt EGs"> v6$<:w cE FT7&Frilm# 6Qpj̞'}1fI$Z趤%wCAK@$ЈV+tK{q5 -NaƲ5ֳj'IY{(D˂‰kF'eppMJ Զe],M ͽLDլ۠cz9m}3F(Кl#ӾVE  AB 2kW7iۓ&?e{Hm5uyl/QvƓLpt!9wvJkIg㈚mwpʗC&'\@,:eލ]$+'^!7GD!ݟ^&="Mw.TC'^K;:2j"{bKC @c*>\yUH&$J>Ҽ^**c}7g60.9 Q> stream xڽk!(ZsaE)-Q[THw3;|xQ>pv5J^Wix+%R\BmvWuKX|z{cd(0W}vfTJ2v?uY]QWb8 H.~]ݪDW+QLMJ2\,zb3 (EA$iyDQ,԰ڭ:6"J&Fu>|*u ֞,x׺+>/ vkNeފM= tb)BucYhqވTB?RPݞI(JvzV@~Ս?, +O`1Ҍl ty1yEPgTΪʙ ;U[E4T$dk6 c%6" ]UvA pܑR m#_$*ٛp,s7PDhEP_׿_yڿ#|N<8넉@5ToB38 M񼔡`Cp8À<-l/-( /$9gtDC8Z Qb٨ (7(B%n?ܮn?eG^b^H6%+ .#WYwq*KT%! qX':ZuKzt3TD@sL {v/p xᬏY+LC ep$>R'FeQ,j 0QvB-JB6^_7t\} Oe ;&$t혐-}1`Irw5r/X%V}; Ğ¢Z191"y #k1ƊS4̔[* }t9X}.^qO 疰,dt*&/ؗ_Z1"' Q=/o߽0)H^ޙs$?p J:sr~|*R*f]Χ}:5= zfd*6F?ObU^e]*Fu O=5 Ac3vC%>FgU@!ުGcjW>Y`M]'7ޓ>H~r/5'43H 8`8:iNy"h/֠ڥx7=2O #Iym !MlM[[rjGeY~ X}klɦGMdog09)?\}_pA0$Yc0ɒBM1J[!77.,Ud_b"sڿgIdF59:]XT7h@ Ur(B.㝇N-/ v$?O xd85DR%Csr)c@\{7"o9ƤQtܼvcֽ`2pHJ}Xȡd^nnQ}{UҐ5bVQViHBҫ"> stream xڕXmo6_at"o1'R[X0tÚom)6 T[xGY C<{y~,gi\g(tvF^I[by~}8Pa.gQ׫bSYQ2|>_holZ]4eSw0 7VDίH(C zdZHT]iP7v.C)fYRC}Kcw` I(DNߟ1Hb%E"ϴ-rnLG85_KEz;ib!BFBt7Sqqo b{W1ӲU+Ά8sQ4ݷ~>eX4D!iPOdrSL(ջw'S'h >a,"!u.̤Pq2q1RqΥ{]j<mW4-4a݁Q\Tۡ@l M9ʕ9n. iu2b`יmZd!&'>c3w 4XÌ|0^C'Z1e},3Aթy4y,J_'Z rUw.EҾH!# ؤ6|(,2zUW"pK~SA uH~p( ` ~ȆSS8EvRH*TO"0MUFy&Dmܸ< Tuڲ&"ckcj0: yl<ݙJPQ,&gx27EMuE~(i7y~ϰ)?4R$sbvvS; ! fC .(k 5U娪]g[ڣL:/ c\50-xkBje})Ӣ]K4dSե)_ |;Ź`҇(G-c%)hMYU8d{ZK 'Omw-ɲn\.$ۚ%3,ݴGJh~>ru)O bcDtY'x}8±?}G.k0`;\)'w|ZFxeN-5Y%0.v-8)JE[^+RФe*E\k'J弿 sz-=$,XWMaܬOdD~ Na^@EwkL iz7IuAr![S+JsJsvogO6Sۏekp*?4IE'^~ endstream endobj 1115 0 obj << /Length 1123 /Filter /FlateDecode >> stream xڵVmo6_!,;wMW` ŐYA۴M@ QM1`0`ywϽHpSLj}ߞ]9jDrZ-04\Ǟ:SטPho^bdoΛd<[ )Y^;ny? J0j{%9@74aYӜ=N*2~KdFh^lXo!AkV8h,ŀ?RZY[bv|)_Lk#;FʎM}:|@wKQB^df=:j %Wm<*kH_^>׫/pVAI'>&sq=%Dc8':7P1`0rI#;p%і~X ^[(R,,˰pq؊K-4Rc.VTUIy@{b,ݎg#6$cXنVПA7[8To>TEGdJwPC׎gJ+y/ϔ"pvV )~q tLu 4]KjjwUE> stream xڝWmO8ίX!d8q6Iġtדp5llu`Uߌ^6! -y3Fy8J8y6-wBCU7#|x,oӝI2ba9MEMst!VZDZWcD;yj~aE||1}t7NFlI4d<`1'Q%Oȏ&A2ZeV/ү }8D@`D'zQT74 Wc f+uޣbcj#.NivG 8ʢU<~Ѯ5ooޝ&] (̈;Otw qv^Be!N2o=2naso&*Ğ$k&*%+ܣi!/4k im-{m5ooe ct, K9ӧK0xkӓ!c#,uBbn#Ej+ROދ4f3 B ,oghZZ[4ĬcD1b9;B A[m9'Eh)섀I2IDAIT5  >`zcmGͼ"s AA=1虾R*IECҍ,VCz /E[z.t$ x6qv( Φ( & ]4>A?|̓ݛC ,B~l ܍s[U7Ks%E= 71 JykTh$  @VMnK7+1|wueC$w#+FKFy5``FӐ11T3!4(VK8CƝnN#yD5[6/ ` =l)uYɈgQᚱ6 !8{yt]~K@OWc+4O/ JHImXӝ~[_f,Ƈ,0s-?c=m>^ %J~ft}fT x|`mQA^_cV@ TWsFc*H h5X =Cȧ~Mʣ͹)` z&/ m+ǹ(0uE$̩' pAir0 uLK"4k+!74~jPAO$Rϗ dV+ٜps,4fV W?[_S5eNi#P#kP>o.Ozqz1؎>x6bVUCoQ` }k̒ntKDil7Gt1,Lg6fw4uyDWo_eIy]N߱պvlzvG6ýお+[Um]>FtEZ&^IjRi@-N}WB5R o<򜙶os9rT:7V]B%]N+ÏAKИlq}ya=zu=, ~pViK=褷u1G}F:k-ﭠCw%ݱ U?4 endstream endobj 1128 0 obj << /Length 1191 /Filter /FlateDecode >> stream xڍWQs6~ϯ`b" 0pfuڗ4yK+"0'ٞ .$N&Z~REZ1Bsc?ѻBϨs@hpv9,JܘzȺP Ѿ˓bxgSa~`DHܻE!j BBlL<0vbJκ(t6f!E>YdS 'oR| d5hd9si@B9dRnSgμnٺָ\Fz2o/+)./n7ڜ#10o竿G^xE"y'[\evӦS9xf'ZCjd |Jm2$Uc H>q"jjR2; .y[u#84ԇ(Z ,QX _෹Bڢ,sB,w`JѾL^e^ Z&_uǥ,$)@P!ĕ<;rթ ^)7Pj/Ne_'32wKF~ &WbXFW9\1&ӠVi޺wCu:{+c̩}*UKY4%ž^+nf=O P2fQ5B30OPnYzhpJUmIu(I+e"<$P9@#=ozQavVZjLF/TC#6+҄NB7 soFc`0wER^9冷Ʉuj#z ?|j_JEvEV WS~t`14sEA.W#C1j( {l2{ǒZc}PMɚom}ppAܗD0>*.t\z٨uvs2jnHW endstream endobj 1133 0 obj << /Length 1058 /Filter /FlateDecode >> stream xڭVK6ХT,)z C 4mVDdѐݸ3R\n>"C~"xP)2h7|-x#\ JRW"=U6|wOV Qi((2~`i[m(NdyŮLt%_P N /3&Ҍ\9xslXq3 u$ }jexlTdcwp2 *xB:a'Jփ֊1yX뮾=w'P3u5\wF[7hf:N$$aB퇨LéofLDxj*)5NK;F< /i<|V͜oC,KſN*XYT^HsD pÖXK )R4$Ur60(|%ͅ"l|JXԝkiݷ or{|vOed%Aq,ڃZѠP ^@$oO)K&r&ӠW)p=)}/j@_}n4rtT{ >0dՁ@lʜ^J*0%7Y,D [~%͜\鰾rDNoForpz\z5$Ixˀ+'%Ӆ(xU킷}oiP?wQ0eߢyW!'&ۥ Ī.:ΒJ3}o$ѻR^tj`UX3N|`ͧ>3dƄ<?NwlzsG Y˧8uu;\֎ۡUBHj&s7Gg ;d̳p-> stream xڽZ[oܸ~ϯe5˾%ERxh7އn34%^ܨXq ERwCZViOM^Tܬ?^)w'=\;kW* Utw< CO`r89W\TǾNo?M>ס6^Z?sފcXqke8JB+Vj}n#>W^_Eֻ5:m\'T 'IyHSdUE÷?fo5tOnŴG ثNFզ_ܸʔy +hO}ЀOe[NQp]Sd3Ζ7Y;íWVV )]g_cNTI \ʆfQfM.5pzt c>Օ|sa}Bݟ+*"^`AOvEYr5 $ -Wr[mU ْ\j'~^A)?<*hyEW-rKyj'ɄDA̓tGK`iM -$M~F}+`uңY̷\ GZ7ݒ'j5h]XQtZL ~8R!ù嚼Sn+k:ʫ ȀRc(]j.yVә WY- 2 ,ބ~J3f 6uڳ%~%#@>\qY#YU /c.OY:9 "'xk j=`Ц5 IHఽgy!ڤmrءܷia8ƭa;6]h2Z9|8"ś_߽{חo!hk]VGDL[Ax8#NăF]Wg1͗K}'-b m<e\"X-~9`u$өeG7!OC㼅MQ6k4ۀJk yS0%- ;/!JEq칚rڀ82z7٦c qiuݝ1W|qVѩE_F%Ԡ-e߸x4-_`7VI-o7U/QSB>|ےL-H0W\=B|9P5m{ʼbй3bI|B:\ɗ^ | pg {GWհv*~SՄ~0ۮ7A{W& ?HOx 7l-;ePAAˉ#U1fC%':B0`絍)24 il$B;x|ŇN D J.v+AY{z%ҹ$IDsG]r2ɸcEX :I(A}V Nw\#id4fH(~|r=n$l,~8M7*0QS0oeȰǘ,j`#`'R&mlP`/{y Y^բ4}V\ta|[KЅ*B>¤xmUx><3E-:D9@+ydȒZ]mQ}hK#%a3n2*1qmƏLJ2 xɋs śmؓ`,sWS6 oB8 [?Ypk) ÏYpPshds]lҰUW?V(1 |,p+wi8`l MJ|]7WV[ha@zV!rտ0v6*ECi# aշzyCc ŸRxoYmU~0|u!Tu VhOj2~Es׸d. lFzY02 3{ȁ>tPԻZ&Cҿns C6՜*V2JB EˉJ.t82^ o% a&zt>rѰ1̀ SX|X$JǕ6-Xa6egsj]YR| t@?/:Vj*W ~I!焊OF=%JFdžhyV8LfL&Yt bL R$/1B GJNŃ$㷁 ītV5ly &?:~=fP)S6 h$G2HH˸ a"yAiD뎁IW[702w[]%35S҇EKF3'CՍkG٠F`Ua1%,[`X\ئ_VudWC,$_V@bd%PĴa `j:Wy6=yLzrJQ @B _3 nyRwR nT'1>=,&7A2=O;%[Vd#ka !1'\"3w#xl6ovqNP8㥳Z :wVǧ` *i9&%Ԝ;+cCLVXǡs-, ;가g2x^=xl[g+ti,Qde9"dt>q2h%Tq:MG0Ӏb>x'Ԣܥƴ'1Aa \Ƨ7dk\vܗ:/bX7o_wh!і:rڗ7 .5u3~bhg(-MlMƃa B.{9қ~'N¦/%p$/!_o %n*Ӵ=#˷_<eBA endstream endobj 1141 0 obj << /Length 1567 /Filter /FlateDecode >> stream xWs8~_caɖ7@JxJ鸎g˴VvĽǛ]ťh캮M鯣q&i ܞe#qy|p+z4f.ud9Ao5#(t&OdZ#j_(oQJ"Ι:8vC}3_N'gofs˫fٵNÀxwhW* aB٫ Bu Hyx<;G, uU ً;dF7%p qs8Kc,-B[5OO[cERX ]P%NwcuA* վ$źezfT2~ ȕ!G)?{ 2QSSrHD!mQ(!FYq!2!ŐRAp 4i~i텨%"1ao4A ۟D"k22a? wggsSuu'dnWB6!AH"Uyˆlû4Pϖ,,㕀b t1Е$L*P$5di/|h2p^HDm_ sw]>ˈj[e\y}x_J(f:l:onx Z$~6>9hVVZTc|IXAݕz d 5*G`,Bh1$1"CE[NxdfP=TsAT9 ^u] T|EJhPƬ kϫZ_ Ff)zvF"B}O5 ZǗz\[.abz{Pcx ʂEeU b9 t؞ZݑjpQ~4(n?ò0B=o ܞfXǦQIxKu9(2֕EY=*=j~tS&;Iv&nj[=JZiY^7fl+6ROyxͤwz#g@ۭ}M?'׊wԶaf$_/cON_y<#H}128֏!;2/ȋc݈.Z_{0JQqb >}_;3uo04 ~k3o`,ŭ|hҰ29x'0 ~ivQbL],DU,!d^{]HfZt ͱ[g̕p&|;k5ՙyh9_hw!*a-;=p[ ]>^gz;VU]p=(Z ӽ| CԨ6*u82|!G P^DRVE^;48,OKTٵ.,qekėhnP/tMU=p> stream xڕUs@_AɌBX;`B'5CfX9"S X'{v-@Z@h*RuaRh,ЛU<$̮U9k-(X^rQ7G5QQ*kjoQh 9# (+PUUZd@ifYn(Pj]h4ILWeI0DHP4EɚL ᘃ\߭kwй.,$Ix{T³H1ᘆy*߳ܐEy &6t5#@&W!Fѻ=G]_]G`D,ehil׉Y a9()(\?aOl*V]26ϺQ.lC}%;^ӥYr pE1q&Eq>TEJA F.+{67.BQ8Fo>IlL)f5 oJI''vfR b氱7ɛE(X,0zYb^p)p2&,KM 'ydky!*&uj̹3YB́i7;=lƋ̸w:ok%ł*8`KYS/~H^GP9(@zCJ5صv;$ endstream endobj 1149 0 obj << /Length 1892 /Filter /FlateDecode >> stream xڵXYF ~_GsJ)Im4E!HlϮȒ+ݸ@{rIX,!? bEK]lWw J{+|ژ,XoǤֻ>;^R+MhchEy<4}zru\I%_~\t| aō 0#El5J"KVV2cfJ7{TA$mUR>/hNm^VYnfx,/MiҸi8Q,[BYYKr%"w3jk0Q1aд5|b|e;ZT4?]-WFIQL۽;,ZG (04)D5lm #KT;&kOu ={q{$2WOY" P$߽y7's~a->؃h7~oGgW':oթ| :tYْivW%Dݜno]p&XPs3x#ĆBV46ĉ NS{(0HgbV"XTmmPJ烍} ͼa5'hA}"{5~qz(^W^ Sxr) {*:6JHf,&9@n#Q#SPCTP,_KMzV1K}7g zc֠9 JldC^P>72ɞ͙f !r xsHxOkn3cD,qG<%)8{9y.iMqM٣<s0aEwjs:J|;lI<w }4XFaϔeyӯ*W/68b3.}:\mh٧gA;˅ Hi4C. yV!EoȑD e䳾"<5o Cb9 r-vkFUn0t?kiTw@˱2B'E^K@H|!1&׆Ei3rFxa$+CI%/ JL,5EFV`=sE91 V(GnXuiD?es箑vPk14G!a7WFb"j757 WhJl\Lu/+5N6e ƏY-d_ڜcmR{R?1RTmq`#a:4fa7C?L5` Pz<Χ)'"k6cB. mli@NMI" 0nQ>/]>< #qͳ 2lhpVA w9K+}4UK;!;XYU|g/yHc{?Φ=w-L AtqO9( !]!e/g%CӉpmktmlWڟ7g>cմ9s,;! i cf-NQys)>]pj=IGFҾbc!}Q;!}U \pzIPʨi)8p-8sSoqn(I|ޘgmT|>TFi(/~WalpW{W*g2 [!*`(n xVi>kF/Xx-0q( }`3\`eKc&h endstream endobj 1154 0 obj << /Length 1559 /Filter /FlateDecode >> stream xڵXkF5V#qiKH!W[Dtګ{gvV:Q\}io:/` R,ֻ7 ᄻs>G'[|sԂ, RXcQmou/})w^m|EimWfJ'Տ'bD'?Ę\I1J$BD.}X0s_Q`"LX:!&՚=xz]d% I 8;;˹mT6:k.Tnr-K}j5&ln1guտۏ2Ԗ%,'.Kja)Y(I PWkU( 7pe,Xu,) Z] A>bCceLSf+t*vNgC;Žxk4"V'"DHDiw0Q͖fۘո\|VNn{EuyNErBu G)Jܦ2vr[@uXwb> stream xڥYYo~ LyFlUz搳<ռD^4}TWWWuQmS4ZI6㓀F 7-n'/.'k7* U)!;uysZ{Jp5zveVul COgxbFSH'e R~)JR鳭BVyE{xuPJRauqa#t>0ǏW޿|wuūo'p(vbAU'{_e|ݮD_йٮ+jiR[BRhh v-bnJ116|ewjo*^GcN$' 4}?m*ۡt_W>I{?%cvlOe{+:fRFbOS\]V<ulx`~ Ucߨ2+ILe-+Wk&b*CF}!>1cBB$_H 5EWsX˚ :T9uӲq ABQ"q2G3nx_L&3h2+ K7$p+ .7 !P>gd%$%>K !q^,J_3YfPڼo49v1R1]#hZ45u:H T@}3Iv{$8bZNgrF 'HvZL"&;d_g*-kƎjwhr8&WY'ַgQ+ELjyR;=>­(QTsڣl<;>nA陚.p>a@qMGvnݔ <4~Vb\z$X͗e@(;W6j4pctG׹oaBzGuY_),,6P.l {{L"t :{f7?C0a_p‚>^zH $d9RD<>.f$4V/VU48y̚/-/06z:ud3 6A|։3i<v˿x%ߘ^ɩ55c !5M0/ZS@mWOHPF`ݵ[93W<(!<&vu*7o j(J,S@BZqϔ 5\l(d߄߉oB}|p%Ég(a<;#@K\&S[X O:=\$vSܯ+A(N JX9IBLKlpTxݮQ`I c܇:#( . 5F$D*­èHigGTN#?n"3*PUX^*C@m`9(_(V<7͘$ G2u#TYƄhxF(O0f-Ϡ+j°'Z!<~nz_EV| &u[? g*"N&` JϜk8 Gv3mōj=- ©j}U/^>sɻD%Pg,<1a~tKJnb!) փDž6@ql7q[W{ϋ Nkh@nݗN}Y$|NmNM)4(h`PZ4nOOL2(d(ق ;{nC] &:2^2VGv|75Z=1^sMf28}Ђ  3+w3,{qk) DT eym4s1FFU_@n.9 1B(s|#HhzkJ+?ܐ ۶Ecձ+'Z_y?>TTgV- :u".rG> eA F)Of|on~HrɿPg_ 2V>fR`ցa]wm AL J_ESo'+u_ٌoyLyVߴy:,Џ5O*,FoR'D 70J`5~)@\R%+qBM < C>cԽ6V/6ܣP5)A V)Khw% endstream endobj 1163 0 obj << /Length 2220 /Filter /FlateDecode >> stream xڝY[s~K&dc{KlMTd R;]{sj١3z n w>@JŸJUHMr9n_QW׭`j_oJIT]w۫ckJkPʘpebY'e- KkD/*j}lp@\huW^0.WP$Ebа"Qb҆Qf DOu/zCej&ѡDO  !S>f7fċpwۜXWU30AƒcV^L՝*۴yU6NQP;~y~nva,"L ** _V;tumKTWgK\A3u ` π%򊎿++nñ%E#|{pYT1;IpfKƵu3v>РP?WG*aU{:q1 3`>U WH`53G0 vO{suO?2q]X1Z8| WfHУǮ_R`vuu@`Z<'$Z xKKn̶@f"Wh`OJD VpYncK ]U[èv'hi"9!{wCnj?cf>)2(8ǑfKoJez|ϋg58ۻ}@ihyZdv`Qzhھ!:NHnb~:`Kso=6A-(iׂsAx r M.`# /H~dNC2ޘ, Ή'B:<((~qDV#%1ٚHsE(B%4[H-Ed7% k {Uw($ͣEQ5-_"+?n9se.E4Eg3ާ$EVC|3p2I{t_x-Y azd[Jo?l3J#W, hW8g+HӘ:zf 1 M$ɖ5*-_n@s=iZ*agscT ?xww~ǛW۶{M3J~;Tuwa(,jjBwn}VeBYCiHΎ)7ͪH27ى2P|rx$»$2t_ǻk]6輙}q86W `|Dye&mIU_n_ endstream endobj 1166 0 obj << /Length 1031 /Filter /FlateDecode >> stream xڝVmF~BizI藔 CHBk[^INΔl{\(DZxgE,ǒ&Un oa.WJ%,Ym]]sBgY.J_W)7Mۙ{vNzU"m6˹(8O>~y(ο2Zs K™sQI„trUpD)eJe(ۿixEh=1~C߸|Mgt89ŵWU ޭ^ǂpU]6CmrGc#OT/aCF$RD80E]Y$g0Ŝ?B Un'(Zl%tbOS9u4VW33(^,y0?P&i{3 OlmHj#p;O咁tt#1N:tlw9Au<>%痌Fd*8ۮϙ7 Zqo̙l]}.N0JvuogŅ ID!.*dj lј |1|${8i%0PNԺh V`EeH5gy돓 6Ds8̭SZ3y;3N >MqUM eQUr5 HqR%dj>])pyl{`e!?S ab{xQI:sv #Hgԍw K~y8Tʼn%A^Pm oNvt!1>G<0rWe@ x\l.oǽn@z<'7DPG7?ox6Xe7ܹ/XiJ=ɽ=t۝6n'@u, 6m S?On o5ynxEpw5 -w4?~0m_Tt>Ov٠KB endstream endobj 1170 0 obj << /Length 2629 /Filter /FlateDecode >> stream xڍY۸b8X"Ek)r!eRYm]dlܿ Zm,&Cr8<(q˂$ LwU@tǍ_JX=0g}|Qt'? 2qx/X9^w}핊E4Wmcv{%Qǟ_=t7E3k0H2]G0!g lx wM cVDNxa-;I yT,,Ye|[oȾZD^a`1,䱇Ϩ}HK;ή vڅp㞙MN2;Aת)T[-]W.m"\s#̏[nrjua*8#/=T Q$#Ӻ黼CefVUiM[c>bؚtUۜZU_:/u__o9\>V ߦw T62hi((A!6Lyrf̮`< 0s㵢EHC2xj% :anqHIpUk>|d"Ujizp %S)Bɧjn]%>W%q,pb뾏F+nymP3a];r0(aJ?] jyS m %!d=S<t*MmVy8Yhte%HdK=T(ѓ5d#h. rB0Wteة.hSC ón!T) + eio8^ًb:=1t(@. m,qhYtbP:*C޿"!f/R._}uq&ɹV-mm%2Ԛͬrt%ɽb\陸L8:tʍ(L@CjC?-Sk@@NpiqĤ7䖑z\1{ 4f85ϺLP9OYl":~(9l"WC?J`0g ]V۫y!%GOz;ѧCκy9(qh#h¹&7dž@cfn~w+AuךOaࠀzhg51c6|&םbR][+ET⋑"S(<>P=pE< n녭p8&2K p䧳fcc5#LyR*˜<>qK0e2z{!bƣnK!ƂY]a K*+y?t:(əVq"DM%+c[P=Cmh8tdzL pr33P1Yѝ%>dzi jL%Drq>cts/BKjo_g1MI~&62Y 44M;P法{+"q$h;``C;I5R ygsgu5J-b<^>^shz2#I#m$0}< ǣ9LilmB/-uGjqyFAHeN B<;,\jzyާ?r?"܆b?' GiBTƫd7@$l 3d|-? |2=(ƒ?2Ew}U`lFm~!WX! endstream endobj 1066 0 obj << /Type /ObjStm /N 100 /First 955 /Length 1718 /Filter /FlateDecode >> stream xZ[oG~s!qЖ& DEv8RC{$ٝsef! N(ŐCj'IlSR XR\ٞWY&X"P[Kڎ!OQTmV3a(\POm )38 K4L^!L6PЀHL QHIMIr-'TsضF3O}5q\<Ǵޢ;V5=̣&!p`Jʜ $%m[H*6#B.a1FIr*N$[9[JƐ-U6k]0cH LV[)s"h Ltʐ -9SKl[`AQ ڔNJWljp NvKT'``f8imL MfYO:؂I6[^㫫݃3vO+7?vˀǷ{Mzз>0ۆЇ=7oy3Fmr89|M_wW+B/g1vՅebq<. ={ѝ-֦K\ y9[b5&fqhhgV$x쓴4䕥O/fg7?h-"}k);ma5N ݆\1Ƣih@ ##)!Vɽ^9> b~`Ay0,eð6DQXiEaI:BWk6|IgÿyۿEwookvvtf/"ZCG55[u^Hs[C@T|奴J$)mݠ蒬2΄x>?\ݻnmйECcMh2 y,H`t&%4h/)HxxqlpG}O8~E}ҧ<Abw睓 ifFÍ8_WdcK{Rz<wH$]3EFoVuh1]I`zڤG.4?iW<(.#]W<F_RQ_p$L8TVuI_3>?,n->S?&!CC}oY endstream endobj 1176 0 obj << /Length 2952 /Filter /FlateDecode >> stream xڝkܶ!Ekb"ET|p\;u&ArE$A J[IkwCr%YԐWWev\m2hWϸ?tr˛g~Xf7Eu)y<^:R%o ocݵu*V*ɋ_nMV H'R0\CȓjqŅLn$?:niohk[Zm ~θl,NU.}ΑjcQTsy[]W5vU㦱UKK{hù߾e.tBns<"=4OզȻ˻`.׿˿ΟiPL 'pw҄uk{{ vL;9g s϶z8c=P(4@T1qOA[GÎEWE~4jB2ИtjZaIK`INXBĝ3\K?]`X6 ϒ u05矯$ +b 2$Cz)L$e/h.(鬓U{ &y_o@GinCKܰQ{ +ζ("!e(^,vo޾{K4|2c0%@~3<٪TnHdzmۍ(Y o(žvހ_](]# waK3@@X4[@Eh=| ;XrD>)zB~׆l% (T2g{J R<]ujFz~s;:<&(\zneޠW3W!O. o)0l4x 1;=oLJX6ueŖ7Fר ,BOmcym6 ۮnVYZ~Uʹ9TP`5 * 3j2_Mwb *쇝hy.B«]_ /ͺ?w5t30Hw866oMy"FK* ZVGr7XbSHd Y (yx+x.eSߌ8F!zYAzBfߙ)RmVvri8CUaI auKe0=u*lZNnXsaB+c3~WաK|谋 7K9%;ڱk׏̸kOգ7R(TK :?l$0s(垚=dW$"ߟ޹FN ߺfs])T NP}~Ƿ/o1>tdyy$ d6|; :~c endstream endobj 1190 0 obj << /Length 3336 /Filter /FlateDecode >> stream xڝr%P<⓽6$o)UCTw?E*4O;kǽoiOC6N.M#oa&j}# fH 6e&'0҆oF6CKl4A&\op1V@p |ynC I3=!9O[t$v -0c C#/?,fs,:6ϣ%hH@}=m-_IGMg5%Ur~jb =Kn%p,V[Ǵ>3yYEtgv^Bs&} '7YQE>ÒQgt e ndDc/H6YUN=T@sU  Pة|Wn\+5/_7[<6eDQ?<קBi>i]ҁ! ӅNspu"-p lPzeDz)lhl+7Sy\լl;ewlo2ێGPy!'[b 5zCupܼX?ѵFo$qf3aS]L>(b<(\Mr7t`xt}<2H~M+Ѡ Jr k/aQvNFWĉsUX3`]Ãpɕ3qj`I[~ڳ?>31OM@4YWN&uTx~s݊_$fSs[Uyn^\$z\sWol%qb\沋nA5Lfwz:^,=M%z*,Z/;φn)0hQGtt(F5<|;Ēqj4̑d;5u!)SL"zF!Z c/ʣ)"! |+*qDG\%aMܯf?u3(Qٴc< PP?Z "Nn-;gUAP[?nI C76Yk$%}>F{9 !boM+]ow2{ecAh0IV3C$`e_ T2r\?=k-"PԀ;4K*lR~%eYۙ؜ByP d%WHCQёv_C!ksb?ݤzmߞ:83%\P;up0UV  16զ:΀&6 (ljPnz&lL6Zd.r+[dO6<2I'nu띎iWXDJ,OEɢW߈p%*=*TqD\iz:aPsĥ~v/˚ dòkJpLOSO ΂KpaЇC}vV:.wa@l3:{?!q$o0>D(Ku76>Oхm,Ϗu rcvT{o rJr4^tݩnu4Y9iR|_>^ѱIBψ:BYP+*p*5I׻bGft tnspy**N4 #atxp9IsKk)€_)w *u0B ()?ij"J$C0azΘG%IYv1WB`qz[nl"dGH_[ٻw೶Jz' 5&N_%U|%_H +yA%i.]7L^ Z L".c>͡(SYSs N * uQ]mQJIo$@AӈUKi66)i #%BoIb]=ifЈa3 ̵45\4)S$X6ɂ ̎O<9<(3lI $U>qqt=w6,ݎ >6/o͸B_! 4R4~/ëQxQpn =axt[u'QHɃ!nԮrW}1x}*p9vV,EQE,6KN0Zw;x@bF+4  J_"de'O/HyGYt-aGK-OQJ@|2fG7A[ o4z&4Tz+GR7Z_A:(.Nb6ENO\隷:ȓ|gyOɾT8嗲y@/~H{v8c)O5WjJ6 endstream endobj 1198 0 obj << /Length 2943 /Filter /FlateDecode >> stream xڥYoܸ_@%EurAZEZyE6{v"g<~'. ~I _lv4Wmp3՟$vuuSn_]nH(DW۲iM,I"_rWc8JXz +a)"7L==p2joil.6)a7l38R1JO.oy^_.XmۅK$KqZ߇Nc'eoS=UX/;MӀ۔|ѡ< Ab(Vj"&`Xv)ƃ6P/CWSugDTɟG7tۅpQ eNY>9X=Ķ=ܘ@wf@PO𙆂((&*L G<ˈ 4[ܜYl"G* %TсilSͮE4clǴNhH>aqWh#[ /B[|\H\֫ښ禎CptpQ : h{Q6r`e;fGDHWm]6YL:ug1fBs>: ({%UreP#,; y\iXNip,1K UޢTc8S?^N(^rG,辸1DK8uR ƿ/x8tn="VbuGSNo % b 2l莘<)JG͚Peyؔ Q&)o2x@Tΰ`t]=lRy_QNbޗ<[tهLdNBVs֕e0*{0INu{P/aE{Z' $6c'4PINH@&;IlK?&[M節 rGTg;$zɷXlD)NV tF@,MQtX9r&l*u"!3%=J.Ek-2-5++,ғfqvY\UHq(U)pN k[rW*IՔJU@AWz ; Ⳅʱtfk,GgXv0YWf4 a\T|N\;n8]nXWV6* DAe}7֦sX$σ1Oۚ/J ΑMkƓ1gb2kt,U&8ѺwˆK/B!jEمp"CC r%YMm»* OUvjy@?k$ ̥du&bV^e'ntwJ/o>+} CzR ]`/`Yeg0 K?>?$zL/`DXԕm=CbLih}C>XSJ~07lq_vm"gɄOI">o@1.rk iHǻKT]4 ; J)%JZPN9έX3 4[ji ȁa dߵc^Ԧ>5V!tYX@\jA[|-* endstream endobj 1215 0 obj << /Length 2879 /Filter /FlateDecode >> stream xڭZoܸ@q8XG%F{Hq~(Bw?4k_9$ y~0DYօwKy!we?vG\.#ڃP 4uδ dLF\B!8aGVL b9Ljqw񺈝?:lƹQAtӂ%I<5plBܒ:$֮3`^)!.[aƜa\e3_l@qٖk}/T\_ v$. ]J&9v ^/aMnהl"5v2y"% `8Ujnun2!*N+8 pU}OߐolY >wph3J,U ^,S=@H\jRJyN+yy,܁\^Z-&vṸ 6CMhcnXٰ$H`yi/94gA H42`o0~~<[ d,VB΢9伱/^tn,KXE]UStƂFyHʦa0 g)?Rl3z9q)uIsBՑlSR]ȓ_U}8UX85 gE0*Ӡ2CVA\Χl>P > _\d EabǶm7ۮ3AU/K-!r jJ_:̩E]6m;dGQ=HMlDJW0bAI%_xps_K#Qp4՗'xFAEg4>;ϓ3ęFw0dݱ l]Z"u5GgutTOE0sA6 UXd FfUl&ܕj F=0Wܖ)vkF>I:GM*~}0Vf[i vǪJ q<*(x.Vg#> stream xڝY~ԬHQ" r @\6m %Co}á^>zVCr43rOpFuڞ^v=q3_^J"szI=V?so&@&߬7ZmQ}z4}׫FR(a~\$BF)#E"@"l6禬q?hk0wh,IL?4j##!c>θzm2X>\q6P^{XG|ͥ1Gfŋ#NwYO^FMd AQ;>m[΢@Xv|3RWIX$QEB ֻVZ^m>? К}ٮqF12'ʔi~J" s]4w,ꃡS8a`T-WA/&;$nK(3ҁ vzdSzإHR<{G[YUUu]h:6z4[J/jl(S'R }COZXw ?-@d(>&\Ε!J]0KgIk4>I&R̬H\:)4vX[Q$3vL[M1$$O>) I }թiM#CSH#MbU Ftzϗ$u.1W;5QXXToC^ "inqrPX_I,ӆc|ϽQ+iZˎ8m_/!Id`}w#aL˥"Jnۚ7/=WQ7pv2~r /;4ʺ_沯.E&US»w(uOe=Ke;wpsP֦ngs[6 B_k&C3=[^ߓ\e2zt8J`<^zGm}MM侕j\h{Z?yf`WR0'bĞ9k$um%ȀnwR4PJZ΋9Nj\c:\}B禧*|nC[X,,.h P.U?^z25R:h4q\`"kqfUEhm W)_8K2F)(W٤CRu !Lncrtz i̾`$Rk2DKffN3fE;GSUͥ,p9 *7>g/y[J : &-:zcX<:uSo7:bg*agE);Ǐ RlV+PHb7\Zo'Sp冎"[gjO S IY3̵i#OE}ݘǎXooAOr|;\fC# [%|pZ>22faZhbl]fȯ56И]{S=+ u:E< sCi׈bpLeWN:P_ua2Rx{1/)#U`'9hdꓰx*#CRQ2@"a",dHYlW>O<ڱcepbxֻ`mN2ntNRưc ͉7樷<ʐJu#F ~߶05;_79lCIQ>~u\\! DopKQ_u ^DK& %&-oE> &PK/ endstream endobj 1241 0 obj << /Length 2672 /Filter /FlateDecode >> stream xڥYݏ6_pFHTzArhq;ʕi[WYr%_AIW{bLGp>Õw ɻ"T:+v;W2qշ(Boη_}a*N4U>iFPMɌ\}Xԍ!\ jW< 9S*v$8>_O߲iIhq52]FO[AXZRB^j "w8ԕq"ǝo87T6ϻk"ڪoY eG~ nKbay䳪gȅM|}ڐUgHHU*D}HfaX2lT5KRLČojuIT 'Yw>T09RYiu"9]]6w?>@RbYadv\+Xot;ypoV`P왍\U],ɣCJbTj3WRȨy]H=~*n LElN']]kI,I6ݱj5h3 7ΒRCcʹ$\ fn+Rg @ d'z7E2=6y"~_ =u&]׆-P0)pm,aR["xxgmf[DkF>y]|4:&F0$H-]R+y<P(WF}-SJX,nBn"sV7+TIGx^j Ha;e2B@)FfAvpr_yH4wM|헌pʛ5ZnLu*[rkkD5VsSkg"^tu C~!kѾgpB#Z ǨD H%S:E՜Mwq@C: b'(^Pu'6 !{yT zΖϥPEq|ح?v 41iu9ppB& =kmd4&HBG<&Q+8p@} Ldo.y ݃e=B|hY.8vum޲ ]`eZX X"F%BDvzM>։:K,P:ɀM/4L:&Q0vUOHGBgX9GnC EH "X#!$*q?t` |POHr_u… Pl;GXv'&}}|lxo~!çwPѮ|9!BޢzAW~ ۤ24dpCۃKn3S~)S.mYyNpf!A+~dB=5/>zd!y]9ewբAƘp)]ÑpPu=Sشtш~4%:cq\ 4O~)́ >3@*3Ϻ<(Zd3~Em-f Dhh?'da>dՅsP9a]. /hGMfH-ÉRjt:pP9qZ2 2O];f`(r':_m)%cdae~@; v 𻮶<8ƔR#-3![,};`U!\B Ew8b9/CS04@0*\ 9HH1Ҋ7Ɲ2ҹ#0Z^WB㇕X2zPhCLXy$ Ud[Mmok_kK"=X5Z5航. D8001#$UOe ɎsLbÈ| 'U?xExw`E=uX(aRsҴnĶǫxvgOaWV,\ )u|."~5y%2"ӎ#xR&"K'ϊ`Ga>͋ sdĨZ_ 5S9{\b)X{GQ,e(xV6&S%Lr=UcH%$H{8cGz|-ttނHl%T@cC#AptC-BUydxZ"YO H +PA ) S!o' dbpߟ4(+_jD27zP_3<Ɠ=1e(uѹȄy!P 9C&|[ endstream endobj 1248 0 obj << /Length 2506 /Filter /FlateDecode >> stream xڝY۸О D<"?ȣE*e_Df/^pKa8ŷZQݔj)xs(Nn"wPJ|uFߟeT@_V~v5n!rddq!I@L05.#5F%l|yX}4q`\̦: ZƆ TzKӛ!j~l,nT<('P,M3G fw%Fv l- }sPt'Ĩ*mўѢQs"3)uo'aD$ xqkZjiHz4CwSTUY}"mT&5x1hJ3fRuyL$_Ijn`(+w8ςpȮ+OS'`U9^~ *p JW7T=5} zcO!F3`_i2Nu?/UWbti vj43 m3Kc, ӄN1UQ>!,In|ao(Qۢ C4X/w`b)rHvb2ٴw_myIJd̞38/+|t.<&If1SO9o. kaʄ ,dlvJi,q:&3A1Uv?))K8AzVDwva_XU&YF3%S΄T󳬇#.tyH|/ D>$J, EG6;nz;-ZKx4O~oW%$b"ШdT$ &@1ttc#Sևu$sk$gM.pјX[$0u(>\{p 㱹-9/4Saiii Sm8a}(ކAo+,ZQ3wMF@pЪhkDaC@0W= CW8Ӱw0oc{Ԭ>;uLկi嵅?eݫw=2UX ;F] Ч4`Gt% [[cܳ1@"0 2+O^M yme>=diAAx`UK]t4inO#]E`.Ha~hWloȬDh6پXXXL4 ԈĦqji3tXtyֺ%E7Z}y@H|`D7ԔY k.dx͜d̅y0ȇɕN= nO=`1gKޜ߾_WX a. endstream endobj 1258 0 obj << /Length 2955 /Filter /FlateDecode >> stream xڥYYܶ~ׯrUJҒ&fYrq<Ȋ4CyhF7x8ah5(.R2ȕJJ]\lROmo/hOaa<[o_gمH2-nz{.zygk/cT$wY􏍭@}{쫦.cYiugm3)(Z@3Pe:Jl @iԺ~hK`Eo͏ߣD'3(&Q2'F7å,fx:zyz $4Bp" =͞غ޽E%p2zcabDRsV$ouu_Ÿ"sPhAKSQ;0QI'UC1:`vw4H]sݰA~aiC붮w~܂" _v^v]SI|E0|͇.gdbTT;k*U:QfTet;c‡Iht5sVDU|noÙp:zM=U4;Z.4bŋU9 PY*9i#}l\%0y.͹tAXn[Zhe7Hxppr8Jt4Z|sE8ٟLYfֶ(a4svT$F,'@~@15ҦH@ dŸ}N  ؝ox5;8SP4)2(;Hn1} Ok |>= mw(j7xFۆ2]J.id"ڒEx"r[ Ϭ`7[,>Q7$#j`&ӿY9VP[]ditV%PvX2i CQ-H"o= )H8kp"ocpi }ѵDzWm6{>J3t20c+Q sUKOԎj-҈k0nHU>5G*+UiBl<&$XȠx$^_A-N@/H*r:ݻ0o}Z7Ue"au\zqPռwLA1ʨՙ[ZG%,mz",w6-p3-GR]}g)8Baron0@y%>8{V"H)1"lY4LB[׶O}U^>$ !|?6ȇ̐{l7&ٞiKeQ} =z5ڛ#mbؗ'w0DHfZCQUm%MCE"ƵWς0'iVK86 W۱ Cc ΢\m7hS/;%#v9wܥD G)xw?XaD`ڀ͝΃7z^ 1 1`;DB6Ԯ4]?0tv~/|)\atJ^ћWaT|$~xdζgw”]y4o[-e#pN5KE٤Ǹޱr}mluU& hZV?5`Z>GoYP {nڶ|~)pv7]pcٱ60/;/v'R1?"§jOsp.`j!BmUs, 5$0NvgZ%e~R|A͹D,7zjG r_UV&2@c·/j jb9*K>g`ff9qELm*mW }s[_0 .cy1LYa[.\UG3%"Q\'\8˱S' uasZ@=:)> stream xڭWm6"J8,v-ݥ=$A73ى+`i4gFHEȄ`Uno?_c|J-xŠsQşя;s[Bo*Yׇlv*S*r/W?ݎjU>|@Kƅ$FmϙKH us4[}xTEtDMqa " gqE'm88۶%meE Dáږ1  <ΩO5vՆ]٠o:`gnc$$Z }~76=ik;ӕmWn`|D$i\ H|:MOM ao%ν5 4f>e4/cYq+i*h&5yO<[D{̿KR)_KZ endstream endobj 1274 0 obj << /Length 2110 /Filter /FlateDecode >> stream xڍi "22RtPW)n&@Sl(--sludѥq}%f1|$}(YxUfYTjuO>|&s! /NW*:%^q0˲ )^Ji`Awڭqڷ0[i\fI߿y?Sg'_[e&zJEIޤ\ye~K!u>'*oVUpmϳ`guP ؊KlIDyVVЙG2JN{yʸb_c8q00)v k :,:`kyh@GVa@I%yD٣oU]NJ~'U<>? 7vSy|g|`b~4(,GahK 7q*($z5ptfZ UUwK:M @hQG#JoH}v ?IwA;!V;!U񀿢F'?9|QiT@oCJSv2D"[41FR,P)tA|7'mfg3\9_uF%]IT0RDe&N_7۴iwL[6^\5O"1{>7}rP9߱Ebx\8zdosD(w^ݓ> K 'f=ڇd=b|t:X>,E u1*V*sLp&(Xh 2x^kЃ Qo^ ~Ogg1q߬7SU"fxc(Mˤñ3Cac`AM̓CEC a4-9ֲ<Hg4p|€fK*2_Ğ, q\+?% уaTp*&×E)F*}߻B& C%p=G82,imtΎRZPTXetg>Y7a֐0OՕ(TtJ(6XGu9KR<7Oi"Ucv4QVh-!g*ttGiBjVRJÄ`J_5V gK(3p85NPYX!& K S(:ap">3PW9/s(DHD'٪찜>sl.?뗋<*B%_JdZWdԤ,L/梼l^="G[Z{n@_|=-Wo B_DK)xi/t ~fW KM`=?Gns7̡\zlӲgf8G4 endstream endobj 1184 0 obj << /Type /ObjStm /N 100 /First 975 /Length 1885 /Filter /FlateDecode >> stream xYM7WB 1xCvYaɐ$>(14Tw?W**,.stQĄR.&$GB( '{CN Z\j!𦲣R\%aHp5`\$Rm0} 6u#%+0؊lbIl6QCalTlRjӆ%PbJ&EHJ{婁S Hp D)ۻ I-8.IlcKZښsRQ&A9Gt`Yĉ$!IyHc2$i $BM pN͝LdH5$N`iȐW0P *N`b66E@bI jI``[!4&p FEF=Ph$in(>f6] GbޒPRMNk[&_9.9-'HFgI5{ 2{l6ۇ_-j׭v[:E_wMGb{vxwo^rMfd~Z1}}8 O f~6l~]{~\w6vyso/_,S56)00߹gXY ն,/vkUn9|UoCH_Z1̃PZUzVb8,V?fmaXu~Q> stream x]D"*BC^QZTx('U"$cp;eI} ٨E ?(:*b= o #%t!ʯn=}e Ge\ff)xPk(:L,:)7f骵h7>zq3J%EʏͧBE,yFJ,t& 4^u\/B#1E{[$ ~g:9/^<Dc6ס8؇QL9Ydb&ycac ^צmBZ}_5 Ji]Uj̈́P ׺jj830ֳ~-fzCA.k' r!|SDo`$σwJ}f wk&8t[JЖ黕mR8 ^j%k+螏)F{hphjJS)ԣ̥ઽb`yhZZ!RN ,v z揢=@Us%.kM4suk 84`~lQC:#1DE:FawӛpS?p[=]PR&BC+jV 1a|F&x # X\hm#;1bD$Cή;\%3 &1]Oδe< & B[& !4/=:II(}C%)u$4lq2r݈|'Y{07-JSʒ)h[E_Js`7lm7^,~w6$LV$劣JEi4W`yKȵ A!(QED]Rj!Kncu!THD9܏c-r3»[Oʈ B`]CǘE-o8aTr"I$Ȑ@ CES_5kZ62qs'5M3ĸu)eoiH-1S+_cN\ T^ ZD Rem:d(MnґN}I%6܋لO, Wo]U[yXM-0P,OHx32f[ |ގf!$9A:ǤrO딑(M G)8jidv(q@ Rk0ޓA%XCɚ=y[M[-(5DC#5$ؚ7gޑWjE1VOm4-܏Z1&s}Glh`qHZ>qLchQ>RF^yn5^ 8?k`|)U%a-9q}W~G S 5s=+5Q_f 8FEG8VG!Fpte+#&v(;|2:gziBEV`bגu޷1xf > stream xڝX6X\^]$+ "g\qH҂kqm5ho3^ >f揎!E.RDf vAW?=n " Eb}=.g;sl\)(n:~],͵kX},lcF˕ S:]]b=jK"}}Df$"R<d"%S^8X_.W?~\W͏2*df0^ϩW*iADhlAni۱iA,wus84Дb4?5 ނX2/Woֶٺ wcڍ)@JGi[hrG$k6}5H/--֎$&{i }.TDIlQ0vhL_-ZZg[PYjKiPMy=-N5L]I *Gt@3|հV,0җۈK*e ΤO\M# Ad|!Ka/ʴ,Y[ /Q;&\@՛sݚ>4R7f-F 8MM1q,80UYдs54a,\ۖWtH\P (4֠2e?թL/*:둖>gD0ƪ6EAۀ)8 ۓaS:wD%>Vʤ/}Ume>j:CuX=0uMp~t;Hz".]oHw/,2؎R)z—g@yM>t3h6h,͇>qnNu-Fϭ݌;C{k ɭ$93V:ˎ#e  `(D"Ɣ+Aæo!pl}6|EAeM1 g G_QQ'+(0w> D$@em~]ZZ4ޡ<w6 q݄Es]zP&.~xEFVe$hv(TT̀ߎSG'ƧQjhKUIݜ1!#0r{׷sOے8׸+_{8mQI=󜠿u቞Tn~JDY%b!\jW508<= Qjj,e`%f=&TT,092/ā -#F(Dgi0Ctkh}j MdZ8( LBk L_1q < | %!RSOe-J_7F%(,Quӈ7+Wo/G~ck9vSa T"Gq _&R7ǃx ^iM5cc062,juq,4 x6\82/&ir̩w)JDC^w i5\w'ONM') R PP G;[7Kqq)W%8vjYxG3|BMHA;ݔ%Rt[Hs+cuti=]IkuU3.WgZFN7IT} 4 ^Qp #,ʎj;m=IF %C?]T8ӿ?ћH9uGGg|ԓ>}? g z&t/ endstream endobj 1287 0 obj << /Length 1435 /Filter /FlateDecode >> stream xڽWmo6_(*;"Œm@[tEkLyT7E~x'v!@D^,FQ(8QrD?ޝtO$σ\Wf%7iEH_qxSki E7itl50H#דI~("fY(&+ݐOEU%.coMw+Iww!խ6c-i[ 83w&,M̏#/cGʴ`g'~&2fGӮQnM#^:i(Ibr o. ]%k~?si>MsHw \|AG|Æ,^`D v9FtE׈-#4 d1thg$Նծ8y6Df^f%{'M :(A800G(JݴV/VpL)N"M"?piJ&ҵQ#l Q_ZbI)V `]ɖ_/00a'%4Qb'+y% l9W,r?gPSa1`)17Bd=\AcH6/M*VRf( 3Ws%uPyaI$g.E w5s1-2PgHD:ARC]]hK롲`(Jli[rZ[W9a 710l(BԿH *;X?g|Т^q>#+ WFVQ_$P%|Ů*v-E$}0S s-`t-1d- SWꁺXtvf\]Q )ΰZwܪm`Aa =7w PPG6L25}:KVUw|2GZѮ-pӑUumv3vM%1k\F6~%'DiMD}o<@xٹ3;J^aibPЋ)"!ڮߝu1!A>oh%s Шu^o˥ iha(<*֭+hizTh!!I"duE& 3.C$R3(ލHt+IsWww@M%> stream xڵX[ܸ ~ϯ,g{Ʊd6he(N̸Ǘ-gr)=q`CE~$6Ħ6Y7e"rBw3?ݿx$و(,Bl>[owq"{)?nenKCڡڛ^ F۝Xؾۋ?OV$R>\tnP"̢|*"hj;dI KDdzPD7B0܂I`lI~jwmxE\z9]eWߑpe_4y4O+L8[1d k;510KIC.W Q (8i<lG$CR0,jzsRqX.FnX"<KNW# U/#DUiilPݣ zSWHw͟2RaOPC/NVRd5E ^_¤HyCȇMJ KiBNTco>T8K`*tc'KF[ڀ3T2z33a~yitG'&N2w-`,%"hDL}WP08Âh?ҵ_PB) ]TnV*xE,搿6uT!:0Ѫ0?݁/AiI!W( C̒y\W8@y@04n$HjpDy0 * 2šC"Zb>sLe.v8XODED"!T_iP }=F,฼*k CsUlSO q~GR]Q`SY{uZ'{o]ن߄3{VYٴg5 /BC9]qI]rh 3 Rwom_\N0)\:(q4zPÀ GEV D!ChHx)iY-C mʞo z;Og OGLBnL A7Gi+/lvQgC Qju}g$9PYJNq%`˲k0~Kq.*=9nphyQd+(% V=E|ϰaCn"Dė$&X߳ 0XmGG,dcն}D@%{2&0 LgϤu*;0xqCPH9["P!M$APC{?jNT[VֱIQ84&pUoC n;^CoӱDLl>dKсC<fNuqV"5>qa_H_l- }R endstream endobj 1300 0 obj << /Length 3139 /Filter /FlateDecode >> stream xڭiolsI.ܤHF(.]Ra[{<=+E!@ 笼O^UMv=ls?o7ܼ^Xq.nnvWF5u$7W@ ^vw8*%6Gׯy"-*8(%*1~⻛3iŝT(i dFHm̮7.K@^?FL[Ppx>I&PVȀGO?_g:L7!‡A eq ׺ZeQ2͙jozm{*ږs6d"Tnkʳ5_Վ?ýVit,6Jai!OuՖ;t&\'}@`S*@XQ{U6QNh]+k@i`"t >(R(F5Tx|jؕv( w@-' A:>쎴3hE0I) B ovB;CSNx)і{B2g#қ Ø{ 38R7 ٗ6&%b'N Iq _FPUׯ^=g6h} [N*<)z-><={e;7X }EIW!ƀ]EO6u#h^ѹ߸OK!ɂZٸo|8Fޮsj㶎joa|8N&>._s1!Ǔf?KprL5]a> "^mۮ{@4?ڐWTD΀Ɂ2!鷝]H P`lW`W9 X1*z%J[Ͽ0cٖ5 .`MD:~qcAN 7aN9pv1TT:E]> stream xڝZ{6?hTn׌(z$ HA,ʒ!J/3w"HDQp8 >_DBDƋl7~~,\MVtgfJjڦ6o+!˕9&m>Z~' xJpoC~\1\>K+a)yj8 3ϊ+9, a,8XMq b/K须/0Lv6L, ~Ŧw.: 3?UÛ2% 8(%]VkbO+28[{]tHT7Nn*k2^8q5SܻY*M~)sMSu(f2 *aP:wQ>G |_*] PeyuG/UsFr8i'OEOiGSZ^~? b'' {S7N A8z1vDjcmQ4 g5`ymŭ@pm΃Y8\@ ])!"/Kuꔡ &mziAZт1ZT@)%SRF 0ԯ HF3?|!g1WY?c^v-A-N@3 F C5l \ WOM3 'z2! d8md* BRp ]Siڨ݂جWw&g#:-c}a#e'@́al9]$$(S m견QϷV۾K8 g$zF>ZgM K>7f5qu{x&  ۹ .fH3i:M9;T8:CτH`+s S,V{G,$PIu_Xl 7Wb BD"Eoy^՛ Qf|g=-ѷuO'Wġ:XRDqĪ_>z~sc67`DcA TGԨ,.& kM)EN B&b@c` pi6g] Gx^Xhz"g?jLk5Lxd`@4MG?&ڃ!m 2<}Jx &dM}p>||{ݏ.^=c>U E冶PMk_pᱢSW"fw5mT- ĞYڎ zyt\"ǘa̠st6%0N'@ڒ!!ˮNB ` ;L !M[4n`D]a.NKF"[ݦn씉0|*tM 6 M*}<X bΝyCn `(9B4kS6(=rb%s6)EęEb0S: &57-N3 qicDM%#Koc?)rr!@N1 K=n @*|cpt*%' ǿߛ:Vj٥X+EOFPl<ȩ>!)Q7Nք+޽uj5$a˵M3i/iWBB_ Iug}{Lrw0[ 9+Pש9>8N ϯQCڂ2)e-h\06.i٭Cd;ڢY*9@ "795Cм"e|fb&;ETNTP*`xf֖M/.H !/Sn)vQ9v2 jB#cd'T|Oa=a\}<aHN[&2 TԀ-]USaQ;-e>]y T"׊H,5+.ICo1W{$9.LgaIN$XTE%M)WV&ڢd|39 #D3h&ѻ344 vV:>rqUӺ1ԝ00Bdz\BĐ57cH) <,,)8Emz&B3mF;/L]eTD% N8o-/5}v!8ib R_Θ C43MV[ȍqJ8uxLyMJ@jz0i;(CJd]_ؖpߞ67c_2ܢU1ږ+aг/=,(NJ Ӻdp`nOpf^赗*U0ӷEn^QQNxRSL.VC Q%=}v?\ endstream endobj 1310 0 obj << /Length 647 /Filter /FlateDecode >> stream xڭ[o0)XԨ'vǍڠ$,|FREcqLd3l:C0>"m(C,PYycqxodž".iW~䆛q|"I 2O}3 Q@G%1!coUmpLARi]`NmOx 0jO0tl fym`þs V`#[F;}a"I B Hu M7ƯH N, / oRZhIyFpA)aRa]DTɼvhьd3J ۨk 3x߰#kN;LM#$QlKF#Y}وx,Ur>c*8 >⹘,qhiCAE~2\qFr%meNi%?wq8d8UHwp!` !=ղ=n`sXg8[ъHeʑr?yd99:;i+Liw넺8i^fY^6KA#B݉޺a{PKv?D \ɺȷ6o@ץ\{=dص>SNEz_ߝ% endstream endobj 1314 0 obj << /Length 863 /Filter /FlateDecode >> stream xڥVo0~_6!A<;_L@< $]#Isu`/wX B*@p1[W7R,-n̓Xby(Boub+<ރ+H"szz؁1I,GqTwN^Ϧd3WsPWBW)F̣#՞ok96'\ZFRwE} *tz]t()VtQFI.}r{}jX ,l`-!f)I29no*#ŊeHq%lP:\f~S:>k*AjJD,UQV qWDpq(7%)OǴ[ӵ?$O6gfG3;W5j7(Lኅz[L֠Zӝmmvql`ݬ9nOCL]^fO̪hDBXvvtH770\f;26 )cA endstream endobj 1319 0 obj << /Length 1617 /Filter /FlateDecode >> stream xڭWKo8WxۈIQZ>CnUd:*KE%. z(,|XJY; p;g4,Ϟ_)5Kϖz{MF澔ɋʻֺg)-.KR/d(OO.%"F/ 9fA!2$<*Jn 0)dtS661pV$ɋ`KE㭆SӪQSqWaBoafYykE\!1*YsS)K'U{We1$ jц@M e_OY✅cLq8?R;-(I"DlX@x~/li7B^ZiOn4<@նH4VF$(dѪޮ:hz|+N5}64fK~U@U Nmh'xpl*`NeӞ9UDݸ9κ8ȅlvXGMa@7t&y /KDjquV_:쬥mT4P?$ҭ 4[QG,Rj [②[CU]AC4l3|2FecDhk]q#b1:!64)Ra0񏥆;;; qȹDnP|RhGJXo ᓁa]G!K8ݝV}T2:hC>rJr#& ~OWF`XCWy6 XpK{>Yj_p$O{x I2WұH$4Ds(Ii=P6bc#ݬ9ŒQQMZPnsJNDg9B)5r詁W:h;ۚMm JUbЈ)$k>}bD0xϤg6S ¾ǒû L^8=GƏ*p+6P? Yq9wHࢠ@Yri5(2hI;{$278KbAh2I[[h(޼^[^^҆f3l;YAS5=?盭x4|D ?7L `Nz:Wh0=:hP|TN4k]hWمC}^ endstream endobj 1324 0 obj << /Length 1264 /Filter /FlateDecode >> stream xڝWmO6ίJ쵪Dzݪ".$x9V=Nvd[/gCi$aH yQ~>z?D| 9ޅ8'4urĽn.[T '=8%`δ6M8 wQ5Ҽ^nYn&lV4plJ˪C1 #(gK1+Ii 4AB"m0YC Dıa?jW%5p5F4a ̹ưn+q݌9A1SJI0HHبd>e$k(b]fڃ+hͪ1ZJ(&fz1ڀ ȇ;t׬Qc0$I,{(9lQBуFօulp y7(YSQea]6ș ^yӿFFWklL[9-+с=|UiըAiUik&/v,%L.kم F|8XM2viB[t&)٪0 KRt͈c;C[ۀkPY3~È6dl۪AWR=T:_RMZIT7X+Nʪ Sa-+ ;DCDŻ|5+<%7[E.>~٨ӈ4^w`QCҪR#]V"/{Z ύZu{z8ؿc > stream xڝZ{o8"""){n{h;"`m:VƸ/3R&qA D /R:(`Zn/ -arY 2j~qnuښ`Rpb)JY,2:CO_]XfB*Q//GBTI1|@r$K&dyR2.$5ʳzUt]?RjLU#է\ڵcəʈڡZY{{kەb?PE Vhޫz)i4zL4xb 4eA'q{ov zkOUP(0\3C$pf.ꏀW vgV-T h6|X4Ϣ ]]l89DPsv4`t4|>i9QNf:6)zэ~zxYDf8 7u MM+Mww>RsS z8É8SR72FC1H:nTu(d`'Gv8P r>Zif|g{bKʣhÖ02mg&B)\Aiƫi )w/li5h \J7&n}{#3'mX|!0.fK>+b2qD.H9/(̉Ӓ:hU_02|i5]r\Dxhװef.3tjS3ꔘGM?wY[SC]Pݙ?f04~5;?a28wчw@d1Ű#{vfB-6Hra,aa}:Ճ\s~_N6'xu'  Wz~'I=L+ g|<fa0 | Ih2uvAWS(2ܙU:i >`N>j#9|FF~z&c8٪lm\q=ur\ꗫWQhӈEQ } $p{[JFiEɍsC3EA|h-4& \۱`͊*z毨-$-m D_*~.lgS pN$9Ի'A+&Ұs_!ϑjg!D,|lF،@H|=2 `q('s8&p8 >Yd6f&T* W&0H*OỤy 3d G c(j. h:Zx"&EtRT gJCnsWՕ颕1 _ o &1X'%g%ބgJ5NMuzn,]H>)z6#PH1w+vvUj%SHJq (=ةjlFW^~^Us2f T|dX :-[_L})cp!zTu8H X%V%n&`@T-BK[! i634rcB/,p/mo1Xt9Eco#n&X`L hǨ4;8 Zd;Xe%֌VX]|/WGs4/MGM<\\zwnYJVΜ_ *<B1) wXs{| ;7ͰRDaKc *U7>Gs Ca5h(KB",I(P<#8IA0Npإ&6sjf:<{=0 $[=ǾM;3f3.^Iʦ*G9ϑt%x_ht6 endstream endobj 1334 0 obj << /Length 2503 /Filter /FlateDecode >> stream xڥioFP zaM99d.nŦFAS4H-IQ}o 9)ia9}/b<^h)YjwvAo=./Ͼ&IҬByw|ykvM}+ )ө)K&w36jՕunX 0W=LgMv Y୊֬ MeuK2#M 1f`<()9K9 vkl]=G0W,U%JT!6Q׍ijq _-m+uI$=q>G,f(bx,5ZE%2Pv2Vve}clU;ihAIIB 0pfnƮp:zњʪLvdK obLwWB4*.#`%7Ji;wrg(6-[C+'xX~s1ҞcV gX?9!2n<Q'*Ȟ/V#.(aS~̀S1PpZn1@ Ni3Yr9dyDAȺ\w0drJ8]1ݡl~3Ld˂&6 'B F1ӹ3~xޠc([h*](6C\]ډ޶}ӭ\|$g: RTEI\KHghg&(WZRBڣ@E@ij%aDF6Y lИ h SjI6.twZk&KfXi_o@ d,I-ӤG{5xm : |Aע ' D.dÐa5ز¶.+a__g:/ v宨[.ahLeꚈMi'OF7Tcm%'$ɽsyt/"UE*JBi<ݧJAi>CxCOdIo}̵OYp{h*HyW4You͆Ќ4P̬p 4HN'q/>*7(b}IþobGkErgѠ-@]vv@C4>u!r5slKo;"b44UfE|տ@,)b7b4>C*R 0+8 }09GҾ\7g砤&`WTg=9}t7xf>"x!%#;:TБ2y8<;iÐ1`CWN 6*8/v$<'C>R&3cHi\piվ-f;-/vp7{2rLa'z2Ρ4c%lUl𙙞^]{,2w0!tseCi{ke%pX2!3KHkwTcaF$ӿ ݌6I8)ZW/b䒩?y,łq Ys4Tg* 3D@~rO;OԱ: ]}f*k|^' endstream endobj 1339 0 obj << /Length 2332 /Filter /FlateDecode >> stream xڕX{oߟbq!ZKISנsAK]!Zi+im/|p}vac87>E/b)Y$lwfqKՄ˷a>K/SVV;,WRJ,WAzﵮ"FїO}TU] ήAB!^(1R>/rˀDV9bmN0Iִmu_־J2 p Wޱ* 5jثO0jJo3+.'22B◔BJC4C$p\Rͬ%bEaOu #O݂Vq(ex ;4F[(/uqHޏUivAĽRĖkprh҈~lUKo+ 龺Yt«W?7luG <uE]AA0w2|3\ihiR;;ut=A۟ʥqYŽp-/8/ c&O-O9˔E쩟 Z ?L:1-qq[* \[rM  '&pm@Ⓤ{k|rg`ԏj/7.1b?%7ĝyd: \0 ov*kjgiK&6(i0(ĵ/1HXx!F!uGy' hb}>,A' tkӡònHņF]~ IL RmQ3|cY X0+p:KB~ArV`Joc8ym8Vښ#MIv@<}CMm+zRb'7Q_iشTSR Y;ǡclC1O Z#r;sߛBXCٹ6b<|,r`A0UvyV:`6.G]WK(KT?}# t*V*+̶peS/<)v۪;wnqٹCCne`8ؙWs {؟Ov{4EnZr6.KKdo/ƩSZ{. `> endstream endobj 1342 0 obj << /Length 1299 /Filter /FlateDecode >> stream xڭWmo6_!@+[ dȰ[ P,: KDUy,ʚA>!s4s|cN;14ڞfspq rzɟ'/a>M9"wޒכldzs'DH !G7dӺ^0u/~=X@ x$b-9h Fc?qDP^.E)\.GdZC!9=+s\x?j\aR0㔅2kնεq@ƷJ8Cggsub 5ݭ6Y ʦNfN⡛7\,V5jS]v빌]^vϊj"% a;Y)=mNJ.Sj gԧhEU-?HT`ior0P_%\R?Fo׫n$4ѡS_Wt'B&ɁCrYJfWjVw;#qhkp G6(tDiroN `D%*7'"k O#&-1S!xLbZ jBޱ[d2D%sdɬ}1-l屈TY@+OT֐HWA$.eAC線9t)!#7jP" tT>v a~=qujJB%.)WpuGTV՗MaWn$\wNS vYUWf `RCt@Q7SJnwznuY(IZ9wp ćGNk 5UdӽnAS_V\!vrU+UUMU9.~VMm6vqev[Jф`< ^HyDHW8qOR y؝,k}4zF56Enc2Nöox3\da&|~i1^ endstream endobj 1345 0 obj << /Length 1086 /Filter /FlateDecode >> stream xڵWYoF~K0܃WV#-Z䡈b4KkE z=?Kˈő"'!2Z@-(xݰC)ij>a6S*Lf0jlA43vbf@Y2iy$ JSB>Ј^ոQ2Ax kIBV`xQ~1?B,V)8qE,j 8Ўz?5lj9b^573u FI0>Ajx:j05/#{ ״:Ҥ^% Wl5mgRʛae]hBIɚ'wnjn ^&,N$#d pSmvY6j,Ɲ<`-ekgDbQ ^]S,67Ez1$>~9RvHfN |d2M@bFQY]](by&,U=2ifWUWZصLɓ8v856<GkpE|YmMC/oML endstream endobj 1354 0 obj << /Length 3240 /Filter /FlateDecode >> stream xZ~Ţ@/rfŇ^ɧ4WCA$Ae[,zt}Aʒ^RQ$5g~M?y7"5M~xPowy%5L\Of՟4HvJns>;E{ZTژpΛ1*x[ UɪJQU$o뫯FB^d#1l$Jn$JFTp#e=b֡C:0 D$]f[nL*D0fdPxh˾f˝v|yz#. bWD,c7o&J+j@XƮv[MϤ`H0^F%gF^o,LBhh!Ci7npJɪkUu<;4qz%--g0de~]6qO:/ښ_P8  H`wx`c+O]|.ڎey^쾲؎m|Vfԑ Ko:r(Ѫ䴉EA4 kI h/oYw+@hPDLc`!뙇=HZCW;72NGsؔ5'@<lz Č򬪬`򠚱=P$ A/+q)m&€ܽU; @j4=z4i7 exe+YՄS)z! i(QZ5h5"o))|,:b6j⃥Xu aF EQ{GUT؜X4y]#E\u :S%ii$q}/mFfkEb#A{ߔWJDgC" Gѳl.oTYMJhU82l1.= `IA1>4-Y*c4"8C@?@_ Q?t]@8KEb#"SH[TDYrEi0J Bqd]!Nhj~f8v}?[d]9J Pr! {Y<Ħ:NwUsO::z 2eIBM☵=wә{PrJgC6"6Ffmp$fA6tYWΡwT1nH~0Ѩy!΢Tn(9ǬHR(]!֯2fkOn#PqzR̚~r6vsڡB. /0"juNJzCX.Ѱެ%G]#|xF":'C1suQ,hX&DDβל`pkt`.{B[G-0zu w޳DA_.z Mv6K>!Iߴ!KPp]@g,-n!^w=YM۰-R:j"0ӝ?~Ӕm߻ck+a42b2+(TETE/d%p(1f}FKrM,ϛvj)M(J-"8_ ),]`p^(0:qFT-"*xIEFVFA\J! t@B*SL/ Mru9p*S~0(#D]f AJlo+L/ob0BNGQeaKXn}ZŇ_V&²!|((KH$>ew+r#rW~Lyކ>)P(~qXx" PxR86 x]ؙGI@BO[ *|Rkٛ-ZoW(}z422 Ζ,KcV2OoyJd;#p K80eSƟ; K#,ys_jGxSX*Av"^A[$BPzyMnz2"$xlgܬcR,Gh!"2?xhNm*o^8]{zGTy¶m͹8 ,kOw82!ɥoe%#Nr1ա`+EYVè?zmi endstream endobj 1359 0 obj << /Length 3092 /Filter /FlateDecode >> stream xڵZ{sܶߟB!ċԓ;$vVyNȪ],@⦣n .>p(?~G,Wr y |zgZqΏCV竣Ϯ' )e$OJnYm(7e[ߔ0oqb"W'":O2D8gzZׁ3,$QdP%b\*Z1OQt\(1`:VP;XakT<2oqm0E8xX'#Ibz &HY&evM'2[Y:A4vHs}q3р &IAP#{Y,=Zpɸvk6 )w$k89ԋ/Nq?xW+(v8M~(D]W;dۧZQvCp =|Vp\?7694"rAѮjɷEDC\fM ]_u˚' 0aeo#bYWD+ O5X"e_J>,q~J,uWKW-Xq9Rk4+83† NlvnxW$񂃺iGʩV:ETveт,[Ê P^ч3:3tw9 *fB{AIp 2qC$?@snIdk@@]+W9d!x^7)\O&WqpTgURUvz`8d-8.>ƛÂ֋EV{r)xF܆]6y$> RXu 頣̪؛ݪ!)9)DJK$Xܻx9i0' H=Bi|Ɠ iafW;5mG]Uݸk~NɅդڷ2 rlU֡8XUu5S4ېaa7 4ܟr?~CR~pIgUTv*Ӳع< <ȼ")a{Șbr>B $؄a)&hXfiD2d"f|UײrK&ON)+jJG;c3t{ }|oI=)G,oepjh.h/z]mQ|ޘ-J``gf2c!`c _ c@LyʱU,q2@C}41`uؔ;В ]H\%L'|&z*igod]@ UٚX*ol~byQsejcAΥ&{2f`bVD&0#[QBOYW95{֪sa6a9aT7v/!2aK?tiv9 Uǫ][qahL"TX9gԮ>Ӿ1+L`~Nf#9xYӢwL[vP#?N׶dY`J b~wo3tpU*/۳ּ f}t)n+:PrOuWDPGC,:l +!gqIuEY=v~1MPDw||8yc]mO5o!BJ%F`GE]A(&ppb@@dZE e8oS] u/ &N!Wv%6]Nf;o0WsߑT}:SQA oz{h9Ek圾2=CXN\ģaУ%*7Ft ߚ݁XMޏ/uvMsd?z@Lxff$C3*5m_)Z%PrZBlAZBC7=(ev%d;eM73ֺ-Jŀ5ZHt2;n&DIk4s v5[,4I*wRsH}W*@) |fYq 0[)ӛ{Q?y|q=&+ؘESX*b]B0N%~ʸ&]\T O<{И t/./kQle' +06/F]Uhs5d/-I5?7?;}UHF* ]=qYÁp94PuݜmZP'7օf;ZB0{e@rA$"YJ,RM\`ંƵ@N纫N|i }rfYWJ?tA|iKoL~|=cS&/Iv\Ldb^rwT?b{wsij 7i0kz+#AN23a endstream endobj 1363 0 obj << /Length 1643 /Filter /FlateDecode >> stream xڽY{oF? k}ۀBU%\Q%Vھ߽%Ԫxn^̀G(IJQQRZ_q<}( "!C2KtiLJ`&),, eױLϕxY b]HRIpjq<6:L|v캼)oIJ#\I*Ĵ,Mڬ*GP{/ZDzK%J!ϒ?c`Α A1EiA I;Om#A1  &e5o!j@|3\1-i,/5NQ*rkcnp:pߩW湽`oo?[wC_ߠWE-su#.~뇤* }fHJڋH.̗Ϙ5fEGM͇9L̀VW&hexgz0/uaN.OJ.T_S;M\ؓrjS!Qy\45O^PsE'U,u)7,bw04aVzoj3!Y68kR~B=>p\|i %~=Y2[j8ֵ٪3YR=6rTEꄩ1[w?_ $5s7P65 ܬ݀B@<xjCǽLJF+̙FF D- E[~޷!m!n%iRl߆=^_T endstream endobj 1370 0 obj << /Length 3243 /Filter /FlateDecode >> stream xڭZm6_ap8/Dzoi/9@!֖ڒ+l=BYi !EÙgk!3<\ËBF#}7q0aYnSn?,ǾloVedrr.^+M$wE]ܗen{vX<)%3iةIcUDw7+¥n$5"]n #vWu4ϗkϰ{06en;0[:hШGiEQ8TkiD-_B&YbdOD7'韲mM)~Wh/&6M-N^I81fk2W"La 3B6OsfA'(,8üb?`9=~5`Ʃ_.-~Y.VO/Eǂ ZȮ| D]NұwcDa,nBt&H o/{۴8}<0(]6]ٽ޾r3{|nyj3>vh"3ᛉdN/;8U}@_*Sȥ[XLYDV:]:-?Ꙉ*bƗ|CPPc}ŐK=cEIY|.˾¬A0n8Jt WsvCA4UX.ԅZ֩.eY,CgtD#yO4~-U%աd)29kضyP9Ƈꨉ55$2Ig&fc<~)\l\GxR jx_NFKLYzEyxl閍 (!|=͒Nk1#'M0.:KXL]аuv?%H׋ld4#OpuXpj "61Ł+PǶ>Ie}ߓYU@oj0N巧i%i1cC_L' ڜNs8Z#,9!U1:l8"<&m/5HRL^y8 `耽Ȣ"cܭv`5և:;toh'ntYY ׌7<|>%p.ʑ8Ѽ:r 0y 9ZV{4&GQ&{¸4(%8##`_-4 p 3Y4N_e^ʪ4˷&1_P|d0|(HدRfwnr(@v=G΋!:4PL6R%GP"݂EtevҩUKWVyUMz4]Bq~cI%|ߕ3rNΠҧB3l䉝JljV_2"BWכbq2GMJ7SiΉGe@ɇIqmɀu[JNHL6(H5L.KURj43kv bl'0T0}/yȕnN3]׫~ ShJEw8_F+29Q. '7.n@ŢR'VllNhraՀS6`r%S"5djA3z+^W늊>_%ͬ%Fa/*|G& $%F~k*M:]EUH<OG9ng"?duIb ˟еzr M`"ͅWqn#PzxɃc+a/ #dˉʡH{}ۉH8b GROFq_n|.~ޜt ~yT>}MYLius8V{I4!%K8=.IȐwhr'Zxe+rYzЂ)k?&WS endstream endobj 1275 0 obj << /Type /ObjStm /N 100 /First 954 /Length 1812 /Filter /FlateDecode >> stream xZ[oG~̜HKSUm)nX "SǑ¿w xn MWэ*2|`b<'X&&Qi(5y\HLPA81M ٸMmgQiD`̜ AR2 (]!+.]?蜡B ~l 6%NR!; ~M~^ͨI:f d{w gsD2MX0bXJT.}AUz60aŦ! ڈBV U8BJЄ,Os0&Ϛ+#f/Ԫ&2w035҈Us!3qYĤ@0eED}Ҥr;sM `{ȴ~3~5wo|ua`|Xb\ޘEvӧn^GnX_|8bLL7_YBiT&g|y؝L{{}4{p/)W 4[b7yb ж %L|l/yFLYGu\cCp3,3\nrJ`Mŋz|trME[{-{*-)CU{ƛ?u?t$[IAI u'ợM9Mbv7fC8L-#WcJ.A"ʾ5ju ;pxplѠz[(|~ni ~ڟjݣ$ X'>zBGGָ#kQ~`-LZJQq52Zq#BהPr6_]w~Czgw( 1 $R xm45y$i3&+s$jTꉍnRr=@` h2i'/ 7POF繄]cj/*hs͢uwu3ڶ>1{ }i-8mۂq1en@bAKң%SK\hs dZф =IT$ތQM\u')do8MsP<$ HT(]{"]fg/.e񉨵e_#xKZ^žGZṄSy9<-=M eIu]n AFXd:v>tVp)ԝvÖkjMG4{PS}9?2\z5)hPZ`ʂ̎ѣٿw.n~xW$"Kqķ@"_kVǑ F݀r4ӈlt7%){ox endstream endobj 1374 0 obj << /Length 2369 /Filter /FlateDecode >> stream xڽY~UX{dNA>|EQ8FV'"j3;|xg <<^Zd*nA}{%o狛I\.ncQ7]q\\i#%^IP7g".\TY-WJd滫?'J}5I] iz>ՋI.4(x0sZThxs-#/ܸ̾I*V$y2c,k~,~sL@t$+'Mqؕu5ʖFiϬ튎FE>+\I-dBjޗ=06ʏI)OMӇ ±8uuߟtsθ>"s>I?L!R)"+M!Re}]SJ3dǫ-YGK#bXF*O{<#!qb"$=o >UeEm/+;? o7qtKb"ނ}Lޡ8,ê0hT\]uakМGȺm=_7E+;ZzF2bǦko(7VωzugiOHzK8ov{`91# -Nqɶ+H>u4`ňss?11̣]uXR ݂JFE $sV$i~ A*ze=@NЙ5]$0'H2aj$`&.v%TWJ:ק}W|W ^9eSc)|K/+3GW`^ s}*ҫ@.]^BES!n)?eY%>bp@ȈjGSeuQUMtiӵ~cSr euP_c1Sj3~{c:l\ @yP ?|IO.q:*Kd~Tx9/i -^yQ6Ki۲*Q0D:sɞ 64{!yc .&+8&mp1VbsBĖW+UbUgK(Ȯiʍ: ptҘ>zfjW{xFl|l\mOQO˒ķp"m90s{m=9aV$D5Qa`$0/қ9*Y=S*=_41P9iNH]i&,IM#M;QAޱB-6:Gݣ˛'} Pp:)EO8PgxYgg"Y}JBbZ6"X/:d^ѠNܘ?0yj<@ 7\TDŽQ ƽjҔ.} @Ï*gB@+*<}6(mU"`yҙ_Brcq?!>> stream xڭWo6PTbEҊ}htȀ>y؊uJAImx'vԢx$bRFyeZL$\s3!'f 8ۓ|89eeTbjt$I麟4͂WfGW7U4.7I DOZrrgq^c7}7(bi(<}7gQsFv8H) ]veSRvk&dJ:mBZjD|T#_]xjt&, 3<=P5_/]]\NC4Ñ«(A1cdj< pn FKv[o w4XNb^iYHysʞ'3] @8)-嶦;(gفZ#A-=8fȿ#!t1v+ʯxol_?ivڭ}ؓF[&kqp#58ZTiTh6|siyk蚥"Ҝb&-0S_CS)\5:AB~-ul21O02!2u?iɂV a%3PղS#n"5]la_M;ShM~H#+!^IyefKwL9fz VEMKr?} %Y ubU"~m]B돒I뵟<>o2f>fqb ٸ ,酰=Պ[M$؋Ð4Gxk! TEi{ [̝B ĻA[+n}ѦG*I-<ƦMi4'#N?@u ?eXX]#hPkh`mZH ebŅ+oV A,ep ٿQ=ڏ>)?`:^iC[Je-T7S*$fvw$,4Η>;>)o,JqV3NQfjADP\#lsP5"\c*AV8$A/*$+-nFz ⊂[G|(K;}iVHs2˅X_"0O5ˊ"E>v/=ܦ|pė=/g\1ϰ)VHǧXgBۖ:-I<0ggc?t1ޤ5P/k[,⺵tGͮ+Ȩ_{x~ІE<_zcfڽ_Q0LA'gg:ޜsgEt#fo$^%r7+7\P?]҉2tP ˼q}dyDcxTPTEVo9gZJs--Ou!%3p/8[>kϚmqn Hr pP%qG9{]k4W?<,=K`Acw_87^ endstream endobj 1383 0 obj << /Length 2739 /Filter /FlateDecode >> stream xڕYݏB-B֖\~H4CC-HBR>}kK8ട33YM zSƛf-zFy)++^Sy2=JZ@$&.3e*3fA$SF]웽'ytO,詟<7v.q$R RJ,A>9XDtZ^HXg^j"wC؜A)c#MFO+:!]@OB=M2Iw:: '|c4fIA6`_.pX ܎u8Q"bRf|4qq<ڗx f kbx# >𸨝;!kG Ѥq=OiaMDxFDs5nesPT`\]eN 9lG ILo\[L gFl7"FxnDOث<}[d7jGGwA4Dp '*>KLXDŴ#f֜xl,Dhz[:Uf_UPva|DѮ1Yi$RE邑Foo NTHtTL>\FPc@owq@eu{_T<.ąߟ'Rew o-|86ۭUgv̽4bDPiOө͈m)ܧ38I͛e nD6uKRT%u g˳Q(!¨4~ZUՐdRcL 9*h+ZD(l<6``2/ BdJN-)HA)5fN#7: A~8]X /KE0o$ts!^ta| 9̊8Y rBQHJ"FԚp+Oq%uKYG D,Y.렄 Ǘcˏ2mfKׇGx澣@}pܻ6^5KέiC W Q/ }VU;Ӊ= P-UM/b(ok+nFꖐ2TǏ|Tu A'IL;4oКIRsaRDSNI@J6XY&GyhUh$^`:qdn[Z_M(¬Bʿ1MFw 坬~X eev.#g|p I, lf—Do@`)~gw_*_ c+_&^㴘[5d =42y_iu"N; wDzb% ? ʒdsaZYL!xg5>"ę?CbWQʱI Pƪ̊{ C5odO@ڡYL e=![Z .0̃yo](n,*+Um %{1p:1*էw&7ϴT8n]-&5~#359sU|cEV w"Pf\f*p>(sfAy 1l+'Nܖb_/.W֞u,`.>?'*'1Ut%s,3GIRuSlV$&xv+4m Xs{Ws>+lTp#fPF a16I-x40D +VvڮחY >RS[ Qyx\r񐘥3d,VY pFa@a`h/Si1ǭ*,3ɠf ;C&L 1S3.֍nF.m˧v^>ZtA9q endstream endobj 1387 0 obj << /Length 1821 /Filter /FlateDecode >> stream xڽWKs6WVjbHdrJ:I;^ZQa8H(͏. Ev47v]E| E,Ei{/_pG ŷodC_:n{.WQB<_8 L[h X/(з+H%.o?^^!J<6^4f<΀yIT.4\,\֠U LMqBr+nzG5Q)BCu_溪$0]6KGl3mZZ[2xؙH,Os Ju6ȉ qTx#| beH-VQmuޗM R3HHD zwd͘eI"0VPYD>Rm&'IEN sT3~(SAt,|j;@ )b%1BM(bx{',TL * Eq-rR52pEax›`M|1S~ izZ#"r:YA jz{4/ϘCz`X'dۦu(GGқJ+B`oD* k8IYg;/2YfOrR OԕӯM%@58(q;}j VZgJS}R ?uGb y,JC~C>vUvxԵWHO;Ok\ ipox0:z8un3no,[9U0 ɀ.f(g" 6ˉ >[g9 vNo >C& 7; 8u4權Ml@_67 <Ch(|yoGhܱbl- w#LӦdUz0ks*TR JJ= @'fs' :f"y:@JPEE>xK3H{SshЖ}ojWiv}sIui˫n|vN՛ (;mͻC0IDü o:ڻ(ci,0 "0)`Ɇ?RI𦬌[-3 "z(u16qmyOdH LJA},e$KiT@wR0&˔SH:8~ho+Mm&Q[ߔ I$Ml,@rp( J`OizR㝘lgS *`;D0zG®6{}W/ <.?YYQ$]3e> #ardVg; K{H,t)g 9f/ZR)l{]rB7_gsi&^Ŧ,X {P?f^Uͣ|S1=Q> stream xڕr8_3Vԭ%Wއn2mq"KI_)RdA 0b%,<;Y{lW@Q^_r3؉z3ff_e. ,}3_~`}VOeǞ% nF&?^PJ|*f8};JY|+g 7C/-gvVs` |@/+bB; ">+S_lUsgZnkEm.[>M Fnaz9V:_F92tFO,s%3r6UQ, GndH#퐾+Z ҡLꬓI4bMy[]U:$8A]7Q݆;Z]ľV*qCshN=@ (G)q峝-&d-eFQ@<ʭv൪3g uUcp{SJc|ɲBLC4LތywCnxH{tԪߨN 4Lי7'pXiҙܨP7f 8K8'lZq"ڵ59(QiWƅHYz򊾡-(u-3Yk Ϸ.T188x0SMZ!=8 `)/HRO ́0 )XR4,K EPb=)1ŶJ82JD bi\́5b]RˆjB|F"^cBt $WĀz.z|duGdz#QHFw#x ~kub'8 @kF*̂+ߪz'S96ۘv !ѱ~*(u [9t+ijFzNDPڻ!b=^ؑc'=RC44^PyR~wMF^+#b2JM% !@iEEXg,R1 K-B[Pr-'l"jlJ`cjӉ`'[zh$"*OrkX)%n_t,dB4O8zR`Py.I%W1cqnjJŁy!E -b";bm0TG:y76T0} 1:5@L!0޴ Zvu*EuV ʯ(b\ɐ50!4?;]/`mk$z8b an"{vyLX߱b̟;@_Tvd :V MN I^B7}wV(4=Tt8lUfYj$ WR-+h乽HB6^+~CQɅ,qO1tw#1Wv,>#4֮{:=heV5/d eϸR!xT8Ҧ~,+̨8dvh]R r㸣Eخ@ &T. *@JPMG|Cj1"&ࡦž[fcCI.,Ү M]&4vrj}FD2P/G^4dW:;i摘"ʚC X-pp&hvCD}~{۫rqqO/c'u8\AJ}ȠO^^M2:r۟޳ `r?P ֝ZN3T)~W y;xNv,&? endstream endobj 1394 0 obj << /Length 1919 /Filter /FlateDecode >> stream xn6=_Ge1fyI-nSLgb:0Ȓ+ɘ|CRd+-E<<$?6KL Aifua'7:coQЄUj9\gs!Ds)yVoFD]a9摦_ҟϮDc2ՐL&5Q3e$aBzJ=}~"pIƔ~F$b<9gݙaJB']ke7,$J2J9HO eusr -@&~W<`olU[m e$H.Qt:/l9EkX>ʤ-F|F7_-./>,~H/Z\}|?u ]aˬ\lv^تxIMX+i.2jjq4U Kt V ekl8z^GԺ{QpuGPxM[mCU'RX}=4SRW[hΦ5uzHo5$h\-䢓u ).uNv|EVzF*T|HPP1YQ= Gq../yg̖ań~܅NR!G1\Ͳo=k~H6f[փPg夳H^; Ĕ) ;gEGV7Q{VQ$J;d +{ yzT;]rҘpC8SZyh^{͕5iӦP-EzaFF:4q^9]Tn*,]صep^ ۼ*"[L|1j1&O`KWּRaΐ1ݒE.:ʕf1z@oű^߶|\b~9jk񣤡lgr=8UQvpQJ#Ydڰ[Y=d`O`\8p`6|r~b\87#FeBɑ$~yOS҃HQE3}-'vºwj?5lٹ-(8U2NͧQ+IR%]r ư$yB1xeqNd{_l?g_f&X۳_wīM|<+ I_j,jj^WPB \C|]CSiP`o8HP`λjq:EE66~,6[yE -tƅ;?GU>4`ذ2WF3bGYAK8fP: ȭ= 6WB&/]Zא0yb1gLrSrcVN= aF 9-\eUοۺ*V-$uCn3VuQ#gY^Bq6vևhS~ >pFILx a0|w 8z r5-]I= 8";G٣;Ah3A00ʰuv W> ToUv>'8LHB%$)M$&I#%h G[y{ZSml߆7<dRAۋ2!ʜ(sܐf8)$JR!5aF@%&GTPyb&_vOkPkRa=\^IS`w  M \vD|@sEB|'!+͕RG1> _s%zqخR/_M endstream endobj 1398 0 obj << /Length 963 /Filter /FlateDecode >> stream xڥV6WH+V)QESzhK`h/Q2$P^M>pD <-~"䉖oT<̎?~/l7eoH%ԶM޳7cI)YQfJmϦmZKJ}6@qDZId0W ָ]ִrÃ3D5H9ϛ&3&d1LH.JwkLˑt1PRAfwq4O:L3c yX.\4F*`g%R E}`;2.cg΅JU!cҏ8懣Lo{{HchZ8ע_3JǢ:LvAm:M[.hbmtIuX`j$@$P$pI \B@#`BBb 4&FmAo|餤&ZъK.s9tôzG7\j uRhJ>A ְ% }$>YёEm( #A$QR#aEk3k@Z\ڤZy%-pd?p. M~<:?6nzn? Q3:܋Kȹ.W|WqZ@h,84ڋ]е(Ή=᧟oi ;͍.֮[)[kQWUzk">k\ _}8V´$!MG86m%^űFd-Qfǒ)! Ƣ1NߙO"U*{&? NmZo4vM;uԑ_)uQș endstream endobj 1403 0 obj << /Length 3091 /Filter /FlateDecode >> stream xڽiŢAbN9~jܤhڢ@$3+V%Ra޼7q;!ɴi -B"B8OG%ylFg;C;7ۉu[Lk3 Vps=}s$HegA=|Wi@i|[[>p]2%rH/Г~2V:gu9\@7V$; Z$ 0<I޺ԘA܈Aޱ:݅ fx'q"Ir -*[A #_[9^kF$6Q1Ɵ|nC^0pNMȜuSȼzװ32 yĜ0)$gJE[L~t4ہh@ռ wԤw0pzZ.C_Ĭ.Thb5$S{_$UH@88f@.iH oL }a(_$59g..LY0UO yS~yn9tsJT.orLfPHx :MV ~\f"ϊVLCr\Zo4Q2 TBVkz,u$ (ɛ#)/xRB1BߢiZF={y]ր~c] 7 7薮M\M^'gr-' (Ri)|Qߺ,]n=YDSzVBIt2 H+]XD9t 2 ]%mmkm =vYj7o|лr t U}Z[ry1׽,O"ShRAQgASӶ|%zv\Jq_kqܠLD_j~X+p,5A1QB\c28S0|_iLj;'&e nM֒9EPaVM?uҺXjoT2@[32{߃=CJ;_UI*\?#zLNȸ i&UE}\Zj-aq`CV{[_O҂uբVɳuG@)e3ŏw\ ai~YҐ$@Ѷy_)1M| 3yx~DR@6?u"kmgSfвb(Քݝ/v_Bb\%)ܹ {vɋQG)yEǮ$ k2 .߻ti1fN6|{`|S޸ ɉMI̅T O6 JLm\ a;QA(&粮Si"0{^# ~xy8D@# %ddV.xSeJz'T8Nu'T3S  JxjPCFD]tKCO秡ۇf暷w E<i.'2&^+ N1s0T{BC5UK Sa7s{vqY!R"d/38`vy?傐P7a5]5XЩ[5EO8b@8=!D=ʲVqH'bteZ'*5ܣZe|/Xʑ" xSҸ<E2IZj kq[sWU,*?(:MTSь [ təz{9[*[ʆ1-#Ҝ)nSDH`e2[Koֿ6ּ|W26ʧ#Ng πh}|5Yj7g[R [}<>\Р&3 ;qX$ ŮCں&BUp3\.L2P n~SE6oǨ_ZݐcU2Ov :[n0C\_ <2KZ0vML)bU\|QY?K:c$b v>p'=|2I'Z* _V%یľZ/RiF}UI֪taoo endstream endobj 1407 0 obj << /Length 352 /Filter /FlateDecode >> stream xڍRN0+ Gq)qDQ$m"51J\uB =<;;띱C\UmDlF#t&ʛ2x1JU ë%z~w!2NTF;;P8kݗ6?m?WeEJHۂ|\;$ [dAZn7Nv5n:\]ʝyN*U~syM38xx{ԧ%\0By&{=L(Xs@,W|y@.Cx ^ӎv:99̜c`fc4`+ڴxgS#<3 endstream endobj 1411 0 obj << /Length 2126 /Filter /FlateDecode >> stream xڕXm~bN>yH%( R$8A $ʵh[,m)i׾3 )r4Pß)M.%+Uq9~nh^@/~FpVRnn_w{s?XZK)T}Z+OPwmZyeIVŇ(MWOABWV(&"RZ,M>"i:\6ex`A2KgnwUZ$=qo[Ǧmpr?EܯD{r͉vf hôaufo?"qmT`쬷U -H_ &fsOjOUvg]7R*['lb <"Áa}:y[gi9mvm/5X$z7nth,geY^zVnlpʙ{:4&p-Yނ*Z:o` ݏĞL4׬(oKV2z;H NvzIYY࠙$W0Ɠr̉fO a6~ ӷe6P/-d|FY^lӉֳӬpE2tkm0!B&#ӄfl.60z.|1tI,EfMB Z7 {3> `A kHd 4T5 ]K=X tb~;w023"ɷ-zwԛ1uʳ8{R#TLcr4T+>4LXYĿ"bI>.1e<,>h5`NA$`_W=?4rm&@o\dFyATW2|!qƤCnS LdHҦ PN\M̨VZ$Ւ<Ƥ> \-sRuƫ `4n8Da9, +{ 51}XybTRDEEu1ƾA,Pu2'`2@\2ۮi<e~ 6U˩ED˳t`GKr '#9gL'?_ocdRo/BB$GՑ݋{> stream xڭUmo0_OHĎ}^4 "Y6Ҹ$^s]$Zv?waA _q% -DT˽YE="Fӽ XL`t>N5_a]ՅQ$0BlmڲAǹ*g]! OOۓ%F>Øƌr&ǘ悲D F.HLˆ1L2k,CpXi@ i\daƺesro}A>Оb:8Fapydhniz,r#T@ "R~Yi u+]\¤xI{}^3Nwg60R𤐥{IO_= ysݣq$TOCۍDoqDH?ujjJ&LV9:=M)[lȬqaYlc8Q> stream xڕYo=*"ٗ"nهu[MbCq3dlm"E9ts>G*?uU'WqUWóV~ᙒsk8߿+uRћR*zJo\x*Ƴ >zB_S9e<r*&rъyH>v㕎;YD}s2rW0,ʨ[X*UDž#/M˸TPPb=|gTnlq q]Wȣ $WF [ӓ2*+ce0бbiZWv=t[eX[>rjp6a #,T]騊4β(hOT" |T|GT P?P#LFE}p2yS,|/&uI\rTnU"U\h-dtZE_yeGƉnƊ בFSuhz&hiuQY381M:j A&{x rBxwڮ>F|ɤhDf92qM,Z M{Z)\P @ʒf8/F"kږGGMo=Oїi,w'm\dq6,EAt Tˬ󹹲}vL{c" '?w$N'eȮ$WEjTR 0:ly8woGwK!*NH~Iʑ|`d,``ޚ8A) 5mn],aVF7ݍ eak2~s%uc<& \szLgƅZU' CO딡%t21,[u-aySk~=^LRSn~/ٮu+~ǃ\ 0&LPc6V0N45Va γc)0$sqyy}qG6 5t$aOJ44v rfʄls@JRV7~pKR8_lqN'4֥x9e - )0o!x>C7m4A<ÑOK dgwXٗXK&X]d X'|2xK@ -2}?7ݒ+ :3J9)3̺ J'_-H'Z=Fz4DlFϗBh΁琱E6gO$(.lND$j@*[$[?h.ᚄ齒3ܠ`CoxFt|)l ƧqLomgQz"Кqƪ_ڡaf6h1WRrfı $Ydv0`-ōi y@[~'Qp5SPL_qE+[{뭥Mo Yĕ /ñ^;{)0h'2`sl3\29/g|5~4ѹ rjSL/H`_(؀L6 08 >K4 O%|Z~&/sa%԰S UI_heV~" RIfONŌ}^a|~iWj"w^ nu|-E7$ endstream endobj 1421 0 obj << /Length 2575 /Filter /FlateDecode >> stream xڕY{oߟB-*t4Kh86QGEQi;>" I{{䉒-wgwّ::)LHED޿PBň/NETgJY;/'IBx=pŻKI);Ie؉0YLl4X7{?Makk[񿡾xoYҨnwH)ԨR`.+kzS3+ rL0szt 3f'Gʦ;Ue2Z:ǂѩ :Q: @q4]ٗMSe}.T׶T,7:]o)ڑr0:$Gg ѓ8ne :LƟ,/V- ~xF^BQ$2a|LS!nO`^wʔw3pu+4C#HJO'6 :g)?Kb!r\0H/pҡMa ky!P4QnbtLew| {ُ͘{Tr,AEx?񡇄CeӨ-G>Ig8|Ij8uY4]7->|./y]3 5U{#' |2H2C~.Mx0)tN|Kpвm^z^ B"yL o@x`ik8EyO-1{ꎪp4H| _}ݫ9r`` P#20d1;޲*4" ,fgnԋÄ_a_hWSSރzh:G09ї0RXX?͊U18*"(V 8 h4 8cH6_Pa{ޭ*xyXvU>K9ﶄrN @PyQ Z0d"̩Lia</ٳUräxP'hxgD$vs Z Ƣ ,#o- uo}*1TempZv,l-&i]HCD G _Wy7x^I> ͪ;O!nfgeA[yoz iuƹ.IU sdԑ9T6ʏXk~s',LI¯{HEf=ZP2drHU. a0<(Mh}N %V:ήwבr=Qg߮پ^' x>^qQU~:J@ VJ|qvWm6-;)~BbǤNoMhk+IekBt㫊6Ȇ7|ggU S'G>Fv U<6}wW Q8S׵lmQH̊SSҬYr~U JegT:jiz+2y[vBY qzԒ!gF/Qex'<=y'Q[rW[-Mpt(i2m̊*/ٟ~=A§iKй01VX'=?E]zwD:tlЌe ݩPR-sֺD D?`0oj7g²u1Sal<,>_r:Uj|>h$,#|1ڡқ;:8.1l{x3PY.FYE5+.vc hxe}a֩i$7ls~m Ooݡj;o  )} endstream endobj 1424 0 obj << /Length 2989 /Filter /FlateDecode >> stream xڝZo!!᣹ ڵI]u {|Ht-pwvofVS4XMV㓀z D7ߟ?y& W* UtޛR;]?V>>NaPZ̜̉^(29P1NztzİXo1Z^sc;u`-5ٶ~u*fWs.p[|I*K1+#3Ogl:ͮw56F~6*yjț[nvZyFydz(뎼c;2v7EY ~-1χo;ZD,cFpap<[RE S4 y6*\yE}ӧګsѢF8L덵;?OyV8`l, 'k 6må_:`3KѲI -YS$l!n38-xIݔeZhX+lBđKou_Tbu M;'-O:GazYQf2Gc$ gTZ@ۮZDO Y@$0Zz˼>dն+J {W772ˁEj_%:f#̻v$S$`7^I-ȸc3<ߋ.? 6cGidte|όߴ E=0E[nyuHo3q Y|/uNk( ۺ/qO`W,$,^)#΄g&d;Y _b!~(%ZO" j7psEC Ј`< '\V&.2+CjGِ0$S j{~EoմGn{Wk3[ (E_v5l6-U[zuA<(W D ^r\5h9WXOg>_ɑti9DaI-D&"BgKU GEw ج0ٞߏB-h9BSh6n KpOT.`K2 ,u}SI3 vh5bw`ԀgKnx͘G-IʡvV*dp@$C% kV$L ݺq;a:u}l5<׋/UMsXȑ 3HpP;{EͶH$Mm ě0!1O(qݱa搁u3A?ngskj tVfݰDw/-0ْ#D0PXnuZc6\pJ&> p]IvzRd|GYcdA!oQNE,\IJ5$M}&18i46U?p$icFAo\ _gMˡ(ItƫQs%-ʡX#g͎"1ܱ˶--0*҉ˬa쌙˚@acvzxVr٦n:d$E Iޅ$x¯'H8$sHZ_=pwtҢ|('[ClG]E[{4\W81`'.N`rY Y2<LD9=\@.i&Oģĕ"HO{®FF-^Q tڲo0ËgzUnڎ?q'ȮZ ^Y񗷷kT'R~xmD*W(!̄rgW5|"gU'7[RBu!אlPZX\p:nʥA>Ϗ7L_S@qDT\0m4`p j94!)j384' Oyf3(bϱ=_!b J+DG(F~oCu7K# 4\g!6s9/<.gqWP/ U2#hГke.{NҖs ~QT5o /-u!~Ym/Oͥ܋&y)%EZ!h^9$Bgy[Pqۺ81WRb(e;Qjp.|rj @r!wy%&<PZD`GsrAνh*(fhR:nCtL$,KAQv1)eb/Oy X۬s%8~)?r-(52vYgWCNK Jjuy٦դ83vrMߩ aOƏ? @Wy˰Ce2} 5c,ZMg' 1a3&?@$A8]ÙepغpQ&`óT KHbU`c_@^fנWPJ:!Ǔr1][vkL @1 ǜĴJ V亲/T , 2LESQ?i\s/"?̕6rO^6Fjpg}z`Tx/5@nX8UǍL $<{@[x i\^:wv"6u+)fPg3kx=)!> T>8)&k<{X謦_@mhiݐF[N= K?u1:]̷?Å({q\HKyւRrz;RJ8{<ף _N X3s$~OI?֯Zf#?"/' :K[5]7P*%vR3Rt!c c秢TTC}%ǮriP~IRP 59 . { endstream endobj 1428 0 obj << /Length 2038 /Filter /FlateDecode >> stream xڕXm۸_KZDɖE CZm5T{M\sX`Iy}8rpoylQl: zԢڛ;`oOcjo[[ތf>F=*G09񟧳$!Nŧ 5xEg?~s߿_1oH-Py`:ϒEE"~# {:gxęmqL-60spf؞g ݛVsWC$a1߳(8hi`8*?s]}m>Fqf0W?!n*e{KgWqpB_֭ G:(WYu  4>@ZՐzZ Z-ȌPqe{/6V.@EG&!iXbM{I[JL|K*RJi$_Rha B6M\;&hӀ5)d4W\)&-. ;R\]`@*P^HQ{Xk3G8Bjl 1"D$G-:x!KZ YqoX8 w%YuSa͐˒T J8q"3f+טH`2F I"ivTM7 !2 zs>וw(!/2%IAL3ϖ$ʖ `ngC 2]aq4gEbY*ӊv(̆l̆AH'RIHJV >ݴXצN!m9&@ "L $)( oaR[sj8WnV|nGJ"$+ˠj˪Ի_)JgJԝ5Ĩt\f7^U.Y{ E$b+F)2hv -*&0QȔ@7Gb|շO1fʺW*Fvkۚo6xOP%A(2e)`^o}r]V0(ۧiOz.w{?&Í00k:v,$`|srAb SO_eVp{YD҉LU%!fvwz#P^}K+3HlZ^۰)c`Lfok43(qV׵n[?,^w V_EtZ%Xt' $/䨮𠮸ypa&.nn,s)av{4|h0VPi@b"' |.. +ۯ> U>o6nu1ɸ<0d,1 S/T\$$ J [Il:Y`F~2y> stream xڝYms_@ɄpxGIv$GFj5i3B ^"M{wo@:JJlqX=J1r%(<;bQj=WMa7ec'N"FUl9`]N֛[|uƹ}uBipcq¾8Bv< cO;Ob|z>LE?oop*<;]` >NNY|2x&nd1jsY!sL"5%Ro\.;۶y;KsMiD- fyk1(_y*'㜟Rz,F IqYnk=oL_$oXeYM'+ &GC@ 6@V$"Y⃳35إKp>&p{&H(^@H!no!I~Y-3HB0HohM|toloA뾕yG}5f82/(N}ګHBڻϞFDhU| BHxteC"M^\ d!Gn]w gZ<^ ɡԻ+?=D1%]v;c母J C[KcdHL7`K}+}+C> Չk(PS8p-=7 IvVq0}q8ˬP =cHzTH5qDTzOŸ8#E֋̔&WQ{EJjOFZ'Ef%Х9l'VKLSEB?ߥŠ]0lVȭ ,xqZ0j|TkIVyg:)z3%6aa1Ve<TJ0KVJmpFLc] U+*dUII$U[nbijo.Gddh 1FRW" ;U* Lh!ŷ,OZ%%m!f^wr?G@/.TP1VCRVd)6a3K%ԌAh1gAgUcfn INK_9n`ToL3ʚF.Dz/tj%1GKQr *ABZ-8] T2tHW5q} - j!lÌP%/<;3(xb~M-Dn,خ%}IiU+կ 5b#kG" 3l!OpiٮSIGn )eex5ٝV"!U^m%)[f)Vb>r# endstream endobj 1434 0 obj << /Length 2248 /Filter /FlateDecode >> stream xڝkoFE.|Zm*6Vp\>J\I)Î;FrcT~jz8T'#l03%t3 Q^,ΞÉKd>>jO㼘*8Nx9ѾrD!b`gJ$Ju3r&ڢ+eDQrk}go&[uiLgw-5R>Tr0p% ^t,jFhNT؏-̼֞]*bgʳ\H*pUț&*+4 YaR;8,qB:=lMchf "PƴsN̖iep)TpE<\3H+1c<4pՆ'u1쁌rL*0FR%Gaց0f!O 0}Q-|Wh'lc5#j >~d< ~Mb >d]G{_:^=?pxŦ tX1Ye|kf2|YSi<( on %❧tv|hCMX|y? !GmiYdi=:U8i_%Lm8Lw+rZP""}gf'B";PiHBX:Eo { ߮=)K^f?ûUa1bѤykf!񊁵1d˒sbXՆբfHS_ߘd띈 uhI|=v̇snb*s nۛn.ϯbpx)U,հjȅGCpTmf1˖zEO)َOyNamp@3NHHe)j՘XMnV+fʡƆ6%&huFX9fGϾq5-YCZTƭ `\!9e;zfai8 #mp&~Ʃ*qIn#^{~JtNv]@b~sq/#;ş%. cn22ܶJ8< M'u'DQW垡T2W@Vxh)iVS}Qv}~<Q ̰ʸ %0s2 xuS3`$4=9)r8{qˡC8bMkAW%mLpqSLNϜ,/V%Hƌ2Lk[!(Ď\`lbi'i&Zg tHȕNE\fĹsѮ|zwy}pgKpZ;nLW,u1/.R^WSrk@ruvxh1 KKxUXUq{[C,X)ZĈMsa]70Fda[sNqJEXx(8:C\axᜦ{j;v8>zVt>v!η8pz`19&\լXEa>JI:_$=@ఀ^MhOFyoV}'5YM4n5L1=+?'#~IGpbhB8xox!FQ@+)xU+" W"6&} 7 }Lp!,xs ^17\3Z~ke.ތeu@Yc<.v:NR{y!pBy c..Ję\ BX *0k&+_9-~7rzmщR7EU>حy|%%f}Un*Po  Dr@^7<<+n?Hk endstream endobj 1438 0 obj << /Length 1506 /Filter /FlateDecode >> stream xڝW[o6~ϯuuXd6,qQm2mi%Ahy([R  X#I'&$4'm &Ĕv_NGfq2r 5IhtE-֓ՔRj<oǢDКXbrqPZ3P &^j;3L5>N4OaKgɌڄ(d],wbK%)U?Gѣpؚ_Z؎g _f.2|b>R+65ә~cqNbGFU4xZ?a>!4$R鼝Q4kF8 t 8F ɸ)*)U\yTFBUƫW\~3ʱoadhf.lOEL!a .:c>8NXV~cl.6Q, ǻEbRXmGV8ņ É T6 qa@ms+RFJ `1&>DLꢩb9Z8p|7=,Pi5ḎqTty!HJjׁQժWWYo+R#&jU}1b'˴UlR<Κw; Dj:Ǟ p˲Itt;V j;Ԭ(4Jر2:O4/075ggFO !2Jp;d40/D8q1#|K&0p/VBVTJ) UT)Vk7I b v_EewroA74TX,ǑC؞e~[ WMR DWVlC VKX6ejH{ "94$TVҞ HhN"g"f;ijhD\@vn1gEQjt4ҍU*Hṽ.(V(s3 d bz {\ WAOmH|Fx,pX)#|x{oP\?5FPL3٪bCZt1Dq)*S9'L]'ѪIu=#sV= 8 +⪨IQ@Ӽls"ՃmBY((teFiň♤[Rƾ39SadK.w>2jDq=qpģBL;ԇ{oӲK kgȺͪhOggrsYf|2@dy&@FE )N6E{QbjxfCpbS |*kvWW/uܲXk]Xּx H`Ko5Oy,yD4>d?daiHڧM÷]Wsҹ&@.d%a]bWEO.] ; GMDGHt{D^,c> stream xڕXm~_ғӵ"]^R]zpP\s+ӶRv3,j &p^J,"'U($rQ_Ej |`0&_o^}M-DVQ%Tf1f),2?i,BhLf<$jOɧQ"/P$)?\D$ȈZȂs̱d>EY_Ǧ@Y,@U'[y۞ivߴ-%;EezG$;ȷçH$XZ5ejyON^mi(km\eI.>RdHrB_} @Ӄ>_к ;ǛVIYZ[%MHV-iyV'"{zw" j`M?Cni(_&1p:Ikjac_缈Bs74>4.xcb t;3uI0pEd9}GdyPrK+;i S ^AG4w(WCcoPN"yd{Զg$,ю Xh)Iۡ'8* @u_U4V1QU)qDSɿ_ !*W]إB=,0)CϙyXO ,/9BSQߓl W1p,q~|O|'K #P /$Ӎ.L0y `,**i?afTɚ|8R0 *_ { endstream endobj 1376 0 obj << /Type /ObjStm /N 100 /First 933 /Length 1521 /Filter /FlateDecode >> stream xYn7}W1}ȹR.4h`@[N!@=rRKd׻`{{89s!9e@(%#; )" ť(.Af U! 4N*BڮezMy*0Ʊ4`=Q1XI-WH33$[)'1*JWlњQ1:b΢rD`]$f#U8Rf{!e3,`fjRq5s:JnwTs)PBEc8H3c*;HLѤXHqJFk+5͔qb( hJpl| "9/TXLdJ^G"bGF@vSŖ"pDqU(HUP!ZiD-yR+e4&3mPS" ) eA)fNP3 8()e-*hAa[1x'$0[0@VO. @IF4OźY{24wes)vM; HH\|%+PbXB٦ `hL8=h9n^3\72܌\3}pY&J^|tWٛMWzq{6Uіͤ>}MfyJq!Yܴ7?(@ f -:[=>"bpw*=m?AKJvO !ۜ"O:?NHP2dTN.@fEHXj<>=!iZ䨣c<ܪ&l*b@ڃ >L蕾rX_~^|JhHJ}̏ E9c>J>X;Fv:ҽ!n$)\ȄC~ N,enzK}Wg6M`6avT|daqϷ@> P8@1; c? e>2} _N#w"ЋxH/<~ aϒC;wG'6>CnkzH;ͯgq\}hY> stream xڍY[ۺ~ϯ0Y+"u)"hړ Z,΍heH fl0Q6[4nfx#%ts (_,= EPzղ}n.RKy_~Zmi#mY!? R~N D~%ڱ~tܿ6_/Cr1PU^sn:nnujonkQ^HJ=XMb~4~ c,Uyi_lb仝)΍?ҟ?g+'!,ȅ)_faz5?m_Ӑn.ƺ)3 Қy_[wtWr2fYg~6';+XPR) }+!|25CKozf/f lO:lɗ9NHoZsY!]Z;"Auv_N9FEOqtmߜ?'A=&[]ߗ{oѣv2ZdS`(gjeRv;su=,MYΠ$!睊mfǕpaX}$Go1ppgB §-7z`ЄK+sEr8p \;"o[XSZ1T k}^U"aiq rNT/USo ]v̺5<$p-CѰPUpG{I|Am .,6`b0Ozk}max`7s0^˒ 6 E*!m)@.81:1W$ĭ5m4 l` .QrAc۩7Wlhm O$8h"PH qSy: ͔jՁ-`}ZMRGE".EVܷ y^~69_D NB?7gɢ'9ډ@&laIk5CKs " QQr$X61%95^T6E\#` hQKEkdNX680:!ʽ9Tb@o|[U0(kX`,g';(oWn25&1#3Ca i<+i9+od #,Uiߓ8l8soLe?kM@/8൳C1a w/8}XX1庚[gj9§5 D˺5Nq XD$~jJ\** ͂ ww y1~1̣"7|D ^<jm.2?S(Xā_d܂ǒjNjtJ@=xyYU0wǪA=kl:jf%LN΅@A%ez| :d#9%$ pѡ#SI5L-4/xʳz2BXD2y>֍*nH((@^(Z"G͔ bpĄtm^3gש|bg 0.bsj@NW0:$`%T">4ps$|d<+|@d@RеxZ1iS;Rc_#|w^1kg;h!2i"}`Erޠ:Awb\]g?t#TC/ R)ĻZ3=tH$5B>->A9uX<\u YK"uXO9˂623@R1m )v:2Un(c&*uϲ[=˛F^<A<_g6 g&D |޿۷o_~;vK9aaYHz|oL*zNO2B-dJt;C=ҽy~a%l*? P _S516,Wzؖ]/`k٤tuL@uf%?P^LxpS5P H h*`(]|?Tox endstream endobj 1449 0 obj << /Length 2630 /Filter /FlateDecode >> stream xڕY{o8aQmXQ^-\"M]Ct,D g([ lQ4c$r4Db$rB_H;=ʷ'D"r9/';RNlP h>q|`_)8JD* Y$SBFDrzsptwF(^qwqK:52juGUcQZ_oLd_3a&ɡ̅ Y7e k?qrݹN7M_-y+Mۖ[w]\;-~s5uY EE]DݬvlcTUsS֗շ[AqtzjNTLkݜ_6-j/g'G8ٿO}H}!}`񧳳9.{wrv)HP$BE$Q#D%L­N H\QD.+[ ˦ #x~r{8.H lMش ݹLX`K 3UolCG7雲 Fk'ZᣭUҁH"CbQd,췬Q׬H`d!ٞ>}U.r:L&WkQ6=R^O9M¨]ojeE(I:i1m~rsd˲Y%K4[@haN1GՋ?*MD0~IغYe4N;^@iSӋ6/H$XcGYFSkׅ L1lܩND$I6xQI8O=օ^}ioæD ;BrOI(p4Qkl>NZ,=J)\pۙ~0n;\(5h߆a $;xM6N [6fPf*uC*W~E(0DB[bVJ*yJD$P!d锯:no;V!بqELmh_Rp}v.6Bs9lZXڅ5Ї!O˕C^{*l+ɉ`T=hY_D~Mxa{0Zpr'{s욟0,Oiae]a: 1>=REQ䔊ڨA M"C^Y=PQ|'gGهS@lKAҞESi Hx|[UY!%pngUɛO&8a>.~ wD~ [yVgTVFjj|YtL5 (?hN"޲>eE234>>eҫ0Wxw 䐾TA#Oc}}Ii?ـx[]ո;A BtC Jk= `wǥj,mmng 4Y/ HOdЃi'ڼB?WvlSȲ9R>>"r݋3مc 5LK]oL혫[[+]CDL5Rdmc:מPuy*^jrj!⬋ɛ*[f)>8b%{8XDAL C9z%BU^rB(Z3zo=f,)$5}"Tx/8Y14/j$"H޿V9` d}` Be5lΌt6Wrs^-p(uznj Q:ʚ "0103LEd"@޷.l9L/T_at"鬖-lմn7{iAy{zj񇳳9u?Q+OI5;o|v-h yu/S<-G»)ywd7-$q,ؽ#F# f9"C[+ѹEX8-Ȁ#kg] %V7+Y:堆DdݐB>PB[6.J߲m\{e|W=F endstream endobj 1452 0 obj << /Length 1615 /Filter /FlateDecode >> stream xڝXmS8ίNK8iN:7pT oe8t,V2 N ;[y >Q`oKdpꒁ;Ij2\8.9z{9 "]k}=h~hM"|wipkiD di>7cew|*2VTM `؏u]RRGvTm+O# ~4 " ~!{}+YqU aJU/"*4FtB,ZT~ sa$!q-WY62d2xd| iupa~|ab`q<"/2;Qg N(H ~yh<h@ y:lx`־-xn_ ߚѕ[ 軞3-D^{rmF˖*s56"óWR˧D} +kT)@٠aw J9Tj~l& ŝЍ"K8@QIIl ע꫍` =꺎R?PfV.Ns3tMTom*j$>!Z)}U#z3[kwnla K|;ć;J:0s@vRYXM2nm&QNj\xMBO ]B#ﺟ^.Ӽi ,}`R,;x^sg"uE/ܩm55ʩ:fekjd;%^wy I%z K{?zNm|/ *Վm#aȳܷ~Oeöi5[ʮ`nR6K)4Dk<&s"˼iXGMFbpnG"w WO;/pdn6(,0wMbZ\5K|!~ nS⚋i& m2{uݤ|)֮MmXY KQ( ) =o!ܖ7ja/XxB[W\4y{R>H}KrC(\oՁ-:P㐞vSSسlEY:_ ǵ NlTH endstream endobj 1455 0 obj << /Length 1509 /Filter /FlateDecode >> stream xڝW[o6~ϯiQwuE4h h-6ItI*9#%Rl9mLQ<|9-V "+jͭFr㨵`|AlКGMRzp~ !;ws P{yՃƈ8?ڹNvDVy^mݱ|^ԗ/K$fEC,2Jo)odz XrmxsQ@Zn l_u/Rv@cw6ʢ ż> PAGBeF$p-3:g(ߎIVufol2o 7>Ppq$˯*g@t!][^nt=^[Je|dͱ)7z((ݓQ}w&3m "r#?8N\[եHX,ie4TW}4]_ !5`$2=?}bM3Tukn)30M{xL">R{8a.mgm@{f }cSTMjb.?~^_;Fh/?|bOT]3& EC<%5tg]~y#/A?1C),"LNŶov'LPɻ3l}0-' _GEQU+C@J1oFضţ,]uԜ֎lH}6W)Zqg(>y!fpIw -6%:bݣG1ny*"Jzl z1d4GMoFl3gȖ8QW;i1?A?STzs{4&is=L6T6ow .gd\g. pn<$C߂9U23iȱv.B2[n&؅ۊj\Wje'uT` Ș7)mӯkx_SF9Pz5k9W&[vySTK9W$ДE@ endstream endobj 1458 0 obj << /Length 1331 /Filter /FlateDecode >> stream xڕWr6}WӇ&xHM'ۍҺM"L@$(Y߻Hm2z 91l#Zq~bGh_wB:+/7mvH(=4%ƯSB &NCfA3zruN|hL!$cxq0)'Zo9YQ3g UK8L~]_Eq-ⷎb6is?v*Y$]QLz-}~ rmET{UUm4+b~:JXXBoggy{zͤ҈"e6%6UOptl\Yc,yveݾl( N!Jyb Ib"-EN#v q7^˚fQ+!=>HyF-02˼x Ŭ cZ7:0X.IQ},}D4*Xx# %XSX Q<+ !{ZT:F6BjӠw6qjRv =RӮ|t7޺Hhk{kyސ{{4R]L( lJt쫽XSLYq?w#AeѣМ!±~]4Y6j4LH.׳`\8L ÐWurܖ(/YVno({HXjmcU5Lu8]FѵN̦yc}-uw$.} oz4{?( ,?v$pp䰷,n?Թ'a@ow?f@S#x$]5ȚPVLS-(^y"C fzPStL4j֝y%~姮3i\5;kC5C@`Te뼟7 -ok0ƾT5HtfT endstream endobj 1461 0 obj << /Length 1450 /Filter /FlateDecode >> stream xڵWY6~_![Q%HkI bAKͬD*$k"%K"P|Ǝ ?$}gaWnn3l-0t7:?Μ?ϯ.0O/ߜè=v={ =+iOqb'{zzuL٢ʺli4֪*!+G8D IYha}4bRdkd׻~7n$2 VnЭ^XӸ{ք+ɬ~xx+R^IQ,+a?{ՋO.>WAT]R;BxlTh\h85ΩkߔO=Mf*I`ib%Em ]f&V%!K#"At؍, HgomxȍOndWR{ugގܚ\ȍ@8A!˿h2FLYFyjfLLp4! ތq"܈T+rf>y'#mfgҦG"]bQU  = 4㕍թ":$ͽ!df%c3vSiȄ0S$f㷢\*1̑w(nuM%m;_7Yy9P5vInۏ#Ǒ$KA "u{pl-C\TR4~'yӧ :0Rs"LNZ4)Z4k9)i#UB8>@!PiszRoFgf{Çs|wCgװ{Ի/mZxfPZ茦E3+UوZ)>[E5ݑf gZf2yZJ}21ZO6yXJtVҩÇ``EoYܴU-VRX@Pu]Ew|?A=8E5BbS`_-#4`iтjZRwwjx IJ%W+v.B; a&NzkjOOCzO8 +7Za8$9j@)K'|%/cНJ1cdH: +aZ}' ZQ:iԔf" L-<me5iuwNW&Mq]K1Tcأ^6Haϑ'o go&Ud۝PU˼,Vs^߉v|)G%E5 `I(n,iA2e0P?-=0S2A܃׵js(xIWZIɃ.;Υu endstream endobj 1464 0 obj << /Length 1654 /Filter /FlateDecode >> stream xڝXmo6_e(5#]AѮ]V;XAhDz#eJr:{hjGضB%Yiqbw˕=|x}BQnk߷Mb;|yjY__PJϟ_8o-ϡ?i%P "PC= 8/sv=ղNDy3Vv:)feխ9L.jrR;PsΫ!K; RJP.yZ;\mj^M)eiMp?Kvc4"Y*K7 QXA8Td7CnVZ0l)/ vs7"g\ɂI,I‚YRS5sڴ/Vu ulҐT^5?]\6"Uڴ^Qhmkh@>$u4sZf4&˫΋r XsOzWzM*H+tYɀ>0|DTyRsrys|#f%Y$\IVs nq= \\y3'S.LjeRkGRu|[kRz]M+ȓ;֐NVV=|\pe%keI1:G]2)Q`Ҧ,'k֏I${P^ez[^\!h;lʛUm)"[HMx䎆3||{rqCrڒïe%Jy~%`^ʳRu ]j`,vdR ͢f'v.|:ـMR t:U۵TT V5䥎K7B :y%V Պ Ōھ}~# leg{@2dEGbu_]`OWzhڑ*XuopH!EI|ϟҋERZOGD-d@xgU鴺15c߬wt|b+3!SؔPԐOG!T}%QkhJq_5s})M~cv53>i~YfrfÍ]ڠU۟b>zl=Ե/$|HĦWA;D93>2]Erˆ[1&>a9n,V!8.6}Mc\5`li+)#CRr+PV_ZKQ,;y\6 5,>v֎jUԏ#7GCs13펧 >~xM d|uZ4Ӎ9w '&֏70!EW%Tf}ƗKo _%揂$v ˜8'ٙx+֖L@ endstream endobj 1468 0 obj << /Length 1364 /Filter /FlateDecode >> stream xڵWo6= D(ҦkF =sLUp1(zia{d&5%6ɖugwi":ѴQ MƯ/)y[MK{Yi,5K OZCOK#ߦ3W G.58kmw>Fӏ;h>V\)՚ZRyRLY2@R'R-4=)yGx.aj1#קfD2pfZB@ a~4 `6Ci< %IJ0Y$Y l I4FcCOn1^=H@;H1UԹ٘WZn{}w_V˅ABۮșOsh{-v}:0ݚ׃*b,Rq$\DQlq-Ia:\hKQSN7_! ]Wˢ ߽B0/jϣׇCd)n-RABt\-O2ȿY1*rpf5K4dX6z7ҥېJe?Mw%5eN'^% eΈ%˶MkzHY͖~!6Ab#r-t雬bgtioj4W.Uo8X"7gjuAr@ !BYB#~IUjFϊߴӰ/b.i /w̑6'_OtŲJ˻(F5GN_U endstream endobj 1471 0 obj << /Length 1526 /Filter /FlateDecode >> stream xڝXko6_!g5#J,{Enk [6Ɗb Zm.2@HHQ6(P"uy9> fa0c0dA; |ŻgО{'Z]^'IC0 g0XZίG(;;{k0 gC?ӳW IE_>Н;f l`<17#ڕד#J>!oܬhh=XRfE5Y L^q&-DOfY z'qVѕ3 Fc&<9nQ!1JY6 K¨u룲|߆IRi%efTX볷~2Y0לC#J¨,16~,&QVC q`shXXmCey`-&qEḵW]Dή sdpġ5f*(U'?ݵDn׊ëOOR>Z.ڸ \"$iH ⵯ<.fI{C)Ȳ4H)H% Nm qAYQfy`% Za>\T$`Rhn֔ὣLnYvryG6[usVJ@N(-UY2.b]BDp* FܼkꡬRRqr'gI$v%$Ge%Cl&)H^-%L2ebjK}E r]|<"ISٲ;A D\:N*+]pDǪm 3pθ#rz]uUPq޺ |7ږ5zGM*8BZP38WD?1zz 'i(}:I٩9~;B-O,?0GVUW$ۈU4VHTPT|);Q[IZH_oJp`dKԂ 90nfʔdI XH窏jΥH@iW|:Vi,wXHI ۛRJI8g 348y8Ǒ7ϵJkV9n=߫W-[]h^0Hg^(5&@b9x+Dƍ,!΁?7't:W2B;Nhg MZ)EO20 DY t> G o vzWxMh]#&N_DrCOS>lUKqjbY6::p[|0k/sӧOOF =u[}ɋc|Z/A2P"9I@< ‰:؞kU >\ECgO:(tq}?p޲ XQ5t>?8ޱ=<Ԇ |LyCβ"ŪFl3q@' T4aχ/-:55:@=ʇJ6uk$SMAy(~Z`aMLB$-L;=hv( endstream endobj 1474 0 obj << /Length 1251 /Filter /FlateDecode >> stream xڵV[o6~ϯ eI i[YScC6mY(*NZG^&R1W2HNEv?U"I9p > IhrhFχ#J<.pďRXz;?o_Wq[ Tb?wUͥiO-\lPڛr]'Š)=L[JYpNi)7ƺT=1 ҖIJ@ }_صnٍ$vnk`X 8=@D!A endstream endobj 1477 0 obj << /Length 1432 /Filter /FlateDecode >> stream xڍWYs6~Л Ò4uLVzL@JB  @ZV}:Ly2z (.^.VIkk]l2⬷,[~Y(ݓevf8l%=6Mlj>HE:>tMk&{,2LD$I1FK?aob 9:~m¿oZvvjd [`xH5Xï~ H?MZ$-¾%]ÅDt-Ӫ4z.!}ZhSՊW 7=\mK'p E7AGPq_h/W\䰀[6 7+d` [Z@ ^eZ&I6É8)a%4bnԶ撔E^ IX^<pZT=%*0s!8 y}6mM6CJ^x{Qꪩ=6p҃K +ƒ_z/O,^a>Ʉ%i`z) ydz߄RS;~v6R/YohkPF:>%JylRZu rӭ_^`J`0kK"LFSoڻ5D%g8JJtNITdύEP 6:zƈȏ*ha#z^P;)B*;nl0j–}uXR $$Ec?@ UD~nKHy%7aC6[f4 c^W@epHZEV_5,׫o -.y.t웏,pD$Z^;5`#2{켅w$ h*5:Cu$]5q7 =̤ԑkqZtXmsZ\O}ָ6!\58(a!vٓ#!/J#BiOrK,蒘xQ,aױ"`> stream xڵWmo6_aKfEؖQڤlm㽡+ ڢm֒;G%*AB:{B{^QDxԛ'A{Z/zv E>$M_Zc$3sbŃbB^w:̭``pDF>M _5ɹV3E~erȳF&V~3߼ḹ$APBPeٯyolj+Rl태ul]0-CyC q) tigi84ZԲ@DYv$}HৗVՒ 4GeSl~xAzL&G@k|kKSeZ_zÚ?a,0[J>+N˼8E)=y fr+"_By]8(pl}8!>z~(˔x0?UXNm?ms==a4 ^z:Dg" EA5w: -)XVR)1ud2Pr'Jey$8/T!>&! lw= Z B-2ӪO2k^f6q⷟uoEI:{ k-˅k,[ }>4lpWV 9+%mNmIBa@KY!pPJ]> stream xڵW]o6}ϯ'ïdK-M-C;!躂hDd#ER9k ~0%{%t\N:D~ّ[KG~wͼߛrvt~tAFЙ-M ߜjGCh27 <3Q33w0zi9b|"o\A.?׃8EB`M%VH0@۽}t/1yJG-~` F\}nf!;^348lF.לeϘS3=k] 5K_ _%xA IBnkun: G͢qтyI^QBZ^7Y{,?T43jyWtӇV7$N_jrt=]ZiPV#_ mQmfuq/ EgeY F#7i8ْm/ uz6X;Y@6{(L' Hgy AF]35rD6Il0ml@,RZ۳;DՃUS хP ڒèRPp<3CѨtDX_Q{{tɏT:;+gle Pfw{ 'Ʃ$5>iѩAk`hU֋vV*Z{-])vu:L. endstream endobj 1487 0 obj << /Length 1387 /Filter /FlateDecode >> stream xڭVmo6_!(*w5#]Yѭ[-úkiG Ej$wIrܗ?D=GDAE*-=U #8nqtrePU8XwM-V|12|>{)Hcnd¬-F'Ya4Fn8n8 2E8IG5m;=Yo/(%~re冫fEp@#Qakl8ew^Kͨ: n ȵZ7|zCG{\x֌~zb-WެN^ Wsrl.5 <ɦN%7'TI4MZ8PjixYV#L&s\zerHϴQcoJu բ}<|/ kFoĚD7|.iǶs#{-zWJ-Ulbm_nvVti\~t~Jj)Iy<Υh!V(Gab{UwY?<<ɋ,z~7DpI=^I]6^z8B2lq% (AyLQg! J,|ql} вt(ElFC u?iHC-.Mm3Z#+]7b4CC%Ib^H54 _$4x"FClN`MڠnC#7 EP2_ ;Cp}ƶ~Xu5]lgInpxmsw(Nχ(\Ӹ0Ppqm7.nYen6|kB570ˬrI2_#+GIR&l$CdЊoq@;;s-:fzH-e|Z6/6a7kFuH힤gcE1L_c엄_Yy#I¤3M֔'[g^ ^5uX' ,.x̍_3| endstream endobj 1490 0 obj << /Length 1425 /Filter /FlateDecode >> stream xڵkoF{~}]DNo[Q'[qn E:jT$گO<)# !EH<<n/L{ɧyXVhy篶UQd@43u ^ =WP~{1Uôui*1Ln:P i@KYrU~ՈA3$4σ5Ed% >AE#c4RcO%sI.Nf@(ãxj;}^f{MMY|, W% 3TѢ؀s9K*")΂D84w\ o XL(ӎ!-7+9c2`M< :\3a+ŷ]z-M~i8 iyct\DB^d4Hs&Ud"\ƣԙԛ$(:nX2 ;!J0ejk`aUL錡a7a !/1Mh(Mh@b+yRp&+nEiE#;+wP%f,˱^llumTp.pw ({ qvU8hvXHY[ p{I l&}}z,V>,J^g^]WhXHs*IBJ8-ӼKxʔ$R4F|k@ 3Ύ"~/$x =l>.|ς J*gT*BZ7ϹFTUC#M S_#{g1+@ JA i.H *R⧈bpäՃrͰqAҰԟΗlSӴ?t>/|MrvMdMyXyݓ v&+hiquF?LjslY/7];ftIgymACC +.o TdzzPMi90\c|_o"&acw9(Cוrqy8O?[r:js퇹zcLcK&;]⊗EMX%ST&4?nty;={uM8DMghླྀ~CZlSat-#P_,hz>xvCu:`N;([k'v7۱'noq5L8WU!x&VqGQxŽ<n;=x0Dn9e5vyڽUZNUMs%N _r> stream xڭW[6~_A^ZA Ldin;Aʂ H8MҎ\cN:sGI;iyw_a%7فك0t72?T̜?//1O/7Naɺ$v^.%}59ѡ9(v8@] iy/Yu/X?kҨU"xKyjy!W[ mQb2Q+J7ᙹiڌUW +u!r[;`- ˕7}20 *:XHu3N4J~bnLi1h;RV9Hit(YƨU] lXӥMfKy-UAK6'݇4yNŹ-I4H¡gY{ 4Ԑ8( 纎P}fy`D| b-KQĀLĀvMVx]m; \{1ه+SJ:Qm]4o\)˘Fж#ZԺd14BH] .@Hc=}ȋCT9դ4O+c+.f0ēl_#Y4 Fa"f`>=^RcL]ұeE1.ղ&-[F݌גrJICp 4OB0uǼE6-UiٳOQ6.~_z7D^w {. t$䜔4, s^g '{i/EoKڻ&Ӏx_蓚QI@Nܗ;IJC_&-7|&h]f G6 qTGMF*\_nh`{V71Z't3݋/C`Jb Ϣ:f; P1l\P#s`bhpQj9$ S.NDz:IAvc&)+ uU²ZTک& Rn;Nq[ 7(/G]ך=CmA> stream xڭVn6}WbӢnbmR7)mv]M(D:ߑH790 Rpsf e[m \Њ^g|k$ǾoavIj[w)Ƹv?O~< @_mZ>qXש$l!ZV2~)~ʦ5Gj1)yT0aPd%mΨ p.>~z̒b"e&b$'"yN)]U7B՗2>n@b+}١X0eJN>?`}q9K_yLi>:VdAڋ$jۭ; W̙X둨။tiJ3 VV@4̩դ/*U i\Z-Oim7GἣKS.lr!HW*ҵ:]4ؼx)hFy&nK"T.!ߕd.RCUVHT 1æ.hC8=ؐJ:T%$q/! Pvr*z8D`5:]vy? 쌗狜.a(cqm9F>ݾ)~EӅ>TmJy,^an(u2*%]LͰK0`FNnn'%^-Zg#whmuL$ YIr=򇶒֌sX(fI*Nw(aSQ,-ӟ^x$pqם'2ÐqkM\MӀzTZOKQ1t{B#z*%#^Ah0Sx[c@L wp% lJŒR/ƥ1 NNbf0&b[4DR&7@0!X@21rZ{zρ3V { rnHd.vӊuv9>P:;.D]Ep4)(MW9Q5.MҽQE|N; s'"𪣯 .cŲ)m92)%n/7ejЬ4>'O0b$qti{ۭaxh-&[hSuoi#e!IR$K:x(8ox( öO96ρ#x"PH2 WQ_F KIn`GAR4l7BƬ endstream endobj 1499 0 obj << /Length 1427 /Filter /FlateDecode >> stream xڥWs6vSugIuFo1BےJ~>Wv *Kt#*y iN/D_{x`TA9%)`fB|(hTmN1Y+Id>wCVA C/bխ'Ua{m/JJW"ѬTaH?#F;U܋);!vMS`d *S ȵe' h_8LIi¤+g%C@PqE uEcxԦ4% wK?~zVQsMNV-:0a~h-xɎkX:L ]..+>5PKI$a ucA\ll+n */ν "'XUNNCvl4׫0lWWƳ|AoHr pt[&9ڢ+Vl_SQzu߮^d9)Gl#̳@VҨǾqd IΩԁ^OƢH5"[LxgnzV3 k:ԠeEum|E4pzd/ ~~& ϵ͡S\HC?xCnb> stream xڵWmo6_oM5e˱k6C ][C -lPQ&y[7 u=I#Ghp3d2踪W'|zUh\\<d"?=j ~^fXLhL=z"X_Sk>gz32LgBg򳪮rυpȜdlfƉ*Kk^: ܈õ[(t$U!K.Wwoۮ w*^kf]5႙t AsєG3PsVu;`}0\CDb2klǸ`Ks /- b)J|$L'P If.A~ґ'cV|lq~-k;Ooo,L'd+osQ!4F|Bqւz,ew;ae  nr*;twJ~,?}սӆ`x;ݔo,0@,N 5AF2%/a3vkIi8TE^<+S&eVsrQ<z8+@ՐZ;5o,J@=-=uuk\'JeG֣LVL8$N۸MW'2^p_v$_[dHʞ}iˋkMi47zvx[n߆u-ƣ9a]ir7]J+u.-iUeN[ɴ<- dʡDYȚ9G述06'72fcur/ΐ]gvGjbiVjf˰'e_\βhĻEģAdR"U Զϥڗ{Fxf6`L,}]ۛ#<0i`Phg%M2xSRb9z^5Pa,yhd<藁LꁁJA;f=%C'GT;jGtSUtaX3d6OlCsF&Qˡ zle< nIp{i?s`zKZ" endstream endobj 1442 0 obj << /Type /ObjStm /N 100 /First 916 /Length 1154 /Filter /FlateDecode >> stream xYMk$7ϯ/ШJ!CX6{Hb`6C,vyKݡ)J^UI6YO%YJ𡉨'HjO\Hb Lk$ZfXV5O[TN&1Skjp NC0#FaZ("lB|` %K(ۋ Na`6)dak=H==Ǝ1p|zLc?~&Ipn0;6xɈ@ Dk悚XeT>^7a-2;FvU -=+c >_ʬeJ @%ց8r'{@vݱH@ĞyAGȟ(7'jFo'o# M3_ 4yxKu9Ȩ>7A~g 5qnE:?Y6K b}d>+3P ;Ge (!];t^6"9H/@ Go [n$onѠM^Hx@HJ.p/m Mt& 0=*@j8E Gr Ȋe?h>Ҽ3lHWn *tDsLJ /Pi] 9{z+ke}:WI9›%`53/id endstream endobj 1507 0 obj << /Length 1127 /Filter /FlateDecode >> stream xڵVn62I%ˑܴkC0lFɔE"Uc }R)ʖb؇~F{i]DJ'WGV*\wxDFAhE_XP>3&RTJdx~ !.LY qCw23֬1r<{o 8ǵ5-k,`\A@<FuFhtRKA?Êr*M黒q Ld"NIhthdbe߲t8ɝh\dTӝc$ zLi")|4| Z]RH"JhE@W)JT$A];ʟ W*ah/ia> g|7qݫH]):Z MQd!Cwv8̠v7z=3>F 7ɭ E:99H&A[_ll#ffoT{@_m=׳1/&n.Ԕ7fUZFЍh0|C M:~fKnr?Vs:ʃ+c]hnd@T_,;H~Od@_VBhooC8Y037Nph6fVdYpf#S0EQ݋vb^•+>^1n X-l:λĒ97[5H6hs}x!v{Jj}D.خă^_> stream xVao6_oI:eɖ [EXou-QTH('Y laS?ĞQDNR]xYsv6t,\\={1v69&u>^1W;'!ZﴎxN }oZ>gqE <̑wZ jAU$tf>ɛ#JR䰾 i];/vJq۰$,bVd[Ryʄ%#ݦuIlWׯ@ZPI" b`iwr/ Ep;AUÒ|6~qDɒ|o޿A/ܳ\ȸ%JgIP椮{iFk67RŗfobCX7nFe` 9rqoY+碪 ?JM^; OS=l?DY{jk l/ 穡 *1W< 76N+z7@8-LđᕇWxi~~ؠ@^k:hSk+ z[cKyEONqֱn\oXj-eYe*8-gD=N%=ФQT"H$7X\vGKfM-CΛS RP^H,őAץ7Q=\O3,)tdr\Y!*97fnU[umTm)wf5eԺlH;l%ZL_X{,?^eBnO9ޖK<ߟKP U! -/t߁=LnkΖyh;A/7ϛOA } endstream endobj 1513 0 obj << /Length 1264 /Filter /FlateDecode >> stream xڵVmo6_!h+͒QM/۰5^u(hȒKQI_y-G CN{rZc<~d%gT,,|{@C{|vruHԚefRztvFG}| =u7, wP #PW[~I]'yp hVU\4 +&d% VL]eׇ\D7d0zjۼHg{A3֖ې禨}(Vڮ^dj]#d{BWW=⺑LuEAY^ɤ̙p8ol8ru^c`.ΪMɊK֩~;Em7$1aBpaNƪQ?O#?mCځU^UYɛ\ˊ?hOs黆 LE=n Mvg]k1 )Mn_NG b>DæC|m[UlS;c_QK)McB]Y=VHL @r;a73_&>Qw2k~84%ݥ^eS;'7丘~񛩨Z> stream xڵWr6}W%yl"TR'n&U;Ӻ~ȕ$viJn=AXY[a+qPVZ8U>l)hI~=9yqvP$ؚUM2vt}1]^(mc'lO/i$ۃqb+}=_ajj0C%ԐN4]iQ,XkRnds&SK*H+-1'V5ֳp8EQc `N>ɕXd+೜P#$@s5 Wr~nܑr{VHpŞmF2Iowb#ag=`Vlfnes:[t/#Y>m̴ _KI$d|Xst6Nv kSX]@ɠDtZ[dUb@!Oo=L] oL5qJ RѴ#v7ve,̡IF]S'IF;ǫ :T5>7Z7^sVh(+Qr/eV^۬p %:SMNK(ur~{9Ҩǵ1vWaCH\SQ0#wGgt~*ѭc'$=xВغ ~hS K l aniN8dij=?7,nxF؍ұ]z٠45$(D yHcI:(vrBCyrq..fevVm ɮlˡ[U 8]A[ئ4{1joC 0P+)潚i#M;5ˌqS7l:^fi6f^qh<ړ]vh*? ҹw=4z8KйhuݱvA:f,pOM %/sԧ,n߱ Od])aKs͏M_1aam^2MiӢ)@EKe$>?yAjpe}oH%z> stream xڝWmo6_atWhbK%".I~N(|-ǻy\F3w4 2 8sOf,n9>6:G;_Ξ^Gs̝yUzlj<<Ÿ{nzcwx﹓ٛ%tП?7%x/+_\<}R~Ad^@'Kxwy\]4nw7_n/7~__-nWGLt|{.2i(ɨdNiؼ:bgTTs& 0M2`J"+J s#|%h[kk }myt:EK|7@d6I 5$gN* f$LX8gͺJS?&{aT-7fvpk&jZտM./;UՁGcQ0g+FڔmJ;"uͳ [EB WZu# lci*٬|YR,wjK ;JҡUJX$lN:Z 09p~=:l%BJ9+͟ JSCj^ummRK#6߰{xN=t#C`7ρ;  {ayG\|qiKdؘ(-u7AkN*fmuEk7`]+WE_fA)1&x%\gS1-K&2y0D]D~c_> 5ʎ$wLNLVe 8)L\7;~Ǜ7cJ_-ߦ,M4o5JQrϤ'P/Xknټ1y l-JGmw4FD aUzxD*0qM> stream xڭXmw6_V,ǎq4eè6AqD2n~,ɮaeہSWWW/*& ďqvVT#l`tp>] /`]4q'xXX ޞ\bO^t nGE}KyTGq~>G(#ᑯ4.NxpzIJ/$%o 0a&1HYÖ]i)2ZzR$7 WTk=R/\JDEb957CF_{YZRKJ3#[ڧd y':ѸTv ܒW^xp`eF(ͅ/F{JqX[8mTr9>cO| 8a.9']9ka} F^wU~P8܊ǶvhA(H:XSc(?(!\49| gtϘNcS?e|mC{+U7_1hPiBn0h|e}/Dh =ԟFF˵7ph; C7G(:UCC_f\M/ib|H;3{W04Ɇ:6Bnpuj7R#yL8aW扳$4ɚq q>s$c4kxg7Ms;ޱSkV'$nlUɲ+PrIudq'9DHE\QBs8(1U[IfQk*+[iˌ|&My%ʔX/ڦ̅Lrۤ_i JA9M k!ߔ)24g?R92E?MB}bI}g|q!y,lB1j*,9Ka~>5)U yhwۂԾSgrF0"9뼅Ї5w5s~Pg7+ѮvKꧪ[Jkr4㥝NoRd%h@+`j٠"AE{}hwGh>3']DBy@ ^mRoI0 endstream endobj 1526 0 obj << /Length 1314 /Filter /FlateDecode >> stream xڭWko6_ad(`CaKn] 퀭[)KL:G( E.ǡH?Kpo( ^:]99z;G(8T5Bǃ{!P?}'ٸ ݩ%Ž~"/S&+E>.Tb*VtVTT1 ^a`P$"G2ZK+0gݣ]h4ȹUJ!֓r!* MXh-!n]mP+:RH~Usq(DoE(ĉ%)_T'[^Cԏ})],qJv)C0 B|K"e R>eYjpƊA2Ssɘ2p4bnW&ɔ/m_E(&v>ϙ[uT=rc$ap}u4/K콻.}:7O$=-͑binMqxPj~fI< #1F]7늺 =ad0fEX^uQp`w|v5&_̇7*AeWY=+e>8Y.Ky-m& endstream endobj 1529 0 obj << /Length 1405 /Filter /FlateDecode >> stream xڕW[o6~ϯ Ku͖֮]е16msH,R6e9A/GᏜЛD'vV,f~z2{|_4s< ONbo@v!>8mALsꝇA(gD Fg6pG KAc_1l_TfSFG_6m37 =[z;Nƭ {'ja?i#gj9j׏͓RfYGN?^OqN^*}N{Ǭ{H F^_IթlFk_Ӝ` KDp٨TmLCznj`D+LxY =5lr"e~Zde*m@CU,RVVrn!]bn-LYPڣ|9&f9y꓈Re(sdeN V=0JXJtb= i챀^턢cW#R.۰, ĈG!UU[QEv-.`3-y87"SAk;uرl o(j/,uj2hI<=$ EM7(t3NL)0[C0}(Z:ENâtIaNCJ%w9 >KYF۬ $#;o _deP/=; `[&\Mk;j0xk@Ks1k(ap=o/ ARpkbB׷{-7ϳ]#yH1Hhsq荎FEV ΖͰkiGM le.~2H{r =C\ͰSUA:VM͍_m@J endstream endobj 1532 0 obj << /Length 1218 /Filter /FlateDecode >> stream xڭWs6 ~_"F%.M.]⮷@KX"UJ~ Җ#g?/i| yF񰗖zW{V^`-upFic|I4<^4f{Ioi4lx0F[uubN&ǏL/D$[Q+]J2vA'T%): pǓnD}$k՜m`'Ҋs )#]R)Y)B IW&<*Vv~5T9WǦ5D{BTh4i08u2I3I8Ʊk)J΢U%Ol ٣ʂ9*KSB JvuH]I ?GНZ, (7Ԛc:sVІj|QGnov֩oGdJWV&Gpӭ4N5mݹ^!\mж ]7}]×1ij=Fld際1R&(P Ovw~76-:W5#W6Ud[tuc!(*VV.><"]zFLnڪ {٩Itt[:u~;~5*3XH -|so1$s:$.#.|tuݏ.jYMZY y*`? 옋ÝxxK̗(&W5{(C{k&>-G||'ʊ yp*2&Rp܇h#q=c\hhd$cn'05cu[˿=r榠'on.ΚqN'՟o,3=fjVd{3l,D]MS`+1}Sj&!c`Vzq1Lf.%EfW+k_gf:f ;X endstream endobj 1535 0 obj << /Length 1158 /Filter /FlateDecode >> stream xڭVmo6_!d(5#͒MHk0e(d~x-G)lޞWQNZݮX:ZxX)w4_-Nfa`%nEkj9fٱx8D){9^}p_ =i5qb'8П<=Vѓ'?*"#b{GpW2ѳg) ƩQ;+!}/B FN ?xF9wU#$J-lMT`fE Q 8'4JƗ<a߉TpbjAmuw_ɿ"ױ*U^2;+t4-d¨za WՍM2kC*(=cb ]Q'PtO2S]]WR~ҋeܻMcґѴE,ZB#ת]Pg# waTd6Q(TF2ƞNn9)i6q<ѷ{mc Aj}9,]k bѝ݃Di]es5X~OAm/1ns* zǂnqm|`AVR)4YEcM:ZI[؟4_/hۿxMV=<Mc1'{MA7|yϪ0w5V6 treM*Ʌ0mӊզfiCE^ZƇX'%}Km-I,IrZ@t%1CI F#M)hi(N(N":|03sd/j)l-")j֧Cy}2?8[xN}]jA;XSק@> stream xڵWYs6~>Ƅ^"ԉ\ũ8@$1"ߥMCG3Ғ\`+v؏$?p6wRlPw4/F b'hkj4n/O07:~wr7zi8@sKNy?p7#Ya#:M=EoGݰ uC9X42Ylvn6QB*o1e,SŠژ1@ V=\vXy~Vu8V%c${J>AqԹ}*̈T <"]uZ9WZRwL8;M_O͵̌)bф=LB)[ )(ɕ\E? ) ڒt; CP!׿b Cdr?CIʠM ַW(n qf܉9N[L /m֚g^^PoNm=`f~"Hv/-XOHV}6:}W'#W ;zF.:>4w#07?*P'*bvg=/4NӼc`tJmp=׃7 \?[С\9 Km#ǔ_"~˨ endstream endobj 1541 0 obj << /Length 1145 /Filter /FlateDecode >> stream xڕWmo6_oMV['C1neX1Pb*IqN"O:P=w=TX/w.Fr u5^֩??c endstream endobj 1546 0 obj << /Length 1228 /Filter /FlateDecode >> stream xڵVmS6ί` K~9(\!=nh#ion΍bo_l+6&#)\0ȫ>j[u"V8]1pzTh~}p0cNIy'> @[~ow·[|BN؟?(CԕYOM}mr Dz 46x(Θc,L-}(pBX>3\R0qV33bC~!qRȊx*kճg]jݰ?J|D!֤8NDS+IFJzN^ğ+R E21.bbEIQTkZT *HL{o:2U e/_&ky{C$4DnşbR˰`Ўe&t5`JXtQ<|& ΋Jg.&Gu#v@nZD.õCLeYL*׊qDi\+͘I6rpN"=&h͇k??u>Bᏹp*l(Ux) k@Θ/A퇈ځtL NKI7 (.h4K:.LH=KQY |+Ez6΃Mtɂ,:8n-7Uy 3Xrw={pR m <,emQ"(e[&R6Ge{%#CKDupU=\-K? 3+&I(f 6Ƽ+/Lk 4" }j1FGF'v_k^h_S̃ endstream endobj 1549 0 obj << /Length 1277 /Filter /FlateDecode >> stream xڵWmo6_K#bD`][>lKCaDY)R:ޯerbXAg;wt1YL 9ofP (Fr:P,U8t^/z?)gNaY2;cfM(`v'+wpz ɯKQiٖgTJD։ 6R|%ۣ\=X31?cBYs@ j%DGg/^/ІPv|R-(b;>Zq&mcwfdÎG5g"=kɓ򇇱&ʬFԷFv.R[&܀C7@J ߸݉* R@MwJoְUDm>1)cZ]\YUgR(r:r BRJ)O[$rߛ65 URbKU u)|3BzN5б6#^ Sʚ (/stcű*f,,7qC}Ig 8W 6sY(|l .I'_.kLl0&1+KE"kNÙ։P3Q9;<6k. gP$%Sۂ{Ҷ4 &Ji`.*/d'`TY,{IhJ"KK5Ky`ff2X+ {?VqrNdRjuavZ۷N`(]n#{4aA|Z-/B邺eNoΣbfy놡 Ofb'bQ&Pn(p("[LseT,]:1jJGV[h-RAMf}8|9G/ 1U1)i3<{Ϣ?Wkt*f^>1X,@ߍ-fE~j;EOXeOc﫽ִjeu{ѹ khl[Ng8Vf*dPѬ7*/k$%-Вl>#2 <{8׹F-rǰ"w^&pvmm?z`+LI΍{) )䦘7 9eY|z׹1#=o8 }nk0dFk^Hε. G,#܋i[GfMcG7Eo endstream endobj 1552 0 obj << /Length 1142 /Filter /FlateDecode >> stream xڵWK6W>k($#M"qAP4h{%f-ZڍKC=l 4y| =r:E,|V޳F&Fq1ݯs(#Ż8Ybo~ ›OtacGy|;??( lhY1Y'J,vj%.6J4eͪ>#ݱ6My aor | =Lۧ"x߭]ȥI9?Y}Po0TCMRo74L endstream endobj 1555 0 obj << /Length 1234 /Filter /FlateDecode >> stream xڵV[S6~WxP ˗tRXvވgw-'n $;ٴ~e8120ttt.hE5<f-,)ܾ;JuXA+vMũz!^py{CGocsKНZП?>qxGh0Gc&es)S"'(rmrm^jVLY /1JGōR_{yr" B}6\?~C0: >B(O;+ 7)aNR +OKūb+e\, U$)sr6}*A$=D5@#& <qW]X[G Ԧ}މyP |#(X;}_0#D<֮u(!hS;Cvsݐ:"FLLo$KFSZ6FO~0I1<)`cHjNJu-V@GY{ClFR{uG+-p7)Qu]]KFQ$8קY B.=n5s՞])M%*5\s}+~EqjZJyW ߮el9[Ɖ ۆ{d{0pgws.a(SϼnE9$]Ғs0e8h/QB}OYDS V? 8q"!6^sMR^#7sWk {h*$l(Kר< rŊH*g"ܣ Ē%ݼYrjHb 9yr1 e:IEIІ/ V+1oBUP+d8SWʉxF=1i06fRs+ 6])iR8\v'.mʫt>[.Qe_@`k2i>":rQ?a՘1Q-¢0 > stream xڵVmo6_(G͒mQ'ːml`%R'QD62QɱRs? +hX4gZpztiY~m`ah>$g3|>{YFH;!^&;/aNeM'*tT!Tgzg)r'.2-ջJ21Pd+&m kZy&PP/KtbdQ݉O~:Ҹ[-&_p^Dqw)f^ݡ=qUʭܒ*]_?lkuW(؀򗢝ft*p.x%S˒˟'A*UQ㫩JC®5VuʼV@_cю )dFDDTA1gpD /ʄ9%WF)PCU_t:-4Z aYs$-gڼM3RL[\\oҫ6Pֺg")FwY,̷ EXX>dv:Q͇:IȳYҎnD%4;VT |lLU'ooTu=~ٚi xl6ɲ.rGx/ͥǺpMjSpXo˛+X4&HGZ{żfl~5ǠBIVXmWhfS#:?8G8}?S꟡†l[Jy_&P"bhpW.xz+ᑖOB&|?>JPߦݾ VL/D endstream endobj 1562 0 obj << /Length 1188 /Filter /FlateDecode >> stream xڥVmo6 _alfMԋeːlIע.h)ΒDr\AG$E>|$H8AbybdVI>A_%$|xy.Cldy pfdyjJ>g HH/,_' 4e:Gm-L[>`>I)Gm4:z׎Utk_q;p7MHɄ! OV:" DB ̥LjU㷔FٮBQ3QqŸq$/SZ>+A1_+3 D1x ,Z$yP2$FΓD.|b!**KH'5 Cln\OzwUlIą v&qEP'88E\Dvx bCUL`ҵ+[]hOO$ݭL[|x-nnH„vˑa75LhLP1v7+q !'E$Fn{ɷZcwr|8ΚD"q0λxRl3:Vq~X?4heU@F=[ vM7x)(D~D܋] nk숌`jI^U¦/$jdԸ†qpd_Q[b>)7tܭփc+?rxc[%nCskڤ&nܹGL HTa&\5n@ s]>َBe/LHߧM:D'?D[m2'n8۱>4]s!)6 E1 endstream endobj 1567 0 obj << /Length 1912 /Filter /FlateDecode >> stream xXn6}W,^V hA H-,iB#i}pZv6C o;3<93$__R2E=h}ƻWGܭ[hN`}f|뱨t{~u\4]M%Y_~<^o ā{`aPGqFJ[*r2U$L1@aYh'qR /ظLqZd$m Hq{]P&G Ry,$[ifʫuf4W M7u%uN7؉*^"vNDe M F)0],|0]D܋Kh*Ɯtlf%Y]W-lN qs"&uM:ٛ;HR#ZX2;Ls5H\Guzv 8Z`zA R2 4( BWJD̄d'HMyφPRUmwZM1 b-Pfww LhH#F<`\̬F 5pr1)2<.(nl2rLIR)0URFĺi p{bYiȕZ{;e((%i,Z"8{e\v{UIZWlzsx$!~UCEyGT0S?3 Fu}D X<B]ѴY'o[gE*N7ʷ[+kbey2ZP19T;LircZ2ḡe9IXuN},L{7yBMlcoow#]aG'@9 / v$<9,ܸ%/Xdwjf~3wB ڊڃjN*-nWRw Ôqx.#R]oAK%ccs )jTܑ eLIl HVÃ!]mWcg]>ǭ(cyDZDG\9KZ@" HRuU5 칫 CZ7ۘN ;-v{{3Xh]lP0Ѵ94zo8? G} gX|I0G+~<={_0r2! KߦF>xv_[mɗͼO\7{q${f}'E'k|fms2>&E LhqcWmXbbWzW ]QkA` 5w1? |W̾7Z&h>e wJT O%,.$Bۥ0ndJ.ކz5.o^n ^c&S[V6cAv|:ϔc6=<2<_ o MІ{A34>|R׵m5@^m~Qu}NP1ڴiB#0{vNEm@SoV3qU$ cjkGMŅze4n$$ϧk=F@Ы endstream endobj 1573 0 obj << /Length 2761 /Filter /FlateDecode >> stream xڝYmܸ _1H[S:˒߶IMp^oh\7{j{n3HeƓ XK6%RɇȕrxH)xmymIsНP}u'/Vj[~u^~^J)?'q$ϑx/)PzUB cӃ W;eM~/;#g?~_|NiO_Q|θR~]"c™xJ *KENE[`Hh4^d}>X8?SdkW:~-G|GRXSBʕJȀEh̋'Q\TV,q5B6 qai"E-2g :P>$a'.봪X9/׮=Z 8+HiUv`Y8ޒ.(!ܑ=}U|^:ГS5ըku9~NE&we,2Ja]vЁ'$R(W~;ZL ŌTzǰOk٤Q8[P,Ӂ^-UŖ>tPpALjĹ)묰.'DON(Ttz;ĬX+3c]t:9{`( *)GxWa/d;Y*OȺ-CI;sD2c ZMB,-rTn&_XbՄ1SY(~Ks5ҍ.4Y5]YMГN2a(`6-~3K;+F}義*1ě0G3A>ր|Sq_(8 N\qrӀ.J,[X#HЦmDK"{>k.[˾wL՛7@)=RR`#Uջap͗n[d=kQNS6v/ 5|"?2j Մq5e-a%‰W'X`W" 5+Uw`M%Qd6SڮVNU@ .QCL72a p~C(8C`%1D7EeIL&4%kv9ʉl)MbH:;7<˙G Prl5н@L ^ ̠@JY,jaÀS$.3A) #}3nKG ֋ً)0.,k4`Exݼ%r>ƴvƊ޷E1Oc|m-%v8:~͞2̮Oiw%J($s 4pdGRxȆ r>-+XA-{E3D3'8PKDlu M(dI@Nʹnd=L/s&6?%QOlO`DHd xѩ+[K}*<m:^7אJZ9&‡p*SEڹ!;ks0zMxßP얬}$}'V_&A -!$/-هL+8`( P+?n ֆv=eUZF%:Bȱ#棦%ش҉sZZ.ͧruGÝD5Ɨ L nzsڊ%ti 9 g22ۖ%f- vJ%bT(4r"z- cdΡ{jEF8ɟ^{i!_b/%1_QMT, wNzlGݑ#/( 5$jZ4*߃M >x?TU80)Z+(BH&TV7d6&~tblCmpьSKqZ6Aʾd+PqrRl'pV`c2z4Ŧ-ҚYVphψhhz;k CprĘ;PHLɯ 6/:0%"{^Ka~QFmٙYb:oB?-Pq~ے~XA?HU endstream endobj 1504 0 obj << /Type /ObjStm /N 100 /First 926 /Length 1351 /Filter /FlateDecode >> stream xYMo719"g8C0$5K m [)a@hV8ofH.%\.gG\J G_ ۸8Ʉ8G %lrII@bj23r21R  PF + \5HE8b @a6uWLf2[:J,f(fڴW,LC3f3?4>"p@6uEF-b> 2Z;Ɇ e s6D% ;Q0ЕX.@rP195SiʐCn8s8d>b)*rW05q;0dNcy7՝Iu~_]_Y~qgP(:W:[6 7cwگԹX|=jHR|]}KeKu K ߭@*@?%)Ih;I=PRYe;Xϒ&$cX)/pu<2M/LiFOO8"HrvDAiBc>\Hz1@PҘ@{1=gXX ,1,m$%2N`)a)XmR`d)=e)ﳴ-\RȘͥ(JL$^B._P @G>@2 I=x @/= Y؆'4fꁞ_`{@Ts! ,نv^ʘ:Jʿr@nӇ%bEMonê=|,ok3ܜD*X+0̸ s񥛽wKs^.o^1;;`yZђ|UBv1߲c֢]@ǚqBv+kNfCHpTFc.Kwr^]qq^pT1 sܽ/.Wݓ&>.o.#t9 endstream endobj 1577 0 obj << /Length 1325 /Filter /FlateDecode >> stream xڕWO6]E_;;1^ӆbiliRD}DZ&ԼT~9dG>"g@vOv3AH~|>L]Uppec ؤG,y}0lO[̲ PHn#t 8tx6"Ԗ0ffTUd/̰]^^L/ώ`O6]hֿnY|$7ʄ'(c`L\LE&%.d.cfvnijyȡmP!+(#F*ͅjsپǮ!Q93 ߜ/ @ G!u ԶS1ѤA!B>J}A"[ֱOjQ/#kG/A E Ԗ``fAj0B2 T:p~V{E֝OC ڭHoi)Ę 䜋Kq\IHHRٮe4Kb6=jp9OR̹z6b.}w٬[֦޵CirQSj;V?(Z#ܰlcz+"0F!,Te#4 $ȻPVtYWDlbdЩi@t]\e@]P:%r !6 omlYtPl ?_< $QdKjSaKP YՈ,پ,,J)gF!7 ፼/GyV [~jTUd#H>|%y4_ѷ_l6#]E27PeҒ eh?)K&:- kD=EJP@aaca F,[mTj=;rrb씎u[lb!#PpP}f}G}qqլ I\Dg~|Eƻ endstream endobj 1581 0 obj << /Length 2298 /Filter /FlateDecode >> stream xڥks۸pTbdd\rN&)bˇؾk{w E*Ts w~‡"Zh=p5+>/nwcRڻ> L+!w>x ?^|;ܫ "WjP2!qFq!L,W*O{Y 2}BNmz4CHҺ $T#p_P@)$Eb-" ™TrR;1A#b 7wMKܑiMV{{Snj<: .|r@2LʸJ\khϸ1w,TUSNY+YdX,b0`\9En'Z7&SZбjU! tgt+CIVWeA.TK, w]ޞmk*!ORCF#>b%* mm8/`H#H,lC,i58uiSHBq*+aTwqB̟Jį)ԨMUA;I[pG x*+3R.xB99 -*z~)cwH>^YP[hl cTyC>qwV_ٙZA4V"*R4oi]3b]J eQYdagewykyE ^ӂ.-jNv犂fQ(2CEIaZxvNj좩ac@|ӳW g˅Cz/Ix@cV\ D-(ja ]" "w ™P(g m-!iư]T4}(XOCw <) ㇦!4]fx>[
dR}$<ʭ p74§& lV,jCRٖ-i8qNĕbRiZr:LEGZ}%vHWXb.mMMC nmY=ə11= quW%#4BO5au,b aw YqG(wEh{9*t $wfIdfs9/졮c6 QJ#yFPtz/JMD&jpvvVáa*8#.$OR'-Hj{lݱ Ї ҦF?& K3mt'S' On+m4irI{S`:/=kkhz>k9?9Nٶ'9xǬ@p ?"46gԎ_%fuvXߑo6#R{*O;cRqxĴub>&2U ij]RrӐڬpQX]9;NB2.!iӥȪ?Mʲk:$YN@"`A85ЊϗKoKw4.&b dc32_ o MIV\ҍ+*Tr:G}\ nC]6/z$ 2ik2` :jGjsIMLYv"E1k hikF\d #m H$b bP㤨?wR௩) G*MlMk: ^=7-iN Ͼ7>kl6 9vV&=c_?},<2 #BVAq Bjh9HC WoW'2w$v.D7-,H,*a0o֯WG"zޕCޞv/8[p eB~{=䐁8bX=ޙkxKFS3c: ZF;~-wN;g7} ϙӇGKr0~ގZL޷Eiz#?)9>Mw!?[/_Q*Ym>g/rۇGN8$u;kԭد]\L"va%$ m -v0|F endstream endobj 1585 0 obj << /Length 1932 /Filter /FlateDecode >> stream xڭXo60Tq#WVlHSf~rTd[,;([Rdž!pH=xw=4<|_ӁQq ǖգG{yI؛j'\-JP7MS;9Vcm) ;"elhk1B!BZa2gܠ&Gp,۱o"ⷝ~pnٺ΋|.J$KXD?%K{Y*5~1@65Z ϥG'A;@s+uaIvC ._M0ڮ ˔ ]̓/tqⴼ(( РTՎ<28^6x(P;<1ZeH  Y,RmZd-¨0PbM\vOgAS)38>%0(\&[vkA2 i)XUV\0qq"UZ׸۱rr]gaWɂkټ&X/{^@!Z@et'de1'5 =»"' 9ĵOgI%S n .Gg4CSw\v<CN(RF8pdFho2U$ӻQHcu_xR.Y3ui /P@9 nsõ[݃kpjTfsb؞Q&֨ϛ!m)^0ToZej՗2 !! ׇ߅}i8UGY$M_I߫grALnٳ-=2KM~ʁЧ.Á t}L#NJ /jp04?w4܃\>. Ϊ~!x/q8*")SHHusit8 JzQw(P]V"Aĕ/yKb/I d'n՚74T@/+}%eVA۸eSz9R$R5zA8/H6UU)']c$k6  "5nJ+Qp-,/"~N0ñv؇D5 f+ A *( (-9@KlsŮz X{XmpSv{J1fAc((δ2 :q:"x2oHIx$JRĦ4_td2\r PP W)YC u"[-VaI!eΤs|ՓO=z8$ v07e|T*LJ";Džu͗AE3.Wrp/PuKPeGRu%;xP)fG{0V/Tf1ݶԅ*fs;ySMŭ;(\Clo[c oYD{;zv.j?'Z6 PT^T> stream xڕVKo@W [/_jPU{rXF{gXfݝ53(S3‡3Zk{C ןϘjY~Ml`g|v5y^-q%ǖ¼ok)K]fSqg|;ziksFhyI„T |t4(*r %a1AP+ umsA-Һ M@F3e9mb@E!7> nM mF{0uxf=AmV^q'ݽ⍿损LNt9ч8m?Kot:i;n!Lg8Ws|rL!Ta`.]s j9~:G O\OsJv.]Bݥ E# IK|WZVA'dod0WeF( ƍdTI)Mj8 vpWDmdf1 &J J Ki+CPc+lXon{ka#W$Gu2[W7=Շҷ>LUM/oc%qt:R]KEV q uCN;5_%%3AUEn6,Iɛ2N&JL0V x  4;7eWrfi!bVA_0 jk}]A1У cw0+(PK7QݫiT2Uyu@ B-JJ9ԅ$!GvzjV@t i`rPc} w. \ endstream endobj 1684 0 obj << /Length 4360 /Filter /FlateDecode >> stream x]m6_W`YEP!Kb+㼶&H/#CiI M͌y8_L'Nl"9'e&GYj}BLhFʬ/ɳǫbV.~$Т(G< c-1-OLI5P90%V3nkv [D5 jM4eD5.trYG5KTJ-֫Τaꢞ- f)S @ B+hpmzVy-CP>|r?Qfej֮@$ϊѤC4VjO[ @-v!38qJr/uɳCn>xnoO-<,1Eo`^u՞d;Lp¤ N_RWYۭ^4!Kxfn`q&kB WkgHPCgBōλ9ँ&F#`$4PEh):UT|^:Qn]b(-ݙah }2ЄfhfvznZ,DUF UFϳ\vWUzšl?Peפ/F" 5A D2 ͚ T2wׂ3 ލyp'I,.NYD͡ N liBD 챝BEuX[wmE⅛Ay_ w=!t? sX``4N/{ ϫ_%6[KYz= >M/120JXy28lW9ˁ-CȐl@3mDjRdJg{@)GJ춛hRUT St7vWo#;8)z' %4z fs('>rfy{~ GbuMeK|=Agx/vᣥ+g5H²sx8_ zFKBKyws,—\U/+Mvbp/k^Xv$oCվxTUc$]vP$J&]z|g[< {C4~ F|vW6xMiơW6( ,4;׌G<Ѭ чxBG\D{gծ.Vz[^[יz+%'н 8%4Z=̌7fxxMB6HZR„ƣB_x C7ѣh]wZ6m˗g1DS(â7^Ctч{B=c6NH١n3 G> LeASm;_fv]R\2avtJ\PͱQ_tŸOUZ9;9q]=?o\w4gy .C}hNϮYό;ц}x'4zEI zrۤ~f;>BJ%w'0߄Bon~hCjC*s9o4 GGч~BG\Olj1wpQ<؂a}3 GGчxBGI",xw;žmYE(_?LQ}3a6ZA!PehF3 3h)|vhj?+M;t1AսhTՎЌTS =J4٢Pn'7=Iw$:{%^My2wqyetpq}|2#c[.yVr:/1kW1y}~ Dz*ACfnlS{wE]XiR)A~4tFeK!oLZkG.E 9e`!|tuBZ#]Q k'3Vuxj8> =e2Օ+5K@2= wnxYqB:|խ,H9YG7< }_xF`PUv]> stream xZێ}3nyJ^aY`6kd4FDVeTu9'#dDdv )50FMAW[ J94&[ (тJ+C( "nihY`4gX0 < 5M Go]Sws;rfIhKW\d!1)nI %g,Hr0֠TTA)>Hp}pZk7Hfv6L%q/1 AUq*kK`,q6`=0n-y9>Ϛ|\C rqrUp}fPE  b&@1PV (P1cK.\.%X*,2&zs^P5u+1`V hGiV3pX e n\\>Mʵ}Vaͮ~V9 V{tdpd :D.a$Aaw2vooo^L _<O.( ƃj0ts9pի0tvwGj#w~H-`񻥉el<&uT#Sw?\_t*P>^?y{_//spfI|0/J^UF$ocv4<\ÇW/ׇyHLYBѝ*#{~!TX/>WO'U,WŶzΤ1M)hLE|͛vn>iץS d4")jx9D$31VB$4ۤ=f66rnf?ɘŢ~qY,\Vc2[̺Ͷ4yhsBmnZX|y%:tX:5Yب~TֽmrfzbCK2i-Tqrߤ2ҙJZa'pXn3y3*9ˤFI7C;ۅõ"&MKgM6+̱DmV Ɛ:t4d#]vO׉9hT&\1`q5T ۯ] J3pmꄎnYXn> b-w_g~mِ*:%y7ŲbۤpLF4'O?oPhXR. endstream endobj 1760 0 obj << /Length 4870 /Filter /FlateDecode >> stream x_۶)3wS !$֦M6؝i&-wHEs?}Vq}34;jwU]*/gY~Fs3 W$~D@^ˋ<*R0gnfÿ] %WRVDPs$Bd?zdg@@O;V28*Hƪ[OG5?9Afsv] ~כ}wM 9.+0nJ/Ȃeh[@D$2=\afXC4|9|eqC7v3*e{:O-'d$gԽ{5d.Q)`#5X^\ 6͛"ٶSx%RkXs6Io^ޜ!JQ)#5u&J%e{̼mn1u󿫷\Łժ@HPIU?"&08x8'P8)p"5*4F: j+鬇㜭)>S"4L& wy3AFmv]LCm++Da4HG8i"LѬЊ*'ͼ^|5`4<jV ݙgxd@ 2|L_rRfqmݻV]vM))SkW\+t1$A[ph\ N2Y9`PW~rߙ EU_ٙzzzlCyR.4 cp: /GrP[h($#S ,=䤠g`= C o)#5{f?f˴u?-)Um_F`{8~H(~`,2/UdLj fqby2V`§%US< |r m:hEdv1DF׻]}ldfHKxƛKB_*Z0^yy8/:)"5$`'Lol;de}n4n9\aPYN?2(:頼Yw)"\=Wj(~9`40RT.%oCkK ~1s11qG2!&buL(,1_IM4t㮖er&ڬyFukMC9Weq}tp^0Gwޠ-SE4kp$ya`vzhf`oZ]G$m#;uwHtg4e bI Rdaٹ՞N5;\ -+`_`o^?x+J)Pq$l9Pʰ]^KYz57zy:V<PAaKWT{ۺSUSOFp"t1 p.@ Ж)|#5`5V–5 &+mA_Fۊ<\#3«G,8yHmB>YsW BJiúl xV&,ZYVIS7KKv1JX c<3R m:Fu*^غ4Nf}z^,,  `˔8|2hQ5]c /t8E4t:*s"G hgFb2!fbuN*m@· ?67پ2sD҂RH2nDsBQW ei5=6m I>3G)q8W}\/Y5hӅ=I7HGq)#5f4%W/*_w7M>N|ȇ /Ж)ѬG2U@~$e!Gr`ә XXh˔XhֱeA x,=sH0҇/~ <L beEd˜eu7ViDHR# ǒy{P(J Gj*Հ2P[N.v?1h`y/Jc#B)v(r OaJx{:*G=vhtEN {'H= ˲xyt^:A C>{*Tٷs}s^|]Vrr~嗛|~ݸ,=< kxHvEBDIaotQپmou;=խ:z)'t^]8W;\lBN}1=/d1G4:gPpEj:pq7G0AhU=يyt^i21 T! k|9ɹ w" r9JbɼׁXA;Fx4:^%%+^7]xMЎqWzxx@&% hXD4(+<{ vݶ/,2z1ő#頽4t{8Wv>"oGzmwk=# ͨn:[<D>L_ g;ƀG4Zܬ7 V}~{x+/{ͺ ~@f)t`K]-ط(24gV^7 i6uhBןC&w%:vd}|]N\Ls+a ̓Š#cR~ɧ=Yc}Kg@@pᣁЎ1v! (2~u3逽0t718_]f/5; na1'93 Ag0>`#ᜋrArfFs4z7Wjnv_e}K4 RF#q@1pG0:cQbf*/6aMROwjׅ3x9CAh. 13WY{8k`4cuDcog*)ݹDJ"_26 BRЌ1hYžm߽lt`ˈ̞M9'3GB(ahDYTe| [>g=td(t!p endstream endobj 1855 0 obj << /Length 5245 /Filter /FlateDecode >> stream x[oW%t`1kw$$8AyhϴEH!yְmʖ4XMW+E6/ы(9'.߻_~ uQӋwwˋa\-?BPIWZT+jwoyo.*R+%!r1hmoW\f4͢[On;vݷ+V_v/׫P__=T R꿯iI':;$,+DߑPֻg {8C%}I;.I-8!fCDjLbqŪˏ^SjusW\YEa#*].؟0D ("`D 4hzsRNs ć篁f 90fj\2"+E޺s!4{`'xe(G[Oh6#*oj{cNWr.% @/ '[|NA ,([pJh68%:aZm.㺵}BgTMOˈ`Aǯ*zG(`ȸVØi8curdr7ݐw]  PGC%Gxx L'eNx&4,ON=lW2!/ߒ'KQǍ4.ẅ˔fz0|3D~axM5dZF> ]'8Ж9 n{X-$U?rrYc4mi8MM` ͆Cy  }s-s@'4kм9 or[c W .=DPe ϣ( 2SBTքςBk-9Q,tXefCIU#)߯uM|dK*YAQalXJ$z#K|]#=, HTX`˜ xY*tw V {?yŵ~`v`o7nQ>޶D׹Yuh@G+; 4eN$8)dtʶ1]|i"庯DY|ANz' LC6X5k=ff#dˑO( Ag%[Jh6dAj'7i0 *;Zqjޯ[dϺĕ0]n2]Ba'L\a?2UDʗBޕ9fӄ 2fBjR4uŚAJR =l02AJv3=hMҥ-Wnc}c~}8 M &@ LC`,tNeYA@L-sp'4'7aK ~3'S[|Ai8eӄfʹ愹kvд4#fD֑RB|9[f7y 5`nj Ih1R1RRq#nyYxv^V\}M Ӳ!<䂾vZKR2ĺKN(6,:bĶ?41^E>HOZHZ^ j"3^篁0y#]͘X#LJH3Mg4g|_7|APQ) HOMK]J%%6,t[IOk c%CXѸvLEB ^ N#q1tl/h:Oի/z+6t=1;fJcnUrS1٭$4IN^ʔO?nC8#0<%*IΞE fqw@⼮nݓO<C,1=S/nR?>FO **MP[pj`FZ"x~׍4q ;8'f͹.2yEghFϬKxf4fsRޮ˘nge/Cۂi2ԩ/!ּ|סz1F鰮^JAYGCGdh4SѐAQRX4#N~ompsC+cx+IT ?KcNb,1%c:w&wo?^Gy[/ pHvLMhpEA;x!z#{o\3L4N;_oR4csB1_7;ec ;T옊Fw&n4MK|l˜2QB"12ѣ,t.L Ug?X/ pH옂$p~!2/3PWWos+@6 2R cKJR)R|n{G1~ $yі7ccNe׶Ў) cvf#M9c霐6BO#U16ѳL.f}xSYݷ^.rL)b}{M13G #?) ?m,s";dB;`&4z(hF+ίŀWNaR(?A?K) ""t,|FGk>cwy͡x IS5$ƈfVocйKZ89G\0bcTwS/S,L߯"@eV8p;z) xAI!|M]x }[`u]'t6E+> ̢`Ў) + *XޛU+s+_kx=Y?NM_a犑M@|ţttj7G?n\,ط`X]W\?Xk⎫mBD&Z;h<PT `T$40yrþm+L3׳H xV1 > tVS Nw\t_ELQo0c pЩF`ƄF0 zoV&솇W_nXL0htЂt!7)h /mj~6A12eP^};qҜó@hDXA;&(QY.*LWwݛK8^~i -{> G _JB*i)lbs9Wp4: " 뼺poL6|n{5u%<ϭ8Xf5vLMh`E.؛{C1>G sA>tʇఠDtc VBs_dpWoo Nr p|Й":vL{1> =mP:99q'zS~KgwT| @}D c"R]TQE,f *·H#TlLvɇ!:c zBZp9߇ʇPkFԖ0\nD;%4zp:+ww1\l?İyG"8?e`3'z:4Tsٛ!zٜj| |y;e> stream xڵZMdݿ_eUFHD6EĂSE S]Mr[{0uQUONn:K^V!ெی9^ MT40zHfO1 zXN"Y=f!VHB^H=p=IHBBn=f/GT<y)vZx4 X򌁏9ٞV~֋0ET9$)XWQdÊ>BXʐfQz+aދf WuF;,AޗE'vƁۭAYK7d S:/Q "ARr1Rlf! [1LbE_Lbs`.6%zoZc'[=8Ëk[=fCZ$^H)6t5R2{DQ&'0vmK,2})saH6ձFȢ,ZKbpS,~_j Vk'׌P6Ǥb͈.'R@G#b0goߗ7og#|6o1z#.ʰ룏?ݗ/O?+_|Oտ? [zן}Ӷ?|÷RF`з~+}Űϊaa^k)(NARF RfO͞={6l<31s31s31SL9E)P ),O!5SsO=5SsO=5S3fJ͔)5SjLR3fJ͜95sj̩S3fN͜95Kj,YRfI͒%5KjԬYSf4?-z翿_釷|z/6i߄s}$.xD)a`fGWXAHdo&Ďm5y q9f 5-lQp DjY{mjAc݌U>Mr ~&M o$ab^]o I$ |j#BkCD|WwRS>P [֪yqTj<<;WH dArqtdǑ"@fv.%r0ڻY"ɵ6N85;r\9?vwTOŔğyڑEZ 5B?W<gQ=~`r \: (`.;IG=56㔔߆ׅ< Q:ECyo M#:/*KTSnxQ_< G͏pQd~JI|ŋ#h^̥{ B ![ǣ8)xq\xH)F伛 ASuywz,VT됓-ez0AKQHƒo.Οӌy;ϐ\m5 {5 <@oNcVdZ_w/2?Ej(z]Z8܆֑Ușg mN .}*Ѷw}"xvTaDn{mp@!vٽlLB1 #/A_o6yiq'\\ť>9pϹ9̩Uf/>-_/bb+jc:CtL j-Mʖ&ek$k$kdF^IJ.%ђhE"Zr-\DK.%ђhE"fO͞=5{jN%qђhI\$.Z-EK%qђhI\$.z=EO'qѓI\$.z=EO'qѓI\$.z=EO'qѓI\$.z=EO'qѓI\$.z=EO'qѓI\$.z=EO'qѓI\$.z=E)y{syWLnHzN^zH0/Q tԣ@wD = xy&}ni9^:N̹;b$qݳ/DDy+Ta_?)|zD> stream xms۸S='M榓^eݽI͉DHXYXaKxnrDjwDgβd8'гYҼ[_\u?Οp.&$K2:_BSדWղ\?$1\̮x|ep:)Be ϖ e:w:-DJs3j{2[?:}ln]QIV7y&9wۋcZï4gkytSOnWܴsV3O-L&&oZ;/|;3'zsذSI_b=v57Y@{16˘ld$ DrBuv]E`$9SSt//ݬqYE𱹭Wc吷/n\U( RӠ)<k:X|xbVij((QQ} }Wn|3wi*%_qo}K5#bH.]VLҐ\u=mLgB{0ǐ͆f7=[›j> ._1p (1AcDu~3Fp#x8-PcǞSlr8 2Sǽ0=rN! endstream endobj 1857 0 obj << /Type /ObjStm /N 100 /First 1003 /Length 2215 /Filter /FlateDecode >> stream xڵZϋ_crѓ$0 1%ca2cJ $0jתOU*UK!\ 1q‚r 5_n';P3A \30ԤN(;,8}6[ JKrkhΥQ ! J&̜s@>kPN?3u-01Ԕ =($k_AAK5W4pcvʂ$\JlT BׂϠD#g8XhS |ڨYBiZҹT[ۂV) ]UX "M}Id}&`gJXpI}D h r쭺T>S>SPr)k(g T E+P:`{|R\WVGhG@H#DGhFbC;UB5caEjnp)T04Jf0Fn% 5+V6ֺv]6wl.aVL 8S\dL*} ȩ8hSttugaWHwlU{?.˯Sҧ˻/#5&JĄW;{?W}cB̬ancQŔ2 3ȱY'aVWLiLmS'a[ass1 0yô蹺=20ŬufِPSj4+X?k$BHࢥ}_iLXfw$?!l ָGb~IFJk#/ [O4T i.SD MDIѹ~$MZZZ'{;mZQPrb'3Cm&Ƽ0=7"%YzNݬ3ctͤ䨤T)c9=Y19ǔ*Ib"?@qB"?vno3Ql<))A b2Em+^V:;bF xWM(mc}IpHRa(tGpOk(dv?Xs-xPpMN#ޅxgjeԫPRU#?.#W'9O kY"AKS+JrvCVꤓP{X ^Ah9ؘ(O³[Yq&ZSsC̼dDD$ܮ#œOiSW6=IQ> stream xnH}a=E̮1;HD'ol.nEl%*lI$DDē_/IT7Wo/q*$ :Y\ASӳfg,=TTO'ځdl`$P" \LƂP.P9tU=%bz[gX]ޯև}}* 4!K\\osY2v>+mF凛Czs,8*+?mꯛ?gktr$\]f,\B8mi㦌J}_16tuجlcSaQV2u*혦,aD01 %% TFDB/P90 vS\*B oyV+Uf5-8 9d"pJ{B!&s.EG)t$ EŨ9ɯgbp ٜFh=lĔOdBUFO> X0夐]%Xp [[E 9.:'2ru9_ /__tީhH(O > u㘔J d$MmFT5ȫ]?#p(*$!b@($C c@S@Q@,CH<7TV$Dv7ٳTY[ds>16.1d–ۖ%-xxY;2 (1 2cL l twH b%rֺ[~5EO9ɯs/1ks-ϭ\IFħfTǏ>80p1}T:W8PX``ynaW'Y;1~FuSqW Hs$6Ӽ?RU4pa>9· QR2BfߨjE1| :c08 P0X`ynyNGhx%{\` ҁAp\۳KhCQp\vx02:IQ rېSAN@wYzD(uAuh`;AH8z 6o2pױ>0ߐ­>G}ۣ[$0 |~ڍH"3IJw 8@}pXpDc(]VlTT{΂.L5.O]ˣ[ݐFA_Ne{ / ٣s/1 +q kyt +)ᑩѳGΘ? N+Hq`yt T5G:+VnY>x^t9i/UA S;erjHwSѧEӝ[ 0ү=)سkia(` 0@qdчUEGvX9x3sD5x\WρR֔ "Bս c_6Yx~W(.%?Ipf׆' ָBӟcp$OM'%dF Co4(P&7 .,wn,p5(פ}1 ( ˣH5Rl\ꃈN?" AчэH(HD$SW%1BqaytáWQR-nz7.ǚ,+_ Tpǀ dos.ID~?تK~>VeE?Ɏ*/Z0 >-n9#4Ni]6@q%%?ż+E{˧ϟr本gt(a!-/cvߍ+UZΕ=l 0D:g3`} X ЀAǒn36N?T  O"z(_\NccSOrBouTFS0umnuDo#HOlBa\XeDXGGQD^vPu0x:8"P/Ν8< #?3yyyl`},nXuW IH=ѩGz!8<Q5"Y5> vЙWc >-nJ[_m?#Β>"t8Է<:ՇO_\,wSzk;\t̃z滐ruKu;Bof6>o3)kD~3wNpB\BD:CV~)J_~Eկ k*ԹG|HQe(Q*ۺ?p8{&c;kTuP‡l 0TK2`s뾤,"2o..o?|X,|>==9wLmj"TA 5 !HX]Ymyϟ/ˏZ>wmGuzu0N+0!ZmA~O}N>0 eAOG1;( iˬzlFi|MhܧXT979AEY6И@:@wmt^T^~utpS >:4$6!wc#UUZ;cmh'U0>эK 7U3>*8@PMG@G7@fX;z~ylD"Ur1ph4 >h,nh#ױNh'TY~>@OhH<rƅ⅕cd_w,c2F'׿12*1 >h,nh"j;1/bʤ0xtE)MnPh:C R^u7u9YwZD](NA}[ݪa\3Akc @чщN~9y'^;6+^tVϜ3~ #ΩsoSxS|icrQ}iíe{7FWMZץ QP endstream endobj 1953 0 obj << /Type /ObjStm /N 100 /First 1002 /Length 2211 /Filter /FlateDecode >> stream xڵZ]}_E½1̵ I?ڛ`bvz ο)ukg ӛw=[ӪJUuZTC2xjRZ2zr\J@ # $ !tU,i:kǰC/1N ΉI 0$1Ibc P#<1&PzK FtN!iGA'Wǵu SHt֋&X[T/Wkc1%m4F]VJ2f@bcj-F$#Hk`ɓUjظ; [UKr1?Le\\X.$Mbk'o>~c TK\r ;8U(4 SB"R41V Scps+^iq#zjaTƾQj1.<$8US3J=a ֏-aq Qn?FЇ0/>2 BCOVx,q/1bՁ[]| -m?AF$!y!95$ B5nTu[Z=:?Ǜӫ/܏xOwқpP^~~pa\k.PfP}?gU:m:=OWvT.#!qp=,pisKx^LpсJ |'8/Y%{Vc+\/C|c妫}pֶ{Q$}"JF;HXHٖn]q4pUsG`|kO_Uppܿ|w ]~1WS)l >:6fijfijfyj橙fyj橙fyjYfejYfejYfuj֩Yfuj֩Yfujy͛mlf{yN4|N4|Nçf}j٧fwpƎ P P"#n>\kr㻻~tyj&}5[;Aj͎~Dl~9Y `K?c˩h6;Nfz,fH=t#:JNc1+8H"hz~hmU,#I5('][#>c ֶ~+;Oqǘeq.z!~,ئ1EXL!k|ƔJA wjP (Z}ˤIZ4zFR} 79Kc{A;rYvu (ڊEC 9'crg,pĺs vp(vh~c͹.'01G}j&p` >O7J>E'&G (#/o۫51ƧϳKKt(vumq,xM 6Tݏū`[4K>EV P[$Zr~o=gXiњ@%C!~>R 9eþڱs>;Sڨ“hiXC4$!]t|\^ǁ$o<;۫{/n2zht(׶N3l| o&*Y2->On/5hP~,蠷ggc`QNR,hõt' R-(`!$C۵i:w49$=`j E(-dVJ?w@C>:8Ԛ uiߨY1q\-|pDmTAK?4WR^wv}ض8vr(n76n( t3>Q.(EA3u%0H^-,! }{xHPG8Dtaz( .{k2lëMѝۋayw,~ߺ endstream endobj 2085 0 obj << /Length 4132 /Filter /FlateDecode >> stream x[o)>H5˹ҷ$۴6 v-ӱJr!r$;hDؒs GttResRr2~?L_5MՁSp˳gߝJ9N.GY9oA%yL鷟9#B)T(p3J^ Bp4GmvvGpgВw7;tR*υv:{Ȣ}Y+3;Z- Y)^ڤxJ `;h߾ {ұ %哜W$:T#Yq(= 2}'mdvKUU;(٣<┕Fw<{O'o޿={qvr(}Zߜ!+~G0)ed{nwD \2RI?ٛ7Yn1=Znwv>. 0e(,ɞ?w]ef{ k$(\76ﷇHI^N=tDς8FU$E$Nr5iH兹ayA}y KKmoPM/6EyoNS`='] 0>P\Ar"xiہͬ^ɻx)ڎa ͧMܽr)UPEG{*bݻeW{b.H"v[Fd XнJ}T|QUGҼ6[rg)5a$3I V#T\qXcGUU^I~iku}v/._2* 9 ]5sBTk8Ջ9yZ.EnQ=gI2.4sp3k3m-?rӽ7os-Gh7>4f]on쎪my{q?=2mW֍J˶^-`}ٜuB8PH4SP.u56k?M.(^O՚}+f#\t77'/h5}X7O@Y@eEijjD..Հd>~;.z{&sr*v8V˫?+%o|`Pwr cp̳XOTMX<@#9#(v])$xT^g2J,~ 7SIm]O%R;AoAsWy<(CE^J}/݋?veO`j̀X0R=fHQ<,o݀Xa`RE {ؠxJmpA,CxSA]u7 R <0Kal,bAFt.s."5\'enAzLJfxPW5.|ZR?"RiXg'4}C2؍^ڬ& Hf`,xyּ:^.E`o76x8)P4| 2gMM4@LJm!d7#a,Cxd\֛ Q֦8o(uc0!D3<1yM'En? !DB SqRVlllM1=.:<̝q1 >J @q8",;p@TblL&ɴQZvM2[!ML뱙?+DZ{o k30n##n)сd;aY!.VK+'Il:/ TO qx?w릾.oG8a΍7sU0-Ms2=Jώ=jGGOɉp <6[IΪbMp:7 T1\8xtTp\̗#|Y6N ؘ&4op$q3;nb|Mk:-N 8hxtHֶ-|lGe2ªj|Tf t0 (GD| p~yШOvC#[:чCģAWV?Yׂ%сBUؼe3_ךeb[%&x8+P9G+U)l]?YWMo26͎al`=<:lJp}oogz 7/rf@bΉ7sU 88xt%n[ rf'ڒT @k0>B"!zquB\7ߐ|c @L@}D<:LdAfZRȣeRN7=d% GTģ#J$sWD}ELӉpQ >"Q<'>y8==l;=> R&Hy8RPGUi RcaHHܧ# HAS0>"RT<,tߓ8n(Dԧ DA} GQLJm%*HbDQ2OG 8xHJRU`Jԃ1٬' 0H Ṣ*b[D LE>0 0Ai@}0E<: Nrn˧WAa2YOa"08`xt0P*L810tS AM@}E<:d "E m|(2N)"8(xt FtU:xce|c3YOa"08`xt0qJr-~Ӌq(+ ܧ# HAC0>"Rj{i>#Q̎U ,o | 7-X >"X-LOmո!#U&Hy8RP`)GRLEl^}:R8<C*"UV> stream xo#У@k͵)4A,_$Cs_rE.G+Zܝmrf)/g (S1LE4jF&ThTYST RlCUDJ2RQTD1YTPy8T0lUDJP©KU%U}Ip`G*P+RW.UuTYST 2fCmAZ].@}>U^N pY*PUvcU%χ @`"5TUDBuBEˎ%rφ @:/ޫC[F@l2M).A}>U^N 0-ch6T5zrPjeχ -ch6P5KU?[,/B}>U^N p*`" URqs)_*|*H*P%T/I}>U^N 0W(U1T 47rFf+*I#nFs Wzp{:NT m%S.18k!G5oN՞&M|$hviЄK.:X(jnL5h؆icȣ?%Y[G^ i#`ϺZ.Ҫ6.=nq Y6!_p&O4x1Fh" \Cί45aiz;#/mQDzow뻏z[GsDZ/o(p IVjHBvy, $,8 Ж( 51|9,#8CWme7LDM L1)&-ch6DrsQҦb7^wwmhNשo8AY0 e  jC/t}kªJN@$ (_nLbmWL*ATMY е4smCG&E?E90Ҁ!#@ՔͧOheM[$(I08I$ Ԟfns-w?{B/h)!nIݾ?p*9]2B/hG^CI"m~d׋nhdUWIxpvb#@c'֤6'a|U.5G*FXƓ =>@lO( ||̩+HO&xՄwPOL` ct;RE44.ça1n$pID/HI֯x8.0x..$tE. hmw l[PdbP>GPdpHP"hOz +}Ppr`Ϗr;r)r"{rJ%yڬ;t 3t9;hG .K*}6+nMi5,s[ n) (anLdڑ l1La!c^#Ml dnNY8JvLA;R(E4 u RO7O5%?^g^#Rzn,8'K74qy; /'[#PDcmH]4}!G}遬pv`$zhGpTM'=n miXCzB1hGS:G64RM)y#ʚul>.|p[HrJk>x[ž:1]K&m8evLuv8h1j&.=&Kumpv`$v)v";ŲggF*q>F@9 dxڑ@g1\h*oMaqڣwyKdyPiLMpOO=Mu4n}ND׉aφ#Hسv*|ɕy*@y8@0 hG FXU9;>ʱ=C> stream xڽZM ϯбhDRE^Z}hj:"h[k }w83 v{93胤H\FM%)'uA&.DԛKu0vi$6Q `Tumuelgx7+{F{c08LyIhZԓH=4Ap4%ƥ$KĸĩH*ajGKROV riXIHJr|(DC0p&(B(Zu>TgR)p:̩4p^'~蹥u}51ׅGR $KJlXXՅDIzᤵUp$mbTH'9R,(s2Ҡ9R1xZҐ=*tΑh4%pTI_ZPը- #v[#THe|OO} nϏ_>}m~~ǟ\P_?<<OONPCh!4qFt}DGt}IB 67N!H5BAC!22222222222222222222r 5k @\r -[ ᫯fߞ?O?l|p ,бW5Sgǚ=ecZ v8|idwܓ%|w`l&!>lVlᝍ-W8Y(SK8cc92WsDlL8AWpp8;qBIɃ:RN_DgN>㩴Q39vXKS/!iXKNy*;q֞g )53]ZF.vmANO\rRȏ/\Ժ@O= bK kɗy!z˃sՋXX)^-/!9r[8nu8^g(s׋2+7lĉ( ;q"q _6L@n"-u d%E:og)Ǥѳ'-ٍa/$mҀ+ QY/IJz[dEkCڈx[VI]dKxb8KˡBHV /,6 K}"DFVw⪈ QCVO&:nW@s[}ⷢPz2+xEtEV.UQ1uέl'}dv9+k%n|=|UVẎȂO'p7KGa;] m,|p̙|!Փ!(kp,J3լwu=oxUf!m#6uk{ܭ[`NRr3,I_x3L-SĈ%d,>X8b%&ʷ}Ѕft%F(L#P僉wٶnn|0q_Gk`mۇ;vھwRϳ1 %[Kg Xyْ3"~z:&Hiq=ҕR_\۶ygk=g e:"űIx9a_y9`I_~Ë +ˆwOsw +SL$"D:yꩌxK+VOct|wӯ˃~]SG/jh_jfY<)ʜZ9(sjQԢ̩ES2eN= z @r#G @xDc-[ bð0,ƏƏƏƏƏƏƏƏƏƏƏƏƏƏN5~{y +ȎB:-!*_nλ57j}v+鍩zG梶 ؋ߚ^#BC\M (녠ӓY[F9fEvKQեklzxT]͚[^->sOiy6znזm-].N*]km__6OqIooTF endstream endobj 2125 0 obj << /Length 407 /Filter /FlateDecode >> stream xMO@{C&bhc<@C߻d%U҄.μ< 2dęH9x}rta0I4k͐qB{> stream x313Q0P0S52V0T0TH1*26(XAs<=\ %E\N \. ц \.  u@? ? .9)@0 ;}^c;P3szrrb endstream endobj 2136 0 obj << /Length 179 /Filter /FlateDecode >> stream x313Q0P0S52V0T0TH1*26(XAs<=\ %E\N \. ц \. ```=700@@0C1ck8? :Z>t3)=ɠ09 _pzrrd9 endstream endobj 2148 0 obj << /Length1 1913 /Length2 11496 /Length3 0 /Length 12671 /Filter /FlateDecode >> stream xڍP-;]0`;]Cp܃  Gɹ*ղZvw@M,n1@\YJl66N66$jjMo16 q3E&ebq(9<ll66BRf`  @rA8z9]_#H`e nrJf @3;z+ J v\@ AUƂD д%׀Xz9/;0`rh+TA+e7vw4s;X,v "+C3;ȋ2j. vtuaqQ"4/]vۃ\]O ݋ux8 ,aȪvrKm"B-xy 'h#O |!˗"@~`K$3w o#$vv 0Y~Aw{ ^f?^`eWatO3 ӀT wrbwyﱠ{eA2 7dfb^?]oB2nvvf`; ^Fe- /:VYbg:yWw`'B k/v`*ǩ0e݀/T^CJ;!7 _7e?-@6x)` qF=yBV߈*x߈*)F|VE`U^8#.?7b;mA/_s%,GkY-_@/yX Z ez阵˩m"/+/B_9{u|9U.' /S?e`ȿc_%=Rߐ%ן 럇e < ' ԇt֊{0NR3,9wݣdm8_anK]-=6‡%?>$O#},:o E$ah խ@ƇZ}YֳaX®ȏgcb Kͳ (\IN=箮gr'b9}79*59\z HƦi|$~*/l/F^8V*sH9pfb76UO0N8 %k@ .L)3&=Qj$BY0v9:fdEҸ@D2+U*cyFE+83*"ecJ6́Y^jY2wK;Vv|Qbfgf!IK jweQCX &ݚqvq*;fum,k֣7{/]-h V/ꢈ\(1*+%bwt k?A|酫Ƿ, seƋY4RE[2hb)wџ6`)lXn_3EoZ,>SlW8΀"^瞸y ")yFdÉ(H3/4$a滳M,,nրbN0Rz99 ~tg9CBI׏b;(kC9bpPhG,>N@ f%.0>6P鲠1dCWV˷]73.l;SnXw#+@Ӥkc|B9U^wZy\qw4j`D:ʐ`(8O5k$T1Դ?N1۝H- g$yzhJ/Tyݎyp&=wQʗ*>k @/}ZD66-{B.N^`v#Sjhִ[)aʘ>_Ŝ>ga}/d{н yf{,Y4\hjxUy݅^l:},t?M6ܨ$IBEŒ;%L~kUXVfX3D ?K[yB_3O[d^_Ѡ=&ԱlYv|0X3Y`uvz@S4R8l|m Il!ߪ}VM?]؍C=,r v;@ԯJ=yvK=Nao4m$\F,= ~C'훏,5Ls}b$ZH o=jaHUGZ)VZ&  Ӟ яeM>'#NBfƲ|{:Dw*Ib NJ(jg2;?jFgVDOJV #xyz> M$[y9Ma7K>n髥6gl.Gd 4rhS*b/P5}f ]cPjgr薴i8~Xŕ"TVN+GqgmTk[G.8!#:΍ѳ:Bl@@iPwF`!I̍s gz]s/ff](be"1J!# 1}^$?7'm)&o_g VoJ60]n18rޗݰ @0ɉ%4S=\!`q{r\Yњ/׼&_M)FPTH@1`3 :>k^.Ֆ[u[U~!z-lp['JtD<2 DD}#Շx<&jG\<{Q(EUSMៈ-uc چz>)m3GwHk3h BIh5qZգ  mL.z%P,xEApcI<8渦}7547`= 8 Ioɜȑo:=)W|Y51"󁄣VʽfB~lDvg[DغgoFwuKpAAH4:"oRמR"p .9O~K']jp֨@!HT[|=pj VG&>U. ua3EH\gzt^J{mWm~/~+ztS0 xfccOo?(V`N >t/i}%Y*.mbNzԕIGOU0w O|a'*R5췎*ZH#EomB*3/SKx>DIf3=ʪxFc7!!g K3Gԯe(l} O,/w'RЖi y߰KZ;Phy8HJxu76ՃQGy$\((W.˫c5{B|O+#A6^ASHG_Q_Vݢxe-&z*%7zKi&OvD: _FGG3Y\(/PX \|!\VM{q" jA)]R|R4Pkg|re_<)m@0$ChD'i8B%bR;YGqF9ȡxv-HuDV8RLɧ>ԣUJR%j{AL~sTw!{P LɸvQ= W~s|U{G|iel#Jl+0i: > ;x5CFS)Ced@{;[;^=ܘ1*Atr$p }<_l1>!E>W~s'b4l&EQ }KbŽP@=bxYH$g%-Xp(E> oR2t* ^`Fe=Fc-"RSv/4S ?K W$1x$j?4Ҩ`&3ᏯSZjls|հȮ}Eu 3 <\$OWu6Z2Au,ul$bX^.sj-e|Ok0s*N:YG43;ǝӴ3[ݭI]靦nðo0!H .m6P#2'U<-'V~zJ_`^]Fb>QҮVG݉oYVOdd)ꈱ7(cIwpvboF7נR1zd6XP?/Ÿ$dQ͢†RNP0)3/w/ٺ1@+(lϴS;H)A::渺2+!y4yϣ_`Smg:3-yZ4J]HiӠH|T{"!&ݫr_'}xQj&ڤF@GI]^Yw؝fWV@`G_Ÿ-T⁔"26e˯㱏$IfZBޫ9޷wvS4Ð;Sp(e؎q!j nYE>Ǽh“!ԹU3~)Z?;-v. %i^Vg.3|frz]N9h) !.7%936֝**aF*cs:^ ;(jFOjߠEo՝عu?CCWUz%+nI;f"7G1BWA$B0(q.uI8Bl]/Br PQV~-U\x)㨧Wx]5ud>rូ>柎*GTK 1's%^f;,)ffmb1є 3}? G/ʼc` ]žY;zgKvVҌXp5~cԻttJ\z{:R֭qA'F(èg=b $!^Kv"'I$WwF}j}$Zk4| FBMy1>t(- H }fß ~c>%Ly|usO(b _{@SOX@r'A&?hM?R N~γŸh pX^Lh>\nVGݚg2dё2nhy Eh k0iLLX=)5*F ڃJ} Q.2U,YSF`y5$$98\mxon\\y* Rïz=AlG3v l{ ,ÓLYoLȬ#L͖ܿaF-Xگ-t n/@ Uswxøjە!-޴]ʒ18Eh9|X|T==MAs:-,OuAp|l?W1)V8-PhS9BjqM|! c=F2Ưe`;Ï}ApxڧARuBŜ٢RB3C]AH` _j{%=ͦY@^85뚶:X%Y!c:**Օ鶠QǠ+Sufy& Ipr3N?8s͡*#Rkqy}nrو} 0F⶟|j)2[?gQl\DQEqNpBYqBᘝпnWe FD&Kj1n*П#)@+;z U[zܧi9ttUVn!9iIprj'T;ܷ,11KygVJV86~Uٺ1Fڤ[1g h<(+oYݳ /_g QQ.T$󚸿8"4Xr9OfVCP4jȹ (j-8vPٲஏ$N3~;t>,Xj='Ï𷇕}[[ QGDl|3 6^q^'Qڍy앞|d\ol2 LD2G ) JFGz[H S W{o"ӖxԆQ=A&R`jc2V~̍Xxbp7y$W|R:m鍔3 ?N0ocKx'0 5Gh0.45a~uDS$(3Idk ]pVF qp̛s}>w N]p $KQW=?'X/@KŇNpc{Ic' LpA0/"|Q{e*I(0騺jqknă LI zGd잙Z}' 5XxuΞ'cjOϙ9\WX2s,`ʞoOf9kJjL?T"H;kJCq u uUӰ!c@1hs~@r P +TBZ .ʯ܊"OA!h"Ֆډ9A{RUqQTp$)|X?Xs-^`g=SP&(zY2s!&ź LfVn蠬=X̘~96([P A Bh]`3rŨv[ES^/X5NU$J޾(xZ_eg_˰_S_uu}kA"6a EopGS}a,GW*-t͇#Isg;0Ewz:;'_Ic +_dsiuC+Qۧ#Jn(4z=бƦjלDjUe8}fPnNwL WoS[v *i(T2ͯgJl5&t_]K2ws*G5f6}͂DRgo٧ړhT_H)urD)BGꕗ1&`MK;Oz?_"vN㖞꭯iؐV5dތB6~ W{>[ZE`KKA%j8U3\a58^u=Sf]?@b{'iN.?7BlQQjiMr- x69 'Դw!ۯ9JG!%yv͉ ngYc(|fI&( kAbN5k5@v8Mze_$c4Nچ^݁ts9f;LY2wa&;a*BU]FVws^i|4S~BE uu+i-˰ɴIX`dG!sv1a53 a)=v">κJ 랎ZjctB%X0=y[Z 8=Q=K7Vѵe&/|W#"f:s 6G浺&?JDq_)g|1ΆNT9wcՎRwRvm1tTh[nDgծǤ4kL&=eHF ӍP-p  2yECQZj6 y_?/)s]ں5<7a3!{7MBʵv7 i\;0Oo5%xb[豑G^m½iU0 'pH&4㨂ѮfᒼS9z?ϩQ{KbXt*4)Ij Z%`\ <z 2IK| yhhXM{ec)p 4oqGħ 97+R z}M# u[v]!@Ef<)o'2ڍ 4N ]ĆfCxP7KC,8DwײWY[բM# )fG=4bd g>UDeS~"?{yw0ںw! , Q[WLh\P]f`%m6"3:?H[lɲ.:ϻ|-/jd;`j>+mY A# 1W:;it^_Y&A]+VD[UaڂWJ:V mdPEO}|zڠb|L{ӔSҳ_jBԾ党Q_RCtoPMC Uisb8M?ޡcH'=fX'yFZbR7>5s4v4R16rq7`+Nbig"roUKT+bSr&0 oO`\-hB=?ҳq:"7"c)ה7:_Q#b53lyoSGk4]}vJjA4[#8v4{B#db5\4u6%@NO+ s^YwzmT*qO D 9^f jNIb4F46.?Ũ k IR][Nl<ހ@}eolc,r#eHj;i,1&vFm殪)7kl:RQ *rhra0C~hnJ8Km}=/KYa6p#[O82\R;}Ӎht*dQڽ#q肌$D^GgWUTy*ypHE'#j+D[sR[R1(?'8dr-ƛ88Ӟ=EfH Hӎ2I]n[5OQ:tb+c> neS̡R훣=* [4.#;V'͕P| ap)u{x/86Srn|+?ksjA*Ҍ$4*C})p`+gS'/4iyD7l_}M@qN{ճk%6 oohq?GK $:1CpB/ ^EvOnE\En; d.է gB9% lo_ZH1^0 $i9BϠTTi%x(;|}r+<{Xj j_^cV܉yz_0G7gZWe>c$V\ s`F;3~YYLUc{G"^3zC^'g}䇓|KyoB7cY TFR7;vtbd ;k"ǻ,Ȝ9 ]f m̯UWVwH3s,ڝkX5k/B4I~l8' &%;)"퓓o3RQ ^pݷ1b\Bz+N/"Kn?jl,{2KD>|В|mDNʄ IfOFC&Q 5H=Cn=sn0zflA c _ 0~8oLb_ jOaM@8rQW-ɺFt*tL72e"$V%$]$ &|wa, QTEAqv){Uz]#P02͞B2阷Ne`m_srH^PmDSj@gf fO}Zdڰ CŮOJ+&OqSA+@O:~N#hu IEۍCš m㰨AIv:vxX[ fxomQ6ϏP59.*-l#Fy\3UsXe^'2Ѩ`na@MDcc%R>ZnmDĸm>^f<%%*̾ؓkγݿiuȊ3=WI+؆;pB=="%7.Bm?. endstream endobj 2150 0 obj << /Length1 2594 /Length2 19810 /Length3 0 /Length 21293 /Filter /FlateDecode >> stream xڌP Cpw 2{pww=@w  Xpw!HpM=ޫbfݽ74j,N '; + @RYBΉLCeFf+I!N` +'dg @ ik Pf(8An4N>6< `p1wZe tOzawwgA66///V(3rz,KAƊLвuB @ l r@4 c 9V;-/g3c X:2J ! :!Qd@HfjfFa m[J:9:nȿIٺ, }apN^`"+[2,=ٴ. ym "?2k;Wr-l~'q-  A܀ (ߊEK[ w9':D 72~ߟ~C& #fQaN?. 'K8t%U͎ODy@?E@B< ׆T #vv Ku/#1m|̳;d7 ,ɻ!"vn2 K5[w O Rsr}X8sK rV@ߔ` '߻ }!,%!.Hq+'W'`-IA|6?& ؤA|6?&q . `S \ ?EpQ \TA.jAhA.ZAA.z?Hb qA,ΐ}3cA@ {䡲r#ĵqCB]?۟\–N@Y@Bia$1t[ Vq =-pmAH 6 l!!t_.iΟ<W0d Ԑb!!)o4 rW_l79n YEOlB'Ui<_恘Aޠ@(9lO-n 0AZ/H Ax B{k >! rO -<\!w뭂\Ky,,;n?bMg`[rGGHapO\ݖzLwڀՖh1ێ8?0Qx$^OD¢f_'[&Ń]-뫬w}h^ "c4K;YY-ݽA}}Ek#|Ѳ4i'Q|l9h2tSx_M)XOGe}YrF*80U6вF|I[e ) ./Ѭ ճZD?)E] *UB>nQe6\72k?{ռF~lN2Ua,י6:U#mB;w0t)STk)G)ݜ65g&A?p5YuAIæ,~.tzHj|)Gm6֤$˗Yq_mƱ2m"/0]uWsc, < ʉ3C cx3yWf3g|d;ءW&.[CK̅<꾴fi5f |30"u p M 7rT g|{zKnDd 8%qym8> 4t87=0G" ݴ0'R~oFm8_3p)&)IW/iD ʲW|A:ߐY7|.ƥ^#eRS1XzҔqSt6zTρTIqB̢. ۇ{w:ݏ,4R#C`yh߾)1C;޾81q|em[,0z,Rpo>IAslǵZ)Bpp{UXg\e38Vj?je ˮDqRv;H}A챈PEM*Ek`ResXpMÙ&f8o;3m?r@֦58]R3v%ϼpw9\;Edgi2fLYc<\¶T%Ɩׂ$,$|)-Jm %*c-38 B̸ȝqyLg\:~8#Ʀ-4>( !W>.L{ЦRďRF Xrgqs].eKLxxR< #'w4LHUz|@K紵w6]E%-~ K"cPRNĠYK)Ķ, 7j^+(yЕF6|ыs "-o^BhT91֪CUfkX@/A9=P5*Z}i;};A] epQŃ סjŷB-*VKPs1bnm2cg8% +Y1N㣦1U-WFYp42\ KS砲dNA m7,CcSրqk9\]:0hLXF:/Jdĉe_&8f;8DA xW yTD|3ꍈ Kn⛗/9$ʼ" Y~+5 /f)HP104q%U.wdMXդ@H_wk$mM ϸ@ !9!#j: (Rk.c4svgF$ni$nI2n-k2ZiooLp1yݘмhN2b2'W8j3|Ƅ=s?`i@)3нԨs+Mù ѣ5fQNz,mrJWYQ/Vצ]'xN2SW*Y`{9̔;ThwS~ϧ[MF2W?uIQNi f1#x%QfV)߿7w;h[!y&g7dA*cfT ^t-GPHhe1z?2\@Csd@;F@%->$W_u0XC>"ӰR57Ja Ɔ_9{ hݳUe<\D`mӛ9(>a/'x04ްYK qh:pq۵)g*ZSqp s: )ۊ0[TQz̀c(_)Șy;@,%?q#(ijXA_M5;O_? 'mN !c֚ T4ǻWcKWP آ+Z2yD b-b2 T\+ۚX N?xhT|R&-]2_{-lvϓ99߽߫E{wnd>ߥu #yN,m%R!KZ [ՠ^ߛyAPZQ3FB ~`}qk/~jCibl4 ! Xư<\\U S?29PiO@*&%WwL/e((ЉgU^W AgG"2 }SPXO(W~~q}ᄨ#tMH =c@kKDEي#\so*#[WMU_$rqa|#nXrQTupt-]&q# މ0[CQ Whi|U2-@ōr&,3jaZ~ˡSFMsNEΐ]Jb@s[?~{JKrSv  Ylgo*1HJBv"XΌwW$C,pDR`~4!dft^esm:C2ۖ=Kzp;|0B*]M۠H~PYiuv57{0TFFk9["j&?2-whW|8t|LϪs^LА!L7]IݓsI&1wiP|u7ZDj@gb ؀[4!QqqJ&)"kD!bm=Z]gu9kM o}ek*OO>V/KfOCG)dCz'WzP{ ]vӃ2'x[2\0k[*4&^ka}~YUEчeH6 -gX){N|{[(3\K,EAۮrGnˏ%嬰=Mx6 >,+C9rHoQl0T˩(n^/ҽPs8V %>o sQ1c-uxKdNQ%I)rѶaQě szВpGec5'7h"-{>ejCW.6|8L`8j<d9 ϸEz\jBZE^6P 8 c_lo@~A6*Pn21GUAQ ^NPR QV={EFk([we<[5D#L6z Q( e16&]=n(NK_5moEaaR":C^ycpԸX%bw)MWٺQ)h*YI6Gh(ِ; .#3g0B=/{SJ<ȿ#TQLJ%\.2^- #˥IU4b$|_XAa/Oh|AqAmXTh*V]OOSHL9XCRL<@3#QcQ݃ E݈ Cϟ  vRn#d5 'B1屔84wJYfgy✊H!$r:oR_nlis*~~Ȼh[2/ z6=ÈO1Gn^oŜbn?j/,rYf:o7̅M>/;3׿&z\8>kJW)Ti{YI|,+ccғ|C ݷ}t⢴OAY0>JX c{#yx|;c.(7 cd^nӥW%M 7tY\Evk*hJ1RsK0UĻK6s&Fo]x{%EQӸvq6(MS_5[5=yp!2kh1IqD‰OGˠro@ri51X˱'Dˊ}@tj\G& ~% wgx8VMĬ>/CgϞXőh/pry/B oy*l` M͟QwOa׹{L U:bY&?VC:, Vofv ..jPn9&oP@d2B+MtlRLtX6sK~u2 Gcq8)5xWO"tPziw컍0B4; ]OU|~it)rc*ms|lB"v%7"+%wl~|E2(v0>NMrbT0¬J81"2WCY c](״gTxzWedl#Lra0[̧"bk{ZXYM׳"Sߓ+n8\}o 3g.@=/5 ԌL0"iEiip$o]nLϤJ?!okKLZTn2< 5zOM)IQk_dѬXl0$F7 8b݂}PҾQ!1$*ۑup؆3!ƴRoXzT>(.!:Oߖ6t4#BZ> /sjS4G%F)*ו5%{OGO9/2BFWП{G=2%OǘW3H8f+ʾ{Ŋi$Iglq.d6{IU/rj$I|K9G\}xA͝;xL8PvJh"RR`>b08路P?wy(҅p%2>:` !ǞC1O BkG%.W٦GN_t2(2T>;܆uz@Y .Wv^epգCf4k6ѿM?BkܔXkf49h1\ޠc'i)ebi^#zBTrS` Xk=d`0SM<ʜ9kq$e~hIpF7N~a};O_3V*P* tۻ7| Q?2 Sl3^񫤩dE.{GSg]&b8L+b'W",uߤe7K$p3$3/bn1ijɴNjwM_AF0P*Qf0/G$ ]2GpÑ$8=K|Nlc>9h[4ɉz s2RҼ8lg63 6ᛁGd\U#>c_WZ/~K4V7k7ɾEfx%1Q~$\a(9:.13 Ex%%-Gg_[bop=Z*x+y9ݞkzHWe1$.U%VWBkYE.Gb̜hh]xfo<w$֌iBj}8|: `~^pc[- qA8X %>MH=r:哮5 3(Nm&H-}Bd^qL_K2=V^;?YcÜ-c/Xz[:S<^7umKaaU6_T7Gmm K\~> o`f}\kX=Z45*:ad)?MJ_:Vd Ifn #Z ,1}v WUo+_&sihZܓؚO#'f͉_' :[l JKIf UIm:lV񴛩M?kUJ|<J1$-秵u5Zd֍6#YXR?2u=Z?rtdkw "SK:69':!\/.ݤhMчŨfKT _MQJd*b!@-&<鸖uԻk?5%z=)`d"ʵZ9l FVkKT|Xg}`0Yߖj=;a놟^wO+<.OazhoT̔e\:vD+HXPv[U)JTpBM 2šShT-Pz\F,Q+?< +D"@ _&xoYshց vKs^sVcR/WW(UZ8JdG)S۠Q" @km6 xZ}&;Xr8oIE9G_+nĒ+xmRdzHtTqBF2*1쇌rJlohTnȄc5w [=VYR'p2{JRb[qWG 1o3`e1\?XJXifؗ,D4f0uÒmЃR@@UjD\o"+lf3C)8(XY U*iʛ |/aiMc. '>ϼ{#\8HF : 'iŐ\`Ty[1jKKZ=&m$3bgry?jJAF";dR%+ J/8?5Gw;C8ffkt[G=B%xZsGѳziu;xX8M[Qw>>ņueD<FYi C-~5 $t7ʐ>;V&mFN~]9Cl"A0WQ0,ALSaiֈOBD}v{Њgfͧྫ9uCq^,0@ 뤺\gG*7+~kr^ ~<ںڡmJR:dr?~hFE*^)7L\wTV6% 1|?wjl%6os:kkp\8~Z"'Eߧ,E6cCWZ8v b?L oOrl@2 ̨vU37o~%Q{O8E#Lft~^u Egcoq9!.Y UOoꍁRAl̒B}50a ѹqQ2}\?Z`JXY&#OIm3,.ވO;k[LK̲XyKʠaE&*sGF1n$AQw*֑sv$ǭ+xY­j`@DTǽ >WswfMdpyx;LY=DoWQؼNrC=;M<.SE2nayA93yQ(; MZo;VΑ4(,Â. 7|s6ohx};dsȈ~~5TK2aEjJ\{W7|"&K+vy8[_:L Uj!"$K=|j6.K@&rstcGNsڎܻV̖lMrq̭ҳ3TS&(U-$lF۾wi9#6f D6hܾlATh$89 p ޞ?*ata,3~5C~c"0J)]Mwɝ`bm<\K*K%y+sr.\vÐ,=0ͺ.E y$ &` Y(F2ݠR&J˒E7CP_XIOlodUmo2tgEiµ K f Ĭ{&1AuxcV9oBnDuGBOf Ѻ-Y0JI/#e Q=cCqyW4U= ޥH8yOEV~KJ/C7YVXf+: &WOUYH%T(1h6:AKիQ#kn^Rp3s}nw;/τ 8kiq+om[k6Y,pV?̕DnU&{N]eoHɖczwӃ2mBWvx™ 5_ux,cX'RwiU*MW-[~u;K& \{ci)/?^I`_FTo(ipeo&9^kRwr_3%POz3ūce{3X׶]l/;ᦒňrFA 0A [+ kaS~r~fZf{Lo2ԍ#2b),+ %+& GX k\䊶@a[VT(tUCi Ddo`돸i| 1|bnM[V\Al(yc{* =c9DƉʣ̡p)A+~*c|6ᖮZ?7tTEs:>خՎw|0ca3!:;BEP?冂K}L~A<#GrҮFY_dS]$E*@ ''8K;PrÊL8^%MTw{7L0l[+e{#ur17I%%73:axM֙DInl(9ƚ YwYoX rs6Gc1 )TmPJVQh}vVzǿ_Q;]ZU^y;40u`bŋ Bdypkmc"c} 6d|B_WϋEz*,%),zSjyuA_ÒJTc3Fwh$suޞcsoO!OI#2 /Z|COdoɡ闺4 BT`Hn0|Ax?x#4ӞntRym\jEY SSܔk(#iԗI"^sN_ lKnF !j GXE l#,0sūp(z{COT;_X竘 v'H ]yo3 kVή` -uVz'b⼥ZVS+ݺ%Lpײ8TyƁQ26 |l &uez="~hښiӑoY)=7I'ڂZ0Or| +J#7_| U`z@mϡkToOxUo/ekI ~fz'1Bl-2d2Wzz$ģM5a}4v^?VY-sl}e6(NTz_nG 5\Ua[x:TÁ #>-j-i7Z4:It;r|Ƀ3G=sBooV`ZS6jx0rU;$C5}-2A'jȬAA(KflPKQysaEN+h@Xam :(C,ϋ, Cr( g8a?q"8@B2$HGղGRȿ'?}~*sA~Bi-5|k~06Yl8|'㚑, d5jj-R96J&]Jϰ&`%[BXJ. y?|_YvlRJq[~8Ga/{P!u3q{*#-Y$ÙW V ᇜPSA[8YFpEojɍ.s'Kqnds[k WW_O?~mF6e.~GҮ: A ts"wSM#(fƙѯ @K ktDu,nBB+FE~ R?UZو5Hm-enT_0;3cfZE[} YntA_m,*K^ӷ!%ewLE-в֖𛺥gf84gm -EmR4EhP99 ̯Wgy%(3mAZV{#ɚu7|w\et \d>Oc:Vty_Wu1*X?9%Ff{W@U<1cٰ=6Zxy j_L1%]JfLjZ5[^NM,xxEc)6 [MT;twPoSK [."O%S ) >8ڃzTȿv:-?!xBZ/5jز Bȁ/n'f[ p8u eCjv7V.Z6[In-2go]ɇ.XMcװ0L1 `gy/ d{qE)O$Qk ^wvF!~UdJ* Y/nhxx?TSE،fרivIR cf\I(yn<;y*ݑāo@fM N5AHv'F+w+fR}w'lX5xx-'G6!h٨/yfw4M {hӂNDƽnrW\^%N1%c'u44vW9NV~᳻8aS ǀkcN̰TpτUZH.luNf?Y|ǰ%BpUm7O˾a!H% Կe3ӆ#u;(U+ y;.,L ߊnj9v,'MZ {ca7Qv /GÂ(hE5ݧV1GUjDgGUZn,h1L^,΃1f]n'!l&L13p/͗3܋<=Ep/` ? lYe!p}\]jK/mo%EA68~Ϸ7> &t5ϗ[Fn3 Cɶ(!Ujz+sH/s|H^{3V&PaJ?ęOH'lu/;"3`{oUa b][G&_Wjp͍*PNjD v_ $2$dD`#t9֢|;H{A9mye]{EiV(7o_ eLkT%4ݖ՝|{!7Msj6l}+<=㣃ib~4;{3{{71Ѽ lZ0P%mЊ䔌`0dP{EWI~cvte;!CC4D2LL.1'{a󉍒3u"z8M\*:ldlmDZ.oBؠ3Lg'/700HݿŝtU ըH:Ȁ+-I0dDOZ$jc88؛QV3I,/83iR˼V R\dKRfrm#4AvqsPhFK#!4@sOAHHU Z[.VjŨ0fs2&oƟAK$ƮMom&}ۥ&jǶ:*/^^L?F%'ǿ 2?|AiMu![ i PZlX+0b`ak.S/xEZ,T|nm~L kqd2ؿtw!xE.D aOXVO y65pϽCi-rF֤vd_rSLo@iZ]fP$Y3jwZg_/>l6:#fK5h7lAt S,U_e#u, +þJjf.+S*2QϾ H*?e,bqԻ`&&arEKO@~&Y%z 4 @t|r9RXg6 QNysVR.' ~Jw6^dymW+ ܭ AsxS}՜Fg/ᵻ\wF3^> <=a7,x*Lf/Lp$`Gxӹ#1ceJgPAV"Ɂ؋4>gϊCEA$}b!Y4HdI *wS.Y0k9fc*XTD`ĸjৌ;DIvO0)Fncى]a +̈́EX2|k^ )+ᲆ1az SkBy&VGL3cmBwKjz^֠_A'6F΁3WM(L&2êWv u/Zl=ξ;Cƍ9w`Ty1gP< IeOyHEin3UA#K J5*핈ˌVdqڞ /8L]|FRR+%8TAz}&S>7d(wBy%l&B޳- Lm^;hLfK,iSkC閞nH迒'r0@8LkzL[ WqޅEgbk6]˨ڨ8:e\#0>]9pr 7;'kq3$h`T"#4l3؏ȸK˧ bOBꉈO#h 9\_NY%(3> }Vk(CS֕'jd0O԰ʘC*/+wA &uВ#aŽ4x_27ev 5~M7B1pfnP7WdNĔh#j-gy8.C^SbpۚSd^mW4y~b,c 򝔉x'zu2YͼCQ2:Vςcdk i[|H _ w>^&e2ێ:lv)6d!$bOUYYEo/2abm{:U!~gPZ@ZY") h&\q6.T#bWv{鉖'ZqŰy^OV )$Eoj({16}ljD +" hP2lQz<{'ˤ_Gå yh:\y>;ջB6]ǤSqs-/lHb_Ua _)ʿ6_. IuJl6;]ک_M! Kk{&;\3MiP+ #D VRIuu9:ͼIleOc2J2->SPW*649\$_{c¶RbJ/Ĺ@~[1/ [|GTg{ZPH2qq )'oBY 3jqWҪyc7#m]+\K1H9do<'f^  !V8 i}ڵ.i}]s4YYn\}SBbw)G u)+ KG٤$wbȓkM.Wa*,$9zƩ_r0ӱ7u1<)iSQ4QE҉(> Cl;r zkCՅwԷ6( d; p F 1#[o"0k-~fjAi>` ([.lRVJ91M;`3 } ES'TQH~l:>F!: w6Cq2"{|\a@ժO\AaglhBMX3T u_ɍR칮T7ZMn̒[̑x{3.b5iSq>-Ƀo4ˮhd}6[аhC]u쁵w_j'w*{tp 0 &&nXvVWJ>®:֬:s %PPo$I*8GW 7(ܼG2}}a=D|\*8B܃l΀ݏvjJЃI#z=&G/ƌ1M@]|`k8u낋2Jbp(xQkl@ nWmҔʂm_JfPs6!2怩SBD]_B⟂;,,es͆:Co/qxجZ%4(z_ͤݭ~#ʋrOgKh.(`rW6AVRwn5ECk.(z Uƴ:zJl,l "3-UZS}ɳ[`5-"Tňݥ8f1j=cs~ҵGÍ7NxoZira,`#ݜR Q&;7@Po{I$c%>JժlOhIkB:NIXyDoOk憞 ^Җ!2}%thU1Ҁ*(܋^6'[ 0*Mĭm֌ݩaW ,rdk?"msҦ08=WfG)l @OՂ">`&, Y ]N SM^+S{k?Ϲ8AlAygM3l<=,1a¿x t!PܩQ$άa jAĘ6v2<5Y =¢>H4t.Z2Ś { A}6"E\2 eȁ\2:Q5E}C1AG|+KJ]3b]i#E؋Ҫ endstream endobj 2152 0 obj << /Length1 1420 /Length2 5888 /Length3 0 /Length 6851 /Filter /FlateDecode >> stream xڍwT6 "UJDPHWB $$"HoJM{ RR(|{=~<7׌La(; d`f o;"PH@b($Pd7e@ to #Tx `@} xUQho GoݺyW8PA@!H>w%TB\((G ~9G-#*)qŊ0 7#c<0O@+5/0EA ,g],aqs'?ϡ`?gRLR ` $;I00/EE(!HGa?-) E_{ T6ة&JSxeHl+P}J\biV3.}v;>˵\u\k\v|8'hX&\)tqFuP)Myi}TqS'ՠ$S&f>]r>>Zbέ+v[|pO(^]CMb&ҏbt;MFMXw@a5Ď#Nz J*&756EثpLCh+=59]7EmO0 x~/bmBy- C+o hbk| ȭ27wv2/qYp۝l.S(?y8@Ѱmx!+d{uWk'Xn6x^>r:+Nҥ/u`A%vm͙: m1v^z ڂZ&}`Lud5m #{ǀ>ٰL]$;kHvNRe 179.!xkPQoZJyǏso܏OhPHب/m01̜ G/~G2N2K#Hڼk[qYtJ7:^^fͺH/oģkvs2Y5$ i'%en,{0]>¿Lq;O R`<:٭q뱓Zh7(ߍɇo77}shǹefוǚ.֒pWPgTF`wlL܈GS>vf/[C?~- κ_p|~^A1qj,C꫉g jy MѲK%0ncDPiRSIW2ubNI[Zx;.>6j YQ-|ꊚ_ =AO_}qdPdVM n EA _PjWD_Drt7+sON]$.ׅ ?^0C r068.f$I3dIajd9> +(@ޏأ"! Q݊ {CJ˹wK%9%Gكg JɽGJ?PV ݱlAsM@͵zm OzS3a.fZ}ȑ3.yOl2Lf$*Dkך Xiʎo5KbK7+Շ"־VS`AT彽B.'7ӯh ]sB;(w N_SkL_@^QlɶX{z\kŌO`Hyo-8ke*O,>*i]۳C~{wE^h p`c9%* I:3|f973<,#:Ly6zFqW T+VM[4S I{\\..egچZvFȦ3)Yq6OCKr>,̮&nk:V,t$n$J~b>R?|azLX1zgBy{ۅޅ淸\$[ _?Qu*2Ě1݊Vo&.4tJxM[^e"My_pNtdjO8b<dVdw:"mYJ;Հ(pRXW'ŧ:&t[WjmO=rHLE} g"R׫kY rR8pK׬sH"MaNi;c6p:K8Bs7JQQݒt^zjoڕS#vq3E}ɴZSO~8̭ȜF<{;4K9X3GYEruG0IiKkA%+1d #<*ϨE#c?40'hg ݥ@X@@nozK5D|17Saz=΅'uVF*(nh 8똚IyLG [ŷj3 ʧҮɽO6Y46|~&VU͢K ruu)Ju(.9ɈR_![8̼WXއń8h4Sy@GϺg'.DQ2(y6c ¼{vNKS_+V4Q y?޵t1LI%{SW">)Ъ0CУpbB_p4qLm:CAixԟkhŸ _+'+͛ 2\x@^NUdn~7K+M6+3TvqJW4EB)i7Y BF}u\`2i}Gsf2]uO/p5 FU > \' xfuCm/6v~FX*)ŽW_<1l=[0+ho**3U.W?h$G8 )rOZ/cڟX>qJ)Zruiًlם`I9soT;~ˋ U95 푊-={,<Rq{}ڽkAT\2ٵK#"%03zQx0 Qib`Seib9COo{3X17ׯg" ue}̚%҅vz\l5F@漹[z.T^howѴ|~x%Cl:MaiFUU `<~ln@Kx#`/}zh,E7:~nxţN`t(ZZ [<,ylN8#kCLh+ $ʆ9ռ3'!i-n1>Tat$UҮ5ywJM59ZI#1,g^rCfHh؏٥㪏.FU1bbm2]Ŭg YkZϊ#hpw1ۗ.sΞ+gd DcQX@m~c-^6|zL]`.ۍDc/rѨ8)!veM⢑boC+'>_]katTm1:; .ٟ=̬eN,[(:񶀉\z,IȔcu5-֍IP1e3NťЦB7R>Goٺ3 Y;9B~wn6S3bO*6Z{N]x]t?SUEM#IgsvLs}uw3H0WTH޲.8-[|ǹuw/Ȉxִҥ%D9}ۯJh"쎒2s/rX…djN?xiAD8-QZ/JJt{kWjE^p5(?FUyw+tI8d|y–n)E6 tB)#VBYܣ^O{C&e9O )ÜTC?=!z뭖8NjYds=. r)@m@[މ@|!=":Yfhn>e%Uo_?>%'!HF? Q{Q' 2 lzksh,4]vL'k=9[oy^]'ɯNW<4ml<^zC g!yjv>V'Ŧ|M1wT 쎖b=/^92ե9],1arg6lfizTr({Be,&>xI+\գ# ޭ3#'}CRo0f# =.I.7pthr9i,zˑsn",fI1t\`,Z;]iq%gz00b] {_M d3@^4Oi8')F{`9#2SڦIݴpwe6Hu=l۵rA$_PpjsdcVK[cߟ68HdI_4II))hDCf3l|a~jIrF&4}dx7Qթt4t*/~rs0{~GyKƉK!ɰ шs c5 YWt<")ɔE S0AX2NzmR9^e&@[b7?H+[9DH=$9vr{jCA[ _ 5*)EPFVҒ&? pj"tǣV6:Oyx IYܯV8MZuup?l}Wvkp%K|,}^=;<)~N%;n|k$?~uY RQ~&̃gwJ*z)[8U(A1r_-c'MP9D,1c/*`X̣ 3O{,xȷDS*⦑ pp,2]cSYIZz} {|ػ|{k(HY;Bsi&S6CM endstream endobj 2154 0 obj << /Length1 1420 /Length2 5888 /Length3 0 /Length 6852 /Filter /FlateDecode >> stream xڍuTk-("DAJД7iRwA$$AH 7{"M84A(H^Dz|?߽kݻV̞g? '!"mSEp !i}mmu0PHHD@HHi80X$%100S@m4 lA i!!@4F vAB@ 4 pG;cpG Tta0 !`= Ap*%]]]X4.tE@qA?)u?@#;`Ź10 aPX|3 ݁Z@]G7X7r Y @`;"a@]U-FAX4>Fڃm_GU`8 œ07Bg#wGد Ӏy#ma'00oP$(?no? h.('K h?_#TS12C?A%%Г_Ł Ws:*l:Yo&.gon GBbB{ ~S}"Ug{_q߀#v@ڻA/6"~o6 tv:_E/t~o?tA8ⷘ=Cc?_<,!wrg;k?m~} b@0v%Ā Ban4@q 7$P?4g (-? G@ }W Y:T1LO,VRkQr13P]? 7ϱGl#7M 1zLPx! UcwnJh54Vifz1g6Z;90",Q'MSZN1=EmG0REQYjéB*O5 Y hsi-دڥ!b7rRhcl!gPiUѐA+= Zp{!J|~P4 Kz10ɂPgq];W%ʺet%5I#ce8ZhgXY46Uo돁<>[TW_t%Ƌ NϤJ$`mEy ZF!H3Ү `B/I8(+/YX6Y']u-ʣ7|{dѡbmu}F^ ]mޤf=QR;k;ל(szH2=te+asbhGKU>Xz|ߴs Ur0ot,XّHT3Jp)+3Yu-̖!^bJO"R0^'(dX"6zLhf,A6Kբ1s˒i7}g+< 8(dMǬM0:&j92%b<.` s Ff/cW2OLr.% %t7wd :6J>זI.EK6Oa(iGeKwJ-cThvk0z 3a(.zYbyIuE#K-ç+=U'e0LI5M?}h2 qvzjK Xp+N?kEsr Ҥ>nZ=I >amҏtk&* `cD+Y׆r$qO'OHt/8&K. ^m1vT5/Yky_IZޖdŤB1O$$Fypq|GoW̑ XZf}Xs`g\Ʃ~㙄󦦚s=O*jinXl;Da<&srRףD!uyNtdAZۆt - J-Ğ)FDEҩ8<}ɛUD>OR7nlx*:]Lj&ɇq_Upq ԭKGO-k,pBt_PrdQ[d؎j'|TBzPmH.j6r8 P>[OʥNn|C- ʃ K=NsWI{Z>yBHAXO5$Ci!{wyg1ߦ-?V3vv'MkH Tй;бMj={'s`{k#RlsWs7`1mBpX'z{4DtB^Yz㧘c*ZZHc :Ah (fvOGnP%$V*xp$IM g{_A-كu; -McG}TOUzG=& w0e4C\J9.t vZشfPh7N:] h 1 07sג.芩/KYh놮[ Y(\^3)rɸB眂&C}rRЇg j8N6BhbV}&ߺ{ ܯ'\،#I̞PJ?׆aN_ .X.)Sh~!˴BbՌ= L_l.A`qΗkRP6t6T|%.y}D_1ڞ0Wz)hæk[} &yA2EJriQUvGcԟH :a:uF; gxqex DPNnZe˄ ޝǑ<9^ڡС[0۞#FӯpA*N҈o#"4xP+k%ikbT=ޏ,I8N 0f录:-BQb ņ!:$M,n :DSYgR~^` Es]\ —nn"1o-""ȟ( xs)1%=Ͽ( b/:=a[FCo#I#͹hڠWkn!Xʞ=vS7@fRi&Gbجg^TٰB9q#U=Ɍmb0zn%1Ɖ{V?0Ad7 ԖӒJ)nO?ӠDBIpW/{l)vpee;r]P|>8#4(v#x@ N7K{q>\O$5(#mH9Lt(Βsh2F$d®Vٕx}I cZabyMWpӳ![d`IJUΪo2aʩ^$ `͢kOmeLѶ-1ڙnbM@nK6+!n&!et%Ww] <=9~%VzNvbܼ+mydƆ˫wy&9o|VGrgmN&!Z&${均)oXMtxKcd-Tw<tM%vW,lb ARC8(NW CӺD,|Xa`k|@2p3Aʘogo›GZJ9eD׌K6SYi.V: t.^ ?bdgm'%6ZxyrX`I=s:.K;i| K1CQTY7SbBUBaz;ESM WIftU& OvMh/\/of/ᵁ)O } bt\zA/J`Īa81y[-,UL%:T^ʿ “JQ%LlCci;^b> &qW"RC@SzֶG.YUOZ*Bvy+"}֊_VLr+NfC6LZ'[4VS<-?f $Ω@.SW (-o$X],eP^lě**]s7&amQ"L| ~ ~is^׭Pޜi>ڑ7cNY~FIZY՘' f5iv,/zּ/˾W>+$hg0rmJA=\D'.gǀ R<?.RW|o떰5 KJ8$8\> )]d6' |} FU"AMַIT(&*K%f\Odm y@ GXD! Qc>IEWPLskc-Ҿ7Y[+n>uy6n ' Su,gI].#u/}e_.d@$Z?l8<,%Tw[+q endstream endobj 2156 0 obj << /Length1 1412 /Length2 5891 /Length3 0 /Length 6848 /Filter /FlateDecode >> stream xڍTTTkS@eHA a!f`f(iV:D)n$$T:{{׺wZ{ϳٙuxd%8 kj@A^ P]rqBH(& S0yp@/ /"@qja$ <Ea sD*:BP0l!`@BPj)aB9񹹹p}e xAB+O-#72^v-ۯFC`HL `T5Nd w??AaA`0 lP@[I厺~&pL=uYb~P0CP' u g-+¬ᎎ I| Pvߛ` k('+'>'"gA"B3^ +ӍAwXc@@' .oEQK FOwb,u1~3 s'~ttU5U#;&'wxx~0@6__yu@?Qf s{q ?{Cf`̃_%vRrqpa#O.(.4u31䷖5!VP@}l0](R ҁ.030 Tl 1!1DZOQٿϡí~Q@@fy?dR26m %6pZm8[-V7 /QaRz#sxM [dϝ;Z38zi4E#iOLdxIySI^sTpHt|QՌG~z ΝWE 2T=(TkI˰kץ'05Mbr޴V*{22"@)NywwyfD xIK /NvelyFj%nj9EeMt1^PFF}D؊ >8a1w8wzVM/W)}n@Η/zuNm?q,c` ]ՖW/;HL4_5XxE )U7/y;{Se'[O,X36AyA򽼫#gJC&nB,\U$KN|iS -Zc0bl-]>E h=Q.T]ߏ"<.Yv?;Ψy7NSetšd e)j$tunx 0L[]'s Hʡ ke oj^=¹OF>7wi1Fin/2V#"1s-r4 lA ;F7Rx:;D|{qU/H/Evaְcg·Yo4r$Kbx.˽[~|\ WYx5ഉ{=(-]#ᒈ˄yF3߰˹X'nËDž޲"1F[ɧzG9(e1 -˟/'3cT- P~+E|%3fnҳf<ѳu鲻cc3;o?/""m^ ӢuY6VWԡ0 og"k"@"{tLR!ciO}1m#J'2B_̮I{J(4`BW>ݫTGgdꪗ22Z{[~arYP{gO %5des6I* 5L7{K[Zf-s=MS]RPbcH}RZ$gNֶ+w<M9p~9A%3s`Cs_PO>T=}=p\x!B>a5l[cnk\WP#\|{)RɶҁGה,ط/3hrfbn3!aIy#RFc{|lɴr<xtmhvf]w]B8u"DŽ*`ؕ %?Hd>s @+S(i4Ͼ>Hk9L?>Ɠbģ>'v@9l8].^{$m~+&P|.Yp9^Lac6-!O)PhnREz-9Ƿ,#5'ķbfƹT}oR!yKwGUoK\FQI%ϳi\oIǣ׮bZ/!5Q5.1Ndơ_9hpO|ᇅz6kld\&5st%I"f?T+8uĜyHɝGЭyVKv¿s8]cv8k4[Tqw]Ѽ &z8=+=_7wddd~gbC5kiHrƉӔS8GRwS+R몆]j-g=07'=9}>*"~=R-y0Z[%W~ۜڈ *ݝẗΓجli [YX$'sN5e?ߜqa,H9TEni`D&c } /:ì=OyLUTEFdQb2KE*̾{ݸjv~e/cog0:byPSwPС_FӤ,JԴ>Rb|l/v˜ 2!Hč6fƄB)G>fՂblK/8ǢU.JaD$oY'?8vkCl'&rlj#N}(,VCWj<>n@sFe g FXYNxt `nc[j=^Y"kA45vA݇{9*c*;DNi~81[M^Wt\FRCr$Jd^-x ҷrJ_`h"ZpݑN0k[g2jy!db}?M8foi ypg:ڎۻ;_%l1̵|%8ݯ}Oq\$uT?>OPt"C{h=#1Te.Pes+|:GP8?Ъ[iG󙟘yH8Suq+X*!:+ՙqKFUGDŽZj4|+hu5=ҏ_41j zFߎ|:Q.ˁ/:D;F W͚x,/LX[c h=c?툈}Id9tyt98}"m||)54pF -xlaB6$4Mǵd_swJ}wF~J|N/,ϧ'&A~T mb%2ۻAˉ$  o)T%ц'%|IdY+8•sl #sj(w,ƀbuV4`"~q/'f7QSv=j|E65DM9"iz,kF mu X%91ɠ~Ɲ15(*hP58!c;8y^{R8kFT;KA-6*w>WmG~4^$Q J_};̩) ӓH'Tz;vӘŸ9暑N(0>L`֑ll35EJ}&oyP g~e!z)sIkTȥ6pz<bgx:#e> m;![^%Of:tVר;()N숇:g?k2pl O&Jrcpc'1Q~;׊W$㪶Qaf/sirM2y] O%*81p Od`B[$cf:.Sic)n$= 8 ]E1 6g2LXtf[Yk^dNOK~@mu/<ȫၦlx>he0khWmziDo:(Bv56t{>H .{^s+}j2e˭VPf'wBRLGi-jOCa=wCTQrf@p:^OATɥ, ֊Gf%jkӝ)R.CW;5\2Kc\ S+}9 =*szfY=1=ҍ -rnݤ,<{{8`Y^,FEv=:.Fcsi;JiFO~2Űiŗ$׆q-UuX/'q,\Zs˺9I1CFx}Iti>bG!D$Q9w@On r!˱ϼo9XU$gdF%+qE .s.ݱZKqw`ָ3Ig5BgZX|ubHzǞ#;ŐTCU5pW;W}[3/F3Kyϊ' C輶 KP~wh֑$Af[{֙,SXBs"^4I\eUˍenKWt;UT@ԝ(KNzqKw]/71b{V}g7y$p]_4?6vʋ.-]i:hfrJHqC5Ի/q7<+^kQ׺a-~)33,!}*X뵑\q,TUԡrICVoVzג(azu}J(CֆX!ǖyԙvC/GW o\иZ6gF̻۫b!r>O Onٛ =p+GƵ+_W*5yHx(Ti;W69j/Q)BDw{"͒pޮm.By}@ӰQ+P{7DiZ*z-o):L=n1/Iiwgm!er?GILc^JWfu^sH4&PKo\q0eE<*}(kk2JJ)tȀE90L!҂m3@a-ny8 <9OYq7TaeD@+UP߽A*ͧ_ gesȚlsk;\3M޻760/&H endstream endobj 2158 0 obj << /Length1 2839 /Length2 24907 /Length3 0 /Length 26482 /Filter /FlateDecode >> stream xڌPX A ]  CH-s'nW[Tg 'QR67J۹330DULL LL,jV.6@'g+{;? D. N j`f0s0s01Xgh3v23dNV.420sss:Y],6U{S+BPY8023:3;YPܭ\,*@g `-jVU]܍h p3:@rEr px dePcppۙ24q[ bn V }B]t#2؅-Nu-D}T&{rϓaf #opjB>ώ>!e]*}Bs[<6CyCl>F=Z/x<${ =!, ڹ4Z+L-q kKjs.!5$~ wIJ߂G_q.] = >KfJ]CwbN^ }'"fuaK { ~jˍFuԷW Q@ccPmXN_b^A wfqKȕeL42QM4 ݒ[ q(wOqNyH+gDXU%O˱ad^mSDjFmRb |K*OBSJ2!Vz竨KE7'L`}Pr:9{C4gJDx."nO_ξU?aF1_j3UĹys$u r3ޱB&gMi2RwaKzGHz.S fQdHV"#y J[#؞J`1]H5- XZJ ٱ^SMΑ+>Lܡyn~TxQD )f:k mUbmPlX%Na 9Gh7=II6J,gI\IDm,/??!٫ i[k9fڽJ}SYW3G ㅫz^Y,MA-J^LZ"IxΆ<\.NBOǑhb0ΐ[Xڔ';󵔋c`K?):>1^p13\LrD{fsY=.tYnc*'I+lMŷdemU>։q4ڮ$B:vZҼQH.:pOn 1F2 \ `asG+B%a h_h;}[jnÕ$?_DOw"KES~QC^p!/yM-h{ʳF=ЦY6WI?hgh)#K*u/ox"N[Vn}}Zݡ։\u>qz>xSS֙OlIWѝl_OS0./t!iқKo31L<`IDEMa4uψv6LB->OTdR9C5"۠#4er?0 Ӛ{yo~ bti8l7. -O]DZp_$y{CN[SUgh.Dz彍AEqj ~CDrinD[ThͧZeI9 mw"W싗OwRzuaSOLX8eE/!O#-J=0޺Vmq&I:6qs`PDjɦ"oo)0|rG+ӨAӶ)E*+tK) =0["@o[ҸRӳe4-F)I9tjɸ܇MFs_̣$KSQ+('ki?>54j ̓[HE)JGOؒit5PlM2` {:_*3aΟBI8pa6Tq0N` ŤFvF>6nUF)m7jH~>_O+u {'x?`o`y(4ss"u2ԱӏyU6:]%xKE^bh2U!P1PBqKu^'bgWpNhyB҄׶ưH'yVc=+?Nц`-L4k-J|xFg7ʀ~[4Q.E'b$Os*{m %] %3-2~DvaAxو:`P\ia(&Ck^fmIFP /t&o`0$){^S #x&\j.jZе}:yvb׮Յq6ЗAǂȻgo؅;~dyFP2*e-Jq؁^nbLH`T[Bet}йLpsD̹gP営wp1p-^;y|Ze4-7lZ,]l%R2/2 :'_>\!%&Np S^K@|/|w-,us{niDҬIȭGZZũ( $hdU9v,iUCY/#RL- ҖF75â-_* ptJ.mtO0l_LCRnvBpÀԱj2^+DE/ $`Mͧii#!:ioq!&3dSvڀ>93ǂd%_^w-7Ӥc jy o%no f x:|Ubz=AHR3ʽ)YLx=HcY/UGxʬMPO]d0 +f:ivzii:ɾdoC˟ES(D*ԫQP T9Z8SxExչTWAl9f$!`̰M @z(!BGQsBA!FX5ss2_rn-g EX")>!Gr#3a1(0FkN&WA,sȑk!j.'ws aL 3kҢ7EY-HMB𲐒q*}'!v~t.}B| zfkU#xfm[YUXzqt5,$=d|"$2=^ xGvifszĬ꘬zq뢓% OXςRƧީC,hJ{CQwм"v <,]\O7}R^Xe4dhw}jP nm"0 l4^a3iQ|#ƈ@_xzk8ްsd,h,=f*2IoS#g, RJD';_%3D>l咡d!Snۅ4$>9_Om}2)iTkؗCU_p+CEYAHAE8VѾYSoOdo>m_ {OjEeed.zWQI=t~LJd OA7h J!mJj޲Wl\AUnH[K],Q $\0\KAzR6(ҪMꈭ9,@}h2)Ou#7K0QjB֍F6J\0n !tь}fIr^շ' 䆚ttgUD9FɀRxvHjǹyTIM|Uu^p~b}C/Rۛ~96,50G| F[%o+ 0'.tm̛>Vmퟸi# P`l}e|Ŝӆv6=X}=LDYGiFTQ̭؝?[Y\)fN[!FnCoN.q9͆3$&?^zS6l9(oDˇCf)H [VD> dr:ˇT|i3<^v&!Ǿ.PM|GfndwR$‡'Hb|vl!P^q# +;Ӳx ُxz҉1 N=ٚe >qN*R&˝Әr#oϫ)mvZI|J!v3HTUb14!6!̈́bga2 (3zq;`wMY ʢw92mۓj>(Bپ+4CRYun*ocdqVKV>~ܛHؖ;" jj-X@:Ezl PDAx[x#rGw;U 5)QsuNIT0].䩼eME Zu9'N!1h$3ywl&T>) $J`W 1|m"]#1N˧ZŅ<8߱۱l xT.\Ԡ`9^Ro%@_ZCޒ}OX&fJY ACnN=w/# ` Qb.@t${K.zMƼ*ڏ S M;Vk :D O.GUrO/T)\Q8:S]؎`mͺ9ٷF9zx+oHbD=%eZʪ$Ʀwߝt@a+?4 ]bA/mByK;"Ӽۃخ{"BD9 q \EŜf$9Hdi_Dےs8 $jy4Vr>r7GNJ{@ن9vŖ}pʾb w4kuȨb9 (ce+M%A'-o=,\,0dBw.#P\N>s$O[mK3U3>dJz f<]%PMJ|x f=Qwqr{A*'e0/)iNw Osmaѫ̼֬PcAxe7ډ Kwuٻ]qn+|oٻ(LѫcqidOw9*X(|`U;wg$ogے)մ *t_ 66/STb mm4rzEWSOFYl@ |:yl5ʭmI}(N}EK@ g S/󺜠rbI=*L kjkڳ̠bbеK=~daP^FΒt^l=ؤdwWӎc(.̀2n|b2ݡkzC:98)s*墢i RKDmr|LytjxX# e=C*?8a{!" t Ou q`[ӱk j &f2kW D7a ͉辜=K--ws4cͿte-RS6y(-g Wrw<ՙXoȰoMK"HhM^m{j4+#;lTy1L f*S@_=ޯ2:Xj3RČﯴf#xւ~z;ySFHz;/xs͊+g!&N͞ҰkjWƗT-g4zcњb5uJ5"bX~!V05F|!JzL 98,WyխT("[D%_c{qdgHZgB>=X8IgzqsY%Ʈ;+s98^:hr7T{+C*ٷ4-*}@?zP x焈x9AxΊ)O(U~}֩]$RAz<dٰEҽXv2L7n?#jZ v1 kqkM.Z϶i M7STB"TLcBNʈa*Ǩ'Caryج/B בEyƇ7(':,Qa^}#o{NJR)x\ |$~#%76f^^\He1&m@gYc{Ė0"  v۲+o]4NBʾ§CNSїFc u4eӖ&>n%LhQn!_V+ћd֍}A K [4+] 8*." Z1qe\;?!~7r+j]Ϋm¡?f1H/&l33BՕxAQaRcMxyMq6h3\}0':m҃HCO&z%w>X FeFCKq TFNEq͂?4|ײM®03sR&Cbg|?'ˤvA-% e(y{'5m8:k 0q}a,&ϛ8S81.@KhE%C#cqL2MqA!X ZP_YCn:GK?&69"bz쓤PA5O"`ْ?tNa w;mY,u<.-i&p~z3Y⟅?D# %'72sH:'_?ʣߪt^faBG MX{i)xun\*^_w~$+w)#]"G_p!5"9`ë[{ǹ*ީ%BT(G,sޖ*O*ykL.VI:\lefNفaj2, N OƮZtsfZfu^&]Wg9Hz)qK-4_5P܏NEZ۴GC 59ۜIo©1_c2<_hG t~*y+W$na!&Miz#2.wr7BD9loXZ3ɧdڢz(`_!ܘ|rY M[Ylk˪M6RWJ%gW|KlN_}xVBeoTʦc>YHu%Ҧ#ΙK +EtlZIѰ_<UНwF}p.6.e˦ŗԮP`}z<$ntifvqi6Y nIPeH͵?}Q ޛ&KBnspMd|= 8 FH|>u~@ip`  "_hi1:%w{YYKoyc|V&J$%cY[~oĩMNYiNTnv.nɽIWnJ z` aR6dSk0,FOې^C*Dˣ 2tIOIUНk8<9ƉU/mPV`$gZ϶ FF;O @V~y3hljj$ Ӣ%I FDJ1a&1fmS\а]}!?J'.|q@ڷ?YbAf*5ij=cRv8-v}aϤ{dv.UZY7QnT]wp3ʏXQB>,ه{*V1DGoX4Ǥ\rȳkLՙpFxG%D2s5e4͢dn13浥ֶډ&mTϢ ҝ\-KIK M}ke_dm/0YBzxj (TuU^jڀ/bSЕ,1{>^K b~uNjLBU5,mEO6Epq|bRI5!s5-yΉUPQ9.bŢ+7d> l^N 0_Z@-B^4WpWru + @O^d3;(^R~,n\槎ݖVӔބ*!s[RYS;Ģ,$0gD^X$#n5@/ +קaJ+IL-Co9Pr)zL= 161bˤ)339"Py=B|Bl%2az&2 إ ˓D'*˟Uvsz3ǽM%ϖ~5GQM86x.E82ո*q{dϞVZ,MّO/uZ ź"z&/= . w Zw2+-tF=?I-Wj^;p7 ?s]L%IoT~Y+p 0%A[%N`:[jԜ~\XG" E7/Z,nNޠ;Kne&* ցTjqy3=[OfOW hv}RjbԢlC!(淌6)؛fbpfrH4ETPh)/obpW']o'MYXY-QImʳ2xK. =VBbw$~? "ޝRGCܤE" =֫#i1/>t>+50"iV* ^%]Ȱ|?C>ô `rbwiY]* :N|>Q aiڵ]`\az e%Zy&Zhؖ~QK$Bd5FDFL:AͱP yi9MbRgX튜;)2=DUS^xڶӧ;X"23~+nIgؖfzxQ'If~~6bu59ACyiƩ4p^6bD0_.6WRITu.$.CXn’zzQ-QUXe#OiOz9R{pov37A#t> 3D)F&ٔrPh>Z-S)h'^ٻB$f#=dKj'H_b,&oމ8Grxp"*N*QxO ̍tnLaum$.6~-`r٨g(;ou ~Qqw$ZY,g,%E> E܊R)Z%:8c)Sk:CB!O) ޓuE`de֗MYZ.UQK"3[Ž~S~rj_p~To`P\,ÇаdCq~6ea$c) a'&7q w͂d1ZǶl 50h3Y >d {M<{#y&7IR7\[yW$zu, 'f _'}TWNEӰ7} `nP i/}_YHmSTR $xPϏ\Ga8YT˷(DC>AMZ[;v뻲ͦiW厨g=g !I._H5ۅكXU K6}erlK#5AϤy_'+aC蓋~橣nw5"gY$ESdQhuZ(-2&V߈a]O(w`,06`7DCB(ڐUKW 8$#Śpn5(ё]-)DuM Bʨve 8wMA!jsʞlN<`y*]Ӧ5XRuVɁJ{ڃFҴ)RrJS)e*! d(#1E]c }A#br9枇bE#(—T86;$yK(SX&ML$Y^kpGP*xXQC4~пA)%]H?[#_%t=qz3Xm ϊ63MH=ק{hA?Ux0AipڟSS{tL˩Ƕ4@oqRW-`[jnS"%[ۛD. GF`7MRXMd>ܖĵg"J akYgL__5!?G3뺪'i,}A(u+my7T{~NN3|5&QhƚAo[Wx誖B} ;2 =Izl;xFF@yu2kNԌl*P|+}mDυ+\;fg_=9O&ie _qIGF𭦤alYI`^9˦˯<(*kP $ x5"QNzYSW Z_<sF2S8+K䯨"Kf?fJ?$_v3~uN~YVl4~\30SCJsS%av3y;ɗ:'BN|v}A[G,Q4hxUA[šqgAGmoIZeLtoܲKb)y(!+cR:+KIɳ\lꩤ\ypHO̝:/,wݤWJFl\Wiz~M3$q;S} ͸ %X.^2N)avcLź߲zcTOڅZ;eM]¦-zGgoC!:+1RQ&y$6HX#pcL֟o&4Iz.j.dUq#씬_ >U(nKDGf Wl~V2C8p~>[rfوi~Z'r56VU!kZ̈́K]Kl ǚv,7 +1Rz5Os,NӬ'q!F%fUizH?ԱYM7kf.k~[uEӷ7?~! 裓j߼fwE^s/m{Nbܬ7b7rC㳽Oi4SP=I ͯGBl>.ɗsZ*Y'^h^IAO._/faP5U/½E[վ͜2&|X/۹ji*vb8}+^kbFS{xjWr e:i]@Z~q&QVRJwЅJMe5pF6@uVðs4[#,ݜ %]["ޘ?%~d*8* }eU0Ek 5ͅh )"$"ǀV6vYJ}b'h\`IMoʗm^|E^Y+FNw@h̓@(12/pt?\An= pӉʿnq XWX\d ;d3ݻ:9 <i/ "C!o0R_.7]nlHlඝ%f0 \dw>Y!*Џ<@o$앱.ǎHD.G$och\zJQ_,aI(V+ -<]|n$$o}8ϊTL1cm492!]ښ򈐭;enS~H!POp=B򸍘a;1;;}B7yLBrV'&4^3E: }f|,C%{Cvf'47K+* 8OϏu0q{oG$2}IVX~"*V$Jt{'PYlZRBVHיx"s+Lr}/Vt WeQKU]vPjX@=q{|'AΛos rvwb ?"kEgE@ H\jׄg;AEvi(~ zj_VCZ*;E s m~Ơkl풠W~A>TP3Ky<9 eÇE$ͨ6L eЂ`u:j|L'cH4r\0(;$ ٛ]ijڳ!/EԞi1QMYG֎ue;=EԠ>"[X5\st[G71ePuE@y O/i5G?x-.n#EPy۩c12,| j:SH~ $Tk%Xs WnR QryCJ :Zv0oC[q`8{<1ݦ\G^0r1Q?a"Uuq PXC?AاX\4$Rzᯔ"G i#*6F +{˻7Ch͝uqaT5O,[_Hj}/^OebvҒ&<د|]{5Vuuh3VL;8vlߗc Tmgei % LU֒LtN]ޡ( @0m'K* (giļ('Hvs2uLNd`HC%^pĽc=î/I:'6!u:6=ON$cƁ *m~U& [9I$i5`  8AHu7NSN:4Wv|#6P WtjTx1{5f8 ZIb2qg0$1FCQu }}ᚃdYn+pWEqBk}d͟N#d a3:PJ{KG>z>YDMJzNVgxk{f9+&9>Y4;>{^D) X mRS%xq{P*݂k*1R;z6[y;x ?R x5ۢ@A"ݳRşY-8Gh};PlS 4XzmYJe& exOh>bѶK !}$"S&6sQ`N&6K4.9(~^\q[1%,yf d Ϋ3{F >#dOR\w 5X lwhcF=L縏 p * ڝ@шuZQIU)oZo4& A:q 擓Sncb\#H&ORw^iKdн3ԺkoBs7vD ,&+k(O#rA'ȋ 4 ;a;3:%U7S03R,޳'ao=e$ L+ˊd5d-??j(;ܬՋ~3Hbk'@%7MRtoEw銢_ixpúbR`r,62eP>#z׷Mm-L@'kͨwIzKǖfĶ"pMG9+S5E¿ѫ+745v r8(ʴCIU.C}I7%ZAyx +AodO{ڳk(͜ J>4T2/Jg \|gE Ĥ-⾋ɖH n (y1s)>y 5y^yP Bm&׉ˣ,*oe%2=SvTCt$x+G;z kbR]qQ!|X0WWS™eVDJi/ZKhuUzm+%{ SҪʪ[3nqd[9)6-SΎWj7AxC(ݕ6fX~Ž?|,"xQ+ܹGfSFOdGKԠocˇwsl/Uv,NF V=%P1ԼJ6nL4~jk]HІ=lNk ?\טpom`;6\FKoƊIi9ETJcd|mT2 ] j/Pr+d CD '"@RWg*F@ b ]<Vl b 9=Ts;ƾ "ģ bF\`k(qh 8~uhup%FFyTޜv{z3,='5tknjpha OAj &-\- o3lX=<6[tc|vhCWJ\ *`u~&ɯct2۟X28elej8@(gȞBU4h֪NCAa3R|Y&  {BVED,{_Vr/W m.Jf^X? MG(uⶵOV,)tvLq,dG9/my}kD1AsmеO3 V r!E8Y0Jlm3_ק4mz< YX"`W ?߆qNĔJĜ΀wRGI)bzI׉>/ֺw#_"j|D5)Ĭwş.Wz҈ d† [Ƽ'/,o Eщ}3Ouի;}m5 qMpWvkiOXE}sNv0GPEmp؉Aȇol\OlL$P]f'zdW]{lIHκ]50k7=)˚?Id%PV%{3B1fVQ ey' <"{|D͆^KLur,7ɴGL5]Sf†} =E{13^mG-Z>+k+.~$ܕ>55xCh6̰#*ڼ|vʂE0sVN *6~E1`iq=X>a5Ɗ+b|j%rAdWJĦ~2YoR&d ݳ` }WpD U)APLf*numڍ *1cƞm^gk?OJPfWAK hq,wCsX}Jd`YӢ_^V]^xfXD5}}o%#*C.U6 g/b @¡q{֖d)Pw m!wjki]9[Ys) ˙ժEidcCv¥ST6L񿝯ݵB)=% J;Į1<)sp.]!@—}nhTdW| \̧oN%G4m\($7\*<{`s3Jɚ\FgBk!lcYb<[{hod]XT;4hS!O,υYmc-:b2lDl]Z6 Y?aᰲx{@`^iח3sXquy7;ϺVC! !xL'dS]ݺxaS?Pu7Vd5A=YwI绣,ZPT$JoɳY>χ ԱޢJ2jKo\.=meWj0ԉc3&NV4g Bi]NWbM][ݢ(#byr#i5:6se܁@:>p,;]K~de{+v"eYf#/:Pſ! _#]HQ ჻E<zKl.$܉L'$St  D\XK'ocs9qXQGTyobe"*o;~5CxWJu*#ܝ&XܲsB3`1s7ʓTgl;v12ó: H7< ,iEg)G7BE*枓GM2$BE`xWjl4~ ]5Yޒa*bNӞp]OZBբ*Vg1 V.Lփ~o G4|z.p:οm_4 "l"{S$qLT\i8Tc[*WZ$k_1X9sld4E|c K fw/ ;(aieoą!\%&Ky&Cc2bkz?*jZ7}H9SB cszt+{$DSXY;R 8 kl1KE!=Dj[ Zn:ğd ֱf(< 7ƈ%#S kZMϡ i ##^y<7}5JYʋv`֟󤽓dIQ_zX4g"4()xQU͸:uTo8]|#ͦ;~֣zj ڞR/ j~Z=XhBB>^H?WDhLz\̤VR]b=\o_cjRLVr&V,zU٤?G#+Z,m}Ϻnfl;%ZDO+vܭ%0T.eF?kc4 ئ!/=uGu/3˔`HpI.@ @-bBs.Z=E1OdЭPV#ltAHK vhBs c}&]f6e-ݏ 6>67qC枱 M-ڧLaBKel1Qg\kQdc0+Z ہ,+4Wܛ:Pv2ي)MwQlz6i䇖gMGJ?٠f0>E|`D.|Dfw)b ̫+6,Ы0Ҭpwkc)'пn cCaԝJLJ("\<{1i,a~&vG|BFHDd̞>PA,XSd Q>k6B˚WdN՟午%QjTfwmqc)Q@{}q9gTrX'a2õǞe]5(] _9w*6Lώ;_/NcSy]|{<y ο*Ć@}QA.Sera[ T2xe3.x0BMqcM4GczĢ[}K& [L96HYt]prԗc+Omn}=EE0˚9t@dޯTڛyP-bGU{.Td(=J1`3*ijen40-ߝ˞>SX י\ gUL iAO1 H&Ƀ|}"3bӆXlD50ÊpqFr ͑X5J_7 KifqeO1ZVR<~^rz+GC7}ߒ!"6B d00Z>C[}qwy;0!:-@^|IvgsD_kȬJB]*-U\NW?<ެNFMn3S{/ZVP[`邺c>] dX5ׄe7/-uX!W¤ўWAZNdCk.:]2QZizVnqVs endstream endobj 2160 0 obj << /Length1 1447 /Length2 6643 /Length3 0 /Length 7616 /Filter /FlateDecode >> stream xڍvT>%1FZ&4 ))5ƀ#H(% H("% R]J*!7}sy;z~xn);!aHF, KA 1aHc x@<07*05禇D}<`1 XR,% EA hYj#0o*bpB`)@eO z+w"4AB0LRʹb0(Y???a0'c\0oE&& ½M?p( A8@@-] YAW NgDp`DAp h c1@#BG!@ e# OvP4{b(+ NHOO U n=@w[H?3J i遃`.0 PIɀ0/ *+i Ƣ(3, _c :#Ü:pA>lqrB"<q\K}5s5߄6 X!Q)pg_ɨpFeh ?Dž8À$giWE]o+/cx=TM7v1z0'[0d(#\Y:+!o& xQk@'TN3)IPۮ+3m]. p3?+ُJhwעa7iM]I.z9I|I9ZX Ʀ8l=~].oB{c+\}TnD?S'ΧxL[Y!J=mgtw١%UČIbMEaTKMai8q]g=WW{|Ԝ#0[8Sg- ]dŁY?/X.H1ke*𰞭ߚZ1M+ abU!G4nO߹402zN[5t⤼d\'bYfo,=dsαOߖJYr5|duƓ;r~|v Ңԯ`nJQ+3N(THH+l5oaibysg2Ns3Z6Ǣ &٘jS]}e#ǺO>_ c|gdv_k|+H Mb_-j-e=Y/IOF'Uۊ7$"wn }M8x5K?$.(k0\G(bX ՚FQ iPNv!6`k bȆV# yeh@t-.-Sv(UNo"<[4L;W?t+ ?( {sVx6WH"bDWPKEOUzjl?=I.-l#3 4YS4&QjrGuGJ[#ZClS;*gl3! Uݒ'5Ia+nf/)Ow(lYu|F. _LsY6IyY 4G)l.挭^̻gUpTd4(c3pΩ6s5MrgcM̗b)IJ^y۟r\B!~TS&H22[זϔ8TE=]{ HTa\oTN2S+b^+4faoC{7AqNfQ^OD_(?X3o# [F~&<,<هNUcXtc--?Q$C["[HnwJ(.l k39 M1cO}q:U^z!+we94UCeipSYmDY?dNS( mdyN ȗw!6tJLqֿj2sZ}2s'E8FcS0z**$;=de(CwQ Mydž;jx4.(C h{ 9Wz&v+KlMUMp f{3ODw=Cwz5,EC 2oO'6%A78`lm.*' }Ћq/5L>LqT*)!Gl #c3~bt3Yi|ƖT\5ǹ2ſ[pr\#fB"5B_-m;=d;eb:*oeM *N4Ps>ZXcQVڋ†#,X|FF9WʶcA7R;W%Y3Hw;Ǟq1Ի+Wl*vG*zPqzR }3:q? *{}/! W])P[/q1@ol݈Iu}YF880LF[xZhq8뱐bXn~jL`n; )K|w֥ѝ7UEuۓ>(:t~$إX*TEs'i}:wdA$pVZu#kt ZLӲS }!GEk5Gc UWU5;]3+Cָ,?H v̍ʫ{+V\.|#zkC\z*Vs>l"5jg4a)8s$FF1oYx1}JLjrnFw2 Loj$;Q{UkO = }zSFAi*|K÷S]e~1[:<G|e-} ՙޟ1Vw橓47':F *t® hL Lo^~:ka}"fD{:j>?a%8%pFaqw[cX[M:6YF l D֘Qgu|}nGTjgT'qŭi|+7݃9y>ߒAzt+ɐSu!ɿAv,z=ZK\Nްjtm¯K3A0 XO5Ͻ1D^޿L](l;l3^Je 88r$6jMmmr̋ݎn2poG~N@g7,<>%/һvmoxB̵nFϛ֮a$I*+kJ(Vqtv^n'</HPnoߺmzCGx]J 8H#)N?I-͝t[]9X%Y]1+bcۅD:{U$SjBWGX k̑CxlL u$p7Ꭲc%-0a#ݵ+C Ƕ$ ?KFQ}-ᬿ{'W϶PYJN e>ĻbI9w%EVw8/FD4ēַ#k%Ko K,cwOJhY)/ЛCbƵ>% >lCXBSǁP{2Hdx-5-k-ِ٫;EZFcgr\N][*Q Ub헮;J4mf>[ N :Z֯7xUύT婙Z̀ڐU$Or`P&Q"/.zkT,0 31 (^YU) $HmBS:Pe5q2B1:{ޭdJz'=fe)OXkg{|'~LR,tϹ1AJJ݈X%6=+/|}=g?&Zn#t膵ŕӗ8 =S %lT9iΏ= M?4[#=7W68;+@$T$k=\SwDr鞲-qͳ_x.:qT$rӂ`cRYYU^m?h6K3>پJ J\7œg?rj$ҨsW]kK8e2k9a /K X 7ekXRi!@ STh<匥x2Z̸"lܘ%Q 5~yܗgkmkBTäynӞw'_$ EDBJ=ًjH*Z WCN3e3~:x J}։q+(|҆ȟL]!c{%c~7CX4Pz3\h)yc8yOLR(ΣdD1lw"(~>-atDFOrdr:׏SNPwrpQ)XڎIpLpnB%L-yBO6,9ƠO%xoI)caQuÑn}|\DZP;x!LЋ]r Rz.q rvFx34L `Qts- d]wZ9sE_\+FWt]ՔƆN4ΊZ4$]~ÛIwp}oY3M0%mwUv3d LkܲjO B@J‚lMuYN)$9n]Iy M R&',qUʃiMQ@Sf2% mWJ0j)Ofӟ4< 7ސݾ))i:` >ZC,x=?0DJ5\ckKH}H.NǕc.hǛ-oJwX|uJw"l:6%fQv;;eAm19=^5z:⫽]'fC4N>Ɲ3iō|9\@iPnό@R9 w!骨B6E#TsLVlʏ~?CA6Ǫ MOW}7iMֵ"ש${. WVc2pΖMV#W7˸bMZ7X뱏 UYHRy5>j-GK62<~Xb] ,=75Nv;ؑ{8=|&jTGf.5lҟ =-Y=|2`̱TP/qcco3^Qw[VLhBe"ml/$0^3N2Ѐ)an#:Co.yPe󛊜6ҕ_> f rRUv\Sp#!'\9~cz+uAץ$?uQ 3W̟/]֣y endstream endobj 2162 0 obj << /Length1 2616 /Length2 21405 /Length3 0 /Length 22897 /Filter /FlateDecode >> stream xڌP]"!{Kpwww]Cpw]Kpwwtr-`gs%)Pޕ `aagbaaCT"Pj]@Ŝ&`+L f `erea n2(0d.b^ K+W04fV D 3{hfb Ps0]' #/3 -jP݁怿(. nrG`a  3  sdJ@1`5V&@ MM@ -$)07on51 @RD`?չ9]]\@UWp%.'rXm<}yٛ[U#= (#  daay:fVWrdK `. n@_?XY 3W)d;:X ' 豀ϿO2wmpUTdt._'`ea?ooKM@ɍwD{ ?%{249.ePt1@{Y8YX?/.v(/kt[KGkbn>T !VV|2D-mm"E 4WY@8-0ـVG)%:sl\gg/ >@Ͽd vX88#5O.N_Y7z`Y_,~#6o`8̲8oE7sQqsQ쪿]7F`v̮ٵ~#0of-ME`v6\l~M#pLMlෑo9п 0op 7_[l/&X9B0 hgnb;$_7_L l`'<+/G+X`n;2'|Ѓku bX&;Kv0#.Ôo pw~o?KR[GY}s],h2suh7'8 o]lg?XY̮V? W?1y_`o? 8<Ɂ#y<׿f h`l]~_#B7)0GgŹ l mufO^4«$>'- aI*mTgq OD Յ?<;} n쒥urFQǼ(_]SٯC|*eш(3Z#{HGq:s#gD64Gw-a{Rͥ_c|G0Uwɧh}pٳ$!m-eW>ɺ&M-k2r&S®n3tevZn챰N#\噭,'MEΎFb)1QxIFz_ Y)ظgmL嚖mOrd}C3nEB\'YNЅ3(l j_zddn76ҩ7 quWc;Mq?a2SHl'Hˣ4$7 @16zEObڑ*@N ]OƠ~Yi/ V!GdGw;Dʤ+f!VI2~ }>E,N3cn3@ 71/ԥ 4Ě!-27&-ZAt1r]t6)]L@H<$\PWZΘ]#>+5}E}_y5b~ҞX]l.*fERɮbdMO) YWGRsc4{CwaG4vKṴLBJ?kP|CsFmꥬJ.Vja7u{nei6l3pDmᜊqFVKCT{@_r&ǭ̵Y*dJ?ց?1SI[317h~^^=?~}SqWTM%2g6zřZ~=Qfpgۚ{͎#[ nmwҴD}2l'To?Lz+#De6JDS0Ȥm H>:5kuSP~;7nR$w *Vtӫ2tf=ǼsۜuR_- 8A<VMq(yNh׍x )U3A͛HbP7B9 aRW¤>9qsjsR ϘK{]⃮X13Ę t#32*yEg(:H4>ze2` n5-t[~ r" ܍{n(AN:i57&BmLm;@j *8fQslz€g&a?S^U`M; \Xwm?*Pi>A2>lwڤQ\e1["ĂÅt$Mc /:"ѪNL .f#M tyX)i}l|5(ReŅ/:h$-cpy]`dYg? qNQiO$rMُ]q&h w4Hve2PF(u,@-32]}m W HK뿗9l91c2}/ D„iq?UOxcS{Fzf)4QںpؤjAœ/[HB<U%V>16<Uw'_hT(Xҗj ؿC1(ssNceaOؖYr[_eb "*m;Ku7r3I6EӀ 8l>/_n2F{Qh߮J]ֵ-[ݎӂYcS3uuXE,5ǭ4^|o;m6dT܀0^v- M.Nx#Ȝ~= Wr^a_j_Z\zDzU]iPQF)cE9{@D#uV*%x̔t}Ѡ3dF|Z(y;ԯ;#KkWxfI$U!IBNQ{3TxCi4keތ6ZOT#-t D!Sz 0~pY)E.-Z:N<ܻc9cFHWAMVlFұFR yPBU¥-{I{(o[)[lωC۷KD@(-qnOt>Iiè؋=PITEKkARtÔ N/D(&%OVAS|$veT-t$R11]P1!t0$Spx\ ˪KxliYmotIt'MXl?5|IC$T97DK[/tBv|7-] 1~y~ 萔N7Y_,Ľ0'q!\u8U TyV9#.u*.h/GȯWh[bhg~hm& Vb {|1/O(@2quHƞGoC ^/LӃCw),frg'~ʜ_ & hT9^nrsq#y5|$.K#%wf]nCkyڳ2^E~͟ q_E(c>[šc PQ.u}iEA{^wfodNlv]^,`6I葨z@cR aqc@ĕUO=##rW∘-ٛ jH|U=k1V9;.ĐasQ& q#تh/y Zx* .ްT#/dGsZP(S@+Ut>l(aG`+;* KV[y3cѷ$5 ">"~堪m6WWa5r  [MP0|` b۫÷3kD.(JBy i*n-HPv&Nut{:m O6S%_rCWwdsquav-v ;G΍ C^^VOzڙ ~M8i}WdbMqȥ2x;#7&XHY8C))agE\5&ϱlf QU#_~8 f܄ۛuq엎khvpA<#(|QfYQ#^GA,!&vN~(˶[HPٶ.^Jt20>cHȋWKM +rGpҊ 1dy7~"Sv6X5O|M'cZ#fxB*ӁQYs[aɶZ7 'օ"iz)P}^;1M(<0670#؁(Uw{+otdN]a"fuw]OJTW8A(RZwu5Oix]u>< u]s9EuE5PkRjU[dڧV'7~k+RrXEdek2A#6me4$IN5NAc*@ QTۦ87(ѩěU\kϫPR3$L'K?%PBL12#W,r\6;gIk۰oCAjp=s潬&Bߛ?UA{#P pmO Cbqőd{NB=Er"3#T '5Ďi<bHL`1&m7D];z{oȑRq??x!7WёS L`+aGF8m N'q+DŽIRQ~dNɥ5 *]O4z^v0b፞^8jϳAO&~Z*kqT̋69I{;1g:Ts/T}cV5ȉS.-)޸$9"cQ=w\]Ҋ?[]UJ3)0"g"=PpI>71qλw(bgZ*CIGAԔArVpeUW_u]WG[CRAb2>TwU`g ԍjE7N%!hR$en!Y۹7"?ɿ 0K(UfCZتTET0aTGcX#o3޻Ef m)!wwS咘UGeBf"8əpA_p%ybynJ]S-BrzV04hS](h׉k0m1xnImI#_aAT. >0 DMzs3;p'Cg3WG@A+]"cqN[e]6"bkJ@vK5UZeЧYcO8=(+/C!$ mGuu'\yWs@G!sx }FP զO~vr?d!E%e观fѩK{R'0v/R3sk.?%9TT, et/MI$^-!l%b`2_ѷGTsOx`Vp] ` jvJ Qբ:lZ+uJp,PRa6[O:VETYbF7XUM'Z͊:;v/SORa*^;om$BT Rk)PrUT_Pe7\%C3ȝ蔕B˴QŴR^4=&vj.E<12X]RXVDG/og\&TNᓗ?' y*ofblulg 4z?F10IH{g7s+Wxs9A e1L+ý>\b'cƟ!zWrT|1&T|~"|D*4utEi+>ǵʱO0\[0aLJM|!;ycY##`$Cq򂳳xU{?Ƞ]) ڒHdX|VƎlIgwlM'o>qH ɣa ߩؑ-O;-\(}\uiD.֥ |# /aǯT;XO SZ&)DVm!tHzsLD.&0"xD_GIS ċ_j_!Č2/u)KGHԱĩ]{he-|Jysl.JТHfzdɕFͬY!^'ntsÜ]ӆUʍ{^f,u0zx3Iv'xD=aBB,H3?MtΤ=X!=G.ˊSx3-0-/2Lqwˣ{<$Y1 `mytuS-% +v*e ީ4!>ДkS){ԣaH˧{;#vF|d6Y.iD=xZ+>G%4łV0е.?2]kjcXrhj;)5̮>|ۊ7چL#@l9EtLz&, &I@h4rXd'W(;Zt籅I(1Q[[!jyvUҴ#_i45U?k}mRx{Ro34DQyjje7<v IZĕspKmg@f2+aN⼵a.L[[+Qm3X.]eL6y,ZF?7V)j_ؗ//ZGI'"]`?YX`hܦlر^W=V73@lHΏW8. A;vYhP_̒4_\q\-Y @ƊhcPHGk)mM Z/1'+;y_ދZ]W2wGQ~ՠbO@ϗ)ޢ'BH7SHkʱ[ Ĭ*0v4n' n͗gءP@-RtPq a; Z\IВ' :V '4Lg&E=u%e[; 3׬x YI!z NɘV^EęfŪ(hjE u?{٠ "Fب8˓dl÷;vEmGruƖt8k N `n u.mut9GT+;`242\w#:ZCYR)< wu%~9BtW]S >&n&m}:׳%BAT5$qK >^iu?2_K%P!t|(f=^*NfP-zfYډP $xnV5q+;@wN64Vegx",C[Sφ?NC>bZv [:RΣy\p|(+ր8I:=@cO!x^.%fXA/}`d,9TX9s{ ߊSYwN/%ӟ{$3D2Si 稖eӥlJ?+ 0d؎#X6VGs%9&|H.TtZȈW~At\b5mIEd5wю卪P:†Mk]%_^eUSiN.a84bgm[p^IDO%TګQ8Wls8{ ק3 2of4"}JIJ-% ]qQ2TXqǴTo3T^0og ͨT!-1ɻ_M+-6;WW)fbT5.̡Su~HLN.nm0>T}(yբ3dGf! )hH1Rn,{ ."ph F%?V ;gRn A{37A n#cV! 5?bu1 ѭ3oQpfffe+A |QN2ć6IX %Q "=GjcE0=4gDoErgR΁)brӫjj3\c.߱X/j!(́'E{r_bƮNO33Om'5i#C4/OtQVL ҉nZ$6 Z̗iVX7x/qxGr+z`sLl(rXu̇V>kAbFYVCGLUҟD쿽 pQ96  =2}N1D@JN\УJV m;JIgFsh3FWS2qɭQ?%[&_J~*z̎~p[RWkphB@o+c bab Vw)S.ClԲz23k _x2|=1l9~;!!$ PP`>β9JGtMC5>ӫzIZ$8G19m{--Y t!f)ύtSQ5&7G#i{Kھp{ens-|/Ԇ… kL4_op%e̸бm[)Rg%X]x혪^4%(F#/ wč~zd r#RiP*o.rqP!A!xUW 0JnqTX\?~+d2-)R $%aiԏ7/B2-hzGe:eE%FAAz'չ[2xnľgp()z^j.1һ0yAGw:*UEL|ǭzHU򬈊_;$6wt|7%*nER/m*&'?_L~n3hu48^ХŭPM?>B} o]u[[&ޏfI7w:)q-e; FQšN*X|}&D`gq?vVPw(8i'>9n@ŋ2xc(]YVdVJMMe{Fp$x/2Tߟ>U~h~HN{.D-4OǠ$Z f^cDި& Fo h-..CyސR". VGW~#Gu1H:Ѭ;&?9uIl> E|>ؓqQa_y-=U3Lq*/zeQ v~1E uh[jƮK7w"<:ĉ_?Ӕl9{Q3>;/5ZY!'W5/P6bײ8^oP<ɹR1z&(\!I:_Aė>! M^Rtӏ߱?mE*} n~ŽOrRx85:M y901AAk#DBأuHwc\a~I%sU&RQNʣhJѐSCOŶy@;8l?!@v #Z|'H z1Q!cAtC4|5ߵPHٟCL8(l+}b`ҡo-W&E<6F+֑kNRl AX#6J>MI=#6Az\ohn3vԙ/4o kaAW[;șy!XUI1(h˜@XoP\'7ZP-v%( l)XbdioQeM|4zr?b B^9O]s-A'Pz1[}*uZ!mzn&fp0 7X=}N7k̓mAIKR`v85e8.w}O ~j)e3xS6PCP)qh8LUtbd}4Wa_gzj) ^~KKǒwHeԌ_&C$as$TVqJ lBڞcf\1Z͓:{FCʷ!:{k1pYuwV I}rRf]6Ob)AC\ސsw фO!z n*%wD2gmbVR1G9v;mDzjҮITx k!z;"ǒ1 2 'IC:@S՝J c󼚨PYpQaڥ!B9$i`bXtKpv[6k.n-uh'&jd IQ`+8qޫ܊*, fM%*u7+sq;;0N9-51c4"BaKmKq[0 ",FPKl&SVZϬcw߯n.7[ oKI<`ED7ߖ.#_P?7H?jUzO8EYTgUӚݎw md˘?oxzc=cs@ǜlxhu{ӡ@FMrQjU$;/bPXqyL*`An%T=)׃J쀴Yq3&>ƹ)9+ݖ%3>kcJ0rQ]V>li⅜}xTl<ҷ &kEe!`:l.9:$Q\<5V'?njk;R2_mIy6LLl٨r B.zoҕUժ*+ 6<&<ĒCŹmvI\z*Ԑq0m|dк틓lߟ ۃma InVZTσ1xݡ|7Mf8^~Lӭۿz+ **a(NDBAD`SƐF)ĹL7Ph? Qtb6 ?be\DN<gHKTL3s޷·o`Bi",#"=bq+H[輸~!(<2|LaHm }{i-$|R]yv^|s| {5TPu6ph:&=NλnF , :w]5B{\m3'ǁ=Do,E S˝hJs -`um i^9q} 0YqOI,}f )KQ |7xM̡xN=b_2}_bӏ dqC_۲ CG\kUak%#"B ]7hS*\O$>c+F[#-^n7FTc'dZ-tG;hRJqq&+ k%iߖk|;]H)n,:'N3t-(<|ebP`㊄Grgp#)ܱXi' +=jigBψtejU baKX+LtB]fۃHmZe.{P.0(;gUtwmwy+d,DfY Q?,mmٍ"8j۴19~C3ߣO'I?6W{Ҥ? E4?BԷ=bཀྵو%^GAk> ^%{Hq3/Mdei/ލLbm~/8;ks ; 4g3zq: *m}Z0b'b.XO@f4y3!]͎GI2.qDC} NN27~bNU;j3DLMM`(G([P Ki47ďOpUFxٰ$sKRCAF+WD-.H|%<ِ>+sXTma&gZZǫ*I<> o2mPE$#o`U;ͤFp`Z+S Iz7ѱ@Ϩck&7Wljye_B-w&%1R#tITc;7x٨bP5$Hc:ZS1wYfHt~~Cir|EڼL މJ6z?Xjvht:CkNF?W 60#gU'a $DZa]:M#<+( 4 +0 }ӡ^CА,(r%}ҸԽ9++n3*{>`WW֛eW7wgLx#T]B+gm|~B|39G~^&vPYӾ'Y ^D Ȣ i]w;br/n:m{<__Nwl@MDyo<rWF6TMȺp58bIߋꛑE9t tO_5(jS8 Xd:Zq LJt"h&6[\R,m']U4N Dɿ2Dց)G#XlҸȺ}:f;oK4wXGQmJUO8bWs6bc֚8C(.mdrzctg ا`kIX%?beE[kl}''uM@&H'1n1VlXŕhEt 'j5l%lut]q*-V.8R!tlppCbw/gqٕ>V^*[3E4we+vd/\KȽ1}n(/ь *ӯd@j>C}Œ8ndPޥiuo@ڎoӬ@O&])7oOZ50AȄ#m\kxBTu /AGzAn⧳bRÕ+(#mڿ p $zo-%nE?#~4ФRy:L7 k@~7h`<~ !0A<%ˬ C Ƴ88߭+"nj)~3iP;ric 2ɞB咾9&pMD̫@)|Uޕ9Mb2 <|Һ}ŮB6[]d1,p}++bv~qg@kz,v@)5} m5kx&D#tO\Ǐ3"*՛%#@b3"; pR7]4$4M@e\Snl36g{6%JD^GxU(3ҔS6:! `}%gSyV2ֱ8QN_RaD`0QspR1X {FȨf/ u|{7PPzn)ZAD x/ܮ0QJZ7q# k=hՍ (ۢ=B*r}qFcU,|IނJPeԩ_˜η0r6ȴͿt{JBGiV!:٢ʔ򸆴 .!B MaݙV"RCa yUA\:E鿐{#ܓ,ڟ *zjQT`p A;~eII" e8H`;B#Rh5(BPdQ3)XTΚih膙t M8Q?,T{> W<0"/I*W8I=$hږq1ܞO섣!&+xr㜖'90]/iHˀPQ,H(ӷ89شM6VOOHrGG=~dGg ._rj msc8oZ*$رc'WCCoVp0E K\j&n d~L[W!RCv ܶb* ^Hp$p" 鐀S<lkɟ ;W:Yĩ0Xj}u0jeAҋ  x99GΫMJ|Ka<ϵ_ ljB0iY"^R=|],J5{2}O8KߦTI=$XlB=wov=ٔǒҗvM+BrӇdlJ!_`ޚdky  a0@hssܡM 7TO1E۫W\zb D!u!_ MPgk =[d[$}}lF[Ti;Sw/P%ӹPHBvaԇ%nudOV^RXM7h"ax5mD41$Z:~@<&;r!TWFB0?ibKc[ M՛x4;wP"-)R`FR(JWguFZ q̬AvRs`#υe ?!*Ï[ݏ,aWI+ъ2?U (NG<;n` kxM/U3> stream xڌPҀ mAww.!$@g)lj hnjp0]'  (3j P݁Z+ @/3&.o.n` 3-;@C^ X_̀W ogSss{GSlJS_v.o ;S7K7Ju\̝A.. zd+1ˀ-`W9݋ߗk v,A` ˿ڰpsd܀y!#x@'ܚ^zqtpXY n@??KH + h#M ݿ36~~m,v^}lrLnJIIO /'{q{o)QlWoF=^fPqxg 7`a7y v7E[zMAv^xg7׷Pvx5k 7w5} ۜrK ry-@[ ;p۾=-.o7 XVl`rLMx>oj{l`7[~Kg&_ `l2%>v?6Mzؔ!~El[Z[eKoLKo1M]nb[ZDo/?!6?Y|SZ)A5e%'[W^o/?o?ߚ:Wi[i[eN[e[.۝oUoUoUyq"oUyoUyoUy3noO?z͑̅Bm} `FFٖ!t{,%|U 5suYhnk7#Fo[Ñbg  I}Z|bg6@Nw<]1+ X\ <?? ThDv{dL<˥I2}F'fR3$h#Q:P4}Hd0M#C@|DoSCJ(G~{i7{%f otFV]UE.mDeۘ߸︛MfaTo>Ċ D^6Br ! nZRP.EͱAr,d*78j8$zI I_T1PA DE* ᨘ\P汲ז (G5^ (,>[a' ʿQFzbo 6ntKqspcj`}Fld ホ-zGҭ+DNdOv~=%Lu5;fS-8eeC=7GpWzki⑳ئ?>[uzF$53-#'Jh*c|==H}ktkBvP?A,WLdݶr ('n#^f* HFyyAqx1Ha.:,G W!g.xѷb?d =Tm]af_ÐRI5C0%%94gÑQW2@Lγ9 9jEGe˧\C餙n6"PFf4vnĆ|..D|Xr薏8MD+"T85;Nh)*qR/iq%T\1zAoosfj3Wg~1zY߸@ GsJΧ3QOc +BdMM:(;r;_2sYD*_" YL;F#{?|":Cp9յ[vZQ÷*QSux3ļbQj o6̦N1I..\WdԿ49oCDQnMVX2}xCl:6TUБWcKGSTp4y 3NӷJraLG$5OU>"zސ`2l:ԮU #r63- uy{Y["@LӅWѣ>14V\Y.V“ ޮ%]~j_![{ǻd,:j{\3֋g{0>_1,Ƶ;Y&&{ Lrg>N%sm}Qb=2ysb\of;2Aָ" _UGnZ'b3VQED)pƁTeVGg>eC3AyGnbr(MH݉6\T^Yy" ͘Lbo#6& $8+1b^J,޾{²BgT%")& @U#H$|,Rq&Xx fayEۄ:9dAAjF#PCqT~cD C ܢq8mW|H_Ɏth4FԒ ΰ6!,f%\PE+&KquჅ0¡Y ܣONbL4kHmDv]*\uav`覓<@wBOO3sbܙ{]& k6&@B6rk]d"֯y+?}>ԺI 9U8ݮLudZ#u(i9?_QH:T {}MM&#E+.jlt>wq ѭa/32s4@w)9sTO#ݬ՜GlSd?^*1~K:9?]]*B;AF>cjyJ,1LY$Y3Z1/w ;n2y [S(w E?ٷ9EpS,3`ՍdlKU[l!mjX4*>grky6`0uTs%š;E_Ft QӜjW\SP*Ignڝ1uŴE=oV̿^>XO07Zj?{vVpT` <9/D_"=ku+/5=1=r JѼ׉۶C?8&oAo#oO>2))aC;/y p1-;jSET i5/_˸"8M_ 9+&in{CuV!~r xKt¢tI\UO !$XML2;)Ɩ"_GZmչ[Gw(01 -BIK ra1]Ы;N7C'bt1L4H,\ \=#˝aK$|ΦbhRޡZsFk#cvc8 DV0im} zPè诚f òs! "1Bl15~"F鍽?8'Drۥw4qbD\sQ '͝Qpj@s哟 $#x$ )+y53'cX„&r1'tfzݍzS F>sua#N,8a.­1#ҌPv`-LpohMOg_u,3<ZV|Gu saX%VV0Toz'NVhhO؇ a[\Rorwj?)~o> /C\BTz\,tzF_csw(ܲϲɳ:)O= d,T|p֢(n7*]y #ha5l;`(ovbiyS2n ӐhfEި.SD v!vT9x#Y)1E 'd gPjV+~LK}sq7e~!T.܂_OZu5l>䔃Kr'+wmv?"THP55"MJF|hg:MЕHۘPU[p=fGռYb_'Z(^1d po|(ds_:&rT[TL]9vva6cJ`\4SmB򰥮[8(]qx{r8e_d~?BmECh!^GYb$ #Wk)J4rz..3;,F I}xM>%^])vZ=B¶Т/y>9#li|BJTvm?Q|Nȩ.da{PNFJ#h{:b\b5CkUV 7!lyK0J4cl~>R;t?[b3)f3}*Wk&[[rڪ{܋cQzYϽC9:K#֍eMJ 5`Z?lT!X ߱ ޴] =@n ;wx%ep 4D[^`xo|ߒdbaF/7q^p+;~0 P_ag$g8aʝG(R#mTLL"+kզ B/Xas\RPLyX|DHvL):{X-Ґ%u l^^n2>et!$gh =CLϞ{Zxddb9n43;h7Éd g ;P)R9R7KJ..+/zmN/I8V8C 'no E`wF]U`T)xoh-Hmʇ{;E$IK1q໙(^27͌SY!q<35I]i}`nqԵƍc+I&N|eT3#jA#o0* āOg&'m}JZlr'is1x?%K~ ;"8Ivr[[J!4;*wЫnZN+9{`C tORZqk.-'E{P`@25UD?UӗK;~%|j;o40YfO;:!y6A&;\%C9c_* ';HK¤'fPIe7 MkuNj-6DHN7egZ,=(uohV7va8:VPC7[nt焷cĒV&E ZvM4nw$p;ʩ %Xle55]@ [35oX̜"' ܍, w1yhΓ-D%2Շ6 b_\Z1C aڲo&S@+jrxqtpH&!1! 7WW_UەD[8OϗẇQj#JS؟9U,v=FB?~W]Q<:@Q`W@06I'yJ퉅o.;Ֆ2zhOlú/\ Ӎef&bZ6>#GF_+BqY P_u/N;)6F}HߛJ}"mP0!o%9Rbz #=*lAmޏ`jK6Fq廄]i?|YWX)d}j= I4 & NF(P^qrv@4n*Wy= 2ZFҰ Z隭WGO\ L{_eΗP 3iN~y3*"n%aUsU[^>6y-l~0]"{eF8liJ''f[.ȷ5KJ y\_nQңf ,V9cx⿋.Ѹ^ӵx;Lƻ^+ sZuaJ`aAY:7,Mpl4tr/Mdt?~=QK T㡱Q{7^?@~p[w6ػ1ǖAn7[n*+Px ˢZںR"$-f;G,7T-ueͿ @}j|ށ *Xf1tk}dUτ92|pp*]tZn}#V+cX@X2t3mzunZ.O`X/S)s e>sTLp&Mkn}v& vv_NevS7*x0[9qn_ͽܮٹckR_kRx-i&ҿ͊k޲JͱThoeH93d\_~M89<Y,i0SۦU2oC s2D3o~vHi0U4Ndbp: ߙ4zY*<4kup#/{w7a>٘@;|9/* N%1t̥', nag)_)$SK|/zigApC!=kҹ;XXQ_UNέI~`sdn*ZEO%EXfgVd#N'b޳t/qչC~ pg(?ZSYW+:<y ҟ5v'׻(]2xG&\g~TuXvL##b]box>>iBDgjU>|})NN1ˢ+TՃ~MB+P'?mAԵv8D}`aɭ)vD.8a3&Y|j^<+ u_7'&UmlL/"AP5*$ nӄvv%n3+L/Fƀ!@W&j2z=?iȼYٺ1m( K'5WMZJbyl L 7PV΁-ƒgTx⺘~!S|٫{i"OV~_-XM3OWދ|6B)}|#DlwLbb};Svuc  ((eⵂ{ѱ-CeGk=3@nwf=,EӧUYc!Ntߢ3}𽮹+RA^vhI҇#AccWs511j% X:$PB4$ԁ,9y~*~d儌!䕞\TKU'cXF](I~ m ̪YA|j bqf O{Pl%gpQhwIq0ZҴ?ttN>on̓ [;-M*>V U޺{~=H5Ѹ%Wz,9!etZXu"j:eMH^t;493Il-'Xx HحХR.N7(0_}ŅT=ͼjڏ9.z`jwS{W&0Le'%q)AYȮ* }mcbEnUgvU=ξK$,C1pbzHԾtb^n7̝΂C$1Tsgu'i #:S0<__ssA% 281b:xQZmG`/+h;9q׀D&6;fl=tآ`=X:EdKRX#z|p;n:XD0^2!UF]E&aKD{RM[ZŏvJJ%~yNh`xTt[w~#%#NtfŬ̼쫹Tr!;^66ts9L菎֕8GX/k $pH,/Dn|jTVTi)]FMQvS znXޠvz<{g2%O=p(H̶P/XgX)7 Q3ǘ9w(fkmaޚBf4iM +}8p :go}vdɁEg;H__[lGښm}VWX"|zV޹GLbhL7ThS??͙UORA#jPH/kĠD-$v8. 4muאr B?*uYzj! x9sLv5 yvxbpE"慎b~,^xd?[4#`XvAMdTP,qW0-Vr뙬|<<7^LU[ayʼnSjvad.%#$Y?TèJnvZvt-1ĠKSCM 6n{~zq{!oēTiEF;,9]bH4H҂Zq` c[!r_s tqnkXJ8KLn59DrcX㻦bl:]`9B${okUw@e;Kp#0iU*%QOg5;~I֞&yrcƱ1i-k@zyYCO*Y74OY۲0׳m1-\Hb;h`&{SH<8$Wu\̝`aPs6.sIf⺅)5⎱{muzWPdT  L#ɫ@T<[4VU1=r oLu:{jvt׬ʃfI|KᮅKl5ͽ}YKm:jYJFɾZNt"hB+;pmt\gJRrC;_r4 8P'k|qbdKh|RKsDwǶj́V[jQK7Jٝm* W| SKBpn"lАX9  3U2"nUgTss÷ w5uIϸZ3>gi!Ј֑ǵ'%k0J/ E71-Bz퀸z_!ǓLgLuvGiX a.|`/vʕ-Ň wV3K2[W]k Xu?Vn30X!f;W:9S_}Mx 6.oUz^w:"Ѓ y%)6$eZUGgU\H&߮(:WXO^ =LO;[Sς=f;|)a!8[:e#j2lgZ`ax{}~a [O&&KL6cdk4> 1m͸O3/̪n -?]WzZS4#_OO ?t",!2 ܧT!w+Wɉ]>{#_k;pAfrg$ ?Ĝ1VkUH^#B,q틜-6l9yUgOcݖ)6VIhoDڝhݚxFm`vgqC} 928'lT+91P Y&F0A'1_/ 27Ñ! *kvk$KOp2DWbgl闺 F˵T?5N{`;5Q(iÝ=y݈ D{J@ݮFS;wb_dtL u$/|a+J'-2Qc~oES2 _Kõ V恬p?j"].$%۔fIP9fd%]e~ opu&\H\" \(ʹ9K ]6A]?SBMy$lk]ߎ҃kgIɆq8EcRR-sNM=F:4KmJɢ Co`i{NKӸ'_h''bJG+yѰ'Us=\-xBf=꤭XY ?8 QX ''%Eȗ7 >V!MwYFV&'lZj%R<|RǠE ]!xFڟDnYcB),QIrE$p?~ 1| 漇|Ϩ%`V'jEx.,HRJ=IʈF;R#Z ݻ+q%t13v6( YVגy;7tu#M7c?~|J uYݰA#zx!VBPvT cؓibB2TEH'bJ7`rÂeodgۢ;Gk܀^qƤa5@rx>uJ|e% ! ]ek}Dܗ/Ɨ3n u? f$޾zUPB֢4eq#mՆnϒad& K -ssDua/DY vgPrn'G™H]9? = ė6\}0{_^ZCt3hAv5z=ިmT{ACY uqv;~Qahՠ}m!Ow?i!5\c4Vݢ&+iЦ$sejүV;ɍxS5ЗU{_2k}T z -|r0qhAz/"D>,2U⃉u a|$ĝK*}by]mY|\=]k,Λοݓm]p~)'wÝA~mHeZXz 〵\d-ԑ߼ea$rtDd:JqW ? VC1MV'EkebAid_T^s餘5{}9ͶHJzu5e諘pg9KjWt&)yTX lH&%Qdp%;H( Q-UTeY4Xq,5Cc hJqŇDn:m^f [+jec Α$q'%hЯ礰3я2Eގց9بAj(B@7 ]k߭l(x|s5F\n|GY8&lF1L.$N)R4b;y9%,*42$cA'ٮdWJ$d%>>ԏIwc і u9 dEeH0WFҶxV%k> 7$N|I?o[vC(o#0{JP彻Wԩ{nK]垳=Hwe R$\$롭CfiQ격HZB>*Jd/e FmBq.7eef}rs^b. zܸ_aV\;CϽrMk/K ZN2j9Imj_"?T r^w#U'RoU *u~ ,ߌ`hfp7dz%?5M;n1+I..Mc:|vsz{[wۡl >f3DOߩ88ApR~/*6 N"Ъd' $dX#up-*o߄qno75*xfK`RlGC9fd; ɞW q3,l +֗bsdͧrLw.SacN.yL1K*@x7U^ ˬCM, [gqkNZElʒ7bہBVi9Gcf7pL-W'oNTƫyuӘ˕u4P͖`11`#r0"GqJ֒3dw:#؈Co kŠ,=1Țl& ٤0+?D6E|V`_zDKbY/;ЌkknX^?ʭKM5FFr^R®#C]3\/>vm8M?0c8?8ϔhq$ѧN3u(Ђmq!@$$pS!)ն endstream endobj 2166 0 obj << /Length1 1515 /Length2 7236 /Length3 0 /Length 8236 /Filter /FlateDecode >> stream xڍvw4oжa хբoIZUvGw =Q$D Atщ}gݙf9 Fa PNCO]_ B D:!8 n$%/ðWP 4  "PQ (DIaHF!09{鯿@.87*..;(pCa( kp9p$\X 0sƀnvR|@O$ <6_0g@=GHm!W'$\%ln@=u XBAп;]`(o$htBAX/,9aW0 f}}xPQF'C ŀ0H_,\]F@a1_G!W7 {Ď('ElB#TD]X0,ۃ5vABx]WT~H[@n?kP Z#(?կ?-pCz WKB~}gqg6h?߃jMﰬ, /  E@q }Ն!<޿ l@?X\]_L<\? oMZ#\" _}AZ*3);9Fp0gv^D}%!ж*XؕXdPvW /Í("6H,5NHBAz ؕW~WoWmK"@Z5aa/J6[PhU 5ZqQ %W Fm1Vyu)1v%ߛv/SBchPЦJOO"GBX'E;MZǗ BbڽR5qbE=eA)oQ)GojkJq B:chӟyWf)=2ᐒ GS91]Yu"d`*/'Z]K_GyCpD:jSNUSכǷʛ)F:eo|W`wL^J oV{ЂWse:~?h"yű~CX- O<cĶA|rD_n| Q~F9܊b["x>ux {ܸQݚr̛MK%Ećt&g)sd@}U-57|-+5Y>#A'jcĚo`^)a ӝW5CPė>CL2to%e,qW>1QFS!W#:[ۤ]#ʸ~oLq.Kd^˧6_9nLGY}3RfNxnبq&n}-T.#AVv}y uG,e^kCy Y8F>]"'o'#-ƈܾu *w 7.ND YKk1 OPn/.VOz?6,FrP25x K:Z2fp |v|Pghiy"Dea*<, \.(j'Dr/ #~T_UX+UԔSs_¬BY.܄L/W#c =⤽F]YWi??kSy,6uȘb;t)'M_T"HGʐH&d4QMnlmGp&\ aXz_yW'eP4޺DsV~-&'9S%/& ^~Ur_Mc닒va [$8ܶٹ1Y;[5Pq>0fUmvdd-Øv-9pH'to] ]qץϹ.ߒ79V]s3BQvjcio9-ƂD&SPжy-C2ۉhl,L]@[2fk=2q:a^1#(ۺMirWLޤq ^tYBDC& xx {WO) @Lfm%s*y\vғ/U6k \H7u)5e%~4tnGX\C6!s>riGB^bf[Jg~TA0?rriaL ć"C>$R<33 4Zu}: Ja]to)V.@weTg m%|}nu] o2%YV0Mn&QcT@Pu:z*f sB2 !VqUxL;3Divnmʠ&gMd#" atuRgx]]d9Q:ኜ+FB oT8Ϙ~gG/SVJOERw1Zwv2fzu)5\0rڇIg/h`9-zLYu/U7,^|z¼%ӰQ=^i>[/BeG@}@W63#ΘVdZ 4~ R e7:]G >}1OǼ!Veg&9竼AZj v )c(":";\w>: Rh/QըEA F':vu,||rqǵi3xr[XSf%_ Z+̷i>dZMU4]ǂiTz 2{ƛHVEM+̿KnL")/v:/+zm)Evv=s~9F9kw v6^h7Rf.*N/J^#>|&vFjI)+$mBGfVHsfi'a_[ʣd$۽ܱهodIʖBiz`ԗZrZQL9fHq@(BˍIJ3_ .mo%bΙȍ6iKQ7y~ 5$DEFx'{Q6# BQ)#DL`7{ }ϻH_`gߚpM[)4y6UoJ^kiqxa}T&:6Û QB9ŘM!v}O Df‡RR -spݘSM!/U>Ű6(̄0:+-zNH$Y*2>+[Av"_~)eVbuR\.O/lg٦ItwNxZ|?.P`D ǮGؓXd顽伔9g&pTϸqj}anݹ;7xƐq}2_ZO.%OhQZGxMGK1w_t{'oQlK%}V|C73( 7mpghc7 O}kI{H%._g^*K$)b݁E$z4!Mߪ֥{‚UY2wc+|/tJ<&Ag^3E@}{^t@!yoCwn[SШ,ɍ- 94G_?lKV?16ۇs#\iߧC])ƊHI #r F7M7r4y(̊v]f;OdiLElipL^RR^'YpHM::@frNd6-ol{w_ t6}Փp[+Vܿ3CdOJ t9CR~P֊鹡{ث4pM@O51wݏ\gsr~!-yf D4ET k4 G:}E *r/_2bU /.{Rnmr'RXʊFJS%OGH?0g+$:Ȳ =h~SbV|}^sO ,AS~++:sƠ.pG 4s;ON%Jbէ<I  XrM'T9hjZʵv.hZT^:SzE9K;셕6n#VZ _ "읤^ @7'Iڵ߯p ]߾_M0{B27:;;bsfp,luvP;3JskeUhLFOo-}:_g1M+ )/"+p/.?p^"'Ii\!qy18=*uy&,BAcC$ղ'՜ ~UJ7Fv'Ja:$s%E'-ʡ?n88s978'l`ꌷ+(5R'ʫxV4-}H31}/(&5.y(#ŻE@Yk8.D57]:ꖹݹ4C^tTǻM9G9b$E89T7,G$P?^sRoF%xsQ® $3VA/uݨ!F'nv4l{"3=8ܔXaL0X4Q&{~Ase*$Q1;|~+iv-jr e5m5EpcN ]ApPD/G@+*E&) 62Z-g,R <I( lB^ғ0nHбGJ^1_mRHz0&U*I\.w*LU;/I=pFv?82o*Jnē;Ƶ|eK'kLMPC몭$Ϭ۔x;WWʿ;$?!ӎnhhKK;%})rsYQ 'sϸ"~1Y%E||]|@%nc˪SiiڎZB)YnRta7%Sy1|U^ʮYOώoؙJsTa)b#YC@wڌ9ijB|)@da|BčXRD"0!Fɡzջr&ݺS*WKasVG/{-u'ٴZjx"CGFF`eU ҆z KS6N#g;yņ-$gQ| -R,J])K$Ϥ?.@ѣ*#UcwKe⦏ZK\9{Z1}홙1D Z Q`֓{ wMԾ.)Eb3wMC. ֧3C9gXRvn;^ie` .{HqZϪL ʠ&yVTU%k¤bO6"l%hk$)r"aѼ6U|\xtܥH u t ||T> êEŷ൶33`)e NadS{/Ƴ9v2ɔ먇ݝ)^h[|EsU"ĈUESWŜꈦƲgy ʼ|HĊruf_jVӳf8Pjz$`}MyjXE1yuy|.*~%5<ç' !՝a23$4k>I^n=o3BDY* =ϳh3X2 ,\'pP'Uc B c2dmIŠW抂J Ɇ,\| nn*,2 #Px h(~(uDx@쵋 9FoGK\[Bq>!5zϤeRcsloS endstream endobj 2168 0 obj << /Length1 1423 /Length2 6058 /Length3 0 /Length 7015 /Filter /FlateDecode >> stream xڍwTk6" "C7 tw03 ] ҩRҡ4(Hwqyk}ߚy}Z !yyA?yA \}(⁀a(ja /HJ@$!(v/ A,p7_#UWݖȺB<`F:B\Qm. A+#& vE=9o(Ѕ ^;'e@ Cw"~;Ho@\ xꀞ:p;ݟ蟉_`[[ 9P΋Ar`O GŃP k`@IVᇰ!O|?ӠYf'wuܟSz@lQ07=fg QQAp9@0 wc䗓! أh@?@t{Am  '; FP@?Yfb>%%5c?v}~G@@}eCl?oa4(9Co٢,{GJ.. u@ 8j@` 5g *H0jDda.$iCUWP]06y< PCg댺UnrAP30[`_\Ja€??jJ > HT=pT ?jr")ֿNMm%ÝߜUx,Ě_lyb-d~+]9ediD ٠yGV\r.MgIn'BgvMYCKdmaƖd4q!)ZRj* E' )4xٜMXEs4O}ЄS7qTKf |yۓ*x\R<*CNwTdY 4V9$ݱ.X[6:]G:٩^7cnj5IiXCM-&Wg{Mh(jNN= )5I֪WPbC(nW`S ~v51sY^YB\jӝomW R?c. M=zG,oo&nN1&L^XyCJ^theNo=,I~BZFiXb&g-7 Z93GIY}bl|ȫ6_ܷZA>:e1w b1Fb1Xx ~szaα^RUrF be1d:kq毙6cB;@ra^Oumy88V<%Y7|8#b"MdݸivVO\}[c!̊v昺Gk.ԏn(Κ:yy =bARb'\dH :SM(d{ ?r ƖLL[)PwRyKDwTzp}x:'> c*kyNm:"‘O{lL!Vw|J8Lr ^xx[ӷÁP&Hgݝ[rLjw~$G T%A'٪~;s b=ή3WIVk/h9)>i'J/25)PpXq~Gbwؔ1g?ZGQ'K~.YNab>#kn+6LSXiM($9,"{lRE$;c{?؊!DӒ1K&(uwA@I\9QҀQ+ <hMddUCI"®1ZfZ(= PҊzd^-w~ g:ϞLg[g9Sh>, RNX vjmG:B?<+Ǖ ӗnc*3?&nD>ᮿ?Ϯ ~ Q$l)zyz]x!1=a%yx?6v-_o*􂊨_FE8qumoZ^I8%&$ɷ'POGCjjcy%{x^- d$EK:SFEPNR3 _,hRiLQ y-9r:nm1ocq~.4ʟҨj? o4/xd9OQZNaBoS<3T`Nݡ&*K${a4}z~̎ Jt_bdV&=.XmS䀑tيb'Vg*ùpüz[a8 =} 4>Cy u3sҭI⒯6'-KN+nsPmwc$m;DbU\Ixk½RILqmQl: ԆjTGktCy*GeE S/9H=:1oL-rV~i"rM/d6?,GDEb[#%.hq.ߩ{fjGeҽLG X{AǼ: OXȲo:f* ӕxqrA7-شy~J}}f8P8N.Y&1Su#B^ psEGu%9y \͵qNznH]$ʑR;^Pۋ閲ZzGOODPD)~) :z/;t 4^ dKrvy;,h]O5;*{L별RYGP`%O64lNwŻ939\kcN uO g*p vsNVV&/-+63y6<\aynAHbLhRnU(Ky|@Qk ԗ:.n<$hFy c]h C˙R~p̳fiW( C485a Pftlꪒj&ٌEnW Ϳ 3cM*7D7/)8@IKy1ó9#@g"uG1jVĕۍݨ<#* 3_o|~`rc!ʣ+rU"E̮'7<!Cj*s %_r }?k 2[a~ܗ<}YI@yiRIH}l~c˄ :݃EbU/LԴ| BUqH*U&ѠUҬSß4csU:j3X쨽Xi4y7Aq7&|"T;P"j<6^Okߣyqa݆勺ax-IE-vo6+Q_=VfN,˂V&Bɼo檒D$UVIJ}}t &f#z"ߧ-[on0ո;`8 VMI^={`[]l&ǥp^V.ʧ#E)mҔ_l\"u]Q 4k&rͳi'TTZi|z8ylEo=<_Rn_90|yûĔ_3S^FD Q`x>L,&}L1nDֺn="ܗYXd D7)`LxAPhI(N ]i^ 3aq0;ўw 3(Kx#M-m<G|Y6O\a<)xDK):EL@ѥrAo PU}景:y?u<]9PvcuwsEڢRiڅe +QzsEf&:d; Ѫq7RNzoȾFz41 T(,az dΌc6.v[ ŎBK{Eu0N5O:[jfoα8t*ú]Ywuu+!d~D߱cU%^`ps<"2DKTE6#e22XmaL_I2>ש|ǣըﶣA#^e?&fdNqNuc`sEN oӘ6vܢ獏ߣ*Sx+>6:[0r8aXXA,18d{fvJ]UJ? }+OUٍR$O~d>bRj~/5&e0}$_wxAwjDgVԱ.ŒעFh KPK1۬;>{~&20%RCDy6޾d)3x~91΂Y0!9vӾJ&oJHOu" endstream endobj 2170 0 obj << /Length1 1428 /Length2 6162 /Length3 0 /Length 7136 /Filter /FlateDecode >> stream xڍxT6Ez^H{o"`!:H" H/һ&U); _sZ߷Vgf癝+!l!8_H(P1@ PABܑP\?J mS@Ĥĥ@0(7.PyB:M$`WBCQ:?!IIq; t@(G "!P)8PR^^^ AE9 !H'2@;0Bأ@!p$:nq4z +_ѿAῃA`0P-F@p_@ @ǃTӇ1ۛ-^=HPбSk`8z 8}0gN|m~>y`c N0~ؤ!z̔GE U5ύ4oT~(/9?o*BoL6g{B*\!hyb fT  vIk|DZNu?Ʒ|DSu?ڸpUb*@|v9OI EGy~ĝn4+E=EtMۼaxǐfb3u[ vHMj5V/ڪOmbn?iwo* Q/񓠹;DWޓM+37z(+%d3#*6-wZ~B4S[]mK3]fF,̖i̓)0fGdBTsmx#aDJV=\a 3P^9:ۻu090r^uar В0r8;_ؼ{jH5m&5r1!u3RB1}EAHj) +Xp nPS&]DzhI6\'a1( m'Ob'FXxd_5Ǔ~k[orJ>k56_[$ktn_niE]w֓Y!?kH*[G<]>X rwil#D[[G#+2 XjF#,[0am͚; 1jD*upkt+k hѣL1EUeV~QyiOķ1WO3~De!r-s!+M7B@eYV'_f1wlQ GR(\o#u Fk,] -bEuӾvox3I:Q7'J)έhwr& ì*m}ՔXC!KE^,_kFŞ e"u{#N";]-1q ]i]ë^ѽ-&s <|0\V/zߪ1;-w'o(/Hc~:< )5=IxYʨtNn֜ +"4Yś]_Ҿ9}[1Zg'b*\]︄aĎ|"ݧ5JU?9~ѓ|IBap XI:sUgۨp+uHVĂR7OݽMV5=\|7)5\-3+1j0-{z3Je<]j~#u\]w{Sk#i}?5.Ni> oV*Pe׵1ejd%~TݻUfvL:89SS)//r^t.-_e}6ѻd\_k*"'=ޔ*q1z`2%}֭dAi68qMk-I_QJˁoQOZ2"pJ<钱3ON&ZgNpG/xmjf_jdÔ b7'G&,:Vp!;Bıy<*" qi~VJl?To:LDDbL8ż;Z4Z82pXz#dMA"0|gP4ɻ "JhȊrGqB[+&(C ݆뛳8!</EY&+d U>$յZv9s]on .SH6e/SMc.uڹ);О%3h9W2$G=[ųlՃw"m̄c+ĚG߬זR?6 R.D^gc.jm?ip~5/s=#ߋ%yX9U![ߩBXLi0Dhk\ eHJS)NpMmVbݪn{[<^o %Zf;{u94\s^ʚsIɏnXLԿ^u.@\`|G+{\Xv'Pm۽SI*}@I&FeH9ufsvf]M}oο&mS6K?>!,ݕfP"Kf4j) n6?gȒn \8|t[BGƩs^rP_߂: ˕ r۟T瑩\Z~̾WNOZn#@xo*VVθ?WYٷDM.:i1<3xvZS\ܖJ.xkaG'@.[Q Aw!J:`hm1EKGM}‘)dz 2L[H@b$Yּczfl! %cj)ۛL^z|"4~86.Ib 5]ag1CS\y VVI3ege:GVߥh)<I3pפqnGS jHF4!wL6^&Ls$Z&&=H%#SlĚG^l+N:|>oA;s;4_?C"rICk#)fgҊr.ZSIB!c\k?6 TnC9"'98#lIۦ-"7PWpP8&ybޢ/;w8)%׃JO52; +X} v6t.*(6 }XLCB mi,a=zôIy$x.~]_QKsH;msqTEvtO-0#p-~2{!\)Ned.*;IDr5!Y1yX߂^܉A^Y.;"u6,~⭛<=\ 3ެ< 2|[Y+7=05Uptq* -iؤ;((Zez:!߈P 󞸡3Zm'{tLU7c$eʚoODP7NŽ%_Nf -c0,ȩT+?'=?AV#wsjoD:iy(6q7Åoyш!y<1֘]Φ!ҍ^ׁ`Rlz+a^6*eaVϓ~JkU]Ye~كՐ3J1n?&/qMk^)QJӺVyBWq=+LJ'lj^?u36/gp=a PIo~MGyrmF;919h|ҥ̏ ۼZ?V[ O ()5 L'e%tջ>LϣU|NZ8??N%-Nbq7(|HcE5&U0Gj$&s !IO^V:lK0-=1uYegy'gfΗ2d^Cb%kN߹@jq?xwlԮrd<)ۓ!~wXZ/A=T1>!Xդ5w@afK"'krUGOɢ̹ _iģ%)ZGWij%j Cni,h}$Ƙ)#݈@旔 d1ݶb%6XwC<ëBƒ G3-VOKr5L"%2x~´t;L8CgE CaWsiS1^^Rt,D Gb Oykj:,4ť\ ~;|浙3R$W/z録 ilܫ:f6$,,y`Q Zq%E/*M75ҪSX ̒A> stream xڌPҀapa .Akp.ݝv߫VwE % P֙ . `ffcdffET9[#G::lys;č l.6 '/ /33?vqcW@ kg tBpYX:SZ #`l y?fg :{O~Kgg{^&&777Fc'F;G AZz t: P44FJ%_ 5;sg7cG ]` 2:ؚdJ@ˀXYlljjgcol%IyFgwgz_NvƮ kcwS7H+w}N {g'F'_52fbv66@[g'9M˵sl*ŞIͻ :La[/{;{{@9+S0:L [w>1 ~03;[kb&YumQ)_; `aaep8[l wvD5OͿ׆'(ڽ3@1s0bHo=Ϳ 6 k[ϳn(ؽo5kf q6~[9g`agdf$ r)M-5K3A@e;'_λ3ѽ~eJؚڙcGGc x'q F#_>UE\&$_b0IC&)L;IzGޣx33/[ؿO_Omޥ&л]gjgH3AVw53vÄd;о{X'yK{K?ߋk ?B?ALv{j{f{f{N-9YYYё<<jSGw@S9;S5U"n cpZ;*bWly "3{Go V8Vީ8u&GN.{rFlf8gnӴRTwg? Ƣ"`ِ D2*DEge(.N%RFX9JAr~wsM)w%bi[Ҙ8 eL\J_DɨZ4Jl@@mĒo|w72!^^A]]V&) ػ/9yX][zh2@))s:~$ڕ<ˤ)HDc4^xW5,+ sF~k4"%)jӇ#r|"oQ)PvS+5S F<X)@cUHThBwXV1<1c2Cq^˖Ma/| L0\'IK6H[`-?D(s1-=:\+-Xz<.gHGWhgupYZkP-ER$BnwE8#p`e?8K]Gƌ|0j\մm}(K& P khq9=XMۂ,axk I!TLb*'!z `а0ui(f] >jE:E)C.V[jj0piLq@x}UHܗGPDM\$Dc0+oY^Q$F ƢjߧQyzs~Qܞ-fNfEѲ8C M׬ v֭GFGA1͘zwm }|Hlj%Gה /QZ ’<;0V}|<< J^ EL [Qer\TJ=&I[G9ZrLg>;f%?Kt?EƳCXZX:+n$5(m(Kyyf]3]L R~rrrF 96܀G]韴 \?ZzG@2:Xg!#h-JwdI_ZDh 7ymBZ0Pq&d3cC2ԽzNg7[/q2RG2`'@< DrD3E|zGd_U%,W >ےڟZ:"!XoP;jDƭY 0HZGҜ:Irĝ/w|Sx}xOZ`/%Ǽ=:DK`$*&WnAnK!Aʴ('!|YFDl eH&#Xj Z^*K:RmIMYKpuv(Cs|W)q|]weY S_ [f!s7D^F_[Ask ˀ7k:[/sv`Y)Ƶ$z:xܧmݚJ/f#qB04Hq;6a~9ϡH(SW#Ld'`XWE9sH(iU)MV?dpƓ؜a;H0 rJkyZ~Y_@ wLTgy,E!Tf,Is֬vnUtA *@H>ScS ^ 7:!j~UnU!&?EEOkSO3ij9+'ף _qn:t,/RIgԞ>)e>']C>uVCk p dP~@/F,dcy(: 5׃;r(# \ UZ `ߧ\`V$4GjOi\L c?\Ng=Vw%gb|)QIe77:zRI-SJu* >?t=^o^fd7ôG8p{D($6m)0(龗9#ɖϵ\0#'+藍!Z>Y Y)}Fm0j`n$5>^!B3/QWߒt6ls85%]T!IЎG DgwGm2{-À;MxUK[(6[M{sSż镱]Nx(Y0~.4_i,{6_1جq.IIQkǠLHu@L_" j_Pm9뻶k]94u6tM>>7Hcqxi)3Tf^5>.:2jUynPhxvL% Z>rvU6^S4!b$5Ffxq؟e& ͤYgD(rta6Wu%S6Ծ&4LU3s|^ߐU2e597S휟9X/.rqZt)^;Tx[G;N; o[\?7 m' ܕ(N5Hi5 E 읍Q6+d1]|NOguX+37GWD2"C%:oLfnqMqAFhϋMbDTSV|:* #vB]]k^z([a;iEyC[K|\ $D6=?9 7zo}Qа{,I`?j]Ɵ6ƪ,ێUb!4 ?7T #~9cyvZ>ͮݝߓn xGė#@n>_$t R,opU269^m؇]I$ Hg%<._Ǽbrl79Ύ8V,NIYnzg{6?@ȃ!rMяJÑ#}$mw2rRU:64$*$2 i$`j6=]3أfHu>U\+HEI$qS٦:̣[Gjy 0FНnءEdH66ȸcr˵9{f:]A3K5@" ㈥㑘`Um;Vj\;Y1}|9f .Q*o>[d aŽy^m붐ߣlY!$l3zf;dU;k5!Pk?]@Hr{4} A+iPEE sR` ?Q?~/s+Bypn%-Yjwcq:{?Hwg4k]zMtIx}\.!ʥz;ּR-miq/m7]ЪgԃF+?\sޠmvK+f#;]n<0)6O񥸈4 5E7T_B:+h"GAj Õ h %xl)Lo06_œ- {vr*sWL=6f%DtqvH ì-="ҿyO/f{o.mb!ʹJNFa͹挱dįt<枕O{!v$f1юWВWąiՕ&wrmG֘sU)o$qL N[#Cl93s/- 5WNFKoUCpBXgc'`eq!yʊ[9r)越!Yd;aB(]QsuSG`Q"YAt2Phd ӊ'U},0/1ZnywOt2n:Ү+5m|dH6"V1/ӃW?xfkpSZxdQԺ98UwӫlUIV Kg@wܯ6v<TAMd~ 팋[%Y`:|8J-C<5tD9-h"_##^)izKI.u?1efZ27xU+Pz*)J>LA`l;c ,٢RDɘEm/>1j >c!3w.j+W&*QUjH04l/5UA/dP,[D=K&una m =u9&ԉxt[ڷpK kMbN2Ynէ I7-cnc9$ɖ>ݛ[CX6=n,GEݙʵFuB˱bb-YWKh+Sgjjc`vJ&aziLOO~N}7}$?˄ k%qnFWOiHMnFa$J ?S4Nuiij\G%0X9 g3r\>L }_S}X*]4 cFM{{)ia~HgoKm2N=#ջT`l']EzPݴwIQ[|mDr0y3 &bR[31QNW0FN^;k&v;ې`DžِBo?%;S0/=ռԍD_(mtHi_L׎D6N+},!/}dJV=gE#-{7lZ{POׯ(&A(Cz^F-}_i`ÜDOjD;s `ZcɱR>,;RǶY#dX' l3@Uah:I~ɽzap&lM&oܝT}V (^%aVzԳY;pi1;`n\=)T_q_)8"i'Dui}A^i¿xi:1:UԾ<2D#^9Ky#;ZJn$Iǥ٤'VctpuU H&PA;RԹ*?O:I /uYg {\3ݴKuL}M`TεW%J`|AO|ջdO/A37I,#'*=GV[tbсVACuc!B쑣QyLwq֝93\YtbbDVGV1/f!D0u+sLl7{,}1.*˱fW/3?\cFķ3m>X Inps. Le\uZ*z=&*N=|mE,ǖg3L3]6/JSxӹGT4kFx1tyJ!~GO։mx %#Nv~*1]^;,6(e]R"yD3pD DKCGl+' 4$Rܪky;!*,ޝY{"HhA7fLcZW+ .׽Ωp %u*PδD[k.Qù@=pWOP3!eE<2@KI)n7AgAH%BJY_9",9* G!ҧvDfݕr28D\\'ۋUtF+vʵ eE poN>//V›܎M4h7=tjND$Pwx`b.ԙaf1QF2-\hW28É<~3wQ9j~nup/e١Ss4d``kPN1~ǬfXS|NmY. Gg+)6 M<<9IC92`IǫXa\\X%-~vO%Bn$]vԆC0k6C!Qg{+>ܓh]}_vč`DZ=9\s]?s2@:wJGje=y>qԷд3lb[ƮCX!?Z5CPRܵq[j1T&z^<5$AjϘ ڳk,NV{ Es!eTuC 2R(X3;Eݟ^!X$нp)x_5Ix5j_L7 c I7fDt;ЫPJ &+fMknAWnZ>e#+ڄ<\7͒g1@M}6lL|#t;b!hi+}`jqJFͻom)?b$n`"sgtEtnn(Y ?fM=NSFř2gTl8|iIO/-ڀ;^8mYaEv7Xy䒠gর DxĐ@brQAb?SY2C\7ۥ*8qJSe]LE W}2/ ڍx5Dшo.tU;S|lufv H^jYp%1y)`R`]_.1eCxL*8_zeBlSUGp۝_Iw^5/k):2O MǏZ@]K/ʪ?~~ϱ ߢ6(6'&kѕ_]?t`Ye=Ѽ\. 9헖v.5T sOl˃lupe'aJ+VCp t鋨n"{XF$ }o52+{ߛlƙJ&0t7V3~ߨ!n/7R(CYRJLT\j}SB&MpX.~r5  vBo]_b5RmUqɿ酴Jz[DNcx8WCԮd\Q4wZOwߩɺt+ rg~C?HQ~3ru|<[`]xeS1βIm)ކ;O0QP\ϙy*@1$5[9G{m_l-:G 'lr,,w\-SݴsoSܳhcKW^#&%,)qZsrfz%?,v1#J']WJ%n $03QOr~c,hx?^ қu@^5"Eqvdr]Mb|Q2Va$ @7=̕Sn2Q ,pYk{̼3Cν6p(uVԷVGt:%{SŷG;C/{s9"帬!mx7kB295NOׄbi]Kej"5]@V^Sh[w $Qi/*:oX*#bY_T13X%*wn.j!7!e5g "Y5gEZDf"6ਰ:Ձ3PN'"2[5,Ǎ?>(]JDK~Қ)Q媛g|]~pGE,jh BUZuOe]gpzxlj!&-jNx*uԦ:9*BL}NknbGPempf.c~>W'd3iToFV Cmؤ|><[紧ID'fzxc+9M!IwYy߅xWsU3lypC7٦\JK,>|HoAp t\%H!xt ēRFX ȠoY͚MfͱVM#įXtIs*EJkEy:-Η s43rD9ҶƏ-5~g,DrHY34OZVJ6sKAKEm HH脾bjiw Eye'Bj|>u &QE:% ` ˨4cTW1gqf#I.&c|ۆH] ! hS.E׋Zt5b%:>:.BAC'ntG9Q܎e ;^$+4ZahDI>莍۩%P^0# /TRgDtFnQ){Yi=c(NMQ}̢_X~zC+1B:l&$NU8L8sK~X|K۾p6HA(`+442tL$bYf u[(uEƘP/pa OVƐ"gBi\mytg8(I)ypw$N|O=y6c=k1K0cg\ $Ù3ECm ipOT&a~4f!K6.)/qr yY$b Im^%q߃P; GC"L6 RژYE?-FoAD?&&fθ+feT-K$F>/(l|H;#ujCM_i]e@kL^6 >(.Srv%JX6BVб9$ yv ]]g (.r(d}eQՔ#B+ɛ{F%Qs*TTq*OB-?p]#vG.5+;?E:3'Uf}%㙣xzFݥ;!)xrIfK*.e[kmm>!X RhR 2I/s 7Ўhaа2̀.mڳ }(e5 4Md{)OܸwM$-cwsPɝΑ90d_ysVH q_}}/$Vb7`2F?WRTE-xK_֠W'zp)Sؑ 9']-"FLq)kGsmnk.b!|ꊺjK_;W W'Su[+-;D$.RQq=X FdX"kY=h&(=3.$@"<}9N6,Дrn3av9[%XXT<˿p\̣[Z@( T*KWA!:V}i%5/=o W6/>^{νNo @WB*n|.>XQ~4LJ3\ޟU~AqZ-.4}i`P\n+ѭ-`rLDk"rqS濔GV!䶨N`-(~JIQ<*{&5x] yr6NS_fOrzז|BbũT2)LESK+L_?H\$9$7۝tӔ/Hĵ:%O5qJDH{}Ǚ\x yGU0B0 Ny4qt)΍11 a']ȴ{.Y!atfZ?ڐaXl3*+ŌtK_x:̦|Im> fmbȷtkgtM˜b{e_9lwk?C7} slV6[y#c<:JK7vYTM`Nws2Ύ٬?'[Hם+>3{ !|b9TrZ5m;/'.rfP? \zĂ؃#6BJU Pdս hpVG(R;|kgdv^sι"[s껋fB?mYנS$y 4k4 F 0V/2F Y9vl4pU`' ^a oL7j_B/oq[<¼$I$yi*K u^D8{rxq |W;G>FT?\$!%=Ct7+5|~PV**_f~K-\ƾdbg(}u$,ƝY%fI$c`ElQq!!;N#tb 09d^;?M,Wg)s(V >Q5{9#Û@=zy/yS*T5gў#˟{J,EǺN˜NS^0Q [@D`21FxZ6|/$afI T߈&wpB/~̅}>uLkU0 ɘct4¸zJ*zָ8 AvWbZdjsujW<{$ruY9ñ4]caD$,4Ok {U\kU$KHCz&1%du lLOp꫶=R3-8%MJomK-(oxHjj]m̰il7(QSH<BG&M%B]\A&ҧT6@ N" /vxRZLbSA}g1uBi )gBXc3qt: 6k}_Q&e!Ěvo*s'W.7ԈArb,3_\O7/u4Z×V38!^NHX*:sb`_Dp]$ ֞7iՔԟTd©*9Eٴf|?F#CGho;CPE+o|N(pG-Lh%ŽMXxa$ e/'epa@yũ*yH\ ň9ZPmSIJ%atgZi +Vnz@Ϩuafu9i7Ïۑ*&o96d0TxvZL!*"@P` )E0GG.vJUr`d^  ՞ԒOL CȗaѨ+{_l*]:sЎdo5Z{b2 ĊW Rc2igRӈ dg";}ݽLs 1>9[ rp/U tLaګYXb8x96#ll9Ye"F6H{tE8/Ec a IJ0Vwi ߺd 0}cy3@%!=kGSebƵ dۉ}]2}6!L=:,jWns-Ͽ\gs"8s[|=+_I~$ B-Ozbޝ+Stdcpdn$-&)40d[ W,K_֎Ke}i]K ý"ɣyNLYR[?>k3Lj VW(4/Sx0lK@PZcO!]Pה-Z>.+P,g\0rbO|ݖzzvdں+?"x{ģ"џJg¹nxϳ@L݌bB8CEUtJ8z 0k yYٴHnN*] 8YI||i=u2K(쎭l9kӁm1U4p!H𭗈jnz .5m@8DӘ3=|BX>퉨Z_n|D/uig>+pz%hJ$}6_'DzX=qѝY=5bwνYMz1]kmyY\rhwiB}a(x1d݋]xŞ :YZhlٳ5B~< ׌=1ԵR=6-ME>P{aE{K3ȵ6wcW[Xa@*3eE .\%CE~ ڃ`fz~e`ȼ0HD%?uiā6 ;]3ˀz #.r> q&"g;{SׂhXUEeh;V G^Hx7yr3ഖ\۬qD%Om2׷^@Y:jlxW;(B "3!,-5IJ.P$]_Y~UqjiDx : "}+sdѶ[ m.[BzfKOT@;\CQdvm)|%rܩG$dAx⾢Zxe&YKS9 9=Eӕ9Nz]Idvc'r?@M;8 '?ezb,Z2E ޝU-1"p2^BJ#NnfQJ> stream xڌT[ ҍԖn l` %-ҍt -"w{yq` s9Ykz$f` vwebcfH(ijXY9YYّ4ɑ@.`{?,$A@WL 1TrȻ8ll<vVV:8$`s3@L% rߟZ3:_bv gtA"mf`\ Z:xxx0\-`W+:2J 32@ B @`3 䈛9АS86VۀOqll/G`^`{KPVdvtem] @-bu @ZL dO~.f`GWfY~Y\d$d?͵wۛ[J͑= $' D[f rpr@N˯^lĐ|4@~`  puv/Bfc\ K=o1o 3 ?6믟2LoZ̢%'O*<>L&v_/pß _?KCoe4߀ u/#i7[ۿv`[, %~_Sm2_+!b" ]ͬlRupoLlGY93ȝi_*dQsq@/dV|sq| ;jk,#Hv~ g_-,E7HF|+E7bF߈"qX#E7pQ \#/oAF.o7p \#E_AEs@;G.&f`g37l(\Đqn/'}B"F@3[9@c 4ق,\s#{{>Pf".E3[/ZߕOΐ{wm OP_z'75?z(5+B@,,vp3,w׷OH: ) Bf$!uKCGFGw(./{nvu?(A/ߤ!>8Ias#o!O d!r%;1'n$cq/r7/+w G_vll4 R \@v+/8q<&,ﰐǨAjIAbbgc c!N=^@HSsx9?3}@^>A Oʢ@uCHmޔ՞vϊs:{ڬMbG1whEW}Nښۓ:}g:gNI4E}|m`۠{xU ^z x6VM-r+4Go=F&K/!% 5,a JF@HY{& 'K 2*%F#H7 Jq^>_V^\\+5L{[l#!o㮷oH>;(_YgS|>u:wCGF(z(j4%R-_)A(5foOgzi lKL[Ȭp`#xrG+o)DkDg;O'n+ͱ(,NZO"_e߶jG*_Dr鲬5 &AIMOQȡs.@ޅO rhP֯΢TOW(o4|7/1WU,t]?A1iŰ?mBoOoks6!~8PZR?a*^9qGO͞EkfǩqY1FǷCqsJ-sv x58§h{/-|X%{}E+r Yj|goK^|S˲aN1CRph'=jk%IvSjB(G^X1(&غҽ*z$@F|8L>G!6gzPWZjɭkq-^\K~ /(}4 ={o>'KI^n+GhAx] V() ]ciB] f8l1rY}^ hQI{J,,OzTHii|=*45@4g٧zHob^K=+ɅG9Yyy_3+#KHFVCҘXabY8 &:r;2u bF\|Wbg_DO(ևEKiiaáe*P '4/^`3dÖPc"tֱuWnUkȄ} ]  p.VԖ2#ҡO :(AłN M[i% %Pg8O*x2tߖz4"؋[i`)5߶17pbL PI;l7 s 6I2\ }gy4o ÌpO?Еcx;#@6嫏ثj·q?BL_,l(2Ol=J:b^|:?x|/#sRyHsd"-{(c3oX Cq2bM5Z@7kߧ@I7(/]刭"HYajBq r m` 6s\p9~osZ~_E|F$8~fҀ4bL&#Ғu(KӭGn*}Yi7h+6nHs""QgӧV3-:_m9CN5$8[G|:=IU.|qK[2q td *eGT%ҫmDBTC[>4݁ X\F#o%u'Q't }xA55ݧ57.|j/deNꩍeLb~L}L~R#@k÷6FfΙ5-aڮG>W&iKnه+6P~g0eyOQӗy6U (p*=]j6WAf\ʕR*nRm!T6toN!Ȇ'RiD%`iZ:6 \禮ZAK[ \ B{ ȎE#d]qY.ۣ&l7-w&?G-cpھIYc"C9oۋy͂(kG~svm\MFvM+"o¶sf6CPȬoK&v_iFWP1CnRK5?(!y:L]^`lу ub[ۉz?{ٗ K- #ʕ4lߴsS9"b4柁eUtNDĩ~DGW0 ::ZC|jvunϐYEQ)sc!NQaKj~|*wRzr% x4mk>e9! &ȟ}*4#5_I͇<w²~ l~$ϟ2 $BF8e`v(@s]6dT!8Mۻ>.^/q;"fॺ2oUzT%=sz[38ӗ֣80]nƃĬ=v`Y7ߪ}jt.@F#c[duŷt:ؓ|1Yrnjٙd E;g8ߏ< e~R_;?5 ~1hjT=7 Pjbt]tbqn0N\ 'wG#)|J*-QPB`wF#mZKO`Z5֤~jsk9IqDzLhmqв} n'@Tgs;\my~3 vd*coFDzÁs#>8wwJ?ݲKsjOl10Qg;fn]3}٭t?Yoě^ C22S7 C yiksXLb)P;Ӽp+l[2"mz=ѡHcƣ`~{bo;FH=&?wACx+L}r5q>l#mabiz5* 2(Ӱwp: ;\X7 d4hh{ L-3ۊ~S3."Ԅc6wY R'z6Qad?Łh1Sw‹/f lkTṾIa\ڽg=vf̊RjtP5xO}u9mp].h(2]3yB6'vy--}OLh&g|D`Je>o#c+!~eZMɋ6O"A}gnwy'F.FJ>[pfa&xg7w\W)N]֐81 gƎKw]b}T&lk1OSy m0{b2d8Fy"2wʊߩd呋Qfޜn[Jȗ/P@Ig]68iq<sҜT;֒ 8 kh9ԩ^k3bN5W6[i7hwٙUJ:QuXio02[T$s'E!K,7œI>Yt[n 79[K'++.u8n"g9A:k.' T3iwjpCgcKS/OHZz av=I "5UG7v82KtA%YkfFb2_76?z|x'@klȒڌt<:N#coη`,L뇢d ~>c%?r)/VbeK7~֧'/4,~SK8]U3҃kSA[ԯX36/|AyN \M֤fw heb¿ywL"%0񨎢T:34$gylB g}Y:6 Sr_#ߛgi =V?(G;X;pVԟMa#wNkE9ݫUW *1xVgwAWAdUٕuS7]gy( ѥԯڙUTG.Q$U>41ՆOng[} (RAvP}̊Cv;:^|V^ _A9dK|/C0T́<2|NOEpC +`7>Co>*?c(^GJ$Jj=gݐDrCps<@{c]s^^'+D0+Ժz-% ՄeFԫ ER3ot}FrvԞUGNk* ܲ6To"`ٴg9_R^fG<"K>Zk ݛ ETUI['Pg±DJWO.=O*Zޒ)s+A\*6D;hByI-FMĐi%8?We橡3]`;G1mUewSR lYF+ه|oO9MX=9%2fxZ2#[v N̄o>. 9,!œ:s5%7ZTU|Ϣh@Ncwe><- zą[dI~&ݙn \cLP 'C!f6|4'%&#tDdeߦg8ZLK_%>qd=?#|M"5)^ʙlƖb})U4Y!uo uO[{'LmhTME,( R b^];8fWEFq咭jm Wx*rJe SN+qNdfsűpҡ>N1vO=Z=EbT3)@Y\jR%TьΪ/T|c8Ya Oy01N]㋜yn39z|vjVMkj;'BdZ (Fte[?Drdл\mJ- [A™CEG}tw2WO BHəҶrAIV|zf"3r9`kǻ*"h,J;/}6v ˺fm96U{tH?\F;;, h3KC0ZacN%[Ul7.8/56H6O@IKmg~UEt@" ]7[N*chvyR1WL)lX7B% k+4]DŽ{c(+*2afUp!s~"(k׸bOfamC`<FXQsZII=RSz bmKJ` :%vRsKv>ef4w*:2~Zc`!ҁ5ᴥ af VPm-uS{&o|E%_ 0(j+w*DVc5^yY{GX? dE`?mrzpQ:V }BX匕ybRQjK&Ԭ 39>b^.Di(P;Z`KDC\9ZsL=IW]~/%+Q;BX(W/K .uo^!AySN;ǜ -AF6{ j2Uq{=8_---a l%⡆10B*MF*Qc%&#>*@#gDBdV_=^0J x)G]S\񆞷'Fy)v$ u,q]5o.sRe킽]Ysw)hfJ]@$wfҗy H C%:DmErPx(ZNDLYR4_zFiWAch˭C],BzK&QuXE;7×C4l=s5T]$!$ENpʒXe=ۑ "DIVIr n p9Y8 ~(MC(Swl!Rj+t(:o%V+%}u/P>+bP09s$:^ìXeĞ_<4&ދ}@&LJ( ϶v[#1|`ɣݩ aRSO-}sq"@+:p$6)\ƲW k[-"Ҡ::P~DY>dɎLN2NwiK 2$~!J:@abIжmɳa`},^^5a`5d3$R )ژOzw``3-IjNeJB29 2ru &s*x[C՛7e kNfIr6&R3` mA7eӌgg퐩"2,.$e. 0C(󒿜.(vZkxiS25bh[?J>v*e 7jR丢#Q[ z5na@E3 ;h"9ݛeޢFxmJׄG9pV;;Q$bĵ[O{JOunK[C@K ԓderz|6فp}YTvn!Mѣ _z%`G{-Gt4]Ïpn7E>'&할}R}焜!Y"ҧf$wg@VPӒlڤ+טU::A .==p9,^':l-ѓ;;z vWLN+3b}f<~rM-%H#xi-8izlA&P7,|BII_1F~^9O˂@ӻ!ݝ@n]ŷfpto=T|HgpcަF=l[j{7d3g Dlަa9O Ugj|=GՈXǗJRQ% y˕ޟ_rSԘMp4sdɾ h~IR2/M<7vp22\M1q>RW%(^&D/DrWB=C$P&YJӶjWb¤6%HD4$@BRU٬.+k..Zq 5'"&ʋm.>vf˾/`J,\vG?>%y:н֞:[~jxH?+G'Z77AR$VStbGu"z(p/ԸwDa;yOR(FO5ME>p9DTѴQo(5~{-OΖyE B@މ6aepG&B|[35t%}_'1Xz\B7WOزorX2ay~|h`g}P_屌7w|n7)0Qpє>YG #;8VU9֖꟏E3?Ys}e ٷt )Wk^aD rfa$\,N2/ ͚$y8L@3C̄wd>_d98~`IbA&1}Ͷsl^/fاX5o"xq)(җ*@=_CG"D&d_ѽ`z ޹h3RKn[VrU EMSȲs<8{Kr=6sapT8\{]`LKWuB[HI]cRRWoP5&N}5aj3; Se,+d'WzI JKSBT 'Zm0>٦nK?ئzū w\g.v\2Rb2 te{NǏCx[[^>݂I8& Ru̙taք59:DGeܪ=q^m:GfK3.Z2 7 Z'hr cl&V81G2u\ 1#FvJ-VX!84%ئ(%u \轒%n Z^2_v^9o{K"x3FgrCR=u%|\ACBLlQxk?י9Hhh8[tkwpsT3+!.9V`S+«]9dΩx{򰙶{:?Nk `:"f٠nLj:CnDD\D]{ }f!2c6(\Rҥn|o SFި5=; ES)Lk'2 D= /oO=<#gKqdc%ދUb7܌(` ˂E'|IM!͑ //Mqr3tg5S\9ս5+&+} z Mw${o8g?442XoI)Tv$,w 7.̯Nˑ3륫6(K*1i*ut)ml(EuPc4I+I6N% vX w! >2ci4-Ԙ]y~iE50Hbk.{⃾A\1`Z`,Cv3}8|qr+zҜXyS̘pl ё8sigTBEs:!7K{3S#8.u1!TzW@նE.FؕW,i#K%S(]+s޴R7kgP|7jJ2+7/UIL}-ȫ3&WQ$ZdyeIc]E٭\%R5jM5ǪJǣlCmnD'G9h/#uH_? K{GAO |g0$$hE:>1GFt>P{_SEޟ =y,@T+_kx¿,O8O5uFJiQ:Y7Tn/[؊-n|b TKMJ[!% zV7jLĒNM^@y. )YFг)}JO7OeD+cZ #aSaJU@ľ DD/ Z9eɑ'ssrc/LFڨabB$ƀ a4gE!&d,ڼ2KeG6Q_= )@8g!JsPlH^jm_$p梂x⦰T-%5 8~7mwA c\h'Ja!k%a ,5O3c(eL(~Y`Q"@Nr Ns#^o&&I$+Ӥsi[G,-AJͤd`\[ c[_e?Nd]"/Y)Cm,A"Y  E~tiYS~`.>)mygD%S%DnNo 8[RqxN :fNP׮̓ˆ0w`kwǁΩO8<$l&#`|/Ĝ ^*3NdM0nW[Aaۍ |R@Q$S_pJ5 GjՇR("i+sځx ]ɲٳ`c3 T +q5!g&s1ت$MV(Qpk*ykB8?7n*^ܓDn0#_As~OMe&_UQ!e\ WElh̖I5id]>C #/C=ة5Nq1H7Yk' 7{Qu [ːPCjX/Oc=lЙۑWG嫼Iq.{0Uц}yi O,""b[t*"Z{#9Ђ)-kU CkxY8t^s@ãDan m != 0<|kg 9.̕]*%֔)h&0.~{p0l)Ieu]t_ wYi}+[߾vtle+^̼yt,Qۧ1uiM R/qwL"&ȿ$o'MY[8 N\Db 6|X K5Kuba'b~z,*ȩD;rK!'>s3sE'Ѷd0$5my.{85Rix2iub4>D֛p%KsM") )Ƕ;4n@6~UpTm- ٴ^"iֹs7rb<=^>ؕ`wzSrH+ݧeȇ1Me]H\\/J #,5t3aE;fո{WhcB"{E݉K@pfJIe\f^bLOE33c`lܶwC!_Ewcd=nì 0Lx,55_F)dBQvT~.'X\uぜg'fQgg$}ၮl^99>?/c#௡89ވmjnK$ lf>:tŝEuy嶇/8Q~`:/sFӮˇKK>233֠`fbf Zm)-0e˯~߳ JX~yHޤD@ 5Tմ"B vаm!zv-EE-^V'a@0zb]V'R_#汃h`ˇ.YþQ{y&+BqoRbjmc}h `Cvԯ\[N6Q:<* MX=D"`"D zFC Ej$;-΄ăm]L)Ӿ5)S+HW K\>ǒ֖5n)۞?ԈPg[7hBݤ% _ymtWx$|+C{>:L%Mj`ZN3ya0( $Tvy=.2%zakKNv7CjPmf55}u+SIé'dӱS67 4 C& :!ŰO bȟcITWKNxN}okV|dΗ4K(iWg")\C0"%n|Hnذ@HX3!)?;8QOkh#75JͧP"L+2kL\rƋc&n9ݥH.!bijG"YaVi F!W 3=?T?N {lX]*Փrsnk300G{'U-PlT>)ReK?OclMPkK 3=vעj` ^|(VXeUS-gQ<Хt,nÓQ}.zhjtfWߴ-OS.Rv|O[ 7uFD:]#L kq䇡j!*ecخ 6Bet3?&* )@KUP[AA<<ѓ˟*jrew'130gS l©E*ɒ:S9y@]@!{y{OJEM_yIzULS:t((nds):z(w3vs846T̳\dXs5QU ͭeRP%1 _p4} NXTd&b5nym\1PBʺB %wuUAD[x` ([3.!PM.AUpŃ9Կr$$y_SUNH%bceİ΅?jzmH;qϕ").|$H3S.0;Ξ>vU⩢ll0$ƻ?[&ڂyGOnMܠa[Ilf bd8;aǍ!F 1IT0Z cP;k^Ji{-ثHD,!$j# ΥkC6w7Ҿy# 8>!ϚE䆷UftqYc4uDνKiiF!  u:'oHJʓD]Ҭ*_.sٸug]"3T1~'1iɭDTӅGsĀ~u=0uģ%ٿ]tKΞzW}:Or ^WP‘V+@WC%dVH.~W]+F4/45S:Yq >\=]VխƵ!DClLAAMR. =H :`$S+oN@DfO*HṡA%l}»Sw̕r|{l^`*tT}%Ӷyw]|Eܠw9y]hܬ7ڑ%lϐ~vW RM{f)r;v7]5\܇&I_Sl{{1-P~40ԯt 5=70.B <["QLzMi80(FX:D[Fd*H?v*+8^m̼kI#ۂD/ endstream endobj 2176 0 obj << /Length1 1492 /Length2 1677 /Length3 0 /Length 2624 /Filter /FlateDecode >> stream xڍT 8TiWmZQe{kѸ-uK(l{̜1'333f$miJvTR..JJR6T̠y癙/t`a-p 3Ƥh q"Ó8x  3CbsĄO ЙncG_bGf;vB8<11a4Dɿ6t[%p(q `Q ?F`q')F8([* '8"("HU!8cE$E.{N 7Ťh䉋G"FH 2C@X8,4[&yTEh!40!6F "\!ň(q oç'8[ p%}N0wLGd{!?:)> `(?rT5Ak'(0:9a2cI fXi'+Q_1ŀ8&iDM<4 f??fMc_{!M,Sw&v! ,~A$ϭbG4""9S*fr Dv>¾Q7N}f#VA)"bXJLlԧ]Q6Q@8Eh N() !` NR P!AΖF%N'C  P//|EwP|G!5RaN_ ~<[^+E0<+lv4aɄ7ŎR˞FfP\-ǫ_2o9VM鈠oL{r:7bce#D, weUUL>wTj:"rPIE߿TS46LV[Ԅ98޸a$rh|Эo8aNAӧ•COg<[c3h5~T;/L#ɷ ~/YW_d#]>鄟+t9e2xyl{٪^@jo`[oraݽm?Wyf4S'׫6Y,]P^EѸWr G :IC=r~ކGBN9Kvԅtia4aRYH0Ž/߷,/h%wrk@B7ىOf^|֙-:/x _#Qkc>N_HV7م'/ZъX<Tr[^Rwxkrӵm}n0#'"_xiyIgsKG 'S넵B\qMi ]/B9};ђ*ݽ[}vc[Wݻ ̙j݉\u@z0LeWMjj+z' {U.guEs^ꞯ#K'VXFwPy.O<`~{׳۽Tuμ-eo/HQm)9z -t^rޚ˳^'뀞+ =#NVo),N^,/\mxDer#m7EGH83>6zp?~fC}'i5 n1.H {O-6\7WmC+^vyC+hkndU}TeY_w[iv8uacjA_QMZCyqud.rg]AX?Ô~z1A!U Cbsg]1;<J>QkQ|R]zN3='5W],]3sʌb|WI_Dy Aer."} 4 ͳr4'*C+ߘgKFkΉ3gMJkcv|mRMZV{@fϴ7G^]V;k!/ e+і=بjFc[Ck\Sypkluu|͆.vAƬQ5I4b OcqX>$F2-kRV E^CΥ  48sg0{Y-uZL9 sNѮo-o-i?S/ײ!ehS AJ)v@ja,05މz{k6y endstream endobj 2178 0 obj << /Length1 2267 /Length2 14218 /Length3 0 /Length 15552 /Filter /FlateDecode >> stream xڍP`pwww][Bp. :j]tjyrbezA;#- , `bbe`bb#'WYÑ,ly0vd"7;Y;[5`ab#@ : ٻ;Z@eL `8@halh 5m"Z- qAg022819}ZJ@' a f ps v WCG M`ma uz;lkt(K큶c@6f_,l>lhllgcohnak0d@n :_Nvo ] -  &0|#/='cG {_rVeQ[a;- D,oewgVvS [ӿH83Z88%E5yAv&&&.Vft36g˽=o7ޞv7@o S rtz{_ 00fp;ZfOoebgk2J* ˉ:!!;7'=x ۟o ߅o9I~;߄ĜVSQXXk6Π{[ kge&6W+ 2|[A[3I h`26{\ӄ7@;'4zf&{6c[Vߖ#ۙu,CGGCw8bagx2 02ځގyLj(;Q/?(q#.o `/d0FF߈(oO7z'œqS"(Fo#6oV7ziqYFo> -,-m~<1:!xh 4!fWϦ[Elo^6kZMoUߊb|m{oJ..10e|+ooX5o 3-W?[:ڿSS&6[%ַ쁎oo\ȆLߨ}?wl$/[\o|]?[7ecg7~_ou y,j]gȷӨ=۝kozPV7E=C[[㕦['O 6~WzvRz )E̅P~'_22S! T>M_:Ko=CDOCv<{}3;J$O }Z쩵s?Rũ W 5^gYIB5آmw c11 Eg@: :m܎U$B1*]a]&L}n0` _BAN[f\j_t4ǪCsS`;~t@IvgwĽ+ O'2L_jUMqNt|-Yjcq(MՓ;qkahVb4.bTeoF"}i6.Q5>ďrYx_gsVoڵGI#gBfҦ/acfd͏feX V1[س*1:H&9)v[hAiqE;um,e~p:n qף#t}n[R'6o", & kin0kx NQR_f}Kc،TWEŭB}{bw8\Z{z .p~M%[,dW |qLϤ$o^VxY#E+Y9΁ -dWPTR8OC~@3=3IQ )I*-אiHVy.#ͺyfKiAh⳾֘[q%Yw"aE6ְH_(9'o3U R=S"M=IK]~h9i퐨>V=_h} ؇dz4MW:@SHy-hp 2hO,Á _8ϱo, ~ib,ᙅrGV!,܍pkLPm1}ŽFJA1664cN?kMk57vwY6}I|lB(Y^)waEn/ >G3u"j:Nʟx_x+')cS/Z? ]]K"~%! `dY?Vfs?R~ xc 酗?ǚv/OvJ@x  Wz<Ø^ zPw/\ [?1 F;c:Ԉ+9"Ʌ]XG'r##_,0 cRG% }uXj/\i L{x?rP:%Dc[:E.W|iQ-]DaZ*BD␮RУ'^;@ю"]yn|`>@&v-* e.~@ً𴯌M‡ $JL(`= sCnHag<˿c+ܑ֬+/oy 2j]WdOqj7K>$i;Q+IbYhzzܠ"'(^%2>˾!̱L+G(>}6C3V2I5kٽϥC,BwҮq3(IoITt%qdaY/;FrW3}pʀ\a@QI2҉l4 NOZBj*dx"YYWeGGsgw<6Kkv YXLL=vKϕ _~i˦G- u7(؜,v2KXr0dH`l&MQQPT$ G͵M b9) ZSF8X_L0#80m2 癇輿] EٞQ|`${DtptJ"y^(!~ 㜙 d~uL\e~hx^H(lDk< \EԮHק }Dlչ/?\Jܧo8$)zk@1/xvw9kR< t#A\w )Բn\kɫ'Z츸A HKZ렰8r9 4w#ӄ.xaVOOA# eZ+c!xг*="G,5ii'RLoz * Kxt(#FOn4x}razn^kMT31몍e4d$ I11NԨ i[ O@^zr-{iVq3D_|y CU9d&s] M%W8xM׭ [DKpYڞ $ƕo*!S2:E9Ky}.ǚ#XLX7kdmj͖ϔUeЧOzg`GlItU%wͺ[C+~nߕ>4^<0Q68a6ρPAq58{=Ȏp>|dPg5,_].н F4O󖵶 )e}lWvP{kدH&GN4nkYrmUя2n; %\i"^R2hBC󂾵-zT$kfHާm`S4*ic7亮MQDk3HDnuOOYxyP=kVa[&[7'c~ SRbe Π.U٢84M_ GS>x[[}4' թ SrkVn׻F}w kGg`~+;=_ jH#{ ) @0C@S >.${Oݙ4Td4]{9UGX;PR6O>IVeB߻U TڢC\yнx(mu-AC0?n@sù?Y?6- 1y숇T¢y8: cN~Dq'm* D9b9R]L@ 2-Vrw2L] /$2]"nRD%Zؔ r-BXdt٧s327[M6 L6j0(۰)a* BY7m"1L6Nܟr23bwll% 6Pm3ZpW N RN,MmGUWңzs2 AMQ};`.+ k DL\ݔ k^:ڑJ\8ѮRg^bWEtmp(BKNg 2lu(g[dwϥS~Ɂ%4Mf'QnM#L1W09[CT݌| d{H(eBC6NBɌ6,}vm&۞=y\uYkJuн9aԓ$h Hq_c >^i9m2$V{8c (~a6醾Ml5-}5. {;;bd ~vD7/Buϵlʹ'DV" Eng"Y<2L:_ĤTo2_0<t1 xt >4L*x CP@[ ^[qL# B!iLD'_4UȚn*PRMz\=Lb>&x׵PX nu1揯DK&st:)U0+^3jNDɒdLC}lDfWϭu%tE.͟껥kȍ7ѥG_% 4W_Eҧ71@at`f: uqr` F;(C528P'+WK0n{;ԻOZr6ª!Oɼ~]Ɛzm`âds*]gFiA1xX󪒑^1ElIyHhgM +"m].'>9432XرvDBC-o/)D Nevrg0{(.-Z( "֬ [9}:;E6U-`atzrm _[MJ5_pLԯ!2YS *VZc]u5V뜁 ]FVدgl݅Cc2ꂰjJY))P {ǝm~8w(=jヹ+T9O%:?FQ/_ZB94}Q]@qޘiB.{+]Q^0%9~E <m*vgF 1%i}OF'}GUzZf[Df.ܧ5 dy%#1ߌF^gPk[*c;cuW˖4@[F`D6sTkÆ6JH&{-wď1c fg٣׈DeB &VFx0mhT皱EY:7$ft~CQNyY/w AyWDުVD+#|AfnC 29"YPFV[.N_b=̥tiJJ), tL Hqi~wv?HXtH3 ]Q /pUMn~`+sCf]ʀWYY}Z->Ϸ 4@GMS !Kv_IӦ`zY.=I jt*;go]$QubEOҶY]--}-}]dŨzju7b.F;Ɏ?9jmvSMj‰(؅29DģRmC+8}c~\=nƯҗ@([]AZ؄;1 ax3SP9W4vhQMv)ƖTytIp=օHʕg~vߥԺ.L օŹ>S+THۦF_<nD~* AyAVmk7h鄹 = `oUU9Ȕ2>V)[=+ޫA}ia,$mX~>1Fex(,Ca>%Q NPcƟ,!;hyX5XØO&vK#G,z2BJl:YdjFetE6hL+ǮpVW,M\{!T_Q1#ȤD̊j8x8cbOP+y՘YBd1./$\Yh",.U;6_>-ED4-*K> h;'6iZQx *լ Xȩ lr{?̵>KbD< DhQ t8d艷\s% p#r., Cf8¶L i| hhr;-d+u.*vo[HG:f "@MeqDVB;*Q*"U3 f7W磣&Տ[uIK[Y#'wcSdj?2W#hڟ4=myLJ H!eB7׆h9>X)|r%M(߁t뤅ְ5TItp^bjkO9h΍_YpzgZIRg9lVrn9AϱUFˎXߊű^2#D4{(ArwKWcUk_X$_6sJqHUp;ڛ~LyjDL!;g&Iwb.V+̲l?8 /ږ ձBV͞S96MMt9&#`asj(2}uN 20t8Ujm c[򘣖v|ڮ׾*VpQ4$T嫰=ږ fHl{<ȉ\COX3n|I_%3%_E^9ʔ)c za-ȃڗKTsr#5ˮ"yp}߀~qw]}R [k'8N28J14t UjͼqIEªfQ4hzyӀ5:US}O.%)^fQISҭe+Ue·@$C{D0)iU1Au#:I%˯-(AƩ֎A $U@0sU;c!bDvqVn v*R9wǡlrHD &v?rb~ŏ7maKڵn/8=t O#q- UBs:2\MϢSālz(OWfSC~D㬹OnMPApAS^)NGv_Vǚ]&KRFVyc8{*1_&Oo[!iRw/*˖9ȵ |_R0eL\lb+a Fޑ)aJK+dhLwDt!3c¡ Rs9L/^(߅en +2vshfB EzƼ o׻ikq TxӐTe,ͭ6NKg6^EQCj{sӰhG;Z (w1|^mE."Ys~Lf1 ܂dctudҪt/@|$вR'wD~ܦ/Й ]a|!V>_22/ъXSq'EcR [H5uiTuv3k2iw3u}3h =1! T;#ksR3 |]MK>\Pp F'ORg9lx'BJXpH>]E >.YU9^d rNҔs93]Q$Y+`IbDebhU XXc0ڐmҕFޣ +w 9 ÍK* }GE/r<ڃĀQŶeGAO-< [|U✮<~UI"96 0tՌhEԯ<AX6\Q*TT'Sb%ϧ1xjiޮVKhi`|S=r2` ʙx 8-uў\U˄9G2$%L #O_J]fZ?(l>ovqFٮ aFj'-tٷVdz,p+G6]k.9uW؏46WA#"o~4XӓBiM1,^WY6 ~Uu*«`SLL-׉KUb/_uHJzՈT|SA7CTD򯆙M0_UBr~jh=K5NvK>zWn!1"HE!ĵ4{-0hFa#W@R/%1BiJ+ʪ|MtdeB "6'KrzTڕv<jZSx)Aj rOX9vI:"17`W޿p ?xXAP{a4dL NzVXpO\zbL6BnVN_+3oE lzAFL3aRKȕRv)1E9mpnxEB|`_# n"!aMY&d)ABT6lvzB[T~8.gp}GO"H}4. !˄V@s4+2-O`<8O Sخ,.觍YVsj-tƃ4RC쯯5CA/5Gtg7¬JzR 6yL:cgGi'/'4!,tR:OL Y)ӬA@&~ѝt'$Zn|vaʜ$&v92alD{\l*nNFziXXyI4xAb' O/X)+8XIGߍFyu~RK-< |" ޥEV{VV;&aR||jpYH F@#ckCc')KP- jC࣮bWR lD>eaT$QMɐ`4x= e's] 5WigcW+c} YdTձ]r4zDy̖ן.yo_mz7*qG|modi򗄸 A6=Wƃ[(r--חmXq|"[E,R.? 臼hyHtb24 gN!t;}P 3iIsMF2wTA`I.{W +vgJٔ5 V4&=4r!{9 xhɃԯ<]0/b`;ri73<)tkXl^j[&B@|XH1U)/\޻^P-PjHQ~ zE~^44J+riTfRKװJV XSC$0:5">s+z-pshEw %& m<?ҭF< a9OVI{Ҋ J%jkHrc[{}K>]A%'@mvBWx7oXh h Wph׳bpyC:sIbccz‡uDKdNOuӿi~ᕄ?ubJbQxGˍr?'TAExatB4 >\B3&Y-Lʅtp@J7UaTנu`a"{>fT蘙f일_UI bY٧JmӒ~zվAzulZlzcXf7vaPi pxET t 7Î8mB[ɉG%u< n~a|<QPG i32H6E_PpX|˄ ߺs4XV*)CMxKBmōcj.g " nڼQ̘t ګԁ[PN9ag\#H|!A>>3D=<Ɲ:oޯ$6pk@R(!P|bHFg:H+p{ yA5  tHJN3Bi(X5 ·f333j90k#FIjJL^(Jj) 8j#ka9xcpUdՙL}TrRL@Q/K[=Y(U=GW[s8pE4׈k!{ې;gV`Pȣ`F%?ܮt3*{!Y\E9O*#iHZW0VAYC,nOnGz=b2`$MZN=. HY dtqnun[#|OtA | TJwǭo!#>/c}AqazJg!GS~Ei|M1i/␛ Skt*4P&1`h,áZ$v3;QB̻ߌ SvUZS3gm_2$\TE&j%a! Ǘ2׾h}=AA\ez1w8 U@'jѰ˘eƪV$1QLJL 0w"Ԗ{ıbѻpD]05 B#tK[Agw0!(lہ 'XQ{9z*peY9=`7Kȑf9MHþNa33% ߟm [sS Oq=$v $ꔇn/WzNԃ!@t3ى7 IE:!:)t~xԃq0s7pVy_[tYΰ:Dz[`9'i+ endstream endobj 2120 0 obj << /Type /ObjStm /N 100 /First 1007 /Length 3935 /Filter /FlateDecode >> stream x\[sG~lm1}UQ[eC N8&)=mdHr;G1v_­3=}I>J9R Y P] 0O[DpEҴ=BI:1ցקBH,#By҅ vD숎v`J&b,p$MDe-tJ¥7-aIp#Ftr¡)TqCIp H(𡤆9SgA0Wx/L D IDL&J5*Z#C:K;P#̀%``Aw$ R56r,i62~$/6bcD_ ^vxЅpq0@9@QF7} PDs)ǏDuUh<'7g|b0sO'դC"&w{Mu>+1tR:d/2,/?.I!{B<-~0ſCi](OzS&[JJ-K̭8NHpS4Iz!LRߎ3m g >0vҧI6eL-6*cX%ʖɴԩUz;~K8.mld ݩlu2ЧkpJ ΑIJ0n |elFXBbߩݪhKRs*NCR2x)i*/bCz;(G@_HE93p.ʙ294nK4p!Ȧ`!$t.dƣՀ;En mV0!ܝxrYHtdF_PEPxv|^AoKRsgPӠ>-(PwY~ܭK < OG^ڧѾDodB'U]a[%1zGM\ϣyj2NէUhAC%ir8(KN9i4ƩrhfT6O"[|( ФIJNPCJֶ=E=~SIAbt3/:f|Ρ~6/b~/+ ? K|d|~RB?=,D<+-~ܿF)=)僉fr^s/A`9+]nَ!/dN= 7ZGآS6qPCr3m){G͇G.ٟC{7Xxˎn18jYpUG)[h>~oa#=ňhLi,0upR.{3+}} gJ h5HQM/ݰ&xKNWoЪ.PfD#Ϡ lXZ CɇZ^ULxfm!88%+"Y+, 6I.eq2vpѻZK]=rx0MC1 a#{|jDfgk޳<%ink$@N{ئ-l1dkDRUobb0̟5& QEOp?m'|P 2rѧ(Q^TtM5+4=)et.}yƑCzTPca[r20|J"O:4Iq}eU^fߋc:_QɅ<,;wk > B(-)V.>oҔ  T~]qQ /Vz-Nh)Xآ9.ty$ܒHսGiY%0Fj /PFpOX!Rueu DžO[m\Ze=o.Z%'L k;bŽ, #Yr򴚞O׳$!yy?$HO*EHB'|ҿ~^ .?2ztU>qGpp?V?UW%87Ir?Bb_<?H/X='?ٰ0/Ņq)>_?V#1#1^[jB`|!&b*fF|GpJqޞG?ޜ ϔ]ΐ+%!;x1> 3OgkbUęx  it!/ \x8O l tZS 1*d~jL'馚+Ic/`>? >NJCgEG&}O_=b_uyiƯ(ܥGUtKF5ų’ބgzg[5jΒ[bɻXtE9nH9Gj;Jq7w#8zevV9!5ħN~6'/|wJdY !#T U=? hp9zx$x?m󋼓pu5= pm^=כzK UD!7 /7 ̯_xßf%#n+O5fY==٧WkTzaϤZs vªQגjSS6[FIWoYh^4eCm[RSjIjtHMk%;H 1+8]mxx3n''Q0)QzL@q6ZnؽwWmݒ'sx-؃[=ce ! &||e_(v;;xzEknw39^כ %tQ,|{|zt@zS<ȧ7`@fus`xQ-"hF 91H"&Yi雫O7alKq9b=tgEó'՝ 8lK~yslt=#[C1}Qntbh"bd\aysɫCfY 9ި\-eK:\}l_F۬oE p ПV%#%Y*„"TƿPU6'hy*ENRDFТH(a >ZȬRb"Xd6ǿTi #5u5+`-rJ_OhcAvi6zi6kMud;[idRTSOt\|xZh͊gh(KaVnAH*Aa=.} זu߀QYÿnȺۭ$ endstream endobj 2180 0 obj << /Type /ObjStm /N 100 /First 918 /Length 2048 /Filter /FlateDecode >> stream xڭXю }_1EHH&& >lE@`͈W,Ǿ}5g$CQsf6清-R[˖JB1L7!e [ƍ$nʌpc!W!)F\*``q҂8(Ub,ˡ&`N@)dBl)8xK!D xA*ˆ$C2e2` &ԛ(mrmUOxd?D [L$H!(d1 o%cr|[:B_EP\ + a"$0Yb aBQ}A*@!l&S .  8++J"s)0Z RI X!)&+ab ԥa)2` 1爤jcrR c8 XQea2ZRXjΊ+V6TPsMP`.1a XZVA I)T$e,: XZGAI) ĿzǓZX@wX"PyjI.'\b*Ъ,դP IU$>t꿿lW߾y8]}eOW_^ԑ}{Wb8ps/oЬ@ K ?<]|u)}=&aɯo_l蛗o?YFxȈe!^>=2K*!G onOW޾=~q}wht~5B?}+E!y=(ӠmY J?X*{1xƷiEA|U}0[k9qTiQJr :ƋbۢDMtT"U%TnN!!rUv _BULom{̋)`{Ux%8W S!w WwQ%Dމv S~r?D_xdfG?v{;[tn'H߼{Mۿ6 }]_L΋o~w{}0aͿ?&<8V[9>]r?_(&Xұ+<ƚXj+,Oðb+ Xa}nysW;jyq舦~,}}<0wVeP>ϔkP~t%̱2S]#AxoE iI2@¢ax ԷxVτ.2h߲|uފ.D{+cf+thofKX4`wX{ V^ګ X3kKu^gk>/σ:>wR/A<>we ҵ2h/3kKy^fsמ̴=/A{i]{ZjO<ӞԞi=uR4hO3S>-O4Ӿ{-,`u^kk{-ZZ[z ^k3Zf^kkm:xͼֺkuZyvե:Z^KkuڽV^k{.VՙjZ]z^3ZVg^ku:xμVkuZyvե:Z^KkuڽV^k{.VՙjZ]z^3ZVg^ku:xμVkuZyvե:Z^KՔÖg endstream endobj 2187 0 obj << /Type /ObjStm /N 100 /First 883 /Length 1692 /Filter /FlateDecode >> stream x}$G Df3S e1czljvFeՃclm}ߦC϶[6iϱ6;Ma 2{ml]osܷ]xovtͶ;̶Ly1ޕط>:KZXYJU+ qXXl,,Ŵ2le5F2}g@cC t6@kzinL퍝@cA8LoA&bNA4AA2 hPA hPk,]69vl0yM;5cb /{l?,Ƙ7dosokۺ{U%H](?Q.TqeGrba2Z,{,3 bRLi{[<54hCupS䀙 r+ q0/XXd O-D<&4h5׈ؚ6΄[=)kw+$6tC}} _o>^ۗ?^}?/lk"ǏZxhUZFV{zZm-Mt--FjgߪKIˠe#{; ٷiFE둽Udot--FjV|2jM~O ZYӳe3d?goeY[gyVfeóG=Bee#kYkeK^ų2{ kxRf/!{ɲ~ُd~ُd;kd֞]F-gZXkZ+Yk֜Vk-c9kdZZsZZZZ8kQZE`-2YEZ8kQX g-J"kEZ"c-(YZd%kXp֢d-kZE`-2YEZ8kQX g-J"kEZ"c-(YZd%kXp֢d-kZE`-2Yg,ǟꌮ8V#|yI8뷿^ϟ>qßSuW]{k;-Yh!I"vzI%~y{"q4կZGKW\-ik\N ^&~znχ}D.{{A<6yCwQϏyZ0k:,Yٝ}޳;|/z^ qډb惰 »j̘A2 @v0zay_R A+KH=_Rg-O[ʴ%]c/,mWf-1$zoy҇2feJzle>4s\}yF6ր~${j> endobj 2188 0 obj << /Type /ObjStm /N 80 /First 820 /Length 5368 /Filter /FlateDecode >> stream x IC-"UUG)BC`? ͂ ,bB/V: C-kD,zJhQ* $Y_0q1JRSi&|/{0ʇ-I:ZҠťA/#5(FkP46-@:E$ ؂ď[BO!6@釈- +1$-L"d3lOba&a >ŁR-"@kHz17l 9`~B)qL@~F#?=z!o v{|۬6e.|%y/G= @OU~~j<10} K100E FLf3e%7<^/P8P8ä >Ik#||"X50$Q 8&jS=.:`Hl f%B%;!Xs' PMb jIق4zbTD\@ %4>U3H Y@MO*!D_D 'Ih]9 qaJd#IYF>y?Ob1u~ q5}.N*DVȢdJ}ﱾc9u$pAXc , D1%ĖLB#G\Ȗx`lbd+bIm+b9⒉ WP$`՘ S1+.V ))'#\sbX ŊcgfS\WẌ́j*9R\4$1&Wbt,if)E4 4Ez#P}.BdI3K!{]/~BJ2۪cf 6ˬBxriZ5*m7ZҸժ \6$w0a|3*_tNu^CKSY^b_p|emk.m3[צn +EW:]qIPhƳ:_m &qa!]?./HL+n#%n}O,4&˝:/̟1_.uvC]ުuyْylݮ[bY݀ mL;`n];]VX6߬$АfHnL6/ET-h9@a$0cѐC:L#Pf5#(+X$Vf|5ovb_5q-[/[?FS\VZKa:&v:\#\&krߛ:ϊ;|\ f͢lxf/@үf9IɀX9KlSVM/q9>L3-{6k&jZ@BUs7(#+a-6U 1cdK_V߿z[,{ykL9u"]IƠae⮭Yjg ̆zӡSa|yW < uf+ȷ$Vm6!k0~#.΂>{h%-h\Mi@#tsQ-lxgvE4"l6TR1V{[wD #O·ܘC ]wV<4 ,t( [q S&{ơSc~sV']fדm+ג&BuqzT]f"WM+~V^Vޖӊw/ `N Z k3R{yEV]P$4l\̛v_J,0U᪴qlJlJ5V Umgz@AEn%yP"rz)8lՊ= a&HYU?4\ Gcw֤%tg}f$⃁}oG O``$bscm^f !o jG` ȨY $ dF/Ȗ7M5swa7eJVFxiZLTWcY?L:^H% غ4+Kp_I9~_675e^ .|+>i+ou֔dol>s]ȻUNf نV5.Ec'ƣ'qQڀ  ͛{G Ot@ `9io*(S>zY9&lj9yH-a_*[䘧uU螕oGvN$JXwٵ+Ţ[? [`͞W9[[f&Ffd2A_xFߎ^D&e2HUY~[g;4PQ i,9h`?dE^TTծo.WX-C˵ o9v՜*"5m_"aJ8vxSߚ?צpuǥ~GUɄѰ]oXH 'ndeIqt.x eiI-!?3V~0c`lb :9wgZVӗ`%ҋXoB.|$Ԭ3P`ϱфU~8iЁSe[SәlX wP[C'*ׂ :zgh^97pn9uWq&:lơ̿ &HG гn–/#uREo)i7!_'p}"-R(_DJPV{)]H'˩E%6OJʡЃMkBtO~i͉S`p^vKv'A ]зtKC NU)%Q ?o Ijt=[l|x$̳̓{Vv;p0}v7AG|pCs $W9X>z_ޞ;DO<q /vm6SU]R; 3_(]Xt\=l]lqJc#s_$CVa욆KP1JrI(4ٹNA6ŎLP*!u2*+ocl`ldHX~C' s_5C rQ|".GepANjOzZb* *ˏS參9Rg}WrZc2͑2(PV|SCҵƉfہw@A# Sؓ'ٌa )gZpy'xFȵoyұ}ׇE2xٰG|Hu/Df?/ٯ-s!J_o8DOLt8k<^-}$D^א,lJXŹDtT6|Mw8dWWmb|<3Sfu#=hXt1V Wڍi;:C)?&1 / 2YE/SG0K:[zII_k7.86 ?+CcS196T(Ɲ,'cMzQV1;#ZY++Xzw+]Ǵf5}Z\Hx}=iEU$K":z<c;[2w#uAvl|0J-V GWa'<w<;_udJف4vQ55+ʋtG"zPeEҏL:ő=!,݂\J,NѽT){| ͍:+KBQ COQVGQ_2Evq;s/CxQ"N'k q:A7ލH DMЍW&)c;s?Cœ䝨)옢 F'72Pt̹!]t $os$(pnZ8!4wZ;s?C(hn L9 I o$S΅W6)k!IPr̹!]StX o$S΅7P)».{+A~%k,}" _@Z KCICK#F=*~-\7bi$`EmD,%9~I4[ëc=X$8яLpc~ĭ  Q?CqEmOHB$HB0^2Cg~sZXr(Gr؇ha'`.hakkB@wjS!"-,4Pq l @ $V+V}f%?lsL1+9BW(rOZ(BIV5GceK#=ڬ6"Xޕ/Z4 @.NxTz endstream endobj 2265 0 obj << /Type /XRef /Index [0 2266] /Size 2266 /W [1 3 1] /Root 2263 0 R /Info 2264 0 R /ID [<3E95CB5C9831482C03C013CA32106066> <3E95CB5C9831482C03C013CA32106066>] /Length 5383 /Filter /FlateDecode >> stream x%{lY=slOqN8Ǘ؉;Wǹ؎8v\쓄T **U;BF"a)4sh[E+T\JQEVB퀐Xu*Jp~Oiw|~|߱8lw)}Nqh-_h<4g@arV(e@P60{`丟'` (9媁p< }>(@008 F(8N10΀ 0 ΂s<.ip\z_7@ Nipl4P8`p\\\\h$ {&ƈ{!N*9&JI7 SAP3crȩR)kWbg:2N4{\r=!,&r6rW=lfVGf .1 3$q 2%q-V^f$ q'k cl'X%>9111H#b6bvnib|k-bGCA7b1E<ЍqDEr=FcY^ |>t f8N/2`tMe]Š9fo=^zKj̾r?=_ヘڊ>^>xd??F7SA!A{cO k B.@fwtGL Em垕k]lRbo_`UN+u~N‰_ |J=@␕P3+1y8`z(ZiTU` U+ML'AZNZVZ.sV{Y'U LYiU`Z*YQB,$P[uF s\,Z]i ,зX r /g_PG`BHRC+֨ڵM}gڰ/;qGGXh+B{of}+L{1l.\5t{iK@VMn+ ^} ݾϺh^)yCjy=lV5o͵3VEv\"m|2[fn` `n׻ sW!{ȵ'`.þckTz/◟\Nh1PkDFsZK Y}9}ot2CT-3~TյkpޮP_ O.jiln *Ԣ)])Wfmʃ &_+1k c7{rWy_p/e7se~.asmYaT}W~3p 6Zɍ  heڤj\r.Y>p\rj5k?1=81~ޕZϬ[y;: ř?] +c UsfSe+O* V^S hvN+ύqh?8C^pGA8*8'@ A0I0F)pqpLIpp\S2WUp \3```,` 6Xw*Xw=!x6&h!^QV Z6j!cĺ1j XykXE ~B1#4HA n-OP?AOP?AOP?G ѱ=Wa?bYD-ZO&i^_t<jcP;|6ޣ{t{ ݣ{w޽>+ڻG{hݣ{w=ڻG{hݣ{w=ڻG{hݣ{w=ڻG{hݣ{w=ڻG{hݣ{w=ڻG{hݣ{4p=Gh ܣ{4p"-&ljU[Z/"#>"#Ϟ>꣪>Rd*W7_;0#>r#ܾϐGn}Gn}Gn}Gn}חVGU󎽡#Gs? |c X>𱀏sVa՟>>||3V5ԑoMYK:aM_XѼ5q-X5QG7udnYek{V%ئ;ݿѪhͼOJUt2(解^ o/H!F 1RBb#)H!F 1R_B%/!~ K_B◐ K_B+%Կ^a!> $ ox#!F7B'Cb["!E-Blb[L!C2=L!C2=Ly;<\: endstream endobj startxref 547717 %%EOF flex-2.5.39/doc/flex.texi0000644000175000017500000107547212060131411015425 0ustar srivastasrivasta\input texinfo.tex @c -*-texinfo-*- @c %**start of header @setfilename flex.info @include version.texi @settitle Lexical Analysis With Flex, for Flex @value{VERSION} @set authors Vern Paxson, Will Estes and John Millaway @c "Macro Hooks" index @defindex hk @c "Options" index @defindex op @dircategory Programming @direntry * flex: (flex). Fast lexical analyzer generator (lex replacement). @end direntry @c %**end of header @copying The flex manual is placed under the same licensing conditions as the rest of flex: Copyright @copyright{} 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2012 The Flex Project. Copyright @copyright{} 1990, 1997 The Regents of the University of California. All rights reserved. This code is derived from software contributed to Berkeley by Vern Paxson. The United States Government has rights in this work pursuant to contract no. DE-AC03-76SF00098 between the United States Department of Energy and the University of California. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: @enumerate @item Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. @item Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. @end enumerate Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. @end copying @titlepage @title Lexical Analysis with Flex @subtitle Edition @value{EDITION}, @value{UPDATED} @author @value{authors} @page @vskip 0pt plus 1filll @insertcopying @end titlepage @contents @ifnottex @node Top, Copyright, (dir), (dir) @top flex This manual describes @code{flex}, a tool for generating programs that perform pattern-matching on text. The manual includes both tutorial and reference sections. This edition of @cite{The flex Manual} documents @code{flex} version @value{VERSION}. It was last updated on @value{UPDATED}. This manual was written by @value{authors}. @menu * Copyright:: * Reporting Bugs:: * Introduction:: * Simple Examples:: * Format:: * Patterns:: * Matching:: * Actions:: * Generated Scanner:: * Start Conditions:: * Multiple Input Buffers:: * EOF:: * Misc Macros:: * User Values:: * Yacc:: * Scanner Options:: * Performance:: * Cxx:: * Reentrant:: * Lex and Posix:: * Memory Management:: * Serialized Tables:: * Diagnostics:: * Limitations:: * Bibliography:: * FAQ:: * Appendices:: * Indices:: @detailmenu --- The Detailed Node Listing --- Format of the Input File * Definitions Section:: * Rules Section:: * User Code Section:: * Comments in the Input:: Scanner Options * Options for Specifying Filenames:: * Options Affecting Scanner Behavior:: * Code-Level And API Options:: * Options for Scanner Speed and Size:: * Debugging Options:: * Miscellaneous Options:: Reentrant C Scanners * Reentrant Uses:: * Reentrant Overview:: * Reentrant Example:: * Reentrant Detail:: * Reentrant Functions:: The Reentrant API in Detail * Specify Reentrant:: * Extra Reentrant Argument:: * Global Replacement:: * Init and Destroy Functions:: * Accessor Methods:: * Extra Data:: * About yyscan_t:: Memory Management * The Default Memory Management:: * Overriding The Default Memory Management:: * A Note About yytext And Memory:: Serialized Tables * Creating Serialized Tables:: * Loading and Unloading Serialized Tables:: * Tables File Format:: FAQ * When was flex born?:: * How do I expand backslash-escape sequences in C-style quoted strings?:: * Why do flex scanners call fileno if it is not ANSI compatible?:: * Does flex support recursive pattern definitions?:: * How do I skip huge chunks of input (tens of megabytes) while using flex?:: * Flex is not matching my patterns in the same order that I defined them.:: * My actions are executing out of order or sometimes not at all.:: * How can I have multiple input sources feed into the same scanner at the same time?:: * Can I build nested parsers that work with the same input file?:: * How can I match text only at the end of a file?:: * How can I make REJECT cascade across start condition boundaries?:: * Why cant I use fast or full tables with interactive mode?:: * How much faster is -F or -f than -C?:: * If I have a simple grammar cant I just parse it with flex?:: * Why doesn't yyrestart() set the start state back to INITIAL?:: * How can I match C-style comments?:: * The period isn't working the way I expected.:: * Can I get the flex manual in another format?:: * Does there exist a "faster" NDFA->DFA algorithm?:: * How does flex compile the DFA so quickly?:: * How can I use more than 8192 rules?:: * How do I abandon a file in the middle of a scan and switch to a new file?:: * How do I execute code only during initialization (only before the first scan)?:: * How do I execute code at termination?:: * Where else can I find help?:: * Can I include comments in the "rules" section of the file?:: * I get an error about undefined yywrap().:: * How can I change the matching pattern at run time?:: * How can I expand macros in the input?:: * How can I build a two-pass scanner?:: * How do I match any string not matched in the preceding rules?:: * I am trying to port code from AT&T lex that uses yysptr and yysbuf.:: * Is there a way to make flex treat NULL like a regular character?:: * Whenever flex can not match the input it says "flex scanner jammed".:: * Why doesn't flex have non-greedy operators like perl does?:: * Memory leak - 16386 bytes allocated by malloc.:: * How do I track the byte offset for lseek()?:: * How do I use my own I/O classes in a C++ scanner?:: * How do I skip as many chars as possible?:: * deleteme00:: * Are certain equivalent patterns faster than others?:: * Is backing up a big deal?:: * Can I fake multi-byte character support?:: * deleteme01:: * Can you discuss some flex internals?:: * unput() messes up yy_at_bol:: * The | operator is not doing what I want:: * Why can't flex understand this variable trailing context pattern?:: * The ^ operator isn't working:: * Trailing context is getting confused with trailing optional patterns:: * Is flex GNU or not?:: * ERASEME53:: * I need to scan if-then-else blocks and while loops:: * ERASEME55:: * ERASEME56:: * ERASEME57:: * Is there a repository for flex scanners?:: * How can I conditionally compile or preprocess my flex input file?:: * Where can I find grammars for lex and yacc?:: * I get an end-of-buffer message for each character scanned.:: * unnamed-faq-62:: * unnamed-faq-63:: * unnamed-faq-64:: * unnamed-faq-65:: * unnamed-faq-66:: * unnamed-faq-67:: * unnamed-faq-68:: * unnamed-faq-69:: * unnamed-faq-70:: * unnamed-faq-71:: * unnamed-faq-72:: * unnamed-faq-73:: * unnamed-faq-74:: * unnamed-faq-75:: * unnamed-faq-76:: * unnamed-faq-77:: * unnamed-faq-78:: * unnamed-faq-79:: * unnamed-faq-80:: * unnamed-faq-81:: * unnamed-faq-82:: * unnamed-faq-83:: * unnamed-faq-84:: * unnamed-faq-85:: * unnamed-faq-86:: * unnamed-faq-87:: * unnamed-faq-88:: * unnamed-faq-90:: * unnamed-faq-91:: * unnamed-faq-92:: * unnamed-faq-93:: * unnamed-faq-94:: * unnamed-faq-95:: * unnamed-faq-96:: * unnamed-faq-97:: * unnamed-faq-98:: * unnamed-faq-99:: * unnamed-faq-100:: * unnamed-faq-101:: * What is the difference between YYLEX_PARAM and YY_DECL?:: * Why do I get "conflicting types for yylex" error?:: * How do I access the values set in a Flex action from within a Bison action?:: Appendices * Makefiles and Flex:: * Bison Bridge:: * M4 Dependency:: * Common Patterns:: Indices * Concept Index:: * Index of Functions and Macros:: * Index of Variables:: * Index of Data Types:: * Index of Hooks:: * Index of Scanner Options:: @end detailmenu @end menu @end ifnottex @node Copyright, Reporting Bugs, Top, Top @chapter Copyright @cindex copyright of flex @cindex distributing flex @insertcopying @node Reporting Bugs, Introduction, Copyright, Top @chapter Reporting Bugs @cindex bugs, reporting @cindex reporting bugs If you find a bug in @code{flex}, please report it using the SourceForge Bug Tracking facilities which can be found on @url{http://sourceforge.net/projects/flex,flex's SourceForge Page}. @node Introduction, Simple Examples, Reporting Bugs, Top @chapter Introduction @cindex scanner, definition of @code{flex} is a tool for generating @dfn{scanners}. A scanner is a program which recognizes lexical patterns in text. The @code{flex} program reads the given input files, or its standard input if no file names are given, for a description of a scanner to generate. The description is in the form of pairs of regular expressions and C code, called @dfn{rules}. @code{flex} generates as output a C source file, @file{lex.yy.c} by default, which defines a routine @code{yylex()}. This file can be compiled and linked with the flex runtime library to produce an executable. When the executable is run, it analyzes its input for occurrences of the regular expressions. Whenever it finds one, it executes the corresponding C code. @node Simple Examples, Format, Introduction, Top @chapter Some Simple Examples First some simple examples to get the flavor of how one uses @code{flex}. @cindex username expansion The following @code{flex} input specifies a scanner which, when it encounters the string @samp{username} will replace it with the user's login name: @example @verbatim %% username printf( "%s", getlogin() ); @end verbatim @end example @cindex default rule @cindex rules, default By default, any text not matched by a @code{flex} scanner is copied to the output, so the net effect of this scanner is to copy its input file to its output with each occurrence of @samp{username} expanded. In this input, there is just one rule. @samp{username} is the @dfn{pattern} and the @samp{printf} is the @dfn{action}. The @samp{%%} symbol marks the beginning of the rules. Here's another simple example: @cindex counting characters and lines @example @verbatim int num_lines = 0, num_chars = 0; %% \n ++num_lines; ++num_chars; . ++num_chars; %% int main() { yylex(); printf( "# of lines = %d, # of chars = %d\n", num_lines, num_chars ); } @end verbatim @end example This scanner counts the number of characters and the number of lines in its input. It produces no output other than the final report on the character and line counts. The first line declares two globals, @code{num_lines} and @code{num_chars}, which are accessible both inside @code{yylex()} and in the @code{main()} routine declared after the second @samp{%%}. There are two rules, one which matches a newline (@samp{\n}) and increments both the line count and the character count, and one which matches any character other than a newline (indicated by the @samp{.} regular expression). A somewhat more complicated example: @cindex Pascal-like language @example @verbatim /* scanner for a toy Pascal-like language */ %{ /* need this for the call to atof() below */ #include %} DIGIT [0-9] ID [a-z][a-z0-9]* %% {DIGIT}+ { printf( "An integer: %s (%d)\n", yytext, atoi( yytext ) ); } {DIGIT}+"."{DIGIT}* { printf( "A float: %s (%g)\n", yytext, atof( yytext ) ); } if|then|begin|end|procedure|function { printf( "A keyword: %s\n", yytext ); } {ID} printf( "An identifier: %s\n", yytext ); "+"|"-"|"*"|"/" printf( "An operator: %s\n", yytext ); "{"[\^{}}\n]*"}" /* eat up one-line comments */ [ \t\n]+ /* eat up whitespace */ . printf( "Unrecognized character: %s\n", yytext ); %% int main( int argc, char **argv ) { ++argv, --argc; /* skip over program name */ if ( argc > 0 ) yyin = fopen( argv[0], "r" ); else yyin = stdin; yylex(); } @end verbatim @end example This is the beginnings of a simple scanner for a language like Pascal. It identifies different types of @dfn{tokens} and reports on what it has seen. The details of this example will be explained in the following sections. @node Format, Patterns, Simple Examples, Top @chapter Format of the Input File @cindex format of flex input @cindex input, format of @cindex file format @cindex sections of flex input The @code{flex} input file consists of three sections, separated by a line containing only @samp{%%}. @cindex format of input file @example @verbatim definitions %% rules %% user code @end verbatim @end example @menu * Definitions Section:: * Rules Section:: * User Code Section:: * Comments in the Input:: @end menu @node Definitions Section, Rules Section, Format, Format @section Format of the Definitions Section @cindex input file, Definitions section @cindex Definitions, in flex input The @dfn{definitions section} contains declarations of simple @dfn{name} definitions to simplify the scanner specification, and declarations of @dfn{start conditions}, which are explained in a later section. @cindex aliases, how to define @cindex pattern aliases, how to define Name definitions have the form: @example @verbatim name definition @end verbatim @end example The @samp{name} is a word beginning with a letter or an underscore (@samp{_}) followed by zero or more letters, digits, @samp{_}, or @samp{-} (dash). The definition is taken to begin at the first non-whitespace character following the name and continuing to the end of the line. The definition can subsequently be referred to using @samp{@{name@}}, which will expand to @samp{(definition)}. For example, @cindex pattern aliases, defining @cindex defining pattern aliases @example @verbatim DIGIT [0-9] ID [a-z][a-z0-9]* @end verbatim @end example Defines @samp{DIGIT} to be a regular expression which matches a single digit, and @samp{ID} to be a regular expression which matches a letter followed by zero-or-more letters-or-digits. A subsequent reference to @cindex pattern aliases, use of @example @verbatim {DIGIT}+"."{DIGIT}* @end verbatim @end example is identical to @example @verbatim ([0-9])+"."([0-9])* @end verbatim @end example and matches one-or-more digits followed by a @samp{.} followed by zero-or-more digits. @cindex comments in flex input An unindented comment (i.e., a line beginning with @samp{/*}) is copied verbatim to the output up to the next @samp{*/}. @cindex %@{ and %@}, in Definitions Section @cindex embedding C code in flex input @cindex C code in flex input Any @emph{indented} text or text enclosed in @samp{%@{} and @samp{%@}} is also copied verbatim to the output (with the %@{ and %@} symbols removed). The %@{ and %@} symbols must appear unindented on lines by themselves. @cindex %top A @code{%top} block is similar to a @samp{%@{} ... @samp{%@}} block, except that the code in a @code{%top} block is relocated to the @emph{top} of the generated file, before any flex definitions @footnote{Actually, @code{yyIN_HEADER} is defined before the @samp{%top} block.}. The @code{%top} block is useful when you want certain preprocessor macros to be defined or certain files to be included before the generated code. The single characters, @samp{@{} and @samp{@}} are used to delimit the @code{%top} block, as show in the example below: @example @verbatim %top{ /* This code goes at the "top" of the generated file. */ #include #include } @end verbatim @end example Multiple @code{%top} blocks are allowed, and their order is preserved. @node Rules Section, User Code Section, Definitions Section, Format @section Format of the Rules Section @cindex input file, Rules Section @cindex rules, in flex input The @dfn{rules} section of the @code{flex} input contains a series of rules of the form: @example @verbatim pattern action @end verbatim @end example where the pattern must be unindented and the action must begin on the same line. @xref{Patterns}, for a further description of patterns and actions. In the rules section, any indented or %@{ %@} enclosed text appearing before the first rule may be used to declare variables which are local to the scanning routine and (after the declarations) code which is to be executed whenever the scanning routine is entered. Other indented or %@{ %@} text in the rule section is still copied to the output, but its meaning is not well-defined and it may well cause compile-time errors (this feature is present for @acronym{POSIX} compliance. @xref{Lex and Posix}, for other such features). Any @emph{indented} text or text enclosed in @samp{%@{} and @samp{%@}} is copied verbatim to the output (with the %@{ and %@} symbols removed). The %@{ and %@} symbols must appear unindented on lines by themselves. @node User Code Section, Comments in the Input, Rules Section, Format @section Format of the User Code Section @cindex input file, user code Section @cindex user code, in flex input The user code section is simply copied to @file{lex.yy.c} verbatim. It is used for companion routines which call or are called by the scanner. The presence of this section is optional; if it is missing, the second @samp{%%} in the input file may be skipped, too. @node Comments in the Input, , User Code Section, Format @section Comments in the Input @cindex comments, syntax of Flex supports C-style comments, that is, anything between @samp{/*} and @samp{*/} is considered a comment. Whenever flex encounters a comment, it copies the entire comment verbatim to the generated source code. Comments may appear just about anywhere, but with the following exceptions: @itemize @cindex comments, in rules section @item Comments may not appear in the Rules Section wherever flex is expecting a regular expression. This means comments may not appear at the beginning of a line, or immediately following a list of scanner states. @item Comments may not appear on an @samp{%option} line in the Definitions Section. @end itemize If you want to follow a simple rule, then always begin a comment on a new line, with one or more whitespace characters before the initial @samp{/*}). This rule will work anywhere in the input file. All the comments in the following example are valid: @cindex comments, valid uses of @cindex comments in the input @example @verbatim %{ /* code block */ %} /* Definitions Section */ %x STATE_X %% /* Rules Section */ ruleA /* after regex */ { /* code block */ } /* after code block */ /* Rules Section (indented) */ { ruleC ECHO; ruleD ECHO; %{ /* code block */ %} } %% /* User Code Section */ @end verbatim @end example @node Patterns, Matching, Format, Top @chapter Patterns @cindex patterns, in rules section @cindex regular expressions, in patterns The patterns in the input (see @ref{Rules Section}) are written using an extended set of regular expressions. These are: @cindex patterns, syntax @cindex patterns, syntax @table @samp @item x match the character 'x' @item . any character (byte) except newline @cindex [] in patterns @cindex character classes in patterns, syntax of @cindex POSIX, character classes in patterns, syntax of @item [xyz] a @dfn{character class}; in this case, the pattern matches either an 'x', a 'y', or a 'z' @cindex ranges in patterns @item [abj-oZ] a "character class" with a range in it; matches an 'a', a 'b', any letter from 'j' through 'o', or a 'Z' @cindex ranges in patterns, negating @cindex negating ranges in patterns @item [^A-Z] a "negated character class", i.e., any character but those in the class. In this case, any character EXCEPT an uppercase letter. @item [^A-Z\n] any character EXCEPT an uppercase letter or a newline @item [a-z]@{-@}[aeiou] the lowercase consonants @item r* zero or more r's, where r is any regular expression @item r+ one or more r's @item r? zero or one r's (that is, ``an optional r'') @cindex braces in patterns @item r@{2,5@} anywhere from two to five r's @item r@{2,@} two or more r's @item r@{4@} exactly 4 r's @cindex pattern aliases, expansion of @item @{name@} the expansion of the @samp{name} definition (@pxref{Format}). @cindex literal text in patterns, syntax of @cindex verbatim text in patterns, syntax of @item "[xyz]\"foo" the literal string: @samp{[xyz]"foo} @cindex escape sequences in patterns, syntax of @item \X if X is @samp{a}, @samp{b}, @samp{f}, @samp{n}, @samp{r}, @samp{t}, or @samp{v}, then the ANSI-C interpretation of @samp{\x}. Otherwise, a literal @samp{X} (used to escape operators such as @samp{*}) @cindex NULL character in patterns, syntax of @item \0 a NUL character (ASCII code 0) @cindex octal characters in patterns @item \123 the character with octal value 123 @item \x2a the character with hexadecimal value 2a @item (r) match an @samp{r}; parentheses are used to override precedence (see below) @item (?r-s:pattern) apply option @samp{r} and omit option @samp{s} while interpreting pattern. Options may be zero or more of the characters @samp{i}, @samp{s}, or @samp{x}. @samp{i} means case-insensitive. @samp{-i} means case-sensitive. @samp{s} alters the meaning of the @samp{.} syntax to match any single byte whatsoever. @samp{-s} alters the meaning of @samp{.} to match any byte except @samp{\n}. @samp{x} ignores comments and whitespace in patterns. Whitespace is ignored unless it is backslash-escaped, contained within @samp{""}s, or appears inside a character class. The following are all valid: @verbatim (?:foo) same as (foo) (?i:ab7) same as ([aA][bB]7) (?-i:ab) same as (ab) (?s:.) same as [\x00-\xFF] (?-s:.) same as [^\n] (?ix-s: a . b) same as ([Aa][^\n][bB]) (?x:a b) same as ("ab") (?x:a\ b) same as ("a b") (?x:a" "b) same as ("a b") (?x:a[ ]b) same as ("a b") (?x:a /* comment */ b c) same as (abc) @end verbatim @item (?# comment ) omit everything within @samp{()}. The first @samp{)} character encountered ends the pattern. It is not possible to for the comment to contain a @samp{)} character. The comment may span lines. @cindex concatenation, in patterns @item rs the regular expression @samp{r} followed by the regular expression @samp{s}; called @dfn{concatenation} @item r|s either an @samp{r} or an @samp{s} @cindex trailing context, in patterns @item r/s an @samp{r} but only if it is followed by an @samp{s}. The text matched by @samp{s} is included when determining whether this rule is the longest match, but is then returned to the input before the action is executed. So the action only sees the text matched by @samp{r}. This type of pattern is called @dfn{trailing context}. (There are some combinations of @samp{r/s} that flex cannot match correctly. @xref{Limitations}, regarding dangerous trailing context.) @cindex beginning of line, in patterns @cindex BOL, in patterns @item ^r an @samp{r}, but only at the beginning of a line (i.e., when just starting to scan, or right after a newline has been scanned). @cindex end of line, in patterns @cindex EOL, in patterns @item r$ an @samp{r}, but only at the end of a line (i.e., just before a newline). Equivalent to @samp{r/\n}. @cindex newline, matching in patterns Note that @code{flex}'s notion of ``newline'' is exactly whatever the C compiler used to compile @code{flex} interprets @samp{\n} as; in particular, on some DOS systems you must either filter out @samp{\r}s in the input yourself, or explicitly use @samp{r/\r\n} for @samp{r$}. @cindex start conditions, in patterns @item r an @samp{r}, but only in start condition @code{s} (see @ref{Start Conditions} for discussion of start conditions). @item r same, but in any of start conditions @code{s1}, @code{s2}, or @code{s3}. @item <*>r an @samp{r} in any start condition, even an exclusive one. @cindex end of file, in patterns @cindex EOF in patterns, syntax of @item <> an end-of-file. @item <> an end-of-file when in start condition @code{s1} or @code{s2} @end table Note that inside of a character class, all regular expression operators lose their special meaning except escape (@samp{\}) and the character class operators, @samp{-}, @samp{]]}, and, at the beginning of the class, @samp{^}. @cindex patterns, precedence of operators The regular expressions listed above are grouped according to precedence, from highest precedence at the top to lowest at the bottom. Those grouped together have equal precedence (see special note on the precedence of the repeat operator, @samp{@{@}}, under the documentation for the @samp{--posix} POSIX compliance option). For example, @cindex patterns, grouping and precedence @example @verbatim foo|bar* @end verbatim @end example is the same as @example @verbatim (foo)|(ba(r*)) @end verbatim @end example since the @samp{*} operator has higher precedence than concatenation, and concatenation higher than alternation (@samp{|}). This pattern therefore matches @emph{either} the string @samp{foo} @emph{or} the string @samp{ba} followed by zero-or-more @samp{r}'s. To match @samp{foo} or zero-or-more repetitions of the string @samp{bar}, use: @example @verbatim foo|(bar)* @end verbatim @end example And to match a sequence of zero or more repetitions of @samp{foo} and @samp{bar}: @cindex patterns, repetitions with grouping @example @verbatim (foo|bar)* @end verbatim @end example @cindex character classes in patterns In addition to characters and ranges of characters, character classes can also contain @dfn{character class expressions}. These are expressions enclosed inside @samp{[}: and @samp{:]} delimiters (which themselves must appear between the @samp{[} and @samp{]} of the character class. Other elements may occur inside the character class, too). The valid expressions are: @cindex patterns, valid character classes @example @verbatim [:alnum:] [:alpha:] [:blank:] [:cntrl:] [:digit:] [:graph:] [:lower:] [:print:] [:punct:] [:space:] [:upper:] [:xdigit:] @end verbatim @end example These expressions all designate a set of characters equivalent to the corresponding standard C @code{isXXX} function. For example, @samp{[:alnum:]} designates those characters for which @code{isalnum()} returns true - i.e., any alphabetic or numeric character. Some systems don't provide @code{isblank()}, so flex defines @samp{[:blank:]} as a blank or a tab. For example, the following character classes are all equivalent: @cindex character classes, equivalence of @cindex patterns, character class equivalence @example @verbatim [[:alnum:]] [[:alpha:][:digit:]] [[:alpha:][0-9]] [a-zA-Z0-9] @end verbatim @end example A word of caution. Character classes are expanded immediately when seen in the @code{flex} input. This means the character classes are sensitive to the locale in which @code{flex} is executed, and the resulting scanner will not be sensitive to the runtime locale. This may or may not be desirable. @itemize @cindex case-insensitive, effect on character classes @item If your scanner is case-insensitive (the @samp{-i} flag), then @samp{[:upper:]} and @samp{[:lower:]} are equivalent to @samp{[:alpha:]}. @anchor{case and character ranges} @item Character classes with ranges, such as @samp{[a-Z]}, should be used with caution in a case-insensitive scanner if the range spans upper or lowercase characters. Flex does not know if you want to fold all upper and lowercase characters together, or if you want the literal numeric range specified (with no case folding). When in doubt, flex will assume that you meant the literal numeric range, and will issue a warning. The exception to this rule is a character range such as @samp{[a-z]} or @samp{[S-W]} where it is obvious that you want case-folding to occur. Here are some examples with the @samp{-i} flag enabled: @multitable {@samp{[a-zA-Z]}} {ambiguous} {@samp{[A-Z\[\\\]_`a-t]}} {@samp{[@@A-Z\[\\\]_`abc]}} @item Range @tab Result @tab Literal Range @tab Alternate Range @item @samp{[a-t]} @tab ok @tab @samp{[a-tA-T]} @tab @item @samp{[A-T]} @tab ok @tab @samp{[a-tA-T]} @tab @item @samp{[A-t]} @tab ambiguous @tab @samp{[A-Z\[\\\]_`a-t]} @tab @samp{[a-tA-T]} @item @samp{[_-@{]} @tab ambiguous @tab @samp{[_`a-z@{]} @tab @samp{[_`a-zA-Z@{]} @item @samp{[@@-C]} @tab ambiguous @tab @samp{[@@ABC]} @tab @samp{[@@A-Z\[\\\]_`abc]} @end multitable @cindex end of line, in negated character classes @cindex EOL, in negated character classes @item A negated character class such as the example @samp{[^A-Z]} above @emph{will} match a newline unless @samp{\n} (or an equivalent escape sequence) is one of the characters explicitly present in the negated character class (e.g., @samp{[^A-Z\n]}). This is unlike how many other regular expression tools treat negated character classes, but unfortunately the inconsistency is historically entrenched. Matching newlines means that a pattern like @samp{[^"]*} can match the entire input unless there's another quote in the input. Flex allows negation of character class expressions by prepending @samp{^} to the POSIX character class name. @example @verbatim [:^alnum:] [:^alpha:] [:^blank:] [:^cntrl:] [:^digit:] [:^graph:] [:^lower:] [:^print:] [:^punct:] [:^space:] [:^upper:] [:^xdigit:] @end verbatim @end example Flex will issue a warning if the expressions @samp{[:^upper:]} and @samp{[:^lower:]} appear in a case-insensitive scanner, since their meaning is unclear. The current behavior is to skip them entirely, but this may change without notice in future revisions of flex. @item The @samp{@{-@}} operator computes the difference of two character classes. For example, @samp{[a-c]@{-@}[b-z]} represents all the characters in the class @samp{[a-c]} that are not in the class @samp{[b-z]} (which in this case, is just the single character @samp{a}). The @samp{@{-@}} operator is left associative, so @samp{[abc]@{-@}[b]@{-@}[c]} is the same as @samp{[a]}. Be careful not to accidentally create an empty set, which will never match. @item The @samp{@{+@}} operator computes the union of two character classes. For example, @samp{[a-z]@{+@}[0-9]} is the same as @samp{[a-z0-9]}. This operator is useful when preceded by the result of a difference operation, as in, @samp{[[:alpha:]]@{-@}[[:lower:]]@{+@}[q]}, which is equivalent to @samp{[A-Zq]} in the "C" locale. @cindex trailing context, limits of @cindex ^ as non-special character in patterns @cindex $ as normal character in patterns @item A rule can have at most one instance of trailing context (the @samp{/} operator or the @samp{$} operator). The start condition, @samp{^}, and @samp{<>} patterns can only occur at the beginning of a pattern, and, as well as with @samp{/} and @samp{$}, cannot be grouped inside parentheses. A @samp{^} which does not occur at the beginning of a rule or a @samp{$} which does not occur at the end of a rule loses its special properties and is treated as a normal character. @item The following are invalid: @cindex patterns, invalid trailing context @example @verbatim foo/bar$ foobar @end verbatim @end example Note that the first of these can be written @samp{foo/bar\n}. @item The following will result in @samp{$} or @samp{^} being treated as a normal character: @cindex patterns, special characters treated as non-special @example @verbatim foo|(bar$) foo|^bar @end verbatim @end example If the desired meaning is a @samp{foo} or a @samp{bar}-followed-by-a-newline, the following could be used (the special @code{|} action is explained below, @pxref{Actions}): @cindex patterns, end of line @example @verbatim foo | bar$ /* action goes here */ @end verbatim @end example A similar trick will work for matching a @samp{foo} or a @samp{bar}-at-the-beginning-of-a-line. @end itemize @node Matching, Actions, Patterns, Top @chapter How the Input Is Matched @cindex patterns, matching @cindex input, matching @cindex trailing context, matching @cindex matching, and trailing context @cindex matching, length of @cindex matching, multiple matches When the generated scanner is run, it analyzes its input looking for strings which match any of its patterns. If it finds more than one match, it takes the one matching the most text (for trailing context rules, this includes the length of the trailing part, even though it will then be returned to the input). If it finds two or more matches of the same length, the rule listed first in the @code{flex} input file is chosen. @cindex token @cindex yytext @cindex yyleng Once the match is determined, the text corresponding to the match (called the @dfn{token}) is made available in the global character pointer @code{yytext}, and its length in the global integer @code{yyleng}. The @dfn{action} corresponding to the matched pattern is then executed (@pxref{Actions}), and then the remaining input is scanned for another match. @cindex default rule If no match is found, then the @dfn{default rule} is executed: the next character in the input is considered matched and copied to the standard output. Thus, the simplest valid @code{flex} input is: @cindex minimal scanner @example @verbatim %% @end verbatim @end example which generates a scanner that simply copies its input (one character at a time) to its output. @cindex yytext, two types of @cindex %array, use of @cindex %pointer, use of @vindex yytext Note that @code{yytext} can be defined in two different ways: either as a character @emph{pointer} or as a character @emph{array}. You can control which definition @code{flex} uses by including one of the special directives @code{%pointer} or @code{%array} in the first (definitions) section of your flex input. The default is @code{%pointer}, unless you use the @samp{-l} lex compatibility option, in which case @code{yytext} will be an array. The advantage of using @code{%pointer} is substantially faster scanning and no buffer overflow when matching very large tokens (unless you run out of dynamic memory). The disadvantage is that you are restricted in how your actions can modify @code{yytext} (@pxref{Actions}), and calls to the @code{unput()} function destroys the present contents of @code{yytext}, which can be a considerable porting headache when moving between different @code{lex} versions. @cindex %array, advantages of The advantage of @code{%array} is that you can then modify @code{yytext} to your heart's content, and calls to @code{unput()} do not destroy @code{yytext} (@pxref{Actions}). Furthermore, existing @code{lex} programs sometimes access @code{yytext} externally using declarations of the form: @example @verbatim extern char yytext[]; @end verbatim @end example This definition is erroneous when used with @code{%pointer}, but correct for @code{%array}. The @code{%array} declaration defines @code{yytext} to be an array of @code{YYLMAX} characters, which defaults to a fairly large value. You can change the size by simply #define'ing @code{YYLMAX} to a different value in the first section of your @code{flex} input. As mentioned above, with @code{%pointer} yytext grows dynamically to accommodate large tokens. While this means your @code{%pointer} scanner can accommodate very large tokens (such as matching entire blocks of comments), bear in mind that each time the scanner must resize @code{yytext} it also must rescan the entire token from the beginning, so matching such tokens can prove slow. @code{yytext} presently does @emph{not} dynamically grow if a call to @code{unput()} results in too much text being pushed back; instead, a run-time error results. @cindex %array, with C++ Also note that you cannot use @code{%array} with C++ scanner classes (@pxref{Cxx}). @node Actions, Generated Scanner, Matching, Top @chapter Actions @cindex actions Each pattern in a rule has a corresponding @dfn{action}, which can be any arbitrary C statement. The pattern ends at the first non-escaped whitespace character; the remainder of the line is its action. If the action is empty, then when the pattern is matched the input token is simply discarded. For example, here is the specification for a program which deletes all occurrences of @samp{zap me} from its input: @cindex deleting lines from input @example @verbatim %% "zap me" @end verbatim @end example This example will copy all other characters in the input to the output since they will be matched by the default rule. Here is a program which compresses multiple blanks and tabs down to a single blank, and throws away whitespace found at the end of a line: @cindex whitespace, compressing @cindex compressing whitespace @example @verbatim %% [ \t]+ putchar( ' ' ); [ \t]+$ /* ignore this token */ @end verbatim @end example @cindex %@{ and %@}, in Rules Section @cindex actions, use of @{ and @} @cindex actions, embedded C strings @cindex C-strings, in actions @cindex comments, in actions If the action contains a @samp{@{}, then the action spans till the balancing @samp{@}} is found, and the action may cross multiple lines. @code{flex} knows about C strings and comments and won't be fooled by braces found within them, but also allows actions to begin with @samp{%@{} and will consider the action to be all the text up to the next @samp{%@}} (regardless of ordinary braces inside the action). @cindex |, in actions An action consisting solely of a vertical bar (@samp{|}) means ``same as the action for the next rule''. See below for an illustration. Actions can include arbitrary C code, including @code{return} statements to return a value to whatever routine called @code{yylex()}. Each time @code{yylex()} is called it continues processing tokens from where it last left off until it either reaches the end of the file or executes a return. @cindex yytext, modification of Actions are free to modify @code{yytext} except for lengthening it (adding characters to its end--these will overwrite later characters in the input stream). This however does not apply when using @code{%array} (@pxref{Matching}). In that case, @code{yytext} may be freely modified in any way. @cindex yyleng, modification of @cindex yymore, and yyleng Actions are free to modify @code{yyleng} except they should not do so if the action also includes use of @code{yymore()} (see below). @cindex preprocessor macros, for use in actions There are a number of special directives which can be included within an action: @table @code @item ECHO @cindex ECHO copies yytext to the scanner's output. @item BEGIN @cindex BEGIN followed by the name of a start condition places the scanner in the corresponding start condition (see below). @item REJECT @cindex REJECT directs the scanner to proceed on to the ``second best'' rule which matched the input (or a prefix of the input). The rule is chosen as described above in @ref{Matching}, and @code{yytext} and @code{yyleng} set up appropriately. It may either be one which matched as much text as the originally chosen rule but came later in the @code{flex} input file, or one which matched less text. For example, the following will both count the words in the input and call the routine @code{special()} whenever @samp{frob} is seen: @example @verbatim int word_count = 0; %% frob special(); REJECT; [^ \t\n]+ ++word_count; @end verbatim @end example Without the @code{REJECT}, any occurrences of @samp{frob} in the input would not be counted as words, since the scanner normally executes only one action per token. Multiple uses of @code{REJECT} are allowed, each one finding the next best choice to the currently active rule. For example, when the following scanner scans the token @samp{abcd}, it will write @samp{abcdabcaba} to the output: @cindex REJECT, calling multiple times @cindex |, use of @example @verbatim %% a | ab | abc | abcd ECHO; REJECT; .|\n /* eat up any unmatched character */ @end verbatim @end example The first three rules share the fourth's action since they use the special @samp{|} action. @code{REJECT} is a particularly expensive feature in terms of scanner performance; if it is used in @emph{any} of the scanner's actions it will slow down @emph{all} of the scanner's matching. Furthermore, @code{REJECT} cannot be used with the @samp{-Cf} or @samp{-CF} options (@pxref{Scanner Options}). Note also that unlike the other special actions, @code{REJECT} is a @emph{branch}. Code immediately following it in the action will @emph{not} be executed. @item yymore() @cindex yymore() tells the scanner that the next time it matches a rule, the corresponding token should be @emph{appended} onto the current value of @code{yytext} rather than replacing it. For example, given the input @samp{mega-kludge} the following will write @samp{mega-mega-kludge} to the output: @cindex yymore(), mega-kludge @cindex yymore() to append token to previous token @example @verbatim %% mega- ECHO; yymore(); kludge ECHO; @end verbatim @end example First @samp{mega-} is matched and echoed to the output. Then @samp{kludge} is matched, but the previous @samp{mega-} is still hanging around at the beginning of @code{yytext} so the @code{ECHO} for the @samp{kludge} rule will actually write @samp{mega-kludge}. @end table @cindex yymore, performance penalty of Two notes regarding use of @code{yymore()}. First, @code{yymore()} depends on the value of @code{yyleng} correctly reflecting the size of the current token, so you must not modify @code{yyleng} if you are using @code{yymore()}. Second, the presence of @code{yymore()} in the scanner's action entails a minor performance penalty in the scanner's matching speed. @cindex yyless() @code{yyless(n)} returns all but the first @code{n} characters of the current token back to the input stream, where they will be rescanned when the scanner looks for the next match. @code{yytext} and @code{yyleng} are adjusted appropriately (e.g., @code{yyleng} will now be equal to @code{n}). For example, on the input @samp{foobar} the following will write out @samp{foobarbar}: @cindex yyless(), pushing back characters @cindex pushing back characters with yyless @example @verbatim %% foobar ECHO; yyless(3); [a-z]+ ECHO; @end verbatim @end example An argument of 0 to @code{yyless()} will cause the entire current input string to be scanned again. Unless you've changed how the scanner will subsequently process its input (using @code{BEGIN}, for example), this will result in an endless loop. Note that @code{yyless()} is a macro and can only be used in the flex input file, not from other source files. @cindex unput() @cindex pushing back characters with unput @code{unput(c)} puts the character @code{c} back onto the input stream. It will be the next character scanned. The following action will take the current token and cause it to be rescanned enclosed in parentheses. @cindex unput(), pushing back characters @cindex pushing back characters with unput() @example @verbatim { int i; /* Copy yytext because unput() trashes yytext */ char *yycopy = strdup( yytext ); unput( ')' ); for ( i = yyleng - 1; i >= 0; --i ) unput( yycopy[i] ); unput( '(' ); free( yycopy ); } @end verbatim @end example Note that since each @code{unput()} puts the given character back at the @emph{beginning} of the input stream, pushing back strings must be done back-to-front. @cindex %pointer, and unput() @cindex unput(), and %pointer An important potential problem when using @code{unput()} is that if you are using @code{%pointer} (the default), a call to @code{unput()} @emph{destroys} the contents of @code{yytext}, starting with its rightmost character and devouring one character to the left with each call. If you need the value of @code{yytext} preserved after a call to @code{unput()} (as in the above example), you must either first copy it elsewhere, or build your scanner using @code{%array} instead (@pxref{Matching}). @cindex pushing back EOF @cindex EOF, pushing back Finally, note that you cannot put back @samp{EOF} to attempt to mark the input stream with an end-of-file. @cindex input() @code{input()} reads the next character from the input stream. For example, the following is one way to eat up C comments: @cindex comments, discarding @cindex discarding C comments @example @verbatim %% "/*" { register int c; for ( ; ; ) { while ( (c = input()) != '*' && c != EOF ) ; /* eat up text of comment */ if ( c == '*' ) { while ( (c = input()) == '*' ) ; if ( c == '/' ) break; /* found the end */ } if ( c == EOF ) { error( "EOF in comment" ); break; } } } @end verbatim @end example @cindex input(), and C++ @cindex yyinput() (Note that if the scanner is compiled using @code{C++}, then @code{input()} is instead referred to as @b{yyinput()}, in order to avoid a name clash with the @code{C++} stream by the name of @code{input}.) @cindex flushing the internal buffer @cindex YY_FLUSH_BUFFER @code{YY_FLUSH_BUFFER;} flushes the scanner's internal buffer so that the next time the scanner attempts to match a token, it will first refill the buffer using @code{YY_INPUT()} (@pxref{Generated Scanner}). This action is a special case of the more general @code{yy_flush_buffer;} function, described below (@pxref{Multiple Input Buffers}) @cindex yyterminate() @cindex terminating with yyterminate() @cindex exiting with yyterminate() @cindex halting with yyterminate() @code{yyterminate()} can be used in lieu of a return statement in an action. It terminates the scanner and returns a 0 to the scanner's caller, indicating ``all done''. By default, @code{yyterminate()} is also called when an end-of-file is encountered. It is a macro and may be redefined. @node Generated Scanner, Start Conditions, Actions, Top @chapter The Generated Scanner @cindex yylex(), in generated scanner The output of @code{flex} is the file @file{lex.yy.c}, which contains the scanning routine @code{yylex()}, a number of tables used by it for matching tokens, and a number of auxiliary routines and macros. By default, @code{yylex()} is declared as follows: @example @verbatim int yylex() { ... various definitions and the actions in here ... } @end verbatim @end example @cindex yylex(), overriding (If your environment supports function prototypes, then it will be @code{int yylex( void )}.) This definition may be changed by defining the @code{YY_DECL} macro. For example, you could use: @cindex yylex, overriding the prototype of @example @verbatim #define YY_DECL float lexscan( a, b ) float a, b; @end verbatim @end example to give the scanning routine the name @code{lexscan}, returning a float, and taking two floats as arguments. Note that if you give arguments to the scanning routine using a K&R-style/non-prototyped function declaration, you must terminate the definition with a semi-colon (;). @code{flex} generates @samp{C99} function definitions by default. However flex does have the ability to generate obsolete, er, @samp{traditional}, function definitions. This is to support bootstrapping gcc on old systems. Unfortunately, traditional definitions prevent us from using any standard data types smaller than int (such as short, char, or bool) as function arguments. For this reason, future versions of @code{flex} may generate standard C99 code only, leaving K&R-style functions to the historians. Currently, if you do @strong{not} want @samp{C99} definitions, then you must use @code{%option noansi-definitions}. @cindex stdin, default for yyin @cindex yyin Whenever @code{yylex()} is called, it scans tokens from the global input file @file{yyin} (which defaults to stdin). It continues until it either reaches an end-of-file (at which point it returns the value 0) or one of its actions executes a @code{return} statement. @cindex EOF and yyrestart() @cindex end-of-file, and yyrestart() @cindex yyrestart() If the scanner reaches an end-of-file, subsequent calls are undefined unless either @file{yyin} is pointed at a new input file (in which case scanning continues from that file), or @code{yyrestart()} is called. @code{yyrestart()} takes one argument, a @code{FILE *} pointer (which can be NULL, if you've set up @code{YY_INPUT} to scan from a source other than @code{yyin}), and initializes @file{yyin} for scanning from that file. Essentially there is no difference between just assigning @file{yyin} to a new input file or using @code{yyrestart()} to do so; the latter is available for compatibility with previous versions of @code{flex}, and because it can be used to switch input files in the middle of scanning. It can also be used to throw away the current input buffer, by calling it with an argument of @file{yyin}; but it would be better to use @code{YY_FLUSH_BUFFER} (@pxref{Actions}). Note that @code{yyrestart()} does @emph{not} reset the start condition to @code{INITIAL} (@pxref{Start Conditions}). @cindex RETURN, within actions If @code{yylex()} stops scanning due to executing a @code{return} statement in one of the actions, the scanner may then be called again and it will resume scanning where it left off. @cindex YY_INPUT By default (and for purposes of efficiency), the scanner uses block-reads rather than simple @code{getc()} calls to read characters from @file{yyin}. The nature of how it gets its input can be controlled by defining the @code{YY_INPUT} macro. The calling sequence for @code{YY_INPUT()} is @code{YY_INPUT(buf,result,max_size)}. Its action is to place up to @code{max_size} characters in the character array @code{buf} and return in the integer variable @code{result} either the number of characters read or the constant @code{YY_NULL} (0 on Unix systems) to indicate @samp{EOF}. The default @code{YY_INPUT} reads from the global file-pointer @file{yyin}. @cindex YY_INPUT, overriding Here is a sample definition of @code{YY_INPUT} (in the definitions section of the input file): @example @verbatim %{ #define YY_INPUT(buf,result,max_size) \ { \ int c = getchar(); \ result = (c == EOF) ? YY_NULL : (buf[0] = c, 1); \ } %} @end verbatim @end example This definition will change the input processing to occur one character at a time. @cindex yywrap() When the scanner receives an end-of-file indication from YY_INPUT, it then checks the @code{yywrap()} function. If @code{yywrap()} returns false (zero), then it is assumed that the function has gone ahead and set up @file{yyin} to point to another input file, and scanning continues. If it returns true (non-zero), then the scanner terminates, returning 0 to its caller. Note that in either case, the start condition remains unchanged; it does @emph{not} revert to @code{INITIAL}. @cindex yywrap, default for @cindex noyywrap, %option @cindex %option noyywrapp If you do not supply your own version of @code{yywrap()}, then you must either use @code{%option noyywrap} (in which case the scanner behaves as though @code{yywrap()} returned 1), or you must link with @samp{-lfl} to obtain the default version of the routine, which always returns 1. For scanning from in-memory buffers (e.g., scanning strings), see @ref{Scanning Strings}. @xref{Multiple Input Buffers}. @cindex ECHO, and yyout @cindex yyout @cindex stdout, as default for yyout The scanner writes its @code{ECHO} output to the @file{yyout} global (default, @file{stdout}), which may be redefined by the user simply by assigning it to some other @code{FILE} pointer. @node Start Conditions, Multiple Input Buffers, Generated Scanner, Top @chapter Start Conditions @cindex start conditions @code{flex} provides a mechanism for conditionally activating rules. Any rule whose pattern is prefixed with @samp{} will only be active when the scanner is in the @dfn{start condition} named @code{sc}. For example, @c proofread edit stopped here @example @verbatim [^"]* { /* eat up the string body ... */ ... } @end verbatim @end example will be active only when the scanner is in the @code{STRING} start condition, and @cindex start conditions, multiple @example @verbatim \. { /* handle an escape ... */ ... } @end verbatim @end example will be active only when the current start condition is either @code{INITIAL}, @code{STRING}, or @code{QUOTE}. @cindex start conditions, inclusive v.s.@: exclusive Start conditions are declared in the definitions (first) section of the input using unindented lines beginning with either @samp{%s} or @samp{%x} followed by a list of names. The former declares @dfn{inclusive} start conditions, the latter @dfn{exclusive} start conditions. A start condition is activated using the @code{BEGIN} action. Until the next @code{BEGIN} action is executed, rules with the given start condition will be active and rules with other start conditions will be inactive. If the start condition is inclusive, then rules with no start conditions at all will also be active. If it is exclusive, then @emph{only} rules qualified with the start condition will be active. A set of rules contingent on the same exclusive start condition describe a scanner which is independent of any of the other rules in the @code{flex} input. Because of this, exclusive start conditions make it easy to specify ``mini-scanners'' which scan portions of the input that are syntactically different from the rest (e.g., comments). If the distinction between inclusive and exclusive start conditions is still a little vague, here's a simple example illustrating the connection between the two. The set of rules: @cindex start conditions, inclusive @example @verbatim %s example %% foo do_something(); bar something_else(); @end verbatim @end example is equivalent to @cindex start conditions, exclusive @example @verbatim %x example %% foo do_something(); bar something_else(); @end verbatim @end example Without the @code{} qualifier, the @code{bar} pattern in the second example wouldn't be active (i.e., couldn't match) when in start condition @code{example}. If we just used @code{} to qualify @code{bar}, though, then it would only be active in @code{example} and not in @code{INITIAL}, while in the first example it's active in both, because in the first example the @code{example} start condition is an inclusive @code{(%s)} start condition. @cindex start conditions, special wildcard condition Also note that the special start-condition specifier @code{<*>} matches every start condition. Thus, the above example could also have been written: @cindex start conditions, use of wildcard condition (<*>) @example @verbatim %x example %% foo do_something(); <*>bar something_else(); @end verbatim @end example The default rule (to @code{ECHO} any unmatched character) remains active in start conditions. It is equivalent to: @cindex start conditions, behavior of default rule @example @verbatim <*>.|\n ECHO; @end verbatim @end example @cindex BEGIN, explanation @findex BEGIN @vindex INITIAL @code{BEGIN(0)} returns to the original state where only the rules with no start conditions are active. This state can also be referred to as the start-condition @code{INITIAL}, so @code{BEGIN(INITIAL)} is equivalent to @code{BEGIN(0)}. (The parentheses around the start condition name are not required but are considered good style.) @code{BEGIN} actions can also be given as indented code at the beginning of the rules section. For example, the following will cause the scanner to enter the @code{SPECIAL} start condition whenever @code{yylex()} is called and the global variable @code{enter_special} is true: @cindex start conditions, using BEGIN @example @verbatim int enter_special; %x SPECIAL %% if ( enter_special ) BEGIN(SPECIAL); blahblahblah ...more rules follow... @end verbatim @end example To illustrate the uses of start conditions, here is a scanner which provides two different interpretations of a string like @samp{123.456}. By default it will treat it as three tokens, the integer @samp{123}, a dot (@samp{.}), and the integer @samp{456}. But if the string is preceded earlier in the line by the string @samp{expect-floats} it will treat it as a single token, the floating-point number @samp{123.456}: @cindex start conditions, for different interpretations of same input @example @verbatim %{ #include %} %s expect %% expect-floats BEGIN(expect); [0-9]+.[0-9]+ { printf( "found a float, = %f\n", atof( yytext ) ); } \n { /* that's the end of the line, so * we need another "expect-number" * before we'll recognize any more * numbers */ BEGIN(INITIAL); } [0-9]+ { printf( "found an integer, = %d\n", atoi( yytext ) ); } "." printf( "found a dot\n" ); @end verbatim @end example @cindex comments, example of scanning C comments Here is a scanner which recognizes (and discards) C comments while maintaining a count of the current input line. @cindex recognizing C comments @example @verbatim %x comment %% int line_num = 1; "/*" BEGIN(comment); [^*\n]* /* eat anything that's not a '*' */ "*"+[^*/\n]* /* eat up '*'s not followed by '/'s */ \n ++line_num; "*"+"/" BEGIN(INITIAL); @end verbatim @end example This scanner goes to a bit of trouble to match as much text as possible with each rule. In general, when attempting to write a high-speed scanner try to match as much possible in each rule, as it's a big win. Note that start-conditions names are really integer values and can be stored as such. Thus, the above could be extended in the following fashion: @cindex start conditions, integer values @cindex using integer values of start condition names @example @verbatim %x comment foo %% int line_num = 1; int comment_caller; "/*" { comment_caller = INITIAL; BEGIN(comment); } ... "/*" { comment_caller = foo; BEGIN(comment); } [^*\n]* /* eat anything that's not a '*' */ "*"+[^*/\n]* /* eat up '*'s not followed by '/'s */ \n ++line_num; "*"+"/" BEGIN(comment_caller); @end verbatim @end example @cindex YY_START, example Furthermore, you can access the current start condition using the integer-valued @code{YY_START} macro. For example, the above assignments to @code{comment_caller} could instead be written @cindex getting current start state with YY_START @example @verbatim comment_caller = YY_START; @end verbatim @end example @vindex YY_START Flex provides @code{YYSTATE} as an alias for @code{YY_START} (since that is what's used by AT&T @code{lex}). For historical reasons, start conditions do not have their own name-space within the generated scanner. The start condition names are unmodified in the generated scanner and generated header. @xref{option-header}. @xref{option-prefix}. Finally, here's an example of how to match C-style quoted strings using exclusive start conditions, including expanded escape sequences (but not including checking for a string that's too long): @cindex matching C-style double-quoted strings @example @verbatim %x str %% char string_buf[MAX_STR_CONST]; char *string_buf_ptr; \" string_buf_ptr = string_buf; BEGIN(str); \" { /* saw closing quote - all done */ BEGIN(INITIAL); *string_buf_ptr = '\0'; /* return string constant token type and * value to parser */ } \n { /* error - unterminated string constant */ /* generate error message */ } \\[0-7]{1,3} { /* octal escape sequence */ int result; (void) sscanf( yytext + 1, "%o", &result ); if ( result > 0xff ) /* error, constant is out-of-bounds */ *string_buf_ptr++ = result; } \\[0-9]+ { /* generate error - bad escape sequence; something * like '\48' or '\0777777' */ } \\n *string_buf_ptr++ = '\n'; \\t *string_buf_ptr++ = '\t'; \\r *string_buf_ptr++ = '\r'; \\b *string_buf_ptr++ = '\b'; \\f *string_buf_ptr++ = '\f'; \\(.|\n) *string_buf_ptr++ = yytext[1]; [^\\\n\"]+ { char *yptr = yytext; while ( *yptr ) *string_buf_ptr++ = *yptr++; } @end verbatim @end example @cindex start condition, applying to multiple patterns Often, such as in some of the examples above, you wind up writing a whole bunch of rules all preceded by the same start condition(s). Flex makes this a little easier and cleaner by introducing a notion of start condition @dfn{scope}. A start condition scope is begun with: @example @verbatim { @end verbatim @end example where @code{SCs} is a list of one or more start conditions. Inside the start condition scope, every rule automatically has the prefix @code{SCs>} applied to it, until a @samp{@}} which matches the initial @samp{@{}. So, for example, @cindex extended scope of start conditions @example @verbatim { "\\n" return '\n'; "\\r" return '\r'; "\\f" return '\f'; "\\0" return '\0'; } @end verbatim @end example is equivalent to: @example @verbatim "\\n" return '\n'; "\\r" return '\r'; "\\f" return '\f'; "\\0" return '\0'; @end verbatim @end example Start condition scopes may be nested. @cindex stacks, routines for manipulating @cindex start conditions, use of a stack The following routines are available for manipulating stacks of start conditions: @deftypefun void yy_push_state ( int @code{new_state} ) pushes the current start condition onto the top of the start condition stack and switches to @code{new_state} as though you had used @code{BEGIN new_state} (recall that start condition names are also integers). @end deftypefun @deftypefun void yy_pop_state () pops the top of the stack and switches to it via @code{BEGIN}. @end deftypefun @deftypefun int yy_top_state () returns the top of the stack without altering the stack's contents. @end deftypefun @cindex memory, for start condition stacks The start condition stack grows dynamically and so has no built-in size limitation. If memory is exhausted, program execution aborts. To use start condition stacks, your scanner must include a @code{%option stack} directive (@pxref{Scanner Options}). @node Multiple Input Buffers, EOF, Start Conditions, Top @chapter Multiple Input Buffers @cindex multiple input streams Some scanners (such as those which support ``include'' files) require reading from several input streams. As @code{flex} scanners do a large amount of buffering, one cannot control where the next input will be read from by simply writing a @code{YY_INPUT()} which is sensitive to the scanning context. @code{YY_INPUT()} is only called when the scanner reaches the end of its buffer, which may be a long time after scanning a statement such as an @code{include} statement which requires switching the input source. To negotiate these sorts of problems, @code{flex} provides a mechanism for creating and switching between multiple input buffers. An input buffer is created by using: @cindex memory, allocating input buffers @deftypefun YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ) @end deftypefun which takes a @code{FILE} pointer and a size and creates a buffer associated with the given file and large enough to hold @code{size} characters (when in doubt, use @code{YY_BUF_SIZE} for the size). It returns a @code{YY_BUFFER_STATE} handle, which may then be passed to other routines (see below). @tindex YY_BUFFER_STATE The @code{YY_BUFFER_STATE} type is a pointer to an opaque @code{struct yy_buffer_state} structure, so you may safely initialize @code{YY_BUFFER_STATE} variables to @code{((YY_BUFFER_STATE) 0)} if you wish, and also refer to the opaque structure in order to correctly declare input buffers in source files other than that of your scanner. Note that the @code{FILE} pointer in the call to @code{yy_create_buffer} is only used as the value of @file{yyin} seen by @code{YY_INPUT}. If you redefine @code{YY_INPUT()} so it no longer uses @file{yyin}, then you can safely pass a NULL @code{FILE} pointer to @code{yy_create_buffer}. You select a particular buffer to scan from using: @deftypefun void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ) @end deftypefun The above function switches the scanner's input buffer so subsequent tokens will come from @code{new_buffer}. Note that @code{yy_switch_to_buffer()} may be used by @code{yywrap()} to set things up for continued scanning, instead of opening a new file and pointing @file{yyin} at it. If you are looking for a stack of input buffers, then you want to use @code{yypush_buffer_state()} instead of this function. Note also that switching input sources via either @code{yy_switch_to_buffer()} or @code{yywrap()} does @emph{not} change the start condition. @cindex memory, deleting input buffers @deftypefun void yy_delete_buffer ( YY_BUFFER_STATE buffer ) @end deftypefun is used to reclaim the storage associated with a buffer. (@code{buffer} can be NULL, in which case the routine does nothing.) You can also clear the current contents of a buffer using: @cindex pushing an input buffer @cindex stack, input buffer push @deftypefun void yypush_buffer_state ( YY_BUFFER_STATE buffer ) @end deftypefun This function pushes the new buffer state onto an internal stack. The pushed state becomes the new current state. The stack is maintained by flex and will grow as required. This function is intended to be used instead of @code{yy_switch_to_buffer}, when you want to change states, but preserve the current state for later use. @cindex popping an input buffer @cindex stack, input buffer pop @deftypefun void yypop_buffer_state ( ) @end deftypefun This function removes the current state from the top of the stack, and deletes it by calling @code{yy_delete_buffer}. The next state on the stack, if any, becomes the new current state. @cindex clearing an input buffer @cindex flushing an input buffer @deftypefun void yy_flush_buffer ( YY_BUFFER_STATE buffer ) @end deftypefun This function discards the buffer's contents, so the next time the scanner attempts to match a token from the buffer, it will first fill the buffer anew using @code{YY_INPUT()}. @deftypefun YY_BUFFER_STATE yy_new_buffer ( FILE *file, int size ) @end deftypefun is an alias for @code{yy_create_buffer()}, provided for compatibility with the C++ use of @code{new} and @code{delete} for creating and destroying dynamic objects. @cindex YY_CURRENT_BUFFER, and multiple buffers Finally, the macro @code{YY_CURRENT_BUFFER} macro returns a @code{YY_BUFFER_STATE} handle to the current buffer. It should not be used as an lvalue. @cindex EOF, example using multiple input buffers Here are two examples of using these features for writing a scanner which expands include files (the @code{<>} feature is discussed below). This first example uses yypush_buffer_state and yypop_buffer_state. Flex maintains the stack internally. @cindex handling include files with multiple input buffers @example @verbatim /* the "incl" state is used for picking up the name * of an include file */ %x incl %% include BEGIN(incl); [a-z]+ ECHO; [^a-z\n]*\n? ECHO; [ \t]* /* eat the whitespace */ [^ \t\n]+ { /* got the include file name */ yyin = fopen( yytext, "r" ); if ( ! yyin ) error( ... ); yypush_buffer_state(yy_create_buffer( yyin, YY_BUF_SIZE )); BEGIN(INITIAL); } <> { yypop_buffer_state(); if ( !YY_CURRENT_BUFFER ) { yyterminate(); } } @end verbatim @end example The second example, below, does the same thing as the previous example did, but manages its own input buffer stack manually (instead of letting flex do it). @cindex handling include files with multiple input buffers @example @verbatim /* the "incl" state is used for picking up the name * of an include file */ %x incl %{ #define MAX_INCLUDE_DEPTH 10 YY_BUFFER_STATE include_stack[MAX_INCLUDE_DEPTH]; int include_stack_ptr = 0; %} %% include BEGIN(incl); [a-z]+ ECHO; [^a-z\n]*\n? ECHO; [ \t]* /* eat the whitespace */ [^ \t\n]+ { /* got the include file name */ if ( include_stack_ptr >= MAX_INCLUDE_DEPTH ) { fprintf( stderr, "Includes nested too deeply" ); exit( 1 ); } include_stack[include_stack_ptr++] = YY_CURRENT_BUFFER; yyin = fopen( yytext, "r" ); if ( ! yyin ) error( ... ); yy_switch_to_buffer( yy_create_buffer( yyin, YY_BUF_SIZE ) ); BEGIN(INITIAL); } <> { if ( --include_stack_ptr 0 ) { yyterminate(); } else { yy_delete_buffer( YY_CURRENT_BUFFER ); yy_switch_to_buffer( include_stack[include_stack_ptr] ); } } @end verbatim @end example @anchor{Scanning Strings} @cindex strings, scanning strings instead of files The following routines are available for setting up input buffers for scanning in-memory strings instead of files. All of them create a new input buffer for scanning the string, and return a corresponding @code{YY_BUFFER_STATE} handle (which you should delete with @code{yy_delete_buffer()} when done with it). They also switch to the new buffer using @code{yy_switch_to_buffer()}, so the next call to @code{yylex()} will start scanning the string. @deftypefun YY_BUFFER_STATE yy_scan_string ( const char *str ) scans a NUL-terminated string. @end deftypefun @deftypefun YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ) scans @code{len} bytes (including possibly @code{NUL}s) starting at location @code{bytes}. @end deftypefun Note that both of these functions create and scan a @emph{copy} of the string or bytes. (This may be desirable, since @code{yylex()} modifies the contents of the buffer it is scanning.) You can avoid the copy by using: @vindex YY_END_OF_BUFFER_CHAR @deftypefun YY_BUFFER_STATE yy_scan_buffer (char *base, yy_size_t size) which scans in place the buffer starting at @code{base}, consisting of @code{size} bytes, the last two bytes of which @emph{must} be @code{YY_END_OF_BUFFER_CHAR} (ASCII NUL). These last two bytes are not scanned; thus, scanning consists of @code{base[0]} through @code{base[size-2]}, inclusive. @end deftypefun If you fail to set up @code{base} in this manner (i.e., forget the final two @code{YY_END_OF_BUFFER_CHAR} bytes), then @code{yy_scan_buffer()} returns a NULL pointer instead of creating a new input buffer. @deftp {Data type} yy_size_t is an integral type to which you can cast an integer expression reflecting the size of the buffer. @end deftp @node EOF, Misc Macros, Multiple Input Buffers, Top @chapter End-of-File Rules @cindex EOF, explanation The special rule @code{<>} indicates actions which are to be taken when an end-of-file is encountered and @code{yywrap()} returns non-zero (i.e., indicates no further files to process). The action must finish by doing one of the following things: @itemize @item @findex YY_NEW_FILE (now obsolete) assigning @file{yyin} to a new input file (in previous versions of @code{flex}, after doing the assignment you had to call the special action @code{YY_NEW_FILE}. This is no longer necessary.) @item executing a @code{return} statement; @item executing the special @code{yyterminate()} action. @item or, switching to a new buffer using @code{yy_switch_to_buffer()} as shown in the example above. @end itemize <> rules may not be used with other patterns; they may only be qualified with a list of start conditions. If an unqualified <> rule is given, it applies to @emph{all} start conditions which do not already have <> actions. To specify an <> rule for only the initial start condition, use: @example @verbatim <> @end verbatim @end example These rules are useful for catching things like unclosed comments. An example: @cindex <>, use of @example @verbatim %x quote %% ...other rules for dealing with quotes... <> { error( "unterminated quote" ); yyterminate(); } <> { if ( *++filelist ) yyin = fopen( *filelist, "r" ); else yyterminate(); } @end verbatim @end example @node Misc Macros, User Values, EOF, Top @chapter Miscellaneous Macros @hkindex YY_USER_ACTION The macro @code{YY_USER_ACTION} can be defined to provide an action which is always executed prior to the matched rule's action. For example, it could be #define'd to call a routine to convert yytext to lower-case. When @code{YY_USER_ACTION} is invoked, the variable @code{yy_act} gives the number of the matched rule (rules are numbered starting with 1). Suppose you want to profile how often each of your rules is matched. The following would do the trick: @cindex YY_USER_ACTION to track each time a rule is matched @example @verbatim #define YY_USER_ACTION ++ctr[yy_act] @end verbatim @end example @vindex YY_NUM_RULES where @code{ctr} is an array to hold the counts for the different rules. Note that the macro @code{YY_NUM_RULES} gives the total number of rules (including the default rule), even if you use @samp{-s)}, so a correct declaration for @code{ctr} is: @example @verbatim int ctr[YY_NUM_RULES]; @end verbatim @end example @hkindex YY_USER_INIT The macro @code{YY_USER_INIT} may be defined to provide an action which is always executed before the first scan (and before the scanner's internal initializations are done). For example, it could be used to call a routine to read in a data table or open a logging file. @findex yy_set_interactive The macro @code{yy_set_interactive(is_interactive)} can be used to control whether the current buffer is considered @dfn{interactive}. An interactive buffer is processed more slowly, but must be used when the scanner's input source is indeed interactive to avoid problems due to waiting to fill buffers (see the discussion of the @samp{-I} flag in @ref{Scanner Options}). A non-zero value in the macro invocation marks the buffer as interactive, a zero value as non-interactive. Note that use of this macro overrides @code{%option always-interactive} or @code{%option never-interactive} (@pxref{Scanner Options}). @code{yy_set_interactive()} must be invoked prior to beginning to scan the buffer that is (or is not) to be considered interactive. @cindex BOL, setting it @findex yy_set_bol The macro @code{yy_set_bol(at_bol)} can be used to control whether the current buffer's scanning context for the next token match is done as though at the beginning of a line. A non-zero macro argument makes rules anchored with @samp{^} active, while a zero argument makes @samp{^} rules inactive. @cindex BOL, checking the BOL flag @findex YY_AT_BOL The macro @code{YY_AT_BOL()} returns true if the next token scanned from the current buffer will have @samp{^} rules active, false otherwise. @cindex actions, redefining YY_BREAK @hkindex YY_BREAK In the generated scanner, the actions are all gathered in one large switch statement and separated using @code{YY_BREAK}, which may be redefined. By default, it is simply a @code{break}, to separate each rule's action from the following rule's. Redefining @code{YY_BREAK} allows, for example, C++ users to #define YY_BREAK to do nothing (while being very careful that every rule ends with a @code{break} or a @code{return}!) to avoid suffering from unreachable statement warnings where because a rule's action ends with @code{return}, the @code{YY_BREAK} is inaccessible. @node User Values, Yacc, Misc Macros, Top @chapter Values Available To the User This chapter summarizes the various values available to the user in the rule actions. @table @code @vindex yytext @item char *yytext holds the text of the current token. It may be modified but not lengthened (you cannot append characters to the end). @cindex yytext, default array size @cindex array, default size for yytext @vindex YYLMAX If the special directive @code{%array} appears in the first section of the scanner description, then @code{yytext} is instead declared @code{char yytext[YYLMAX]}, where @code{YYLMAX} is a macro definition that you can redefine in the first section if you don't like the default value (generally 8KB). Using @code{%array} results in somewhat slower scanners, but the value of @code{yytext} becomes immune to calls to @code{unput()}, which potentially destroy its value when @code{yytext} is a character pointer. The opposite of @code{%array} is @code{%pointer}, which is the default. @cindex C++ and %array You cannot use @code{%array} when generating C++ scanner classes (the @samp{-+} flag). @vindex yyleng @item int yyleng holds the length of the current token. @vindex yyin @item FILE *yyin is the file which by default @code{flex} reads from. It may be redefined but doing so only makes sense before scanning begins or after an EOF has been encountered. Changing it in the midst of scanning will have unexpected results since @code{flex} buffers its input; use @code{yyrestart()} instead. Once scanning terminates because an end-of-file has been seen, you can assign @file{yyin} at the new input file and then call the scanner again to continue scanning. @findex yyrestart @item void yyrestart( FILE *new_file ) may be called to point @file{yyin} at the new input file. The switch-over to the new file is immediate (any previously buffered-up input is lost). Note that calling @code{yyrestart()} with @file{yyin} as an argument thus throws away the current input buffer and continues scanning the same input file. @vindex yyout @item FILE *yyout is the file to which @code{ECHO} actions are done. It can be reassigned by the user. @vindex YY_CURRENT_BUFFER @item YY_CURRENT_BUFFER returns a @code{YY_BUFFER_STATE} handle to the current buffer. @vindex YY_START @item YY_START returns an integer value corresponding to the current start condition. You can subsequently use this value with @code{BEGIN} to return to that start condition. @end table @node Yacc, Scanner Options, User Values, Top @chapter Interfacing with Yacc @cindex yacc, interface @vindex yylval, with yacc One of the main uses of @code{flex} is as a companion to the @code{yacc} parser-generator. @code{yacc} parsers expect to call a routine named @code{yylex()} to find the next input token. The routine is supposed to return the type of the next token as well as putting any associated value in the global @code{yylval}. To use @code{flex} with @code{yacc}, one specifies the @samp{-d} option to @code{yacc} to instruct it to generate the file @file{y.tab.h} containing definitions of all the @code{%tokens} appearing in the @code{yacc} input. This file is then included in the @code{flex} scanner. For example, if one of the tokens is @code{TOK_NUMBER}, part of the scanner might look like: @cindex yacc interface @example @verbatim %{ #include "y.tab.h" %} %% [0-9]+ yylval = atoi( yytext ); return TOK_NUMBER; @end verbatim @end example @node Scanner Options, Performance, Yacc, Top @chapter Scanner Options @cindex command-line options @cindex options, command-line @cindex arguments, command-line The various @code{flex} options are categorized by function in the following menu. If you want to lookup a particular option by name, @xref{Index of Scanner Options}. @menu * Options for Specifying Filenames:: * Options Affecting Scanner Behavior:: * Code-Level And API Options:: * Options for Scanner Speed and Size:: * Debugging Options:: * Miscellaneous Options:: @end menu Even though there are many scanner options, a typical scanner might only specify the following options: @example @verbatim %option 8bit reentrant bison-bridge %option warn nodefault %option yylineno %option outfile="scanner.c" header-file="scanner.h" @end verbatim @end example The first line specifies the general type of scanner we want. The second line specifies that we are being careful. The third line asks flex to track line numbers. The last line tells flex what to name the files. (The options can be specified in any order. We just divided them.) @code{flex} also provides a mechanism for controlling options within the scanner specification itself, rather than from the flex command-line. This is done by including @code{%option} directives in the first section of the scanner specification. You can specify multiple options with a single @code{%option} directive, and multiple directives in the first section of your flex input file. Most options are given simply as names, optionally preceded by the word @samp{no} (with no intervening whitespace) to negate their meaning. The names are the same as their long-option equivalents (but without the leading @samp{--} ). @code{flex} scans your rule actions to determine whether you use the @code{REJECT} or @code{yymore()} features. The @code{REJECT} and @code{yymore} options are available to override its decision as to whether you use the options, either by setting them (e.g., @code{%option reject)} to indicate the feature is indeed used, or unsetting them to indicate it actually is not used (e.g., @code{%option noyymore)}. A number of options are available for lint purists who want to suppress the appearance of unneeded routines in the generated scanner. Each of the following, if unset (e.g., @code{%option nounput}), results in the corresponding routine not appearing in the generated scanner: @example @verbatim input, unput yy_push_state, yy_pop_state, yy_top_state yy_scan_buffer, yy_scan_bytes, yy_scan_string yyget_extra, yyset_extra, yyget_leng, yyget_text, yyget_lineno, yyset_lineno, yyget_in, yyset_in, yyget_out, yyset_out, yyget_lval, yyset_lval, yyget_lloc, yyset_lloc, yyget_debug, yyset_debug @end verbatim @end example (though @code{yy_push_state()} and friends won't appear anyway unless you use @code{%option stack)}. @node Options for Specifying Filenames, Options Affecting Scanner Behavior, Scanner Options, Scanner Options @section Options for Specifying Filenames @table @samp @anchor{option-header} @opindex ---header-file @opindex header-file @item --header-file=FILE, @code{%option header-file="FILE"} instructs flex to write a C header to @file{FILE}. This file contains function prototypes, extern variables, and types used by the scanner. Only the external API is exported by the header file. Many macros that are usable from within scanner actions are not exported to the header file. This is due to namespace problems and the goal of a clean external API. While in the header, the macro @code{yyIN_HEADER} is defined, where @samp{yy} is substituted with the appropriate prefix. The @samp{--header-file} option is not compatible with the @samp{--c++} option, since the C++ scanner provides its own header in @file{yyFlexLexer.h}. @anchor{option-outfile} @opindex -o @opindex ---outfile @opindex outfile @item -oFILE, --outfile=FILE, @code{%option outfile="FILE"} directs flex to write the scanner to the file @file{FILE} instead of @file{lex.yy.c}. If you combine @samp{--outfile} with the @samp{--stdout} option, then the scanner is written to @file{stdout} but its @code{#line} directives (see the @samp{-l} option above) refer to the file @file{FILE}. @anchor{option-stdout} @opindex -t @opindex ---stdout @opindex stdout @item -t, --stdout, @code{%option stdout} instructs @code{flex} to write the scanner it generates to standard output instead of @file{lex.yy.c}. @opindex ---skel @item -SFILE, --skel=FILE overrides the default skeleton file from which @code{flex} constructs its scanners. You'll never need this option unless you are doing @code{flex} maintenance or development. @opindex ---tables-file @opindex tables-file @item --tables-file=FILE Write serialized scanner dfa tables to FILE. The generated scanner will not contain the tables, and requires them to be loaded at runtime. @xref{serialization}. @opindex ---tables-verify @opindex tables-verify @item --tables-verify This option is for flex development. We document it here in case you stumble upon it by accident or in case you suspect some inconsistency in the serialized tables. Flex will serialize the scanner dfa tables but will also generate the in-code tables as it normally does. At runtime, the scanner will verify that the serialized tables match the in-code tables, instead of loading them. @end table @node Options Affecting Scanner Behavior, Code-Level And API Options, Options for Specifying Filenames, Scanner Options @section Options Affecting Scanner Behavior @table @samp @anchor{option-case-insensitive} @opindex -i @opindex ---case-insensitive @opindex case-insensitive @item -i, --case-insensitive, @code{%option case-insensitive} instructs @code{flex} to generate a @dfn{case-insensitive} scanner. The case of letters given in the @code{flex} input patterns will be ignored, and tokens in the input will be matched regardless of case. The matched text given in @code{yytext} will have the preserved case (i.e., it will not be folded). For tricky behavior, see @ref{case and character ranges}. @anchor{option-lex-compat} @opindex -l @opindex ---lex-compat @opindex lex-compat @item -l, --lex-compat, @code{%option lex-compat} turns on maximum compatibility with the original AT&T @code{lex} implementation. Note that this does not mean @emph{full} compatibility. Use of this option costs a considerable amount of performance, and it cannot be used with the @samp{--c++}, @samp{--full}, @samp{--fast}, @samp{-Cf}, or @samp{-CF} options. For details on the compatibilities it provides, see @ref{Lex and Posix}. This option also results in the name @code{YY_FLEX_LEX_COMPAT} being @code{#define}'d in the generated scanner. @anchor{option-batch} @opindex -B @opindex ---batch @opindex batch @item -B, --batch, @code{%option batch} instructs @code{flex} to generate a @dfn{batch} scanner, the opposite of @emph{interactive} scanners generated by @samp{--interactive} (see below). In general, you use @samp{-B} when you are @emph{certain} that your scanner will never be used interactively, and you want to squeeze a @emph{little} more performance out of it. If your goal is instead to squeeze out a @emph{lot} more performance, you should be using the @samp{-Cf} or @samp{-CF} options, which turn on @samp{--batch} automatically anyway. @anchor{option-interactive} @opindex -I @opindex ---interactive @opindex interactive @item -I, --interactive, @code{%option interactive} instructs @code{flex} to generate an @i{interactive} scanner. An interactive scanner is one that only looks ahead to decide what token has been matched if it absolutely must. It turns out that always looking one extra character ahead, even if the scanner has already seen enough text to disambiguate the current token, is a bit faster than only looking ahead when necessary. But scanners that always look ahead give dreadful interactive performance; for example, when a user types a newline, it is not recognized as a newline token until they enter @emph{another} token, which often means typing in another whole line. @code{flex} scanners default to @code{interactive} unless you use the @samp{-Cf} or @samp{-CF} table-compression options (@pxref{Performance}). That's because if you're looking for high-performance you should be using one of these options, so if you didn't, @code{flex} assumes you'd rather trade off a bit of run-time performance for intuitive interactive behavior. Note also that you @emph{cannot} use @samp{--interactive} in conjunction with @samp{-Cf} or @samp{-CF}. Thus, this option is not really needed; it is on by default for all those cases in which it is allowed. You can force a scanner to @emph{not} be interactive by using @samp{--batch} @anchor{option-7bit} @opindex -7 @opindex ---7bit @opindex 7bit @item -7, --7bit, @code{%option 7bit} instructs @code{flex} to generate a 7-bit scanner, i.e., one which can only recognize 7-bit characters in its input. The advantage of using @samp{--7bit} is that the scanner's tables can be up to half the size of those generated using the @samp{--8bit}. The disadvantage is that such scanners often hang or crash if their input contains an 8-bit character. Note, however, that unless you generate your scanner using the @samp{-Cf} or @samp{-CF} table compression options, use of @samp{--7bit} will save only a small amount of table space, and make your scanner considerably less portable. @code{Flex}'s default behavior is to generate an 8-bit scanner unless you use the @samp{-Cf} or @samp{-CF}, in which case @code{flex} defaults to generating 7-bit scanners unless your site was always configured to generate 8-bit scanners (as will often be the case with non-USA sites). You can tell whether flex generated a 7-bit or an 8-bit scanner by inspecting the flag summary in the @samp{--verbose} output as described above. Note that if you use @samp{-Cfe} or @samp{-CFe} @code{flex} still defaults to generating an 8-bit scanner, since usually with these compression options full 8-bit tables are not much more expensive than 7-bit tables. @anchor{option-8bit} @opindex -8 @opindex ---8bit @opindex 8bit @item -8, --8bit, @code{%option 8bit} instructs @code{flex} to generate an 8-bit scanner, i.e., one which can recognize 8-bit characters. This flag is only needed for scanners generated using @samp{-Cf} or @samp{-CF}, as otherwise flex defaults to generating an 8-bit scanner anyway. See the discussion of @samp{--7bit} above for @code{flex}'s default behavior and the tradeoffs between 7-bit and 8-bit scanners. @anchor{option-default} @opindex ---default @opindex default @item --default, @code{%option default} generate the default rule. @anchor{option-always-interactive} @opindex ---always-interactive @opindex always-interactive @item --always-interactive, @code{%option always-interactive} instructs flex to generate a scanner which always considers its input @emph{interactive}. Normally, on each new input file the scanner calls @code{isatty()} in an attempt to determine whether the scanner's input source is interactive and thus should be read a character at a time. When this option is used, however, then no such call is made. @opindex ---never-interactive @item --never-interactive, @code{--never-interactive} instructs flex to generate a scanner which never considers its input interactive. This is the opposite of @code{always-interactive}. @anchor{option-posix} @opindex -X @opindex ---posix @opindex posix @item -X, --posix, @code{%option posix} turns on maximum compatibility with the POSIX 1003.2-1992 definition of @code{lex}. Since @code{flex} was originally designed to implement the POSIX definition of @code{lex} this generally involves very few changes in behavior. At the current writing the known differences between @code{flex} and the POSIX standard are: @itemize @item In POSIX and AT&T @code{lex}, the repeat operator, @samp{@{@}}, has lower precedence than concatenation (thus @samp{ab@{3@}} yields @samp{ababab}). Most POSIX utilities use an Extended Regular Expression (ERE) precedence that has the precedence of the repeat operator higher than concatenation (which causes @samp{ab@{3@}} to yield @samp{abbb}). By default, @code{flex} places the precedence of the repeat operator higher than concatenation which matches the ERE processing of other POSIX utilities. When either @samp{--posix} or @samp{-l} are specified, @code{flex} will use the traditional AT&T and POSIX-compliant precedence for the repeat operator where concatenation has higher precedence than the repeat operator. @end itemize @anchor{option-stack} @opindex ---stack @opindex stack @item --stack, @code{%option stack} enables the use of start condition stacks (@pxref{Start Conditions}). @anchor{option-stdinit} @opindex ---stdinit @opindex stdinit @item --stdinit, @code{%option stdinit} if set (i.e., @b{%option stdinit)} initializes @code{yyin} and @code{yyout} to @file{stdin} and @file{stdout}, instead of the default of @file{NULL}. Some existing @code{lex} programs depend on this behavior, even though it is not compliant with ANSI C, which does not require @file{stdin} and @file{stdout} to be compile-time constant. In a reentrant scanner, however, this is not a problem since initialization is performed in @code{yylex_init} at runtime. @anchor{option-yylineno} @opindex ---yylineno @opindex yylineno @item --yylineno, @code{%option yylineno} directs @code{flex} to generate a scanner that maintains the number of the current line read from its input in the global variable @code{yylineno}. This option is implied by @code{%option lex-compat}. In a reentrant C scanner, the macro @code{yylineno} is accessible regardless of the value of @code{%option yylineno}, however, its value is not modified by @code{flex} unless @code{%option yylineno} is enabled. @anchor{option-yywrap} @opindex ---yywrap @opindex yywrap @item --yywrap, @code{%option yywrap} if unset (i.e., @code{--noyywrap)}, makes the scanner not call @code{yywrap()} upon an end-of-file, but simply assume that there are no more files to scan (until the user points @file{yyin} at a new file and calls @code{yylex()} again). @end table @node Code-Level And API Options, Options for Scanner Speed and Size, Options Affecting Scanner Behavior, Scanner Options @section Code-Level And API Options @table @samp @anchor{option-ansi-definitions} @opindex ---option-ansi-definitions @opindex ansi-definitions @item --ansi-definitions, @code{%option ansi-definitions} instruct flex to generate ANSI C99 definitions for functions. This option is enabled by default. If @code{%option noansi-definitions} is specified, then the obsolete style is generated. @anchor{option-ansi-prototypes} @opindex ---option-ansi-prototypes @opindex ansi-prototypes @item --ansi-prototypes, @code{%option ansi-prototypes} instructs flex to generate ANSI C99 prototypes for functions. This option is enabled by default. If @code{noansi-prototypes} is specified, then prototypes will have empty parameter lists. @anchor{option-bison-bridge} @opindex ---bison-bridge @opindex bison-bridge @item --bison-bridge, @code{%option bison-bridge} instructs flex to generate a C scanner that is meant to be called by a @code{GNU bison} parser. The scanner has minor API changes for @code{bison} compatibility. In particular, the declaration of @code{yylex} is modified to take an additional parameter, @code{yylval}. @xref{Bison Bridge}. @anchor{option-bison-locations} @opindex ---bison-locations @opindex bison-locations @item --bison-locations, @code{%option bison-locations} instruct flex that @code{GNU bison} @code{%locations} are being used. This means @code{yylex} will be passed an additional parameter, @code{yylloc}. This option implies @code{%option bison-bridge}. @xref{Bison Bridge}. @anchor{option-noline} @opindex -L @opindex ---noline @opindex noline @item -L, --noline, @code{%option noline} instructs @code{flex} not to generate @code{#line} directives. Without this option, @code{flex} peppers the generated scanner with @code{#line} directives so error messages in the actions will be correctly located with respect to either the original @code{flex} input file (if the errors are due to code in the input file), or @file{lex.yy.c} (if the errors are @code{flex}'s fault -- you should report these sorts of errors to the email address given in @ref{Reporting Bugs}). @anchor{option-reentrant} @opindex -R @opindex ---reentrant @opindex reentrant @item -R, --reentrant, @code{%option reentrant} instructs flex to generate a reentrant C scanner. The generated scanner may safely be used in a multi-threaded environment. The API for a reentrant scanner is different than for a non-reentrant scanner @pxref{Reentrant}). Because of the API difference between reentrant and non-reentrant @code{flex} scanners, non-reentrant flex code must be modified before it is suitable for use with this option. This option is not compatible with the @samp{--c++} option. The option @samp{--reentrant} does not affect the performance of the scanner. @anchor{option-c++} @opindex -+ @opindex ---c++ @opindex c++ @item -+, --c++, @code{%option c++} specifies that you want flex to generate a C++ scanner class. @xref{Cxx}, for details. @anchor{option-array} @opindex ---array @opindex array @item --array, @code{%option array} specifies that you want yytext to be an array instead of a char* @anchor{option-pointer} @opindex ---pointer @opindex pointer @item --pointer, @code{%option pointer} specify that @code{yytext} should be a @code{char *}, not an array. This default is @code{char *}. @anchor{option-prefix} @opindex -P @opindex ---prefix @opindex prefix @item -PPREFIX, --prefix=PREFIX, @code{%option prefix="PREFIX"} changes the default @samp{yy} prefix used by @code{flex} for all globally-visible variable and function names to instead be @samp{PREFIX}. For example, @samp{--prefix=foo} changes the name of @code{yytext} to @code{footext}. It also changes the name of the default output file from @file{lex.yy.c} to @file{lex.foo.c}. Here is a partial list of the names affected: @example @verbatim yy_create_buffer yy_delete_buffer yy_flex_debug yy_init_buffer yy_flush_buffer yy_load_buffer_state yy_switch_to_buffer yyin yyleng yylex yylineno yyout yyrestart yytext yywrap yyalloc yyrealloc yyfree @end verbatim @end example (If you are using a C++ scanner, then only @code{yywrap} and @code{yyFlexLexer} are affected.) Within your scanner itself, you can still refer to the global variables and functions using either version of their name; but externally, they have the modified name. This option lets you easily link together multiple @code{flex} programs into the same executable. Note, though, that using this option also renames @code{yywrap()}, so you now @emph{must} either provide your own (appropriately-named) version of the routine for your scanner, or use @code{%option noyywrap}, as linking with @samp{-lfl} no longer provides one for you by default. @anchor{option-main} @opindex ---main @opindex main @item --main, @code{%option main} directs flex to provide a default @code{main()} program for the scanner, which simply calls @code{yylex()}. This option implies @code{noyywrap} (see below). @anchor{option-nounistd} @opindex ---nounistd @opindex nounistd @item --nounistd, @code{%option nounistd} suppresses inclusion of the non-ANSI header file @file{unistd.h}. This option is meant to target environments in which @file{unistd.h} does not exist. Be aware that certain options may cause flex to generate code that relies on functions normally found in @file{unistd.h}, (e.g. @code{isatty()}, @code{read()}.) If you wish to use these functions, you will have to inform your compiler where to find them. @xref{option-always-interactive}. @xref{option-read}. @anchor{option-yyclass} @opindex ---yyclass @opindex yyclass @item --yyclass=NAME, @code{%option yyclass="NAME"} only applies when generating a C++ scanner (the @samp{--c++} option). It informs @code{flex} that you have derived @code{NAME} as a subclass of @code{yyFlexLexer}, so @code{flex} will place your actions in the member function @code{foo::yylex()} instead of @code{yyFlexLexer::yylex()}. It also generates a @code{yyFlexLexer::yylex()} member function that emits a run-time error (by invoking @code{yyFlexLexer::LexerError())} if called. @xref{Cxx}. @end table @node Options for Scanner Speed and Size, Debugging Options, Code-Level And API Options, Scanner Options @section Options for Scanner Speed and Size @table @samp @item -C[aefFmr] controls the degree of table compression and, more generally, trade-offs between small scanners and fast scanners. @table @samp @opindex -C @item -C A lone @samp{-C} specifies that the scanner tables should be compressed but neither equivalence classes nor meta-equivalence classes should be used. @anchor{option-align} @opindex -Ca @opindex ---align @opindex align @item -Ca, --align, @code{%option align} (``align'') instructs flex to trade off larger tables in the generated scanner for faster performance because the elements of the tables are better aligned for memory access and computation. On some RISC architectures, fetching and manipulating longwords is more efficient than with smaller-sized units such as shortwords. This option can quadruple the size of the tables used by your scanner. @anchor{option-ecs} @opindex -Ce @opindex ---ecs @opindex ecs @item -Ce, --ecs, @code{%option ecs} directs @code{flex} to construct @dfn{equivalence classes}, i.e., sets of characters which have identical lexical properties (for example, if the only appearance of digits in the @code{flex} input is in the character class ``[0-9]'' then the digits '0', '1', ..., '9' will all be put in the same equivalence class). Equivalence classes usually give dramatic reductions in the final table/object file sizes (typically a factor of 2-5) and are pretty cheap performance-wise (one array look-up per character scanned). @opindex -Cf @item -Cf specifies that the @dfn{full} scanner tables should be generated - @code{flex} should not compress the tables by taking advantages of similar transition functions for different states. @opindex -CF @item -CF specifies that the alternate fast scanner representation (described above under the @samp{--fast} flag) should be used. This option cannot be used with @samp{--c++}. @anchor{option-meta-ecs} @opindex -Cm @opindex ---meta-ecs @opindex meta-ecs @item -Cm, --meta-ecs, @code{%option meta-ecs} directs @code{flex} to construct @dfn{meta-equivalence classes}, which are sets of equivalence classes (or characters, if equivalence classes are not being used) that are commonly used together. Meta-equivalence classes are often a big win when using compressed tables, but they have a moderate performance impact (one or two @code{if} tests and one array look-up per character scanned). @anchor{option-read} @opindex -Cr @opindex ---read @opindex read @item -Cr, --read, @code{%option read} causes the generated scanner to @emph{bypass} use of the standard I/O library (@code{stdio}) for input. Instead of calling @code{fread()} or @code{getc()}, the scanner will use the @code{read()} system call, resulting in a performance gain which varies from system to system, but in general is probably negligible unless you are also using @samp{-Cf} or @samp{-CF}. Using @samp{-Cr} can cause strange behavior if, for example, you read from @file{yyin} using @code{stdio} prior to calling the scanner (because the scanner will miss whatever text your previous reads left in the @code{stdio} input buffer). @samp{-Cr} has no effect if you define @code{YY_INPUT()} (@pxref{Generated Scanner}). @end table The options @samp{-Cf} or @samp{-CF} and @samp{-Cm} do not make sense together - there is no opportunity for meta-equivalence classes if the table is not being compressed. Otherwise the options may be freely mixed, and are cumulative. The default setting is @samp{-Cem}, which specifies that @code{flex} should generate equivalence classes and meta-equivalence classes. This setting provides the highest degree of table compression. You can trade off faster-executing scanners at the cost of larger tables with the following generally being true: @example @verbatim slowest & smallest -Cem -Cm -Ce -C -C{f,F}e -C{f,F} -C{f,F}a fastest & largest @end verbatim @end example Note that scanners with the smallest tables are usually generated and compiled the quickest, so during development you will usually want to use the default, maximal compression. @samp{-Cfe} is often a good compromise between speed and size for production scanners. @anchor{option-full} @opindex -f @opindex ---full @opindex full @item -f, --full, @code{%option full} specifies @dfn{fast scanner}. No table compression is done and @code{stdio} is bypassed. The result is large but fast. This option is equivalent to @samp{--Cfr} @anchor{option-fast} @opindex -F @opindex ---fast @opindex fast @item -F, --fast, @code{%option fast} specifies that the @emph{fast} scanner table representation should be used (and @code{stdio} bypassed). This representation is about as fast as the full table representation @samp{--full}, and for some sets of patterns will be considerably smaller (and for others, larger). In general, if the pattern set contains both @emph{keywords} and a catch-all, @emph{identifier} rule, such as in the set: @example @verbatim "case" return TOK_CASE; "switch" return TOK_SWITCH; ... "default" return TOK_DEFAULT; [a-z]+ return TOK_ID; @end verbatim @end example then you're better off using the full table representation. If only the @emph{identifier} rule is present and you then use a hash table or some such to detect the keywords, you're better off using @samp{--fast}. This option is equivalent to @samp{-CFr}. It cannot be used with @samp{--c++}. @end table @node Debugging Options, Miscellaneous Options, Options for Scanner Speed and Size, Scanner Options @section Debugging Options @table @samp @anchor{option-backup} @opindex -b @opindex ---backup @opindex backup @item -b, --backup, @code{%option backup} Generate backing-up information to @file{lex.backup}. This is a list of scanner states which require backing up and the input characters on which they do so. By adding rules one can remove backing-up states. If @emph{all} backing-up states are eliminated and @samp{-Cf} or @code{-CF} is used, the generated scanner will run faster (see the @samp{--perf-report} flag). Only users who wish to squeeze every last cycle out of their scanners need worry about this option. (@pxref{Performance}). @anchor{option-debug} @opindex -d @opindex ---debug @opindex debug @item -d, --debug, @code{%option debug} makes the generated scanner run in @dfn{debug} mode. Whenever a pattern is recognized and the global variable @code{yy_flex_debug} is non-zero (which is the default), the scanner will write to @file{stderr} a line of the form: @example @verbatim -accepting rule at line 53 ("the matched text") @end verbatim @end example The line number refers to the location of the rule in the file defining the scanner (i.e., the file that was fed to flex). Messages are also generated when the scanner backs up, accepts the default rule, reaches the end of its input buffer (or encounters a NUL; at this point, the two look the same as far as the scanner's concerned), or reaches an end-of-file. @anchor{option-perf-report} @opindex -p @opindex ---perf-report @opindex perf-report @item -p, --perf-report, @code{%option perf-report} generates a performance report to @file{stderr}. The report consists of comments regarding features of the @code{flex} input file which will cause a serious loss of performance in the resulting scanner. If you give the flag twice, you will also get comments regarding features that lead to minor performance losses. Note that the use of @code{REJECT}, and variable trailing context (@pxref{Limitations}) entails a substantial performance penalty; use of @code{yymore()}, the @samp{^} operator, and the @samp{--interactive} flag entail minor performance penalties. @anchor{option-nodefault} @opindex -s @opindex ---nodefault @opindex nodefault @item -s, --nodefault, @code{%option nodefault} causes the @emph{default rule} (that unmatched scanner input is echoed to @file{stdout)} to be suppressed. If the scanner encounters input that does not match any of its rules, it aborts with an error. This option is useful for finding holes in a scanner's rule set. @anchor{option-trace} @opindex -T @opindex ---trace @opindex trace @item -T, --trace, @code{%option trace} makes @code{flex} run in @dfn{trace} mode. It will generate a lot of messages to @file{stderr} concerning the form of the input and the resultant non-deterministic and deterministic finite automata. This option is mostly for use in maintaining @code{flex}. @anchor{option-nowarn} @opindex -w @opindex ---nowarn @opindex nowarn @item -w, --nowarn, @code{%option nowarn} suppresses warning messages. @anchor{option-verbose} @opindex -v @opindex ---verbose @opindex verbose @item -v, --verbose, @code{%option verbose} specifies that @code{flex} should write to @file{stderr} a summary of statistics regarding the scanner it generates. Most of the statistics are meaningless to the casual @code{flex} user, but the first line identifies the version of @code{flex} (same as reported by @samp{--version}), and the next line the flags used when generating the scanner, including those that are on by default. @anchor{option-warn} @opindex ---warn @opindex warn @item --warn, @code{%option warn} warn about certain things. In particular, if the default rule can be matched but no default rule has been given, the flex will warn you. We recommend using this option always. @end table @node Miscellaneous Options, , Debugging Options, Scanner Options @section Miscellaneous Options @table @samp @opindex -c @item -c A do-nothing option included for POSIX compliance. @opindex -h @opindex ---help @item -h, -?, --help generates a ``help'' summary of @code{flex}'s options to @file{stdout} and then exits. @opindex -n @item -n Another do-nothing option included for POSIX compliance. @opindex -V @opindex ---version @item -V, --version prints the version number to @file{stdout} and exits. @end table @node Performance, Cxx, Scanner Options, Top @chapter Performance Considerations @cindex performance, considerations The main design goal of @code{flex} is that it generate high-performance scanners. It has been optimized for dealing well with large sets of rules. Aside from the effects on scanner speed of the table compression @samp{-C} options outlined above, there are a number of options/actions which degrade performance. These are, from most expensive to least: @cindex REJECT, performance costs @cindex yylineno, performance costs @cindex trailing context, performance costs @example @verbatim REJECT arbitrary trailing context pattern sets that require backing up %option yylineno %array %option interactive %option always-interactive ^ beginning-of-line operator yymore() @end verbatim @end example with the first two all being quite expensive and the last two being quite cheap. Note also that @code{unput()} is implemented as a routine call that potentially does quite a bit of work, while @code{yyless()} is a quite-cheap macro. So if you are just putting back some excess text you scanned, use @code{yyless()}. @code{REJECT} should be avoided at all costs when performance is important. It is a particularly expensive option. There is one case when @code{%option yylineno} can be expensive. That is when your patterns match long tokens that could @emph{possibly} contain a newline character. There is no performance penalty for rules that can not possibly match newlines, since flex does not need to check them for newlines. In general, you should avoid rules such as @code{[^f]+}, which match very long tokens, including newlines, and may possibly match your entire file! A better approach is to separate @code{[^f]+} into two rules: @example @verbatim %option yylineno %% [^f\n]+ \n+ @end verbatim @end example The above scanner does not incur a performance penalty. @cindex patterns, tuning for performance @cindex performance, backing up @cindex backing up, example of eliminating Getting rid of backing up is messy and often may be an enormous amount of work for a complicated scanner. In principal, one begins by using the @samp{-b} flag to generate a @file{lex.backup} file. For example, on the input: @cindex backing up, eliminating @example @verbatim %% foo return TOK_KEYWORD; foobar return TOK_KEYWORD; @end verbatim @end example the file looks like: @example @verbatim State #6 is non-accepting - associated rule line numbers: 2 3 out-transitions: [ o ] jam-transitions: EOF [ \001-n p-\177 ] State #8 is non-accepting - associated rule line numbers: 3 out-transitions: [ a ] jam-transitions: EOF [ \001-` b-\177 ] State #9 is non-accepting - associated rule line numbers: 3 out-transitions: [ r ] jam-transitions: EOF [ \001-q s-\177 ] Compressed tables always back up. @end verbatim @end example The first few lines tell us that there's a scanner state in which it can make a transition on an 'o' but not on any other character, and that in that state the currently scanned text does not match any rule. The state occurs when trying to match the rules found at lines 2 and 3 in the input file. If the scanner is in that state and then reads something other than an 'o', it will have to back up to find a rule which is matched. With a bit of headscratching one can see that this must be the state it's in when it has seen @samp{fo}. When this has happened, if anything other than another @samp{o} is seen, the scanner will have to back up to simply match the @samp{f} (by the default rule). The comment regarding State #8 indicates there's a problem when @samp{foob} has been scanned. Indeed, on any character other than an @samp{a}, the scanner will have to back up to accept "foo". Similarly, the comment for State #9 concerns when @samp{fooba} has been scanned and an @samp{r} does not follow. The final comment reminds us that there's no point going to all the trouble of removing backing up from the rules unless we're using @samp{-Cf} or @samp{-CF}, since there's no performance gain doing so with compressed scanners. @cindex error rules, to eliminate backing up The way to remove the backing up is to add ``error'' rules: @cindex backing up, eliminating by adding error rules @example @verbatim %% foo return TOK_KEYWORD; foobar return TOK_KEYWORD; fooba | foob | fo { /* false alarm, not really a keyword */ return TOK_ID; } @end verbatim @end example Eliminating backing up among a list of keywords can also be done using a ``catch-all'' rule: @cindex backing up, eliminating with catch-all rule @example @verbatim %% foo return TOK_KEYWORD; foobar return TOK_KEYWORD; [a-z]+ return TOK_ID; @end verbatim @end example This is usually the best solution when appropriate. Backing up messages tend to cascade. With a complicated set of rules it's not uncommon to get hundreds of messages. If one can decipher them, though, it often only takes a dozen or so rules to eliminate the backing up (though it's easy to make a mistake and have an error rule accidentally match a valid token. A possible future @code{flex} feature will be to automatically add rules to eliminate backing up). It's important to keep in mind that you gain the benefits of eliminating backing up only if you eliminate @emph{every} instance of backing up. Leaving just one means you gain nothing. @emph{Variable} trailing context (where both the leading and trailing parts do not have a fixed length) entails almost the same performance loss as @code{REJECT} (i.e., substantial). So when possible a rule like: @cindex trailing context, variable length @example @verbatim %% mouse|rat/(cat|dog) run(); @end verbatim @end example is better written: @example @verbatim %% mouse/cat|dog run(); rat/cat|dog run(); @end verbatim @end example or as @example @verbatim %% mouse|rat/cat run(); mouse|rat/dog run(); @end verbatim @end example Note that here the special '|' action does @emph{not} provide any savings, and can even make things worse (@pxref{Limitations}). Another area where the user can increase a scanner's performance (and one that's easier to implement) arises from the fact that the longer the tokens matched, the faster the scanner will run. This is because with long tokens the processing of most input characters takes place in the (short) inner scanning loop, and does not often have to go through the additional work of setting up the scanning environment (e.g., @code{yytext}) for the action. Recall the scanner for C comments: @cindex performance optimization, matching longer tokens @example @verbatim %x comment %% int line_num = 1; "/*" BEGIN(comment); [^*\n]* "*"+[^*/\n]* \n ++line_num; "*"+"/" BEGIN(INITIAL); @end verbatim @end example This could be sped up by writing it as: @example @verbatim %x comment %% int line_num = 1; "/*" BEGIN(comment); [^*\n]* [^*\n]*\n ++line_num; "*"+[^*/\n]* "*"+[^*/\n]*\n ++line_num; "*"+"/" BEGIN(INITIAL); @end verbatim @end example Now instead of each newline requiring the processing of another action, recognizing the newlines is distributed over the other rules to keep the matched text as long as possible. Note that @emph{adding} rules does @emph{not} slow down the scanner! The speed of the scanner is independent of the number of rules or (modulo the considerations given at the beginning of this section) how complicated the rules are with regard to operators such as @samp{*} and @samp{|}. @cindex keywords, for performance @cindex performance, using keywords A final example in speeding up a scanner: suppose you want to scan through a file containing identifiers and keywords, one per line and with no other extraneous characters, and recognize all the keywords. A natural first approach is: @cindex performance optimization, recognizing keywords @example @verbatim %% asm | auto | break | ... etc ... volatile | while /* it's a keyword */ .|\n /* it's not a keyword */ @end verbatim @end example To eliminate the back-tracking, introduce a catch-all rule: @example @verbatim %% asm | auto | break | ... etc ... volatile | while /* it's a keyword */ [a-z]+ | .|\n /* it's not a keyword */ @end verbatim @end example Now, if it's guaranteed that there's exactly one word per line, then we can reduce the total number of matches by a half by merging in the recognition of newlines with that of the other tokens: @example @verbatim %% asm\n | auto\n | break\n | ... etc ... volatile\n | while\n /* it's a keyword */ [a-z]+\n | .|\n /* it's not a keyword */ @end verbatim @end example One has to be careful here, as we have now reintroduced backing up into the scanner. In particular, while @emph{we} know that there will never be any characters in the input stream other than letters or newlines, @code{flex} can't figure this out, and it will plan for possibly needing to back up when it has scanned a token like @samp{auto} and then the next character is something other than a newline or a letter. Previously it would then just match the @samp{auto} rule and be done, but now it has no @samp{auto} rule, only a @samp{auto\n} rule. To eliminate the possibility of backing up, we could either duplicate all rules but without final newlines, or, since we never expect to encounter such an input and therefore don't how it's classified, we can introduce one more catch-all rule, this one which doesn't include a newline: @example @verbatim %% asm\n | auto\n | break\n | ... etc ... volatile\n | while\n /* it's a keyword */ [a-z]+\n | [a-z]+ | .|\n /* it's not a keyword */ @end verbatim @end example Compiled with @samp{-Cf}, this is about as fast as one can get a @code{flex} scanner to go for this particular problem. A final note: @code{flex} is slow when matching @code{NUL}s, particularly when a token contains multiple @code{NUL}s. It's best to write rules which match @emph{short} amounts of text if it's anticipated that the text will often include @code{NUL}s. Another final note regarding performance: as mentioned in @ref{Matching}, dynamically resizing @code{yytext} to accommodate huge tokens is a slow process because it presently requires that the (huge) token be rescanned from the beginning. Thus if performance is vital, you should attempt to match ``large'' quantities of text but not ``huge'' quantities, where the cutoff between the two is at about 8K characters per token. @node Cxx, Reentrant, Performance, Top @chapter Generating C++ Scanners @cindex c++, experimental form of scanner class @cindex experimental form of c++ scanner class @strong{IMPORTANT}: the present form of the scanning class is @emph{experimental} and may change considerably between major releases. @cindex C++ @cindex member functions, C++ @cindex methods, c++ @code{flex} provides two different ways to generate scanners for use with C++. The first way is to simply compile a scanner generated by @code{flex} using a C++ compiler instead of a C compiler. You should not encounter any compilation errors (@pxref{Reporting Bugs}). You can then use C++ code in your rule actions instead of C code. Note that the default input source for your scanner remains @file{yyin}, and default echoing is still done to @file{yyout}. Both of these remain @code{FILE *} variables and not C++ @emph{streams}. You can also use @code{flex} to generate a C++ scanner class, using the @samp{-+} option (or, equivalently, @code{%option c++)}, which is automatically specified if the name of the @code{flex} executable ends in a '+', such as @code{flex++}. When using this option, @code{flex} defaults to generating the scanner to the file @file{lex.yy.cc} instead of @file{lex.yy.c}. The generated scanner includes the header file @file{FlexLexer.h}, which defines the interface to two C++ classes. The first class, @code{FlexLexer}, provides an abstract base class defining the general scanner class interface. It provides the following member functions: @table @code @findex YYText (C++ only) @item const char* YYText() returns the text of the most recently matched token, the equivalent of @code{yytext}. @findex YYLeng (C++ only) @item int YYLeng() returns the length of the most recently matched token, the equivalent of @code{yyleng}. @findex lineno (C++ only) @item int lineno() const returns the current input line number (see @code{%option yylineno)}, or @code{1} if @code{%option yylineno} was not used. @findex set_debug (C++ only) @item void set_debug( int flag ) sets the debugging flag for the scanner, equivalent to assigning to @code{yy_flex_debug} (@pxref{Scanner Options}). Note that you must build the scanner using @code{%option debug} to include debugging information in it. @findex debug (C++ only) @item int debug() const returns the current setting of the debugging flag. @end table Also provided are member functions equivalent to @code{yy_switch_to_buffer()}, @code{yy_create_buffer()} (though the first argument is an @code{istream*} object pointer and not a @code{FILE*)}, @code{yy_flush_buffer()}, @code{yy_delete_buffer()}, and @code{yyrestart()} (again, the first argument is a @code{istream*} object pointer). @tindex yyFlexLexer (C++ only) @tindex FlexLexer (C++ only) The second class defined in @file{FlexLexer.h} is @code{yyFlexLexer}, which is derived from @code{FlexLexer}. It defines the following additional member functions: @table @code @findex yyFlexLexer constructor (C++ only) @item yyFlexLexer( istream* arg_yyin = 0, ostream* arg_yyout = 0 ) constructs a @code{yyFlexLexer} object using the given streams for input and output. If not specified, the streams default to @code{cin} and @code{cout}, respectively. @findex yylex (C++ version) @item virtual int yylex() performs the same role is @code{yylex()} does for ordinary @code{flex} scanners: it scans the input stream, consuming tokens, until a rule's action returns a value. If you derive a subclass @code{S} from @code{yyFlexLexer} and want to access the member functions and variables of @code{S} inside @code{yylex()}, then you need to use @code{%option yyclass="S"} to inform @code{flex} that you will be using that subclass instead of @code{yyFlexLexer}. In this case, rather than generating @code{yyFlexLexer::yylex()}, @code{flex} generates @code{S::yylex()} (and also generates a dummy @code{yyFlexLexer::yylex()} that calls @code{yyFlexLexer::LexerError()} if called). @findex switch_streams (C++ only) @item virtual void switch_streams(istream* new_in = 0, ostream* new_out = 0) reassigns @code{yyin} to @code{new_in} (if non-null) and @code{yyout} to @code{new_out} (if non-null), deleting the previous input buffer if @code{yyin} is reassigned. @item int yylex( istream* new_in, ostream* new_out = 0 ) first switches the input streams via @code{switch_streams( new_in, new_out )} and then returns the value of @code{yylex()}. @end table In addition, @code{yyFlexLexer} defines the following protected virtual functions which you can redefine in derived classes to tailor the scanner: @table @code @findex LexerInput (C++ only) @item virtual int LexerInput( char* buf, int max_size ) reads up to @code{max_size} characters into @code{buf} and returns the number of characters read. To indicate end-of-input, return 0 characters. Note that @code{interactive} scanners (see the @samp{-B} and @samp{-I} flags in @ref{Scanner Options}) define the macro @code{YY_INTERACTIVE}. If you redefine @code{LexerInput()} and need to take different actions depending on whether or not the scanner might be scanning an interactive input source, you can test for the presence of this name via @code{#ifdef} statements. @findex LexerOutput (C++ only) @item virtual void LexerOutput( const char* buf, int size ) writes out @code{size} characters from the buffer @code{buf}, which, while @code{NUL}-terminated, may also contain internal @code{NUL}s if the scanner's rules can match text with @code{NUL}s in them. @cindex error reporting, in C++ @findex LexerError (C++ only) @item virtual void LexerError( const char* msg ) reports a fatal error message. The default version of this function writes the message to the stream @code{cerr} and exits. @end table Note that a @code{yyFlexLexer} object contains its @emph{entire} scanning state. Thus you can use such objects to create reentrant scanners, but see also @ref{Reentrant}. You can instantiate multiple instances of the same @code{yyFlexLexer} class, and you can also combine multiple C++ scanner classes together in the same program using the @samp{-P} option discussed above. Finally, note that the @code{%array} feature is not available to C++ scanner classes; you must use @code{%pointer} (the default). Here is an example of a simple C++ scanner: @cindex C++ scanners, use of @example @verbatim // An example of using the flex C++ scanner class. %{ #include using namespace std; int mylineno = 0; %} %option noyywrap string \"[^\n"]+\" ws [ \t]+ alpha [A-Za-z] dig [0-9] name ({alpha}|{dig}|\$)({alpha}|{dig}|[_.\-/$])* num1 [-+]?{dig}+\.?([eE][-+]?{dig}+)? num2 [-+]?{dig}*\.{dig}+([eE][-+]?{dig}+)? number {num1}|{num2} %% {ws} /* skip blanks and tabs */ "/*" { int c; while((c = yyinput()) != 0) { if(c == '\n') ++mylineno; else if(c == '*') { if((c = yyinput()) == '/') break; else unput(c); } } } {number} cout << "number " << YYText() << '\n'; \n mylineno++; {name} cout << "name " << YYText() << '\n'; {string} cout << "string " << YYText() << '\n'; %% int main( int /* argc */, char** /* argv */ ) { FlexLexer* lexer = new yyFlexLexer; while(lexer->yylex() != 0) ; return 0; } @end verbatim @end example @cindex C++, multiple different scanners If you want to create multiple (different) lexer classes, you use the @samp{-P} flag (or the @code{prefix=} option) to rename each @code{yyFlexLexer} to some other @samp{xxFlexLexer}. You then can include @file{} in your other sources once per lexer class, first renaming @code{yyFlexLexer} as follows: @cindex include files, with C++ @cindex header files, with C++ @cindex C++ scanners, including multiple scanners @example @verbatim #undef yyFlexLexer #define yyFlexLexer xxFlexLexer #include #undef yyFlexLexer #define yyFlexLexer zzFlexLexer #include @end verbatim @end example if, for example, you used @code{%option prefix="xx"} for one of your scanners and @code{%option prefix="zz"} for the other. @node Reentrant, Lex and Posix, Cxx, Top @chapter Reentrant C Scanners @cindex reentrant, explanation @code{flex} has the ability to generate a reentrant C scanner. This is accomplished by specifying @code{%option reentrant} (@samp{-R}) The generated scanner is both portable, and safe to use in one or more separate threads of control. The most common use for reentrant scanners is from within multi-threaded applications. Any thread may create and execute a reentrant @code{flex} scanner without the need for synchronization with other threads. @menu * Reentrant Uses:: * Reentrant Overview:: * Reentrant Example:: * Reentrant Detail:: * Reentrant Functions:: @end menu @node Reentrant Uses, Reentrant Overview, Reentrant, Reentrant @section Uses for Reentrant Scanners However, there are other uses for a reentrant scanner. For example, you could scan two or more files simultaneously to implement a @code{diff} at the token level (i.e., instead of at the character level): @cindex reentrant scanners, multiple interleaved scanners @example @verbatim /* Example of maintaining more than one active scanner. */ do { int tok1, tok2; tok1 = yylex( scanner_1 ); tok2 = yylex( scanner_2 ); if( tok1 != tok2 ) printf("Files are different."); } while ( tok1 && tok2 ); @end verbatim @end example Another use for a reentrant scanner is recursion. (Note that a recursive scanner can also be created using a non-reentrant scanner and buffer states. @xref{Multiple Input Buffers}.) The following crude scanner supports the @samp{eval} command by invoking another instance of itself. @cindex reentrant scanners, recursive invocation @example @verbatim /* Example of recursive invocation. */ %option reentrant %% "eval(".+")" { yyscan_t scanner; YY_BUFFER_STATE buf; yylex_init( &scanner ); yytext[yyleng-1] = ' '; buf = yy_scan_string( yytext + 5, scanner ); yylex( scanner ); yy_delete_buffer(buf,scanner); yylex_destroy( scanner ); } ... %% @end verbatim @end example @node Reentrant Overview, Reentrant Example, Reentrant Uses, Reentrant @section An Overview of the Reentrant API @cindex reentrant, API explanation The API for reentrant scanners is different than for non-reentrant scanners. Here is a quick overview of the API: @itemize @code{%option reentrant} must be specified. @item All functions take one additional argument: @code{yyscanner} @item All global variables are replaced by their macro equivalents. (We tell you this because it may be important to you during debugging.) @item @code{yylex_init} and @code{yylex_destroy} must be called before and after @code{yylex}, respectively. @item Accessor methods (get/set functions) provide access to common @code{flex} variables. @item User-specific data can be stored in @code{yyextra}. @end itemize @node Reentrant Example, Reentrant Detail, Reentrant Overview, Reentrant @section Reentrant Example First, an example of a reentrant scanner: @cindex reentrant, example of @example @verbatim /* This scanner prints "//" comments. */ %option reentrant stack noyywrap %x COMMENT %% "//" yy_push_state( COMMENT, yyscanner); .|\n \n yy_pop_state( yyscanner ); [^\n]+ fprintf( yyout, "%s\n", yytext); %% int main ( int argc, char * argv[] ) { yyscan_t scanner; yylex_init ( &scanner ); yylex ( scanner ); yylex_destroy ( scanner ); return 0; } @end verbatim @end example @node Reentrant Detail, Reentrant Functions, Reentrant Example, Reentrant @section The Reentrant API in Detail Here are the things you need to do or know to use the reentrant C API of @code{flex}. @menu * Specify Reentrant:: * Extra Reentrant Argument:: * Global Replacement:: * Init and Destroy Functions:: * Accessor Methods:: * Extra Data:: * About yyscan_t:: @end menu @node Specify Reentrant, Extra Reentrant Argument, Reentrant Detail, Reentrant Detail @subsection Declaring a Scanner As Reentrant %option reentrant (--reentrant) must be specified. Notice that @code{%option reentrant} is specified in the above example (@pxref{Reentrant Example}. Had this option not been specified, @code{flex} would have happily generated a non-reentrant scanner without complaining. You may explicitly specify @code{%option noreentrant}, if you do @emph{not} want a reentrant scanner, although it is not necessary. The default is to generate a non-reentrant scanner. @node Extra Reentrant Argument, Global Replacement, Specify Reentrant, Reentrant Detail @subsection The Extra Argument @cindex reentrant, calling functions @vindex yyscanner (reentrant only) All functions take one additional argument: @code{yyscanner}. Notice that the calls to @code{yy_push_state} and @code{yy_pop_state} both have an argument, @code{yyscanner} , that is not present in a non-reentrant scanner. Here are the declarations of @code{yy_push_state} and @code{yy_pop_state} in the reentrant scanner: @example @verbatim static void yy_push_state ( int new_state , yyscan_t yyscanner ) ; static void yy_pop_state ( yyscan_t yyscanner ) ; @end verbatim @end example Notice that the argument @code{yyscanner} appears in the declaration of both functions. In fact, all @code{flex} functions in a reentrant scanner have this additional argument. It is always the last argument in the argument list, it is always of type @code{yyscan_t} (which is typedef'd to @code{void *}) and it is always named @code{yyscanner}. As you may have guessed, @code{yyscanner} is a pointer to an opaque data structure encapsulating the current state of the scanner. For a list of function declarations, see @ref{Reentrant Functions}. Note that preprocessor macros, such as @code{BEGIN}, @code{ECHO}, and @code{REJECT}, do not take this additional argument. @node Global Replacement, Init and Destroy Functions, Extra Reentrant Argument, Reentrant Detail @subsection Global Variables Replaced By Macros @cindex reentrant, accessing flex variables All global variables in traditional flex have been replaced by macro equivalents. Note that in the above example, @code{yyout} and @code{yytext} are not plain variables. These are macros that will expand to their equivalent lvalue. All of the familiar @code{flex} globals have been replaced by their macro equivalents. In particular, @code{yytext}, @code{yyleng}, @code{yylineno}, @code{yyin}, @code{yyout}, @code{yyextra}, @code{yylval}, and @code{yylloc} are macros. You may safely use these macros in actions as if they were plain variables. We only tell you this so you don't expect to link to these variables externally. Currently, each macro expands to a member of an internal struct, e.g., @example @verbatim #define yytext (((struct yyguts_t*)yyscanner)->yytext_r) @end verbatim @end example One important thing to remember about @code{yytext} and friends is that @code{yytext} is not a global variable in a reentrant scanner, you can not access it directly from outside an action or from other functions. You must use an accessor method, e.g., @code{yyget_text}, to accomplish this. (See below). @node Init and Destroy Functions, Accessor Methods, Global Replacement, Reentrant Detail @subsection Init and Destroy Functions @cindex memory, considerations for reentrant scanners @cindex reentrant, initialization @findex yylex_init @findex yylex_destroy @code{yylex_init} and @code{yylex_destroy} must be called before and after @code{yylex}, respectively. @example @verbatim int yylex_init ( yyscan_t * ptr_yy_globals ) ; int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t * ptr_yy_globals ) ; int yylex ( yyscan_t yyscanner ) ; int yylex_destroy ( yyscan_t yyscanner ) ; @end verbatim @end example The function @code{yylex_init} must be called before calling any other function. The argument to @code{yylex_init} is the address of an uninitialized pointer to be filled in by @code{yylex_init}, overwriting any previous contents. The function @code{yylex_init_extra} may be used instead, taking as its first argument a variable of type @code{YY_EXTRA_TYPE}. See the section on yyextra, below, for more details. The value stored in @code{ptr_yy_globals} should thereafter be passed to @code{yylex} and @code{yylex_destroy}. Flex does not save the argument passed to @code{yylex_init}, so it is safe to pass the address of a local pointer to @code{yylex_init} so long as it remains in scope for the duration of all calls to the scanner, up to and including the call to @code{yylex_destroy}. The function @code{yylex} should be familiar to you by now. The reentrant version takes one argument, which is the value returned (via an argument) by @code{yylex_init}. Otherwise, it behaves the same as the non-reentrant version of @code{yylex}. Both @code{yylex_init} and @code{yylex_init_extra} returns 0 (zero) on success, or non-zero on failure, in which case errno is set to one of the following values: @itemize @item ENOMEM Memory allocation error. @xref{memory-management}. @item EINVAL Invalid argument. @end itemize The function @code{yylex_destroy} should be called to free resources used by the scanner. After @code{yylex_destroy} is called, the contents of @code{yyscanner} should not be used. Of course, there is no need to destroy a scanner if you plan to reuse it. A @code{flex} scanner (both reentrant and non-reentrant) may be restarted by calling @code{yyrestart}. Below is an example of a program that creates a scanner, uses it, then destroys it when done: @example @verbatim int main () { yyscan_t scanner; int tok; yylex_init(&scanner); while ((tok=yylex(scanner)) > 0) printf("tok=%d yytext=%s\n", tok, yyget_text(scanner)); yylex_destroy(scanner); return 0; } @end verbatim @end example @node Accessor Methods, Extra Data, Init and Destroy Functions, Reentrant Detail @subsection Accessing Variables with Reentrant Scanners @cindex reentrant, accessor functions Accessor methods (get/set functions) provide access to common @code{flex} variables. Many scanners that you build will be part of a larger project. Portions of your project will need access to @code{flex} values, such as @code{yytext}. In a non-reentrant scanner, these values are global, so there is no problem accessing them. However, in a reentrant scanner, there are no global @code{flex} values. You can not access them directly. Instead, you must access @code{flex} values using accessor methods (get/set functions). Each accessor method is named @code{yyget_NAME} or @code{yyset_NAME}, where @code{NAME} is the name of the @code{flex} variable you want. For example: @cindex accessor functions, use of @example @verbatim /* Set the last character of yytext to NULL. */ void chop ( yyscan_t scanner ) { int len = yyget_leng( scanner ); yyget_text( scanner )[len - 1] = '\0'; } @end verbatim @end example The above code may be called from within an action like this: @example @verbatim %% .+\n { chop( yyscanner );} @end verbatim @end example You may find that @code{%option header-file} is particularly useful for generating prototypes of all the accessor functions. @xref{option-header}. @node Extra Data, About yyscan_t, Accessor Methods, Reentrant Detail @subsection Extra Data @cindex reentrant, extra data @vindex yyextra User-specific data can be stored in @code{yyextra}. In a reentrant scanner, it is unwise to use global variables to communicate with or maintain state between different pieces of your program. However, you may need access to external data or invoke external functions from within the scanner actions. Likewise, you may need to pass information to your scanner (e.g., open file descriptors, or database connections). In a non-reentrant scanner, the only way to do this would be through the use of global variables. @code{Flex} allows you to store arbitrary, ``extra'' data in a scanner. This data is accessible through the accessor methods @code{yyget_extra} and @code{yyset_extra} from outside the scanner, and through the shortcut macro @code{yyextra} from within the scanner itself. They are defined as follows: @tindex YY_EXTRA_TYPE (reentrant only) @findex yyget_extra @findex yyset_extra @example @verbatim #define YY_EXTRA_TYPE void* YY_EXTRA_TYPE yyget_extra ( yyscan_t scanner ); void yyset_extra ( YY_EXTRA_TYPE arbitrary_data , yyscan_t scanner); @end verbatim @end example In addition, an extra form of @code{yylex_init} is provided, @code{yylex_init_extra}. This function is provided so that the yyextra value can be accessed from within the very first yyalloc, used to allocate the scanner itself. By default, @code{YY_EXTRA_TYPE} is defined as type @code{void *}. You may redefine this type using @code{%option extra-type="your_type"} in the scanner: @cindex YY_EXTRA_TYPE, defining your own type @example @verbatim /* An example of overriding YY_EXTRA_TYPE. */ %{ #include #include %} %option reentrant %option extra-type="struct stat *" %% __filesize__ printf( "%ld", yyextra->st_size ); __lastmod__ printf( "%ld", yyextra->st_mtime ); %% void scan_file( char* filename ) { yyscan_t scanner; struct stat buf; FILE *in; in = fopen( filename, "r" ); stat( filename, &buf ); yylex_init_extra( buf, &scanner ); yyset_in( in, scanner ); yylex( scanner ); yylex_destroy( scanner ); fclose( in ); } @end verbatim @end example @node About yyscan_t, , Extra Data, Reentrant Detail @subsection About yyscan_t @tindex yyscan_t (reentrant only) @code{yyscan_t} is defined as: @example @verbatim typedef void* yyscan_t; @end verbatim @end example It is initialized by @code{yylex_init()} to point to an internal structure. You should never access this value directly. In particular, you should never attempt to free it (use @code{yylex_destroy()} instead.) @node Reentrant Functions, , Reentrant Detail, Reentrant @section Functions and Macros Available in Reentrant C Scanners The following Functions are available in a reentrant scanner: @findex yyget_text @findex yyget_leng @findex yyget_in @findex yyget_out @findex yyget_lineno @findex yyset_in @findex yyset_out @findex yyset_lineno @findex yyget_debug @findex yyset_debug @findex yyget_extra @findex yyset_extra @example @verbatim char *yyget_text ( yyscan_t scanner ); int yyget_leng ( yyscan_t scanner ); FILE *yyget_in ( yyscan_t scanner ); FILE *yyget_out ( yyscan_t scanner ); int yyget_lineno ( yyscan_t scanner ); YY_EXTRA_TYPE yyget_extra ( yyscan_t scanner ); int yyget_debug ( yyscan_t scanner ); void yyset_debug ( int flag, yyscan_t scanner ); void yyset_in ( FILE * in_str , yyscan_t scanner ); void yyset_out ( FILE * out_str , yyscan_t scanner ); void yyset_lineno ( int line_number , yyscan_t scanner ); void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t scanner ); @end verbatim @end example There are no ``set'' functions for yytext and yyleng. This is intentional. The following Macro shortcuts are available in actions in a reentrant scanner: @example @verbatim yytext yyleng yyin yyout yylineno yyextra yy_flex_debug @end verbatim @end example @cindex yylineno, in a reentrant scanner In a reentrant C scanner, support for yylineno is always present (i.e., you may access yylineno), but the value is never modified by @code{flex} unless @code{%option yylineno} is enabled. This is to allow the user to maintain the line count independently of @code{flex}. @anchor{bison-functions} The following functions and macros are made available when @code{%option bison-bridge} (@samp{--bison-bridge}) is specified: @example @verbatim YYSTYPE * yyget_lval ( yyscan_t scanner ); void yyset_lval ( YYSTYPE * yylvalp , yyscan_t scanner ); yylval @end verbatim @end example The following functions and macros are made available when @code{%option bison-locations} (@samp{--bison-locations}) is specified: @example @verbatim YYLTYPE *yyget_lloc ( yyscan_t scanner ); void yyset_lloc ( YYLTYPE * yyllocp , yyscan_t scanner ); yylloc @end verbatim @end example Support for yylval assumes that @code{YYSTYPE} is a valid type. Support for yylloc assumes that @code{YYSLYPE} is a valid type. Typically, these types are generated by @code{bison}, and are included in section 1 of the @code{flex} input. @node Lex and Posix, Memory Management, Reentrant, Top @chapter Incompatibilities with Lex and Posix @cindex POSIX and lex @cindex lex (traditional) and POSIX @code{flex} is a rewrite of the AT&T Unix @emph{lex} tool (the two implementations do not share any code, though), with some extensions and incompatibilities, both of which are of concern to those who wish to write scanners acceptable to both implementations. @code{flex} is fully compliant with the POSIX @code{lex} specification, except that when using @code{%pointer} (the default), a call to @code{unput()} destroys the contents of @code{yytext}, which is counter to the POSIX specification. In this section we discuss all of the known areas of incompatibility between @code{flex}, AT&T @code{lex}, and the POSIX specification. @code{flex}'s @samp{-l} option turns on maximum compatibility with the original AT&T @code{lex} implementation, at the cost of a major loss in the generated scanner's performance. We note below which incompatibilities can be overcome using the @samp{-l} option. @code{flex} is fully compatible with @code{lex} with the following exceptions: @itemize @item The undocumented @code{lex} scanner internal variable @code{yylineno} is not supported unless @samp{-l} or @code{%option yylineno} is used. @item @code{yylineno} should be maintained on a per-buffer basis, rather than a per-scanner (single global variable) basis. @item @code{yylineno} is not part of the POSIX specification. @item The @code{input()} routine is not redefinable, though it may be called to read characters following whatever has been matched by a rule. If @code{input()} encounters an end-of-file the normal @code{yywrap()} processing is done. A ``real'' end-of-file is returned by @code{input()} as @code{EOF}. @item Input is instead controlled by defining the @code{YY_INPUT()} macro. @item The @code{flex} restriction that @code{input()} cannot be redefined is in accordance with the POSIX specification, which simply does not specify any way of controlling the scanner's input other than by making an initial assignment to @file{yyin}. @item The @code{unput()} routine is not redefinable. This restriction is in accordance with POSIX. @item @code{flex} scanners are not as reentrant as @code{lex} scanners. In particular, if you have an interactive scanner and an interrupt handler which long-jumps out of the scanner, and the scanner is subsequently called again, you may get the following message: @cindex error messages, end of buffer missed @example @verbatim fatal flex scanner internal error--end of buffer missed @end verbatim @end example To reenter the scanner, first use: @cindex restarting the scanner @example @verbatim yyrestart( yyin ); @end verbatim @end example Note that this call will throw away any buffered input; usually this isn't a problem with an interactive scanner. @xref{Reentrant}, for @code{flex}'s reentrant API. @item Also note that @code{flex} C++ scanner classes @emph{are} reentrant, so if using C++ is an option for you, you should use them instead. @xref{Cxx}, and @ref{Reentrant} for details. @item @code{output()} is not supported. Output from the @b{ECHO} macro is done to the file-pointer @code{yyout} (default @file{stdout)}. @item @code{output()} is not part of the POSIX specification. @item @code{lex} does not support exclusive start conditions (%x), though they are in the POSIX specification. @item When definitions are expanded, @code{flex} encloses them in parentheses. With @code{lex}, the following: @cindex name definitions, not POSIX @example @verbatim NAME [A-Z][A-Z0-9]* %% foo{NAME}? printf( "Found it\n" ); %% @end verbatim @end example will not match the string @samp{foo} because when the macro is expanded the rule is equivalent to @samp{foo[A-Z][A-Z0-9]*?} and the precedence is such that the @samp{?} is associated with @samp{[A-Z0-9]*}. With @code{flex}, the rule will be expanded to @samp{foo([A-Z][A-Z0-9]*)?} and so the string @samp{foo} will match. @item Note that if the definition begins with @samp{^} or ends with @samp{$} then it is @emph{not} expanded with parentheses, to allow these operators to appear in definitions without losing their special meanings. But the @samp{}, @samp{/}, and @code{<>} operators cannot be used in a @code{flex} definition. @item Using @samp{-l} results in the @code{lex} behavior of no parentheses around the definition. @item The POSIX specification is that the definition be enclosed in parentheses. @item Some implementations of @code{lex} allow a rule's action to begin on a separate line, if the rule's pattern has trailing whitespace: @cindex patterns and actions on different lines @example @verbatim %% foo|bar { foobar_action();} @end verbatim @end example @code{flex} does not support this feature. @item The @code{lex} @code{%r} (generate a Ratfor scanner) option is not supported. It is not part of the POSIX specification. @item After a call to @code{unput()}, @emph{yytext} is undefined until the next token is matched, unless the scanner was built using @code{%array}. This is not the case with @code{lex} or the POSIX specification. The @samp{-l} option does away with this incompatibility. @item The precedence of the @samp{@{,@}} (numeric range) operator is different. The AT&T and POSIX specifications of @code{lex} interpret @samp{abc@{1,3@}} as match one, two, or three occurrences of @samp{abc}'', whereas @code{flex} interprets it as ``match @samp{ab} followed by one, two, or three occurrences of @samp{c}''. The @samp{-l} and @samp{--posix} options do away with this incompatibility. @item The precedence of the @samp{^} operator is different. @code{lex} interprets @samp{^foo|bar} as ``match either 'foo' at the beginning of a line, or 'bar' anywhere'', whereas @code{flex} interprets it as ``match either @samp{foo} or @samp{bar} if they come at the beginning of a line''. The latter is in agreement with the POSIX specification. @item The special table-size declarations such as @code{%a} supported by @code{lex} are not required by @code{flex} scanners.. @code{flex} ignores them. @item The name @code{FLEX_SCANNER} is @code{#define}'d so scanners may be written for use with either @code{flex} or @code{lex}. Scanners also include @code{YY_FLEX_MAJOR_VERSION}, @code{YY_FLEX_MINOR_VERSION} and @code{YY_FLEX_SUBMINOR_VERSION} indicating which version of @code{flex} generated the scanner. For example, for the 2.5.22 release, these defines would be 2, 5 and 22 respectively. If the version of @code{flex} being used is a beta version, then the symbol @code{FLEX_BETA} is defined. @item The symbols @samp{[[} and @samp{]]} in the code sections of the input may conflict with the m4 delimiters. @xref{M4 Dependency}. @end itemize @cindex POSIX comp;compliance @cindex non-POSIX features of flex The following @code{flex} features are not included in @code{lex} or the POSIX specification: @itemize @item C++ scanners @item %option @item start condition scopes @item start condition stacks @item interactive/non-interactive scanners @item yy_scan_string() and friends @item yyterminate() @item yy_set_interactive() @item yy_set_bol() @item YY_AT_BOL() <> @item <*> @item YY_DECL @item YY_START @item YY_USER_ACTION @item YY_USER_INIT @item #line directives @item %@{@}'s around actions @item reentrant C API @item multiple actions on a line @item almost all of the @code{flex} command-line options @end itemize The feature ``multiple actions on a line'' refers to the fact that with @code{flex} you can put multiple actions on the same line, separated with semi-colons, while with @code{lex}, the following: @example @verbatim foo handle_foo(); ++num_foos_seen; @end verbatim @end example is (rather surprisingly) truncated to @example @verbatim foo handle_foo(); @end verbatim @end example @code{flex} does not truncate the action. Actions that are not enclosed in braces are simply terminated at the end of the line. @node Memory Management, Serialized Tables, Lex and Posix, Top @chapter Memory Management @cindex memory management @anchor{memory-management} This chapter describes how flex handles dynamic memory, and how you can override the default behavior. @menu * The Default Memory Management:: * Overriding The Default Memory Management:: * A Note About yytext And Memory:: @end menu @node The Default Memory Management, Overriding The Default Memory Management, Memory Management, Memory Management @section The Default Memory Management Flex allocates dynamic memory during initialization, and once in a while from within a call to yylex(). Initialization takes place during the first call to yylex(). Thereafter, flex may reallocate more memory if it needs to enlarge a buffer. As of version 2.5.9 Flex will clean up all memory when you call @code{yylex_destroy} @xref{faq-memory-leak}. Flex allocates dynamic memory for four purposes, listed below @footnote{The quantities given here are approximate, and may vary due to host architecture, compiler configuration, or due to future enhancements to flex.} @table @asis @item 16kB for the input buffer. Flex allocates memory for the character buffer used to perform pattern matching. Flex must read ahead from the input stream and store it in a large character buffer. This buffer is typically the largest chunk of dynamic memory flex consumes. This buffer will grow if necessary, doubling the size each time. Flex frees this memory when you call yylex_destroy(). The default size of this buffer (16384 bytes) is almost always too large. The ideal size for this buffer is the length of the longest token expected, in bytes, plus a little more. Flex will allocate a few extra bytes for housekeeping. Currently, to override the size of the input buffer you must @code{#define YY_BUF_SIZE} to whatever number of bytes you want. We don't plan to change this in the near future, but we reserve the right to do so if we ever add a more robust memory management API. @item 64kb for the REJECT state. This will only be allocated if you use REJECT. The size is large enough to hold the same number of states as characters in the input buffer. If you override the size of the input buffer (via @code{YY_BUF_SIZE}), then you automatically override the size of this buffer as well. @item 100 bytes for the start condition stack. Flex allocates memory for the start condition stack. This is the stack used for pushing start states, i.e., with yy_push_state(). It will grow if necessary. Since the states are simply integers, this stack doesn't consume much memory. This stack is not present if @code{%option stack} is not specified. You will rarely need to tune this buffer. The ideal size for this stack is the maximum depth expected. The memory for this stack is automatically destroyed when you call yylex_destroy(). @xref{option-stack}. @item 40 bytes for each YY_BUFFER_STATE. Flex allocates memory for each YY_BUFFER_STATE. The buffer state itself is about 40 bytes, plus an additional large character buffer (described above.) The initial buffer state is created during initialization, and with each call to yy_create_buffer(). You can't tune the size of this, but you can tune the character buffer as described above. Any buffer state that you explicitly create by calling yy_create_buffer() is @emph{NOT} destroyed automatically. You must call yy_delete_buffer() to free the memory. The exception to this rule is that flex will delete the current buffer automatically when you call yylex_destroy(). If you delete the current buffer, be sure to set it to NULL. That way, flex will not try to delete the buffer a second time (possibly crashing your program!) At the time of this writing, flex does not provide a growable stack for the buffer states. You have to manage that yourself. @xref{Multiple Input Buffers}. @item 84 bytes for the reentrant scanner guts Flex allocates about 84 bytes for the reentrant scanner structure when you call yylex_init(). It is destroyed when the user calls yylex_destroy(). @end table @node Overriding The Default Memory Management, A Note About yytext And Memory, The Default Memory Management, Memory Management @section Overriding The Default Memory Management @cindex yyalloc, overriding @cindex yyrealloc, overriding @cindex yyfree, overriding Flex calls the functions @code{yyalloc}, @code{yyrealloc}, and @code{yyfree} when it needs to allocate or free memory. By default, these functions are wrappers around the standard C functions, @code{malloc}, @code{realloc}, and @code{free}, respectively. You can override the default implementations by telling flex that you will provide your own implementations. To override the default implementations, you must do two things: @enumerate @item Suppress the default implementations by specifying one or more of the following options: @itemize @opindex noyyalloc @item @code{%option noyyalloc} @item @code{%option noyyrealloc} @item @code{%option noyyfree}. @end itemize @item Provide your own implementation of the following functions: @footnote{It is not necessary to override all (or any) of the memory management routines. You may, for example, override @code{yyrealloc}, but not @code{yyfree} or @code{yyalloc}.} @example @verbatim // For a non-reentrant scanner void * yyalloc (size_t bytes); void * yyrealloc (void * ptr, size_t bytes); void yyfree (void * ptr); // For a reentrant scanner void * yyalloc (size_t bytes, void * yyscanner); void * yyrealloc (void * ptr, size_t bytes, void * yyscanner); void yyfree (void * ptr, void * yyscanner); @end verbatim @end example @end enumerate In the following example, we will override all three memory routines. We assume that there is a custom allocator with garbage collection. In order to make this example interesting, we will use a reentrant scanner, passing a pointer to the custom allocator through @code{yyextra}. @cindex overriding the memory routines @example @verbatim %{ #include "some_allocator.h" %} /* Suppress the default implementations. */ %option noyyalloc noyyrealloc noyyfree %option reentrant /* Initialize the allocator. */ #define YY_EXTRA_TYPE struct allocator* #define YY_USER_INIT yyextra = allocator_create(); %% .|\n ; %% /* Provide our own implementations. */ void * yyalloc (size_t bytes, void* yyscanner) { return allocator_alloc (yyextra, bytes); } void * yyrealloc (void * ptr, size_t bytes, void* yyscanner) { return allocator_realloc (yyextra, bytes); } void yyfree (void * ptr, void * yyscanner) { /* Do nothing -- we leave it to the garbage collector. */ } @end verbatim @end example @node A Note About yytext And Memory, , Overriding The Default Memory Management, Memory Management @section A Note About yytext And Memory @cindex yytext, memory considerations When flex finds a match, @code{yytext} points to the first character of the match in the input buffer. The string itself is part of the input buffer, and is @emph{NOT} allocated separately. The value of yytext will be overwritten the next time yylex() is called. In short, the value of yytext is only valid from within the matched rule's action. Often, you want the value of yytext to persist for later processing, i.e., by a parser with non-zero lookahead. In order to preserve yytext, you will have to copy it with strdup() or a similar function. But this introduces some headache because your parser is now responsible for freeing the copy of yytext. If you use a yacc or bison parser, (commonly used with flex), you will discover that the error recovery mechanisms can cause memory to be leaked. To prevent memory leaks from strdup'd yytext, you will have to track the memory somehow. Our experience has shown that a garbage collection mechanism or a pooled memory mechanism will save you a lot of grief when writing parsers. @node Serialized Tables, Diagnostics, Memory Management, Top @chapter Serialized Tables @cindex serialization @cindex memory, serialized tables @anchor{serialization} A @code{flex} scanner has the ability to save the DFA tables to a file, and load them at runtime when needed. The motivation for this feature is to reduce the runtime memory footprint. Traditionally, these tables have been compiled into the scanner as C arrays, and are sometimes quite large. Since the tables are compiled into the scanner, the memory used by the tables can never be freed. This is a waste of memory, especially if an application uses several scanners, but none of them at the same time. The serialization feature allows the tables to be loaded at runtime, before scanning begins. The tables may be discarded when scanning is finished. @menu * Creating Serialized Tables:: * Loading and Unloading Serialized Tables:: * Tables File Format:: @end menu @node Creating Serialized Tables, Loading and Unloading Serialized Tables, Serialized Tables, Serialized Tables @section Creating Serialized Tables @cindex tables, creating serialized @cindex serialization of tables You may create a scanner with serialized tables by specifying: @example @verbatim %option tables-file=FILE or --tables-file=FILE @end verbatim @end example These options instruct flex to save the DFA tables to the file @var{FILE}. The tables will @emph{not} be embedded in the generated scanner. The scanner will not function on its own. The scanner will be dependent upon the serialized tables. You must load the tables from this file at runtime before you can scan anything. If you do not specify a filename to @code{--tables-file}, the tables will be saved to @file{lex.yy.tables}, where @samp{yy} is the appropriate prefix. If your project uses several different scanners, you can concatenate the serialized tables into one file, and flex will find the correct set of tables, using the scanner prefix as part of the lookup key. An example follows: @cindex serialized tables, multiple scanners @example @verbatim $ flex --tables-file --prefix=cpp cpp.l $ flex --tables-file --prefix=c c.l $ cat lex.cpp.tables lex.c.tables > all.tables @end verbatim @end example The above example created two scanners, @samp{cpp}, and @samp{c}. Since we did not specify a filename, the tables were serialized to @file{lex.c.tables} and @file{lex.cpp.tables}, respectively. Then, we concatenated the two files together into @file{all.tables}, which we will distribute with our project. At runtime, we will open the file and tell flex to load the tables from it. Flex will find the correct tables automatically. (See next section). @node Loading and Unloading Serialized Tables, Tables File Format, Creating Serialized Tables, Serialized Tables @section Loading and Unloading Serialized Tables @cindex tables, loading and unloading @cindex loading tables at runtime @cindex tables, freeing @cindex freeing tables @cindex memory, serialized tables If you've built your scanner with @code{%option tables-file}, then you must load the scanner tables at runtime. This can be accomplished with the following function: @deftypefun int yytables_fload (FILE* @var{fp} [, yyscan_t @var{scanner}]) Locates scanner tables in the stream pointed to by @var{fp} and loads them. Memory for the tables is allocated via @code{yyalloc}. You must call this function before the first call to @code{yylex}. The argument @var{scanner} only appears in the reentrant scanner. This function returns @samp{0} (zero) on success, or non-zero on error. @end deftypefun The loaded tables are @strong{not} automatically destroyed (unloaded) when you call @code{yylex_destroy}. The reason is that you may create several scanners of the same type (in a reentrant scanner), each of which needs access to these tables. To avoid a nasty memory leak, you must call the following function: @deftypefun int yytables_destroy ([yyscan_t @var{scanner}]) Unloads the scanner tables. The tables must be loaded again before you can scan any more data. The argument @var{scanner} only appears in the reentrant scanner. This function returns @samp{0} (zero) on success, or non-zero on error. @end deftypefun @strong{The functions @code{yytables_fload} and @code{yytables_destroy} are not thread-safe.} You must ensure that these functions are called exactly once (for each scanner type) in a threaded program, before any thread calls @code{yylex}. After the tables are loaded, they are never written to, and no thread protection is required thereafter -- until you destroy them. @node Tables File Format, , Loading and Unloading Serialized Tables, Serialized Tables @section Tables File Format @cindex tables, file format @cindex file format, serialized tables This section defines the file format of serialized @code{flex} tables. The tables format allows for one or more sets of tables to be specified, where each set corresponds to a given scanner. Scanners are indexed by name, as described below. The file format is as follows: @example @verbatim TABLE SET 1 +-------------------------------+ Header | uint32 th_magic; | | uint32 th_hsize; | | uint32 th_ssize; | | uint16 th_flags; | | char th_version[]; | | char th_name[]; | | uint8 th_pad64[]; | +-------------------------------+ Table 1 | uint16 td_id; | | uint16 td_flags; | | uint32 td_hilen; | | uint32 td_lolen; | | void td_data[]; | | uint8 td_pad64[]; | +-------------------------------+ Table 2 | | . . . . . . . . . . . . Table n | | +-------------------------------+ TABLE SET 2 . . . TABLE SET N @end verbatim @end example The above diagram shows that a complete set of tables consists of a header followed by multiple individual tables. Furthermore, multiple complete sets may be present in the same file, each set with its own header and tables. The sets are contiguous in the file. The only way to know if another set follows is to check the next four bytes for the magic number (or check for EOF). The header and tables sections are padded to 64-bit boundaries. Below we describe each field in detail. This format does not specify how the scanner will expand the given data, i.e., data may be serialized as int8, but expanded to an int32 array at runtime. This is to reduce the size of the serialized data where possible. Remember, @emph{all integer values are in network byte order}. @noindent Fields of a table header: @table @code @item th_magic Magic number, always 0xF13C57B1. @item th_hsize Size of this entire header, in bytes, including all fields plus any padding. @item th_ssize Size of this entire set, in bytes, including the header, all tables, plus any padding. @item th_flags Bit flags for this table set. Currently unused. @item th_version[] Flex version in NULL-terminated string format. e.g., @samp{2.5.13a}. This is the version of flex that was used to create the serialized tables. @item th_name[] Contains the name of this table set. The default is @samp{yytables}, and is prefixed accordingly, e.g., @samp{footables}. Must be NULL-terminated. @item th_pad64[] Zero or more NULL bytes, padding the entire header to the next 64-bit boundary as calculated from the beginning of the header. @end table @noindent Fields of a table: @table @code @item td_id Specifies the table identifier. Possible values are: @table @code @item YYTD_ID_ACCEPT (0x01) @code{yy_accept} @item YYTD_ID_BASE (0x02) @code{yy_base} @item YYTD_ID_CHK (0x03) @code{yy_chk} @item YYTD_ID_DEF (0x04) @code{yy_def} @item YYTD_ID_EC (0x05) @code{yy_ec } @item YYTD_ID_META (0x06) @code{yy_meta} @item YYTD_ID_NUL_TRANS (0x07) @code{yy_NUL_trans} @item YYTD_ID_NXT (0x08) @code{yy_nxt}. This array may be two dimensional. See the @code{td_hilen} field below. @item YYTD_ID_RULE_CAN_MATCH_EOL (0x09) @code{yy_rule_can_match_eol} @item YYTD_ID_START_STATE_LIST (0x0A) @code{yy_start_state_list}. This array is handled specially because it is an array of pointers to structs. See the @code{td_flags} field below. @item YYTD_ID_TRANSITION (0x0B) @code{yy_transition}. This array is handled specially because it is an array of structs. See the @code{td_lolen} field below. @item YYTD_ID_ACCLIST (0x0C) @code{yy_acclist} @end table @item td_flags Bit flags describing how to interpret the data in @code{td_data}. The data arrays are one-dimensional by default, but may be two dimensional as specified in the @code{td_hilen} field. @table @code @item YYTD_DATA8 (0x01) The data is serialized as an array of type int8. @item YYTD_DATA16 (0x02) The data is serialized as an array of type int16. @item YYTD_DATA32 (0x04) The data is serialized as an array of type int32. @item YYTD_PTRANS (0x08) The data is a list of indexes of entries in the expanded @code{yy_transition} array. Each index should be expanded to a pointer to the corresponding entry in the @code{yy_transition} array. We count on the fact that the @code{yy_transition} array has already been seen. @item YYTD_STRUCT (0x10) The data is a list of yy_trans_info structs, each of which consists of two integers. There is no padding between struct elements or between structs. The type of each member is determined by the @code{YYTD_DATA*} bits. @end table @item td_hilen If @code{td_hilen} is non-zero, then the data is a two-dimensional array. Otherwise, the data is a one-dimensional array. @code{td_hilen} contains the number of elements in the higher dimensional array, and @code{td_lolen} contains the number of elements in the lowest dimension. Conceptually, @code{td_data} is either @code{sometype td_data[td_lolen]}, or @code{sometype td_data[td_hilen][td_lolen]}, where @code{sometype} is specified by the @code{td_flags} field. It is possible for both @code{td_lolen} and @code{td_hilen} to be zero, in which case @code{td_data} is a zero length array, and no data is loaded, i.e., this table is simply skipped. Flex does not currently generate tables of zero length. @item td_lolen Specifies the number of elements in the lowest dimension array. If this is a one-dimensional array, then it is simply the number of elements in this array. The element size is determined by the @code{td_flags} field. @item td_data[] The table data. This array may be a one- or two-dimensional array, of type @code{int8}, @code{int16}, @code{int32}, @code{struct yy_trans_info}, or @code{struct yy_trans_info*}, depending upon the values in the @code{td_flags}, @code{td_hilen}, and @code{td_lolen} fields. @item td_pad64[] Zero or more NULL bytes, padding the entire table to the next 64-bit boundary as calculated from the beginning of this table. @end table @node Diagnostics, Limitations, Serialized Tables, Top @chapter Diagnostics @cindex error reporting, diagnostic messages @cindex warnings, diagnostic messages The following is a list of @code{flex} diagnostic messages: @itemize @item @samp{warning, rule cannot be matched} indicates that the given rule cannot be matched because it follows other rules that will always match the same text as it. For example, in the following @samp{foo} cannot be matched because it comes after an identifier ``catch-all'' rule: @cindex warning, rule cannot be matched @example @verbatim [a-z]+ got_identifier(); foo got_foo(); @end verbatim @end example Using @code{REJECT} in a scanner suppresses this warning. @item @samp{warning, -s option given but default rule can be matched} means that it is possible (perhaps only in a particular start condition) that the default rule (match any single character) is the only one that will match a particular input. Since @samp{-s} was given, presumably this is not intended. @item @code{reject_used_but_not_detected undefined} or @code{yymore_used_but_not_detected undefined}. These errors can occur at compile time. They indicate that the scanner uses @code{REJECT} or @code{yymore()} but that @code{flex} failed to notice the fact, meaning that @code{flex} scanned the first two sections looking for occurrences of these actions and failed to find any, but somehow you snuck some in (via a #include file, for example). Use @code{%option reject} or @code{%option yymore} to indicate to @code{flex} that you really do use these features. @item @samp{flex scanner jammed}. a scanner compiled with @samp{-s} has encountered an input string which wasn't matched by any of its rules. This error can also occur due to internal problems. @item @samp{token too large, exceeds YYLMAX}. your scanner uses @code{%array} and one of its rules matched a string longer than the @code{YYLMAX} constant (8K bytes by default). You can increase the value by #define'ing @code{YYLMAX} in the definitions section of your @code{flex} input. @item @samp{scanner requires -8 flag to use the character 'x'}. Your scanner specification includes recognizing the 8-bit character @samp{'x'} and you did not specify the -8 flag, and your scanner defaulted to 7-bit because you used the @samp{-Cf} or @samp{-CF} table compression options. See the discussion of the @samp{-7} flag, @ref{Scanner Options}, for details. @item @samp{flex scanner push-back overflow}. you used @code{unput()} to push back so much text that the scanner's buffer could not hold both the pushed-back text and the current token in @code{yytext}. Ideally the scanner should dynamically resize the buffer in this case, but at present it does not. @item @samp{input buffer overflow, can't enlarge buffer because scanner uses REJECT}. the scanner was working on matching an extremely large token and needed to expand the input buffer. This doesn't work with scanners that use @code{REJECT}. @item @samp{fatal flex scanner internal error--end of buffer missed}. This can occur in a scanner which is reentered after a long-jump has jumped out (or over) the scanner's activation frame. Before reentering the scanner, use: @example @verbatim yyrestart( yyin ); @end verbatim @end example or, as noted above, switch to using the C++ scanner class. @item @samp{too many start conditions in <> construct!} you listed more start conditions in a <> construct than exist (so you must have listed at least one of them twice). @end itemize @node Limitations, Bibliography, Diagnostics, Top @chapter Limitations @cindex limitations of flex Some trailing context patterns cannot be properly matched and generate warning messages (@samp{dangerous trailing context}). These are patterns where the ending of the first part of the rule matches the beginning of the second part, such as @samp{zx*/xy*}, where the 'x*' matches the 'x' at the beginning of the trailing context. (Note that the POSIX draft states that the text matched by such patterns is undefined.) For some trailing context rules, parts which are actually fixed-length are not recognized as such, leading to the abovementioned performance loss. In particular, parts using @samp{|} or @samp{@{n@}} (such as @samp{foo@{3@}}) are always considered variable-length. Combining trailing context with the special @samp{|} action can result in @emph{fixed} trailing context being turned into the more expensive @emph{variable} trailing context. For example, in the following: @cindex warning, dangerous trailing context @example @verbatim %% abc | xyz/def @end verbatim @end example Use of @code{unput()} invalidates yytext and yyleng, unless the @code{%array} directive or the @samp{-l} option has been used. Pattern-matching of @code{NUL}s is substantially slower than matching other characters. Dynamic resizing of the input buffer is slow, as it entails rescanning all the text matched so far by the current (generally huge) token. Due to both buffering of input and read-ahead, you cannot intermix calls to @file{} routines, such as, @b{getchar()}, with @code{flex} rules and expect it to work. Call @code{input()} instead. The total table entries listed by the @samp{-v} flag excludes the number of table entries needed to determine what rule has been matched. The number of entries is equal to the number of DFA states if the scanner does not use @code{REJECT}, and somewhat greater than the number of states if it does. @code{REJECT} cannot be used with the @samp{-f} or @samp{-F} options. The @code{flex} internal algorithms need documentation. @node Bibliography, FAQ, Limitations, Top @chapter Additional Reading You may wish to read more about the following programs: @itemize @item lex @item yacc @item sed @item awk @end itemize The following books may contain material of interest: John Levine, Tony Mason, and Doug Brown, @emph{Lex & Yacc}, O'Reilly and Associates. Be sure to get the 2nd edition. M. E. Lesk and E. Schmidt, @emph{LEX -- Lexical Analyzer Generator} Alfred Aho, Ravi Sethi and Jeffrey Ullman, @emph{Compilers: Principles, Techniques and Tools}, Addison-Wesley (1986). Describes the pattern-matching techniques used by @code{flex} (deterministic finite automata). @node FAQ, Appendices, Bibliography, Top @unnumbered FAQ From time to time, the @code{flex} maintainer receives certain questions. Rather than repeat answers to well-understood problems, we publish them here. @menu * When was flex born?:: * How do I expand backslash-escape sequences in C-style quoted strings?:: * Why do flex scanners call fileno if it is not ANSI compatible?:: * Does flex support recursive pattern definitions?:: * How do I skip huge chunks of input (tens of megabytes) while using flex?:: * Flex is not matching my patterns in the same order that I defined them.:: * My actions are executing out of order or sometimes not at all.:: * How can I have multiple input sources feed into the same scanner at the same time?:: * Can I build nested parsers that work with the same input file?:: * How can I match text only at the end of a file?:: * How can I make REJECT cascade across start condition boundaries?:: * Why cant I use fast or full tables with interactive mode?:: * How much faster is -F or -f than -C?:: * If I have a simple grammar cant I just parse it with flex?:: * Why doesn't yyrestart() set the start state back to INITIAL?:: * How can I match C-style comments?:: * The period isn't working the way I expected.:: * Can I get the flex manual in another format?:: * Does there exist a "faster" NDFA->DFA algorithm?:: * How does flex compile the DFA so quickly?:: * How can I use more than 8192 rules?:: * How do I abandon a file in the middle of a scan and switch to a new file?:: * How do I execute code only during initialization (only before the first scan)?:: * How do I execute code at termination?:: * Where else can I find help?:: * Can I include comments in the "rules" section of the file?:: * I get an error about undefined yywrap().:: * How can I change the matching pattern at run time?:: * How can I expand macros in the input?:: * How can I build a two-pass scanner?:: * How do I match any string not matched in the preceding rules?:: * I am trying to port code from AT&T lex that uses yysptr and yysbuf.:: * Is there a way to make flex treat NULL like a regular character?:: * Whenever flex can not match the input it says "flex scanner jammed".:: * Why doesn't flex have non-greedy operators like perl does?:: * Memory leak - 16386 bytes allocated by malloc.:: * How do I track the byte offset for lseek()?:: * How do I use my own I/O classes in a C++ scanner?:: * How do I skip as many chars as possible?:: * deleteme00:: * Are certain equivalent patterns faster than others?:: * Is backing up a big deal?:: * Can I fake multi-byte character support?:: * deleteme01:: * Can you discuss some flex internals?:: * unput() messes up yy_at_bol:: * The | operator is not doing what I want:: * Why can't flex understand this variable trailing context pattern?:: * The ^ operator isn't working:: * Trailing context is getting confused with trailing optional patterns:: * Is flex GNU or not?:: * ERASEME53:: * I need to scan if-then-else blocks and while loops:: * ERASEME55:: * ERASEME56:: * ERASEME57:: * Is there a repository for flex scanners?:: * How can I conditionally compile or preprocess my flex input file?:: * Where can I find grammars for lex and yacc?:: * I get an end-of-buffer message for each character scanned.:: * unnamed-faq-62:: * unnamed-faq-63:: * unnamed-faq-64:: * unnamed-faq-65:: * unnamed-faq-66:: * unnamed-faq-67:: * unnamed-faq-68:: * unnamed-faq-69:: * unnamed-faq-70:: * unnamed-faq-71:: * unnamed-faq-72:: * unnamed-faq-73:: * unnamed-faq-74:: * unnamed-faq-75:: * unnamed-faq-76:: * unnamed-faq-77:: * unnamed-faq-78:: * unnamed-faq-79:: * unnamed-faq-80:: * unnamed-faq-81:: * unnamed-faq-82:: * unnamed-faq-83:: * unnamed-faq-84:: * unnamed-faq-85:: * unnamed-faq-86:: * unnamed-faq-87:: * unnamed-faq-88:: * unnamed-faq-90:: * unnamed-faq-91:: * unnamed-faq-92:: * unnamed-faq-93:: * unnamed-faq-94:: * unnamed-faq-95:: * unnamed-faq-96:: * unnamed-faq-97:: * unnamed-faq-98:: * unnamed-faq-99:: * unnamed-faq-100:: * unnamed-faq-101:: * What is the difference between YYLEX_PARAM and YY_DECL?:: * Why do I get "conflicting types for yylex" error?:: * How do I access the values set in a Flex action from within a Bison action?:: @end menu @node When was flex born? @unnumberedsec When was flex born? Vern Paxson took over the @cite{Software Tools} lex project from Jef Poskanzer in 1982. At that point it was written in Ratfor. Around 1987 or so, Paxson translated it into C, and a legend was born :-). @node How do I expand backslash-escape sequences in C-style quoted strings? @unnumberedsec How do I expand backslash-escape sequences in C-style quoted strings? A key point when scanning quoted strings is that you cannot (easily) write a single rule that will precisely match the string if you allow things like embedded escape sequences and newlines. If you try to match strings with a single rule then you'll wind up having to rescan the string anyway to find any escape sequences. Instead you can use exclusive start conditions and a set of rules, one for matching non-escaped text, one for matching a single escape, one for matching an embedded newline, and one for recognizing the end of the string. Each of these rules is then faced with the question of where to put its intermediary results. The best solution is for the rules to append their local value of @code{yytext} to the end of a ``string literal'' buffer. A rule like the escape-matcher will append to the buffer the meaning of the escape sequence rather than the literal text in @code{yytext}. In this way, @code{yytext} does not need to be modified at all. @node Why do flex scanners call fileno if it is not ANSI compatible? @unnumberedsec Why do flex scanners call fileno if it is not ANSI compatible? Flex scanners call @code{fileno()} in order to get the file descriptor corresponding to @code{yyin}. The file descriptor may be passed to @code{isatty()} or @code{read()}, depending upon which @code{%options} you specified. If your system does not have @code{fileno()} support, to get rid of the @code{read()} call, do not specify @code{%option read}. To get rid of the @code{isatty()} call, you must specify one of @code{%option always-interactive} or @code{%option never-interactive}. @node Does flex support recursive pattern definitions? @unnumberedsec Does flex support recursive pattern definitions? e.g., @example @verbatim %% block "{"({block}|{statement})*"}" @end verbatim @end example No. You cannot have recursive definitions. The pattern-matching power of regular expressions in general (and therefore flex scanners, too) is limited. In particular, regular expressions cannot ``balance'' parentheses to an arbitrary degree. For example, it's impossible to write a regular expression that matches all strings containing the same number of '@{'s as '@}'s. For more powerful pattern matching, you need a parser, such as @cite{GNU bison}. @node How do I skip huge chunks of input (tens of megabytes) while using flex? @unnumberedsec How do I skip huge chunks of input (tens of megabytes) while using flex? Use @code{fseek()} (or @code{lseek()}) to position yyin, then call @code{yyrestart()}. @node Flex is not matching my patterns in the same order that I defined them. @unnumberedsec Flex is not matching my patterns in the same order that I defined them. @code{flex} picks the rule that matches the most text (i.e., the longest possible input string). This is because @code{flex} uses an entirely different matching technique (``deterministic finite automata'') that actually does all of the matching simultaneously, in parallel. (Seems impossible, but it's actually a fairly simple technique once you understand the principles.) A side-effect of this parallel matching is that when the input matches more than one rule, @code{flex} scanners pick the rule that matched the @emph{most} text. This is explained further in the manual, in the section @xref{Matching}. If you want @code{flex} to choose a shorter match, then you can work around this behavior by expanding your short rule to match more text, then put back the extra: @example @verbatim data_.* yyless( 5 ); BEGIN BLOCKIDSTATE; @end verbatim @end example Another fix would be to make the second rule active only during the @code{} start condition, and make that start condition exclusive by declaring it with @code{%x} instead of @code{%s}. A final fix is to change the input language so that the ambiguity for @samp{data_} is removed, by adding characters to it that don't match the identifier rule, or by removing characters (such as @samp{_}) from the identifier rule so it no longer matches @samp{data_}. (Of course, you might also not have the option of changing the input language.) @node My actions are executing out of order or sometimes not at all. @unnumberedsec My actions are executing out of order or sometimes not at all. Most likely, you have (in error) placed the opening @samp{@{} of the action block on a different line than the rule, e.g., @example @verbatim ^(foo|bar) { <<<--- WRONG! } @end verbatim @end example @code{flex} requires that the opening @samp{@{} of an action associated with a rule begin on the same line as does the rule. You need instead to write your rules as follows: @example @verbatim ^(foo|bar) { // CORRECT! } @end verbatim @end example @node How can I have multiple input sources feed into the same scanner at the same time? @unnumberedsec How can I have multiple input sources feed into the same scanner at the same time? If @dots{} @itemize @item your scanner is free of backtracking (verified using @code{flex}'s @samp{-b} flag), @item AND you run your scanner interactively (@samp{-I} option; default unless using special table compression options), @item AND you feed it one character at a time by redefining @code{YY_INPUT} to do so, @end itemize then every time it matches a token, it will have exhausted its input buffer (because the scanner is free of backtracking). This means you can safely use @code{select()} at the point and only call @code{yylex()} for another token if @code{select()} indicates there's data available. That is, move the @code{select()} out from the input function to a point where it determines whether @code{yylex()} gets called for the next token. With this approach, you will still have problems if your input can arrive piecemeal; @code{select()} could inform you that the beginning of a token is available, you call @code{yylex()} to get it, but it winds up blocking waiting for the later characters in the token. Here's another way: Move your input multiplexing inside of @code{YY_INPUT}. That is, whenever @code{YY_INPUT} is called, it @code{select()}'s to see where input is available. If input is available for the scanner, it reads and returns the next byte. If input is available from another source, it calls whatever function is responsible for reading from that source. (If no input is available, it blocks until some input is available.) I've used this technique in an interpreter I wrote that both reads keyboard input using a @code{flex} scanner and IPC traffic from sockets, and it works fine. @node Can I build nested parsers that work with the same input file? @unnumberedsec Can I build nested parsers that work with the same input file? This is not going to work without some additional effort. The reason is that @code{flex} block-buffers the input it reads from @code{yyin}. This means that the ``outermost'' @code{yylex()}, when called, will automatically slurp up the first 8K of input available on yyin, and subsequent calls to other @code{yylex()}'s won't see that input. You might be tempted to work around this problem by redefining @code{YY_INPUT} to only return a small amount of text, but it turns out that that approach is quite difficult. Instead, the best solution is to combine all of your scanners into one large scanner, using a different exclusive start condition for each. @node How can I match text only at the end of a file? @unnumberedsec How can I match text only at the end of a file? There is no way to write a rule which is ``match this text, but only if it comes at the end of the file''. You can fake it, though, if you happen to have a character lying around that you don't allow in your input. Then you redefine @code{YY_INPUT} to call your own routine which, if it sees an @samp{EOF}, returns the magic character first (and remembers to return a real @code{EOF} next time it's called). Then you could write: @example @verbatim (.|\n)*{EOF_CHAR} /* saw comment at EOF */ @end verbatim @end example @node How can I make REJECT cascade across start condition boundaries? @unnumberedsec How can I make REJECT cascade across start condition boundaries? You can do this as follows. Suppose you have a start condition @samp{A}, and after exhausting all of the possible matches in @samp{}, you want to try matches in @samp{}. Then you could use the following: @example @verbatim %x A %% rule_that_is_long ...; REJECT; rule ...; REJECT; /* shorter rule */ etc. ... .|\n { /* Shortest and last rule in , so * cascaded REJECTs will eventually * wind up matching this rule. We want * to now switch to the initial state * and try matching from there instead. */ yyless(0); /* put back matched text */ BEGIN(INITIAL); } @end verbatim @end example @node Why cant I use fast or full tables with interactive mode? @unnumberedsec Why can't I use fast or full tables with interactive mode? One of the assumptions flex makes is that interactive applications are inherently slow (they're waiting on a human after all). It has to do with how the scanner detects that it must be finished scanning a token. For interactive scanners, after scanning each character the current state is looked up in a table (essentially) to see whether there's a chance of another input character possibly extending the length of the match. If not, the scanner halts. For non-interactive scanners, the end-of-token test is much simpler, basically a compare with 0, so no memory bus cycles. Since the test occurs in the innermost scanning loop, one would like to make it go as fast as possible. Still, it seems reasonable to allow the user to choose to trade off a bit of performance in this area to gain the corresponding flexibility. There might be another reason, though, why fast scanners don't support the interactive option. @node How much faster is -F or -f than -C? @unnumberedsec How much faster is -F or -f than -C? Much faster (factor of 2-3). @node If I have a simple grammar cant I just parse it with flex? @unnumberedsec If I have a simple grammar can't I just parse it with flex? Is your grammar recursive? That's almost always a sign that you're better off using a parser/scanner rather than just trying to use a scanner alone. @node Why doesn't yyrestart() set the start state back to INITIAL? @unnumberedsec Why doesn't yyrestart() set the start state back to INITIAL? There are two reasons. The first is that there might be programs that rely on the start state not changing across file changes. The second is that beginning with @code{flex} version 2.4, use of @code{yyrestart()} is no longer required, so fixing the problem there doesn't solve the more general problem. @node How can I match C-style comments? @unnumberedsec How can I match C-style comments? You might be tempted to try something like this: @example @verbatim "/*".*"*/" // WRONG! @end verbatim @end example or, worse, this: @example @verbatim "/*"(.|\n)"*/" // WRONG! @end verbatim @end example The above rules will eat too much input, and blow up on things like: @example @verbatim /* a comment */ do_my_thing( "oops */" ); @end verbatim @end example Here is one way which allows you to track line information: @example @verbatim { "/*" BEGIN(IN_COMMENT); } { "*/" BEGIN(INITIAL); [^*\n]+ // eat comment in chunks "*" // eat the lone star \n yylineno++; } @end verbatim @end example @node The period isn't working the way I expected. @unnumberedsec The '.' isn't working the way I expected. Here are some tips for using @samp{.}: @itemize @item A common mistake is to place the grouping parenthesis AFTER an operator, when you really meant to place the parenthesis BEFORE the operator, e.g., you probably want this @code{(foo|bar)+} and NOT this @code{(foo|bar+)}. The first pattern matches the words @samp{foo} or @samp{bar} any number of times, e.g., it matches the text @samp{barfoofoobarfoo}. The second pattern matches a single instance of @code{foo} or a single instance of @code{bar} followed by one or more @samp{r}s, e.g., it matches the text @code{barrrr} . @item A @samp{.} inside @samp{[]}'s just means a literal@samp{.} (period), and NOT ``any character except newline''. @item Remember that @samp{.} matches any character EXCEPT @samp{\n} (and @samp{EOF}). If you really want to match ANY character, including newlines, then use @code{(.|\n)} Beware that the regex @code{(.|\n)+} will match your entire input! @item Finally, if you want to match a literal @samp{.} (a period), then use @samp{[.]} or @samp{"."} @end itemize @node Can I get the flex manual in another format? @unnumberedsec Can I get the flex manual in another format? The @code{flex} source distribution includes a texinfo manual. You are free to convert that texinfo into whatever format you desire. The @code{texinfo} package includes tools for conversion to a number of formats. @node Does there exist a "faster" NDFA->DFA algorithm? @unnumberedsec Does there exist a "faster" NDFA->DFA algorithm? There's no way around the potential exponential running time - it can take you exponential time just to enumerate all of the DFA states. In practice, though, the running time is closer to linear, or sometimes quadratic. @node How does flex compile the DFA so quickly? @unnumberedsec How does flex compile the DFA so quickly? There are two big speed wins that @code{flex} uses: @enumerate @item It analyzes the input rules to construct equivalence classes for those characters that always make the same transitions. It then rewrites the NFA using equivalence classes for transitions instead of characters. This cuts down the NFA->DFA computation time dramatically, to the point where, for uncompressed DFA tables, the DFA generation is often I/O bound in writing out the tables. @item It maintains hash values for previously computed DFA states, so testing whether a newly constructed DFA state is equivalent to a previously constructed state can be done very quickly, by first comparing hash values. @end enumerate @node How can I use more than 8192 rules? @unnumberedsec How can I use more than 8192 rules? @code{Flex} is compiled with an upper limit of 8192 rules per scanner. If you need more than 8192 rules in your scanner, you'll have to recompile @code{flex} with the following changes in @file{flexdef.h}: @example @verbatim < #define YY_TRAILING_MASK 0x2000 < #define YY_TRAILING_HEAD_MASK 0x4000 -- > #define YY_TRAILING_MASK 0x20000000 > #define YY_TRAILING_HEAD_MASK 0x40000000 @end verbatim @end example This should work okay as long as your C compiler uses 32 bit integers. But you might want to think about whether using such a huge number of rules is the best way to solve your problem. The following may also be relevant: With luck, you should be able to increase the definitions in flexdef.h for: @example @verbatim #define JAMSTATE -32766 /* marks a reference to the state that always jams */ #define MAXIMUM_MNS 31999 #define BAD_SUBSCRIPT -32767 @end verbatim @end example recompile everything, and it'll all work. Flex only has these 16-bit-like values built into it because a long time ago it was developed on a machine with 16-bit ints. I've given this advice to others in the past but haven't heard back from them whether it worked okay or not... @node How do I abandon a file in the middle of a scan and switch to a new file? @unnumberedsec How do I abandon a file in the middle of a scan and switch to a new file? Just call @code{yyrestart(newfile)}. Be sure to reset the start state if you want a ``fresh start, since @code{yyrestart} does NOT reset the start state back to @code{INITIAL}. @node How do I execute code only during initialization (only before the first scan)? @unnumberedsec How do I execute code only during initialization (only before the first scan)? You can specify an initial action by defining the macro @code{YY_USER_INIT} (though note that @code{yyout} may not be available at the time this macro is executed). Or you can add to the beginning of your rules section: @example @verbatim %% /* Must be indented! */ static int did_init = 0; if ( ! did_init ){ do_my_init(); did_init = 1; } @end verbatim @end example @node How do I execute code at termination? @unnumberedsec How do I execute code at termination? You can specify an action for the @code{<>} rule. @node Where else can I find help? @unnumberedsec Where else can I find help? You can find the flex homepage on the web at @uref{http://flex.sourceforge.net/}. See that page for details about flex mailing lists as well. @node Can I include comments in the "rules" section of the file? @unnumberedsec Can I include comments in the "rules" section of the file? Yes, just about anywhere you want to. See the manual for the specific syntax. @node I get an error about undefined yywrap(). @unnumberedsec I get an error about undefined yywrap(). You must supply a @code{yywrap()} function of your own, or link to @file{libfl.a} (which provides one), or use @example @verbatim %option noyywrap @end verbatim @end example in your source to say you don't want a @code{yywrap()} function. @node How can I change the matching pattern at run time? @unnumberedsec How can I change the matching pattern at run time? You can't, it's compiled into a static table when flex builds the scanner. @node How can I expand macros in the input? @unnumberedsec How can I expand macros in the input? The best way to approach this problem is at a higher level, e.g., in the parser. However, you can do this using multiple input buffers. @example @verbatim %% macro/[a-z]+ { /* Saw the macro "macro" followed by extra stuff. */ main_buffer = YY_CURRENT_BUFFER; expansion_buffer = yy_scan_string(expand(yytext)); yy_switch_to_buffer(expansion_buffer); } <> { if ( expansion_buffer ) { // We were doing an expansion, return to where // we were. yy_switch_to_buffer(main_buffer); yy_delete_buffer(expansion_buffer); expansion_buffer = 0; } else yyterminate(); } @end verbatim @end example You probably will want a stack of expansion buffers to allow nested macros. From the above though hopefully the idea is clear. @node How can I build a two-pass scanner? @unnumberedsec How can I build a two-pass scanner? One way to do it is to filter the first pass to a temporary file, then process the temporary file on the second pass. You will probably see a performance hit, due to all the disk I/O. When you need to look ahead far forward like this, it almost always means that the right solution is to build a parse tree of the entire input, then walk it after the parse in order to generate the output. In a sense, this is a two-pass approach, once through the text and once through the parse tree, but the performance hit for the latter is usually an order of magnitude smaller, since everything is already classified, in binary format, and residing in memory. @node How do I match any string not matched in the preceding rules? @unnumberedsec How do I match any string not matched in the preceding rules? One way to assign precedence, is to place the more specific rules first. If two rules would match the same input (same sequence of characters) then the first rule listed in the @code{flex} input wins, e.g., @example @verbatim %% foo[a-zA-Z_]+ return FOO_ID; bar[a-zA-Z_]+ return BAR_ID; [a-zA-Z_]+ return GENERIC_ID; @end verbatim @end example Note that the rule @code{[a-zA-Z_]+} must come *after* the others. It will match the same amount of text as the more specific rules, and in that case the @code{flex} scanner will pick the first rule listed in your scanner as the one to match. @node I am trying to port code from AT&T lex that uses yysptr and yysbuf. @unnumberedsec I am trying to port code from AT&T lex that uses yysptr and yysbuf. Those are internal variables pointing into the AT&T scanner's input buffer. I imagine they're being manipulated in user versions of the @code{input()} and @code{unput()} functions. If so, what you need to do is analyze those functions to figure out what they're doing, and then replace @code{input()} with an appropriate definition of @code{YY_INPUT}. You shouldn't need to (and must not) replace @code{flex}'s @code{unput()} function. @node Is there a way to make flex treat NULL like a regular character? @unnumberedsec Is there a way to make flex treat NULL like a regular character? Yes, @samp{\0} and @samp{\x00} should both do the trick. Perhaps you have an ancient version of @code{flex}. The latest release is version @value{VERSION}. @node Whenever flex can not match the input it says "flex scanner jammed". @unnumberedsec Whenever flex can not match the input it says "flex scanner jammed". You need to add a rule that matches the otherwise-unmatched text, e.g., @example @verbatim %option yylineno %% [[a bunch of rules here]] . printf("bad input character '%s' at line %d\n", yytext, yylineno); @end verbatim @end example See @code{%option default} for more information. @node Why doesn't flex have non-greedy operators like perl does? @unnumberedsec Why doesn't flex have non-greedy operators like perl does? A DFA can do a non-greedy match by stopping the first time it enters an accepting state, instead of consuming input until it determines that no further matching is possible (a ``jam'' state). This is actually easier to implement than longest leftmost match (which flex does). But it's also much less useful than longest leftmost match. In general, when you find yourself wishing for non-greedy matching, that's usually a sign that you're trying to make the scanner do some parsing. That's generally the wrong approach, since it lacks the power to do a decent job. Better is to either introduce a separate parser, or to split the scanner into multiple scanners using (exclusive) start conditions. You might have a separate start state once you've seen the @samp{BEGIN}. In that state, you might then have a regex that will match @samp{END} (to kick you out of the state), and perhaps @samp{(.|\n)} to get a single character within the chunk ... This approach also has much better error-reporting properties. @node Memory leak - 16386 bytes allocated by malloc. @unnumberedsec Memory leak - 16386 bytes allocated by malloc. @anchor{faq-memory-leak} UPDATED 2002-07-10: As of @code{flex} version 2.5.9, this leak means that you did not call @code{yylex_destroy()}. If you are using an earlier version of @code{flex}, then read on. The leak is about 16426 bytes. That is, (8192 * 2 + 2) for the read-buffer, and about 40 for @code{struct yy_buffer_state} (depending upon alignment). The leak is in the non-reentrant C scanner only (NOT in the reentrant scanner, NOT in the C++ scanner). Since @code{flex} doesn't know when you are done, the buffer is never freed. However, the leak won't multiply since the buffer is reused no matter how many times you call @code{yylex()}. If you want to reclaim the memory when you are completely done scanning, then you might try this: @example @verbatim /* For non-reentrant C scanner only. */ yy_delete_buffer(YY_CURRENT_BUFFER); yy_init = 1; @end verbatim @end example Note: @code{yy_init} is an "internal variable", and hasn't been tested in this situation. It is possible that some other globals may need resetting as well. @node How do I track the byte offset for lseek()? @unnumberedsec How do I track the byte offset for lseek()? @example @verbatim > We thought that it would be possible to have this number through the > evaluation of the following expression: > > seek_position = (no_buffers)*YY_READ_BUF_SIZE + yy_c_buf_p - YY_CURRENT_BUFFER->yy_ch_buf @end verbatim @end example While this is the right idea, it has two problems. The first is that it's possible that @code{flex} will request less than @code{YY_READ_BUF_SIZE} during an invocation of @code{YY_INPUT} (or that your input source will return less even though @code{YY_READ_BUF_SIZE} bytes were requested). The second problem is that when refilling its internal buffer, @code{flex} keeps some characters from the previous buffer (because usually it's in the middle of a match, and needs those characters to construct @code{yytext} for the match once it's done). Because of this, @code{yy_c_buf_p - YY_CURRENT_BUFFER->yy_ch_buf} won't be exactly the number of characters already read from the current buffer. An alternative solution is to count the number of characters you've matched since starting to scan. This can be done by using @code{YY_USER_ACTION}. For example, @example @verbatim #define YY_USER_ACTION num_chars += yyleng; @end verbatim @end example (You need to be careful to update your bookkeeping if you use @code{yymore(}), @code{yyless()}, @code{unput()}, or @code{input()}.) @node How do I use my own I/O classes in a C++ scanner? @section How do I use my own I/O classes in a C++ scanner? When the flex C++ scanning class rewrite finally happens, then this sort of thing should become much easier. @cindex LexerOutput, overriding @cindex LexerInput, overriding @cindex overriding LexerOutput @cindex overriding LexerInput @cindex customizing I/O in C++ scanners @cindex C++ I/O, customizing You can do this by passing the various functions (such as @code{LexerInput()} and @code{LexerOutput()}) NULL @code{iostream*}'s, and then dealing with your own I/O classes surreptitiously (i.e., stashing them in special member variables). This works because the only assumption about the lexer regarding what's done with the iostream's is that they're ultimately passed to @code{LexerInput()} and @code{LexerOutput}, which then do whatever is necessary with them. @c faq edit stopped here @node How do I skip as many chars as possible? @unnumberedsec How do I skip as many chars as possible? How do I skip as many chars as possible -- without interfering with the other patterns? In the example below, we want to skip over characters until we see the phrase "endskip". The following will @emph{NOT} work correctly (do you see why not?) @example @verbatim /* INCORRECT SCANNER */ %x SKIP %% startskip BEGIN(SKIP); ... "endskip" BEGIN(INITIAL); .* ; @end verbatim @end example The problem is that the pattern .* will eat up the word "endskip." The simplest (but slow) fix is: @example @verbatim "endskip" BEGIN(INITIAL); . ; @end verbatim @end example The fix involves making the second rule match more, without making it match "endskip" plus something else. So for example: @example @verbatim "endskip" BEGIN(INITIAL); [^e]+ ; . ;/* so you eat up e's, too */ @end verbatim @end example @c TODO: Evaluate this faq. @node deleteme00 @unnumberedsec deleteme00 @example @verbatim QUESTION: When was flex born? Vern Paxson took over the Software Tools lex project from Jef Poskanzer in 1982. At that point it was written in Ratfor. Around 1987 or so, Paxson translated it into C, and a legend was born :-). @end verbatim @end example @c TODO: Evaluate this faq. @node Are certain equivalent patterns faster than others? @unnumberedsec Are certain equivalent patterns faster than others? @example @verbatim To: Adoram Rogel Subject: Re: Flex 2.5.2 performance questions In-reply-to: Your message of Wed, 18 Sep 96 11:12:17 EDT. Date: Wed, 18 Sep 96 10:51:02 PDT From: Vern Paxson [Note, the most recent flex release is 2.5.4, which you can get from ftp.ee.lbl.gov. It has bug fixes over 2.5.2 and 2.5.3.] > 1. Using the pattern > ([Ff](oot)?)?[Nn](ote)?(\.)? > instead of > (((F|f)oot(N|n)ote)|((N|n)ote)|((N|n)\.)|((F|f)(N|n)(\.))) > (in a very complicated flex program) caused the program to slow from > 300K+/min to 100K/min (no other changes were done). These two are not equivalent. For example, the first can match "footnote." but the second can only match "footnote". This is almost certainly the cause in the discrepancy - the slower scanner run is matching more tokens, and/or having to do more backing up. > 2. Which of these two are better: [Ff]oot or (F|f)oot ? From a performance point of view, they're equivalent (modulo presumably minor effects such as memory cache hit rates; and the presence of trailing context, see below). From a space point of view, the first is slightly preferable. > 3. I have a pattern that look like this: > pats {p1}|{p2}|{p3}|...|{p50} (50 patterns ORd) > > running yet another complicated program that includes the following rule: > {and}/{no4}{bb}{pats} > > gets me to "too complicated - over 32,000 states"... I can't tell from this example whether the trailing context is variable-length or fixed-length (it could be the latter if {and} is fixed-length). If it's variable length, which flex -p will tell you, then this reflects a basic performance problem, and if you can eliminate it by restructuring your scanner, you will see significant improvement. > so I divided {pats} to {pats1}, {pats2},..., {pats5} each consists of about > 10 patterns and changed the rule to be 5 rules. > This did compile, but what is the rule of thumb here ? The rule is to avoid trailing context other than fixed-length, in which for a/b, either the 'a' pattern or the 'b' pattern have a fixed length. Use of the '|' operator automatically makes the pattern variable length, so in this case '[Ff]oot' is preferred to '(F|f)oot'. > 4. I changed a rule that looked like this: > {and}{bb}/{ROMAN}[^A-Za-z] { BEGIN... > > to the next 2 rules: > {and}{bb}/{ROMAN}[A-Za-z] { ECHO;} > {and}{bb}/{ROMAN} { BEGIN... > > Again, I understand the using [^...] will cause a great performance loss Actually, it doesn't cause any sort of performance loss. It's a surprising fact about regular expressions that they always match in linear time regardless of how complex they are. > but are there any specific rules about it ? See the "Performance Considerations" section of the man page, and also the example in MISC/fastwc/. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node Is backing up a big deal? @unnumberedsec Is backing up a big deal? @example @verbatim To: Adoram Rogel Subject: Re: Flex 2.5.2 performance questions In-reply-to: Your message of Thu, 19 Sep 96 10:16:04 EDT. Date: Thu, 19 Sep 96 09:58:00 PDT From: Vern Paxson > a lot about the backing up problem. > I believe that there lies my biggest problem, and I'll try to improve > it. Since you have variable trailing context, this is a bigger performance problem. Fixing it is usually easier than fixing backing up, which in a complicated scanner (yours seems to fit the bill) can be extremely difficult to do correctly. You also don't mention what flags you are using for your scanner. -f makes a large speed difference, and -Cfe buys you nearly as much speed but the resulting scanner is considerably smaller. > I have an | operator in {and} and in {pats} so both of them are variable > length. -p should have reported this. > Is changing one of them to fixed-length is enough ? Yes. > Is it possible to change the 32,000 states limit ? Yes. I've appended instructions on how. Before you make this change, though, you should think about whether there are ways to fundamentally simplify your scanner - those are certainly preferable! Vern To increase the 32K limit (on a machine with 32 bit integers), you increase the magnitude of the following in flexdef.h: #define JAMSTATE -32766 /* marks a reference to the state that always jams */ #define MAXIMUM_MNS 31999 #define BAD_SUBSCRIPT -32767 #define MAX_SHORT 32700 Adding a 0 or two after each should do the trick. @end verbatim @end example @c TODO: Evaluate this faq. @node Can I fake multi-byte character support? @unnumberedsec Can I fake multi-byte character support? @example @verbatim To: Heeman_Lee@hp.com Subject: Re: flex - multi-byte support? In-reply-to: Your message of Thu, 03 Oct 1996 17:24:04 PDT. Date: Fri, 04 Oct 1996 11:42:18 PDT From: Vern Paxson > I assume as long as my *.l file defines the > range of expected character code values (in octal format), flex will > scan the file and read multi-byte characters correctly. But I have no > confidence in this assumption. Your lack of confidence is justified - this won't work. Flex has in it a widespread assumption that the input is processed one byte at a time. Fixing this is on the to-do list, but is involved, so it won't happen any time soon. In the interim, the best I can suggest (unless you want to try fixing it yourself) is to write your rules in terms of pairs of bytes, using definitions in the first section: X \xfe\xc2 ... %% foo{X}bar found_foo_fe_c2_bar(); etc. Definitely a pain - sorry about that. By the way, the email address you used for me is ancient, indicating you have a very old version of flex. You can get the most recent, 2.5.4, from ftp.ee.lbl.gov. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node deleteme01 @unnumberedsec deleteme01 @example @verbatim To: moleary@primus.com Subject: Re: Flex / Unicode compatibility question In-reply-to: Your message of Tue, 22 Oct 1996 10:15:42 PDT. Date: Tue, 22 Oct 1996 11:06:13 PDT From: Vern Paxson Unfortunately flex at the moment has a widespread assumption within it that characters are processed 8 bits at a time. I don't see any easy fix for this (other than writing your rules in terms of double characters - a pain). I also don't know of a wider lex, though you might try surfing the Plan 9 stuff because I know it's a Unicode system, and also the PCCT toolkit (try searching say Alta Vista for "Purdue Compiler Construction Toolkit"). Fixing flex to handle wider characters is on the long-term to-do list. But since flex is a strictly spare-time project these days, this probably won't happen for quite a while, unless someone else does it first. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node Can you discuss some flex internals? @unnumberedsec Can you discuss some flex internals? @example @verbatim To: Johan Linde Subject: Re: translation of flex In-reply-to: Your message of Sun, 10 Nov 1996 09:16:36 PST. Date: Mon, 11 Nov 1996 10:33:50 PST From: Vern Paxson > I'm working for the Swedish team translating GNU program, and I'm currently > working with flex. I have a few questions about some of the messages which > I hope you can answer. All of the things you're wondering about, by the way, concerning flex internals - probably the only person who understands what they mean in English is me! So I wouldn't worry too much about getting them right. That said ... > #: main.c:545 > msgid " %d protos created\n" > > Does proto mean prototype? Yes - prototypes of state compression tables. > #: main.c:539 > msgid " %d/%d (peak %d) template nxt-chk entries created\n" > > Here I'm mainly puzzled by 'nxt-chk'. I guess it means 'next-check'. (?) > However, 'template next-check entries' doesn't make much sense to me. To be > able to find a good translation I need to know a little bit more about it. There is a scheme in the Aho/Sethi/Ullman compiler book for compressing scanner tables. It involves creating two pairs of tables. The first has "base" and "default" entries, the second has "next" and "check" entries. The "base" entry is indexed by the current state and yields an index into the next/check table. The "default" entry gives what to do if the state transition isn't found in next/check. The "next" entry gives the next state to enter, but only if the "check" entry verifies that this entry is correct for the current state. Flex creates templates of series of next/check entries and then encodes differences from these templates as a way to compress the tables. > #: main.c:533 > msgid " %d/%d base-def entries created\n" > > The same problem here for 'base-def'. See above. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unput() messes up yy_at_bol @unnumberedsec unput() messes up yy_at_bol @example @verbatim To: Xinying Li Subject: Re: FLEX ? In-reply-to: Your message of Wed, 13 Nov 1996 17:28:38 PST. Date: Wed, 13 Nov 1996 19:51:54 PST From: Vern Paxson > "unput()" them to input flow, question occurs. If I do this after I scan > a carriage, the variable "YY_CURRENT_BUFFER->yy_at_bol" is changed. That > means the carriage flag has gone. You can control this by calling yy_set_bol(). It's described in the manual. > And if in pre-reading it goes to the end of file, is anything done > to control the end of curren buffer and end of file? No, there's no way to put back an end-of-file. > By the way I am using flex 2.5.2 and using the "-l". The latest release is 2.5.4, by the way. It fixes some bugs in 2.5.2 and 2.5.3. You can get it from ftp.ee.lbl.gov. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node The | operator is not doing what I want @unnumberedsec The | operator is not doing what I want @example @verbatim To: Alain.ISSARD@st.com Subject: Re: Start condition with FLEX In-reply-to: Your message of Mon, 18 Nov 1996 09:45:02 PST. Date: Mon, 18 Nov 1996 10:41:34 PST From: Vern Paxson > I am not able to use the start condition scope and to use the | (OR) with > rules having start conditions. The problem is that if you use '|' as a regular expression operator, for example "a|b" meaning "match either 'a' or 'b'", then it must *not* have any blanks around it. If you instead want the special '|' *action* (which from your scanner appears to be the case), which is a way of giving two different rules the same action: foo | bar matched_foo_or_bar(); then '|' *must* be separated from the first rule by whitespace and *must* be followed by a new line. You *cannot* write it as: foo | bar matched_foo_or_bar(); even though you might think you could because yacc supports this syntax. The reason for this unfortunately incompatibility is historical, but it's unlikely to be changed. Your problems with start condition scope are simply due to syntax errors from your use of '|' later confusing flex. Let me know if you still have problems. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node Why can't flex understand this variable trailing context pattern? @unnumberedsec Why can't flex understand this variable trailing context pattern? @example @verbatim To: Gregory Margo Subject: Re: flex-2.5.3 bug report In-reply-to: Your message of Sat, 23 Nov 1996 16:50:09 PST. Date: Sat, 23 Nov 1996 17:07:32 PST From: Vern Paxson > Enclosed is a lex file that "real" lex will process, but I cannot get > flex to process it. Could you try it and maybe point me in the right direction? Your problem is that some of the definitions in the scanner use the '/' trailing context operator, and have it enclosed in ()'s. Flex does not allow this operator to be enclosed in ()'s because doing so allows undefined regular expressions such as "(a/b)+". So the solution is to remove the parentheses. Note that you must also be building the scanner with the -l option for AT&T lex compatibility. Without this option, flex automatically encloses the definitions in parentheses. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node The ^ operator isn't working @unnumberedsec The ^ operator isn't working @example @verbatim To: Thomas Hadig Subject: Re: Flex Bug ? In-reply-to: Your message of Tue, 26 Nov 1996 14:35:01 PST. Date: Tue, 26 Nov 1996 11:15:05 PST From: Vern Paxson > In my lexer code, i have the line : > ^\*.* { } > > Thus all lines starting with an astrix (*) are comment lines. > This does not work ! I can't get this problem to reproduce - it works fine for me. Note though that if what you have is slightly different: COMMENT ^\*.* %% {COMMENT} { } then it won't work, because flex pushes back macro definitions enclosed in ()'s, so the rule becomes (^\*.*) { } and now that the '^' operator is not at the immediate beginning of the line, it's interpreted as just a regular character. You can avoid this behavior by using the "-l" lex-compatibility flag, or "%option lex-compat". Vern @end verbatim @end example @c TODO: Evaluate this faq. @node Trailing context is getting confused with trailing optional patterns @unnumberedsec Trailing context is getting confused with trailing optional patterns @example @verbatim To: Adoram Rogel Subject: Re: Flex 2.5.4 BOF ??? In-reply-to: Your message of Tue, 26 Nov 1996 16:10:41 PST. Date: Wed, 27 Nov 1996 10:56:25 PST From: Vern Paxson > Organization(s)?/[a-z] > > This matched "Organizations" (looking in debug mode, the trailing s > was matched with trailing context instead of the optional (s) in the > end of the word. That should only happen with lex. Flex can properly match this pattern. (That might be what you're saying, I'm just not sure.) > Is there a way to avoid this dangerous trailing context problem ? Unfortunately, there's no easy way. On the other hand, I don't see why it should be a problem. Lex's matching is clearly wrong, and I'd hope that usually the intent remains the same as expressed with the pattern, so flex's matching will be correct. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node Is flex GNU or not? @unnumberedsec Is flex GNU or not? @example @verbatim To: Cameron MacKinnon Subject: Re: Flex documentation bug In-reply-to: Your message of Mon, 02 Dec 1996 00:07:08 PST. Date: Sun, 01 Dec 1996 22:29:39 PST From: Vern Paxson > I'm not sure how or where to submit bug reports (documentation or > otherwise) for the GNU project stuff ... Well, strictly speaking flex isn't part of the GNU project. They just distribute it because no one's written a decent GPL'd lex replacement. So you should send bugs directly to me. Those sent to the GNU folks sometimes find there way to me, but some may drop between the cracks. > In GNU Info, under the section 'Start Conditions', and also in the man > page (mine's dated April '95) is a nice little snippet showing how to > parse C quoted strings into a buffer, defined to be MAX_STR_CONST in > size. Unfortunately, no overflow checking is ever done ... This is already mentioned in the manual: Finally, here's an example of how to match C-style quoted strings using exclusive start conditions, including expanded escape sequences (but not including checking for a string that's too long): The reason for not doing the overflow checking is that it will needlessly clutter up an example whose main purpose is just to demonstrate how to use flex. The latest release is 2.5.4, by the way, available from ftp.ee.lbl.gov. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node ERASEME53 @unnumberedsec ERASEME53 @example @verbatim To: tsv@cs.UManitoba.CA Subject: Re: Flex (reg).. In-reply-to: Your message of Thu, 06 Mar 1997 23:50:16 PST. Date: Thu, 06 Mar 1997 15:54:19 PST From: Vern Paxson > [:alpha:] ([:alnum:] | \\_)* If your rule really has embedded blanks as shown above, then it won't work, as the first blank delimits the rule from the action. (It wouldn't even compile ...) You need instead: [:alpha:]([:alnum:]|\\_)* and that should work fine - there's no restriction on what can go inside of ()'s except for the trailing context operator, '/'. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node I need to scan if-then-else blocks and while loops @unnumberedsec I need to scan if-then-else blocks and while loops @example @verbatim To: "Mike Stolnicki" Subject: Re: FLEX help In-reply-to: Your message of Fri, 30 May 1997 13:33:27 PDT. Date: Fri, 30 May 1997 10:46:35 PDT From: Vern Paxson > We'd like to add "if-then-else", "while", and "for" statements to our > language ... > We've investigated many possible solutions. The one solution that seems > the most reasonable involves knowing the position of a TOKEN in yyin. I strongly advise you to instead build a parse tree (abstract syntax tree) and loop over that instead. You'll find this has major benefits in keeping your interpreter simple and extensible. That said, the functionality you mention for get_position and set_position have been on the to-do list for a while. As flex is a purely spare-time project for me, no guarantees when this will be added (in particular, it for sure won't be for many months to come). Vern @end verbatim @end example @c TODO: Evaluate this faq. @node ERASEME55 @unnumberedsec ERASEME55 @example @verbatim To: Colin Paul Adams Subject: Re: Flex C++ classes and Bison In-reply-to: Your message of 09 Aug 1997 17:11:41 PDT. Date: Fri, 15 Aug 1997 10:48:19 PDT From: Vern Paxson > #define YY_DECL int yylex (YYSTYPE *lvalp, struct parser_control > *parm) > > I have been trying to get this to work as a C++ scanner, but it does > not appear to be possible (warning that it matches no declarations in > yyFlexLexer, or something like that). > > Is this supposed to be possible, or is it being worked on (I DID > notice the comment that scanner classes are still experimental, so I'm > not too hopeful)? What you need to do is derive a subclass from yyFlexLexer that provides the above yylex() method, squirrels away lvalp and parm into member variables, and then invokes yyFlexLexer::yylex() to do the regular scanning. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node ERASEME56 @unnumberedsec ERASEME56 @example @verbatim To: Mikael.Latvala@lmf.ericsson.se Subject: Re: Possible mistake in Flex v2.5 document In-reply-to: Your message of Fri, 05 Sep 1997 16:07:24 PDT. Date: Fri, 05 Sep 1997 10:01:54 PDT From: Vern Paxson > In that example you show how to count comment lines when using > C style /* ... */ comments. My question is, shouldn't you take into > account a scenario where end of a comment marker occurs inside > character or string literals? The scanner certainly needs to also scan character and string literals. However it does that (there's an example in the man page for strings), the lexer will recognize the beginning of the literal before it runs across the embedded "/*". Consequently, it will finish scanning the literal before it even considers the possibility of matching "/*". Example: '([^']*|{ESCAPE_SEQUENCE})' will match all the text between the ''s (inclusive). So the lexer considers this as a token beginning at the first ', and doesn't even attempt to match other tokens inside it. I thinnk this subtlety is not worth putting in the manual, as I suspect it would confuse more people than it would enlighten. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node ERASEME57 @unnumberedsec ERASEME57 @example @verbatim To: "Marty Leisner" Subject: Re: flex limitations In-reply-to: Your message of Sat, 06 Sep 1997 11:27:21 PDT. Date: Mon, 08 Sep 1997 11:38:08 PDT From: Vern Paxson > %% > [a-zA-Z]+ /* skip a line */ > { printf("got %s\n", yytext); } > %% What version of flex are you using? If I feed this to 2.5.4, it complains: "bug.l", line 5: EOF encountered inside an action "bug.l", line 5: unrecognized rule "bug.l", line 5: fatal parse error Not the world's greatest error message, but it manages to flag the problem. (With the introduction of start condition scopes, flex can't accommodate an action on a separate line, since it's ambiguous with an indented rule.) You can get 2.5.4 from ftp.ee.lbl.gov. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node Is there a repository for flex scanners? @unnumberedsec Is there a repository for flex scanners? Not that we know of. You might try asking on comp.compilers. @c TODO: Evaluate this faq. @node How can I conditionally compile or preprocess my flex input file? @unnumberedsec How can I conditionally compile or preprocess my flex input file? Flex doesn't have a preprocessor like C does. You might try using m4, or the C preprocessor plus a sed script to clean up the result. @c TODO: Evaluate this faq. @node Where can I find grammars for lex and yacc? @unnumberedsec Where can I find grammars for lex and yacc? In the sources for flex and bison. @c TODO: Evaluate this faq. @node I get an end-of-buffer message for each character scanned. @unnumberedsec I get an end-of-buffer message for each character scanned. This will happen if your LexerInput() function returns only one character at a time, which can happen either if you're scanner is "interactive", or if the streams library on your platform always returns 1 for yyin->gcount(). Solution: override LexerInput() with a version that returns whole buffers. @c TODO: Evaluate this faq. @node unnamed-faq-62 @unnumberedsec unnamed-faq-62 @example @verbatim To: Georg.Rehm@CL-KI.Uni-Osnabrueck.DE Subject: Re: Flex maximums In-reply-to: Your message of Mon, 17 Nov 1997 17:16:06 PST. Date: Mon, 17 Nov 1997 17:16:15 PST From: Vern Paxson > I took a quick look into the flex-sources and altered some #defines in > flexdefs.h: > > #define INITIAL_MNS 64000 > #define MNS_INCREMENT 1024000 > #define MAXIMUM_MNS 64000 The things to fix are to add a couple of zeroes to: #define JAMSTATE -32766 /* marks a reference to the state that always jams */ #define MAXIMUM_MNS 31999 #define BAD_SUBSCRIPT -32767 #define MAX_SHORT 32700 and, if you get complaints about too many rules, make the following change too: #define YY_TRAILING_MASK 0x200000 #define YY_TRAILING_HEAD_MASK 0x400000 - Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-63 @unnumberedsec unnamed-faq-63 @example @verbatim To: jimmey@lexis-nexis.com (Jimmey Todd) Subject: Re: FLEX question regarding istream vs ifstream In-reply-to: Your message of Mon, 08 Dec 1997 15:54:15 PST. Date: Mon, 15 Dec 1997 13:21:35 PST From: Vern Paxson > stdin_handle = YY_CURRENT_BUFFER; > ifstream fin( "aFile" ); > yy_switch_to_buffer( yy_create_buffer( fin, YY_BUF_SIZE ) ); > > What I'm wanting to do, is pass the contents of a file thru one set > of rules and then pass stdin thru another set... It works great if, I > don't use the C++ classes. But since everything else that I'm doing is > in C++, I thought I'd be consistent. > > The problem is that 'yy_create_buffer' is expecting an istream* as it's > first argument (as stated in the man page). However, fin is a ifstream > object. Any ideas on what I might be doing wrong? Any help would be > appreciated. Thanks!! You need to pass &fin, to turn it into an ifstream* instead of an ifstream. Then its type will be compatible with the expected istream*, because ifstream is derived from istream. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-64 @unnumberedsec unnamed-faq-64 @example @verbatim To: Enda Fadian Subject: Re: Question related to Flex man page? In-reply-to: Your message of Tue, 16 Dec 1997 15:17:34 PST. Date: Tue, 16 Dec 1997 14:17:09 PST From: Vern Paxson > Can you explain to me what is ment by a long-jump in relation to flex? Using the longjmp() function while inside yylex() or a routine called by it. > what is the flex activation frame. Just yylex()'s stack frame. > As far as I can see yyrestart will bring me back to the sart of the input > file and using flex++ isnot really an option! No, yyrestart() doesn't imply a rewind, even though its name might sound like it does. It tells the scanner to flush its internal buffers and start reading from the given file at its present location. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-65 @unnumberedsec unnamed-faq-65 @example @verbatim To: hassan@larc.info.uqam.ca (Hassan Alaoui) Subject: Re: Need urgent Help In-reply-to: Your message of Sat, 20 Dec 1997 19:38:19 PST. Date: Sun, 21 Dec 1997 21:30:46 PST From: Vern Paxson > /usr/lib/yaccpar: In function `int yyparse()': > /usr/lib/yaccpar:184: warning: implicit declaration of function `int yylex(...)' > > ld: Undefined symbol > _yylex > _yyparse > _yyin This is a known problem with Solaris C++ (and/or Solaris yacc). I believe the fix is to explicitly insert some 'extern "C"' statements for the corresponding routines/symbols. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-66 @unnumberedsec unnamed-faq-66 @example @verbatim To: mc0307@mclink.it Cc: gnu@prep.ai.mit.edu Subject: Re: [mc0307@mclink.it: Help request] In-reply-to: Your message of Fri, 12 Dec 1997 17:57:29 PST. Date: Sun, 21 Dec 1997 22:33:37 PST From: Vern Paxson > This is my definition for float and integer types: > . . . > NZD [1-9] > ... > I've tested my program on other lex version (on UNIX Sun Solaris an HP > UNIX) and it work well, so I think that my definitions are correct. > There are any differences between Lex and Flex? There are indeed differences, as discussed in the man page. The one you are probably running into is that when flex expands a name definition, it puts parentheses around the expansion, while lex does not. There's an example in the man page of how this can lead to different matching. Flex's behavior complies with the POSIX standard (or at least with the last POSIX draft I saw). Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-67 @unnumberedsec unnamed-faq-67 @example @verbatim To: hassan@larc.info.uqam.ca (Hassan Alaoui) Subject: Re: Thanks In-reply-to: Your message of Mon, 22 Dec 1997 16:06:35 PST. Date: Mon, 22 Dec 1997 14:35:05 PST From: Vern Paxson > Thank you very much for your help. I compile and link well with C++ while > declaring 'yylex ...' extern, But a little problem remains. I get a > segmentation default when executing ( I linked with lfl library) while it > works well when using LEX instead of flex. Do you have some ideas about the > reason for this ? The one possible reason for this that comes to mind is if you've defined yytext as "extern char yytext[]" (which is what lex uses) instead of "extern char *yytext" (which is what flex uses). If it's not that, then I'm afraid I don't know what the problem might be. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-68 @unnumberedsec unnamed-faq-68 @example @verbatim To: "Bart Niswonger" Subject: Re: flex 2.5: c++ scanners & start conditions In-reply-to: Your message of Tue, 06 Jan 1998 10:34:21 PST. Date: Tue, 06 Jan 1998 19:19:30 PST From: Vern Paxson > The problem is that when I do this (using %option c++) start > conditions seem to not apply. The BEGIN macro modifies the yy_start variable. For C scanners, this is a static with scope visible through the whole file. For C++ scanners, it's a member variable, so it only has visible scope within a member function. Your lexbegin() routine is not a member function when you build a C++ scanner, so it's not modifying the correct yy_start. The diagnostic that indicates this is that you found you needed to add a declaration of yy_start in order to get your scanner to compile when using C++; instead, the correct fix is to make lexbegin() a member function (by deriving from yyFlexLexer). Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-69 @unnumberedsec unnamed-faq-69 @example @verbatim To: "Boris Zinin" Subject: Re: current position in flex buffer In-reply-to: Your message of Mon, 12 Jan 1998 18:58:23 PST. Date: Mon, 12 Jan 1998 12:03:15 PST From: Vern Paxson > The problem is how to determine the current position in flex active > buffer when a rule is matched.... You will need to keep track of this explicitly, such as by redefining YY_USER_ACTION to count the number of characters matched. The latest flex release, by the way, is 2.5.4, available from ftp.ee.lbl.gov. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-70 @unnumberedsec unnamed-faq-70 @example @verbatim To: Bik.Dhaliwal@bis.org Subject: Re: Flex question In-reply-to: Your message of Mon, 26 Jan 1998 13:05:35 PST. Date: Tue, 27 Jan 1998 22:41:52 PST From: Vern Paxson > That requirement involves knowing > the character position at which a particular token was matched > in the lexer. The way you have to do this is by explicitly keeping track of where you are in the file, by counting the number of characters scanned for each token (available in yyleng). It may prove convenient to do this by redefining YY_USER_ACTION, as described in the manual. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-71 @unnumberedsec unnamed-faq-71 @example @verbatim To: Vladimir Alexiev Subject: Re: flex: how to control start condition from parser? In-reply-to: Your message of Mon, 26 Jan 1998 05:50:16 PST. Date: Tue, 27 Jan 1998 22:45:37 PST From: Vern Paxson > It seems useful for the parser to be able to tell the lexer about such > context dependencies, because then they don't have to be limited to > local or sequential context. One way to do this is to have the parser call a stub routine that's included in the scanner's .l file, and consequently that has access ot BEGIN. The only ugliness is that the parser can't pass in the state it wants, because those aren't visible - but if you don't have many such states, then using a different set of names doesn't seem like to much of a burden. While generating a .h file like you suggests is certainly cleaner, flex development has come to a virtual stand-still :-(, so a workaround like the above is much more pragmatic than waiting for a new feature. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-72 @unnumberedsec unnamed-faq-72 @example @verbatim To: Barbara Denny Subject: Re: freebsd flex bug? In-reply-to: Your message of Fri, 30 Jan 1998 12:00:43 PST. Date: Fri, 30 Jan 1998 12:42:32 PST From: Vern Paxson > lex.yy.c:1996: parse error before `=' This is the key, identifying this error. (It may help to pinpoint it by using flex -L, so it doesn't generate #line directives in its output.) I will bet you heavy money that you have a start condition name that is also a variable name, or something like that; flex spits out #define's for each start condition name, mapping them to a number, so you can wind up with: %x foo %% ... %% void bar() { int foo = 3; } and the penultimate will turn into "int 1 = 3" after C preprocessing, since flex will put "#define foo 1" in the generated scanner. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-73 @unnumberedsec unnamed-faq-73 @example @verbatim To: Maurice Petrie Subject: Re: Lost flex .l file In-reply-to: Your message of Mon, 02 Feb 1998 14:10:01 PST. Date: Mon, 02 Feb 1998 11:15:12 PST From: Vern Paxson > I am curious as to > whether there is a simple way to backtrack from the generated source to > reproduce the lost list of tokens we are searching on. In theory, it's straight-forward to go from the DFA representation back to a regular-expression representation - the two are isomorphic. In practice, a huge headache, because you have to unpack all the tables back into a single DFA representation, and then write a program to munch on that and translate it into an RE. Sorry for the less-than-happy news ... Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-74 @unnumberedsec unnamed-faq-74 @example @verbatim To: jimmey@lexis-nexis.com (Jimmey Todd) Subject: Re: Flex performance question In-reply-to: Your message of Thu, 19 Feb 1998 11:01:17 PST. Date: Thu, 19 Feb 1998 08:48:51 PST From: Vern Paxson > What I have found, is that the smaller the data chunk, the faster the > program executes. This is the opposite of what I expected. Should this be > happening this way? This is exactly what will happen if your input file has embedded NULs. From the man page: A final note: flex is slow when matching NUL's, particularly when a token contains multiple NUL's. It's best to write rules which match short amounts of text if it's anticipated that the text will often include NUL's. So that's the first thing to look for. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-75 @unnumberedsec unnamed-faq-75 @example @verbatim To: jimmey@lexis-nexis.com (Jimmey Todd) Subject: Re: Flex performance question In-reply-to: Your message of Thu, 19 Feb 1998 11:01:17 PST. Date: Thu, 19 Feb 1998 15:42:25 PST From: Vern Paxson So there are several problems. First, to go fast, you want to match as much text as possible, which your scanners don't in the case that what they're scanning is *not* a tag. So you want a rule like: [^<]+ Second, C++ scanners are particularly slow if they're interactive, which they are by default. Using -B speeds it up by a factor of 3-4 on my workstation. Third, C++ scanners that use the istream interface are slow, because of how poorly implemented istream's are. I built two versions of the following scanner: %% .*\n .* %% and the C version inhales a 2.5MB file on my workstation in 0.8 seconds. The C++ istream version, using -B, takes 3.8 seconds. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-76 @unnumberedsec unnamed-faq-76 @example @verbatim To: "Frescatore, David (CRD, TAD)" Subject: Re: FLEX 2.5 & THE YEAR 2000 In-reply-to: Your message of Wed, 03 Jun 1998 11:26:22 PDT. Date: Wed, 03 Jun 1998 10:22:26 PDT From: Vern Paxson > I am researching the Y2K problem with General Electric R&D > and need to know if there are any known issues concerning > the above mentioned software and Y2K regardless of version. There shouldn't be, all it ever does with the date is ask the system for it and then print it out. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-77 @unnumberedsec unnamed-faq-77 @example @verbatim To: "Hans Dermot Doran" Subject: Re: flex problem In-reply-to: Your message of Wed, 15 Jul 1998 21:30:13 PDT. Date: Tue, 21 Jul 1998 14:23:34 PDT From: Vern Paxson > To overcome this, I gets() the stdin into a string and lex the string. The > string is lexed OK except that the end of string isn't lexed properly > (yy_scan_string()), that is the lexer dosn't recognise the end of string. Flex doesn't contain mechanisms for recognizing buffer endpoints. But if you use fgets instead (which you should anyway, to protect against buffer overflows), then the final \n will be preserved in the string, and you can scan that in order to find the end of the string. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-78 @unnumberedsec unnamed-faq-78 @example @verbatim To: soumen@almaden.ibm.com Subject: Re: Flex++ 2.5.3 instance member vs. static member In-reply-to: Your message of Mon, 27 Jul 1998 02:10:04 PDT. Date: Tue, 28 Jul 1998 01:10:34 PDT From: Vern Paxson > %{ > int mylineno = 0; > %} > ws [ \t]+ > alpha [A-Za-z] > dig [0-9] > %% > > Now you'd expect mylineno to be a member of each instance of class > yyFlexLexer, but is this the case? A look at the lex.yy.cc file seems to > indicate otherwise; unless I am missing something the declaration of > mylineno seems to be outside any class scope. > > How will this work if I want to run a multi-threaded application with each > thread creating a FlexLexer instance? Derive your own subclass and make mylineno a member variable of it. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-79 @unnumberedsec unnamed-faq-79 @example @verbatim To: Adoram Rogel Subject: Re: More than 32K states change hangs In-reply-to: Your message of Tue, 04 Aug 1998 16:55:39 PDT. Date: Tue, 04 Aug 1998 22:28:45 PDT From: Vern Paxson > Vern Paxson, > > I followed your advice, posted on Usenet bu you, and emailed to me > personally by you, on how to overcome the 32K states limit. I'm running > on Linux machines. > I took the full source of version 2.5.4 and did the following changes in > flexdef.h: > #define JAMSTATE -327660 > #define MAXIMUM_MNS 319990 > #define BAD_SUBSCRIPT -327670 > #define MAX_SHORT 327000 > > and compiled. > All looked fine, including check and bigcheck, so I installed. Hmmm, you shouldn't increase MAX_SHORT, though looking through my email archives I see that I did indeed recommend doing so. Try setting it back to 32700; that should suffice that you no longer need -Ca. If it still hangs, then the interesting question is - where? > Compiling the same hanged program with a out-of-the-box (RedHat 4.2 > distribution of Linux) > flex 2.5.4 binary works. Since Linux comes with source code, you should diff it against what you have to see what problems they missed. > Should I always compile with the -Ca option now ? even short and simple > filters ? No, definitely not. It's meant to be for those situations where you absolutely must squeeze every last cycle out of your scanner. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-80 @unnumberedsec unnamed-faq-80 @example @verbatim To: "Schmackpfeffer, Craig" Subject: Re: flex output for static code portion In-reply-to: Your message of Tue, 11 Aug 1998 11:55:30 PDT. Date: Mon, 17 Aug 1998 23:57:42 PDT From: Vern Paxson > I would like to use flex under the hood to generate a binary file > containing the data structures that control the parse. This has been on the wish-list for a long time. In principle it's straight-forward - you redirect mkdata() et al's I/O to another file, and modify the skeleton to have a start-up function that slurps these into dynamic arrays. The concerns are (1) the scanner generation code is hairy and full of corner cases, so it's easy to get surprised when going down this path :-( ; and (2) being careful about buffering so that when the tables change you make sure the scanner starts in the correct state and reading at the right point in the input file. > I was wondering if you know of anyone who has used flex in this way. I don't - but it seems like a reasonable project to undertake (unlike numerous other flex tweaks :-). Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-81 @unnumberedsec unnamed-faq-81 @example @verbatim Received: from 131.173.17.11 (131.173.17.11 [131.173.17.11]) by ee.lbl.gov (8.9.1/8.9.1) with ESMTP id AAA03838 for ; Thu, 20 Aug 1998 00:47:57 -0700 (PDT) Received: from hal.cl-ki.uni-osnabrueck.de (hal.cl-ki.Uni-Osnabrueck.DE [131.173.141.2]) by deimos.rz.uni-osnabrueck.de (8.8.7/8.8.8) with ESMTP id JAA34694 for ; Thu, 20 Aug 1998 09:47:55 +0200 Received: (from georg@localhost) by hal.cl-ki.uni-osnabrueck.de (8.6.12/8.6.12) id JAA34834 for vern@ee.lbl.gov; Thu, 20 Aug 1998 09:47:54 +0200 From: Georg Rehm Message-Id: <199808200747.JAA34834@hal.cl-ki.uni-osnabrueck.de> Subject: "flex scanner push-back overflow" To: vern@ee.lbl.gov Date: Thu, 20 Aug 1998 09:47:54 +0200 (MEST) Reply-To: Georg.Rehm@CL-KI.Uni-Osnabrueck.DE X-NoJunk: Do NOT send commercial mail, spam or ads to this address! X-URL: http://www.cl-ki.uni-osnabrueck.de/~georg/ X-Mailer: ELM [version 2.4ME+ PL28 (25)] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Hi Vern, Yesterday, I encountered a strange problem: I use the macro processor m4 to include some lengthy lists into a .l file. Following is a flex macro definition that causes some serious pain in my neck: AUTHOR ("A. Boucard / L. Boucard"|"A. Dastarac / M. Levent"|"A.Boucaud / L.Boucaud"|"Abderrahim Lamchichi"|"Achmat Dangor"|"Adeline Toullier"|"Adewale Maja-Pearce"|"Ahmed Ziri"|"Akram Ellyas"|"Alain Bihr"|"Alain Gresh"|"Alain Guillemoles"|"Alain Joxe"|"Alain Morice"|"Alain Renon"|"Alain Zecchini"|"Albert Memmi"|"Alberto Manguel"|"Alex De Waal"|"Alfonso Artico"| [...]) The complete list contains about 10kB. When I try to "flex" this file (on a Solaris 2.6 machine, using a modified flex 2.5.4 (I only increased some of the predefined values in flexdefs.h) I get the error: myflex/flex -8 sentag.tmp.l flex scanner push-back overflow When I remove the slashes in the macro definition everything works fine. As I understand it, the double quotes escape the slash-character so it really means "/" and not "trailing context". Furthermore, I tried to escape the slashes with backslashes, but with no use, the same error message appeared when flexing the code. Do you have an idea what's going on here? Greetings from Germany, Georg -- Georg Rehm georg@cl-ki.uni-osnabrueck.de Institute for Semantic Information Processing, University of Osnabrueck, FRG @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-82 @unnumberedsec unnamed-faq-82 @example @verbatim To: Georg.Rehm@CL-KI.Uni-Osnabrueck.DE Subject: Re: "flex scanner push-back overflow" In-reply-to: Your message of Thu, 20 Aug 1998 09:47:54 PDT. Date: Thu, 20 Aug 1998 07:05:35 PDT From: Vern Paxson > myflex/flex -8 sentag.tmp.l > flex scanner push-back overflow Flex itself uses a flex scanner. That scanner is running out of buffer space when it tries to unput() the humongous macro you've defined. When you remove the '/'s, you make it small enough so that it fits in the buffer; removing spaces would do the same thing. The fix is to either rethink how come you're using such a big macro and perhaps there's another/better way to do it; or to rebuild flex's own scan.c with a larger value for #define YY_BUF_SIZE 16384 - Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-83 @unnumberedsec unnamed-faq-83 @example @verbatim To: Jan Kort Subject: Re: Flex In-reply-to: Your message of Fri, 04 Sep 1998 12:18:43 +0200. Date: Sat, 05 Sep 1998 00:59:49 PDT From: Vern Paxson > %% > > "TEST1\n" { fprintf(stderr, "TEST1\n"); yyless(5); } > ^\n { fprintf(stderr, "empty line\n"); } > . { } > \n { fprintf(stderr, "new line\n"); } > > %% > -- input --------------------------------------- > TEST1 > -- output -------------------------------------- > TEST1 > empty line > ------------------------------------------------ IMHO, it's not clear whether or not this is in fact a bug. It depends on whether you view yyless() as backing up in the input stream, or as pushing new characters onto the beginning of the input stream. Flex interprets it as the latter (for implementation convenience, I'll admit), and so considers the newline as in fact matching at the beginning of a line, as after all the last token scanned an entire line and so the scanner is now at the beginning of a new line. I agree that this is counter-intuitive for yyless(), given its functional description (it's less so for unput(), depending on whether you're unput()'ing new text or scanned text). But I don't plan to change it any time soon, as it's a pain to do so. Consequently, you do indeed need to use yy_set_bol() and YY_AT_BOL() to tweak your scanner into the behavior you desire. Sorry for the less-than-completely-satisfactory answer. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-84 @unnumberedsec unnamed-faq-84 @example @verbatim To: Patrick Krusenotto Subject: Re: Problems with restarting flex-2.5.2-generated scanner In-reply-to: Your message of Thu, 24 Sep 1998 10:14:07 PDT. Date: Thu, 24 Sep 1998 23:28:43 PDT From: Vern Paxson > I am using flex-2.5.2 and bison 1.25 for Solaris and I am desperately > trying to make my scanner restart with a new file after my parser stops > with a parse error. When my compiler restarts, the parser always > receives the token after the token (in the old file!) that caused the > parser error. I suspect the problem is that your parser has read ahead in order to attempt to resolve an ambiguity, and when it's restarted it picks up with that token rather than reading a fresh one. If you're using yacc, then the special "error" production can sometimes be used to consume tokens in an attempt to get the parser into a consistent state. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-85 @unnumberedsec unnamed-faq-85 @example @verbatim To: Henric Jungheim Subject: Re: flex 2.5.4a In-reply-to: Your message of Tue, 27 Oct 1998 16:41:42 PST. Date: Tue, 27 Oct 1998 16:50:14 PST From: Vern Paxson > This brings up a feature request: How about a command line > option to specify the filename when reading from stdin? That way one > doesn't need to create a temporary file in order to get the "#line" > directives to make sense. Use -o combined with -t (per the man page description of -o). > P.S., Is there any simple way to use non-blocking IO to parse multiple > streams? Simple, no. One approach might be to return a magic character on EWOULDBLOCK and have a rule .* // put back .*, eat magic character This is off the top of my head, not sure it'll work. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-86 @unnumberedsec unnamed-faq-86 @example @verbatim To: "Repko, Billy D" Subject: Re: Compiling scanners In-reply-to: Your message of Wed, 13 Jan 1999 10:52:47 PST. Date: Thu, 14 Jan 1999 00:25:30 PST From: Vern Paxson > It appears that maybe it cannot find the lfl library. The Makefile in the distribution builds it, so you should have it. It's exceedingly trivial, just a main() that calls yylex() and a yyrap() that always returns 1. > %% > \n ++num_lines; ++num_chars; > . ++num_chars; You can't indent your rules like this - that's where the errors are coming from. Flex copies indented text to the output file, it's how you do things like int num_lines_seen = 0; to declare local variables. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-87 @unnumberedsec unnamed-faq-87 @example @verbatim To: Erick Branderhorst Subject: Re: flex input buffer In-reply-to: Your message of Tue, 09 Feb 1999 13:53:46 PST. Date: Tue, 09 Feb 1999 21:03:37 PST From: Vern Paxson > In the flex.skl file the size of the default input buffers is set. Can you > explain why this size is set and why it is such a high number. It's large to optimize performance when scanning large files. You can safely make it a lot lower if needed. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-88 @unnumberedsec unnamed-faq-88 @example @verbatim To: "Guido Minnen" Subject: Re: Flex error message In-reply-to: Your message of Wed, 24 Feb 1999 15:31:46 PST. Date: Thu, 25 Feb 1999 00:11:31 PST From: Vern Paxson > I'm extending a larger scanner written in Flex and I keep running into > problems. More specifically, I get the error message: > "flex: input rules are too complicated (>= 32000 NFA states)" Increase the definitions in flexdef.h for: #define JAMSTATE -32766 /* marks a reference to the state that always j ams */ #define MAXIMUM_MNS 31999 #define BAD_SUBSCRIPT -32767 recompile everything, and it should all work. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-90 @unnumberedsec unnamed-faq-90 @example @verbatim To: "Dmitriy Goldobin" Subject: Re: FLEX trouble In-reply-to: Your message of Mon, 31 May 1999 18:44:49 PDT. Date: Tue, 01 Jun 1999 00:15:07 PDT From: Vern Paxson > I have a trouble with FLEX. Why rule "/*".*"*/" work properly,=20 > but rule "/*"(.|\n)*"*/" don't work ? The second of these will have to scan the entire input stream (because "(.|\n)*" matches an arbitrary amount of any text) in order to see if it ends with "*/", terminating the comment. That potentially will overflow the input buffer. > More complex rule "/*"([^*]|(\*/[^/]))*"*/ give an error > 'unrecognized rule'. You can't use the '/' operator inside parentheses. It's not clear what "(a/b)*" actually means. > I now use workaround with state , but single-rule is > better, i think. Single-rule is nice but will always have the problem of either setting restrictions on comments (like not allowing multi-line comments) and/or running the risk of consuming the entire input stream, as noted above. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-91 @unnumberedsec unnamed-faq-91 @example @verbatim Received: from mc-qout4.whowhere.com (mc-qout4.whowhere.com [209.185.123.18]) by ee.lbl.gov (8.9.3/8.9.3) with SMTP id IAA05100 for ; Tue, 15 Jun 1999 08:56:06 -0700 (PDT) Received: from Unknown/Local ([?.?.?.?]) by my-deja.com; Tue Jun 15 08:55:43 1999 To: vern@ee.lbl.gov Date: Tue, 15 Jun 1999 08:55:43 -0700 From: "Aki Niimura" Message-ID: Mime-Version: 1.0 Cc: X-Sent-Mail: on Reply-To: X-Mailer: MailCity Service Subject: A question on flex C++ scanner X-Sender-Ip: 12.72.207.61 Organization: My Deja Email (http://www.my-deja.com:80) Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Dear Dr. Paxon, I have been using flex for years. It works very well on many projects. Most case, I used it to generate a scanner on C language. However, one project I needed to generate a scanner on C++ lanuage. Thanks to your enhancement, flex did the job. Currently, I'm working on enhancing my previous project. I need to deal with multiple input streams (recursive inclusion) in this scanner (C++). I did similar thing for another scanner (C) as you explained in your documentation. The generated scanner (C++) has necessary methods: - switch_to_buffer(struct yy_buffer_state *b) - yy_create_buffer(istream *is, int sz) - yy_delete_buffer(struct yy_buffer_state *b) However, I couldn't figure out how to access current buffer (yy_current_buffer). yy_current_buffer is a protected member of yyFlexLexer. I can't access it directly. Then, I thought yy_create_buffer() with is = 0 might return current stream buffer. But it seems not as far as I checked the source. (flex 2.5.4) I went through the Web in addition to Flex documentation. However, it hasn't been successful, so far. It is not my intention to bother you, but, can you comment about how to obtain the current stream buffer? Your response would be highly appreciated. Best regards, Aki Niimura --== Sent via Deja.com http://www.deja.com/ ==-- Share what you know. Learn what you don't. @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-92 @unnumberedsec unnamed-faq-92 @example @verbatim To: neko@my-deja.com Subject: Re: A question on flex C++ scanner In-reply-to: Your message of Tue, 15 Jun 1999 08:55:43 PDT. Date: Tue, 15 Jun 1999 09:04:24 PDT From: Vern Paxson > However, I couldn't figure out how to access current > buffer (yy_current_buffer). Derive your own subclass from yyFlexLexer. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-93 @unnumberedsec unnamed-faq-93 @example @verbatim To: "Stones, Darren" Subject: Re: You're the man to see? In-reply-to: Your message of Wed, 23 Jun 1999 11:10:29 PDT. Date: Wed, 23 Jun 1999 09:01:40 PDT From: Vern Paxson > I hope you can help me. I am using Flex and Bison to produce an interpreted > language. However all goes well until I try to implement an IF statement or > a WHILE. I cannot get this to work as the parser parses all the conditions > eg. the TRUE and FALSE conditons to check for a rule match. So I cannot > make a decision!! You need to use the parser to build a parse tree (= abstract syntax trwee), and when that's all done you recursively evaluate the tree, binding variables to values at that time. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-94 @unnumberedsec unnamed-faq-94 @example @verbatim To: Petr Danecek Subject: Re: flex - question In-reply-to: Your message of Mon, 28 Jun 1999 19:21:41 PDT. Date: Fri, 02 Jul 1999 16:52:13 PDT From: Vern Paxson > file, it takes an enormous amount of time. It is funny, because the > source code has only 12 rules!!! I think it looks like an exponencial > growth. Right, that's the problem - some patterns (those with a lot of ambiguity, where yours has because at any given time the scanner can be in the middle of all sorts of combinations of the different rules) blow up exponentially. For your rules, there is an easy fix. Change the ".*" that comes fater the directory name to "[^ ]*". With that in place, the rules are no longer nearly so ambiguous, because then once one of the directories has been matched, no other can be matched (since they all require a leading blank). If that's not an acceptable solution, then you can enter a start state to pick up the .*\n after each directory is matched. Also note that for speed, you'll want to add a ".*" rule at the end, otherwise rules that don't match any of the patterns will be matched very slowly, a character at a time. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-95 @unnumberedsec unnamed-faq-95 @example @verbatim To: Tielman Koekemoer Subject: Re: Please help. In-reply-to: Your message of Thu, 08 Jul 1999 13:20:37 PDT. Date: Thu, 08 Jul 1999 08:20:39 PDT From: Vern Paxson > I was hoping you could help me with my problem. > > I tried compiling (gnu)flex on a Solaris 2.4 machine > but when I ran make (after configure) I got an error. > > -------------------------------------------------------------- > gcc -c -I. -I. -g -O parse.c > ./flex -t -p ./scan.l >scan.c > sh: ./flex: not found > *** Error code 1 > make: Fatal error: Command failed for target `scan.c' > ------------------------------------------------------------- > > What's strange to me is that I'm only > trying to install flex now. I then edited the Makefile to > and changed where it says "FLEX = flex" to "FLEX = lex" > ( lex: the native Solaris one ) but then it complains about > the "-p" option. Is there any way I can compile flex without > using flex or lex? > > Thanks so much for your time. You managed to step on the bootstrap sequence, which first copies initscan.c to scan.c in order to build flex. Try fetching a fresh distribution from ftp.ee.lbl.gov. (Or you can first try removing ".bootstrap" and doing a make again.) Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-96 @unnumberedsec unnamed-faq-96 @example @verbatim To: Tielman Koekemoer Subject: Re: Please help. In-reply-to: Your message of Fri, 09 Jul 1999 09:16:14 PDT. Date: Fri, 09 Jul 1999 00:27:20 PDT From: Vern Paxson > First I removed .bootstrap (and ran make) - no luck. I downloaded the > software but I still have the same problem. Is there anything else I > could try. Try: cp initscan.c scan.c touch scan.c make scan.o If this last tries to first build scan.c from scan.l using ./flex, then your "make" is broken, in which case compile scan.c to scan.o by hand. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-97 @unnumberedsec unnamed-faq-97 @example @verbatim To: Sumanth Kamenani Subject: Re: Error In-reply-to: Your message of Mon, 19 Jul 1999 23:08:41 PDT. Date: Tue, 20 Jul 1999 00:18:26 PDT From: Vern Paxson > I am getting a compilation error. The error is given as "unknown symbol- yylex". The parser relies on calling yylex(), but you're instead using the C++ scanning class, so you need to supply a yylex() "glue" function that calls an instance scanner of the scanner (e.g., "scanner->yylex()"). Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-98 @unnumberedsec unnamed-faq-98 @example @verbatim To: daniel@synchrods.synchrods.COM (Daniel Senderowicz) Subject: Re: lex In-reply-to: Your message of Mon, 22 Nov 1999 11:19:04 PST. Date: Tue, 23 Nov 1999 15:54:30 PST From: Vern Paxson Well, your problem is the switch (yybgin-yysvec-1) { /* witchcraft */ at the beginning of lex rules. "witchcraft" == "non-portable". It's assuming knowledge of the AT&T lex's internal variables. For flex, you can probably do the equivalent using a switch on YYSTATE. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-99 @unnumberedsec unnamed-faq-99 @example @verbatim To: archow@hss.hns.com Subject: Re: Regarding distribution of flex and yacc based grammars In-reply-to: Your message of Sun, 19 Dec 1999 17:50:24 +0530. Date: Wed, 22 Dec 1999 01:56:24 PST From: Vern Paxson > When we provide the customer with an object code distribution, is it > necessary for us to provide source > for the generated C files from flex and bison since they are generated by > flex and bison ? For flex, no. I don't know what the current state of this is for bison. > Also, is there any requrirement for us to neccessarily provide source for > the grammar files which are fed into flex and bison ? Again, for flex, no. See the file "COPYING" in the flex distribution for the legalese. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-100 @unnumberedsec unnamed-faq-100 @example @verbatim To: Martin Gallwey Subject: Re: Flex, and self referencing rules In-reply-to: Your message of Sun, 20 Feb 2000 01:01:21 PST. Date: Sat, 19 Feb 2000 18:33:16 PST From: Vern Paxson > However, I do not use unput anywhere. I do use self-referencing > rules like this: > > UnaryExpr ({UnionExpr})|("-"{UnaryExpr}) You can't do this - flex is *not* a parser like yacc (which does indeed allow recursion), it is a scanner that's confined to regular expressions. Vern @end verbatim @end example @c TODO: Evaluate this faq. @node unnamed-faq-101 @unnumberedsec unnamed-faq-101 @example @verbatim To: slg3@lehigh.edu (SAMUEL L. GULDEN) Subject: Re: Flex problem In-reply-to: Your message of Thu, 02 Mar 2000 12:29:04 PST. Date: Thu, 02 Mar 2000 23:00:46 PST From: Vern Paxson If this is exactly your program: > digit [0-9] > digits {digit}+ > whitespace [ \t\n]+ > > %% > "[" { printf("open_brac\n");} > "]" { printf("close_brac\n");} > "+" { printf("addop\n");} > "*" { printf("multop\n");} > {digits} { printf("NUMBER = %s\n", yytext);} > whitespace ; then the problem is that the last rule needs to be "{whitespace}" ! Vern @end verbatim @end example @node What is the difference between YYLEX_PARAM and YY_DECL? @unnumberedsec What is the difference between YYLEX_PARAM and YY_DECL? YYLEX_PARAM is not a flex symbol. It is for Bison. It tells Bison to pass extra params when it calls yylex() from the parser. YY_DECL is the Flex declaration of yylex. The default is similar to this: @example @verbatim #define int yy_lex () @end verbatim @end example @node Why do I get "conflicting types for yylex" error? @unnumberedsec Why do I get "conflicting types for yylex" error? This is a compiler error regarding a generated Bison parser, not a Flex scanner. It means you need a prototype of yylex() in the top of the Bison file. Be sure the prototype matches YY_DECL. @node How do I access the values set in a Flex action from within a Bison action? @unnumberedsec How do I access the values set in a Flex action from within a Bison action? With $1, $2, $3, etc. These are called "Semantic Values" in the Bison manual. See @ref{Top, , , bison, the GNU Bison Manual}. @node Appendices, Indices, FAQ, Top @appendix Appendices @menu * Makefiles and Flex:: * Bison Bridge:: * M4 Dependency:: * Common Patterns:: @end menu @node Makefiles and Flex, Bison Bridge, Appendices, Appendices @appendixsec Makefiles and Flex @cindex Makefile, syntax In this appendix, we provide tips for writing Makefiles to build your scanners. In a traditional build environment, we say that the @file{.c} files are the sources, and the @file{.o} files are the intermediate files. When using @code{flex}, however, the @file{.l} files are the sources, and the generated @file{.c} files (along with the @file{.o} files) are the intermediate files. This requires you to carefully plan your Makefile. Modern @command{make} programs understand that @file{foo.l} is intended to generate @file{lex.yy.c} or @file{foo.c}, and will behave accordingly@footnote{GNU @command{make} and GNU @command{automake} are two such programs that provide implicit rules for flex-generated scanners.}@footnote{GNU @command{automake} may generate code to execute flex in lex-compatible mode, or to stdout. If this is not what you want, then you should provide an explicit rule in your Makefile.am}. The following Makefile does not explicitly instruct @command{make} how to build @file{foo.c} from @file{foo.l}. Instead, it relies on the implicit rules of the @command{make} program to build the intermediate file, @file{scan.c}: @cindex Makefile, example of implicit rules @example @verbatim # Basic Makefile -- relies on implicit rules # Creates "myprogram" from "scan.l" and "myprogram.c" # LEX=flex myprogram: scan.o myprogram.o scan.o: scan.l @end verbatim @end example For simple cases, the above may be sufficient. For other cases, you may have to explicitly instruct @command{make} how to build your scanner. The following is an example of a Makefile containing explicit rules: @cindex Makefile, explicit example @example @verbatim # Basic Makefile -- provides explicit rules # Creates "myprogram" from "scan.l" and "myprogram.c" # LEX=flex myprogram: scan.o myprogram.o $(CC) -o $@ $(LDFLAGS) $^ myprogram.o: myprogram.c $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ -c $^ scan.o: scan.c $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ -c $^ scan.c: scan.l $(LEX) $(LFLAGS) -o $@ $^ clean: $(RM) *.o scan.c @end verbatim @end example Notice in the above example that @file{scan.c} is in the @code{clean} target. This is because we consider the file @file{scan.c} to be an intermediate file. Finally, we provide a realistic example of a @code{flex} scanner used with a @code{bison} parser@footnote{This example also applies to yacc parsers.}. There is a tricky problem we have to deal with. Since a @code{flex} scanner will typically include a header file (e.g., @file{y.tab.h}) generated by the parser, we need to be sure that the header file is generated BEFORE the scanner is compiled. We handle this case in the following example: @example @verbatim # Makefile example -- scanner and parser. # Creates "myprogram" from "scan.l", "parse.y", and "myprogram.c" # LEX = flex YACC = bison -y YFLAGS = -d objects = scan.o parse.o myprogram.o myprogram: $(objects) scan.o: scan.l parse.c parse.o: parse.y myprogram.o: myprogram.c @end verbatim @end example In the above example, notice the line, @example @verbatim scan.o: scan.l parse.c @end verbatim @end example , which lists the file @file{parse.c} (the generated parser) as a dependency of @file{scan.o}. We want to ensure that the parser is created before the scanner is compiled, and the above line seems to do the trick. Feel free to experiment with your specific implementation of @command{make}. For more details on writing Makefiles, see @ref{Top, , , make, The GNU Make Manual}. @node Bison Bridge, M4 Dependency, Makefiles and Flex, Appendices @section C Scanners with Bison Parsers @cindex bison, bridging with flex @vindex yylval @vindex yylloc @tindex YYLTYPE @tindex YYSTYPE This section describes the @code{flex} features useful when integrating @code{flex} with @code{GNU bison}@footnote{The features described here are purely optional, and are by no means the only way to use flex with bison. We merely provide some glue to ease development of your parser-scanner pair.}. Skip this section if you are not using @code{bison} with your scanner. Here we discuss only the @code{flex} half of the @code{flex} and @code{bison} pair. We do not discuss @code{bison} in any detail. For more information about generating @code{bison} parsers, see @ref{Top, , , bison, the GNU Bison Manual}. A compatible @code{bison} scanner is generated by declaring @samp{%option bison-bridge} or by supplying @samp{--bison-bridge} when invoking @code{flex} from the command line. This instructs @code{flex} that the macro @code{yylval} may be used. The data type for @code{yylval}, @code{YYSTYPE}, is typically defined in a header file, included in section 1 of the @code{flex} input file. For a list of functions and macros available, @xref{bison-functions}. The declaration of yylex becomes, @findex yylex (reentrant version) @example @verbatim int yylex ( YYSTYPE * lvalp, yyscan_t scanner ); @end verbatim @end example If @code{%option bison-locations} is specified, then the declaration becomes, @findex yylex (reentrant version) @example @verbatim int yylex ( YYSTYPE * lvalp, YYLTYPE * llocp, yyscan_t scanner ); @end verbatim @end example Note that the macros @code{yylval} and @code{yylloc} evaluate to pointers. Support for @code{yylloc} is optional in @code{bison}, so it is optional in @code{flex} as well. The following is an example of a @code{flex} scanner that is compatible with @code{bison}. @cindex bison, scanner to be called from bison @example @verbatim /* Scanner for "C" assignment statements... sort of. */ %{ #include "y.tab.h" /* Generated by bison. */ %} %option bison-bridge bison-locations % [[:digit:]]+ { yylval->num = atoi(yytext); return NUMBER;} [[:alnum:]]+ { yylval->str = strdup(yytext); return STRING;} "="|";" { return yytext[0];} . {} % @end verbatim @end example As you can see, there really is no magic here. We just use @code{yylval} as we would any other variable. The data type of @code{yylval} is generated by @code{bison}, and included in the file @file{y.tab.h}. Here is the corresponding @code{bison} parser: @cindex bison, parser @example @verbatim /* Parser to convert "C" assignments to lisp. */ %{ /* Pass the argument to yyparse through to yylex. */ #define YYPARSE_PARAM scanner #define YYLEX_PARAM scanner %} %locations %pure_parser %union { int num; char* str; } %token STRING %token NUMBER %% assignment: STRING '=' NUMBER ';' { printf( "(setf %s %d)", $1, $3 ); } ; @end verbatim @end example @node M4 Dependency, Common Patterns, Bison Bridge, Appendices @section M4 Dependency @cindex m4 The macro processor @code{m4}@footnote{The use of m4 is subject to change in future revisions of flex. It is not part of the public API of flex. Do not depend on it.} must be installed wherever flex is installed. @code{flex} invokes @samp{m4}, found by searching the directories in the @code{PATH} environment variable. Any code you place in section 1 or in the actions will be sent through m4. Please follow these rules to protect your code from unwanted @code{m4} processing. @itemize @item Do not use symbols that begin with, @samp{m4_}, such as, @samp{m4_define}, or @samp{m4_include}, since those are reserved for @code{m4} macro names. If for some reason you need m4_ as a prefix, use a preprocessor #define to get your symbol past m4 unmangled. @item Do not use the strings @samp{[[} or @samp{]]} anywhere in your code. The former is not valid in C, except within comments and strings, but the latter is valid in code such as @code{x[y[z]]}. The solution is simple. To get the literal string @code{"]]"}, use @code{"]""]"}. To get the array notation @code{x[y[z]]}, use @code{x[y[z] ]}. Flex will attempt to detect these sequences in user code, and escape them. However, it's best to avoid this complexity where possible, by removing such sequences from your code. @end itemize @code{m4} is only required at the time you run @code{flex}. The generated scanner is ordinary C or C++, and does @emph{not} require @code{m4}. @node Common Patterns, ,M4 Dependency, Appendices @section Common Patterns @cindex patterns, common This appendix provides examples of common regular expressions you might use in your scanner. @menu * Numbers:: * Identifiers:: * Quoted Constructs:: * Addresses:: @end menu @node Numbers, Identifiers, ,Common Patterns @subsection Numbers @table @asis @item C99 decimal constant @code{([[:digit:]]@{-@}[0])[[:digit:]]*} @item C99 hexadecimal constant @code{0[xX][[:xdigit:]]+} @item C99 octal constant @code{0[01234567]*} @item C99 floating point constant @verbatim {dseq} ([[:digit:]]+) {dseq_opt} ([[:digit:]]*) {frac} (({dseq_opt}"."{dseq})|{dseq}".") {exp} ([eE][+-]?{dseq}) {exp_opt} ({exp}?) {fsuff} [flFL] {fsuff_opt} ({fsuff}?) {hpref} (0[xX]) {hdseq} ([[:xdigit:]]+) {hdseq_opt} ([[:xdigit:]]*) {hfrac} (({hdseq_opt}"."{hdseq})|({hdseq}".")) {bexp} ([pP][+-]?{dseq}) {dfc} (({frac}{exp_opt}{fsuff_opt})|({dseq}{exp}{fsuff_opt})) {hfc} (({hpref}{hfrac}{bexp}{fsuff_opt})|({hpref}{hdseq}{bexp}{fsuff_opt})) {c99_floating_point_constant} ({dfc}|{hfc}) @end verbatim See C99 section 6.4.4.2 for the gory details. @end table @node Identifiers, Quoted Constructs, Numbers, Common Patterns @subsection Identifiers @table @asis @item C99 Identifier @verbatim ucn ((\\u([[:xdigit:]]{4}))|(\\U([[:xdigit:]]{8}))) nondigit [_[:alpha:]] c99_id ([_[:alpha:]]|{ucn})([_[:alnum:]]|{ucn})* @end verbatim Technically, the above pattern does not encompass all possible C99 identifiers, since C99 allows for "implementation-defined" characters. In practice, C compilers follow the above pattern, with the addition of the @samp{$} character. @item UTF-8 Encoded Unicode Code Point @verbatim [\x09\x0A\x0D\x20-\x7E]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF]([\x80-\xBF]{2})|\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF]([\x80-\xBF]{2})|[\xF1-\xF3]([\x80-\xBF]{3})|\xF4[\x80-\x8F]([\x80-\xBF]{2}) @end verbatim @end table @node Quoted Constructs, Addresses, Identifiers, Common Patterns @subsection Quoted Constructs @table @asis @item C99 String Literal @code{L?\"([^\"\\\n]|(\\['\"?\\abfnrtv])|(\\([0123456]@{1,3@}))|(\\x[[:xdigit:]]+)|(\\u([[:xdigit:]]@{4@}))|(\\U([[:xdigit:]]@{8@})))*\"} @item C99 Comment @code{("/*"([^*]|"*"[^/])*"*/")|("/"(\\\n)*"/"[^\n]*)} Note that in C99, a @samp{//}-style comment may be split across lines, and, contrary to popular belief, does not include the trailing @samp{\n} character. A better way to scan @samp{/* */} comments is by line, rather than matching possibly huge comments all at once. This will allow you to scan comments of unlimited length, as long as line breaks appear at sane intervals. This is also more efficient when used with automatic line number processing. @xref{option-yylineno}. @verbatim { "/*" BEGIN(COMMENT); } { "*/" BEGIN(0); [^*\n]+ ; "*"[^/] ; \n ; } @end verbatim @end table @node Addresses, ,Quoted Constructs, Common Patterns @subsection Addresses @table @asis @item IPv4 Address @verbatim dec-octet [0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5] IPv4address {dec-octet}\.{dec-octet}\.{dec-octet}\.{dec-octet} @end verbatim @item IPv6 Address @verbatim h16 [0-9A-Fa-f]{1,4} ls32 {h16}:{h16}|{IPv4address} IPv6address ({h16}:){6}{ls32}| ::({h16}:){5}{ls32}| ({h16})?::({h16}:){4}{ls32}| (({h16}:){0,1}{h16})?::({h16}:){3}{ls32}| (({h16}:){0,2}{h16})?::({h16}:){2}{ls32}| (({h16}:){0,3}{h16})?::{h16}:{ls32}| (({h16}:){0,4}{h16})?::{ls32}| (({h16}:){0,5}{h16})?::{h16}| (({h16}:){0,6}{h16})?:: @end verbatim See @uref{http://www.ietf.org/rfc/rfc2373.txt, RFC 2373} for details. Note that you have to fold the definition of @code{IPv6address} into one line and that it also matches the ``unspecified address'' ``::''. @item URI @code{(([^:/?#]+):)?("//"([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?} This pattern is nearly useless, since it allows just about any character to appear in a URI, including spaces and control characters. See @uref{http://www.ietf.org/rfc/rfc2396.txt, RFC 2396} for details. @end table @node Indices, , Appendices, Top @unnumbered Indices @menu * Concept Index:: * Index of Functions and Macros:: * Index of Variables:: * Index of Data Types:: * Index of Hooks:: * Index of Scanner Options:: @end menu @node Concept Index, Index of Functions and Macros, Indices, Indices @unnumberedsec Concept Index @printindex cp @node Index of Functions and Macros, Index of Variables, Concept Index, Indices @unnumberedsec Index of Functions and Macros This is an index of functions and preprocessor macros that look like functions. For macros that expand to variables or constants, see @ref{Index of Variables}. @printindex fn @node Index of Variables, Index of Data Types, Index of Functions and Macros, Indices @unnumberedsec Index of Variables This is an index of variables, constants, and preprocessor macros that expand to variables or constants. @printindex vr @node Index of Data Types, Index of Hooks, Index of Variables, Indices @unnumberedsec Index of Data Types @printindex tp @node Index of Hooks, Index of Scanner Options, Index of Data Types, Indices @unnumberedsec Index of Hooks This is an index of "hooks" that the user may define. These hooks typically correspond to specific locations in the generated scanner, and may be used to insert arbitrary code. @printindex hk @node Index of Scanner Options, , Index of Hooks, Indices @unnumberedsec Index of Scanner Options @printindex op @c A vim script to name the faq entries. delete this when faqs are no longer @c named "unnamed-faq-XXX". @c @c fu! Faq2 () range abort @c let @r=input("Rename to: ") @c exe "%s/" . @w . "/" . @r . "/g" @c normal 'f @c endf @c nnoremap 1G/@node\s\+unnamed-faq-\d\+mfww"wy5ezt:call Faq2() @bye flex-2.5.39/doc/mdate-sh0000755000175000017500000001371712314621560015230 0ustar srivastasrivasta#!/bin/sh # Get modification time of a file or directory and pretty-print it. scriptversion=2010-08-21.06; # UTC # Copyright (C) 1995, 1996, 1997, 2003, 2004, 2005, 2007, 2009, 2010 # Free Software Foundation, Inc. # written by Ulrich Drepper , June 1995 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST fi case $1 in '') echo "$0: No file. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: mdate-sh [--help] [--version] FILE Pretty-print the modification day of FILE, in the format: 1 January 1970 Report bugs to . EOF exit $? ;; -v | --v*) echo "mdate-sh $scriptversion" exit $? ;; esac error () { echo "$0: $1" >&2 exit 1 } # Prevent date giving response in another language. LANG=C export LANG LC_ALL=C export LC_ALL LC_TIME=C export LC_TIME # GNU ls changes its time format in response to the TIME_STYLE # variable. Since we cannot assume `unset' works, revert this # variable to its documented default. if test "${TIME_STYLE+set}" = set; then TIME_STYLE=posix-long-iso export TIME_STYLE fi save_arg1=$1 # Find out how to get the extended ls output of a file or directory. if ls -L /dev/null 1>/dev/null 2>&1; then ls_command='ls -L -l -d' else ls_command='ls -l -d' fi # Avoid user/group names that might have spaces, when possible. if ls -n /dev/null 1>/dev/null 2>&1; then ls_command="$ls_command -n" fi # A `ls -l' line looks as follows on OS/2. # drwxrwx--- 0 Aug 11 2001 foo # This differs from Unix, which adds ownership information. # drwxrwx--- 2 root root 4096 Aug 11 2001 foo # # To find the date, we split the line on spaces and iterate on words # until we find a month. This cannot work with files whose owner is a # user named `Jan', or `Feb', etc. However, it's unlikely that `/' # will be owned by a user whose name is a month. So we first look at # the extended ls output of the root directory to decide how many # words should be skipped to get the date. # On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below. set x`$ls_command /` # Find which argument is the month. month= command= until test $month do test $# -gt 0 || error "failed parsing \`$ls_command /' output" shift # Add another shift to the command. command="$command shift;" case $1 in Jan) month=January; nummonth=1;; Feb) month=February; nummonth=2;; Mar) month=March; nummonth=3;; Apr) month=April; nummonth=4;; May) month=May; nummonth=5;; Jun) month=June; nummonth=6;; Jul) month=July; nummonth=7;; Aug) month=August; nummonth=8;; Sep) month=September; nummonth=9;; Oct) month=October; nummonth=10;; Nov) month=November; nummonth=11;; Dec) month=December; nummonth=12;; esac done test -n "$month" || error "failed parsing \`$ls_command /' output" # Get the extended ls output of the file or directory. set dummy x`eval "$ls_command \"\\\$save_arg1\""` # Remove all preceding arguments eval $command # Because of the dummy argument above, month is in $2. # # On a POSIX system, we should have # # $# = 5 # $1 = file size # $2 = month # $3 = day # $4 = year or time # $5 = filename # # On Darwin 7.7.0 and 7.6.0, we have # # $# = 4 # $1 = day # $2 = month # $3 = year or time # $4 = filename # Get the month. case $2 in Jan) month=January; nummonth=1;; Feb) month=February; nummonth=2;; Mar) month=March; nummonth=3;; Apr) month=April; nummonth=4;; May) month=May; nummonth=5;; Jun) month=June; nummonth=6;; Jul) month=July; nummonth=7;; Aug) month=August; nummonth=8;; Sep) month=September; nummonth=9;; Oct) month=October; nummonth=10;; Nov) month=November; nummonth=11;; Dec) month=December; nummonth=12;; esac case $3 in ???*) day=$1;; *) day=$3; shift;; esac # Here we have to deal with the problem that the ls output gives either # the time of day or the year. case $3 in *:*) set `date`; eval year=\$$# case $2 in Jan) nummonthtod=1;; Feb) nummonthtod=2;; Mar) nummonthtod=3;; Apr) nummonthtod=4;; May) nummonthtod=5;; Jun) nummonthtod=6;; Jul) nummonthtod=7;; Aug) nummonthtod=8;; Sep) nummonthtod=9;; Oct) nummonthtod=10;; Nov) nummonthtod=11;; Dec) nummonthtod=12;; esac # For the first six month of the year the time notation can also # be used for files modified in the last year. if (expr $nummonth \> $nummonthtod) > /dev/null; then year=`expr $year - 1` fi;; *) year=$3;; esac # The result. echo $day $month $year # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: flex-2.5.39/doc/flex.info-10000644000175000017500000106324412314621343015551 0ustar srivastasrivastaThis is flex.info, produced by makeinfo version 4.13 from flex.texi. INFO-DIR-SECTION Programming START-INFO-DIR-ENTRY * flex: (flex). Fast lexical analyzer generator (lex replacement). END-INFO-DIR-ENTRY The flex manual is placed under the same licensing conditions as the rest of flex: Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2012 The Flex Project. Copyright (C) 1990, 1997 The Regents of the University of California. All rights reserved. This code is derived from software contributed to Berkeley by Vern Paxson. The United States Government has rights in this work pursuant to contract no. DE-AC03-76SF00098 between the United States Department of Energy and the University of California. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  File: flex.info, Node: Top, Next: Copyright, Prev: (dir), Up: (dir) flex **** This manual describes `flex', a tool for generating programs that perform pattern-matching on text. The manual includes both tutorial and reference sections. This edition of `The flex Manual' documents `flex' version 2.5.39. It was last updated on 6 December 2012. This manual was written by Vern Paxson, Will Estes and John Millaway. * Menu: * Copyright:: * Reporting Bugs:: * Introduction:: * Simple Examples:: * Format:: * Patterns:: * Matching:: * Actions:: * Generated Scanner:: * Start Conditions:: * Multiple Input Buffers:: * EOF:: * Misc Macros:: * User Values:: * Yacc:: * Scanner Options:: * Performance:: * Cxx:: * Reentrant:: * Lex and Posix:: * Memory Management:: * Serialized Tables:: * Diagnostics:: * Limitations:: * Bibliography:: * FAQ:: * Appendices:: * Indices:: --- The Detailed Node Listing --- Format of the Input File * Definitions Section:: * Rules Section:: * User Code Section:: * Comments in the Input:: Scanner Options * Options for Specifying Filenames:: * Options Affecting Scanner Behavior:: * Code-Level And API Options:: * Options for Scanner Speed and Size:: * Debugging Options:: * Miscellaneous Options:: Reentrant C Scanners * Reentrant Uses:: * Reentrant Overview:: * Reentrant Example:: * Reentrant Detail:: * Reentrant Functions:: The Reentrant API in Detail * Specify Reentrant:: * Extra Reentrant Argument:: * Global Replacement:: * Init and Destroy Functions:: * Accessor Methods:: * Extra Data:: * About yyscan_t:: Memory Management * The Default Memory Management:: * Overriding The Default Memory Management:: * A Note About yytext And Memory:: Serialized Tables * Creating Serialized Tables:: * Loading and Unloading Serialized Tables:: * Tables File Format:: FAQ * When was flex born?:: * How do I expand backslash-escape sequences in C-style quoted strings?:: * Why do flex scanners call fileno if it is not ANSI compatible?:: * Does flex support recursive pattern definitions?:: * How do I skip huge chunks of input (tens of megabytes) while using flex?:: * Flex is not matching my patterns in the same order that I defined them.:: * My actions are executing out of order or sometimes not at all.:: * How can I have multiple input sources feed into the same scanner at the same time?:: * Can I build nested parsers that work with the same input file?:: * How can I match text only at the end of a file?:: * How can I make REJECT cascade across start condition boundaries?:: * Why cant I use fast or full tables with interactive mode?:: * How much faster is -F or -f than -C?:: * If I have a simple grammar cant I just parse it with flex?:: * Why doesn't yyrestart() set the start state back to INITIAL?:: * How can I match C-style comments?:: * The period isn't working the way I expected.:: * Can I get the flex manual in another format?:: * Does there exist a "faster" NDFA->DFA algorithm?:: * How does flex compile the DFA so quickly?:: * How can I use more than 8192 rules?:: * How do I abandon a file in the middle of a scan and switch to a new file?:: * How do I execute code only during initialization (only before the first scan)?:: * How do I execute code at termination?:: * Where else can I find help?:: * Can I include comments in the "rules" section of the file?:: * I get an error about undefined yywrap().:: * How can I change the matching pattern at run time?:: * How can I expand macros in the input?:: * How can I build a two-pass scanner?:: * How do I match any string not matched in the preceding rules?:: * I am trying to port code from AT&T lex that uses yysptr and yysbuf.:: * Is there a way to make flex treat NULL like a regular character?:: * Whenever flex can not match the input it says "flex scanner jammed".:: * Why doesn't flex have non-greedy operators like perl does?:: * Memory leak - 16386 bytes allocated by malloc.:: * How do I track the byte offset for lseek()?:: * How do I use my own I/O classes in a C++ scanner?:: * How do I skip as many chars as possible?:: * deleteme00:: * Are certain equivalent patterns faster than others?:: * Is backing up a big deal?:: * Can I fake multi-byte character support?:: * deleteme01:: * Can you discuss some flex internals?:: * unput() messes up yy_at_bol:: * The | operator is not doing what I want:: * Why can't flex understand this variable trailing context pattern?:: * The ^ operator isn't working:: * Trailing context is getting confused with trailing optional patterns:: * Is flex GNU or not?:: * ERASEME53:: * I need to scan if-then-else blocks and while loops:: * ERASEME55:: * ERASEME56:: * ERASEME57:: * Is there a repository for flex scanners?:: * How can I conditionally compile or preprocess my flex input file?:: * Where can I find grammars for lex and yacc?:: * I get an end-of-buffer message for each character scanned.:: * unnamed-faq-62:: * unnamed-faq-63:: * unnamed-faq-64:: * unnamed-faq-65:: * unnamed-faq-66:: * unnamed-faq-67:: * unnamed-faq-68:: * unnamed-faq-69:: * unnamed-faq-70:: * unnamed-faq-71:: * unnamed-faq-72:: * unnamed-faq-73:: * unnamed-faq-74:: * unnamed-faq-75:: * unnamed-faq-76:: * unnamed-faq-77:: * unnamed-faq-78:: * unnamed-faq-79:: * unnamed-faq-80:: * unnamed-faq-81:: * unnamed-faq-82:: * unnamed-faq-83:: * unnamed-faq-84:: * unnamed-faq-85:: * unnamed-faq-86:: * unnamed-faq-87:: * unnamed-faq-88:: * unnamed-faq-90:: * unnamed-faq-91:: * unnamed-faq-92:: * unnamed-faq-93:: * unnamed-faq-94:: * unnamed-faq-95:: * unnamed-faq-96:: * unnamed-faq-97:: * unnamed-faq-98:: * unnamed-faq-99:: * unnamed-faq-100:: * unnamed-faq-101:: * What is the difference between YYLEX_PARAM and YY_DECL?:: * Why do I get "conflicting types for yylex" error?:: * How do I access the values set in a Flex action from within a Bison action?:: Appendices * Makefiles and Flex:: * Bison Bridge:: * M4 Dependency:: * Common Patterns:: Indices * Concept Index:: * Index of Functions and Macros:: * Index of Variables:: * Index of Data Types:: * Index of Hooks:: * Index of Scanner Options::  File: flex.info, Node: Copyright, Next: Reporting Bugs, Prev: Top, Up: Top 1 Copyright *********** The flex manual is placed under the same licensing conditions as the rest of flex: Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2012 The Flex Project. Copyright (C) 1990, 1997 The Regents of the University of California. All rights reserved. This code is derived from software contributed to Berkeley by Vern Paxson. The United States Government has rights in this work pursuant to contract no. DE-AC03-76SF00098 between the United States Department of Energy and the University of California. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  File: flex.info, Node: Reporting Bugs, Next: Introduction, Prev: Copyright, Up: Top 2 Reporting Bugs **************** If you find a bug in `flex', please report it using the SourceForge Bug Tracking facilities which can be found on flex's SourceForge Page (http://sourceforge.net/projects/flex).  File: flex.info, Node: Introduction, Next: Simple Examples, Prev: Reporting Bugs, Up: Top 3 Introduction ************** `flex' is a tool for generating "scanners". A scanner is a program which recognizes lexical patterns in text. The `flex' program reads the given input files, or its standard input if no file names are given, for a description of a scanner to generate. The description is in the form of pairs of regular expressions and C code, called "rules". `flex' generates as output a C source file, `lex.yy.c' by default, which defines a routine `yylex()'. This file can be compiled and linked with the flex runtime library to produce an executable. When the executable is run, it analyzes its input for occurrences of the regular expressions. Whenever it finds one, it executes the corresponding C code.  File: flex.info, Node: Simple Examples, Next: Format, Prev: Introduction, Up: Top 4 Some Simple Examples ********************** First some simple examples to get the flavor of how one uses `flex'. The following `flex' input specifies a scanner which, when it encounters the string `username' will replace it with the user's login name: %% username printf( "%s", getlogin() ); By default, any text not matched by a `flex' scanner is copied to the output, so the net effect of this scanner is to copy its input file to its output with each occurrence of `username' expanded. In this input, there is just one rule. `username' is the "pattern" and the `printf' is the "action". The `%%' symbol marks the beginning of the rules. Here's another simple example: int num_lines = 0, num_chars = 0; %% \n ++num_lines; ++num_chars; . ++num_chars; %% int main() { yylex(); printf( "# of lines = %d, # of chars = %d\n", num_lines, num_chars ); } This scanner counts the number of characters and the number of lines in its input. It produces no output other than the final report on the character and line counts. The first line declares two globals, `num_lines' and `num_chars', which are accessible both inside `yylex()' and in the `main()' routine declared after the second `%%'. There are two rules, one which matches a newline (`\n') and increments both the line count and the character count, and one which matches any character other than a newline (indicated by the `.' regular expression). A somewhat more complicated example: /* scanner for a toy Pascal-like language */ %{ /* need this for the call to atof() below */ #include %} DIGIT [0-9] ID [a-z][a-z0-9]* %% {DIGIT}+ { printf( "An integer: %s (%d)\n", yytext, atoi( yytext ) ); } {DIGIT}+"."{DIGIT}* { printf( "A float: %s (%g)\n", yytext, atof( yytext ) ); } if|then|begin|end|procedure|function { printf( "A keyword: %s\n", yytext ); } {ID} printf( "An identifier: %s\n", yytext ); "+"|"-"|"*"|"/" printf( "An operator: %s\n", yytext ); "{"[\^{}}\n]*"}" /* eat up one-line comments */ [ \t\n]+ /* eat up whitespace */ . printf( "Unrecognized character: %s\n", yytext ); %% int main( int argc, char **argv ) { ++argv, --argc; /* skip over program name */ if ( argc > 0 ) yyin = fopen( argv[0], "r" ); else yyin = stdin; yylex(); } This is the beginnings of a simple scanner for a language like Pascal. It identifies different types of "tokens" and reports on what it has seen. The details of this example will be explained in the following sections.  File: flex.info, Node: Format, Next: Patterns, Prev: Simple Examples, Up: Top 5 Format of the Input File ************************** The `flex' input file consists of three sections, separated by a line containing only `%%'. definitions %% rules %% user code * Menu: * Definitions Section:: * Rules Section:: * User Code Section:: * Comments in the Input::  File: flex.info, Node: Definitions Section, Next: Rules Section, Prev: Format, Up: Format 5.1 Format of the Definitions Section ===================================== The "definitions section" contains declarations of simple "name" definitions to simplify the scanner specification, and declarations of "start conditions", which are explained in a later section. Name definitions have the form: name definition The `name' is a word beginning with a letter or an underscore (`_') followed by zero or more letters, digits, `_', or `-' (dash). The definition is taken to begin at the first non-whitespace character following the name and continuing to the end of the line. The definition can subsequently be referred to using `{name}', which will expand to `(definition)'. For example, DIGIT [0-9] ID [a-z][a-z0-9]* Defines `DIGIT' to be a regular expression which matches a single digit, and `ID' to be a regular expression which matches a letter followed by zero-or-more letters-or-digits. A subsequent reference to {DIGIT}+"."{DIGIT}* is identical to ([0-9])+"."([0-9])* and matches one-or-more digits followed by a `.' followed by zero-or-more digits. An unindented comment (i.e., a line beginning with `/*') is copied verbatim to the output up to the next `*/'. Any _indented_ text or text enclosed in `%{' and `%}' is also copied verbatim to the output (with the %{ and %} symbols removed). The %{ and %} symbols must appear unindented on lines by themselves. A `%top' block is similar to a `%{' ... `%}' block, except that the code in a `%top' block is relocated to the _top_ of the generated file, before any flex definitions (1). The `%top' block is useful when you want certain preprocessor macros to be defined or certain files to be included before the generated code. The single characters, `{' and `}' are used to delimit the `%top' block, as show in the example below: %top{ /* This code goes at the "top" of the generated file. */ #include #include } Multiple `%top' blocks are allowed, and their order is preserved. ---------- Footnotes ---------- (1) Actually, `yyIN_HEADER' is defined before the `%top' block.  File: flex.info, Node: Rules Section, Next: User Code Section, Prev: Definitions Section, Up: Format 5.2 Format of the Rules Section =============================== The "rules" section of the `flex' input contains a series of rules of the form: pattern action where the pattern must be unindented and the action must begin on the same line. *Note Patterns::, for a further description of patterns and actions. In the rules section, any indented or %{ %} enclosed text appearing before the first rule may be used to declare variables which are local to the scanning routine and (after the declarations) code which is to be executed whenever the scanning routine is entered. Other indented or %{ %} text in the rule section is still copied to the output, but its meaning is not well-defined and it may well cause compile-time errors (this feature is present for POSIX compliance. *Note Lex and Posix::, for other such features). Any _indented_ text or text enclosed in `%{' and `%}' is copied verbatim to the output (with the %{ and %} symbols removed). The %{ and %} symbols must appear unindented on lines by themselves.  File: flex.info, Node: User Code Section, Next: Comments in the Input, Prev: Rules Section, Up: Format 5.3 Format of the User Code Section =================================== The user code section is simply copied to `lex.yy.c' verbatim. It is used for companion routines which call or are called by the scanner. The presence of this section is optional; if it is missing, the second `%%' in the input file may be skipped, too.  File: flex.info, Node: Comments in the Input, Prev: User Code Section, Up: Format 5.4 Comments in the Input ========================= Flex supports C-style comments, that is, anything between `/*' and `*/' is considered a comment. Whenever flex encounters a comment, it copies the entire comment verbatim to the generated source code. Comments may appear just about anywhere, but with the following exceptions: * Comments may not appear in the Rules Section wherever flex is expecting a regular expression. This means comments may not appear at the beginning of a line, or immediately following a list of scanner states. * Comments may not appear on an `%option' line in the Definitions Section. If you want to follow a simple rule, then always begin a comment on a new line, with one or more whitespace characters before the initial `/*'). This rule will work anywhere in the input file. All the comments in the following example are valid: %{ /* code block */ %} /* Definitions Section */ %x STATE_X %% /* Rules Section */ ruleA /* after regex */ { /* code block */ } /* after code block */ /* Rules Section (indented) */ { ruleC ECHO; ruleD ECHO; %{ /* code block */ %} } %% /* User Code Section */  File: flex.info, Node: Patterns, Next: Matching, Prev: Format, Up: Top 6 Patterns ********** The patterns in the input (see *note Rules Section::) are written using an extended set of regular expressions. These are: `x' match the character 'x' `.' any character (byte) except newline `[xyz]' a "character class"; in this case, the pattern matches either an 'x', a 'y', or a 'z' `[abj-oZ]' a "character class" with a range in it; matches an 'a', a 'b', any letter from 'j' through 'o', or a 'Z' `[^A-Z]' a "negated character class", i.e., any character but those in the class. In this case, any character EXCEPT an uppercase letter. `[^A-Z\n]' any character EXCEPT an uppercase letter or a newline `[a-z]{-}[aeiou]' the lowercase consonants `r*' zero or more r's, where r is any regular expression `r+' one or more r's `r?' zero or one r's (that is, "an optional r") `r{2,5}' anywhere from two to five r's `r{2,}' two or more r's `r{4}' exactly 4 r's `{name}' the expansion of the `name' definition (*note Format::). `"[xyz]\"foo"' the literal string: `[xyz]"foo' `\X' if X is `a', `b', `f', `n', `r', `t', or `v', then the ANSI-C interpretation of `\x'. Otherwise, a literal `X' (used to escape operators such as `*') `\0' a NUL character (ASCII code 0) `\123' the character with octal value 123 `\x2a' the character with hexadecimal value 2a `(r)' match an `r'; parentheses are used to override precedence (see below) `(?r-s:pattern)' apply option `r' and omit option `s' while interpreting pattern. Options may be zero or more of the characters `i', `s', or `x'. `i' means case-insensitive. `-i' means case-sensitive. `s' alters the meaning of the `.' syntax to match any single byte whatsoever. `-s' alters the meaning of `.' to match any byte except `\n'. `x' ignores comments and whitespace in patterns. Whitespace is ignored unless it is backslash-escaped, contained within `""'s, or appears inside a character class. The following are all valid: (?:foo) same as (foo) (?i:ab7) same as ([aA][bB]7) (?-i:ab) same as (ab) (?s:.) same as [\x00-\xFF] (?-s:.) same as [^\n] (?ix-s: a . b) same as ([Aa][^\n][bB]) (?x:a b) same as ("ab") (?x:a\ b) same as ("a b") (?x:a" "b) same as ("a b") (?x:a[ ]b) same as ("a b") (?x:a /* comment */ b c) same as (abc) `(?# comment )' omit everything within `()'. The first `)' character encountered ends the pattern. It is not possible to for the comment to contain a `)' character. The comment may span lines. `rs' the regular expression `r' followed by the regular expression `s'; called "concatenation" `r|s' either an `r' or an `s' `r/s' an `r' but only if it is followed by an `s'. The text matched by `s' is included when determining whether this rule is the longest match, but is then returned to the input before the action is executed. So the action only sees the text matched by `r'. This type of pattern is called "trailing context". (There are some combinations of `r/s' that flex cannot match correctly. *Note Limitations::, regarding dangerous trailing context.) `^r' an `r', but only at the beginning of a line (i.e., when just starting to scan, or right after a newline has been scanned). `r$' an `r', but only at the end of a line (i.e., just before a newline). Equivalent to `r/\n'. Note that `flex''s notion of "newline" is exactly whatever the C compiler used to compile `flex' interprets `\n' as; in particular, on some DOS systems you must either filter out `\r's in the input yourself, or explicitly use `r/\r\n' for `r$'. `r' an `r', but only in start condition `s' (see *note Start Conditions:: for discussion of start conditions). `r' same, but in any of start conditions `s1', `s2', or `s3'. `<*>r' an `r' in any start condition, even an exclusive one. `<>' an end-of-file. `<>' an end-of-file when in start condition `s1' or `s2' Note that inside of a character class, all regular expression operators lose their special meaning except escape (`\') and the character class operators, `-', `]]', and, at the beginning of the class, `^'. The regular expressions listed above are grouped according to precedence, from highest precedence at the top to lowest at the bottom. Those grouped together have equal precedence (see special note on the precedence of the repeat operator, `{}', under the documentation for the `--posix' POSIX compliance option). For example, foo|bar* is the same as (foo)|(ba(r*)) since the `*' operator has higher precedence than concatenation, and concatenation higher than alternation (`|'). This pattern therefore matches _either_ the string `foo' _or_ the string `ba' followed by zero-or-more `r''s. To match `foo' or zero-or-more repetitions of the string `bar', use: foo|(bar)* And to match a sequence of zero or more repetitions of `foo' and `bar': (foo|bar)* In addition to characters and ranges of characters, character classes can also contain "character class expressions". These are expressions enclosed inside `[': and `:]' delimiters (which themselves must appear between the `[' and `]' of the character class. Other elements may occur inside the character class, too). The valid expressions are: [:alnum:] [:alpha:] [:blank:] [:cntrl:] [:digit:] [:graph:] [:lower:] [:print:] [:punct:] [:space:] [:upper:] [:xdigit:] These expressions all designate a set of characters equivalent to the corresponding standard C `isXXX' function. For example, `[:alnum:]' designates those characters for which `isalnum()' returns true - i.e., any alphabetic or numeric character. Some systems don't provide `isblank()', so flex defines `[:blank:]' as a blank or a tab. For example, the following character classes are all equivalent: [[:alnum:]] [[:alpha:][:digit:]] [[:alpha:][0-9]] [a-zA-Z0-9] A word of caution. Character classes are expanded immediately when seen in the `flex' input. This means the character classes are sensitive to the locale in which `flex' is executed, and the resulting scanner will not be sensitive to the runtime locale. This may or may not be desirable. * If your scanner is case-insensitive (the `-i' flag), then `[:upper:]' and `[:lower:]' are equivalent to `[:alpha:]'. * Character classes with ranges, such as `[a-Z]', should be used with caution in a case-insensitive scanner if the range spans upper or lowercase characters. Flex does not know if you want to fold all upper and lowercase characters together, or if you want the literal numeric range specified (with no case folding). When in doubt, flex will assume that you meant the literal numeric range, and will issue a warning. The exception to this rule is a character range such as `[a-z]' or `[S-W]' where it is obvious that you want case-folding to occur. Here are some examples with the `-i' flag enabled: Range Result Literal Range Alternate Range `[a-t]' ok `[a-tA-T]' `[A-T]' ok `[a-tA-T]' `[A-t]' ambiguous `[A-Z\[\\\]_`a-t]' `[a-tA-T]' `[_-{]' ambiguous `[_`a-z{]' `[_`a-zA-Z{]' `[@-C]' ambiguous `[@ABC]' `[@A-Z\[\\\]_`abc]' * A negated character class such as the example `[^A-Z]' above _will_ match a newline unless `\n' (or an equivalent escape sequence) is one of the characters explicitly present in the negated character class (e.g., `[^A-Z\n]'). This is unlike how many other regular expression tools treat negated character classes, but unfortunately the inconsistency is historically entrenched. Matching newlines means that a pattern like `[^"]*' can match the entire input unless there's another quote in the input. Flex allows negation of character class expressions by prepending `^' to the POSIX character class name. [:^alnum:] [:^alpha:] [:^blank:] [:^cntrl:] [:^digit:] [:^graph:] [:^lower:] [:^print:] [:^punct:] [:^space:] [:^upper:] [:^xdigit:] Flex will issue a warning if the expressions `[:^upper:]' and `[:^lower:]' appear in a case-insensitive scanner, since their meaning is unclear. The current behavior is to skip them entirely, but this may change without notice in future revisions of flex. * The `{-}' operator computes the difference of two character classes. For example, `[a-c]{-}[b-z]' represents all the characters in the class `[a-c]' that are not in the class `[b-z]' (which in this case, is just the single character `a'). The `{-}' operator is left associative, so `[abc]{-}[b]{-}[c]' is the same as `[a]'. Be careful not to accidentally create an empty set, which will never match. * The `{+}' operator computes the union of two character classes. For example, `[a-z]{+}[0-9]' is the same as `[a-z0-9]'. This operator is useful when preceded by the result of a difference operation, as in, `[[:alpha:]]{-}[[:lower:]]{+}[q]', which is equivalent to `[A-Zq]' in the "C" locale. * A rule can have at most one instance of trailing context (the `/' operator or the `$' operator). The start condition, `^', and `<>' patterns can only occur at the beginning of a pattern, and, as well as with `/' and `$', cannot be grouped inside parentheses. A `^' which does not occur at the beginning of a rule or a `$' which does not occur at the end of a rule loses its special properties and is treated as a normal character. * The following are invalid: foo/bar$ foobar Note that the first of these can be written `foo/bar\n'. * The following will result in `$' or `^' being treated as a normal character: foo|(bar$) foo|^bar If the desired meaning is a `foo' or a `bar'-followed-by-a-newline, the following could be used (the special `|' action is explained below, *note Actions::): foo | bar$ /* action goes here */ A similar trick will work for matching a `foo' or a `bar'-at-the-beginning-of-a-line.  File: flex.info, Node: Matching, Next: Actions, Prev: Patterns, Up: Top 7 How the Input Is Matched ************************** When the generated scanner is run, it analyzes its input looking for strings which match any of its patterns. If it finds more than one match, it takes the one matching the most text (for trailing context rules, this includes the length of the trailing part, even though it will then be returned to the input). If it finds two or more matches of the same length, the rule listed first in the `flex' input file is chosen. Once the match is determined, the text corresponding to the match (called the "token") is made available in the global character pointer `yytext', and its length in the global integer `yyleng'. The "action" corresponding to the matched pattern is then executed (*note Actions::), and then the remaining input is scanned for another match. If no match is found, then the "default rule" is executed: the next character in the input is considered matched and copied to the standard output. Thus, the simplest valid `flex' input is: %% which generates a scanner that simply copies its input (one character at a time) to its output. Note that `yytext' can be defined in two different ways: either as a character _pointer_ or as a character _array_. You can control which definition `flex' uses by including one of the special directives `%pointer' or `%array' in the first (definitions) section of your flex input. The default is `%pointer', unless you use the `-l' lex compatibility option, in which case `yytext' will be an array. The advantage of using `%pointer' is substantially faster scanning and no buffer overflow when matching very large tokens (unless you run out of dynamic memory). The disadvantage is that you are restricted in how your actions can modify `yytext' (*note Actions::), and calls to the `unput()' function destroys the present contents of `yytext', which can be a considerable porting headache when moving between different `lex' versions. The advantage of `%array' is that you can then modify `yytext' to your heart's content, and calls to `unput()' do not destroy `yytext' (*note Actions::). Furthermore, existing `lex' programs sometimes access `yytext' externally using declarations of the form: extern char yytext[]; This definition is erroneous when used with `%pointer', but correct for `%array'. The `%array' declaration defines `yytext' to be an array of `YYLMAX' characters, which defaults to a fairly large value. You can change the size by simply #define'ing `YYLMAX' to a different value in the first section of your `flex' input. As mentioned above, with `%pointer' yytext grows dynamically to accommodate large tokens. While this means your `%pointer' scanner can accommodate very large tokens (such as matching entire blocks of comments), bear in mind that each time the scanner must resize `yytext' it also must rescan the entire token from the beginning, so matching such tokens can prove slow. `yytext' presently does _not_ dynamically grow if a call to `unput()' results in too much text being pushed back; instead, a run-time error results. Also note that you cannot use `%array' with C++ scanner classes (*note Cxx::).  File: flex.info, Node: Actions, Next: Generated Scanner, Prev: Matching, Up: Top 8 Actions ********* Each pattern in a rule has a corresponding "action", which can be any arbitrary C statement. The pattern ends at the first non-escaped whitespace character; the remainder of the line is its action. If the action is empty, then when the pattern is matched the input token is simply discarded. For example, here is the specification for a program which deletes all occurrences of `zap me' from its input: %% "zap me" This example will copy all other characters in the input to the output since they will be matched by the default rule. Here is a program which compresses multiple blanks and tabs down to a single blank, and throws away whitespace found at the end of a line: %% [ \t]+ putchar( ' ' ); [ \t]+$ /* ignore this token */ If the action contains a `{', then the action spans till the balancing `}' is found, and the action may cross multiple lines. `flex' knows about C strings and comments and won't be fooled by braces found within them, but also allows actions to begin with `%{' and will consider the action to be all the text up to the next `%}' (regardless of ordinary braces inside the action). An action consisting solely of a vertical bar (`|') means "same as the action for the next rule". See below for an illustration. Actions can include arbitrary C code, including `return' statements to return a value to whatever routine called `yylex()'. Each time `yylex()' is called it continues processing tokens from where it last left off until it either reaches the end of the file or executes a return. Actions are free to modify `yytext' except for lengthening it (adding characters to its end-these will overwrite later characters in the input stream). This however does not apply when using `%array' (*note Matching::). In that case, `yytext' may be freely modified in any way. Actions are free to modify `yyleng' except they should not do so if the action also includes use of `yymore()' (see below). There are a number of special directives which can be included within an action: `ECHO' copies yytext to the scanner's output. `BEGIN' followed by the name of a start condition places the scanner in the corresponding start condition (see below). `REJECT' directs the scanner to proceed on to the "second best" rule which matched the input (or a prefix of the input). The rule is chosen as described above in *note Matching::, and `yytext' and `yyleng' set up appropriately. It may either be one which matched as much text as the originally chosen rule but came later in the `flex' input file, or one which matched less text. For example, the following will both count the words in the input and call the routine `special()' whenever `frob' is seen: int word_count = 0; %% frob special(); REJECT; [^ \t\n]+ ++word_count; Without the `REJECT', any occurrences of `frob' in the input would not be counted as words, since the scanner normally executes only one action per token. Multiple uses of `REJECT' are allowed, each one finding the next best choice to the currently active rule. For example, when the following scanner scans the token `abcd', it will write `abcdabcaba' to the output: %% a | ab | abc | abcd ECHO; REJECT; .|\n /* eat up any unmatched character */ The first three rules share the fourth's action since they use the special `|' action. `REJECT' is a particularly expensive feature in terms of scanner performance; if it is used in _any_ of the scanner's actions it will slow down _all_ of the scanner's matching. Furthermore, `REJECT' cannot be used with the `-Cf' or `-CF' options (*note Scanner Options::). Note also that unlike the other special actions, `REJECT' is a _branch_. Code immediately following it in the action will _not_ be executed. `yymore()' tells the scanner that the next time it matches a rule, the corresponding token should be _appended_ onto the current value of `yytext' rather than replacing it. For example, given the input `mega-kludge' the following will write `mega-mega-kludge' to the output: %% mega- ECHO; yymore(); kludge ECHO; First `mega-' is matched and echoed to the output. Then `kludge' is matched, but the previous `mega-' is still hanging around at the beginning of `yytext' so the `ECHO' for the `kludge' rule will actually write `mega-kludge'. Two notes regarding use of `yymore()'. First, `yymore()' depends on the value of `yyleng' correctly reflecting the size of the current token, so you must not modify `yyleng' if you are using `yymore()'. Second, the presence of `yymore()' in the scanner's action entails a minor performance penalty in the scanner's matching speed. `yyless(n)' returns all but the first `n' characters of the current token back to the input stream, where they will be rescanned when the scanner looks for the next match. `yytext' and `yyleng' are adjusted appropriately (e.g., `yyleng' will now be equal to `n'). For example, on the input `foobar' the following will write out `foobarbar': %% foobar ECHO; yyless(3); [a-z]+ ECHO; An argument of 0 to `yyless()' will cause the entire current input string to be scanned again. Unless you've changed how the scanner will subsequently process its input (using `BEGIN', for example), this will result in an endless loop. Note that `yyless()' is a macro and can only be used in the flex input file, not from other source files. `unput(c)' puts the character `c' back onto the input stream. It will be the next character scanned. The following action will take the current token and cause it to be rescanned enclosed in parentheses. { int i; /* Copy yytext because unput() trashes yytext */ char *yycopy = strdup( yytext ); unput( ')' ); for ( i = yyleng - 1; i >= 0; --i ) unput( yycopy[i] ); unput( '(' ); free( yycopy ); } Note that since each `unput()' puts the given character back at the _beginning_ of the input stream, pushing back strings must be done back-to-front. An important potential problem when using `unput()' is that if you are using `%pointer' (the default), a call to `unput()' _destroys_ the contents of `yytext', starting with its rightmost character and devouring one character to the left with each call. If you need the value of `yytext' preserved after a call to `unput()' (as in the above example), you must either first copy it elsewhere, or build your scanner using `%array' instead (*note Matching::). Finally, note that you cannot put back `EOF' to attempt to mark the input stream with an end-of-file. `input()' reads the next character from the input stream. For example, the following is one way to eat up C comments: %% "/*" { register int c; for ( ; ; ) { while ( (c = input()) != '*' && c != EOF ) ; /* eat up text of comment */ if ( c == '*' ) { while ( (c = input()) == '*' ) ; if ( c == '/' ) break; /* found the end */ } if ( c == EOF ) { error( "EOF in comment" ); break; } } } (Note that if the scanner is compiled using `C++', then `input()' is instead referred to as yyinput(), in order to avoid a name clash with the `C++' stream by the name of `input'.) `YY_FLUSH_BUFFER;' flushes the scanner's internal buffer so that the next time the scanner attempts to match a token, it will first refill the buffer using `YY_INPUT()' (*note Generated Scanner::). This action is a special case of the more general `yy_flush_buffer;' function, described below (*note Multiple Input Buffers::) `yyterminate()' can be used in lieu of a return statement in an action. It terminates the scanner and returns a 0 to the scanner's caller, indicating "all done". By default, `yyterminate()' is also called when an end-of-file is encountered. It is a macro and may be redefined.  File: flex.info, Node: Generated Scanner, Next: Start Conditions, Prev: Actions, Up: Top 9 The Generated Scanner *********************** The output of `flex' is the file `lex.yy.c', which contains the scanning routine `yylex()', a number of tables used by it for matching tokens, and a number of auxiliary routines and macros. By default, `yylex()' is declared as follows: int yylex() { ... various definitions and the actions in here ... } (If your environment supports function prototypes, then it will be `int yylex( void )'.) This definition may be changed by defining the `YY_DECL' macro. For example, you could use: #define YY_DECL float lexscan( a, b ) float a, b; to give the scanning routine the name `lexscan', returning a float, and taking two floats as arguments. Note that if you give arguments to the scanning routine using a K&R-style/non-prototyped function declaration, you must terminate the definition with a semi-colon (;). `flex' generates `C99' function definitions by default. However flex does have the ability to generate obsolete, er, `traditional', function definitions. This is to support bootstrapping gcc on old systems. Unfortunately, traditional definitions prevent us from using any standard data types smaller than int (such as short, char, or bool) as function arguments. For this reason, future versions of `flex' may generate standard C99 code only, leaving K&R-style functions to the historians. Currently, if you do *not* want `C99' definitions, then you must use `%option noansi-definitions'. Whenever `yylex()' is called, it scans tokens from the global input file `yyin' (which defaults to stdin). It continues until it either reaches an end-of-file (at which point it returns the value 0) or one of its actions executes a `return' statement. If the scanner reaches an end-of-file, subsequent calls are undefined unless either `yyin' is pointed at a new input file (in which case scanning continues from that file), or `yyrestart()' is called. `yyrestart()' takes one argument, a `FILE *' pointer (which can be NULL, if you've set up `YY_INPUT' to scan from a source other than `yyin'), and initializes `yyin' for scanning from that file. Essentially there is no difference between just assigning `yyin' to a new input file or using `yyrestart()' to do so; the latter is available for compatibility with previous versions of `flex', and because it can be used to switch input files in the middle of scanning. It can also be used to throw away the current input buffer, by calling it with an argument of `yyin'; but it would be better to use `YY_FLUSH_BUFFER' (*note Actions::). Note that `yyrestart()' does _not_ reset the start condition to `INITIAL' (*note Start Conditions::). If `yylex()' stops scanning due to executing a `return' statement in one of the actions, the scanner may then be called again and it will resume scanning where it left off. By default (and for purposes of efficiency), the scanner uses block-reads rather than simple `getc()' calls to read characters from `yyin'. The nature of how it gets its input can be controlled by defining the `YY_INPUT' macro. The calling sequence for `YY_INPUT()' is `YY_INPUT(buf,result,max_size)'. Its action is to place up to `max_size' characters in the character array `buf' and return in the integer variable `result' either the number of characters read or the constant `YY_NULL' (0 on Unix systems) to indicate `EOF'. The default `YY_INPUT' reads from the global file-pointer `yyin'. Here is a sample definition of `YY_INPUT' (in the definitions section of the input file): %{ #define YY_INPUT(buf,result,max_size) \ { \ int c = getchar(); \ result = (c == EOF) ? YY_NULL : (buf[0] = c, 1); \ } %} This definition will change the input processing to occur one character at a time. When the scanner receives an end-of-file indication from YY_INPUT, it then checks the `yywrap()' function. If `yywrap()' returns false (zero), then it is assumed that the function has gone ahead and set up `yyin' to point to another input file, and scanning continues. If it returns true (non-zero), then the scanner terminates, returning 0 to its caller. Note that in either case, the start condition remains unchanged; it does _not_ revert to `INITIAL'. If you do not supply your own version of `yywrap()', then you must either use `%option noyywrap' (in which case the scanner behaves as though `yywrap()' returned 1), or you must link with `-lfl' to obtain the default version of the routine, which always returns 1. For scanning from in-memory buffers (e.g., scanning strings), see *note Scanning Strings::. *Note Multiple Input Buffers::. The scanner writes its `ECHO' output to the `yyout' global (default, `stdout'), which may be redefined by the user simply by assigning it to some other `FILE' pointer.  File: flex.info, Node: Start Conditions, Next: Multiple Input Buffers, Prev: Generated Scanner, Up: Top 10 Start Conditions ******************* `flex' provides a mechanism for conditionally activating rules. Any rule whose pattern is prefixed with `' will only be active when the scanner is in the "start condition" named `sc'. For example, [^"]* { /* eat up the string body ... */ ... } will be active only when the scanner is in the `STRING' start condition, and \. { /* handle an escape ... */ ... } will be active only when the current start condition is either `INITIAL', `STRING', or `QUOTE'. Start conditions are declared in the definitions (first) section of the input using unindented lines beginning with either `%s' or `%x' followed by a list of names. The former declares "inclusive" start conditions, the latter "exclusive" start conditions. A start condition is activated using the `BEGIN' action. Until the next `BEGIN' action is executed, rules with the given start condition will be active and rules with other start conditions will be inactive. If the start condition is inclusive, then rules with no start conditions at all will also be active. If it is exclusive, then _only_ rules qualified with the start condition will be active. A set of rules contingent on the same exclusive start condition describe a scanner which is independent of any of the other rules in the `flex' input. Because of this, exclusive start conditions make it easy to specify "mini-scanners" which scan portions of the input that are syntactically different from the rest (e.g., comments). If the distinction between inclusive and exclusive start conditions is still a little vague, here's a simple example illustrating the connection between the two. The set of rules: %s example %% foo do_something(); bar something_else(); is equivalent to %x example %% foo do_something(); bar something_else(); Without the `' qualifier, the `bar' pattern in the second example wouldn't be active (i.e., couldn't match) when in start condition `example'. If we just used `' to qualify `bar', though, then it would only be active in `example' and not in `INITIAL', while in the first example it's active in both, because in the first example the `example' start condition is an inclusive `(%s)' start condition. Also note that the special start-condition specifier `<*>' matches every start condition. Thus, the above example could also have been written: %x example %% foo do_something(); <*>bar something_else(); The default rule (to `ECHO' any unmatched character) remains active in start conditions. It is equivalent to: <*>.|\n ECHO; `BEGIN(0)' returns to the original state where only the rules with no start conditions are active. This state can also be referred to as the start-condition `INITIAL', so `BEGIN(INITIAL)' is equivalent to `BEGIN(0)'. (The parentheses around the start condition name are not required but are considered good style.) `BEGIN' actions can also be given as indented code at the beginning of the rules section. For example, the following will cause the scanner to enter the `SPECIAL' start condition whenever `yylex()' is called and the global variable `enter_special' is true: int enter_special; %x SPECIAL %% if ( enter_special ) BEGIN(SPECIAL); blahblahblah ...more rules follow... To illustrate the uses of start conditions, here is a scanner which provides two different interpretations of a string like `123.456'. By default it will treat it as three tokens, the integer `123', a dot (`.'), and the integer `456'. But if the string is preceded earlier in the line by the string `expect-floats' it will treat it as a single token, the floating-point number `123.456': %{ #include %} %s expect %% expect-floats BEGIN(expect); [0-9]+.[0-9]+ { printf( "found a float, = %f\n", atof( yytext ) ); } \n { /* that's the end of the line, so * we need another "expect-number" * before we'll recognize any more * numbers */ BEGIN(INITIAL); } [0-9]+ { printf( "found an integer, = %d\n", atoi( yytext ) ); } "." printf( "found a dot\n" ); Here is a scanner which recognizes (and discards) C comments while maintaining a count of the current input line. %x comment %% int line_num = 1; "/*" BEGIN(comment); [^*\n]* /* eat anything that's not a '*' */ "*"+[^*/\n]* /* eat up '*'s not followed by '/'s */ \n ++line_num; "*"+"/" BEGIN(INITIAL); This scanner goes to a bit of trouble to match as much text as possible with each rule. In general, when attempting to write a high-speed scanner try to match as much possible in each rule, as it's a big win. Note that start-conditions names are really integer values and can be stored as such. Thus, the above could be extended in the following fashion: %x comment foo %% int line_num = 1; int comment_caller; "/*" { comment_caller = INITIAL; BEGIN(comment); } ... "/*" { comment_caller = foo; BEGIN(comment); } [^*\n]* /* eat anything that's not a '*' */ "*"+[^*/\n]* /* eat up '*'s not followed by '/'s */ \n ++line_num; "*"+"/" BEGIN(comment_caller); Furthermore, you can access the current start condition using the integer-valued `YY_START' macro. For example, the above assignments to `comment_caller' could instead be written comment_caller = YY_START; Flex provides `YYSTATE' as an alias for `YY_START' (since that is what's used by AT&T `lex'). For historical reasons, start conditions do not have their own name-space within the generated scanner. The start condition names are unmodified in the generated scanner and generated header. *Note option-header::. *Note option-prefix::. Finally, here's an example of how to match C-style quoted strings using exclusive start conditions, including expanded escape sequences (but not including checking for a string that's too long): %x str %% char string_buf[MAX_STR_CONST]; char *string_buf_ptr; \" string_buf_ptr = string_buf; BEGIN(str); \" { /* saw closing quote - all done */ BEGIN(INITIAL); *string_buf_ptr = '\0'; /* return string constant token type and * value to parser */ } \n { /* error - unterminated string constant */ /* generate error message */ } \\[0-7]{1,3} { /* octal escape sequence */ int result; (void) sscanf( yytext + 1, "%o", &result ); if ( result > 0xff ) /* error, constant is out-of-bounds */ *string_buf_ptr++ = result; } \\[0-9]+ { /* generate error - bad escape sequence; something * like '\48' or '\0777777' */ } \\n *string_buf_ptr++ = '\n'; \\t *string_buf_ptr++ = '\t'; \\r *string_buf_ptr++ = '\r'; \\b *string_buf_ptr++ = '\b'; \\f *string_buf_ptr++ = '\f'; \\(.|\n) *string_buf_ptr++ = yytext[1]; [^\\\n\"]+ { char *yptr = yytext; while ( *yptr ) *string_buf_ptr++ = *yptr++; } Often, such as in some of the examples above, you wind up writing a whole bunch of rules all preceded by the same start condition(s). Flex makes this a little easier and cleaner by introducing a notion of start condition "scope". A start condition scope is begun with: { where `SCs' is a list of one or more start conditions. Inside the start condition scope, every rule automatically has the prefix `SCs>' applied to it, until a `}' which matches the initial `{'. So, for example, { "\\n" return '\n'; "\\r" return '\r'; "\\f" return '\f'; "\\0" return '\0'; } is equivalent to: "\\n" return '\n'; "\\r" return '\r'; "\\f" return '\f'; "\\0" return '\0'; Start condition scopes may be nested. The following routines are available for manipulating stacks of start conditions: -- Function: void yy_push_state ( int `new_state' ) pushes the current start condition onto the top of the start condition stack and switches to `new_state' as though you had used `BEGIN new_state' (recall that start condition names are also integers). -- Function: void yy_pop_state () pops the top of the stack and switches to it via `BEGIN'. -- Function: int yy_top_state () returns the top of the stack without altering the stack's contents. The start condition stack grows dynamically and so has no built-in size limitation. If memory is exhausted, program execution aborts. To use start condition stacks, your scanner must include a `%option stack' directive (*note Scanner Options::).  File: flex.info, Node: Multiple Input Buffers, Next: EOF, Prev: Start Conditions, Up: Top 11 Multiple Input Buffers ************************* Some scanners (such as those which support "include" files) require reading from several input streams. As `flex' scanners do a large amount of buffering, one cannot control where the next input will be read from by simply writing a `YY_INPUT()' which is sensitive to the scanning context. `YY_INPUT()' is only called when the scanner reaches the end of its buffer, which may be a long time after scanning a statement such as an `include' statement which requires switching the input source. To negotiate these sorts of problems, `flex' provides a mechanism for creating and switching between multiple input buffers. An input buffer is created by using: -- Function: YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ) which takes a `FILE' pointer and a size and creates a buffer associated with the given file and large enough to hold `size' characters (when in doubt, use `YY_BUF_SIZE' for the size). It returns a `YY_BUFFER_STATE' handle, which may then be passed to other routines (see below). The `YY_BUFFER_STATE' type is a pointer to an opaque `struct yy_buffer_state' structure, so you may safely initialize `YY_BUFFER_STATE' variables to `((YY_BUFFER_STATE) 0)' if you wish, and also refer to the opaque structure in order to correctly declare input buffers in source files other than that of your scanner. Note that the `FILE' pointer in the call to `yy_create_buffer' is only used as the value of `yyin' seen by `YY_INPUT'. If you redefine `YY_INPUT()' so it no longer uses `yyin', then you can safely pass a NULL `FILE' pointer to `yy_create_buffer'. You select a particular buffer to scan from using: -- Function: void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ) The above function switches the scanner's input buffer so subsequent tokens will come from `new_buffer'. Note that `yy_switch_to_buffer()' may be used by `yywrap()' to set things up for continued scanning, instead of opening a new file and pointing `yyin' at it. If you are looking for a stack of input buffers, then you want to use `yypush_buffer_state()' instead of this function. Note also that switching input sources via either `yy_switch_to_buffer()' or `yywrap()' does _not_ change the start condition. -- Function: void yy_delete_buffer ( YY_BUFFER_STATE buffer ) is used to reclaim the storage associated with a buffer. (`buffer' can be NULL, in which case the routine does nothing.) You can also clear the current contents of a buffer using: -- Function: void yypush_buffer_state ( YY_BUFFER_STATE buffer ) This function pushes the new buffer state onto an internal stack. The pushed state becomes the new current state. The stack is maintained by flex and will grow as required. This function is intended to be used instead of `yy_switch_to_buffer', when you want to change states, but preserve the current state for later use. -- Function: void yypop_buffer_state ( ) This function removes the current state from the top of the stack, and deletes it by calling `yy_delete_buffer'. The next state on the stack, if any, becomes the new current state. -- Function: void yy_flush_buffer ( YY_BUFFER_STATE buffer ) This function discards the buffer's contents, so the next time the scanner attempts to match a token from the buffer, it will first fill the buffer anew using `YY_INPUT()'. -- Function: YY_BUFFER_STATE yy_new_buffer ( FILE *file, int size ) is an alias for `yy_create_buffer()', provided for compatibility with the C++ use of `new' and `delete' for creating and destroying dynamic objects. `YY_CURRENT_BUFFER' macro returns a `YY_BUFFER_STATE' handle to the current buffer. It should not be used as an lvalue. Here are two examples of using these features for writing a scanner which expands include files (the `<>' feature is discussed below). This first example uses yypush_buffer_state and yypop_buffer_state. Flex maintains the stack internally. /* the "incl" state is used for picking up the name * of an include file */ %x incl %% include BEGIN(incl); [a-z]+ ECHO; [^a-z\n]*\n? ECHO; [ \t]* /* eat the whitespace */ [^ \t\n]+ { /* got the include file name */ yyin = fopen( yytext, "r" ); if ( ! yyin ) error( ... ); yypush_buffer_state(yy_create_buffer( yyin, YY_BUF_SIZE )); BEGIN(INITIAL); } <> { yypop_buffer_state(); if ( !YY_CURRENT_BUFFER ) { yyterminate(); } } The second example, below, does the same thing as the previous example did, but manages its own input buffer stack manually (instead of letting flex do it). /* the "incl" state is used for picking up the name * of an include file */ %x incl %{ #define MAX_INCLUDE_DEPTH 10 YY_BUFFER_STATE include_stack[MAX_INCLUDE_DEPTH]; int include_stack_ptr = 0; %} %% include BEGIN(incl); [a-z]+ ECHO; [^a-z\n]*\n? ECHO; [ \t]* /* eat the whitespace */ [^ \t\n]+ { /* got the include file name */ if ( include_stack_ptr >= MAX_INCLUDE_DEPTH ) { fprintf( stderr, "Includes nested too deeply" ); exit( 1 ); } include_stack[include_stack_ptr++] = YY_CURRENT_BUFFER; yyin = fopen( yytext, "r" ); if ( ! yyin ) error( ... ); yy_switch_to_buffer( yy_create_buffer( yyin, YY_BUF_SIZE ) ); BEGIN(INITIAL); } <> { if ( --include_stack_ptr 0 ) { yyterminate(); } else { yy_delete_buffer( YY_CURRENT_BUFFER ); yy_switch_to_buffer( include_stack[include_stack_ptr] ); } } The following routines are available for setting up input buffers for scanning in-memory strings instead of files. All of them create a new input buffer for scanning the string, and return a corresponding `YY_BUFFER_STATE' handle (which you should delete with `yy_delete_buffer()' when done with it). They also switch to the new buffer using `yy_switch_to_buffer()', so the next call to `yylex()' will start scanning the string. -- Function: YY_BUFFER_STATE yy_scan_string ( const char *str ) scans a NUL-terminated string. -- Function: YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ) scans `len' bytes (including possibly `NUL's) starting at location `bytes'. Note that both of these functions create and scan a _copy_ of the string or bytes. (This may be desirable, since `yylex()' modifies the contents of the buffer it is scanning.) You can avoid the copy by using: -- Function: YY_BUFFER_STATE yy_scan_buffer (char *base, yy_size_t size) which scans in place the buffer starting at `base', consisting of `size' bytes, the last two bytes of which _must_ be `YY_END_OF_BUFFER_CHAR' (ASCII NUL). These last two bytes are not scanned; thus, scanning consists of `base[0]' through `base[size-2]', inclusive. If you fail to set up `base' in this manner (i.e., forget the final two `YY_END_OF_BUFFER_CHAR' bytes), then `yy_scan_buffer()' returns a NULL pointer instead of creating a new input buffer. -- Data type: yy_size_t is an integral type to which you can cast an integer expression reflecting the size of the buffer.  File: flex.info, Node: EOF, Next: Misc Macros, Prev: Multiple Input Buffers, Up: Top 12 End-of-File Rules ******************** The special rule `<>' indicates actions which are to be taken when an end-of-file is encountered and `yywrap()' returns non-zero (i.e., indicates no further files to process). The action must finish by doing one of the following things: * assigning `yyin' to a new input file (in previous versions of `flex', after doing the assignment you had to call the special action `YY_NEW_FILE'. This is no longer necessary.) * executing a `return' statement; * executing the special `yyterminate()' action. * or, switching to a new buffer using `yy_switch_to_buffer()' as shown in the example above. <> rules may not be used with other patterns; they may only be qualified with a list of start conditions. If an unqualified <> rule is given, it applies to _all_ start conditions which do not already have <> actions. To specify an <> rule for only the initial start condition, use: <> These rules are useful for catching things like unclosed comments. An example: %x quote %% ...other rules for dealing with quotes... <> { error( "unterminated quote" ); yyterminate(); } <> { if ( *++filelist ) yyin = fopen( *filelist, "r" ); else yyterminate(); }  File: flex.info, Node: Misc Macros, Next: User Values, Prev: EOF, Up: Top 13 Miscellaneous Macros *********************** The macro `YY_USER_ACTION' can be defined to provide an action which is always executed prior to the matched rule's action. For example, it could be #define'd to call a routine to convert yytext to lower-case. When `YY_USER_ACTION' is invoked, the variable `yy_act' gives the number of the matched rule (rules are numbered starting with 1). Suppose you want to profile how often each of your rules is matched. The following would do the trick: #define YY_USER_ACTION ++ctr[yy_act] where `ctr' is an array to hold the counts for the different rules. Note that the macro `YY_NUM_RULES' gives the total number of rules (including the default rule), even if you use `-s)', so a correct declaration for `ctr' is: int ctr[YY_NUM_RULES]; The macro `YY_USER_INIT' may be defined to provide an action which is always executed before the first scan (and before the scanner's internal initializations are done). For example, it could be used to call a routine to read in a data table or open a logging file. The macro `yy_set_interactive(is_interactive)' can be used to control whether the current buffer is considered "interactive". An interactive buffer is processed more slowly, but must be used when the scanner's input source is indeed interactive to avoid problems due to waiting to fill buffers (see the discussion of the `-I' flag in *note Scanner Options::). A non-zero value in the macro invocation marks the buffer as interactive, a zero value as non-interactive. Note that use of this macro overrides `%option always-interactive' or `%option never-interactive' (*note Scanner Options::). `yy_set_interactive()' must be invoked prior to beginning to scan the buffer that is (or is not) to be considered interactive. The macro `yy_set_bol(at_bol)' can be used to control whether the current buffer's scanning context for the next token match is done as though at the beginning of a line. A non-zero macro argument makes rules anchored with `^' active, while a zero argument makes `^' rules inactive. The macro `YY_AT_BOL()' returns true if the next token scanned from the current buffer will have `^' rules active, false otherwise. In the generated scanner, the actions are all gathered in one large switch statement and separated using `YY_BREAK', which may be redefined. By default, it is simply a `break', to separate each rule's action from the following rule's. Redefining `YY_BREAK' allows, for example, C++ users to #define YY_BREAK to do nothing (while being very careful that every rule ends with a `break' or a `return'!) to avoid suffering from unreachable statement warnings where because a rule's action ends with `return', the `YY_BREAK' is inaccessible.  File: flex.info, Node: User Values, Next: Yacc, Prev: Misc Macros, Up: Top 14 Values Available To the User ******************************* This chapter summarizes the various values available to the user in the rule actions. `char *yytext' holds the text of the current token. It may be modified but not lengthened (you cannot append characters to the end). If the special directive `%array' appears in the first section of the scanner description, then `yytext' is instead declared `char yytext[YYLMAX]', where `YYLMAX' is a macro definition that you can redefine in the first section if you don't like the default value (generally 8KB). Using `%array' results in somewhat slower scanners, but the value of `yytext' becomes immune to calls to `unput()', which potentially destroy its value when `yytext' is a character pointer. The opposite of `%array' is `%pointer', which is the default. You cannot use `%array' when generating C++ scanner classes (the `-+' flag). `int yyleng' holds the length of the current token. `FILE *yyin' is the file which by default `flex' reads from. It may be redefined but doing so only makes sense before scanning begins or after an EOF has been encountered. Changing it in the midst of scanning will have unexpected results since `flex' buffers its input; use `yyrestart()' instead. Once scanning terminates because an end-of-file has been seen, you can assign `yyin' at the new input file and then call the scanner again to continue scanning. `void yyrestart( FILE *new_file )' may be called to point `yyin' at the new input file. The switch-over to the new file is immediate (any previously buffered-up input is lost). Note that calling `yyrestart()' with `yyin' as an argument thus throws away the current input buffer and continues scanning the same input file. `FILE *yyout' is the file to which `ECHO' actions are done. It can be reassigned by the user. `YY_CURRENT_BUFFER' returns a `YY_BUFFER_STATE' handle to the current buffer. `YY_START' returns an integer value corresponding to the current start condition. You can subsequently use this value with `BEGIN' to return to that start condition.  File: flex.info, Node: Yacc, Next: Scanner Options, Prev: User Values, Up: Top 15 Interfacing with Yacc ************************ One of the main uses of `flex' is as a companion to the `yacc' parser-generator. `yacc' parsers expect to call a routine named `yylex()' to find the next input token. The routine is supposed to return the type of the next token as well as putting any associated value in the global `yylval'. To use `flex' with `yacc', one specifies the `-d' option to `yacc' to instruct it to generate the file `y.tab.h' containing definitions of all the `%tokens' appearing in the `yacc' input. This file is then included in the `flex' scanner. For example, if one of the tokens is `TOK_NUMBER', part of the scanner might look like: %{ #include "y.tab.h" %} %% [0-9]+ yylval = atoi( yytext ); return TOK_NUMBER;  File: flex.info, Node: Scanner Options, Next: Performance, Prev: Yacc, Up: Top 16 Scanner Options ****************** The various `flex' options are categorized by function in the following menu. If you want to lookup a particular option by name, *Note Index of Scanner Options::. * Menu: * Options for Specifying Filenames:: * Options Affecting Scanner Behavior:: * Code-Level And API Options:: * Options for Scanner Speed and Size:: * Debugging Options:: * Miscellaneous Options:: Even though there are many scanner options, a typical scanner might only specify the following options: %option 8bit reentrant bison-bridge %option warn nodefault %option yylineno %option outfile="scanner.c" header-file="scanner.h" The first line specifies the general type of scanner we want. The second line specifies that we are being careful. The third line asks flex to track line numbers. The last line tells flex what to name the files. (The options can be specified in any order. We just divided them.) `flex' also provides a mechanism for controlling options within the scanner specification itself, rather than from the flex command-line. This is done by including `%option' directives in the first section of the scanner specification. You can specify multiple options with a single `%option' directive, and multiple directives in the first section of your flex input file. Most options are given simply as names, optionally preceded by the word `no' (with no intervening whitespace) to negate their meaning. The names are the same as their long-option equivalents (but without the leading `--' ). `flex' scans your rule actions to determine whether you use the `REJECT' or `yymore()' features. The `REJECT' and `yymore' options are available to override its decision as to whether you use the options, either by setting them (e.g., `%option reject)' to indicate the feature is indeed used, or unsetting them to indicate it actually is not used (e.g., `%option noyymore)'. A number of options are available for lint purists who want to suppress the appearance of unneeded routines in the generated scanner. Each of the following, if unset (e.g., `%option nounput'), results in the corresponding routine not appearing in the generated scanner: input, unput yy_push_state, yy_pop_state, yy_top_state yy_scan_buffer, yy_scan_bytes, yy_scan_string yyget_extra, yyset_extra, yyget_leng, yyget_text, yyget_lineno, yyset_lineno, yyget_in, yyset_in, yyget_out, yyset_out, yyget_lval, yyset_lval, yyget_lloc, yyset_lloc, yyget_debug, yyset_debug (though `yy_push_state()' and friends won't appear anyway unless you use `%option stack)'.  File: flex.info, Node: Options for Specifying Filenames, Next: Options Affecting Scanner Behavior, Prev: Scanner Options, Up: Scanner Options 16.1 Options for Specifying Filenames ===================================== `--header-file=FILE, `%option header-file="FILE"'' instructs flex to write a C header to `FILE'. This file contains function prototypes, extern variables, and types used by the scanner. Only the external API is exported by the header file. Many macros that are usable from within scanner actions are not exported to the header file. This is due to namespace problems and the goal of a clean external API. While in the header, the macro `yyIN_HEADER' is defined, where `yy' is substituted with the appropriate prefix. The `--header-file' option is not compatible with the `--c++' option, since the C++ scanner provides its own header in `yyFlexLexer.h'. `-oFILE, --outfile=FILE, `%option outfile="FILE"'' directs flex to write the scanner to the file `FILE' instead of `lex.yy.c'. If you combine `--outfile' with the `--stdout' option, then the scanner is written to `stdout' but its `#line' directives (see the `-l' option above) refer to the file `FILE'. `-t, --stdout, `%option stdout'' instructs `flex' to write the scanner it generates to standard output instead of `lex.yy.c'. `-SFILE, --skel=FILE' overrides the default skeleton file from which `flex' constructs its scanners. You'll never need this option unless you are doing `flex' maintenance or development. `--tables-file=FILE' Write serialized scanner dfa tables to FILE. The generated scanner will not contain the tables, and requires them to be loaded at runtime. *Note serialization::. `--tables-verify' This option is for flex development. We document it here in case you stumble upon it by accident or in case you suspect some inconsistency in the serialized tables. Flex will serialize the scanner dfa tables but will also generate the in-code tables as it normally does. At runtime, the scanner will verify that the serialized tables match the in-code tables, instead of loading them.  File: flex.info, Node: Options Affecting Scanner Behavior, Next: Code-Level And API Options, Prev: Options for Specifying Filenames, Up: Scanner Options 16.2 Options Affecting Scanner Behavior ======================================= `-i, --case-insensitive, `%option case-insensitive'' instructs `flex' to generate a "case-insensitive" scanner. The case of letters given in the `flex' input patterns will be ignored, and tokens in the input will be matched regardless of case. The matched text given in `yytext' will have the preserved case (i.e., it will not be folded). For tricky behavior, see *note case and character ranges::. `-l, --lex-compat, `%option lex-compat'' turns on maximum compatibility with the original AT&T `lex' implementation. Note that this does not mean _full_ compatibility. Use of this option costs a considerable amount of performance, and it cannot be used with the `--c++', `--full', `--fast', `-Cf', or `-CF' options. For details on the compatibilities it provides, see *note Lex and Posix::. This option also results in the name `YY_FLEX_LEX_COMPAT' being `#define''d in the generated scanner. `-B, --batch, `%option batch'' instructs `flex' to generate a "batch" scanner, the opposite of _interactive_ scanners generated by `--interactive' (see below). In general, you use `-B' when you are _certain_ that your scanner will never be used interactively, and you want to squeeze a _little_ more performance out of it. If your goal is instead to squeeze out a _lot_ more performance, you should be using the `-Cf' or `-CF' options, which turn on `--batch' automatically anyway. `-I, --interactive, `%option interactive'' instructs `flex' to generate an interactive scanner. An interactive scanner is one that only looks ahead to decide what token has been matched if it absolutely must. It turns out that always looking one extra character ahead, even if the scanner has already seen enough text to disambiguate the current token, is a bit faster than only looking ahead when necessary. But scanners that always look ahead give dreadful interactive performance; for example, when a user types a newline, it is not recognized as a newline token until they enter _another_ token, which often means typing in another whole line. `flex' scanners default to `interactive' unless you use the `-Cf' or `-CF' table-compression options (*note Performance::). That's because if you're looking for high-performance you should be using one of these options, so if you didn't, `flex' assumes you'd rather trade off a bit of run-time performance for intuitive interactive behavior. Note also that you _cannot_ use `--interactive' in conjunction with `-Cf' or `-CF'. Thus, this option is not really needed; it is on by default for all those cases in which it is allowed. You can force a scanner to _not_ be interactive by using `--batch' `-7, --7bit, `%option 7bit'' instructs `flex' to generate a 7-bit scanner, i.e., one which can only recognize 7-bit characters in its input. The advantage of using `--7bit' is that the scanner's tables can be up to half the size of those generated using the `--8bit'. The disadvantage is that such scanners often hang or crash if their input contains an 8-bit character. Note, however, that unless you generate your scanner using the `-Cf' or `-CF' table compression options, use of `--7bit' will save only a small amount of table space, and make your scanner considerably less portable. `Flex''s default behavior is to generate an 8-bit scanner unless you use the `-Cf' or `-CF', in which case `flex' defaults to generating 7-bit scanners unless your site was always configured to generate 8-bit scanners (as will often be the case with non-USA sites). You can tell whether flex generated a 7-bit or an 8-bit scanner by inspecting the flag summary in the `--verbose' output as described above. Note that if you use `-Cfe' or `-CFe' `flex' still defaults to generating an 8-bit scanner, since usually with these compression options full 8-bit tables are not much more expensive than 7-bit tables. `-8, --8bit, `%option 8bit'' instructs `flex' to generate an 8-bit scanner, i.e., one which can recognize 8-bit characters. This flag is only needed for scanners generated using `-Cf' or `-CF', as otherwise flex defaults to generating an 8-bit scanner anyway. See the discussion of `--7bit' above for `flex''s default behavior and the tradeoffs between 7-bit and 8-bit scanners. `--default, `%option default'' generate the default rule. `--always-interactive, `%option always-interactive'' instructs flex to generate a scanner which always considers its input _interactive_. Normally, on each new input file the scanner calls `isatty()' in an attempt to determine whether the scanner's input source is interactive and thus should be read a character at a time. When this option is used, however, then no such call is made. `--never-interactive, `--never-interactive'' instructs flex to generate a scanner which never considers its input interactive. This is the opposite of `always-interactive'. `-X, --posix, `%option posix'' turns on maximum compatibility with the POSIX 1003.2-1992 definition of `lex'. Since `flex' was originally designed to implement the POSIX definition of `lex' this generally involves very few changes in behavior. At the current writing the known differences between `flex' and the POSIX standard are: * In POSIX and AT&T `lex', the repeat operator, `{}', has lower precedence than concatenation (thus `ab{3}' yields `ababab'). Most POSIX utilities use an Extended Regular Expression (ERE) precedence that has the precedence of the repeat operator higher than concatenation (which causes `ab{3}' to yield `abbb'). By default, `flex' places the precedence of the repeat operator higher than concatenation which matches the ERE processing of other POSIX utilities. When either `--posix' or `-l' are specified, `flex' will use the traditional AT&T and POSIX-compliant precedence for the repeat operator where concatenation has higher precedence than the repeat operator. `--stack, `%option stack'' enables the use of start condition stacks (*note Start Conditions::). `--stdinit, `%option stdinit'' if set (i.e., %option stdinit) initializes `yyin' and `yyout' to `stdin' and `stdout', instead of the default of `NULL'. Some existing `lex' programs depend on this behavior, even though it is not compliant with ANSI C, which does not require `stdin' and `stdout' to be compile-time constant. In a reentrant scanner, however, this is not a problem since initialization is performed in `yylex_init' at runtime. `--yylineno, `%option yylineno'' directs `flex' to generate a scanner that maintains the number of the current line read from its input in the global variable `yylineno'. This option is implied by `%option lex-compat'. In a reentrant C scanner, the macro `yylineno' is accessible regardless of the value of `%option yylineno', however, its value is not modified by `flex' unless `%option yylineno' is enabled. `--yywrap, `%option yywrap'' if unset (i.e., `--noyywrap)', makes the scanner not call `yywrap()' upon an end-of-file, but simply assume that there are no more files to scan (until the user points `yyin' at a new file and calls `yylex()' again).  File: flex.info, Node: Code-Level And API Options, Next: Options for Scanner Speed and Size, Prev: Options Affecting Scanner Behavior, Up: Scanner Options 16.3 Code-Level And API Options =============================== `--ansi-definitions, `%option ansi-definitions'' instruct flex to generate ANSI C99 definitions for functions. This option is enabled by default. If `%option noansi-definitions' is specified, then the obsolete style is generated. `--ansi-prototypes, `%option ansi-prototypes'' instructs flex to generate ANSI C99 prototypes for functions. This option is enabled by default. If `noansi-prototypes' is specified, then prototypes will have empty parameter lists. `--bison-bridge, `%option bison-bridge'' instructs flex to generate a C scanner that is meant to be called by a `GNU bison' parser. The scanner has minor API changes for `bison' compatibility. In particular, the declaration of `yylex' is modified to take an additional parameter, `yylval'. *Note Bison Bridge::. `--bison-locations, `%option bison-locations'' instruct flex that `GNU bison' `%locations' are being used. This means `yylex' will be passed an additional parameter, `yylloc'. This option implies `%option bison-bridge'. *Note Bison Bridge::. `-L, --noline, `%option noline'' instructs `flex' not to generate `#line' directives. Without this option, `flex' peppers the generated scanner with `#line' directives so error messages in the actions will be correctly located with respect to either the original `flex' input file (if the errors are due to code in the input file), or `lex.yy.c' (if the errors are `flex''s fault - you should report these sorts of errors to the email address given in *note Reporting Bugs::). `-R, --reentrant, `%option reentrant'' instructs flex to generate a reentrant C scanner. The generated scanner may safely be used in a multi-threaded environment. The API for a reentrant scanner is different than for a non-reentrant scanner *note Reentrant::). Because of the API difference between reentrant and non-reentrant `flex' scanners, non-reentrant flex code must be modified before it is suitable for use with this option. This option is not compatible with the `--c++' option. The option `--reentrant' does not affect the performance of the scanner. `-+, --c++, `%option c++'' specifies that you want flex to generate a C++ scanner class. *Note Cxx::, for details. `--array, `%option array'' specifies that you want yytext to be an array instead of a char* `--pointer, `%option pointer'' specify that `yytext' should be a `char *', not an array. This default is `char *'. `-PPREFIX, --prefix=PREFIX, `%option prefix="PREFIX"'' changes the default `yy' prefix used by `flex' for all globally-visible variable and function names to instead be `PREFIX'. For example, `--prefix=foo' changes the name of `yytext' to `footext'. It also changes the name of the default output file from `lex.yy.c' to `lex.foo.c'. Here is a partial list of the names affected: yy_create_buffer yy_delete_buffer yy_flex_debug yy_init_buffer yy_flush_buffer yy_load_buffer_state yy_switch_to_buffer yyin yyleng yylex yylineno yyout yyrestart yytext yywrap yyalloc yyrealloc yyfree (If you are using a C++ scanner, then only `yywrap' and `yyFlexLexer' are affected.) Within your scanner itself, you can still refer to the global variables and functions using either version of their name; but externally, they have the modified name. This option lets you easily link together multiple `flex' programs into the same executable. Note, though, that using this option also renames `yywrap()', so you now _must_ either provide your own (appropriately-named) version of the routine for your scanner, or use `%option noyywrap', as linking with `-lfl' no longer provides one for you by default. `--main, `%option main'' directs flex to provide a default `main()' program for the scanner, which simply calls `yylex()'. This option implies `noyywrap' (see below). `--nounistd, `%option nounistd'' suppresses inclusion of the non-ANSI header file `unistd.h'. This option is meant to target environments in which `unistd.h' does not exist. Be aware that certain options may cause flex to generate code that relies on functions normally found in `unistd.h', (e.g. `isatty()', `read()'.) If you wish to use these functions, you will have to inform your compiler where to find them. *Note option-always-interactive::. *Note option-read::. `--yyclass=NAME, `%option yyclass="NAME"'' only applies when generating a C++ scanner (the `--c++' option). It informs `flex' that you have derived `NAME' as a subclass of `yyFlexLexer', so `flex' will place your actions in the member function `foo::yylex()' instead of `yyFlexLexer::yylex()'. It also generates a `yyFlexLexer::yylex()' member function that emits a run-time error (by invoking `yyFlexLexer::LexerError())' if called. *Note Cxx::.  File: flex.info, Node: Options for Scanner Speed and Size, Next: Debugging Options, Prev: Code-Level And API Options, Up: Scanner Options 16.4 Options for Scanner Speed and Size ======================================= `-C[aefFmr]' controls the degree of table compression and, more generally, trade-offs between small scanners and fast scanners. `-C' A lone `-C' specifies that the scanner tables should be compressed but neither equivalence classes nor meta-equivalence classes should be used. `-Ca, --align, `%option align'' ("align") instructs flex to trade off larger tables in the generated scanner for faster performance because the elements of the tables are better aligned for memory access and computation. On some RISC architectures, fetching and manipulating longwords is more efficient than with smaller-sized units such as shortwords. This option can quadruple the size of the tables used by your scanner. `-Ce, --ecs, `%option ecs'' directs `flex' to construct "equivalence classes", i.e., sets of characters which have identical lexical properties (for example, if the only appearance of digits in the `flex' input is in the character class "[0-9]" then the digits '0', '1', ..., '9' will all be put in the same equivalence class). Equivalence classes usually give dramatic reductions in the final table/object file sizes (typically a factor of 2-5) and are pretty cheap performance-wise (one array look-up per character scanned). `-Cf' specifies that the "full" scanner tables should be generated - `flex' should not compress the tables by taking advantages of similar transition functions for different states. `-CF' specifies that the alternate fast scanner representation (described above under the `--fast' flag) should be used. This option cannot be used with `--c++'. `-Cm, --meta-ecs, `%option meta-ecs'' directs `flex' to construct "meta-equivalence classes", which are sets of equivalence classes (or characters, if equivalence classes are not being used) that are commonly used together. Meta-equivalence classes are often a big win when using compressed tables, but they have a moderate performance impact (one or two `if' tests and one array look-up per character scanned). `-Cr, --read, `%option read'' causes the generated scanner to _bypass_ use of the standard I/O library (`stdio') for input. Instead of calling `fread()' or `getc()', the scanner will use the `read()' system call, resulting in a performance gain which varies from system to system, but in general is probably negligible unless you are also using `-Cf' or `-CF'. Using `-Cr' can cause strange behavior if, for example, you read from `yyin' using `stdio' prior to calling the scanner (because the scanner will miss whatever text your previous reads left in the `stdio' input buffer). `-Cr' has no effect if you define `YY_INPUT()' (*note Generated Scanner::). The options `-Cf' or `-CF' and `-Cm' do not make sense together - there is no opportunity for meta-equivalence classes if the table is not being compressed. Otherwise the options may be freely mixed, and are cumulative. The default setting is `-Cem', which specifies that `flex' should generate equivalence classes and meta-equivalence classes. This setting provides the highest degree of table compression. You can trade off faster-executing scanners at the cost of larger tables with the following generally being true: slowest & smallest -Cem -Cm -Ce -C -C{f,F}e -C{f,F} -C{f,F}a fastest & largest Note that scanners with the smallest tables are usually generated and compiled the quickest, so during development you will usually want to use the default, maximal compression. `-Cfe' is often a good compromise between speed and size for production scanners. `-f, --full, `%option full'' specifies "fast scanner". No table compression is done and `stdio' is bypassed. The result is large but fast. This option is equivalent to `--Cfr' `-F, --fast, `%option fast'' specifies that the _fast_ scanner table representation should be used (and `stdio' bypassed). This representation is about as fast as the full table representation `--full', and for some sets of patterns will be considerably smaller (and for others, larger). In general, if the pattern set contains both _keywords_ and a catch-all, _identifier_ rule, such as in the set: "case" return TOK_CASE; "switch" return TOK_SWITCH; ... "default" return TOK_DEFAULT; [a-z]+ return TOK_ID; then you're better off using the full table representation. If only the _identifier_ rule is present and you then use a hash table or some such to detect the keywords, you're better off using `--fast'. This option is equivalent to `-CFr'. It cannot be used with `--c++'.  File: flex.info, Node: Debugging Options, Next: Miscellaneous Options, Prev: Options for Scanner Speed and Size, Up: Scanner Options 16.5 Debugging Options ====================== `-b, --backup, `%option backup'' Generate backing-up information to `lex.backup'. This is a list of scanner states which require backing up and the input characters on which they do so. By adding rules one can remove backing-up states. If _all_ backing-up states are eliminated and `-Cf' or `-CF' is used, the generated scanner will run faster (see the `--perf-report' flag). Only users who wish to squeeze every last cycle out of their scanners need worry about this option. (*note Performance::). `-d, --debug, `%option debug'' makes the generated scanner run in "debug" mode. Whenever a pattern is recognized and the global variable `yy_flex_debug' is non-zero (which is the default), the scanner will write to `stderr' a line of the form: -accepting rule at line 53 ("the matched text") The line number refers to the location of the rule in the file defining the scanner (i.e., the file that was fed to flex). Messages are also generated when the scanner backs up, accepts the default rule, reaches the end of its input buffer (or encounters a NUL; at this point, the two look the same as far as the scanner's concerned), or reaches an end-of-file. `-p, --perf-report, `%option perf-report'' generates a performance report to `stderr'. The report consists of comments regarding features of the `flex' input file which will cause a serious loss of performance in the resulting scanner. If you give the flag twice, you will also get comments regarding features that lead to minor performance losses. Note that the use of `REJECT', and variable trailing context (*note Limitations::) entails a substantial performance penalty; use of `yymore()', the `^' operator, and the `--interactive' flag entail minor performance penalties. `-s, --nodefault, `%option nodefault'' causes the _default rule_ (that unmatched scanner input is echoed to `stdout)' to be suppressed. If the scanner encounters input that does not match any of its rules, it aborts with an error. This option is useful for finding holes in a scanner's rule set. `-T, --trace, `%option trace'' makes `flex' run in "trace" mode. It will generate a lot of messages to `stderr' concerning the form of the input and the resultant non-deterministic and deterministic finite automata. This option is mostly for use in maintaining `flex'. `-w, --nowarn, `%option nowarn'' suppresses warning messages. `-v, --verbose, `%option verbose'' specifies that `flex' should write to `stderr' a summary of statistics regarding the scanner it generates. Most of the statistics are meaningless to the casual `flex' user, but the first line identifies the version of `flex' (same as reported by `--version'), and the next line the flags used when generating the scanner, including those that are on by default. `--warn, `%option warn'' warn about certain things. In particular, if the default rule can be matched but no default rule has been given, the flex will warn you. We recommend using this option always.  File: flex.info, Node: Miscellaneous Options, Prev: Debugging Options, Up: Scanner Options 16.6 Miscellaneous Options ========================== `-c' A do-nothing option included for POSIX compliance. `-h, -?, --help' generates a "help" summary of `flex''s options to `stdout' and then exits. `-n' Another do-nothing option included for POSIX compliance. `-V, --version' prints the version number to `stdout' and exits.  File: flex.info, Node: Performance, Next: Cxx, Prev: Scanner Options, Up: Top 17 Performance Considerations ***************************** The main design goal of `flex' is that it generate high-performance scanners. It has been optimized for dealing well with large sets of rules. Aside from the effects on scanner speed of the table compression `-C' options outlined above, there are a number of options/actions which degrade performance. These are, from most expensive to least: REJECT arbitrary trailing context pattern sets that require backing up %option yylineno %array %option interactive %option always-interactive ^ beginning-of-line operator yymore() with the first two all being quite expensive and the last two being quite cheap. Note also that `unput()' is implemented as a routine call that potentially does quite a bit of work, while `yyless()' is a quite-cheap macro. So if you are just putting back some excess text you scanned, use `yyless()'. `REJECT' should be avoided at all costs when performance is important. It is a particularly expensive option. There is one case when `%option yylineno' can be expensive. That is when your patterns match long tokens that could _possibly_ contain a newline character. There is no performance penalty for rules that can not possibly match newlines, since flex does not need to check them for newlines. In general, you should avoid rules such as `[^f]+', which match very long tokens, including newlines, and may possibly match your entire file! A better approach is to separate `[^f]+' into two rules: %option yylineno %% [^f\n]+ \n+ The above scanner does not incur a performance penalty. Getting rid of backing up is messy and often may be an enormous amount of work for a complicated scanner. In principal, one begins by using the `-b' flag to generate a `lex.backup' file. For example, on the input: %% foo return TOK_KEYWORD; foobar return TOK_KEYWORD; the file looks like: State #6 is non-accepting - associated rule line numbers: 2 3 out-transitions: [ o ] jam-transitions: EOF [ \001-n p-\177 ] State #8 is non-accepting - associated rule line numbers: 3 out-transitions: [ a ] jam-transitions: EOF [ \001-` b-\177 ] State #9 is non-accepting - associated rule line numbers: 3 out-transitions: [ r ] jam-transitions: EOF [ \001-q s-\177 ] Compressed tables always back up. The first few lines tell us that there's a scanner state in which it can make a transition on an 'o' but not on any other character, and that in that state the currently scanned text does not match any rule. The state occurs when trying to match the rules found at lines 2 and 3 in the input file. If the scanner is in that state and then reads something other than an 'o', it will have to back up to find a rule which is matched. With a bit of headscratching one can see that this must be the state it's in when it has seen `fo'. When this has happened, if anything other than another `o' is seen, the scanner will have to back up to simply match the `f' (by the default rule). The comment regarding State #8 indicates there's a problem when `foob' has been scanned. Indeed, on any character other than an `a', the scanner will have to back up to accept "foo". Similarly, the comment for State #9 concerns when `fooba' has been scanned and an `r' does not follow. The final comment reminds us that there's no point going to all the trouble of removing backing up from the rules unless we're using `-Cf' or `-CF', since there's no performance gain doing so with compressed scanners. The way to remove the backing up is to add "error" rules: %% foo return TOK_KEYWORD; foobar return TOK_KEYWORD; fooba | foob | fo { /* false alarm, not really a keyword */ return TOK_ID; } Eliminating backing up among a list of keywords can also be done using a "catch-all" rule: %% foo return TOK_KEYWORD; foobar return TOK_KEYWORD; [a-z]+ return TOK_ID; This is usually the best solution when appropriate. Backing up messages tend to cascade. With a complicated set of rules it's not uncommon to get hundreds of messages. If one can decipher them, though, it often only takes a dozen or so rules to eliminate the backing up (though it's easy to make a mistake and have an error rule accidentally match a valid token. A possible future `flex' feature will be to automatically add rules to eliminate backing up). It's important to keep in mind that you gain the benefits of eliminating backing up only if you eliminate _every_ instance of backing up. Leaving just one means you gain nothing. _Variable_ trailing context (where both the leading and trailing parts do not have a fixed length) entails almost the same performance loss as `REJECT' (i.e., substantial). So when possible a rule like: %% mouse|rat/(cat|dog) run(); is better written: %% mouse/cat|dog run(); rat/cat|dog run(); or as %% mouse|rat/cat run(); mouse|rat/dog run(); Note that here the special '|' action does _not_ provide any savings, and can even make things worse (*note Limitations::). Another area where the user can increase a scanner's performance (and one that's easier to implement) arises from the fact that the longer the tokens matched, the faster the scanner will run. This is because with long tokens the processing of most input characters takes place in the (short) inner scanning loop, and does not often have to go through the additional work of setting up the scanning environment (e.g., `yytext') for the action. Recall the scanner for C comments: %x comment %% int line_num = 1; "/*" BEGIN(comment); [^*\n]* "*"+[^*/\n]* \n ++line_num; "*"+"/" BEGIN(INITIAL); This could be sped up by writing it as: %x comment %% int line_num = 1; "/*" BEGIN(comment); [^*\n]* [^*\n]*\n ++line_num; "*"+[^*/\n]* "*"+[^*/\n]*\n ++line_num; "*"+"/" BEGIN(INITIAL); Now instead of each newline requiring the processing of another action, recognizing the newlines is distributed over the other rules to keep the matched text as long as possible. Note that _adding_ rules does _not_ slow down the scanner! The speed of the scanner is independent of the number of rules or (modulo the considerations given at the beginning of this section) how complicated the rules are with regard to operators such as `*' and `|'. A final example in speeding up a scanner: suppose you want to scan through a file containing identifiers and keywords, one per line and with no other extraneous characters, and recognize all the keywords. A natural first approach is: %% asm | auto | break | ... etc ... volatile | while /* it's a keyword */ .|\n /* it's not a keyword */ To eliminate the back-tracking, introduce a catch-all rule: %% asm | auto | break | ... etc ... volatile | while /* it's a keyword */ [a-z]+ | .|\n /* it's not a keyword */ Now, if it's guaranteed that there's exactly one word per line, then we can reduce the total number of matches by a half by merging in the recognition of newlines with that of the other tokens: %% asm\n | auto\n | break\n | ... etc ... volatile\n | while\n /* it's a keyword */ [a-z]+\n | .|\n /* it's not a keyword */ One has to be careful here, as we have now reintroduced backing up into the scanner. In particular, while _we_ know that there will never be any characters in the input stream other than letters or newlines, `flex' can't figure this out, and it will plan for possibly needing to back up when it has scanned a token like `auto' and then the next character is something other than a newline or a letter. Previously it would then just match the `auto' rule and be done, but now it has no `auto' rule, only a `auto\n' rule. To eliminate the possibility of backing up, we could either duplicate all rules but without final newlines, or, since we never expect to encounter such an input and therefore don't how it's classified, we can introduce one more catch-all rule, this one which doesn't include a newline: %% asm\n | auto\n | break\n | ... etc ... volatile\n | while\n /* it's a keyword */ [a-z]+\n | [a-z]+ | .|\n /* it's not a keyword */ Compiled with `-Cf', this is about as fast as one can get a `flex' scanner to go for this particular problem. A final note: `flex' is slow when matching `NUL's, particularly when a token contains multiple `NUL's. It's best to write rules which match _short_ amounts of text if it's anticipated that the text will often include `NUL's. Another final note regarding performance: as mentioned in *note Matching::, dynamically resizing `yytext' to accommodate huge tokens is a slow process because it presently requires that the (huge) token be rescanned from the beginning. Thus if performance is vital, you should attempt to match "large" quantities of text but not "huge" quantities, where the cutoff between the two is at about 8K characters per token.  File: flex.info, Node: Cxx, Next: Reentrant, Prev: Performance, Up: Top 18 Generating C++ Scanners ************************** *IMPORTANT*: the present form of the scanning class is _experimental_ and may change considerably between major releases. `flex' provides two different ways to generate scanners for use with C++. The first way is to simply compile a scanner generated by `flex' using a C++ compiler instead of a C compiler. You should not encounter any compilation errors (*note Reporting Bugs::). You can then use C++ code in your rule actions instead of C code. Note that the default input source for your scanner remains `yyin', and default echoing is still done to `yyout'. Both of these remain `FILE *' variables and not C++ _streams_. You can also use `flex' to generate a C++ scanner class, using the `-+' option (or, equivalently, `%option c++)', which is automatically specified if the name of the `flex' executable ends in a '+', such as `flex++'. When using this option, `flex' defaults to generating the scanner to the file `lex.yy.cc' instead of `lex.yy.c'. The generated scanner includes the header file `FlexLexer.h', which defines the interface to two C++ classes. The first class, `FlexLexer', provides an abstract base class defining the general scanner class interface. It provides the following member functions: `const char* YYText()' returns the text of the most recently matched token, the equivalent of `yytext'. `int YYLeng()' returns the length of the most recently matched token, the equivalent of `yyleng'. `int lineno() const' returns the current input line number (see `%option yylineno)', or `1' if `%option yylineno' was not used. `void set_debug( int flag )' sets the debugging flag for the scanner, equivalent to assigning to `yy_flex_debug' (*note Scanner Options::). Note that you must build the scanner using `%option debug' to include debugging information in it. `int debug() const' returns the current setting of the debugging flag. Also provided are member functions equivalent to `yy_switch_to_buffer()', `yy_create_buffer()' (though the first argument is an `istream*' object pointer and not a `FILE*)', `yy_flush_buffer()', `yy_delete_buffer()', and `yyrestart()' (again, the first argument is a `istream*' object pointer). The second class defined in `FlexLexer.h' is `yyFlexLexer', which is derived from `FlexLexer'. It defines the following additional member functions: `yyFlexLexer( istream* arg_yyin = 0, ostream* arg_yyout = 0 )' constructs a `yyFlexLexer' object using the given streams for input and output. If not specified, the streams default to `cin' and `cout', respectively. `virtual int yylex()' performs the same role is `yylex()' does for ordinary `flex' scanners: it scans the input stream, consuming tokens, until a rule's action returns a value. If you derive a subclass `S' from `yyFlexLexer' and want to access the member functions and variables of `S' inside `yylex()', then you need to use `%option yyclass="S"' to inform `flex' that you will be using that subclass instead of `yyFlexLexer'. In this case, rather than generating `yyFlexLexer::yylex()', `flex' generates `S::yylex()' (and also generates a dummy `yyFlexLexer::yylex()' that calls `yyFlexLexer::LexerError()' if called). `virtual void switch_streams(istream* new_in = 0, ostream* new_out = 0)' reassigns `yyin' to `new_in' (if non-null) and `yyout' to `new_out' (if non-null), deleting the previous input buffer if `yyin' is reassigned. `int yylex( istream* new_in, ostream* new_out = 0 )' first switches the input streams via `switch_streams( new_in, new_out )' and then returns the value of `yylex()'. In addition, `yyFlexLexer' defines the following protected virtual functions which you can redefine in derived classes to tailor the scanner: `virtual int LexerInput( char* buf, int max_size )' reads up to `max_size' characters into `buf' and returns the number of characters read. To indicate end-of-input, return 0 characters. Note that `interactive' scanners (see the `-B' and `-I' flags in *note Scanner Options::) define the macro `YY_INTERACTIVE'. If you redefine `LexerInput()' and need to take different actions depending on whether or not the scanner might be scanning an interactive input source, you can test for the presence of this name via `#ifdef' statements. `virtual void LexerOutput( const char* buf, int size )' writes out `size' characters from the buffer `buf', which, while `NUL'-terminated, may also contain internal `NUL's if the scanner's rules can match text with `NUL's in them. `virtual void LexerError( const char* msg )' reports a fatal error message. The default version of this function writes the message to the stream `cerr' and exits. Note that a `yyFlexLexer' object contains its _entire_ scanning state. Thus you can use such objects to create reentrant scanners, but see also *note Reentrant::. You can instantiate multiple instances of the same `yyFlexLexer' class, and you can also combine multiple C++ scanner classes together in the same program using the `-P' option discussed above. Finally, note that the `%array' feature is not available to C++ scanner classes; you must use `%pointer' (the default). Here is an example of a simple C++ scanner: // An example of using the flex C++ scanner class. %{ #include using namespace std; int mylineno = 0; %} %option noyywrap string \"[^\n"]+\" ws [ \t]+ alpha [A-Za-z] dig [0-9] name ({alpha}|{dig}|\$)({alpha}|{dig}|[_.\-/$])* num1 [-+]?{dig}+\.?([eE][-+]?{dig}+)? num2 [-+]?{dig}*\.{dig}+([eE][-+]?{dig}+)? number {num1}|{num2} %% {ws} /* skip blanks and tabs */ "/*" { int c; while((c = yyinput()) != 0) { if(c == '\n') ++mylineno; else if(c == '*') { if((c = yyinput()) == '/') break; else unput(c); } } } {number} cout << "number " << YYText() << '\n'; \n mylineno++; {name} cout << "name " << YYText() << '\n'; {string} cout << "string " << YYText() << '\n'; %% int main( int /* argc */, char** /* argv */ ) { FlexLexer* lexer = new yyFlexLexer; while(lexer->yylex() != 0) ; return 0; } If you want to create multiple (different) lexer classes, you use the `-P' flag (or the `prefix=' option) to rename each `yyFlexLexer' to some other `xxFlexLexer'. You then can include `' in your other sources once per lexer class, first renaming `yyFlexLexer' as follows: #undef yyFlexLexer #define yyFlexLexer xxFlexLexer #include #undef yyFlexLexer #define yyFlexLexer zzFlexLexer #include if, for example, you used `%option prefix="xx"' for one of your scanners and `%option prefix="zz"' for the other.  File: flex.info, Node: Reentrant, Next: Lex and Posix, Prev: Cxx, Up: Top 19 Reentrant C Scanners *********************** `flex' has the ability to generate a reentrant C scanner. This is accomplished by specifying `%option reentrant' (`-R') The generated scanner is both portable, and safe to use in one or more separate threads of control. The most common use for reentrant scanners is from within multi-threaded applications. Any thread may create and execute a reentrant `flex' scanner without the need for synchronization with other threads. * Menu: * Reentrant Uses:: * Reentrant Overview:: * Reentrant Example:: * Reentrant Detail:: * Reentrant Functions::  File: flex.info, Node: Reentrant Uses, Next: Reentrant Overview, Prev: Reentrant, Up: Reentrant 19.1 Uses for Reentrant Scanners ================================ However, there are other uses for a reentrant scanner. For example, you could scan two or more files simultaneously to implement a `diff' at the token level (i.e., instead of at the character level): /* Example of maintaining more than one active scanner. */ do { int tok1, tok2; tok1 = yylex( scanner_1 ); tok2 = yylex( scanner_2 ); if( tok1 != tok2 ) printf("Files are different."); } while ( tok1 && tok2 ); Another use for a reentrant scanner is recursion. (Note that a recursive scanner can also be created using a non-reentrant scanner and buffer states. *Note Multiple Input Buffers::.) The following crude scanner supports the `eval' command by invoking another instance of itself. /* Example of recursive invocation. */ %option reentrant %% "eval(".+")" { yyscan_t scanner; YY_BUFFER_STATE buf; yylex_init( &scanner ); yytext[yyleng-1] = ' '; buf = yy_scan_string( yytext + 5, scanner ); yylex( scanner ); yy_delete_buffer(buf,scanner); yylex_destroy( scanner ); } ... %%  File: flex.info, Node: Reentrant Overview, Next: Reentrant Example, Prev: Reentrant Uses, Up: Reentrant 19.2 An Overview of the Reentrant API ===================================== The API for reentrant scanners is different than for non-reentrant scanners. Here is a quick overview of the API: `%option reentrant' must be specified. * All functions take one additional argument: `yyscanner' * All global variables are replaced by their macro equivalents. (We tell you this because it may be important to you during debugging.) * `yylex_init' and `yylex_destroy' must be called before and after `yylex', respectively. * Accessor methods (get/set functions) provide access to common `flex' variables. * User-specific data can be stored in `yyextra'.  File: flex.info, Node: Reentrant Example, Next: Reentrant Detail, Prev: Reentrant Overview, Up: Reentrant 19.3 Reentrant Example ====================== First, an example of a reentrant scanner: /* This scanner prints "//" comments. */ %option reentrant stack noyywrap %x COMMENT %% "//" yy_push_state( COMMENT, yyscanner); .|\n \n yy_pop_state( yyscanner ); [^\n]+ fprintf( yyout, "%s\n", yytext); %% int main ( int argc, char * argv[] ) { yyscan_t scanner; yylex_init ( &scanner ); yylex ( scanner ); yylex_destroy ( scanner ); return 0; }  File: flex.info, Node: Reentrant Detail, Next: Reentrant Functions, Prev: Reentrant Example, Up: Reentrant 19.4 The Reentrant API in Detail ================================ Here are the things you need to do or know to use the reentrant C API of `flex'. * Menu: * Specify Reentrant:: * Extra Reentrant Argument:: * Global Replacement:: * Init and Destroy Functions:: * Accessor Methods:: * Extra Data:: * About yyscan_t::  File: flex.info, Node: Specify Reentrant, Next: Extra Reentrant Argument, Prev: Reentrant Detail, Up: Reentrant Detail 19.4.1 Declaring a Scanner As Reentrant --------------------------------------- %option reentrant (-reentrant) must be specified. Notice that `%option reentrant' is specified in the above example (*note Reentrant Example::. Had this option not been specified, `flex' would have happily generated a non-reentrant scanner without complaining. You may explicitly specify `%option noreentrant', if you do _not_ want a reentrant scanner, although it is not necessary. The default is to generate a non-reentrant scanner.  File: flex.info, Node: Extra Reentrant Argument, Next: Global Replacement, Prev: Specify Reentrant, Up: Reentrant Detail 19.4.2 The Extra Argument ------------------------- All functions take one additional argument: `yyscanner'. Notice that the calls to `yy_push_state' and `yy_pop_state' both have an argument, `yyscanner' , that is not present in a non-reentrant scanner. Here are the declarations of `yy_push_state' and `yy_pop_state' in the reentrant scanner: static void yy_push_state ( int new_state , yyscan_t yyscanner ) ; static void yy_pop_state ( yyscan_t yyscanner ) ; Notice that the argument `yyscanner' appears in the declaration of both functions. In fact, all `flex' functions in a reentrant scanner have this additional argument. It is always the last argument in the argument list, it is always of type `yyscan_t' (which is typedef'd to `void *') and it is always named `yyscanner'. As you may have guessed, `yyscanner' is a pointer to an opaque data structure encapsulating the current state of the scanner. For a list of function declarations, see *note Reentrant Functions::. Note that preprocessor macros, such as `BEGIN', `ECHO', and `REJECT', do not take this additional argument.  File: flex.info, Node: Global Replacement, Next: Init and Destroy Functions, Prev: Extra Reentrant Argument, Up: Reentrant Detail 19.4.3 Global Variables Replaced By Macros ------------------------------------------ All global variables in traditional flex have been replaced by macro equivalents. Note that in the above example, `yyout' and `yytext' are not plain variables. These are macros that will expand to their equivalent lvalue. All of the familiar `flex' globals have been replaced by their macro equivalents. In particular, `yytext', `yyleng', `yylineno', `yyin', `yyout', `yyextra', `yylval', and `yylloc' are macros. You may safely use these macros in actions as if they were plain variables. We only tell you this so you don't expect to link to these variables externally. Currently, each macro expands to a member of an internal struct, e.g., #define yytext (((struct yyguts_t*)yyscanner)->yytext_r) One important thing to remember about `yytext' and friends is that `yytext' is not a global variable in a reentrant scanner, you can not access it directly from outside an action or from other functions. You must use an accessor method, e.g., `yyget_text', to accomplish this. (See below).  File: flex.info, Node: Init and Destroy Functions, Next: Accessor Methods, Prev: Global Replacement, Up: Reentrant Detail 19.4.4 Init and Destroy Functions --------------------------------- `yylex_init' and `yylex_destroy' must be called before and after `yylex', respectively. int yylex_init ( yyscan_t * ptr_yy_globals ) ; int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t * ptr_yy_globals ) ; int yylex ( yyscan_t yyscanner ) ; int yylex_destroy ( yyscan_t yyscanner ) ; The function `yylex_init' must be called before calling any other function. The argument to `yylex_init' is the address of an uninitialized pointer to be filled in by `yylex_init', overwriting any previous contents. The function `yylex_init_extra' may be used instead, taking as its first argument a variable of type `YY_EXTRA_TYPE'. See the section on yyextra, below, for more details. The value stored in `ptr_yy_globals' should thereafter be passed to `yylex' and `yylex_destroy'. Flex does not save the argument passed to `yylex_init', so it is safe to pass the address of a local pointer to `yylex_init' so long as it remains in scope for the duration of all calls to the scanner, up to and including the call to `yylex_destroy'. The function `yylex' should be familiar to you by now. The reentrant version takes one argument, which is the value returned (via an argument) by `yylex_init'. Otherwise, it behaves the same as the non-reentrant version of `yylex'. Both `yylex_init' and `yylex_init_extra' returns 0 (zero) on success, or non-zero on failure, in which case errno is set to one of the following values: * ENOMEM Memory allocation error. *Note memory-management::. * EINVAL Invalid argument. The function `yylex_destroy' should be called to free resources used by the scanner. After `yylex_destroy' is called, the contents of `yyscanner' should not be used. Of course, there is no need to destroy a scanner if you plan to reuse it. A `flex' scanner (both reentrant and non-reentrant) may be restarted by calling `yyrestart'. Below is an example of a program that creates a scanner, uses it, then destroys it when done: int main () { yyscan_t scanner; int tok; yylex_init(&scanner); while ((tok=yylex(scanner)) > 0) printf("tok=%d yytext=%s\n", tok, yyget_text(scanner)); yylex_destroy(scanner); return 0; }  File: flex.info, Node: Accessor Methods, Next: Extra Data, Prev: Init and Destroy Functions, Up: Reentrant Detail 19.4.5 Accessing Variables with Reentrant Scanners -------------------------------------------------- Accessor methods (get/set functions) provide access to common `flex' variables. Many scanners that you build will be part of a larger project. Portions of your project will need access to `flex' values, such as `yytext'. In a non-reentrant scanner, these values are global, so there is no problem accessing them. However, in a reentrant scanner, there are no global `flex' values. You can not access them directly. Instead, you must access `flex' values using accessor methods (get/set functions). Each accessor method is named `yyget_NAME' or `yyset_NAME', where `NAME' is the name of the `flex' variable you want. For example: /* Set the last character of yytext to NULL. */ void chop ( yyscan_t scanner ) { int len = yyget_leng( scanner ); yyget_text( scanner )[len - 1] = '\0'; } The above code may be called from within an action like this: %% .+\n { chop( yyscanner );} You may find that `%option header-file' is particularly useful for generating prototypes of all the accessor functions. *Note option-header::.  File: flex.info, Node: Extra Data, Next: About yyscan_t, Prev: Accessor Methods, Up: Reentrant Detail 19.4.6 Extra Data ----------------- User-specific data can be stored in `yyextra'. In a reentrant scanner, it is unwise to use global variables to communicate with or maintain state between different pieces of your program. However, you may need access to external data or invoke external functions from within the scanner actions. Likewise, you may need to pass information to your scanner (e.g., open file descriptors, or database connections). In a non-reentrant scanner, the only way to do this would be through the use of global variables. `Flex' allows you to store arbitrary, "extra" data in a scanner. This data is accessible through the accessor methods `yyget_extra' and `yyset_extra' from outside the scanner, and through the shortcut macro `yyextra' from within the scanner itself. They are defined as follows: #define YY_EXTRA_TYPE void* YY_EXTRA_TYPE yyget_extra ( yyscan_t scanner ); void yyset_extra ( YY_EXTRA_TYPE arbitrary_data , yyscan_t scanner); In addition, an extra form of `yylex_init' is provided, `yylex_init_extra'. This function is provided so that the yyextra value can be accessed from within the very first yyalloc, used to allocate the scanner itself. By default, `YY_EXTRA_TYPE' is defined as type `void *'. You may redefine this type using `%option extra-type="your_type"' in the scanner: /* An example of overriding YY_EXTRA_TYPE. */ %{ #include #include %} %option reentrant %option extra-type="struct stat *" %% __filesize__ printf( "%ld", yyextra->st_size ); __lastmod__ printf( "%ld", yyextra->st_mtime ); %% void scan_file( char* filename ) { yyscan_t scanner; struct stat buf; FILE *in; in = fopen( filename, "r" ); stat( filename, &buf ); yylex_init_extra( buf, &scanner ); yyset_in( in, scanner ); yylex( scanner ); yylex_destroy( scanner ); fclose( in ); }  File: flex.info, Node: About yyscan_t, Prev: Extra Data, Up: Reentrant Detail 19.4.7 About yyscan_t --------------------- `yyscan_t' is defined as: typedef void* yyscan_t; It is initialized by `yylex_init()' to point to an internal structure. You should never access this value directly. In particular, you should never attempt to free it (use `yylex_destroy()' instead.)  File: flex.info, Node: Reentrant Functions, Prev: Reentrant Detail, Up: Reentrant 19.5 Functions and Macros Available in Reentrant C Scanners =========================================================== The following Functions are available in a reentrant scanner: char *yyget_text ( yyscan_t scanner ); int yyget_leng ( yyscan_t scanner ); FILE *yyget_in ( yyscan_t scanner ); FILE *yyget_out ( yyscan_t scanner ); int yyget_lineno ( yyscan_t scanner ); YY_EXTRA_TYPE yyget_extra ( yyscan_t scanner ); int yyget_debug ( yyscan_t scanner ); void yyset_debug ( int flag, yyscan_t scanner ); void yyset_in ( FILE * in_str , yyscan_t scanner ); void yyset_out ( FILE * out_str , yyscan_t scanner ); void yyset_lineno ( int line_number , yyscan_t scanner ); void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t scanner ); There are no "set" functions for yytext and yyleng. This is intentional. The following Macro shortcuts are available in actions in a reentrant scanner: yytext yyleng yyin yyout yylineno yyextra yy_flex_debug In a reentrant C scanner, support for yylineno is always present (i.e., you may access yylineno), but the value is never modified by `flex' unless `%option yylineno' is enabled. This is to allow the user to maintain the line count independently of `flex'. The following functions and macros are made available when `%option bison-bridge' (`--bison-bridge') is specified: YYSTYPE * yyget_lval ( yyscan_t scanner ); void yyset_lval ( YYSTYPE * yylvalp , yyscan_t scanner ); yylval The following functions and macros are made available when `%option bison-locations' (`--bison-locations') is specified: YYLTYPE *yyget_lloc ( yyscan_t scanner ); void yyset_lloc ( YYLTYPE * yyllocp , yyscan_t scanner ); yylloc Support for yylval assumes that `YYSTYPE' is a valid type. Support for yylloc assumes that `YYSLYPE' is a valid type. Typically, these types are generated by `bison', and are included in section 1 of the `flex' input.  File: flex.info, Node: Lex and Posix, Next: Memory Management, Prev: Reentrant, Up: Top 20 Incompatibilities with Lex and Posix *************************************** `flex' is a rewrite of the AT&T Unix _lex_ tool (the two implementations do not share any code, though), with some extensions and incompatibilities, both of which are of concern to those who wish to write scanners acceptable to both implementations. `flex' is fully compliant with the POSIX `lex' specification, except that when using `%pointer' (the default), a call to `unput()' destroys the contents of `yytext', which is counter to the POSIX specification. In this section we discuss all of the known areas of incompatibility between `flex', AT&T `lex', and the POSIX specification. `flex''s `-l' option turns on maximum compatibility with the original AT&T `lex' implementation, at the cost of a major loss in the generated scanner's performance. We note below which incompatibilities can be overcome using the `-l' option. `flex' is fully compatible with `lex' with the following exceptions: * The undocumented `lex' scanner internal variable `yylineno' is not supported unless `-l' or `%option yylineno' is used. * `yylineno' should be maintained on a per-buffer basis, rather than a per-scanner (single global variable) basis. * `yylineno' is not part of the POSIX specification. * The `input()' routine is not redefinable, though it may be called to read characters following whatever has been matched by a rule. If `input()' encounters an end-of-file the normal `yywrap()' processing is done. A "real" end-of-file is returned by `input()' as `EOF'. * Input is instead controlled by defining the `YY_INPUT()' macro. * The `flex' restriction that `input()' cannot be redefined is in accordance with the POSIX specification, which simply does not specify any way of controlling the scanner's input other than by making an initial assignment to `yyin'. * The `unput()' routine is not redefinable. This restriction is in accordance with POSIX. * `flex' scanners are not as reentrant as `lex' scanners. In particular, if you have an interactive scanner and an interrupt handler which long-jumps out of the scanner, and the scanner is subsequently called again, you may get the following message: fatal flex scanner internal error--end of buffer missed To reenter the scanner, first use: yyrestart( yyin ); Note that this call will throw away any buffered input; usually this isn't a problem with an interactive scanner. *Note Reentrant::, for `flex''s reentrant API. * Also note that `flex' C++ scanner classes _are_ reentrant, so if using C++ is an option for you, you should use them instead. *Note Cxx::, and *note Reentrant:: for details. * `output()' is not supported. Output from the ECHO macro is done to the file-pointer `yyout' (default `stdout)'. * `output()' is not part of the POSIX specification. * `lex' does not support exclusive start conditions (%x), though they are in the POSIX specification. * When definitions are expanded, `flex' encloses them in parentheses. With `lex', the following: NAME [A-Z][A-Z0-9]* %% foo{NAME}? printf( "Found it\n" ); %% will not match the string `foo' because when the macro is expanded the rule is equivalent to `foo[A-Z][A-Z0-9]*?' and the precedence is such that the `?' is associated with `[A-Z0-9]*'. With `flex', the rule will be expanded to `foo([A-Z][A-Z0-9]*)?' and so the string `foo' will match. * Note that if the definition begins with `^' or ends with `$' then it is _not_ expanded with parentheses, to allow these operators to appear in definitions without losing their special meanings. But the `', `/', and `<>' operators cannot be used in a `flex' definition. * Using `-l' results in the `lex' behavior of no parentheses around the definition. * The POSIX specification is that the definition be enclosed in parentheses. * Some implementations of `lex' allow a rule's action to begin on a separate line, if the rule's pattern has trailing whitespace: %% foo|bar { foobar_action();} `flex' does not support this feature. * The `lex' `%r' (generate a Ratfor scanner) option is not supported. It is not part of the POSIX specification. * After a call to `unput()', _yytext_ is undefined until the next token is matched, unless the scanner was built using `%array'. This is not the case with `lex' or the POSIX specification. The `-l' option does away with this incompatibility. * The precedence of the `{,}' (numeric range) operator is different. The AT&T and POSIX specifications of `lex' interpret `abc{1,3}' as match one, two, or three occurrences of `abc'", whereas `flex' interprets it as "match `ab' followed by one, two, or three occurrences of `c'". The `-l' and `--posix' options do away with this incompatibility. * The precedence of the `^' operator is different. `lex' interprets `^foo|bar' as "match either 'foo' at the beginning of a line, or 'bar' anywhere", whereas `flex' interprets it as "match either `foo' or `bar' if they come at the beginning of a line". The latter is in agreement with the POSIX specification. * The special table-size declarations such as `%a' supported by `lex' are not required by `flex' scanners.. `flex' ignores them. * The name `FLEX_SCANNER' is `#define''d so scanners may be written for use with either `flex' or `lex'. Scanners also include `YY_FLEX_MAJOR_VERSION', `YY_FLEX_MINOR_VERSION' and `YY_FLEX_SUBMINOR_VERSION' indicating which version of `flex' generated the scanner. For example, for the 2.5.22 release, these defines would be 2, 5 and 22 respectively. If the version of `flex' being used is a beta version, then the symbol `FLEX_BETA' is defined. * The symbols `[[' and `]]' in the code sections of the input may conflict with the m4 delimiters. *Note M4 Dependency::. The following `flex' features are not included in `lex' or the POSIX specification: * C++ scanners * %option * start condition scopes * start condition stacks * interactive/non-interactive scanners * yy_scan_string() and friends * yyterminate() * yy_set_interactive() * yy_set_bol() * YY_AT_BOL() <> * <*> * YY_DECL * YY_START * YY_USER_ACTION * YY_USER_INIT * #line directives * %{}'s around actions * reentrant C API * multiple actions on a line * almost all of the `flex' command-line options The feature "multiple actions on a line" refers to the fact that with `flex' you can put multiple actions on the same line, separated with semi-colons, while with `lex', the following: foo handle_foo(); ++num_foos_seen; is (rather surprisingly) truncated to foo handle_foo(); `flex' does not truncate the action. Actions that are not enclosed in braces are simply terminated at the end of the line.  File: flex.info, Node: Memory Management, Next: Serialized Tables, Prev: Lex and Posix, Up: Top 21 Memory Management ******************** This chapter describes how flex handles dynamic memory, and how you can override the default behavior. * Menu: * The Default Memory Management:: * Overriding The Default Memory Management:: * A Note About yytext And Memory::  File: flex.info, Node: The Default Memory Management, Next: Overriding The Default Memory Management, Prev: Memory Management, Up: Memory Management 21.1 The Default Memory Management ================================== Flex allocates dynamic memory during initialization, and once in a while from within a call to yylex(). Initialization takes place during the first call to yylex(). Thereafter, flex may reallocate more memory if it needs to enlarge a buffer. As of version 2.5.9 Flex will clean up all memory when you call `yylex_destroy' *Note faq-memory-leak::. Flex allocates dynamic memory for four purposes, listed below (1) 16kB for the input buffer. Flex allocates memory for the character buffer used to perform pattern matching. Flex must read ahead from the input stream and store it in a large character buffer. This buffer is typically the largest chunk of dynamic memory flex consumes. This buffer will grow if necessary, doubling the size each time. Flex frees this memory when you call yylex_destroy(). The default size of this buffer (16384 bytes) is almost always too large. The ideal size for this buffer is the length of the longest token expected, in bytes, plus a little more. Flex will allocate a few extra bytes for housekeeping. Currently, to override the size of the input buffer you must `#define YY_BUF_SIZE' to whatever number of bytes you want. We don't plan to change this in the near future, but we reserve the right to do so if we ever add a more robust memory management API. 64kb for the REJECT state. This will only be allocated if you use REJECT. The size is large enough to hold the same number of states as characters in the input buffer. If you override the size of the input buffer (via `YY_BUF_SIZE'), then you automatically override the size of this buffer as well. 100 bytes for the start condition stack. Flex allocates memory for the start condition stack. This is the stack used for pushing start states, i.e., with yy_push_state(). It will grow if necessary. Since the states are simply integers, this stack doesn't consume much memory. This stack is not present if `%option stack' is not specified. You will rarely need to tune this buffer. The ideal size for this stack is the maximum depth expected. The memory for this stack is automatically destroyed when you call yylex_destroy(). *Note option-stack::. 40 bytes for each YY_BUFFER_STATE. Flex allocates memory for each YY_BUFFER_STATE. The buffer state itself is about 40 bytes, plus an additional large character buffer (described above.) The initial buffer state is created during initialization, and with each call to yy_create_buffer(). You can't tune the size of this, but you can tune the character buffer as described above. Any buffer state that you explicitly create by calling yy_create_buffer() is _NOT_ destroyed automatically. You must call yy_delete_buffer() to free the memory. The exception to this rule is that flex will delete the current buffer automatically when you call yylex_destroy(). If you delete the current buffer, be sure to set it to NULL. That way, flex will not try to delete the buffer a second time (possibly crashing your program!) At the time of this writing, flex does not provide a growable stack for the buffer states. You have to manage that yourself. *Note Multiple Input Buffers::. 84 bytes for the reentrant scanner guts Flex allocates about 84 bytes for the reentrant scanner structure when you call yylex_init(). It is destroyed when the user calls yylex_destroy(). ---------- Footnotes ---------- (1) The quantities given here are approximate, and may vary due to host architecture, compiler configuration, or due to future enhancements to flex.  File: flex.info, Node: Overriding The Default Memory Management, Next: A Note About yytext And Memory, Prev: The Default Memory Management, Up: Memory Management 21.2 Overriding The Default Memory Management ============================================= Flex calls the functions `yyalloc', `yyrealloc', and `yyfree' when it needs to allocate or free memory. By default, these functions are wrappers around the standard C functions, `malloc', `realloc', and `free', respectively. You can override the default implementations by telling flex that you will provide your own implementations. To override the default implementations, you must do two things: 1. Suppress the default implementations by specifying one or more of the following options: * `%option noyyalloc' * `%option noyyrealloc' * `%option noyyfree'. 2. Provide your own implementation of the following functions: (1) // For a non-reentrant scanner void * yyalloc (size_t bytes); void * yyrealloc (void * ptr, size_t bytes); void yyfree (void * ptr); // For a reentrant scanner void * yyalloc (size_t bytes, void * yyscanner); void * yyrealloc (void * ptr, size_t bytes, void * yyscanner); void yyfree (void * ptr, void * yyscanner); In the following example, we will override all three memory routines. We assume that there is a custom allocator with garbage collection. In order to make this example interesting, we will use a reentrant scanner, passing a pointer to the custom allocator through `yyextra'. %{ #include "some_allocator.h" %} /* Suppress the default implementations. */ %option noyyalloc noyyrealloc noyyfree %option reentrant /* Initialize the allocator. */ #define YY_EXTRA_TYPE struct allocator* #define YY_USER_INIT yyextra = allocator_create(); %% .|\n ; %% /* Provide our own implementations. */ void * yyalloc (size_t bytes, void* yyscanner) { return allocator_alloc (yyextra, bytes); } void * yyrealloc (void * ptr, size_t bytes, void* yyscanner) { return allocator_realloc (yyextra, bytes); } void yyfree (void * ptr, void * yyscanner) { /* Do nothing -- we leave it to the garbage collector. */ } ---------- Footnotes ---------- (1) It is not necessary to override all (or any) of the memory management routines. You may, for example, override `yyrealloc', but not `yyfree' or `yyalloc'.  File: flex.info, Node: A Note About yytext And Memory, Prev: Overriding The Default Memory Management, Up: Memory Management 21.3 A Note About yytext And Memory =================================== When flex finds a match, `yytext' points to the first character of the match in the input buffer. The string itself is part of the input buffer, and is _NOT_ allocated separately. The value of yytext will be overwritten the next time yylex() is called. In short, the value of yytext is only valid from within the matched rule's action. Often, you want the value of yytext to persist for later processing, i.e., by a parser with non-zero lookahead. In order to preserve yytext, you will have to copy it with strdup() or a similar function. But this introduces some headache because your parser is now responsible for freeing the copy of yytext. If you use a yacc or bison parser, (commonly used with flex), you will discover that the error recovery mechanisms can cause memory to be leaked. To prevent memory leaks from strdup'd yytext, you will have to track the memory somehow. Our experience has shown that a garbage collection mechanism or a pooled memory mechanism will save you a lot of grief when writing parsers.  File: flex.info, Node: Serialized Tables, Next: Diagnostics, Prev: Memory Management, Up: Top 22 Serialized Tables ******************** A `flex' scanner has the ability to save the DFA tables to a file, and load them at runtime when needed. The motivation for this feature is to reduce the runtime memory footprint. Traditionally, these tables have been compiled into the scanner as C arrays, and are sometimes quite large. Since the tables are compiled into the scanner, the memory used by the tables can never be freed. This is a waste of memory, especially if an application uses several scanners, but none of them at the same time. The serialization feature allows the tables to be loaded at runtime, before scanning begins. The tables may be discarded when scanning is finished. * Menu: * Creating Serialized Tables:: * Loading and Unloading Serialized Tables:: * Tables File Format::  File: flex.info, Node: Creating Serialized Tables, Next: Loading and Unloading Serialized Tables, Prev: Serialized Tables, Up: Serialized Tables 22.1 Creating Serialized Tables =============================== You may create a scanner with serialized tables by specifying: %option tables-file=FILE or --tables-file=FILE These options instruct flex to save the DFA tables to the file FILE. The tables will _not_ be embedded in the generated scanner. The scanner will not function on its own. The scanner will be dependent upon the serialized tables. You must load the tables from this file at runtime before you can scan anything. If you do not specify a filename to `--tables-file', the tables will be saved to `lex.yy.tables', where `yy' is the appropriate prefix. If your project uses several different scanners, you can concatenate the serialized tables into one file, and flex will find the correct set of tables, using the scanner prefix as part of the lookup key. An example follows: $ flex --tables-file --prefix=cpp cpp.l $ flex --tables-file --prefix=c c.l $ cat lex.cpp.tables lex.c.tables > all.tables The above example created two scanners, `cpp', and `c'. Since we did not specify a filename, the tables were serialized to `lex.c.tables' and `lex.cpp.tables', respectively. Then, we concatenated the two files together into `all.tables', which we will distribute with our project. At runtime, we will open the file and tell flex to load the tables from it. Flex will find the correct tables automatically. (See next section).  File: flex.info, Node: Loading and Unloading Serialized Tables, Next: Tables File Format, Prev: Creating Serialized Tables, Up: Serialized Tables 22.2 Loading and Unloading Serialized Tables ============================================ If you've built your scanner with `%option tables-file', then you must load the scanner tables at runtime. This can be accomplished with the following function: -- Function: int yytables_fload (FILE* FP [, yyscan_t SCANNER]) Locates scanner tables in the stream pointed to by FP and loads them. Memory for the tables is allocated via `yyalloc'. You must call this function before the first call to `yylex'. The argument SCANNER only appears in the reentrant scanner. This function returns `0' (zero) on success, or non-zero on error. The loaded tables are *not* automatically destroyed (unloaded) when you call `yylex_destroy'. The reason is that you may create several scanners of the same type (in a reentrant scanner), each of which needs access to these tables. To avoid a nasty memory leak, you must call the following function: -- Function: int yytables_destroy ([yyscan_t SCANNER]) Unloads the scanner tables. The tables must be loaded again before you can scan any more data. The argument SCANNER only appears in the reentrant scanner. This function returns `0' (zero) on success, or non-zero on error. *The functions `yytables_fload' and `yytables_destroy' are not thread-safe.* You must ensure that these functions are called exactly once (for each scanner type) in a threaded program, before any thread calls `yylex'. After the tables are loaded, they are never written to, and no thread protection is required thereafter - until you destroy them.  File: flex.info, Node: Tables File Format, Prev: Loading and Unloading Serialized Tables, Up: Serialized Tables 22.3 Tables File Format ======================= This section defines the file format of serialized `flex' tables. The tables format allows for one or more sets of tables to be specified, where each set corresponds to a given scanner. Scanners are indexed by name, as described below. The file format is as follows: TABLE SET 1 +-------------------------------+ Header | uint32 th_magic; | | uint32 th_hsize; | | uint32 th_ssize; | | uint16 th_flags; | | char th_version[]; | | char th_name[]; | | uint8 th_pad64[]; | +-------------------------------+ Table 1 | uint16 td_id; | | uint16 td_flags; | | uint32 td_hilen; | | uint32 td_lolen; | | void td_data[]; | | uint8 td_pad64[]; | +-------------------------------+ Table 2 | | . . . . . . . . . . . . Table n | | +-------------------------------+ TABLE SET 2 . . . TABLE SET N The above diagram shows that a complete set of tables consists of a header followed by multiple individual tables. Furthermore, multiple complete sets may be present in the same file, each set with its own header and tables. The sets are contiguous in the file. The only way to know if another set follows is to check the next four bytes for the magic number (or check for EOF). The header and tables sections are padded to 64-bit boundaries. Below we describe each field in detail. This format does not specify how the scanner will expand the given data, i.e., data may be serialized as int8, but expanded to an int32 array at runtime. This is to reduce the size of the serialized data where possible. Remember, _all integer values are in network byte order_. Fields of a table header: `th_magic' Magic number, always 0xF13C57B1. `th_hsize' Size of this entire header, in bytes, including all fields plus any padding. `th_ssize' Size of this entire set, in bytes, including the header, all tables, plus any padding. `th_flags' Bit flags for this table set. Currently unused. `th_version[]' Flex version in NULL-terminated string format. e.g., `2.5.13a'. This is the version of flex that was used to create the serialized tables. `th_name[]' Contains the name of this table set. The default is `yytables', and is prefixed accordingly, e.g., `footables'. Must be NULL-terminated. `th_pad64[]' Zero or more NULL bytes, padding the entire header to the next 64-bit boundary as calculated from the beginning of the header. Fields of a table: `td_id' Specifies the table identifier. Possible values are: `YYTD_ID_ACCEPT (0x01)' `yy_accept' `YYTD_ID_BASE (0x02)' `yy_base' `YYTD_ID_CHK (0x03)' `yy_chk' `YYTD_ID_DEF (0x04)' `yy_def' `YYTD_ID_EC (0x05)' `yy_ec ' `YYTD_ID_META (0x06)' `yy_meta' `YYTD_ID_NUL_TRANS (0x07)' `yy_NUL_trans' `YYTD_ID_NXT (0x08)' `yy_nxt'. This array may be two dimensional. See the `td_hilen' field below. `YYTD_ID_RULE_CAN_MATCH_EOL (0x09)' `yy_rule_can_match_eol' `YYTD_ID_START_STATE_LIST (0x0A)' `yy_start_state_list'. This array is handled specially because it is an array of pointers to structs. See the `td_flags' field below. `YYTD_ID_TRANSITION (0x0B)' `yy_transition'. This array is handled specially because it is an array of structs. See the `td_lolen' field below. `YYTD_ID_ACCLIST (0x0C)' `yy_acclist' `td_flags' Bit flags describing how to interpret the data in `td_data'. The data arrays are one-dimensional by default, but may be two dimensional as specified in the `td_hilen' field. `YYTD_DATA8 (0x01)' The data is serialized as an array of type int8. `YYTD_DATA16 (0x02)' The data is serialized as an array of type int16. `YYTD_DATA32 (0x04)' The data is serialized as an array of type int32. `YYTD_PTRANS (0x08)' The data is a list of indexes of entries in the expanded `yy_transition' array. Each index should be expanded to a pointer to the corresponding entry in the `yy_transition' array. We count on the fact that the `yy_transition' array has already been seen. `YYTD_STRUCT (0x10)' The data is a list of yy_trans_info structs, each of which consists of two integers. There is no padding between struct elements or between structs. The type of each member is determined by the `YYTD_DATA*' bits. `td_hilen' If `td_hilen' is non-zero, then the data is a two-dimensional array. Otherwise, the data is a one-dimensional array. `td_hilen' contains the number of elements in the higher dimensional array, and `td_lolen' contains the number of elements in the lowest dimension. Conceptually, `td_data' is either `sometype td_data[td_lolen]', or `sometype td_data[td_hilen][td_lolen]', where `sometype' is specified by the `td_flags' field. It is possible for both `td_lolen' and `td_hilen' to be zero, in which case `td_data' is a zero length array, and no data is loaded, i.e., this table is simply skipped. Flex does not currently generate tables of zero length. `td_lolen' Specifies the number of elements in the lowest dimension array. If this is a one-dimensional array, then it is simply the number of elements in this array. The element size is determined by the `td_flags' field. `td_data[]' The table data. This array may be a one- or two-dimensional array, of type `int8', `int16', `int32', `struct yy_trans_info', or `struct yy_trans_info*', depending upon the values in the `td_flags', `td_hilen', and `td_lolen' fields. `td_pad64[]' Zero or more NULL bytes, padding the entire table to the next 64-bit boundary as calculated from the beginning of this table.  File: flex.info, Node: Diagnostics, Next: Limitations, Prev: Serialized Tables, Up: Top 23 Diagnostics ************** The following is a list of `flex' diagnostic messages: * `warning, rule cannot be matched' indicates that the given rule cannot be matched because it follows other rules that will always match the same text as it. For example, in the following `foo' cannot be matched because it comes after an identifier "catch-all" rule: [a-z]+ got_identifier(); foo got_foo(); Using `REJECT' in a scanner suppresses this warning. * `warning, -s option given but default rule can be matched' means that it is possible (perhaps only in a particular start condition) that the default rule (match any single character) is the only one that will match a particular input. Since `-s' was given, presumably this is not intended. * `reject_used_but_not_detected undefined' or `yymore_used_but_not_detected undefined'. These errors can occur at compile time. They indicate that the scanner uses `REJECT' or `yymore()' but that `flex' failed to notice the fact, meaning that `flex' scanned the first two sections looking for occurrences of these actions and failed to find any, but somehow you snuck some in (via a #include file, for example). Use `%option reject' or `%option yymore' to indicate to `flex' that you really do use these features. * `flex scanner jammed'. a scanner compiled with `-s' has encountered an input string which wasn't matched by any of its rules. This error can also occur due to internal problems. * `token too large, exceeds YYLMAX'. your scanner uses `%array' and one of its rules matched a string longer than the `YYLMAX' constant (8K bytes by default). You can increase the value by #define'ing `YYLMAX' in the definitions section of your `flex' input. * `scanner requires -8 flag to use the character 'x''. Your scanner specification includes recognizing the 8-bit character `'x'' and you did not specify the -8 flag, and your scanner defaulted to 7-bit because you used the `-Cf' or `-CF' table compression options. See the discussion of the `-7' flag, *note Scanner Options::, for details. * `flex scanner push-back overflow'. you used `unput()' to push back so much text that the scanner's buffer could not hold both the pushed-back text and the current token in `yytext'. Ideally the scanner should dynamically resize the buffer in this case, but at present it does not. * `input buffer overflow, can't enlarge buffer because scanner uses REJECT'. the scanner was working on matching an extremely large token and needed to expand the input buffer. This doesn't work with scanners that use `REJECT'. * `fatal flex scanner internal error--end of buffer missed'. This can occur in a scanner which is reentered after a long-jump has jumped out (or over) the scanner's activation frame. Before reentering the scanner, use: yyrestart( yyin ); or, as noted above, switch to using the C++ scanner class. * `too many start conditions in <> construct!' you listed more start conditions in a <> construct than exist (so you must have listed at least one of them twice).  File: flex.info, Node: Limitations, Next: Bibliography, Prev: Diagnostics, Up: Top 24 Limitations ************** Some trailing context patterns cannot be properly matched and generate warning messages (`dangerous trailing context'). These are patterns where the ending of the first part of the rule matches the beginning of the second part, such as `zx*/xy*', where the 'x*' matches the 'x' at the beginning of the trailing context. (Note that the POSIX draft states that the text matched by such patterns is undefined.) For some trailing context rules, parts which are actually fixed-length are not recognized as such, leading to the abovementioned performance loss. In particular, parts using `|' or `{n}' (such as `foo{3}') are always considered variable-length. Combining trailing context with the special `|' action can result in _fixed_ trailing context being turned into the more expensive _variable_ trailing context. For example, in the following: %% abc | xyz/def Use of `unput()' invalidates yytext and yyleng, unless the `%array' directive or the `-l' option has been used. Pattern-matching of `NUL's is substantially slower than matching other characters. Dynamic resizing of the input buffer is slow, as it entails rescanning all the text matched so far by the current (generally huge) token. Due to both buffering of input and read-ahead, you cannot intermix calls to `' routines, such as, getchar(), with `flex' rules and expect it to work. Call `input()' instead. The total table entries listed by the `-v' flag excludes the number of table entries needed to determine what rule has been matched. The number of entries is equal to the number of DFA states if the scanner does not use `REJECT', and somewhat greater than the number of states if it does. `REJECT' cannot be used with the `-f' or `-F' options. The `flex' internal algorithms need documentation.  File: flex.info, Node: Bibliography, Next: FAQ, Prev: Limitations, Up: Top 25 Additional Reading ********************* You may wish to read more about the following programs: * lex * yacc * sed * awk The following books may contain material of interest: John Levine, Tony Mason, and Doug Brown, _Lex & Yacc_, O'Reilly and Associates. Be sure to get the 2nd edition. M. E. Lesk and E. Schmidt, _LEX - Lexical Analyzer Generator_ Alfred Aho, Ravi Sethi and Jeffrey Ullman, _Compilers: Principles, Techniques and Tools_, Addison-Wesley (1986). Describes the pattern-matching techniques used by `flex' (deterministic finite automata).  File: flex.info, Node: FAQ, Next: Appendices, Prev: Bibliography, Up: Top FAQ *** From time to time, the `flex' maintainer receives certain questions. Rather than repeat answers to well-understood problems, we publish them here. * Menu: * When was flex born?:: * How do I expand backslash-escape sequences in C-style quoted strings?:: * Why do flex scanners call fileno if it is not ANSI compatible?:: * Does flex support recursive pattern definitions?:: * How do I skip huge chunks of input (tens of megabytes) while using flex?:: * Flex is not matching my patterns in the same order that I defined them.:: * My actions are executing out of order or sometimes not at all.:: * How can I have multiple input sources feed into the same scanner at the same time?:: * Can I build nested parsers that work with the same input file?:: * How can I match text only at the end of a file?:: * How can I make REJECT cascade across start condition boundaries?:: * Why cant I use fast or full tables with interactive mode?:: * How much faster is -F or -f than -C?:: * If I have a simple grammar cant I just parse it with flex?:: * Why doesn't yyrestart() set the start state back to INITIAL?:: * How can I match C-style comments?:: * The period isn't working the way I expected.:: * Can I get the flex manual in another format?:: * Does there exist a "faster" NDFA->DFA algorithm?:: * How does flex compile the DFA so quickly?:: * How can I use more than 8192 rules?:: * How do I abandon a file in the middle of a scan and switch to a new file?:: * How do I execute code only during initialization (only before the first scan)?:: * How do I execute code at termination?:: * Where else can I find help?:: * Can I include comments in the "rules" section of the file?:: * I get an error about undefined yywrap().:: * How can I change the matching pattern at run time?:: * How can I expand macros in the input?:: * How can I build a two-pass scanner?:: * How do I match any string not matched in the preceding rules?:: * I am trying to port code from AT&T lex that uses yysptr and yysbuf.:: * Is there a way to make flex treat NULL like a regular character?:: * Whenever flex can not match the input it says "flex scanner jammed".:: * Why doesn't flex have non-greedy operators like perl does?:: * Memory leak - 16386 bytes allocated by malloc.:: * How do I track the byte offset for lseek()?:: * How do I use my own I/O classes in a C++ scanner?:: * How do I skip as many chars as possible?:: * deleteme00:: * Are certain equivalent patterns faster than others?:: * Is backing up a big deal?:: * Can I fake multi-byte character support?:: * deleteme01:: * Can you discuss some flex internals?:: * unput() messes up yy_at_bol:: * The | operator is not doing what I want:: * Why can't flex understand this variable trailing context pattern?:: * The ^ operator isn't working:: * Trailing context is getting confused with trailing optional patterns:: * Is flex GNU or not?:: * ERASEME53:: * I need to scan if-then-else blocks and while loops:: * ERASEME55:: * ERASEME56:: * ERASEME57:: * Is there a repository for flex scanners?:: * How can I conditionally compile or preprocess my flex input file?:: * Where can I find grammars for lex and yacc?:: * I get an end-of-buffer message for each character scanned.:: * unnamed-faq-62:: * unnamed-faq-63:: * unnamed-faq-64:: * unnamed-faq-65:: * unnamed-faq-66:: * unnamed-faq-67:: * unnamed-faq-68:: * unnamed-faq-69:: * unnamed-faq-70:: * unnamed-faq-71:: * unnamed-faq-72:: * unnamed-faq-73:: * unnamed-faq-74:: * unnamed-faq-75:: * unnamed-faq-76:: * unnamed-faq-77:: * unnamed-faq-78:: * unnamed-faq-79:: * unnamed-faq-80:: * unnamed-faq-81:: * unnamed-faq-82:: * unnamed-faq-83:: * unnamed-faq-84:: * unnamed-faq-85:: * unnamed-faq-86:: * unnamed-faq-87:: * unnamed-faq-88:: * unnamed-faq-90:: * unnamed-faq-91:: * unnamed-faq-92:: * unnamed-faq-93:: * unnamed-faq-94:: * unnamed-faq-95:: * unnamed-faq-96:: * unnamed-faq-97:: * unnamed-faq-98:: * unnamed-faq-99:: * unnamed-faq-100:: * unnamed-faq-101:: * What is the difference between YYLEX_PARAM and YY_DECL?:: * Why do I get "conflicting types for yylex" error?:: * How do I access the values set in a Flex action from within a Bison action?::  File: flex.info, Node: When was flex born?, Next: How do I expand backslash-escape sequences in C-style quoted strings?, Up: FAQ When was flex born? =================== Vern Paxson took over the `Software Tools' lex project from Jef Poskanzer in 1982. At that point it was written in Ratfor. Around 1987 or so, Paxson translated it into C, and a legend was born :-).  File: flex.info, Node: How do I expand backslash-escape sequences in C-style quoted strings?, Next: Why do flex scanners call fileno if it is not ANSI compatible?, Prev: When was flex born?, Up: FAQ How do I expand backslash-escape sequences in C-style quoted strings? ===================================================================== A key point when scanning quoted strings is that you cannot (easily) write a single rule that will precisely match the string if you allow things like embedded escape sequences and newlines. If you try to match strings with a single rule then you'll wind up having to rescan the string anyway to find any escape sequences. Instead you can use exclusive start conditions and a set of rules, one for matching non-escaped text, one for matching a single escape, one for matching an embedded newline, and one for recognizing the end of the string. Each of these rules is then faced with the question of where to put its intermediary results. The best solution is for the rules to append their local value of `yytext' to the end of a "string literal" buffer. A rule like the escape-matcher will append to the buffer the meaning of the escape sequence rather than the literal text in `yytext'. In this way, `yytext' does not need to be modified at all.  File: flex.info, Node: Why do flex scanners call fileno if it is not ANSI compatible?, Next: Does flex support recursive pattern definitions?, Prev: How do I expand backslash-escape sequences in C-style quoted strings?, Up: FAQ Why do flex scanners call fileno if it is not ANSI compatible? ============================================================== Flex scanners call `fileno()' in order to get the file descriptor corresponding to `yyin'. The file descriptor may be passed to `isatty()' or `read()', depending upon which `%options' you specified. If your system does not have `fileno()' support, to get rid of the `read()' call, do not specify `%option read'. To get rid of the `isatty()' call, you must specify one of `%option always-interactive' or `%option never-interactive'.  File: flex.info, Node: Does flex support recursive pattern definitions?, Next: How do I skip huge chunks of input (tens of megabytes) while using flex?, Prev: Why do flex scanners call fileno if it is not ANSI compatible?, Up: FAQ Does flex support recursive pattern definitions? ================================================ e.g., %% block "{"({block}|{statement})*"}" No. You cannot have recursive definitions. The pattern-matching power of regular expressions in general (and therefore flex scanners, too) is limited. In particular, regular expressions cannot "balance" parentheses to an arbitrary degree. For example, it's impossible to write a regular expression that matches all strings containing the same number of '{'s as '}'s. For more powerful pattern matching, you need a parser, such as `GNU bison'.  File: flex.info, Node: How do I skip huge chunks of input (tens of megabytes) while using flex?, Next: Flex is not matching my patterns in the same order that I defined them., Prev: Does flex support recursive pattern definitions?, Up: FAQ How do I skip huge chunks of input (tens of megabytes) while using flex? ======================================================================== Use `fseek()' (or `lseek()') to position yyin, then call `yyrestart()'.  File: flex.info, Node: Flex is not matching my patterns in the same order that I defined them., Next: My actions are executing out of order or sometimes not at all., Prev: How do I skip huge chunks of input (tens of megabytes) while using flex?, Up: FAQ Flex is not matching my patterns in the same order that I defined them. ======================================================================= `flex' picks the rule that matches the most text (i.e., the longest possible input string). This is because `flex' uses an entirely different matching technique ("deterministic finite automata") that actually does all of the matching simultaneously, in parallel. (Seems impossible, but it's actually a fairly simple technique once you understand the principles.) A side-effect of this parallel matching is that when the input matches more than one rule, `flex' scanners pick the rule that matched the _most_ text. This is explained further in the manual, in the section *Note Matching::. If you want `flex' to choose a shorter match, then you can work around this behavior by expanding your short rule to match more text, then put back the extra: data_.* yyless( 5 ); BEGIN BLOCKIDSTATE; Another fix would be to make the second rule active only during the `' start condition, and make that start condition exclusive by declaring it with `%x' instead of `%s'. A final fix is to change the input language so that the ambiguity for `data_' is removed, by adding characters to it that don't match the identifier rule, or by removing characters (such as `_') from the identifier rule so it no longer matches `data_'. (Of course, you might also not have the option of changing the input language.)  File: flex.info, Node: My actions are executing out of order or sometimes not at all., Next: How can I have multiple input sources feed into the same scanner at the same time?, Prev: Flex is not matching my patterns in the same order that I defined them., Up: FAQ My actions are executing out of order or sometimes not at all. ============================================================== Most likely, you have (in error) placed the opening `{' of the action block on a different line than the rule, e.g., ^(foo|bar) { <<<--- WRONG! } `flex' requires that the opening `{' of an action associated with a rule begin on the same line as does the rule. You need instead to write your rules as follows: ^(foo|bar) { // CORRECT! }  File: flex.info, Node: How can I have multiple input sources feed into the same scanner at the same time?, Next: Can I build nested parsers that work with the same input file?, Prev: My actions are executing out of order or sometimes not at all., Up: FAQ How can I have multiple input sources feed into the same scanner at the same time? ================================================================================== If ... * your scanner is free of backtracking (verified using `flex''s `-b' flag), * AND you run your scanner interactively (`-I' option; default unless using special table compression options), * AND you feed it one character at a time by redefining `YY_INPUT' to do so, then every time it matches a token, it will have exhausted its input buffer (because the scanner is free of backtracking). This means you can safely use `select()' at the point and only call `yylex()' for another token if `select()' indicates there's data available. That is, move the `select()' out from the input function to a point where it determines whether `yylex()' gets called for the next token. With this approach, you will still have problems if your input can arrive piecemeal; `select()' could inform you that the beginning of a token is available, you call `yylex()' to get it, but it winds up blocking waiting for the later characters in the token. Here's another way: Move your input multiplexing inside of `YY_INPUT'. That is, whenever `YY_INPUT' is called, it `select()''s to see where input is available. If input is available for the scanner, it reads and returns the next byte. If input is available from another source, it calls whatever function is responsible for reading from that source. (If no input is available, it blocks until some input is available.) I've used this technique in an interpreter I wrote that both reads keyboard input using a `flex' scanner and IPC traffic from sockets, and it works fine.  File: flex.info, Node: Can I build nested parsers that work with the same input file?, Next: How can I match text only at the end of a file?, Prev: How can I have multiple input sources feed into the same scanner at the same time?, Up: FAQ Can I build nested parsers that work with the same input file? ============================================================== This is not going to work without some additional effort. The reason is that `flex' block-buffers the input it reads from `yyin'. This means that the "outermost" `yylex()', when called, will automatically slurp up the first 8K of input available on yyin, and subsequent calls to other `yylex()''s won't see that input. You might be tempted to work around this problem by redefining `YY_INPUT' to only return a small amount of text, but it turns out that that approach is quite difficult. Instead, the best solution is to combine all of your scanners into one large scanner, using a different exclusive start condition for each.  File: flex.info, Node: How can I match text only at the end of a file?, Next: How can I make REJECT cascade across start condition boundaries?, Prev: Can I build nested parsers that work with the same input file?, Up: FAQ How can I match text only at the end of a file? =============================================== There is no way to write a rule which is "match this text, but only if it comes at the end of the file". You can fake it, though, if you happen to have a character lying around that you don't allow in your input. Then you redefine `YY_INPUT' to call your own routine which, if it sees an `EOF', returns the magic character first (and remembers to return a real `EOF' next time it's called). Then you could write: (.|\n)*{EOF_CHAR} /* saw comment at EOF */  File: flex.info, Node: How can I make REJECT cascade across start condition boundaries?, Next: Why cant I use fast or full tables with interactive mode?, Prev: How can I match text only at the end of a file?, Up: FAQ How can I make REJECT cascade across start condition boundaries? ================================================================ You can do this as follows. Suppose you have a start condition `A', and after exhausting all of the possible matches in `', you want to try matches in `'. Then you could use the following: %x A %% rule_that_is_long ...; REJECT; rule ...; REJECT; /* shorter rule */ etc. ... .|\n { /* Shortest and last rule in , so * cascaded REJECTs will eventually * wind up matching this rule. We want * to now switch to the initial state * and try matching from there instead. */ yyless(0); /* put back matched text */ BEGIN(INITIAL); }  File: flex.info, Node: Why cant I use fast or full tables with interactive mode?, Next: How much faster is -F or -f than -C?, Prev: How can I make REJECT cascade across start condition boundaries?, Up: FAQ Why can't I use fast or full tables with interactive mode? ========================================================== One of the assumptions flex makes is that interactive applications are inherently slow (they're waiting on a human after all). It has to do with how the scanner detects that it must be finished scanning a token. For interactive scanners, after scanning each character the current state is looked up in a table (essentially) to see whether there's a chance of another input character possibly extending the length of the match. If not, the scanner halts. For non-interactive scanners, the end-of-token test is much simpler, basically a compare with 0, so no memory bus cycles. Since the test occurs in the innermost scanning loop, one would like to make it go as fast as possible. Still, it seems reasonable to allow the user to choose to trade off a bit of performance in this area to gain the corresponding flexibility. There might be another reason, though, why fast scanners don't support the interactive option.  File: flex.info, Node: How much faster is -F or -f than -C?, Next: If I have a simple grammar cant I just parse it with flex?, Prev: Why cant I use fast or full tables with interactive mode?, Up: FAQ How much faster is -F or -f than -C? ==================================== Much faster (factor of 2-3).  File: flex.info, Node: If I have a simple grammar cant I just parse it with flex?, Next: Why doesn't yyrestart() set the start state back to INITIAL?, Prev: How much faster is -F or -f than -C?, Up: FAQ If I have a simple grammar can't I just parse it with flex? =========================================================== Is your grammar recursive? That's almost always a sign that you're better off using a parser/scanner rather than just trying to use a scanner alone.  File: flex.info, Node: Why doesn't yyrestart() set the start state back to INITIAL?, Next: How can I match C-style comments?, Prev: If I have a simple grammar cant I just parse it with flex?, Up: FAQ Why doesn't yyrestart() set the start state back to INITIAL? ============================================================ There are two reasons. The first is that there might be programs that rely on the start state not changing across file changes. The second is that beginning with `flex' version 2.4, use of `yyrestart()' is no longer required, so fixing the problem there doesn't solve the more general problem.  File: flex.info, Node: How can I match C-style comments?, Next: The period isn't working the way I expected., Prev: Why doesn't yyrestart() set the start state back to INITIAL?, Up: FAQ How can I match C-style comments? ================================= You might be tempted to try something like this: "/*".*"*/" // WRONG! or, worse, this: "/*"(.|\n)"*/" // WRONG! The above rules will eat too much input, and blow up on things like: /* a comment */ do_my_thing( "oops */" ); Here is one way which allows you to track line information: { "/*" BEGIN(IN_COMMENT); } { "*/" BEGIN(INITIAL); [^*\n]+ // eat comment in chunks "*" // eat the lone star \n yylineno++; }  File: flex.info, Node: The period isn't working the way I expected., Next: Can I get the flex manual in another format?, Prev: How can I match C-style comments?, Up: FAQ The '.' isn't working the way I expected. ========================================= Here are some tips for using `.': * A common mistake is to place the grouping parenthesis AFTER an operator, when you really meant to place the parenthesis BEFORE the operator, e.g., you probably want this `(foo|bar)+' and NOT this `(foo|bar+)'. The first pattern matches the words `foo' or `bar' any number of times, e.g., it matches the text `barfoofoobarfoo'. The second pattern matches a single instance of `foo' or a single instance of `bar' followed by one or more `r's, e.g., it matches the text `barrrr' . * A `.' inside `[]''s just means a literal`.' (period), and NOT "any character except newline". * Remember that `.' matches any character EXCEPT `\n' (and `EOF'). If you really want to match ANY character, including newlines, then use `(.|\n)' Beware that the regex `(.|\n)+' will match your entire input! * Finally, if you want to match a literal `.' (a period), then use `[.]' or `"."'  File: flex.info, Node: Can I get the flex manual in another format?, Next: Does there exist a "faster" NDFA->DFA algorithm?, Prev: The period isn't working the way I expected., Up: FAQ Can I get the flex manual in another format? ============================================ The `flex' source distribution includes a texinfo manual. You are free to convert that texinfo into whatever format you desire. The `texinfo' package includes tools for conversion to a number of formats.  File: flex.info, Node: Does there exist a "faster" NDFA->DFA algorithm?, Next: How does flex compile the DFA so quickly?, Prev: Can I get the flex manual in another format?, Up: FAQ Does there exist a "faster" NDFA->DFA algorithm? ================================================ There's no way around the potential exponential running time - it can take you exponential time just to enumerate all of the DFA states. In practice, though, the running time is closer to linear, or sometimes quadratic.  File: flex.info, Node: How does flex compile the DFA so quickly?, Next: How can I use more than 8192 rules?, Prev: Does there exist a "faster" NDFA->DFA algorithm?, Up: FAQ How does flex compile the DFA so quickly? ========================================= There are two big speed wins that `flex' uses: 1. It analyzes the input rules to construct equivalence classes for those characters that always make the same transitions. It then rewrites the NFA using equivalence classes for transitions instead of characters. This cuts down the NFA->DFA computation time dramatically, to the point where, for uncompressed DFA tables, the DFA generation is often I/O bound in writing out the tables. 2. It maintains hash values for previously computed DFA states, so testing whether a newly constructed DFA state is equivalent to a previously constructed state can be done very quickly, by first comparing hash values.  File: flex.info, Node: How can I use more than 8192 rules?, Next: How do I abandon a file in the middle of a scan and switch to a new file?, Prev: How does flex compile the DFA so quickly?, Up: FAQ How can I use more than 8192 rules? =================================== `Flex' is compiled with an upper limit of 8192 rules per scanner. If you need more than 8192 rules in your scanner, you'll have to recompile `flex' with the following changes in `flexdef.h': < #define YY_TRAILING_MASK 0x2000 < #define YY_TRAILING_HEAD_MASK 0x4000 -- > #define YY_TRAILING_MASK 0x20000000 > #define YY_TRAILING_HEAD_MASK 0x40000000 This should work okay as long as your C compiler uses 32 bit integers. But you might want to think about whether using such a huge number of rules is the best way to solve your problem. The following may also be relevant: With luck, you should be able to increase the definitions in flexdef.h for: #define JAMSTATE -32766 /* marks a reference to the state that always jams */ #define MAXIMUM_MNS 31999 #define BAD_SUBSCRIPT -32767 recompile everything, and it'll all work. Flex only has these 16-bit-like values built into it because a long time ago it was developed on a machine with 16-bit ints. I've given this advice to others in the past but haven't heard back from them whether it worked okay or not...  File: flex.info, Node: How do I abandon a file in the middle of a scan and switch to a new file?, Next: How do I execute code only during initialization (only before the first scan)?, Prev: How can I use more than 8192 rules?, Up: FAQ How do I abandon a file in the middle of a scan and switch to a new file? ========================================================================= Just call `yyrestart(newfile)'. Be sure to reset the start state if you want a "fresh start, since `yyrestart' does NOT reset the start state back to `INITIAL'.  File: flex.info, Node: How do I execute code only during initialization (only before the first scan)?, Next: How do I execute code at termination?, Prev: How do I abandon a file in the middle of a scan and switch to a new file?, Up: FAQ How do I execute code only during initialization (only before the first scan)? ============================================================================== You can specify an initial action by defining the macro `YY_USER_INIT' (though note that `yyout' may not be available at the time this macro is executed). Or you can add to the beginning of your rules section: %% /* Must be indented! */ static int did_init = 0; if ( ! did_init ){ do_my_init(); did_init = 1; }  File: flex.info, Node: How do I execute code at termination?, Next: Where else can I find help?, Prev: How do I execute code only during initialization (only before the first scan)?, Up: FAQ How do I execute code at termination? ===================================== You can specify an action for the `<>' rule.  File: flex.info, Node: Where else can I find help?, Next: Can I include comments in the "rules" section of the file?, Prev: How do I execute code at termination?, Up: FAQ Where else can I find help? =========================== You can find the flex homepage on the web at `http://flex.sourceforge.net/'. See that page for details about flex mailing lists as well.  File: flex.info, Node: Can I include comments in the "rules" section of the file?, Next: I get an error about undefined yywrap()., Prev: Where else can I find help?, Up: FAQ Can I include comments in the "rules" section of the file? ========================================================== Yes, just about anywhere you want to. See the manual for the specific syntax.  File: flex.info, Node: I get an error about undefined yywrap()., Next: How can I change the matching pattern at run time?, Prev: Can I include comments in the "rules" section of the file?, Up: FAQ I get an error about undefined yywrap(). ======================================== You must supply a `yywrap()' function of your own, or link to `libfl.a' (which provides one), or use %option noyywrap in your source to say you don't want a `yywrap()' function.  File: flex.info, Node: How can I change the matching pattern at run time?, Next: How can I expand macros in the input?, Prev: I get an error about undefined yywrap()., Up: FAQ How can I change the matching pattern at run time? ================================================== You can't, it's compiled into a static table when flex builds the scanner.  File: flex.info, Node: How can I expand macros in the input?, Next: How can I build a two-pass scanner?, Prev: How can I change the matching pattern at run time?, Up: FAQ How can I expand macros in the input? ===================================== The best way to approach this problem is at a higher level, e.g., in the parser. However, you can do this using multiple input buffers. %% macro/[a-z]+ { /* Saw the macro "macro" followed by extra stuff. */ main_buffer = YY_CURRENT_BUFFER; expansion_buffer = yy_scan_string(expand(yytext)); yy_switch_to_buffer(expansion_buffer); } <> { if ( expansion_buffer ) { // We were doing an expansion, return to where // we were. yy_switch_to_buffer(main_buffer); yy_delete_buffer(expansion_buffer); expansion_buffer = 0; } else yyterminate(); } You probably will want a stack of expansion buffers to allow nested macros. From the above though hopefully the idea is clear.  File: flex.info, Node: How can I build a two-pass scanner?, Next: How do I match any string not matched in the preceding rules?, Prev: How can I expand macros in the input?, Up: FAQ How can I build a two-pass scanner? =================================== One way to do it is to filter the first pass to a temporary file, then process the temporary file on the second pass. You will probably see a performance hit, due to all the disk I/O. When you need to look ahead far forward like this, it almost always means that the right solution is to build a parse tree of the entire input, then walk it after the parse in order to generate the output. In a sense, this is a two-pass approach, once through the text and once through the parse tree, but the performance hit for the latter is usually an order of magnitude smaller, since everything is already classified, in binary format, and residing in memory.  File: flex.info, Node: How do I match any string not matched in the preceding rules?, Next: I am trying to port code from AT&T lex that uses yysptr and yysbuf., Prev: How can I build a two-pass scanner?, Up: FAQ How do I match any string not matched in the preceding rules? ============================================================= One way to assign precedence, is to place the more specific rules first. If two rules would match the same input (same sequence of characters) then the first rule listed in the `flex' input wins, e.g., %% foo[a-zA-Z_]+ return FOO_ID; bar[a-zA-Z_]+ return BAR_ID; [a-zA-Z_]+ return GENERIC_ID; Note that the rule `[a-zA-Z_]+' must come *after* the others. It will match the same amount of text as the more specific rules, and in that case the `flex' scanner will pick the first rule listed in your scanner as the one to match.  File: flex.info, Node: I am trying to port code from AT&T lex that uses yysptr and yysbuf., Next: Is there a way to make flex treat NULL like a regular character?, Prev: How do I match any string not matched in the preceding rules?, Up: FAQ I am trying to port code from AT&T lex that uses yysptr and yysbuf. =================================================================== Those are internal variables pointing into the AT&T scanner's input buffer. I imagine they're being manipulated in user versions of the `input()' and `unput()' functions. If so, what you need to do is analyze those functions to figure out what they're doing, and then replace `input()' with an appropriate definition of `YY_INPUT'. You shouldn't need to (and must not) replace `flex''s `unput()' function.  File: flex.info, Node: Is there a way to make flex treat NULL like a regular character?, Next: Whenever flex can not match the input it says "flex scanner jammed"., Prev: I am trying to port code from AT&T lex that uses yysptr and yysbuf., Up: FAQ Is there a way to make flex treat NULL like a regular character? ================================================================ Yes, `\0' and `\x00' should both do the trick. Perhaps you have an ancient version of `flex'. The latest release is version 2.5.39.  File: flex.info, Node: Whenever flex can not match the input it says "flex scanner jammed"., Next: Why doesn't flex have non-greedy operators like perl does?, Prev: Is there a way to make flex treat NULL like a regular character?, Up: FAQ Whenever flex can not match the input it says "flex scanner jammed". ==================================================================== You need to add a rule that matches the otherwise-unmatched text, e.g., %option yylineno %% [[a bunch of rules here]] . printf("bad input character '%s' at line %d\n", yytext, yylineno); See `%option default' for more information.  File: flex.info, Node: Why doesn't flex have non-greedy operators like perl does?, Next: Memory leak - 16386 bytes allocated by malloc., Prev: Whenever flex can not match the input it says "flex scanner jammed"., Up: FAQ Why doesn't flex have non-greedy operators like perl does? ========================================================== A DFA can do a non-greedy match by stopping the first time it enters an accepting state, instead of consuming input until it determines that no further matching is possible (a "jam" state). This is actually easier to implement than longest leftmost match (which flex does). But it's also much less useful than longest leftmost match. In general, when you find yourself wishing for non-greedy matching, that's usually a sign that you're trying to make the scanner do some parsing. That's generally the wrong approach, since it lacks the power to do a decent job. Better is to either introduce a separate parser, or to split the scanner into multiple scanners using (exclusive) start conditions. You might have a separate start state once you've seen the `BEGIN'. In that state, you might then have a regex that will match `END' (to kick you out of the state), and perhaps `(.|\n)' to get a single character within the chunk ... This approach also has much better error-reporting properties.  File: flex.info, Node: Memory leak - 16386 bytes allocated by malloc., Next: How do I track the byte offset for lseek()?, Prev: Why doesn't flex have non-greedy operators like perl does?, Up: FAQ Memory leak - 16386 bytes allocated by malloc. ============================================== UPDATED 2002-07-10: As of `flex' version 2.5.9, this leak means that you did not call `yylex_destroy()'. If you are using an earlier version of `flex', then read on. The leak is about 16426 bytes. That is, (8192 * 2 + 2) for the read-buffer, and about 40 for `struct yy_buffer_state' (depending upon alignment). The leak is in the non-reentrant C scanner only (NOT in the reentrant scanner, NOT in the C++ scanner). Since `flex' doesn't know when you are done, the buffer is never freed. However, the leak won't multiply since the buffer is reused no matter how many times you call `yylex()'. If you want to reclaim the memory when you are completely done scanning, then you might try this: /* For non-reentrant C scanner only. */ yy_delete_buffer(YY_CURRENT_BUFFER); yy_init = 1; Note: `yy_init' is an "internal variable", and hasn't been tested in this situation. It is possible that some other globals may need resetting as well.  File: flex.info, Node: How do I track the byte offset for lseek()?, Next: How do I use my own I/O classes in a C++ scanner?, Prev: Memory leak - 16386 bytes allocated by malloc., Up: FAQ How do I track the byte offset for lseek()? =========================================== > We thought that it would be possible to have this number through the > evaluation of the following expression: > > seek_position = (no_buffers)*YY_READ_BUF_SIZE + yy_c_buf_p - YY_CURRENT_BUFFER->yy_ch_buf While this is the right idea, it has two problems. The first is that it's possible that `flex' will request less than `YY_READ_BUF_SIZE' during an invocation of `YY_INPUT' (or that your input source will return less even though `YY_READ_BUF_SIZE' bytes were requested). The second problem is that when refilling its internal buffer, `flex' keeps some characters from the previous buffer (because usually it's in the middle of a match, and needs those characters to construct `yytext' for the match once it's done). Because of this, `yy_c_buf_p - YY_CURRENT_BUFFER->yy_ch_buf' won't be exactly the number of characters already read from the current buffer. An alternative solution is to count the number of characters you've matched since starting to scan. This can be done by using `YY_USER_ACTION'. For example, #define YY_USER_ACTION num_chars += yyleng; (You need to be careful to update your bookkeeping if you use `yymore('), `yyless()', `unput()', or `input()'.)  File: flex.info, Node: How do I use my own I/O classes in a C++ scanner?, Next: How do I skip as many chars as possible?, Prev: How do I track the byte offset for lseek()?, Up: FAQ How do I use my own I/O classes in a C++ scanner? ================================================= When the flex C++ scanning class rewrite finally happens, then this sort of thing should become much easier. You can do this by passing the various functions (such as `LexerInput()' and `LexerOutput()') NULL `iostream*''s, and then dealing with your own I/O classes surreptitiously (i.e., stashing them in special member variables). This works because the only assumption about the lexer regarding what's done with the iostream's is that they're ultimately passed to `LexerInput()' and `LexerOutput', which then do whatever is necessary with them.  File: flex.info, Node: How do I skip as many chars as possible?, Next: deleteme00, Prev: How do I use my own I/O classes in a C++ scanner?, Up: FAQ How do I skip as many chars as possible? ======================================== How do I skip as many chars as possible - without interfering with the other patterns? In the example below, we want to skip over characters until we see the phrase "endskip". The following will _NOT_ work correctly (do you see why not?) /* INCORRECT SCANNER */ %x SKIP %% startskip BEGIN(SKIP); ... "endskip" BEGIN(INITIAL); .* ; The problem is that the pattern .* will eat up the word "endskip." The simplest (but slow) fix is: "endskip" BEGIN(INITIAL); . ; The fix involves making the second rule match more, without making it match "endskip" plus something else. So for example: "endskip" BEGIN(INITIAL); [^e]+ ; . ;/* so you eat up e's, too */  File: flex.info, Node: deleteme00, Next: Are certain equivalent patterns faster than others?, Prev: How do I skip as many chars as possible?, Up: FAQ deleteme00 ========== QUESTION: When was flex born? Vern Paxson took over the Software Tools lex project from Jef Poskanzer in 1982. At that point it was written in Ratfor. Around 1987 or so, Paxson translated it into C, and a legend was born :-).  File: flex.info, Node: Are certain equivalent patterns faster than others?, Next: Is backing up a big deal?, Prev: deleteme00, Up: FAQ Are certain equivalent patterns faster than others? =================================================== To: Adoram Rogel Subject: Re: Flex 2.5.2 performance questions In-reply-to: Your message of Wed, 18 Sep 96 11:12:17 EDT. Date: Wed, 18 Sep 96 10:51:02 PDT From: Vern Paxson [Note, the most recent flex release is 2.5.4, which you can get from ftp.ee.lbl.gov. It has bug fixes over 2.5.2 and 2.5.3.] > 1. Using the pattern > ([Ff](oot)?)?[Nn](ote)?(\.)? > instead of > (((F|f)oot(N|n)ote)|((N|n)ote)|((N|n)\.)|((F|f)(N|n)(\.))) > (in a very complicated flex program) caused the program to slow from > 300K+/min to 100K/min (no other changes were done). These two are not equivalent. For example, the first can match "footnote." but the second can only match "footnote". This is almost certainly the cause in the discrepancy - the slower scanner run is matching more tokens, and/or having to do more backing up. > 2. Which of these two are better: [Ff]oot or (F|f)oot ? From a performance point of view, they're equivalent (modulo presumably minor effects such as memory cache hit rates; and the presence of trailing context, see below). From a space point of view, the first is slightly preferable. > 3. I have a pattern that look like this: > pats {p1}|{p2}|{p3}|...|{p50} (50 patterns ORd) > > running yet another complicated program that includes the following rule: > {and}/{no4}{bb}{pats} > > gets me to "too complicated - over 32,000 states"... I can't tell from this example whether the trailing context is variable-length or fixed-length (it could be the latter if {and} is fixed-length). If it's variable length, which flex -p will tell you, then this reflects a basic performance problem, and if you can eliminate it by restructuring your scanner, you will see significant improvement. > so I divided {pats} to {pats1}, {pats2},..., {pats5} each consists of about > 10 patterns and changed the rule to be 5 rules. > This did compile, but what is the rule of thumb here ? The rule is to avoid trailing context other than fixed-length, in which for a/b, either the 'a' pattern or the 'b' pattern have a fixed length. Use of the '|' operator automatically makes the pattern variable length, so in this case '[Ff]oot' is preferred to '(F|f)oot'. > 4. I changed a rule that looked like this: > {and}{bb}/{ROMAN}[^A-Za-z] { BEGIN... > > to the next 2 rules: > {and}{bb}/{ROMAN}[A-Za-z] { ECHO;} > {and}{bb}/{ROMAN} { BEGIN... > > Again, I understand the using [^...] will cause a great performance loss Actually, it doesn't cause any sort of performance loss. It's a surprising fact about regular expressions that they always match in linear time regardless of how complex they are. > but are there any specific rules about it ? See the "Performance Considerations" section of the man page, and also the example in MISC/fastwc/. Vern  File: flex.info, Node: Is backing up a big deal?, Next: Can I fake multi-byte character support?, Prev: Are certain equivalent patterns faster than others?, Up: FAQ Is backing up a big deal? ========================= To: Adoram Rogel Subject: Re: Flex 2.5.2 performance questions In-reply-to: Your message of Thu, 19 Sep 96 10:16:04 EDT. Date: Thu, 19 Sep 96 09:58:00 PDT From: Vern Paxson > a lot about the backing up problem. > I believe that there lies my biggest problem, and I'll try to improve > it. Since you have variable trailing context, this is a bigger performance problem. Fixing it is usually easier than fixing backing up, which in a complicated scanner (yours seems to fit the bill) can be extremely difficult to do correctly. You also don't mention what flags you are using for your scanner. -f makes a large speed difference, and -Cfe buys you nearly as much speed but the resulting scanner is considerably smaller. > I have an | operator in {and} and in {pats} so both of them are variable > length. -p should have reported this. > Is changing one of them to fixed-length is enough ? Yes. > Is it possible to change the 32,000 states limit ? Yes. I've appended instructions on how. Before you make this change, though, you should think about whether there are ways to fundamentally simplify your scanner - those are certainly preferable! Vern To increase the 32K limit (on a machine with 32 bit integers), you increase the magnitude of the following in flexdef.h: #define JAMSTATE -32766 /* marks a reference to the state that always jams */ #define MAXIMUM_MNS 31999 #define BAD_SUBSCRIPT -32767 #define MAX_SHORT 32700 Adding a 0 or two after each should do the trick.  File: flex.info, Node: Can I fake multi-byte character support?, Next: deleteme01, Prev: Is backing up a big deal?, Up: FAQ Can I fake multi-byte character support? ======================================== To: Heeman_Lee@hp.com Subject: Re: flex - multi-byte support? In-reply-to: Your message of Thu, 03 Oct 1996 17:24:04 PDT. Date: Fri, 04 Oct 1996 11:42:18 PDT From: Vern Paxson > I assume as long as my *.l file defines the > range of expected character code values (in octal format), flex will > scan the file and read multi-byte characters correctly. But I have no > confidence in this assumption. Your lack of confidence is justified - this won't work. Flex has in it a widespread assumption that the input is processed one byte at a time. Fixing this is on the to-do list, but is involved, so it won't happen any time soon. In the interim, the best I can suggest (unless you want to try fixing it yourself) is to write your rules in terms of pairs of bytes, using definitions in the first section: X \xfe\xc2 ... %% foo{X}bar found_foo_fe_c2_bar(); etc. Definitely a pain - sorry about that. By the way, the email address you used for me is ancient, indicating you have a very old version of flex. You can get the most recent, 2.5.4, from ftp.ee.lbl.gov. Vern  File: flex.info, Node: deleteme01, Next: Can you discuss some flex internals?, Prev: Can I fake multi-byte character support?, Up: FAQ deleteme01 ========== To: moleary@primus.com Subject: Re: Flex / Unicode compatibility question In-reply-to: Your message of Tue, 22 Oct 1996 10:15:42 PDT. Date: Tue, 22 Oct 1996 11:06:13 PDT From: Vern Paxson Unfortunately flex at the moment has a widespread assumption within it that characters are processed 8 bits at a time. I don't see any easy fix for this (other than writing your rules in terms of double characters - a pain). I also don't know of a wider lex, though you might try surfing the Plan 9 stuff because I know it's a Unicode system, and also the PCCT toolkit (try searching say Alta Vista for "Purdue Compiler Construction Toolkit"). Fixing flex to handle wider characters is on the long-term to-do list. But since flex is a strictly spare-time project these days, this probably won't happen for quite a while, unless someone else does it first. Vern  File: flex.info, Node: Can you discuss some flex internals?, Next: unput() messes up yy_at_bol, Prev: deleteme01, Up: FAQ Can you discuss some flex internals? ==================================== To: Johan Linde Subject: Re: translation of flex In-reply-to: Your message of Sun, 10 Nov 1996 09:16:36 PST. Date: Mon, 11 Nov 1996 10:33:50 PST From: Vern Paxson > I'm working for the Swedish team translating GNU program, and I'm currently > working with flex. I have a few questions about some of the messages which > I hope you can answer. All of the things you're wondering about, by the way, concerning flex internals - probably the only person who understands what they mean in English is me! So I wouldn't worry too much about getting them right. That said ... > #: main.c:545 > msgid " %d protos created\n" > > Does proto mean prototype? Yes - prototypes of state compression tables. > #: main.c:539 > msgid " %d/%d (peak %d) template nxt-chk entries created\n" > > Here I'm mainly puzzled by 'nxt-chk'. I guess it means 'next-check'. (?) > However, 'template next-check entries' doesn't make much sense to me. To be > able to find a good translation I need to know a little bit more about it. There is a scheme in the Aho/Sethi/Ullman compiler book for compressing scanner tables. It involves creating two pairs of tables. The first has "base" and "default" entries, the second has "next" and "check" entries. The "base" entry is indexed by the current state and yields an index into the next/check table. The "default" entry gives what to do if the state transition isn't found in next/check. The "next" entry gives the next state to enter, but only if the "check" entry verifies that this entry is correct for the current state. Flex creates templates of series of next/check entries and then encodes differences from these templates as a way to compress the tables. > #: main.c:533 > msgid " %d/%d base-def entries created\n" > > The same problem here for 'base-def'. See above. Vern  File: flex.info, Node: unput() messes up yy_at_bol, Next: The | operator is not doing what I want, Prev: Can you discuss some flex internals?, Up: FAQ unput() messes up yy_at_bol =========================== To: Xinying Li Subject: Re: FLEX ? In-reply-to: Your message of Wed, 13 Nov 1996 17:28:38 PST. Date: Wed, 13 Nov 1996 19:51:54 PST From: Vern Paxson > "unput()" them to input flow, question occurs. If I do this after I scan > a carriage, the variable "YY_CURRENT_BUFFER->yy_at_bol" is changed. That > means the carriage flag has gone. You can control this by calling yy_set_bol(). It's described in the manual. > And if in pre-reading it goes to the end of file, is anything done > to control the end of curren buffer and end of file? No, there's no way to put back an end-of-file. > By the way I am using flex 2.5.2 and using the "-l". The latest release is 2.5.4, by the way. It fixes some bugs in 2.5.2 and 2.5.3. You can get it from ftp.ee.lbl.gov. Vern  File: flex.info, Node: The | operator is not doing what I want, Next: Why can't flex understand this variable trailing context pattern?, Prev: unput() messes up yy_at_bol, Up: FAQ The | operator is not doing what I want ======================================= To: Alain.ISSARD@st.com Subject: Re: Start condition with FLEX In-reply-to: Your message of Mon, 18 Nov 1996 09:45:02 PST. Date: Mon, 18 Nov 1996 10:41:34 PST From: Vern Paxson > I am not able to use the start condition scope and to use the | (OR) with > rules having start conditions. The problem is that if you use '|' as a regular expression operator, for example "a|b" meaning "match either 'a' or 'b'", then it must *not* have any blanks around it. If you instead want the special '|' *action* (which from your scanner appears to be the case), which is a way of giving two different rules the same action: foo | bar matched_foo_or_bar(); then '|' *must* be separated from the first rule by whitespace and *must* be followed by a new line. You *cannot* write it as: foo | bar matched_foo_or_bar(); even though you might think you could because yacc supports this syntax. The reason for this unfortunately incompatibility is historical, but it's unlikely to be changed. Your problems with start condition scope are simply due to syntax errors from your use of '|' later confusing flex. Let me know if you still have problems. Vern  File: flex.info, Node: Why can't flex understand this variable trailing context pattern?, Next: The ^ operator isn't working, Prev: The | operator is not doing what I want, Up: FAQ Why can't flex understand this variable trailing context pattern? ================================================================= To: Gregory Margo Subject: Re: flex-2.5.3 bug report In-reply-to: Your message of Sat, 23 Nov 1996 16:50:09 PST. Date: Sat, 23 Nov 1996 17:07:32 PST From: Vern Paxson > Enclosed is a lex file that "real" lex will process, but I cannot get > flex to process it. Could you try it and maybe point me in the right direction? Your problem is that some of the definitions in the scanner use the '/' trailing context operator, and have it enclosed in ()'s. Flex does not allow this operator to be enclosed in ()'s because doing so allows undefined regular expressions such as "(a/b)+". So the solution is to remove the parentheses. Note that you must also be building the scanner with the -l option for AT&T lex compatibility. Without this option, flex automatically encloses the definitions in parentheses. Vern  File: flex.info, Node: The ^ operator isn't working, Next: Trailing context is getting confused with trailing optional patterns, Prev: Why can't flex understand this variable trailing context pattern?, Up: FAQ The ^ operator isn't working ============================ To: Thomas Hadig Subject: Re: Flex Bug ? In-reply-to: Your message of Tue, 26 Nov 1996 14:35:01 PST. Date: Tue, 26 Nov 1996 11:15:05 PST From: Vern Paxson > In my lexer code, i have the line : > ^\*.* { } > > Thus all lines starting with an astrix (*) are comment lines. > This does not work ! I can't get this problem to reproduce - it works fine for me. Note though that if what you have is slightly different: COMMENT ^\*.* %% {COMMENT} { } then it won't work, because flex pushes back macro definitions enclosed in ()'s, so the rule becomes (^\*.*) { } and now that the '^' operator is not at the immediate beginning of the line, it's interpreted as just a regular character. You can avoid this behavior by using the "-l" lex-compatibility flag, or "%option lex-compat". Vern  File: flex.info, Node: Trailing context is getting confused with trailing optional patterns, Next: Is flex GNU or not?, Prev: The ^ operator isn't working, Up: FAQ Trailing context is getting confused with trailing optional patterns ==================================================================== To: Adoram Rogel Subject: Re: Flex 2.5.4 BOF ??? In-reply-to: Your message of Tue, 26 Nov 1996 16:10:41 PST. Date: Wed, 27 Nov 1996 10:56:25 PST From: Vern Paxson > Organization(s)?/[a-z] > > This matched "Organizations" (looking in debug mode, the trailing s > was matched with trailing context instead of the optional (s) in the > end of the word. That should only happen with lex. Flex can properly match this pattern. (That might be what you're saying, I'm just not sure.) > Is there a way to avoid this dangerous trailing context problem ? Unfortunately, there's no easy way. On the other hand, I don't see why it should be a problem. Lex's matching is clearly wrong, and I'd hope that usually the intent remains the same as expressed with the pattern, so flex's matching will be correct. Vern  File: flex.info, Node: Is flex GNU or not?, Next: ERASEME53, Prev: Trailing context is getting confused with trailing optional patterns, Up: FAQ Is flex GNU or not? =================== To: Cameron MacKinnon Subject: Re: Flex documentation bug In-reply-to: Your message of Mon, 02 Dec 1996 00:07:08 PST. Date: Sun, 01 Dec 1996 22:29:39 PST From: Vern Paxson > I'm not sure how or where to submit bug reports (documentation or > otherwise) for the GNU project stuff ... Well, strictly speaking flex isn't part of the GNU project. They just distribute it because no one's written a decent GPL'd lex replacement. So you should send bugs directly to me. Those sent to the GNU folks sometimes find there way to me, but some may drop between the cracks. > In GNU Info, under the section 'Start Conditions', and also in the man > page (mine's dated April '95) is a nice little snippet showing how to > parse C quoted strings into a buffer, defined to be MAX_STR_CONST in > size. Unfortunately, no overflow checking is ever done ... This is already mentioned in the manual: Finally, here's an example of how to match C-style quoted strings using exclusive start conditions, including expanded escape sequences (but not including checking for a string that's too long): The reason for not doing the overflow checking is that it will needlessly clutter up an example whose main purpose is just to demonstrate how to use flex. The latest release is 2.5.4, by the way, available from ftp.ee.lbl.gov. Vern  File: flex.info, Node: ERASEME53, Next: I need to scan if-then-else blocks and while loops, Prev: Is flex GNU or not?, Up: FAQ ERASEME53 ========= To: tsv@cs.UManitoba.CA Subject: Re: Flex (reg).. In-reply-to: Your message of Thu, 06 Mar 1997 23:50:16 PST. Date: Thu, 06 Mar 1997 15:54:19 PST From: Vern Paxson > [:alpha:] ([:alnum:] | \\_)* If your rule really has embedded blanks as shown above, then it won't work, as the first blank delimits the rule from the action. (It wouldn't even compile ...) You need instead: [:alpha:]([:alnum:]|\\_)* and that should work fine - there's no restriction on what can go inside of ()'s except for the trailing context operator, '/'. Vern  File: flex.info, Node: I need to scan if-then-else blocks and while loops, Next: ERASEME55, Prev: ERASEME53, Up: FAQ I need to scan if-then-else blocks and while loops ================================================== To: "Mike Stolnicki" Subject: Re: FLEX help In-reply-to: Your message of Fri, 30 May 1997 13:33:27 PDT. Date: Fri, 30 May 1997 10:46:35 PDT From: Vern Paxson > We'd like to add "if-then-else", "while", and "for" statements to our > language ... > We've investigated many possible solutions. The one solution that seems > the most reasonable involves knowing the position of a TOKEN in yyin. I strongly advise you to instead build a parse tree (abstract syntax tree) and loop over that instead. You'll find this has major benefits in keeping your interpreter simple and extensible. That said, the functionality you mention for get_position and set_position have been on the to-do list for a while. As flex is a purely spare-time project for me, no guarantees when this will be added (in particular, it for sure won't be for many months to come). Vern  File: flex.info, Node: ERASEME55, Next: ERASEME56, Prev: I need to scan if-then-else blocks and while loops, Up: FAQ ERASEME55 ========= To: Colin Paul Adams Subject: Re: Flex C++ classes and Bison In-reply-to: Your message of 09 Aug 1997 17:11:41 PDT. Date: Fri, 15 Aug 1997 10:48:19 PDT From: Vern Paxson > #define YY_DECL int yylex (YYSTYPE *lvalp, struct parser_control > *parm) > > I have been trying to get this to work as a C++ scanner, but it does > not appear to be possible (warning that it matches no declarations in > yyFlexLexer, or something like that). > > Is this supposed to be possible, or is it being worked on (I DID > notice the comment that scanner classes are still experimental, so I'm > not too hopeful)? What you need to do is derive a subclass from yyFlexLexer that provides the above yylex() method, squirrels away lvalp and parm into member variables, and then invokes yyFlexLexer::yylex() to do the regular scanning. Vern  File: flex.info, Node: ERASEME56, Next: ERASEME57, Prev: ERASEME55, Up: FAQ ERASEME56 ========= To: Mikael.Latvala@lmf.ericsson.se Subject: Re: Possible mistake in Flex v2.5 document In-reply-to: Your message of Fri, 05 Sep 1997 16:07:24 PDT. Date: Fri, 05 Sep 1997 10:01:54 PDT From: Vern Paxson > In that example you show how to count comment lines when using > C style /* ... */ comments. My question is, shouldn't you take into > account a scenario where end of a comment marker occurs inside > character or string literals? The scanner certainly needs to also scan character and string literals. However it does that (there's an example in the man page for strings), the lexer will recognize the beginning of the literal before it runs across the embedded "/*". Consequently, it will finish scanning the literal before it even considers the possibility of matching "/*". Example: '([^']*|{ESCAPE_SEQUENCE})' will match all the text between the ''s (inclusive). So the lexer considers this as a token beginning at the first ', and doesn't even attempt to match other tokens inside it. I thinnk this subtlety is not worth putting in the manual, as I suspect it would confuse more people than it would enlighten. Vern  File: flex.info, Node: ERASEME57, Next: Is there a repository for flex scanners?, Prev: ERASEME56, Up: FAQ ERASEME57 ========= To: "Marty Leisner" Subject: Re: flex limitations In-reply-to: Your message of Sat, 06 Sep 1997 11:27:21 PDT. Date: Mon, 08 Sep 1997 11:38:08 PDT From: Vern Paxson > %% > [a-zA-Z]+ /* skip a line */ > { printf("got %s\n", yytext); } > %% What version of flex are you using? If I feed this to 2.5.4, it complains: "bug.l", line 5: EOF encountered inside an action "bug.l", line 5: unrecognized rule "bug.l", line 5: fatal parse error Not the world's greatest error message, but it manages to flag the problem. (With the introduction of start condition scopes, flex can't accommodate an action on a separate line, since it's ambiguous with an indented rule.) You can get 2.5.4 from ftp.ee.lbl.gov. Vern  File: flex.info, Node: Is there a repository for flex scanners?, Next: How can I conditionally compile or preprocess my flex input file?, Prev: ERASEME57, Up: FAQ Is there a repository for flex scanners? ======================================== Not that we know of. You might try asking on comp.compilers.  File: flex.info, Node: How can I conditionally compile or preprocess my flex input file?, Next: Where can I find grammars for lex and yacc?, Prev: Is there a repository for flex scanners?, Up: FAQ How can I conditionally compile or preprocess my flex input file? ================================================================= Flex doesn't have a preprocessor like C does. You might try using m4, or the C preprocessor plus a sed script to clean up the result.  File: flex.info, Node: Where can I find grammars for lex and yacc?, Next: I get an end-of-buffer message for each character scanned., Prev: How can I conditionally compile or preprocess my flex input file?, Up: FAQ Where can I find grammars for lex and yacc? =========================================== In the sources for flex and bison.  File: flex.info, Node: I get an end-of-buffer message for each character scanned., Next: unnamed-faq-62, Prev: Where can I find grammars for lex and yacc?, Up: FAQ I get an end-of-buffer message for each character scanned. ========================================================== This will happen if your LexerInput() function returns only one character at a time, which can happen either if you're scanner is "interactive", or if the streams library on your platform always returns 1 for yyin->gcount(). Solution: override LexerInput() with a version that returns whole buffers.  File: flex.info, Node: unnamed-faq-62, Next: unnamed-faq-63, Prev: I get an end-of-buffer message for each character scanned., Up: FAQ unnamed-faq-62 ============== To: Georg.Rehm@CL-KI.Uni-Osnabrueck.DE Subject: Re: Flex maximums In-reply-to: Your message of Mon, 17 Nov 1997 17:16:06 PST. Date: Mon, 17 Nov 1997 17:16:15 PST From: Vern Paxson > I took a quick look into the flex-sources and altered some #defines in > flexdefs.h: > > #define INITIAL_MNS 64000 > #define MNS_INCREMENT 1024000 > #define MAXIMUM_MNS 64000 The things to fix are to add a couple of zeroes to: #define JAMSTATE -32766 /* marks a reference to the state that always jams */ #define MAXIMUM_MNS 31999 #define BAD_SUBSCRIPT -32767 #define MAX_SHORT 32700 and, if you get complaints about too many rules, make the following change too: #define YY_TRAILING_MASK 0x200000 #define YY_TRAILING_HEAD_MASK 0x400000 - Vern  File: flex.info, Node: unnamed-faq-63, Next: unnamed-faq-64, Prev: unnamed-faq-62, Up: FAQ unnamed-faq-63 ============== To: jimmey@lexis-nexis.com (Jimmey Todd) Subject: Re: FLEX question regarding istream vs ifstream In-reply-to: Your message of Mon, 08 Dec 1997 15:54:15 PST. Date: Mon, 15 Dec 1997 13:21:35 PST From: Vern Paxson > stdin_handle = YY_CURRENT_BUFFER; > ifstream fin( "aFile" ); > yy_switch_to_buffer( yy_create_buffer( fin, YY_BUF_SIZE ) ); > > What I'm wanting to do, is pass the contents of a file thru one set > of rules and then pass stdin thru another set... It works great if, I > don't use the C++ classes. But since everything else that I'm doing is > in C++, I thought I'd be consistent. > > The problem is that 'yy_create_buffer' is expecting an istream* as it's > first argument (as stated in the man page). However, fin is a ifstream > object. Any ideas on what I might be doing wrong? Any help would be > appreciated. Thanks!! You need to pass &fin, to turn it into an ifstream* instead of an ifstream. Then its type will be compatible with the expected istream*, because ifstream is derived from istream. Vern  File: flex.info, Node: unnamed-faq-64, Next: unnamed-faq-65, Prev: unnamed-faq-63, Up: FAQ unnamed-faq-64 ============== To: Enda Fadian Subject: Re: Question related to Flex man page? In-reply-to: Your message of Tue, 16 Dec 1997 15:17:34 PST. Date: Tue, 16 Dec 1997 14:17:09 PST From: Vern Paxson > Can you explain to me what is ment by a long-jump in relation to flex? Using the longjmp() function while inside yylex() or a routine called by it. > what is the flex activation frame. Just yylex()'s stack frame. > As far as I can see yyrestart will bring me back to the sart of the input > file and using flex++ isnot really an option! No, yyrestart() doesn't imply a rewind, even though its name might sound like it does. It tells the scanner to flush its internal buffers and start reading from the given file at its present location. Vern  File: flex.info, Node: unnamed-faq-65, Next: unnamed-faq-66, Prev: unnamed-faq-64, Up: FAQ unnamed-faq-65 ============== To: hassan@larc.info.uqam.ca (Hassan Alaoui) Subject: Re: Need urgent Help In-reply-to: Your message of Sat, 20 Dec 1997 19:38:19 PST. Date: Sun, 21 Dec 1997 21:30:46 PST From: Vern Paxson > /usr/lib/yaccpar: In function `int yyparse()': > /usr/lib/yaccpar:184: warning: implicit declaration of function `int yylex(...)' > > ld: Undefined symbol > _yylex > _yyparse > _yyin This is a known problem with Solaris C++ (and/or Solaris yacc). I believe the fix is to explicitly insert some 'extern "C"' statements for the corresponding routines/symbols. Vern  File: flex.info, Node: unnamed-faq-66, Next: unnamed-faq-67, Prev: unnamed-faq-65, Up: FAQ unnamed-faq-66 ============== To: mc0307@mclink.it Cc: gnu@prep.ai.mit.edu Subject: Re: [mc0307@mclink.it: Help request] In-reply-to: Your message of Fri, 12 Dec 1997 17:57:29 PST. Date: Sun, 21 Dec 1997 22:33:37 PST From: Vern Paxson > This is my definition for float and integer types: > . . . > NZD [1-9] > ... > I've tested my program on other lex version (on UNIX Sun Solaris an HP > UNIX) and it work well, so I think that my definitions are correct. > There are any differences between Lex and Flex? There are indeed differences, as discussed in the man page. The one you are probably running into is that when flex expands a name definition, it puts parentheses around the expansion, while lex does not. There's an example in the man page of how this can lead to different matching. Flex's behavior complies with the POSIX standard (or at least with the last POSIX draft I saw). Vern  File: flex.info, Node: unnamed-faq-67, Next: unnamed-faq-68, Prev: unnamed-faq-66, Up: FAQ unnamed-faq-67 ============== To: hassan@larc.info.uqam.ca (Hassan Alaoui) Subject: Re: Thanks In-reply-to: Your message of Mon, 22 Dec 1997 16:06:35 PST. Date: Mon, 22 Dec 1997 14:35:05 PST From: Vern Paxson > Thank you very much for your help. I compile and link well with C++ while > declaring 'yylex ...' extern, But a little problem remains. I get a > segmentation default when executing ( I linked with lfl library) while it > works well when using LEX instead of flex. Do you have some ideas about the > reason for this ? The one possible reason for this that comes to mind is if you've defined yytext as "extern char yytext[]" (which is what lex uses) instead of "extern char *yytext" (which is what flex uses). If it's not that, then I'm afraid I don't know what the problem might be. Vern  File: flex.info, Node: unnamed-faq-68, Next: unnamed-faq-69, Prev: unnamed-faq-67, Up: FAQ unnamed-faq-68 ============== To: "Bart Niswonger" Subject: Re: flex 2.5: c++ scanners & start conditions In-reply-to: Your message of Tue, 06 Jan 1998 10:34:21 PST. Date: Tue, 06 Jan 1998 19:19:30 PST From: Vern Paxson > The problem is that when I do this (using %option c++) start > conditions seem to not apply. The BEGIN macro modifies the yy_start variable. For C scanners, this is a static with scope visible through the whole file. For C++ scanners, it's a member variable, so it only has visible scope within a member function. Your lexbegin() routine is not a member function when you build a C++ scanner, so it's not modifying the correct yy_start. The diagnostic that indicates this is that you found you needed to add a declaration of yy_start in order to get your scanner to compile when using C++; instead, the correct fix is to make lexbegin() a member function (by deriving from yyFlexLexer). Vern  File: flex.info, Node: unnamed-faq-69, Next: unnamed-faq-70, Prev: unnamed-faq-68, Up: FAQ unnamed-faq-69 ============== To: "Boris Zinin" Subject: Re: current position in flex buffer In-reply-to: Your message of Mon, 12 Jan 1998 18:58:23 PST. Date: Mon, 12 Jan 1998 12:03:15 PST From: Vern Paxson > The problem is how to determine the current position in flex active > buffer when a rule is matched.... You will need to keep track of this explicitly, such as by redefining YY_USER_ACTION to count the number of characters matched. The latest flex release, by the way, is 2.5.4, available from ftp.ee.lbl.gov. Vern  File: flex.info, Node: unnamed-faq-70, Next: unnamed-faq-71, Prev: unnamed-faq-69, Up: FAQ unnamed-faq-70 ============== To: Bik.Dhaliwal@bis.org Subject: Re: Flex question In-reply-to: Your message of Mon, 26 Jan 1998 13:05:35 PST. Date: Tue, 27 Jan 1998 22:41:52 PST From: Vern Paxson > That requirement involves knowing > the character position at which a particular token was matched > in the lexer. The way you have to do this is by explicitly keeping track of where you are in the file, by counting the number of characters scanned for each token (available in yyleng). It may prove convenient to do this by redefining YY_USER_ACTION, as described in the manual. Vern  File: flex.info, Node: unnamed-faq-71, Next: unnamed-faq-72, Prev: unnamed-faq-70, Up: FAQ unnamed-faq-71 ============== To: Vladimir Alexiev Subject: Re: flex: how to control start condition from parser? In-reply-to: Your message of Mon, 26 Jan 1998 05:50:16 PST. Date: Tue, 27 Jan 1998 22:45:37 PST From: Vern Paxson > It seems useful for the parser to be able to tell the lexer about such > context dependencies, because then they don't have to be limited to > local or sequential context. One way to do this is to have the parser call a stub routine that's included in the scanner's .l file, and consequently that has access ot BEGIN. The only ugliness is that the parser can't pass in the state it wants, because those aren't visible - but if you don't have many such states, then using a different set of names doesn't seem like to much of a burden. While generating a .h file like you suggests is certainly cleaner, flex development has come to a virtual stand-still :-(, so a workaround like the above is much more pragmatic than waiting for a new feature. Vern  File: flex.info, Node: unnamed-faq-72, Next: unnamed-faq-73, Prev: unnamed-faq-71, Up: FAQ unnamed-faq-72 ============== To: Barbara Denny Subject: Re: freebsd flex bug? In-reply-to: Your message of Fri, 30 Jan 1998 12:00:43 PST. Date: Fri, 30 Jan 1998 12:42:32 PST From: Vern Paxson > lex.yy.c:1996: parse error before `=' This is the key, identifying this error. (It may help to pinpoint it by using flex -L, so it doesn't generate #line directives in its output.) I will bet you heavy money that you have a start condition name that is also a variable name, or something like that; flex spits out #define's for each start condition name, mapping them to a number, so you can wind up with: %x foo %% ... %% void bar() { int foo = 3; } and the penultimate will turn into "int 1 = 3" after C preprocessing, since flex will put "#define foo 1" in the generated scanner. Vern  File: flex.info, Node: unnamed-faq-73, Next: unnamed-faq-74, Prev: unnamed-faq-72, Up: FAQ unnamed-faq-73 ============== To: Maurice Petrie Subject: Re: Lost flex .l file In-reply-to: Your message of Mon, 02 Feb 1998 14:10:01 PST. Date: Mon, 02 Feb 1998 11:15:12 PST From: Vern Paxson > I am curious as to > whether there is a simple way to backtrack from the generated source to > reproduce the lost list of tokens we are searching on. In theory, it's straight-forward to go from the DFA representation back to a regular-expression representation - the two are isomorphic. In practice, a huge headache, because you have to unpack all the tables back into a single DFA representation, and then write a program to munch on that and translate it into an RE. Sorry for the less-than-happy news ... Vern  File: flex.info, Node: unnamed-faq-74, Next: unnamed-faq-75, Prev: unnamed-faq-73, Up: FAQ unnamed-faq-74 ============== To: jimmey@lexis-nexis.com (Jimmey Todd) Subject: Re: Flex performance question In-reply-to: Your message of Thu, 19 Feb 1998 11:01:17 PST. Date: Thu, 19 Feb 1998 08:48:51 PST From: Vern Paxson > What I have found, is that the smaller the data chunk, the faster the > program executes. This is the opposite of what I expected. Should this be > happening this way? This is exactly what will happen if your input file has embedded NULs. From the man page: A final note: flex is slow when matching NUL's, particularly when a token contains multiple NUL's. It's best to write rules which match short amounts of text if it's anticipated that the text will often include NUL's. So that's the first thing to look for. Vern  File: flex.info, Node: unnamed-faq-75, Next: unnamed-faq-76, Prev: unnamed-faq-74, Up: FAQ unnamed-faq-75 ============== To: jimmey@lexis-nexis.com (Jimmey Todd) Subject: Re: Flex performance question In-reply-to: Your message of Thu, 19 Feb 1998 11:01:17 PST. Date: Thu, 19 Feb 1998 15:42:25 PST From: Vern Paxson So there are several problems. First, to go fast, you want to match as much text as possible, which your scanners don't in the case that what they're scanning is *not* a tag. So you want a rule like: [^<]+ Second, C++ scanners are particularly slow if they're interactive, which they are by default. Using -B speeds it up by a factor of 3-4 on my workstation. Third, C++ scanners that use the istream interface are slow, because of how poorly implemented istream's are. I built two versions of the following scanner: %% .*\n .* %% and the C version inhales a 2.5MB file on my workstation in 0.8 seconds. The C++ istream version, using -B, takes 3.8 seconds. Vern  File: flex.info, Node: unnamed-faq-76, Next: unnamed-faq-77, Prev: unnamed-faq-75, Up: FAQ unnamed-faq-76 ============== To: "Frescatore, David (CRD, TAD)" Subject: Re: FLEX 2.5 & THE YEAR 2000 In-reply-to: Your message of Wed, 03 Jun 1998 11:26:22 PDT. Date: Wed, 03 Jun 1998 10:22:26 PDT From: Vern Paxson > I am researching the Y2K problem with General Electric R&D > and need to know if there are any known issues concerning > the above mentioned software and Y2K regardless of version. There shouldn't be, all it ever does with the date is ask the system for it and then print it out. Vern  File: flex.info, Node: unnamed-faq-77, Next: unnamed-faq-78, Prev: unnamed-faq-76, Up: FAQ unnamed-faq-77 ============== To: "Hans Dermot Doran" Subject: Re: flex problem In-reply-to: Your message of Wed, 15 Jul 1998 21:30:13 PDT. Date: Tue, 21 Jul 1998 14:23:34 PDT From: Vern Paxson > To overcome this, I gets() the stdin into a string and lex the string. The > string is lexed OK except that the end of string isn't lexed properly > (yy_scan_string()), that is the lexer dosn't recognise the end of string. Flex doesn't contain mechanisms for recognizing buffer endpoints. But if you use fgets instead (which you should anyway, to protect against buffer overflows), then the final \n will be preserved in the string, and you can scan that in order to find the end of the string. Vern  File: flex.info, Node: unnamed-faq-78, Next: unnamed-faq-79, Prev: unnamed-faq-77, Up: FAQ unnamed-faq-78 ============== To: soumen@almaden.ibm.com Subject: Re: Flex++ 2.5.3 instance member vs. static member In-reply-to: Your message of Mon, 27 Jul 1998 02:10:04 PDT. Date: Tue, 28 Jul 1998 01:10:34 PDT From: Vern Paxson > %{ > int mylineno = 0; > %} > ws [ \t]+ > alpha [A-Za-z] > dig [0-9] > %% > > Now you'd expect mylineno to be a member of each instance of class > yyFlexLexer, but is this the case? A look at the lex.yy.cc file seems to > indicate otherwise; unless I am missing something the declaration of > mylineno seems to be outside any class scope. > > How will this work if I want to run a multi-threaded application with each > thread creating a FlexLexer instance? Derive your own subclass and make mylineno a member variable of it. Vern  File: flex.info, Node: unnamed-faq-79, Next: unnamed-faq-80, Prev: unnamed-faq-78, Up: FAQ unnamed-faq-79 ============== To: Adoram Rogel Subject: Re: More than 32K states change hangs In-reply-to: Your message of Tue, 04 Aug 1998 16:55:39 PDT. Date: Tue, 04 Aug 1998 22:28:45 PDT From: Vern Paxson > Vern Paxson, > > I followed your advice, posted on Usenet bu you, and emailed to me > personally by you, on how to overcome the 32K states limit. I'm running > on Linux machines. > I took the full source of version 2.5.4 and did the following changes in > flexdef.h: > #define JAMSTATE -327660 > #define MAXIMUM_MNS 319990 > #define BAD_SUBSCRIPT -327670 > #define MAX_SHORT 327000 > > and compiled. > All looked fine, including check and bigcheck, so I installed. Hmmm, you shouldn't increase MAX_SHORT, though looking through my email archives I see that I did indeed recommend doing so. Try setting it back to 32700; that should suffice that you no longer need -Ca. If it still hangs, then the interesting question is - where? > Compiling the same hanged program with a out-of-the-box (RedHat 4.2 > distribution of Linux) > flex 2.5.4 binary works. Since Linux comes with source code, you should diff it against what you have to see what problems they missed. > Should I always compile with the -Ca option now ? even short and simple > filters ? No, definitely not. It's meant to be for those situations where you absolutely must squeeze every last cycle out of your scanner. Vern  File: flex.info, Node: unnamed-faq-80, Next: unnamed-faq-81, Prev: unnamed-faq-79, Up: FAQ unnamed-faq-80 ============== To: "Schmackpfeffer, Craig" Subject: Re: flex output for static code portion In-reply-to: Your message of Tue, 11 Aug 1998 11:55:30 PDT. Date: Mon, 17 Aug 1998 23:57:42 PDT From: Vern Paxson > I would like to use flex under the hood to generate a binary file > containing the data structures that control the parse. This has been on the wish-list for a long time. In principle it's straight-forward - you redirect mkdata() et al's I/O to another file, and modify the skeleton to have a start-up function that slurps these into dynamic arrays. The concerns are (1) the scanner generation code is hairy and full of corner cases, so it's easy to get surprised when going down this path :-( ; and (2) being careful about buffering so that when the tables change you make sure the scanner starts in the correct state and reading at the right point in the input file. > I was wondering if you know of anyone who has used flex in this way. I don't - but it seems like a reasonable project to undertake (unlike numerous other flex tweaks :-). Vern  File: flex.info, Node: unnamed-faq-81, Next: unnamed-faq-82, Prev: unnamed-faq-80, Up: FAQ unnamed-faq-81 ============== Received: from 131.173.17.11 (131.173.17.11 [131.173.17.11]) by ee.lbl.gov (8.9.1/8.9.1) with ESMTP id AAA03838 for ; Thu, 20 Aug 1998 00:47:57 -0700 (PDT) Received: from hal.cl-ki.uni-osnabrueck.de (hal.cl-ki.Uni-Osnabrueck.DE [131.173.141.2]) by deimos.rz.uni-osnabrueck.de (8.8.7/8.8.8) with ESMTP id JAA34694 for ; Thu, 20 Aug 1998 09:47:55 +0200 Received: (from georg@localhost) by hal.cl-ki.uni-osnabrueck.de (8.6.12/8.6.12) id JAA34834 for vern@ee.lbl.gov; Thu, 20 Aug 1998 09:47:54 +0200 From: Georg Rehm Message-Id: <199808200747.JAA34834@hal.cl-ki.uni-osnabrueck.de> Subject: "flex scanner push-back overflow" To: vern@ee.lbl.gov Date: Thu, 20 Aug 1998 09:47:54 +0200 (MEST) Reply-To: Georg.Rehm@CL-KI.Uni-Osnabrueck.DE X-NoJunk: Do NOT send commercial mail, spam or ads to this address! X-URL: http://www.cl-ki.uni-osnabrueck.de/~georg/ X-Mailer: ELM [version 2.4ME+ PL28 (25)] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Hi Vern, Yesterday, I encountered a strange problem: I use the macro processor m4 to include some lengthy lists into a .l file. Following is a flex macro definition that causes some serious pain in my neck: AUTHOR ("A. Boucard / L. Boucard"|"A. Dastarac / M. Levent"|"A.Boucaud / L.Boucaud"|"Abderrahim Lamchichi"|"Achmat Dangor"|"Adeline Toullier"|"Adewale Maja-Pearce"|"Ahmed Ziri"|"Akram Ellyas"|"Alain Bihr"|"Alain Gresh"|"Alain Guillemoles"|"Alain Joxe"|"Alain Morice"|"Alain Renon"|"Alain Zecchini"|"Albert Memmi"|"Alberto Manguel"|"Alex De Waal"|"Alfonso Artico"| [...]) The complete list contains about 10kB. When I try to "flex" this file (on a Solaris 2.6 machine, using a modified flex 2.5.4 (I only increased some of the predefined values in flexdefs.h) I get the error: myflex/flex -8 sentag.tmp.l flex scanner push-back overflow When I remove the slashes in the macro definition everything works fine. As I understand it, the double quotes escape the slash-character so it really means "/" and not "trailing context". Furthermore, I tried to escape the slashes with backslashes, but with no use, the same error message appeared when flexing the code. Do you have an idea what's going on here? Greetings from Germany, Georg -- Georg Rehm georg@cl-ki.uni-osnabrueck.de Institute for Semantic Information Processing, University of Osnabrueck, FRG  File: flex.info, Node: unnamed-faq-82, Next: unnamed-faq-83, Prev: unnamed-faq-81, Up: FAQ unnamed-faq-82 ============== To: Georg.Rehm@CL-KI.Uni-Osnabrueck.DE Subject: Re: "flex scanner push-back overflow" In-reply-to: Your message of Thu, 20 Aug 1998 09:47:54 PDT. Date: Thu, 20 Aug 1998 07:05:35 PDT From: Vern Paxson > myflex/flex -8 sentag.tmp.l > flex scanner push-back overflow Flex itself uses a flex scanner. That scanner is running out of buffer space when it tries to unput() the humongous macro you've defined. When you remove the '/'s, you make it small enough so that it fits in the buffer; removing spaces would do the same thing. The fix is to either rethink how come you're using such a big macro and perhaps there's another/better way to do it; or to rebuild flex's own scan.c with a larger value for #define YY_BUF_SIZE 16384 - Vern  File: flex.info, Node: unnamed-faq-83, Next: unnamed-faq-84, Prev: unnamed-faq-82, Up: FAQ unnamed-faq-83 ============== To: Jan Kort Subject: Re: Flex In-reply-to: Your message of Fri, 04 Sep 1998 12:18:43 +0200. Date: Sat, 05 Sep 1998 00:59:49 PDT From: Vern Paxson > %% > > "TEST1\n" { fprintf(stderr, "TEST1\n"); yyless(5); } > ^\n { fprintf(stderr, "empty line\n"); } > . { } > \n { fprintf(stderr, "new line\n"); } > > %% > -- input --------------------------------------- > TEST1 > -- output -------------------------------------- > TEST1 > empty line > ------------------------------------------------ IMHO, it's not clear whether or not this is in fact a bug. It depends on whether you view yyless() as backing up in the input stream, or as pushing new characters onto the beginning of the input stream. Flex interprets it as the latter (for implementation convenience, I'll admit), and so considers the newline as in fact matching at the beginning of a line, as after all the last token scanned an entire line and so the scanner is now at the beginning of a new line. I agree that this is counter-intuitive for yyless(), given its functional description (it's less so for unput(), depending on whether you're unput()'ing new text or scanned text). But I don't plan to change it any time soon, as it's a pain to do so. Consequently, you do indeed need to use yy_set_bol() and YY_AT_BOL() to tweak your scanner into the behavior you desire. Sorry for the less-than-completely-satisfactory answer. Vern  File: flex.info, Node: unnamed-faq-84, Next: unnamed-faq-85, Prev: unnamed-faq-83, Up: FAQ unnamed-faq-84 ============== To: Patrick Krusenotto Subject: Re: Problems with restarting flex-2.5.2-generated scanner In-reply-to: Your message of Thu, 24 Sep 1998 10:14:07 PDT. Date: Thu, 24 Sep 1998 23:28:43 PDT From: Vern Paxson > I am using flex-2.5.2 and bison 1.25 for Solaris and I am desperately > trying to make my scanner restart with a new file after my parser stops > with a parse error. When my compiler restarts, the parser always > receives the token after the token (in the old file!) that caused the > parser error. I suspect the problem is that your parser has read ahead in order to attempt to resolve an ambiguity, and when it's restarted it picks up with that token rather than reading a fresh one. If you're using yacc, then the special "error" production can sometimes be used to consume tokens in an attempt to get the parser into a consistent state. Vern  File: flex.info, Node: unnamed-faq-85, Next: unnamed-faq-86, Prev: unnamed-faq-84, Up: FAQ unnamed-faq-85 ============== To: Henric Jungheim Subject: Re: flex 2.5.4a In-reply-to: Your message of Tue, 27 Oct 1998 16:41:42 PST. Date: Tue, 27 Oct 1998 16:50:14 PST From: Vern Paxson > This brings up a feature request: How about a command line > option to specify the filename when reading from stdin? That way one > doesn't need to create a temporary file in order to get the "#line" > directives to make sense. Use -o combined with -t (per the man page description of -o). > P.S., Is there any simple way to use non-blocking IO to parse multiple > streams? Simple, no. One approach might be to return a magic character on EWOULDBLOCK and have a rule .* // put back .*, eat magic character This is off the top of my head, not sure it'll work. Vern  File: flex.info, Node: unnamed-faq-86, Next: unnamed-faq-87, Prev: unnamed-faq-85, Up: FAQ unnamed-faq-86 ============== To: "Repko, Billy D" Subject: Re: Compiling scanners In-reply-to: Your message of Wed, 13 Jan 1999 10:52:47 PST. Date: Thu, 14 Jan 1999 00:25:30 PST From: Vern Paxson > It appears that maybe it cannot find the lfl library. The Makefile in the distribution builds it, so you should have it. It's exceedingly trivial, just a main() that calls yylex() and a yyrap() that always returns 1. > %% > \n ++num_lines; ++num_chars; > . ++num_chars; You can't indent your rules like this - that's where the errors are coming from. Flex copies indented text to the output file, it's how you do things like int num_lines_seen = 0; to declare local variables. Vern  File: flex.info, Node: unnamed-faq-87, Next: unnamed-faq-88, Prev: unnamed-faq-86, Up: FAQ unnamed-faq-87 ============== To: Erick Branderhorst Subject: Re: flex input buffer In-reply-to: Your message of Tue, 09 Feb 1999 13:53:46 PST. Date: Tue, 09 Feb 1999 21:03:37 PST From: Vern Paxson > In the flex.skl file the size of the default input buffers is set. Can you > explain why this size is set and why it is such a high number. It's large to optimize performance when scanning large files. You can safely make it a lot lower if needed. Vern  File: flex.info, Node: unnamed-faq-88, Next: unnamed-faq-90, Prev: unnamed-faq-87, Up: FAQ unnamed-faq-88 ============== To: "Guido Minnen" Subject: Re: Flex error message In-reply-to: Your message of Wed, 24 Feb 1999 15:31:46 PST. Date: Thu, 25 Feb 1999 00:11:31 PST From: Vern Paxson > I'm extending a larger scanner written in Flex and I keep running into > problems. More specifically, I get the error message: > "flex: input rules are too complicated (>= 32000 NFA states)" Increase the definitions in flexdef.h for: #define JAMSTATE -32766 /* marks a reference to the state that always j ams */ #define MAXIMUM_MNS 31999 #define BAD_SUBSCRIPT -32767 recompile everything, and it should all work. Vern  File: flex.info, Node: unnamed-faq-90, Next: unnamed-faq-91, Prev: unnamed-faq-88, Up: FAQ unnamed-faq-90 ============== To: "Dmitriy Goldobin" Subject: Re: FLEX trouble In-reply-to: Your message of Mon, 31 May 1999 18:44:49 PDT. Date: Tue, 01 Jun 1999 00:15:07 PDT From: Vern Paxson > I have a trouble with FLEX. Why rule "/*".*"*/" work properly,=20 > but rule "/*"(.|\n)*"*/" don't work ? The second of these will have to scan the entire input stream (because "(.|\n)*" matches an arbitrary amount of any text) in order to see if it ends with "*/", terminating the comment. That potentially will overflow the input buffer. > More complex rule "/*"([^*]|(\*/[^/]))*"*/ give an error > 'unrecognized rule'. You can't use the '/' operator inside parentheses. It's not clear what "(a/b)*" actually means. > I now use workaround with state , but single-rule is > better, i think. Single-rule is nice but will always have the problem of either setting restrictions on comments (like not allowing multi-line comments) and/or running the risk of consuming the entire input stream, as noted above. Vern  File: flex.info, Node: unnamed-faq-91, Next: unnamed-faq-92, Prev: unnamed-faq-90, Up: FAQ unnamed-faq-91 ============== Received: from mc-qout4.whowhere.com (mc-qout4.whowhere.com [209.185.123.18]) by ee.lbl.gov (8.9.3/8.9.3) with SMTP id IAA05100 for ; Tue, 15 Jun 1999 08:56:06 -0700 (PDT) Received: from Unknown/Local ([?.?.?.?]) by my-deja.com; Tue Jun 15 08:55:43 1999 To: vern@ee.lbl.gov Date: Tue, 15 Jun 1999 08:55:43 -0700 From: "Aki Niimura" Message-ID: Mime-Version: 1.0 Cc: X-Sent-Mail: on Reply-To: X-Mailer: MailCity Service Subject: A question on flex C++ scanner X-Sender-Ip: 12.72.207.61 Organization: My Deja Email (http://www.my-deja.com:80) Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Dear Dr. Paxon, I have been using flex for years. It works very well on many projects. Most case, I used it to generate a scanner on C language. However, one project I needed to generate a scanner on C++ lanuage. Thanks to your enhancement, flex did the job. Currently, I'm working on enhancing my previous project. I need to deal with multiple input streams (recursive inclusion) in this scanner (C++). I did similar thing for another scanner (C) as you explained in your documentation. The generated scanner (C++) has necessary methods: - switch_to_buffer(struct yy_buffer_state *b) - yy_create_buffer(istream *is, int sz) - yy_delete_buffer(struct yy_buffer_state *b) However, I couldn't figure out how to access current buffer (yy_current_buffer). yy_current_buffer is a protected member of yyFlexLexer. I can't access it directly. Then, I thought yy_create_buffer() with is = 0 might return current stream buffer. But it seems not as far as I checked the source. (flex 2.5.4) I went through the Web in addition to Flex documentation. However, it hasn't been successful, so far. It is not my intention to bother you, but, can you comment about how to obtain the current stream buffer? Your response would be highly appreciated. Best regards, Aki Niimura --== Sent via Deja.com http://www.deja.com/ ==-- Share what you know. Learn what you don't.  File: flex.info, Node: unnamed-faq-92, Next: unnamed-faq-93, Prev: unnamed-faq-91, Up: FAQ unnamed-faq-92 ============== To: neko@my-deja.com Subject: Re: A question on flex C++ scanner In-reply-to: Your message of Tue, 15 Jun 1999 08:55:43 PDT. Date: Tue, 15 Jun 1999 09:04:24 PDT From: Vern Paxson > However, I couldn't figure out how to access current > buffer (yy_current_buffer). Derive your own subclass from yyFlexLexer. Vern  File: flex.info, Node: unnamed-faq-93, Next: unnamed-faq-94, Prev: unnamed-faq-92, Up: FAQ unnamed-faq-93 ============== To: "Stones, Darren" Subject: Re: You're the man to see? In-reply-to: Your message of Wed, 23 Jun 1999 11:10:29 PDT. Date: Wed, 23 Jun 1999 09:01:40 PDT From: Vern Paxson > I hope you can help me. I am using Flex and Bison to produce an interpreted > language. However all goes well until I try to implement an IF statement or > a WHILE. I cannot get this to work as the parser parses all the conditions > eg. the TRUE and FALSE conditons to check for a rule match. So I cannot > make a decision!! You need to use the parser to build a parse tree (= abstract syntax trwee), and when that's all done you recursively evaluate the tree, binding variables to values at that time. Vern  File: flex.info, Node: unnamed-faq-94, Next: unnamed-faq-95, Prev: unnamed-faq-93, Up: FAQ unnamed-faq-94 ============== To: Petr Danecek Subject: Re: flex - question In-reply-to: Your message of Mon, 28 Jun 1999 19:21:41 PDT. Date: Fri, 02 Jul 1999 16:52:13 PDT From: Vern Paxson > file, it takes an enormous amount of time. It is funny, because the > source code has only 12 rules!!! I think it looks like an exponencial > growth. Right, that's the problem - some patterns (those with a lot of ambiguity, where yours has because at any given time the scanner can be in the middle of all sorts of combinations of the different rules) blow up exponentially. For your rules, there is an easy fix. Change the ".*" that comes fater the directory name to "[^ ]*". With that in place, the rules are no longer nearly so ambiguous, because then once one of the directories has been matched, no other can be matched (since they all require a leading blank). If that's not an acceptable solution, then you can enter a start state to pick up the .*\n after each directory is matched. Also note that for speed, you'll want to add a ".*" rule at the end, otherwise rules that don't match any of the patterns will be matched very slowly, a character at a time. Vern  File: flex.info, Node: unnamed-faq-95, Next: unnamed-faq-96, Prev: unnamed-faq-94, Up: FAQ unnamed-faq-95 ============== To: Tielman Koekemoer Subject: Re: Please help. In-reply-to: Your message of Thu, 08 Jul 1999 13:20:37 PDT. Date: Thu, 08 Jul 1999 08:20:39 PDT From: Vern Paxson > I was hoping you could help me with my problem. > > I tried compiling (gnu)flex on a Solaris 2.4 machine > but when I ran make (after configure) I got an error. > > -------------------------------------------------------------- > gcc -c -I. -I. -g -O parse.c > ./flex -t -p ./scan.l >scan.c > sh: ./flex: not found > *** Error code 1 > make: Fatal error: Command failed for target `scan.c' > ------------------------------------------------------------- > > What's strange to me is that I'm only > trying to install flex now. I then edited the Makefile to > and changed where it says "FLEX = flex" to "FLEX = lex" > ( lex: the native Solaris one ) but then it complains about > the "-p" option. Is there any way I can compile flex without > using flex or lex? > > Thanks so much for your time. You managed to step on the bootstrap sequence, which first copies initscan.c to scan.c in order to build flex. Try fetching a fresh distribution from ftp.ee.lbl.gov. (Or you can first try removing ".bootstrap" and doing a make again.) Vern  File: flex.info, Node: unnamed-faq-96, Next: unnamed-faq-97, Prev: unnamed-faq-95, Up: FAQ unnamed-faq-96 ============== To: Tielman Koekemoer Subject: Re: Please help. In-reply-to: Your message of Fri, 09 Jul 1999 09:16:14 PDT. Date: Fri, 09 Jul 1999 00:27:20 PDT From: Vern Paxson > First I removed .bootstrap (and ran make) - no luck. I downloaded the > software but I still have the same problem. Is there anything else I > could try. Try: cp initscan.c scan.c touch scan.c make scan.o If this last tries to first build scan.c from scan.l using ./flex, then your "make" is broken, in which case compile scan.c to scan.o by hand. Vern  File: flex.info, Node: unnamed-faq-97, Next: unnamed-faq-98, Prev: unnamed-faq-96, Up: FAQ unnamed-faq-97 ============== To: Sumanth Kamenani Subject: Re: Error In-reply-to: Your message of Mon, 19 Jul 1999 23:08:41 PDT. Date: Tue, 20 Jul 1999 00:18:26 PDT From: Vern Paxson > I am getting a compilation error. The error is given as "unknown symbol- yylex". The parser relies on calling yylex(), but you're instead using the C++ scanning class, so you need to supply a yylex() "glue" function that calls an instance scanner of the scanner (e.g., "scanner->yylex()"). Vern  File: flex.info, Node: unnamed-faq-98, Next: unnamed-faq-99, Prev: unnamed-faq-97, Up: FAQ unnamed-faq-98 ============== To: daniel@synchrods.synchrods.COM (Daniel Senderowicz) Subject: Re: lex In-reply-to: Your message of Mon, 22 Nov 1999 11:19:04 PST. Date: Tue, 23 Nov 1999 15:54:30 PST From: Vern Paxson Well, your problem is the switch (yybgin-yysvec-1) { /* witchcraft */ at the beginning of lex rules. "witchcraft" == "non-portable". It's assuming knowledge of the AT&T lex's internal variables. For flex, you can probably do the equivalent using a switch on YYSTATE. Vern  File: flex.info, Node: unnamed-faq-99, Next: unnamed-faq-100, Prev: unnamed-faq-98, Up: FAQ unnamed-faq-99 ============== To: archow@hss.hns.com Subject: Re: Regarding distribution of flex and yacc based grammars In-reply-to: Your message of Sun, 19 Dec 1999 17:50:24 +0530. Date: Wed, 22 Dec 1999 01:56:24 PST From: Vern Paxson > When we provide the customer with an object code distribution, is it > necessary for us to provide source > for the generated C files from flex and bison since they are generated by > flex and bison ? For flex, no. I don't know what the current state of this is for bison. > Also, is there any requrirement for us to neccessarily provide source for > the grammar files which are fed into flex and bison ? Again, for flex, no. See the file "COPYING" in the flex distribution for the legalese. Vern  File: flex.info, Node: unnamed-faq-100, Next: unnamed-faq-101, Prev: unnamed-faq-99, Up: FAQ unnamed-faq-100 =============== To: Martin Gallwey Subject: Re: Flex, and self referencing rules In-reply-to: Your message of Sun, 20 Feb 2000 01:01:21 PST. Date: Sat, 19 Feb 2000 18:33:16 PST From: Vern Paxson > However, I do not use unput anywhere. I do use self-referencing > rules like this: > > UnaryExpr ({UnionExpr})|("-"{UnaryExpr}) You can't do this - flex is *not* a parser like yacc (which does indeed allow recursion), it is a scanner that's confined to regular expressions. Vern  File: flex.info, Node: unnamed-faq-101, Next: What is the difference between YYLEX_PARAM and YY_DECL?, Prev: unnamed-faq-100, Up: FAQ unnamed-faq-101 =============== To: slg3@lehigh.edu (SAMUEL L. GULDEN) Subject: Re: Flex problem In-reply-to: Your message of Thu, 02 Mar 2000 12:29:04 PST. Date: Thu, 02 Mar 2000 23:00:46 PST From: Vern Paxson If this is exactly your program: > digit [0-9] > digits {digit}+ > whitespace [ \t\n]+ > > %% > "[" { printf("open_brac\n");} > "]" { printf("close_brac\n");} > "+" { printf("addop\n");} > "*" { printf("multop\n");} > {digits} { printf("NUMBER = %s\n", yytext);} > whitespace ; then the problem is that the last rule needs to be "{whitespace}" ! Vern  File: flex.info, Node: What is the difference between YYLEX_PARAM and YY_DECL?, Next: Why do I get "conflicting types for yylex" error?, Prev: unnamed-faq-101, Up: FAQ What is the difference between YYLEX_PARAM and YY_DECL? ======================================================= YYLEX_PARAM is not a flex symbol. It is for Bison. It tells Bison to pass extra params when it calls yylex() from the parser. YY_DECL is the Flex declaration of yylex. The default is similar to this: #define int yy_lex ()  File: flex.info, Node: Why do I get "conflicting types for yylex" error?, Next: How do I access the values set in a Flex action from within a Bison action?, Prev: What is the difference between YYLEX_PARAM and YY_DECL?, Up: FAQ Why do I get "conflicting types for yylex" error? ================================================= This is a compiler error regarding a generated Bison parser, not a Flex scanner. It means you need a prototype of yylex() in the top of the Bison file. Be sure the prototype matches YY_DECL.  File: flex.info, Node: How do I access the values set in a Flex action from within a Bison action?, Prev: Why do I get "conflicting types for yylex" error?, Up: FAQ How do I access the values set in a Flex action from within a Bison action? =========================================================================== With $1, $2, $3, etc. These are called "Semantic Values" in the Bison manual. See *note Top: (bison)Top.  File: flex.info, Node: Appendices, Next: Indices, Prev: FAQ, Up: Top Appendix A Appendices ********************* * Menu: * Makefiles and Flex:: * Bison Bridge:: * M4 Dependency:: * Common Patterns::  File: flex.info, Node: Makefiles and Flex, Next: Bison Bridge, Prev: Appendices, Up: Appendices A.1 Makefiles and Flex ====================== In this appendix, we provide tips for writing Makefiles to build your scanners. In a traditional build environment, we say that the `.c' files are the sources, and the `.o' files are the intermediate files. When using `flex', however, the `.l' files are the sources, and the generated `.c' files (along with the `.o' files) are the intermediate files. This requires you to carefully plan your Makefile. Modern `make' programs understand that `foo.l' is intended to generate `lex.yy.c' or `foo.c', and will behave accordingly(1)(2). The following Makefile does not explicitly instruct `make' how to build `foo.c' from `foo.l'. Instead, it relies on the implicit rules of the `make' program to build the intermediate file, `scan.c': # Basic Makefile -- relies on implicit rules # Creates "myprogram" from "scan.l" and "myprogram.c" # LEX=flex myprogram: scan.o myprogram.o scan.o: scan.l For simple cases, the above may be sufficient. For other cases, you may have to explicitly instruct `make' how to build your scanner. The following is an example of a Makefile containing explicit rules: # Basic Makefile -- provides explicit rules # Creates "myprogram" from "scan.l" and "myprogram.c" # LEX=flex myprogram: scan.o myprogram.o $(CC) -o $@ $(LDFLAGS) $^ myprogram.o: myprogram.c $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ -c $^ scan.o: scan.c $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ -c $^ scan.c: scan.l $(LEX) $(LFLAGS) -o $@ $^ clean: $(RM) *.o scan.c Notice in the above example that `scan.c' is in the `clean' target. This is because we consider the file `scan.c' to be an intermediate file. Finally, we provide a realistic example of a `flex' scanner used with a `bison' parser(3). There is a tricky problem we have to deal with. Since a `flex' scanner will typically include a header file (e.g., `y.tab.h') generated by the parser, we need to be sure that the header file is generated BEFORE the scanner is compiled. We handle this case in the following example: # Makefile example -- scanner and parser. # Creates "myprogram" from "scan.l", "parse.y", and "myprogram.c" # LEX = flex YACC = bison -y YFLAGS = -d objects = scan.o parse.o myprogram.o myprogram: $(objects) scan.o: scan.l parse.c parse.o: parse.y myprogram.o: myprogram.c In the above example, notice the line, scan.o: scan.l parse.c , which lists the file `parse.c' (the generated parser) as a dependency of `scan.o'. We want to ensure that the parser is created before the scanner is compiled, and the above line seems to do the trick. Feel free to experiment with your specific implementation of `make'. For more details on writing Makefiles, see *note Top: (make)Top. ---------- Footnotes ---------- (1) GNU `make' and GNU `automake' are two such programs that provide implicit rules for flex-generated scanners. (2) GNU `automake' may generate code to execute flex in lex-compatible mode, or to stdout. If this is not what you want, then you should provide an explicit rule in your Makefile.am (3) This example also applies to yacc parsers.  File: flex.info, Node: Bison Bridge, Next: M4 Dependency, Prev: Makefiles and Flex, Up: Appendices A.2 C Scanners with Bison Parsers ================================= This section describes the `flex' features useful when integrating `flex' with `GNU bison'(1). Skip this section if you are not using `bison' with your scanner. Here we discuss only the `flex' half of the `flex' and `bison' pair. We do not discuss `bison' in any detail. For more information about generating `bison' parsers, see *note Top: (bison)Top. A compatible `bison' scanner is generated by declaring `%option bison-bridge' or by supplying `--bison-bridge' when invoking `flex' from the command line. This instructs `flex' that the macro `yylval' may be used. The data type for `yylval', `YYSTYPE', is typically defined in a header file, included in section 1 of the `flex' input file. For a list of functions and macros available, *Note bison-functions::. The declaration of yylex becomes, int yylex ( YYSTYPE * lvalp, yyscan_t scanner ); If `%option bison-locations' is specified, then the declaration becomes, int yylex ( YYSTYPE * lvalp, YYLTYPE * llocp, yyscan_t scanner ); Note that the macros `yylval' and `yylloc' evaluate to pointers. Support for `yylloc' is optional in `bison', so it is optional in `flex' as well. The following is an example of a `flex' scanner that is compatible with `bison'. /* Scanner for "C" assignment statements... sort of. */ %{ #include "y.tab.h" /* Generated by bison. */ %} %option bison-bridge bison-locations % [[:digit:]]+ { yylval->num = atoi(yytext); return NUMBER;} [[:alnum:]]+ { yylval->str = strdup(yytext); return STRING;} "="|";" { return yytext[0];} . {} % As you can see, there really is no magic here. We just use `yylval' as we would any other variable. The data type of `yylval' is generated by `bison', and included in the file `y.tab.h'. Here is the corresponding `bison' parser: /* Parser to convert "C" assignments to lisp. */ %{ /* Pass the argument to yyparse through to yylex. */ #define YYPARSE_PARAM scanner #define YYLEX_PARAM scanner %} %locations %pure_parser %union { int num; char* str; } %token STRING %token NUMBER %% assignment: STRING '=' NUMBER ';' { printf( "(setf %s %d)", $1, $3 ); } ; ---------- Footnotes ---------- (1) The features described here are purely optional, and are by no means the only way to use flex with bison. We merely provide some glue to ease development of your parser-scanner pair.  File: flex.info, Node: M4 Dependency, Next: Common Patterns, Prev: Bison Bridge, Up: Appendices A.3 M4 Dependency ================= The macro processor `m4'(1) must be installed wherever flex is installed. `flex' invokes `m4', found by searching the directories in the `PATH' environment variable. Any code you place in section 1 or in the actions will be sent through m4. Please follow these rules to protect your code from unwanted `m4' processing. * Do not use symbols that begin with, `m4_', such as, `m4_define', or `m4_include', since those are reserved for `m4' macro names. If for some reason you need m4_ as a prefix, use a preprocessor #define to get your symbol past m4 unmangled. * Do not use the strings `[[' or `]]' anywhere in your code. The former is not valid in C, except within comments and strings, but the latter is valid in code such as `x[y[z]]'. The solution is simple. To get the literal string `"]]"', use `"]""]"'. To get the array notation `x[y[z]]', use `x[y[z] ]'. Flex will attempt to detect these sequences in user code, and escape them. However, it's best to avoid this complexity where possible, by removing such sequences from your code. `m4' is only required at the time you run `flex'. The generated scanner is ordinary C or C++, and does _not_ require `m4'. ---------- Footnotes ---------- (1) The use of m4 is subject to change in future revisions of flex. It is not part of the public API of flex. Do not depend on it.  File: flex.info, Node: Common Patterns, Prev: M4 Dependency, Up: Appendices A.4 Common Patterns =================== This appendix provides examples of common regular expressions you might use in your scanner. * Menu: * Numbers:: * Identifiers:: * Quoted Constructs:: * Addresses::  File: flex.info, Node: Numbers, Next: Identifiers, Up: Common Patterns A.4.1 Numbers ------------- C99 decimal constant `([[:digit:]]{-}[0])[[:digit:]]*' C99 hexadecimal constant `0[xX][[:xdigit:]]+' C99 octal constant `0[01234567]*' C99 floating point constant {dseq} ([[:digit:]]+) {dseq_opt} ([[:digit:]]*) {frac} (({dseq_opt}"."{dseq})|{dseq}".") {exp} ([eE][+-]?{dseq}) {exp_opt} ({exp}?) {fsuff} [flFL] {fsuff_opt} ({fsuff}?) {hpref} (0[xX]) {hdseq} ([[:xdigit:]]+) {hdseq_opt} ([[:xdigit:]]*) {hfrac} (({hdseq_opt}"."{hdseq})|({hdseq}".")) {bexp} ([pP][+-]?{dseq}) {dfc} (({frac}{exp_opt}{fsuff_opt})|({dseq}{exp}{fsuff_opt})) {hfc} (({hpref}{hfrac}{bexp}{fsuff_opt})|({hpref}{hdseq}{bexp}{fsuff_opt})) {c99_floating_point_constant} ({dfc}|{hfc}) See C99 section 6.4.4.2 for the gory details.  File: flex.info, Node: Identifiers, Next: Quoted Constructs, Prev: Numbers, Up: Common Patterns A.4.2 Identifiers ----------------- C99 Identifier ucn ((\\u([[:xdigit:]]{4}))|(\\U([[:xdigit:]]{8}))) nondigit [_[:alpha:]] c99_id ([_[:alpha:]]|{ucn})([_[:alnum:]]|{ucn})* Technically, the above pattern does not encompass all possible C99 identifiers, since C99 allows for "implementation-defined" characters. In practice, C compilers follow the above pattern, with the addition of the `$' character. UTF-8 Encoded Unicode Code Point [\x09\x0A\x0D\x20-\x7E]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF]([\x80-\xBF]{2})|\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF]([\x80-\xBF]{2})|[\xF1-\xF3]([\x80-\xBF]{3})|\xF4[\x80-\x8F]([\x80-\xBF]{2})  File: flex.info, Node: Quoted Constructs, Next: Addresses, Prev: Identifiers, Up: Common Patterns A.4.3 Quoted Constructs ----------------------- C99 String Literal `L?\"([^\"\\\n]|(\\['\"?\\abfnrtv])|(\\([0123456]{1,3}))|(\\x[[:xdigit:]]+)|(\\u([[:xdigit:]]{4}))|(\\U([[:xdigit:]]{8})))*\"' C99 Comment `("/*"([^*]|"*"[^/])*"*/")|("/"(\\\n)*"/"[^\n]*)' Note that in C99, a `//'-style comment may be split across lines, and, contrary to popular belief, does not include the trailing `\n' character. A better way to scan `/* */' comments is by line, rather than matching possibly huge comments all at once. This will allow you to scan comments of unlimited length, as long as line breaks appear at sane intervals. This is also more efficient when used with automatic line number processing. *Note option-yylineno::. { "/*" BEGIN(COMMENT); } { "*/" BEGIN(0); [^*\n]+ ; "*"[^/] ; \n ; }  File: flex.info, Node: Addresses, Prev: Quoted Constructs, Up: Common Patterns A.4.4 Addresses --------------- IPv4 Address dec-octet [0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5] IPv4address {dec-octet}\.{dec-octet}\.{dec-octet}\.{dec-octet} IPv6 Address h16 [0-9A-Fa-f]{1,4} ls32 {h16}:{h16}|{IPv4address} IPv6address ({h16}:){6}{ls32}| ::({h16}:){5}{ls32}| ({h16})?::({h16}:){4}{ls32}| (({h16}:){0,1}{h16})?::({h16}:){3}{ls32}| (({h16}:){0,2}{h16})?::({h16}:){2}{ls32}| (({h16}:){0,3}{h16})?::{h16}:{ls32}| (({h16}:){0,4}{h16})?::{ls32}| (({h16}:){0,5}{h16})?::{h16}| (({h16}:){0,6}{h16})?:: See RFC 2373 (http://www.ietf.org/rfc/rfc2373.txt) for details. Note that you have to fold the definition of `IPv6address' into one line and that it also matches the "unspecified address" "::". URI `(([^:/?#]+):)?("//"([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?' This pattern is nearly useless, since it allows just about any character to appear in a URI, including spaces and control characters. See RFC 2396 (http://www.ietf.org/rfc/rfc2396.txt) for details.  File: flex.info, Node: Indices, Prev: Appendices, Up: Top Indices ******* * Menu: * Concept Index:: * Index of Functions and Macros:: * Index of Variables:: * Index of Data Types:: * Index of Hooks:: * Index of Scanner Options:: flex-2.5.39/doc/flex.info-20000644000175000017500000014572612314621343015557 0ustar srivastasrivastaThis is flex.info, produced by makeinfo version 4.13 from flex.texi. INFO-DIR-SECTION Programming START-INFO-DIR-ENTRY * flex: (flex). Fast lexical analyzer generator (lex replacement). END-INFO-DIR-ENTRY The flex manual is placed under the same licensing conditions as the rest of flex: Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2012 The Flex Project. Copyright (C) 1990, 1997 The Regents of the University of California. All rights reserved. This code is derived from software contributed to Berkeley by Vern Paxson. The United States Government has rights in this work pursuant to contract no. DE-AC03-76SF00098 between the United States Department of Energy and the University of California. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  File: flex.info, Node: Concept Index, Next: Index of Functions and Macros, Prev: Indices, Up: Indices Concept Index ============= [index] * Menu: * $ as normal character in patterns: Patterns. (line 274) * %array, advantages of: Matching. (line 43) * %array, use of: Matching. (line 29) * %array, with C++: Matching. (line 65) * %option noyywrapp: Generated Scanner. (line 93) * %pointer, and unput(): Actions. (line 163) * %pointer, use of: Matching. (line 29) * %top: Definitions Section. (line 44) * %{ and %}, in Definitions Section: Definitions Section. (line 40) * %{ and %}, in Rules Section: Actions. (line 26) * <>, use of: EOF. (line 33) * [] in patterns: Patterns. (line 15) * ^ as non-special character in patterns: Patterns. (line 274) * accessor functions, use of: Accessor Methods. (line 18) * actions: Actions. (line 6) * actions, embedded C strings: Actions. (line 26) * actions, redefining YY_BREAK: Misc Macros. (line 49) * actions, use of { and }: Actions. (line 26) * aliases, how to define: Definitions Section. (line 10) * arguments, command-line: Scanner Options. (line 6) * array, default size for yytext: User Values. (line 13) * backing up, eliminating: Performance. (line 54) * backing up, eliminating by adding error rules: Performance. (line 104) * backing up, eliminating with catch-all rule: Performance. (line 118) * backing up, example of eliminating: Performance. (line 49) * BEGIN: Actions. (line 58) * BEGIN, explanation: Start Conditions. (line 84) * beginning of line, in patterns: Patterns. (line 127) * bison, bridging with flex: Bison Bridge. (line 6) * bison, parser: Bison Bridge. (line 54) * bison, scanner to be called from bison: Bison Bridge. (line 35) * BOL, checking the BOL flag: Misc Macros. (line 46) * BOL, in patterns: Patterns. (line 127) * BOL, setting it: Misc Macros. (line 40) * braces in patterns: Patterns. (line 42) * bugs, reporting: Reporting Bugs. (line 6) * C code in flex input: Definitions Section. (line 40) * C++: Cxx. (line 9) * C++ and %array: User Values. (line 23) * C++ I/O, customizing: How do I use my own I/O classes in a C++ scanner?. (line 9) * C++ scanners, including multiple scanners: Cxx. (line 189) * C++ scanners, use of: Cxx. (line 122) * c++, experimental form of scanner class: Cxx. (line 6) * C++, multiple different scanners: Cxx. (line 183) * C-strings, in actions: Actions. (line 26) * case-insensitive, effect on character classes: Patterns. (line 216) * character classes in patterns: Patterns. (line 186) * character classes in patterns, syntax of: Patterns. (line 15) * character classes, equivalence of: Patterns. (line 205) * clearing an input buffer: Multiple Input Buffers. (line 66) * command-line options: Scanner Options. (line 6) * comments in flex input: Definitions Section. (line 37) * comments in the input: Comments in the Input. (line 25) * comments, discarding: Actions. (line 177) * comments, example of scanning C comments: Start Conditions. (line 140) * comments, in actions: Actions. (line 26) * comments, in rules section: Comments in the Input. (line 11) * comments, syntax of: Comments in the Input. (line 6) * comments, valid uses of: Comments in the Input. (line 25) * compressing whitespace: Actions. (line 22) * concatenation, in patterns: Patterns. (line 111) * copyright of flex: Copyright. (line 6) * counting characters and lines: Simple Examples. (line 24) * customizing I/O in C++ scanners: How do I use my own I/O classes in a C++ scanner?. (line 9) * default rule <1>: Matching. (line 20) * default rule: Simple Examples. (line 15) * defining pattern aliases: Definitions Section. (line 21) * Definitions, in flex input: Definitions Section. (line 6) * deleting lines from input: Actions. (line 13) * discarding C comments: Actions. (line 177) * distributing flex: Copyright. (line 6) * ECHO: Actions. (line 55) * ECHO, and yyout: Generated Scanner. (line 101) * embedding C code in flex input: Definitions Section. (line 40) * end of file, in patterns: Patterns. (line 150) * end of line, in negated character classes: Patterns. (line 237) * end of line, in patterns: Patterns. (line 131) * end-of-file, and yyrestart(): Generated Scanner. (line 42) * EOF and yyrestart(): Generated Scanner. (line 42) * EOF in patterns, syntax of: Patterns. (line 150) * EOF, example using multiple input buffers: Multiple Input Buffers. (line 81) * EOF, explanation: EOF. (line 6) * EOF, pushing back: Actions. (line 171) * EOL, in negated character classes: Patterns. (line 237) * EOL, in patterns: Patterns. (line 131) * error messages, end of buffer missed: Lex and Posix. (line 50) * error reporting, diagnostic messages: Diagnostics. (line 6) * error reporting, in C++: Cxx. (line 106) * error rules, to eliminate backing up: Performance. (line 102) * escape sequences in patterns, syntax of: Patterns. (line 57) * exiting with yyterminate(): Actions. (line 213) * experimental form of c++ scanner class: Cxx. (line 6) * extended scope of start conditions: Start Conditions. (line 270) * file format: Format. (line 6) * file format, serialized tables: Tables File Format. (line 6) * flushing an input buffer: Multiple Input Buffers. (line 66) * flushing the internal buffer: Actions. (line 207) * format of flex input: Format. (line 6) * format of input file: Format. (line 9) * freeing tables: Loading and Unloading Serialized Tables. (line 6) * getting current start state with YY_START: Start Conditions. (line 189) * halting with yyterminate(): Actions. (line 213) * handling include files with multiple input buffers: Multiple Input Buffers. (line 87) * header files, with C++: Cxx. (line 189) * include files, with C++: Cxx. (line 189) * input file, Definitions section: Definitions Section. (line 6) * input file, Rules Section: Rules Section. (line 6) * input file, user code Section: User Code Section. (line 6) * input(): Actions. (line 174) * input(), and C++: Actions. (line 203) * input, format of: Format. (line 6) * input, matching: Matching. (line 6) * keywords, for performance: Performance. (line 200) * lex (traditional) and POSIX: Lex and Posix. (line 6) * LexerInput, overriding: How do I use my own I/O classes in a C++ scanner?. (line 9) * LexerOutput, overriding: How do I use my own I/O classes in a C++ scanner?. (line 9) * limitations of flex: Limitations. (line 6) * literal text in patterns, syntax of: Patterns. (line 54) * loading tables at runtime: Loading and Unloading Serialized Tables. (line 6) * m4: M4 Dependency. (line 6) * Makefile, example of implicit rules: Makefiles and Flex. (line 21) * Makefile, explicit example: Makefiles and Flex. (line 32) * Makefile, syntax: Makefiles and Flex. (line 6) * matching C-style double-quoted strings: Start Conditions. (line 203) * matching, and trailing context: Matching. (line 6) * matching, length of: Matching. (line 6) * matching, multiple matches: Matching. (line 6) * member functions, C++: Cxx. (line 9) * memory management: Memory Management. (line 6) * memory, allocating input buffers: Multiple Input Buffers. (line 19) * memory, considerations for reentrant scanners: Init and Destroy Functions. (line 6) * memory, deleting input buffers: Multiple Input Buffers. (line 46) * memory, for start condition stacks: Start Conditions. (line 301) * memory, serialized tables <1>: Loading and Unloading Serialized Tables. (line 6) * memory, serialized tables: Serialized Tables. (line 6) * methods, c++: Cxx. (line 9) * minimal scanner: Matching. (line 24) * multiple input streams: Multiple Input Buffers. (line 6) * name definitions, not POSIX: Lex and Posix. (line 75) * negating ranges in patterns: Patterns. (line 23) * newline, matching in patterns: Patterns. (line 135) * non-POSIX features of flex: Lex and Posix. (line 144) * noyywrap, %option: Generated Scanner. (line 93) * NULL character in patterns, syntax of: Patterns. (line 62) * octal characters in patterns: Patterns. (line 65) * options, command-line: Scanner Options. (line 6) * overriding LexerInput: How do I use my own I/O classes in a C++ scanner?. (line 9) * overriding LexerOutput: How do I use my own I/O classes in a C++ scanner?. (line 9) * overriding the memory routines: Overriding The Default Memory Management. (line 42) * Pascal-like language: Simple Examples. (line 50) * pattern aliases, defining: Definitions Section. (line 21) * pattern aliases, expansion of: Patterns. (line 51) * pattern aliases, how to define: Definitions Section. (line 10) * pattern aliases, use of: Definitions Section. (line 28) * patterns and actions on different lines: Lex and Posix. (line 101) * patterns, character class equivalence: Patterns. (line 205) * patterns, common: Common Patterns. (line 6) * patterns, end of line: Patterns. (line 299) * patterns, grouping and precedence: Patterns. (line 167) * patterns, in rules section: Patterns. (line 6) * patterns, invalid trailing context: Patterns. (line 284) * patterns, matching: Matching. (line 6) * patterns, precedence of operators: Patterns. (line 161) * patterns, repetitions with grouping: Patterns. (line 184) * patterns, special characters treated as non-special: Patterns. (line 292) * patterns, syntax: Patterns. (line 9) * patterns, tuning for performance: Performance. (line 49) * patterns, valid character classes: Patterns. (line 192) * performance optimization, matching longer tokens: Performance. (line 167) * performance optimization, recognizing keywords: Performance. (line 205) * performance, backing up: Performance. (line 49) * performance, considerations: Performance. (line 6) * performance, using keywords: Performance. (line 200) * popping an input buffer: Multiple Input Buffers. (line 60) * POSIX and lex: Lex and Posix. (line 6) * POSIX comp;compliance: Lex and Posix. (line 144) * POSIX, character classes in patterns, syntax of: Patterns. (line 15) * preprocessor macros, for use in actions: Actions. (line 51) * pushing an input buffer: Multiple Input Buffers. (line 52) * pushing back characters with unput: Actions. (line 144) * pushing back characters with unput(): Actions. (line 148) * pushing back characters with yyless: Actions. (line 132) * pushing back EOF: Actions. (line 171) * ranges in patterns: Patterns. (line 19) * ranges in patterns, negating: Patterns. (line 23) * recognizing C comments: Start Conditions. (line 143) * reentrant scanners, multiple interleaved scanners: Reentrant Uses. (line 10) * reentrant scanners, recursive invocation: Reentrant Uses. (line 30) * reentrant, accessing flex variables: Global Replacement. (line 6) * reentrant, accessor functions: Accessor Methods. (line 6) * reentrant, API explanation: Reentrant Overview. (line 6) * reentrant, calling functions: Extra Reentrant Argument. (line 6) * reentrant, example of: Reentrant Example. (line 6) * reentrant, explanation: Reentrant. (line 6) * reentrant, extra data: Extra Data. (line 6) * reentrant, initialization: Init and Destroy Functions. (line 6) * regular expressions, in patterns: Patterns. (line 6) * REJECT: Actions. (line 62) * REJECT, calling multiple times: Actions. (line 84) * REJECT, performance costs: Performance. (line 12) * reporting bugs: Reporting Bugs. (line 6) * restarting the scanner: Lex and Posix. (line 54) * RETURN, within actions: Generated Scanner. (line 57) * rules, default: Simple Examples. (line 15) * rules, in flex input: Rules Section. (line 6) * scanner, definition of: Introduction. (line 6) * sections of flex input: Format. (line 6) * serialization: Serialized Tables. (line 6) * serialization of tables: Creating Serialized Tables. (line 6) * serialized tables, multiple scanners: Creating Serialized Tables. (line 26) * stack, input buffer pop: Multiple Input Buffers. (line 60) * stack, input buffer push: Multiple Input Buffers. (line 52) * stacks, routines for manipulating: Start Conditions. (line 286) * start condition, applying to multiple patterns: Start Conditions. (line 258) * start conditions: Start Conditions. (line 6) * start conditions, behavior of default rule: Start Conditions. (line 82) * start conditions, exclusive: Start Conditions. (line 53) * start conditions, for different interpretations of same input: Start Conditions. (line 112) * start conditions, in patterns: Patterns. (line 140) * start conditions, inclusive: Start Conditions. (line 44) * start conditions, inclusive v.s. exclusive: Start Conditions. (line 24) * start conditions, integer values: Start Conditions. (line 163) * start conditions, multiple: Start Conditions. (line 17) * start conditions, special wildcard condition: Start Conditions. (line 68) * start conditions, use of a stack: Start Conditions. (line 286) * start conditions, use of wildcard condition (<*>): Start Conditions. (line 72) * start conditions, using BEGIN: Start Conditions. (line 95) * stdin, default for yyin: Generated Scanner. (line 37) * stdout, as default for yyout: Generated Scanner. (line 101) * strings, scanning strings instead of files: Multiple Input Buffers. (line 175) * tables, creating serialized: Creating Serialized Tables. (line 6) * tables, file format: Tables File Format. (line 6) * tables, freeing: Loading and Unloading Serialized Tables. (line 6) * tables, loading and unloading: Loading and Unloading Serialized Tables. (line 6) * terminating with yyterminate(): Actions. (line 213) * token: Matching. (line 14) * trailing context, in patterns: Patterns. (line 118) * trailing context, limits of: Patterns. (line 274) * trailing context, matching: Matching. (line 6) * trailing context, performance costs: Performance. (line 12) * trailing context, variable length: Performance. (line 141) * unput(): Actions. (line 144) * unput(), and %pointer: Actions. (line 163) * unput(), pushing back characters: Actions. (line 148) * user code, in flex input: User Code Section. (line 6) * username expansion: Simple Examples. (line 8) * using integer values of start condition names: Start Conditions. (line 163) * verbatim text in patterns, syntax of: Patterns. (line 54) * warning, dangerous trailing context: Limitations. (line 20) * warning, rule cannot be matched: Diagnostics. (line 14) * warnings, diagnostic messages: Diagnostics. (line 6) * whitespace, compressing: Actions. (line 22) * yacc interface: Yacc. (line 17) * yacc, interface: Yacc. (line 6) * YY_CURRENT_BUFFER, and multiple buffers Finally, the macro: Multiple Input Buffers. (line 78) * YY_EXTRA_TYPE, defining your own type: Extra Data. (line 33) * YY_FLUSH_BUFFER: Actions. (line 207) * YY_INPUT: Generated Scanner. (line 61) * YY_INPUT, overriding: Generated Scanner. (line 71) * YY_START, example: Start Conditions. (line 185) * YY_USER_ACTION to track each time a rule is matched: Misc Macros. (line 14) * yyalloc, overriding: Overriding The Default Memory Management. (line 6) * yyfree, overriding: Overriding The Default Memory Management. (line 6) * yyin: Generated Scanner. (line 37) * yyinput(): Actions. (line 203) * yyleng: Matching. (line 14) * yyleng, modification of: Actions. (line 48) * yyless(): Actions. (line 126) * yyless(), pushing back characters: Actions. (line 132) * yylex(), in generated scanner: Generated Scanner. (line 6) * yylex(), overriding: Generated Scanner. (line 16) * yylex, overriding the prototype of: Generated Scanner. (line 20) * yylineno, in a reentrant scanner: Reentrant Functions. (line 36) * yylineno, performance costs: Performance. (line 12) * yymore(): Actions. (line 105) * yymore() to append token to previous token: Actions. (line 111) * yymore(), mega-kludge: Actions. (line 111) * yymore, and yyleng: Actions. (line 48) * yymore, performance penalty of: Actions. (line 120) * yyout: Generated Scanner. (line 101) * yyrealloc, overriding: Overriding The Default Memory Management. (line 6) * yyrestart(): Generated Scanner. (line 42) * yyterminate(): Actions. (line 213) * yytext: Matching. (line 14) * yytext, default array size: User Values. (line 13) * yytext, memory considerations: A Note About yytext And Memory. (line 6) * yytext, modification of: Actions. (line 42) * yytext, two types of: Matching. (line 29) * yywrap(): Generated Scanner. (line 85) * yywrap, default for: Generated Scanner. (line 93) * |, in actions: Actions. (line 33) * |, use of: Actions. (line 84)  File: flex.info, Node: Index of Functions and Macros, Next: Index of Variables, Prev: Concept Index, Up: Indices Index of Functions and Macros ============================= This is an index of functions and preprocessor macros that look like functions. For macros that expand to variables or constants, see *note Index of Variables::. [index] * Menu: * BEGIN: Start Conditions. (line 84) * debug (C++ only): Cxx. (line 48) * LexerError (C++ only): Cxx. (line 106) * LexerInput (C++ only): Cxx. (line 91) * LexerOutput (C++ only): Cxx. (line 101) * lineno (C++ only): Cxx. (line 38) * set_debug (C++ only): Cxx. (line 42) * switch_streams (C++ only): Cxx. (line 78) * YY_AT_BOL: Misc Macros. (line 46) * yy_create_buffer: Multiple Input Buffers. (line 20) * yy_delete_buffer: Multiple Input Buffers. (line 47) * yy_flush_buffer: Multiple Input Buffers. (line 67) * yy_new_buffer: Multiple Input Buffers. (line 73) * YY_NEW_FILE (now obsolete): EOF. (line 11) * yy_pop_state: Start Conditions. (line 296) * yy_push_state: Start Conditions. (line 290) * yy_scan_buffer: Multiple Input Buffers. (line 198) * yy_scan_bytes: Multiple Input Buffers. (line 188) * yy_scan_string: Multiple Input Buffers. (line 184) * yy_set_bol: Misc Macros. (line 40) * yy_set_interactive: Misc Macros. (line 28) * yy_switch_to_buffer: Multiple Input Buffers. (line 36) * yy_top_state: Start Conditions. (line 299) * yyFlexLexer constructor (C++ only): Cxx. (line 61) * yyget_debug: Reentrant Functions. (line 8) * yyget_extra <1>: Reentrant Functions. (line 8) * yyget_extra: Extra Data. (line 20) * yyget_in: Reentrant Functions. (line 8) * yyget_leng: Reentrant Functions. (line 8) * yyget_lineno: Reentrant Functions. (line 8) * yyget_out: Reentrant Functions. (line 8) * yyget_text: Reentrant Functions. (line 8) * YYLeng (C++ only): Cxx. (line 34) * yylex (C++ version): Cxx. (line 66) * yylex (reentrant version): Bison Bridge. (line 23) * yylex_destroy: Init and Destroy Functions. (line 6) * yylex_init: Init and Destroy Functions. (line 6) * yypop_buffer_state: Multiple Input Buffers. (line 61) * yypush_buffer_state: Multiple Input Buffers. (line 53) * yyrestart: User Values. (line 39) * yyset_debug: Reentrant Functions. (line 8) * yyset_extra <1>: Reentrant Functions. (line 8) * yyset_extra: Extra Data. (line 20) * yyset_in: Reentrant Functions. (line 8) * yyset_lineno: Reentrant Functions. (line 8) * yyset_out: Reentrant Functions. (line 8) * yytables_destroy: Loading and Unloading Serialized Tables. (line 24) * yytables_fload: Loading and Unloading Serialized Tables. (line 11) * YYText (C++ only): Cxx. (line 30)  File: flex.info, Node: Index of Variables, Next: Index of Data Types, Prev: Index of Functions and Macros, Up: Indices Index of Variables ================== This is an index of variables, constants, and preprocessor macros that expand to variables or constants. [index] * Menu: * INITIAL: Start Conditions. (line 84) * YY_CURRENT_BUFFER: User Values. (line 50) * YY_END_OF_BUFFER_CHAR: Multiple Input Buffers. (line 196) * YY_NUM_RULES: Misc Macros. (line 16) * YY_START <1>: User Values. (line 53) * YY_START: Start Conditions. (line 191) * yyextra: Extra Data. (line 6) * yyin: User Values. (line 29) * yyleng: User Values. (line 26) * yylloc: Bison Bridge. (line 6) * YYLMAX: User Values. (line 13) * yylval: Bison Bridge. (line 6) * yylval, with yacc: Yacc. (line 6) * yyout: User Values. (line 46) * yyscanner (reentrant only): Extra Reentrant Argument. (line 6) * yytext <1>: User Values. (line 9) * yytext: Matching. (line 29)  File: flex.info, Node: Index of Data Types, Next: Index of Hooks, Prev: Index of Variables, Up: Indices Index of Data Types =================== [index] * Menu: * FlexLexer (C++ only): Cxx. (line 57) * YY_BUFFER_STATE: Multiple Input Buffers. (line 25) * YY_EXTRA_TYPE (reentrant only): Extra Data. (line 20) * yy_size_t: Multiple Input Buffers. (line 209) * yyFlexLexer (C++ only): Cxx. (line 57) * YYLTYPE: Bison Bridge. (line 6) * yyscan_t (reentrant only): About yyscan_t. (line 6) * YYSTYPE: Bison Bridge. (line 6)  File: flex.info, Node: Index of Hooks, Next: Index of Scanner Options, Prev: Index of Data Types, Up: Indices Index of Hooks ============== This is an index of "hooks" that the user may define. These hooks typically correspond to specific locations in the generated scanner, and may be used to insert arbitrary code. [index] * Menu: * YY_BREAK: Misc Macros. (line 49) * YY_USER_ACTION: Misc Macros. (line 6) * YY_USER_INIT: Misc Macros. (line 23)  File: flex.info, Node: Index of Scanner Options, Prev: Index of Hooks, Up: Indices Index of Scanner Options ======================== [index] * Menu: * -+: Code-Level And API Options. (line 50) * --7bit: Options Affecting Scanner Behavior. (line 57) * --8bit: Options Affecting Scanner Behavior. (line 81) * --align: Options for Scanner Speed and Size. (line 15) * --always-interactive: Options Affecting Scanner Behavior. (line 93) * --array: Code-Level And API Options. (line 54) * --backup: Debugging Options. (line 6) * --batch: Options Affecting Scanner Behavior. (line 23) * --bison-bridge: Code-Level And API Options. (line 17) * --bison-locations: Code-Level And API Options. (line 24) * --c++: Code-Level And API Options. (line 50) * --case-insensitive: Options Affecting Scanner Behavior. (line 6) * --debug: Debugging Options. (line 16) * --default: Options Affecting Scanner Behavior. (line 90) * --ecs: Options for Scanner Speed and Size. (line 24) * --fast: Options for Scanner Speed and Size. (line 100) * --full: Options for Scanner Speed and Size. (line 95) * --header-file: Options for Specifying Filenames. (line 6) * --help: Miscellaneous Options. (line 9) * --interactive: Options Affecting Scanner Behavior. (line 33) * --lex-compat: Options Affecting Scanner Behavior. (line 14) * --main: Code-Level And API Options. (line 100) * --meta-ecs: Options for Scanner Speed and Size. (line 45) * --never-interactive: Options Affecting Scanner Behavior. (line 101) * --nodefault: Debugging Options. (line 43) * --noline: Code-Level And API Options. (line 29) * --nounistd: Code-Level And API Options. (line 105) * --nowarn: Debugging Options. (line 55) * --option-ansi-definitions: Code-Level And API Options. (line 6) * --option-ansi-prototypes: Code-Level And API Options. (line 12) * --outfile: Options for Specifying Filenames. (line 21) * --perf-report: Debugging Options. (line 31) * --pointer: Code-Level And API Options. (line 57) * --posix: Options Affecting Scanner Behavior. (line 105) * --prefix: Code-Level And API Options. (line 61) * --read: Options for Scanner Speed and Size. (line 54) * --reentrant: Code-Level And API Options. (line 38) * --skel: Options for Specifying Filenames. (line 31) * --stack: Options Affecting Scanner Behavior. (line 125) * --stdinit: Options Affecting Scanner Behavior. (line 129) * --stdout: Options for Specifying Filenames. (line 27) * --tables-file: Options for Specifying Filenames. (line 36) * --tables-verify: Options for Specifying Filenames. (line 41) * --trace: Debugging Options. (line 49) * --verbose: Debugging Options. (line 58) * --version: Miscellaneous Options. (line 16) * --warn: Debugging Options. (line 66) * --yyclass: Code-Level And API Options. (line 114) * --yylineno: Options Affecting Scanner Behavior. (line 138) * --yywrap: Options Affecting Scanner Behavior. (line 146) * -7: Options Affecting Scanner Behavior. (line 57) * -8: Options Affecting Scanner Behavior. (line 81) * -b: Debugging Options. (line 6) * -B: Options Affecting Scanner Behavior. (line 23) * -c: Miscellaneous Options. (line 6) * -C: Options for Scanner Speed and Size. (line 10) * -Ca: Options for Scanner Speed and Size. (line 15) * -Ce: Options for Scanner Speed and Size. (line 24) * -CF: Options for Scanner Speed and Size. (line 40) * -Cf: Options for Scanner Speed and Size. (line 35) * -Cm: Options for Scanner Speed and Size. (line 45) * -Cr: Options for Scanner Speed and Size. (line 54) * -d: Debugging Options. (line 16) * -F: Options for Scanner Speed and Size. (line 100) * -f: Options for Scanner Speed and Size. (line 95) * -h: Miscellaneous Options. (line 9) * -I: Options Affecting Scanner Behavior. (line 33) * -i: Options Affecting Scanner Behavior. (line 6) * -L: Code-Level And API Options. (line 29) * -l: Options Affecting Scanner Behavior. (line 14) * -n: Miscellaneous Options. (line 13) * -o: Options for Specifying Filenames. (line 21) * -p: Debugging Options. (line 31) * -P: Code-Level And API Options. (line 61) * -R: Code-Level And API Options. (line 38) * -s: Debugging Options. (line 43) * -T: Debugging Options. (line 49) * -t: Options for Specifying Filenames. (line 27) * -V: Miscellaneous Options. (line 16) * -v: Debugging Options. (line 58) * -w: Debugging Options. (line 55) * -X: Options Affecting Scanner Behavior. (line 105) * 7bit: Options Affecting Scanner Behavior. (line 57) * 8bit: Options Affecting Scanner Behavior. (line 81) * align: Options for Scanner Speed and Size. (line 15) * always-interactive: Options Affecting Scanner Behavior. (line 93) * ansi-definitions: Code-Level And API Options. (line 6) * ansi-prototypes: Code-Level And API Options. (line 12) * array: Code-Level And API Options. (line 54) * backup: Debugging Options. (line 6) * batch: Options Affecting Scanner Behavior. (line 23) * bison-bridge: Code-Level And API Options. (line 17) * bison-locations: Code-Level And API Options. (line 24) * c++: Code-Level And API Options. (line 50) * case-insensitive: Options Affecting Scanner Behavior. (line 6) * debug: Debugging Options. (line 16) * default: Options Affecting Scanner Behavior. (line 90) * ecs: Options for Scanner Speed and Size. (line 24) * fast: Options for Scanner Speed and Size. (line 100) * full: Options for Scanner Speed and Size. (line 95) * header-file: Options for Specifying Filenames. (line 6) * interactive: Options Affecting Scanner Behavior. (line 33) * lex-compat: Options Affecting Scanner Behavior. (line 14) * main: Code-Level And API Options. (line 100) * meta-ecs: Options for Scanner Speed and Size. (line 45) * nodefault: Debugging Options. (line 43) * noline: Code-Level And API Options. (line 29) * nounistd: Code-Level And API Options. (line 105) * nowarn: Debugging Options. (line 55) * noyyalloc: Overriding The Default Memory Management. (line 17) * outfile: Options for Specifying Filenames. (line 21) * perf-report: Debugging Options. (line 31) * pointer: Code-Level And API Options. (line 57) * posix: Options Affecting Scanner Behavior. (line 105) * prefix: Code-Level And API Options. (line 61) * read: Options for Scanner Speed and Size. (line 54) * reentrant: Code-Level And API Options. (line 38) * stack: Options Affecting Scanner Behavior. (line 125) * stdinit: Options Affecting Scanner Behavior. (line 129) * stdout: Options for Specifying Filenames. (line 27) * tables-file: Options for Specifying Filenames. (line 36) * tables-verify: Options for Specifying Filenames. (line 41) * trace: Debugging Options. (line 49) * verbose: Debugging Options. (line 58) * warn: Debugging Options. (line 66) * yyclass: Code-Level And API Options. (line 114) * yylineno: Options Affecting Scanner Behavior. (line 138) * yywrap: Options Affecting Scanner Behavior. (line 146) flex-2.5.39/doc/flex.info0000644000175000017500000002425712314621343015413 0ustar srivastasrivastaThis is flex.info, produced by makeinfo version 4.13 from flex.texi. INFO-DIR-SECTION Programming START-INFO-DIR-ENTRY * flex: (flex). Fast lexical analyzer generator (lex replacement). END-INFO-DIR-ENTRY The flex manual is placed under the same licensing conditions as the rest of flex: Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2012 The Flex Project. Copyright (C) 1990, 1997 The Regents of the University of California. All rights reserved. This code is derived from software contributed to Berkeley by Vern Paxson. The United States Government has rights in this work pursuant to contract no. DE-AC03-76SF00098 between the United States Department of Energy and the University of California. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  Indirect: flex.info-1: 1627 flex.info-2: 288420  Tag Table: (Indirect) Node: Top1627 Node: Copyright7695 Node: Reporting Bugs9214 Node: Introduction9519 Node: Simple Examples10347 Node: Format13634 Node: Definitions Section14047 Ref: Definitions Section-Footnote-116305 Node: Rules Section16373 Node: User Code Section17530 Node: Comments in the Input17968 Node: Patterns19335 Ref: case and character ranges26159 Node: Matching30170 Node: Actions33454 Node: Generated Scanner42423 Node: Start Conditions47438 Node: Multiple Input Buffers57975 Ref: Scanning Strings64511 Node: EOF66141 Node: Misc Macros67727 Node: User Values70579 Node: Yacc72910 Node: Scanner Options73805 Node: Options for Specifying Filenames76561 Ref: option-header76787 Ref: option-outfile77499 Ref: option-stdout77824 Node: Options Affecting Scanner Behavior78806 Ref: option-case-insensitive79047 Ref: option-lex-compat79480 Ref: option-batch80012 Ref: option-interactive80536 Ref: option-7bit81890 Ref: option-8bit83194 Ref: option-default83606 Ref: option-always-interactive83670 Ref: option-posix84274 Ref: option-stack85421 Ref: option-stdinit85529 Ref: option-yylineno86007 Ref: option-yywrap86450 Node: Code-Level And API Options86718 Ref: option-ansi-definitions86945 Ref: option-ansi-prototypes87197 Ref: option-bison-bridge87444 Ref: option-bison-locations87783 Ref: option-noline88043 Ref: option-reentrant88557 Ref: option-c++89168 Ref: option-array89294 Ref: option-pointer89392 Ref: option-prefix89520 Ref: option-main91048 Ref: option-nounistd91232 Ref: option-yyclass91740 Node: Options for Scanner Speed and Size92226 Ref: option-align92775 Ref: option-ecs93276 Ref: option-meta-ecs94312 Ref: option-read94799 Ref: option-full96681 Ref: option-fast96876 Node: Debugging Options97801 Ref: option-backup97988 Ref: option-debug98533 Ref: option-perf-report99255 Ref: option-nodefault99881 Ref: option-trace100199 Ref: option-nowarn100490 Ref: option-verbose100558 Ref: option-warn100987 Node: Miscellaneous Options101206 Node: Performance101663 Node: Cxx111905 Node: Reentrant119507 Node: Reentrant Uses120184 Node: Reentrant Overview121745 Node: Reentrant Example122544 Node: Reentrant Detail123318 Node: Specify Reentrant123751 Node: Extra Reentrant Argument124398 Node: Global Replacement125649 Node: Init and Destroy Functions126877 Node: Accessor Methods129394 Node: Extra Data130736 Node: About yyscan_t133001 Node: Reentrant Functions133396 Ref: bison-functions134878 Node: Lex and Posix135617 Node: Memory Management142988 Ref: memory-management143134 Node: The Default Memory Management143362 Ref: The Default Memory Management-Footnote-1147168 Node: Overriding The Default Memory Management147321 Ref: Overriding The Default Memory Management-Footnote-1149718 Node: A Note About yytext And Memory149882 Node: Serialized Tables151115 Ref: serialization151259 Node: Creating Serialized Tables152024 Node: Loading and Unloading Serialized Tables153632 Node: Tables File Format155400 Node: Diagnostics162414 Node: Limitations165823 Node: Bibliography167771 Node: FAQ168444 Node: When was flex born?172684 Node: How do I expand backslash-escape sequences in C-style quoted strings?173061 Node: Why do flex scanners call fileno if it is not ANSI compatible?174365 Node: Does flex support recursive pattern definitions?175160 Node: How do I skip huge chunks of input (tens of megabytes) while using flex?176006 Node: Flex is not matching my patterns in the same order that I defined them.176473 Node: My actions are executing out of order or sometimes not at all.178218 Node: How can I have multiple input sources feed into the same scanner at the same time?178991 Node: Can I build nested parsers that work with the same input file?180979 Node: How can I match text only at the end of a file?181985 Node: How can I make REJECT cascade across start condition boundaries?182789 Node: Why cant I use fast or full tables with interactive mode?183803 Node: How much faster is -F or -f than -C?185061 Node: If I have a simple grammar cant I just parse it with flex?185373 Node: Why doesn't yyrestart() set the start state back to INITIAL?185854 Node: How can I match C-style comments?186481 Node: The period isn't working the way I expected.187291 Node: Can I get the flex manual in another format?188538 Node: Does there exist a "faster" NDFA->DFA algorithm?189027 Node: How does flex compile the DFA so quickly?189537 Node: How can I use more than 8192 rules?190504 Node: How do I abandon a file in the middle of a scan and switch to a new file?191914 Node: How do I execute code only during initialization (only before the first scan)?192467 Node: How do I execute code at termination?193244 Node: Where else can I find help?193570 Node: Can I include comments in the "rules" section of the file?193943 Node: I get an error about undefined yywrap().194322 Node: How can I change the matching pattern at run time?194798 Node: How can I expand macros in the input?195160 Node: How can I build a two-pass scanner?196192 Node: How do I match any string not matched in the preceding rules?197108 Node: I am trying to port code from AT&T lex that uses yysptr and yysbuf.198017 Node: Is there a way to make flex treat NULL like a regular character?198812 Node: Whenever flex can not match the input it says "flex scanner jammed".199333 Node: Why doesn't flex have non-greedy operators like perl does?199976 Node: Memory leak - 16386 bytes allocated by malloc.201329 Ref: faq-memory-leak201627 Node: How do I track the byte offset for lseek()?202594 Node: How do I use my own I/O classes in a C++ scanner?204103 Node: How do I skip as many chars as possible?204946 Node: deleteme00206020 Node: Are certain equivalent patterns faster than others?206460 Node: Is backing up a big deal?209878 Node: Can I fake multi-byte character support?211784 Node: deleteme01213225 Node: Can you discuss some flex internals?214334 Node: unput() messes up yy_at_bol216578 Node: The | operator is not doing what I want217680 Node: Why can't flex understand this variable trailing context pattern?219226 Node: The ^ operator isn't working220475 Node: Trailing context is getting confused with trailing optional patterns221710 Node: Is flex GNU or not?222953 Node: ERASEME53224626 Node: I need to scan if-then-else blocks and while loops225396 Node: ERASEME55226595 Node: ERASEME56227693 Node: ERASEME57229051 Node: Is there a repository for flex scanners?230049 Node: How can I conditionally compile or preprocess my flex input file?230364 Node: Where can I find grammars for lex and yacc?230837 Node: I get an end-of-buffer message for each character scanned.231184 Node: unnamed-faq-62231779 Node: unnamed-faq-63232797 Node: unnamed-faq-64234094 Node: unnamed-faq-65235060 Node: unnamed-faq-66235846 Node: unnamed-faq-67236961 Node: unnamed-faq-68237948 Node: unnamed-faq-69239090 Node: unnamed-faq-70239803 Node: unnamed-faq-71240564 Node: unnamed-faq-72241773 Node: unnamed-faq-73242816 Node: unnamed-faq-74243740 Node: unnamed-faq-75244685 Node: unnamed-faq-76245817 Node: unnamed-faq-77246523 Node: unnamed-faq-78247416 Node: unnamed-faq-79248414 Node: unnamed-faq-80250114 Node: unnamed-faq-81251432 Node: unnamed-faq-82254232 Node: unnamed-faq-83255189 Node: unnamed-faq-84256969 Node: unnamed-faq-85258072 Node: unnamed-faq-86259079 Node: unnamed-faq-87260017 Node: unnamed-faq-88260663 Node: unnamed-faq-90261494 Node: unnamed-faq-91262757 Node: unnamed-faq-92265185 Node: unnamed-faq-93265684 Node: unnamed-faq-94266611 Node: unnamed-faq-95268023 Node: unnamed-faq-96269541 Node: unnamed-faq-97270300 Node: unnamed-faq-98270967 Node: unnamed-faq-99271632 Node: unnamed-faq-100272561 Node: unnamed-faq-101273271 Node: What is the difference between YYLEX_PARAM and YY_DECL?274084 Node: Why do I get "conflicting types for yylex" error?274605 Node: How do I access the values set in a Flex action from within a Bison action?275135 Node: Appendices275566 Node: Makefiles and Flex275775 Ref: Makefiles and Flex-Footnote-1278971 Ref: Makefiles and Flex-Footnote-2279088 Ref: Makefiles and Flex-Footnote-3279274 Node: Bison Bridge279325 Ref: Bison Bridge-Footnote-1281990 Node: M4 Dependency282182 Ref: M4 Dependency-Footnote-1283587 Node: Common Patterns283722 Node: Numbers284013 Node: Identifiers284990 Node: Quoted Constructs285817 Node: Addresses286869 Node: Indices288182 Node: Concept Index288420 Node: Index of Functions and Macros313703 Node: Index of Variables318599 Node: Index of Data Types320265 Node: Index of Hooks321153 Node: Index of Scanner Options321721  End Tag Table flex-2.5.39/doc/Makefile.in0000644000175000017500000006456412314621560015653 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = doc DIST_COMMON = $(dist_doc_DATA) $(dist_man_MANS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/stamp-vti \ $(srcdir)/version.texi mdate-sh texinfo.tex ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = INFO_DEPS = $(srcdir)/flex.info am__TEXINFO_TEX_DIR = $(srcdir) DVIS = flex.dvi PDFS = flex.pdf PSS = flex.ps HTMLS = flex.html TEXINFOS = flex.texi TEXI2DVI = texi2dvi TEXI2PDF = $(TEXI2DVI) --pdf --batch MAKEINFOHTML = $(MAKEINFO) --html AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) DVIPS = dvips am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__installdirs = "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" \ "$(DESTDIR)$(docdir)" am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man1dir = $(mandir)/man1 NROFF = nroff MANS = $(dist_man_MANS) DATA = $(dist_doc_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ help2man = @HELP2MAN@ info_TEXINFOS = flex.texi dist_man_MANS = flex.1 dist_doc_DATA = flex.pdf CLEANFILES = \ flex.aux \ flex.cp \ flex.cps \ flex.fn \ flex.fns \ flex.hk \ flex.hks \ flex.ky \ flex.log \ flex.op \ flex.ops \ flex.pg \ flex.toc \ flex.tp \ flex.tps \ flex.vr \ flex.vrs all: all-am .SUFFIXES: .SUFFIXES: .dvi .html .info .pdf .ps .texi $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs .texi.info: restore=: && backupdir="$(am__leading_dot)am$$$$" && \ am__cwd=`pwd` && $(am__cd) $(srcdir) && \ rm -rf $$backupdir && mkdir $$backupdir && \ if ($(MAKEINFO) --version) >/dev/null 2>&1; then \ for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \ if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \ done; \ else :; fi && \ cd "$$am__cwd"; \ if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ -o $@ $<; \ then \ rc=0; \ $(am__cd) $(srcdir); \ else \ rc=$$?; \ $(am__cd) $(srcdir) && \ $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \ fi; \ rm -rf $$backupdir; exit $$rc .texi.dvi: TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ $(TEXI2DVI) $< .texi.pdf: TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ $(TEXI2PDF) $< .texi.html: rm -rf $(@:.html=.htp) if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ -o $(@:.html=.htp) $<; \ then \ rm -rf $@; \ if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \ else \ if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \ exit 1; \ fi $(srcdir)/flex.info: flex.texi $(srcdir)/version.texi flex.dvi: flex.texi $(srcdir)/version.texi flex.pdf: flex.texi $(srcdir)/version.texi flex.html: flex.texi $(srcdir)/version.texi $(srcdir)/version.texi: $(srcdir)/stamp-vti $(srcdir)/stamp-vti: flex.texi $(top_srcdir)/configure @(dir=.; test -f ./flex.texi || dir=$(srcdir); \ set `$(SHELL) $(srcdir)/mdate-sh $$dir/flex.texi`; \ echo "@set UPDATED $$1 $$2 $$3"; \ echo "@set UPDATED-MONTH $$2 $$3"; \ echo "@set EDITION $(VERSION)"; \ echo "@set VERSION $(VERSION)") > vti.tmp @cmp -s vti.tmp $(srcdir)/version.texi \ || (echo "Updating $(srcdir)/version.texi"; \ cp vti.tmp $(srcdir)/version.texi) -@rm -f vti.tmp @cp $(srcdir)/version.texi $@ mostlyclean-vti: -rm -f vti.tmp maintainer-clean-vti: -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi .dvi.ps: TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ $(DVIPS) -o $@ $< uninstall-dvi-am: @$(NORMAL_UNINSTALL) @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \ rm -f "$(DESTDIR)$(dvidir)/$$f"; \ done uninstall-html-am: @$(NORMAL_UNINSTALL) @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \ rm -rf "$(DESTDIR)$(htmldir)/$$f"; \ done uninstall-info-am: @$(PRE_UNINSTALL) @if test -d '$(DESTDIR)$(infodir)' && $(am__can_run_installinfo); then \ list='$(INFO_DEPS)'; \ for file in $$list; do \ relfile=`echo "$$file" | sed 's|^.*/||'`; \ echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \ if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \ then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \ done; \ else :; fi @$(NORMAL_UNINSTALL) @list='$(INFO_DEPS)'; \ for file in $$list; do \ relfile=`echo "$$file" | sed 's|^.*/||'`; \ relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \ (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \ echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \ rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \ else :; fi); \ done uninstall-pdf-am: @$(NORMAL_UNINSTALL) @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \ rm -f "$(DESTDIR)$(pdfdir)/$$f"; \ done uninstall-ps-am: @$(NORMAL_UNINSTALL) @list='$(PSS)'; test -n "$(psdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \ rm -f "$(DESTDIR)$(psdir)/$$f"; \ done dist-info: $(INFO_DEPS) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ list='$(INFO_DEPS)'; \ for base in $$list; do \ case $$base in \ $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \ esac; \ if test -f $$base; then d=.; else d=$(srcdir); fi; \ base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \ for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \ if test -f $$file; then \ relfile=`expr "$$file" : "$$d/\(.*\)"`; \ test -f "$(distdir)/$$relfile" || \ cp -p $$file "$(distdir)/$$relfile"; \ else :; fi; \ done; \ done mostlyclean-aminfo: -rm -rf flex.aux flex.cp flex.cps flex.fn flex.fns flex.hk flex.hks flex.ky \ flex.kys flex.log flex.op flex.ops flex.pg flex.pgs flex.tmp \ flex.toc flex.tp flex.tps flex.vr flex.vrs clean-aminfo: -test -z "flex.dvi flex.pdf flex.ps flex.html" \ || rm -rf flex.dvi flex.pdf flex.ps flex.html maintainer-clean-aminfo: @list='$(INFO_DEPS)'; for i in $$list; do \ i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \ echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \ rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \ done install-man1: $(dist_man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(dist_man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) install-dist_docDATA: $(dist_doc_DATA) @$(NORMAL_INSTALL) @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ done uninstall-dist_docDATA: @$(NORMAL_UNINSTALL) @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @list='$(MANS)'; if test -n "$$list"; then \ list=`for p in $$list; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ if test -n "$$list" && \ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ echo " typically \`make maintainer-clean' will remove them" >&2; \ exit 1; \ else :; fi; \ else :; fi @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-info check-am: all-am check: check-am all-am: Makefile $(INFO_DEPS) $(MANS) $(DATA) installdirs: for dir in "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(docdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-aminfo clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: $(DVIS) html: html-am html-am: $(HTMLS) info: info-am info-am: $(INFO_DEPS) install-data-am: install-dist_docDATA install-info-am install-man install-dvi: install-dvi-am install-dvi-am: $(DVIS) @$(NORMAL_INSTALL) @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(dvidir)'"; \ $(MKDIR_P) "$(DESTDIR)$(dvidir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \ done install-exec-am: install-html: install-html-am install-html-am: $(HTMLS) @$(NORMAL_INSTALL) @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \ $(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \ $(am__strip_dir) \ d2=$$d$$p; \ if test -d "$$d2"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \ $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \ echo " $(INSTALL_DATA) '$$d2'/* '$(DESTDIR)$(htmldir)/$$f'"; \ $(INSTALL_DATA) "$$d2"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \ else \ list2="$$list2 $$d2"; \ fi; \ done; \ test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \ done; } install-info: install-info-am install-info-am: $(INFO_DEPS) @$(NORMAL_INSTALL) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(infodir)'"; \ $(MKDIR_P) "$(DESTDIR)$(infodir)" || exit 1; \ fi; \ for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ esac; \ if test -f $$file; then d=.; else d=$(srcdir); fi; \ file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \ for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \ $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \ if test -f $$ifile; then \ echo "$$ifile"; \ else : ; fi; \ done; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done @$(POST_INSTALL) @if $(am__can_run_installinfo); then \ list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ for file in $$list; do \ relfile=`echo "$$file" | sed 's|^.*/||'`; \ echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\ install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\ done; \ else : ; fi install-man: install-man1 install-pdf: install-pdf-am install-pdf-am: $(PDFS) @$(NORMAL_INSTALL) @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pdfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pdfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done install-ps: install-ps-am install-ps-am: $(PSS) @$(NORMAL_INSTALL) @list='$(PSS)'; test -n "$(psdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(psdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(psdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-vti mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-aminfo mostlyclean-generic \ mostlyclean-libtool mostlyclean-vti pdf: pdf-am pdf-am: $(PDFS) ps: ps-am ps-am: $(PSS) uninstall-am: uninstall-dist_docDATA uninstall-dvi-am \ uninstall-html-am uninstall-info-am uninstall-man \ uninstall-pdf-am uninstall-ps-am uninstall-man: uninstall-man1 .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-aminfo clean-generic \ clean-libtool dist-info distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-dist_docDATA install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-man1 install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-aminfo maintainer-clean-generic \ maintainer-clean-vti mostlyclean mostlyclean-aminfo \ mostlyclean-generic mostlyclean-libtool mostlyclean-vti pdf \ pdf-am ps ps-am uninstall uninstall-am uninstall-dist_docDATA \ uninstall-dvi-am uninstall-html-am uninstall-info-am \ uninstall-man uninstall-man1 uninstall-pdf-am uninstall-ps-am $(dist_man_MANS): $(top_srcdir)/main.c for i in $(dist_man_MANS) ; do \ $(help2man) --name='$(PACKAGE_NAME)' \ --section=`echo $$i | sed -e 's/.*\.\([^.]*\)$$/\1/'` \ ../flex$(EXEEXT) > $$i || rm -f $$i ; \ done # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/doc/texinfo.tex0000644000175000017500000116130512314621560015774 0ustar srivastasrivasta% texinfo.tex -- TeX macros to handle Texinfo files. % % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % \def\texinfoversion{2012-03-11.15} % % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, % 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. % % This texinfo.tex file is free software: you can redistribute it and/or % modify it under the terms of the GNU General Public License as % published by the Free Software Foundation, either version 3 of the % License, or (at your option) any later version. % % This texinfo.tex file is distributed in the hope that it will be % useful, but WITHOUT ANY WARRANTY; without even the implied warranty % of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU % General Public License for more details. % % You should have received a copy of the GNU General Public License % along with this program. If not, see . % % As a special exception, when this file is read by TeX when processing % a Texinfo source document, you may use the result without % restriction. (This has been our intent since Texinfo was invented.) % % Please try the latest version of texinfo.tex before submitting bug % reports; you can get the latest version from: % http://www.gnu.org/software/texinfo/ (the Texinfo home page), or % ftp://tug.org/tex/texinfo.tex % (and all CTAN mirrors, see http://www.ctan.org). % The texinfo.tex in any given distribution could well be out % of date, so if that's what you're using, please check. % % Send bug reports to bug-texinfo@gnu.org. Please include including a % complete document in each bug report with which we can reproduce the % problem. Patches are, of course, greatly appreciated. % % To process a Texinfo manual with TeX, it's most reliable to use the % texi2dvi shell script that comes with the distribution. For a simple % manual foo.texi, however, you can get away with this: % tex foo.texi % texindex foo.?? % tex foo.texi % tex foo.texi % dvips foo.dvi -o # or whatever; this makes foo.ps. % The extra TeX runs get the cross-reference information correct. % Sometimes one run after texindex suffices, and sometimes you need more % than two; texi2dvi does it as many times as necessary. % % It is possible to adapt texinfo.tex for other languages, to some % extent. You can get the existing language-specific files from the % full Texinfo distribution. % % The GNU Texinfo home page is http://www.gnu.org/software/texinfo. \message{Loading texinfo [version \texinfoversion]:} % If in a .fmt file, print the version number % and turn on active characters that we couldn't do earlier because % they might have appeared in the input file name. \everyjob{\message{[Texinfo version \texinfoversion]}% \catcode`+=\active \catcode`\_=\active} \chardef\other=12 % We never want plain's \outer definition of \+ in Texinfo. % For @tex, we can use \tabalign. \let\+ = \relax % Save some plain tex macros whose names we will redefine. \let\ptexb=\b \let\ptexbullet=\bullet \let\ptexc=\c \let\ptexcomma=\, \let\ptexdot=\. \let\ptexdots=\dots \let\ptexend=\end \let\ptexequiv=\equiv \let\ptexexclam=\! \let\ptexfootnote=\footnote \let\ptexgtr=> \let\ptexhat=^ \let\ptexi=\i \let\ptexindent=\indent \let\ptexinsert=\insert \let\ptexlbrace=\{ \let\ptexless=< \let\ptexnewwrite\newwrite \let\ptexnoindent=\noindent \let\ptexplus=+ \let\ptexraggedright=\raggedright \let\ptexrbrace=\} \let\ptexslash=\/ \let\ptexstar=\* \let\ptext=\t \let\ptextop=\top {\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode % If this character appears in an error message or help string, it % starts a new line in the output. \newlinechar = `^^J % Use TeX 3.0's \inputlineno to get the line number, for better error % messages, but if we're using an old version of TeX, don't do anything. % \ifx\inputlineno\thisisundefined \let\linenumber = \empty % Pre-3.0. \else \def\linenumber{l.\the\inputlineno:\space} \fi % Set up fixed words for English if not already set. \ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi \ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi \ifx\putworderror\undefined \gdef\putworderror{error}\fi \ifx\putwordfile\undefined \gdef\putwordfile{file}\fi \ifx\putwordin\undefined \gdef\putwordin{in}\fi \ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi \ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi \ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi \ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi \ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi \ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi \ifx\putwordof\undefined \gdef\putwordof{of}\fi \ifx\putwordon\undefined \gdef\putwordon{on}\fi \ifx\putwordpage\undefined \gdef\putwordpage{page}\fi \ifx\putwordsection\undefined \gdef\putwordsection{section}\fi \ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi \ifx\putwordsee\undefined \gdef\putwordsee{see}\fi \ifx\putwordSee\undefined \gdef\putwordSee{See}\fi \ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi \ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi % \ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi \ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi \ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi \ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi \ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi \ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi \ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi \ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi \ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi \ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi \ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi \ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi % \ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi \ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi \ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi \ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi \ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi % Since the category of space is not known, we have to be careful. \chardef\spacecat = 10 \def\spaceisspace{\catcode`\ =\spacecat} % sometimes characters are active, so we need control sequences. \chardef\ampChar = `\& \chardef\colonChar = `\: \chardef\commaChar = `\, \chardef\dashChar = `\- \chardef\dotChar = `\. \chardef\exclamChar= `\! \chardef\hashChar = `\# \chardef\lquoteChar= `\` \chardef\questChar = `\? \chardef\rquoteChar= `\' \chardef\semiChar = `\; \chardef\slashChar = `\/ \chardef\underChar = `\_ % Ignore a token. % \def\gobble#1{} % The following is used inside several \edef's. \def\makecsname#1{\expandafter\noexpand\csname#1\endcsname} % Hyphenation fixes. \hyphenation{ Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script ap-pen-dix bit-map bit-maps data-base data-bases eshell fall-ing half-way long-est man-u-script man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces spell-ing spell-ings stand-alone strong-est time-stamp time-stamps which-ever white-space wide-spread wrap-around } % Margin to add to right of even pages, to left of odd pages. \newdimen\bindingoffset \newdimen\normaloffset \newdimen\pagewidth \newdimen\pageheight % For a final copy, take out the rectangles % that mark overfull boxes (in case you have decided % that the text looks ok even though it passes the margin). % \def\finalout{\overfullrule=0pt } % Sometimes it is convenient to have everything in the transcript file % and nothing on the terminal. We don't just call \tracingall here, % since that produces some useless output on the terminal. We also make % some effort to order the tracing commands to reduce output in the log % file; cf. trace.sty in LaTeX. % \def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% \def\loggingall{% \tracingstats2 \tracingpages1 \tracinglostchars2 % 2 gives us more in etex \tracingparagraphs1 \tracingoutput1 \tracingmacros2 \tracingrestores1 \showboxbreadth\maxdimen \showboxdepth\maxdimen \ifx\eTeXversion\thisisundefined\else % etex gives us more logging \tracingscantokens1 \tracingifs1 \tracinggroups1 \tracingnesting2 \tracingassigns1 \fi \tracingcommands3 % 3 gives us more in etex \errorcontextlines16 }% % @errormsg{MSG}. Do the index-like expansions on MSG, but if things % aren't perfect, it's not the end of the world, being an error message, % after all. % \def\errormsg{\begingroup \indexnofonts \doerrormsg} \def\doerrormsg#1{\errmessage{#1}} % add check for \lastpenalty to plain's definitions. If the last thing % we did was a \nobreak, we don't want to insert more space. % \def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount \removelastskip\penalty-50\smallskip\fi\fi} \def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount \removelastskip\penalty-100\medskip\fi\fi} \def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount \removelastskip\penalty-200\bigskip\fi\fi} % Do @cropmarks to get crop marks. % \newif\ifcropmarks \let\cropmarks = \cropmarkstrue % % Dimensions to add cropmarks at corners. % Added by P. A. MacKay, 12 Nov. 1986 % \newdimen\outerhsize \newdimen\outervsize % set by the paper size routines \newdimen\cornerlong \cornerlong=1pc \newdimen\cornerthick \cornerthick=.3pt \newdimen\topandbottommargin \topandbottommargin=.75in % Output a mark which sets \thischapter, \thissection and \thiscolor. % We dump everything together because we only have one kind of mark. % This works because we only use \botmark / \topmark, not \firstmark. % % A mark contains a subexpression of the \ifcase ... \fi construct. % \get*marks macros below extract the needed part using \ifcase. % % Another complication is to let the user choose whether \thischapter % (\thissection) refers to the chapter (section) in effect at the top % of a page, or that at the bottom of a page. The solution is % described on page 260 of The TeXbook. It involves outputting two % marks for the sectioning macros, one before the section break, and % one after. I won't pretend I can describe this better than DEK... \def\domark{% \toks0=\expandafter{\lastchapterdefs}% \toks2=\expandafter{\lastsectiondefs}% \toks4=\expandafter{\prevchapterdefs}% \toks6=\expandafter{\prevsectiondefs}% \toks8=\expandafter{\lastcolordefs}% \mark{% \the\toks0 \the\toks2 \noexpand\or \the\toks4 \the\toks6 \noexpand\else \the\toks8 }% } % \topmark doesn't work for the very first chapter (after the title % page or the contents), so we use \firstmark there -- this gets us % the mark with the chapter defs, unless the user sneaks in, e.g., % @setcolor (or @url, or @link, etc.) between @contents and the very % first @chapter. \def\gettopheadingmarks{% \ifcase0\topmark\fi \ifx\thischapter\empty \ifcase0\firstmark\fi \fi } \def\getbottomheadingmarks{\ifcase1\botmark\fi} \def\getcolormarks{\ifcase2\topmark\fi} % Avoid "undefined control sequence" errors. \def\lastchapterdefs{} \def\lastsectiondefs{} \def\prevchapterdefs{} \def\prevsectiondefs{} \def\lastcolordefs{} % Main output routine. \chardef\PAGE = 255 \output = {\onepageout{\pagecontents\PAGE}} \newbox\headlinebox \newbox\footlinebox % \onepageout takes a vbox as an argument. Note that \pagecontents % does insertions, but you have to call it yourself. \def\onepageout#1{% \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi % \ifodd\pageno \advance\hoffset by \bindingoffset \else \advance\hoffset by -\bindingoffset\fi % % Do this outside of the \shipout so @code etc. will be expanded in % the headline as they should be, not taken literally (outputting ''code). \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}% \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}% % {% % Have to do this stuff outside the \shipout because we want it to % take effect in \write's, yet the group defined by the \vbox ends % before the \shipout runs. % \indexdummies % don't expand commands in the output. \normalturnoffactive % \ in index entries must not stay \, e.g., if % the page break happens to be in the middle of an example. % We don't want .vr (or whatever) entries like this: % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}} % "\acronym" won't work when it's read back in; % it needs to be % {\code {{\tt \backslashcurfont }acronym} \shipout\vbox{% % Do this early so pdf references go to the beginning of the page. \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi % \ifcropmarks \vbox to \outervsize\bgroup \hsize = \outerhsize \vskip-\topandbottommargin \vtop to0pt{% \line{\ewtop\hfil\ewtop}% \nointerlineskip \line{% \vbox{\moveleft\cornerthick\nstop}% \hfill \vbox{\moveright\cornerthick\nstop}% }% \vss}% \vskip\topandbottommargin \line\bgroup \hfil % center the page within the outer (page) hsize. \ifodd\pageno\hskip\bindingoffset\fi \vbox\bgroup \fi % \unvbox\headlinebox \pagebody{#1}% \ifdim\ht\footlinebox > 0pt % Only leave this space if the footline is nonempty. % (We lessened \vsize for it in \oddfootingyyy.) % The \baselineskip=24pt in plain's \makefootline has no effect. \vskip 24pt \unvbox\footlinebox \fi % \ifcropmarks \egroup % end of \vbox\bgroup \hfil\egroup % end of (centering) \line\bgroup \vskip\topandbottommargin plus1fill minus1fill \boxmaxdepth = \cornerthick \vbox to0pt{\vss \line{% \vbox{\moveleft\cornerthick\nsbot}% \hfill \vbox{\moveright\cornerthick\nsbot}% }% \nointerlineskip \line{\ewbot\hfil\ewbot}% }% \egroup % \vbox from first cropmarks clause \fi }% end of \shipout\vbox }% end of group with \indexdummies \advancepageno \ifnum\outputpenalty>-20000 \else\dosupereject\fi } \newinsert\margin \dimen\margin=\maxdimen \def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}} {\catcode`\@ =11 \gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi % marginal hacks, juha@viisa.uucp (Juha Takala) \ifvoid\margin\else % marginal info is present \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi \dimen@=\dp#1\relax \unvbox#1\relax \ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi \ifr@ggedbottom \kern-\dimen@ \vfil \fi} } % Here are the rules for the cropmarks. Note that they are % offset so that the space between them is truly \outerhsize or \outervsize % (P. A. MacKay, 12 November, 1986) % \def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong} \def\nstop{\vbox {\hrule height\cornerthick depth\cornerlong width\cornerthick}} \def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong} \def\nsbot{\vbox {\hrule height\cornerlong depth\cornerthick width\cornerthick}} % Parse an argument, then pass it to #1. The argument is the rest of % the input line (except we remove a trailing comment). #1 should be a % macro which expects an ordinary undelimited TeX argument. % \def\parsearg{\parseargusing{}} \def\parseargusing#1#2{% \def\argtorun{#2}% \begingroup \obeylines \spaceisspace #1% \parseargline\empty% Insert the \empty token, see \finishparsearg below. } {\obeylines % \gdef\parseargline#1^^M{% \endgroup % End of the group started in \parsearg. \argremovecomment #1\comment\ArgTerm% }% } % First remove any @comment, then any @c comment. \def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} \def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} % Each occurrence of `\^^M' or `\^^M' is replaced by a single space. % % \argremovec might leave us with trailing space, e.g., % @end itemize @c foo % This space token undergoes the same procedure and is eventually removed % by \finishparsearg. % \def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M} \def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M} \def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{% \def\temp{#3}% \ifx\temp\empty % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp: \let\temp\finishparsearg \else \let\temp\argcheckspaces \fi % Put the space token in: \temp#1 #3\ArgTerm } % If a _delimited_ argument is enclosed in braces, they get stripped; so % to get _exactly_ the rest of the line, we had to prevent such situation. % We prepended an \empty token at the very beginning and we expand it now, % just before passing the control to \argtorun. % (Similarly, we have to think about #3 of \argcheckspacesY above: it is % either the null string, or it ends with \^^M---thus there is no danger % that a pair of braces would be stripped. % % But first, we have to remove the trailing space token. % \def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}} % \parseargdef\foo{...} % is roughly equivalent to % \def\foo{\parsearg\Xfoo} % \def\Xfoo#1{...} % % Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my % favourite TeX trick. --kasal, 16nov03 \def\parseargdef#1{% \expandafter \doparseargdef \csname\string#1\endcsname #1% } \def\doparseargdef#1#2{% \def#2{\parsearg#1}% \def#1##1% } % Several utility definitions with active space: { \obeyspaces \gdef\obeyedspace{ } % Make each space character in the input produce a normal interword % space in the output. Don't allow a line break at this space, as this % is used only in environments like @example, where each line of input % should produce a line of output anyway. % \gdef\sepspaces{\obeyspaces\let =\tie} % If an index command is used in an @example environment, any spaces % therein should become regular spaces in the raw index file, not the % expansion of \tie (\leavevmode \penalty \@M \ ). \gdef\unsepspaces{\let =\space} } \def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} % Define the framework for environments in texinfo.tex. It's used like this: % % \envdef\foo{...} % \def\Efoo{...} % % It's the responsibility of \envdef to insert \begingroup before the % actual body; @end closes the group after calling \Efoo. \envdef also % defines \thisenv, so the current environment is known; @end checks % whether the environment name matches. The \checkenv macro can also be % used to check whether the current environment is the one expected. % % Non-false conditionals (@iftex, @ifset) don't fit into this, so they % are not treated as environments; they don't open a group. (The % implementation of @end takes care not to call \endgroup in this % special case.) % At run-time, environments start with this: \def\startenvironment#1{\begingroup\def\thisenv{#1}} % initialize \let\thisenv\empty % ... but they get defined via ``\envdef\foo{...}'': \long\def\envdef#1#2{\def#1{\startenvironment#1#2}} \def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}} % Check whether we're in the right environment: \def\checkenv#1{% \def\temp{#1}% \ifx\thisenv\temp \else \badenverr \fi } % Environment mismatch, #1 expected: \def\badenverr{% \errhelp = \EMsimple \errmessage{This command can appear only \inenvironment\temp, not \inenvironment\thisenv}% } \def\inenvironment#1{% \ifx#1\empty outside of any environment% \else in environment \expandafter\string#1% \fi } % @end foo executes the definition of \Efoo. % But first, it executes a specialized version of \checkenv % \parseargdef\end{% \if 1\csname iscond.#1\endcsname \else % The general wording of \badenverr may not be ideal. \expandafter\checkenv\csname#1\endcsname \csname E#1\endcsname \endgroup \fi } \newhelp\EMsimple{Press RETURN to continue.} % Be sure we're in horizontal mode when doing a tie, since we make space % equivalent to this in @example-like environments. Otherwise, a space % at the beginning of a line will start with \penalty -- and % since \penalty is valid in vertical mode, we'd end up putting the % penalty on the vertical list instead of in the new paragraph. {\catcode`@ = 11 % Avoid using \@M directly, because that causes trouble % if the definition is written into an index file. \global\let\tiepenalty = \@M \gdef\tie{\leavevmode\penalty\tiepenalty\ } } % @: forces normal size whitespace following. \def\:{\spacefactor=1000 } % @* forces a line break. \def\*{\hfil\break\hbox{}\ignorespaces} % @/ allows a line break. \let\/=\allowbreak % @. is an end-of-sentence period. \def\.{.\spacefactor=\endofsentencespacefactor\space} % @! is an end-of-sentence bang. \def\!{!\spacefactor=\endofsentencespacefactor\space} % @? is an end-of-sentence query. \def\?{?\spacefactor=\endofsentencespacefactor\space} % @frenchspacing on|off says whether to put extra space after punctuation. % \def\onword{on} \def\offword{off} % \parseargdef\frenchspacing{% \def\temp{#1}% \ifx\temp\onword \plainfrenchspacing \else\ifx\temp\offword \plainnonfrenchspacing \else \errhelp = \EMsimple \errmessage{Unknown @frenchspacing option `\temp', must be on|off}% \fi\fi } % @w prevents a word break. Without the \leavevmode, @w at the % beginning of a paragraph, when TeX is still in vertical mode, would % produce a whole line of output instead of starting the paragraph. \def\w#1{\leavevmode\hbox{#1}} % @group ... @end group forces ... to be all on one page, by enclosing % it in a TeX vbox. We use \vtop instead of \vbox to construct the box % to keep its height that of a normal line. According to the rules for % \topskip (p.114 of the TeXbook), the glue inserted is % max (\topskip - \ht (first item), 0). If that height is large, % therefore, no glue is inserted, and the space between the headline and % the text is small, which looks bad. % % Another complication is that the group might be very large. This can % cause the glue on the previous page to be unduly stretched, because it % does not have much material. In this case, it's better to add an % explicit \vfill so that the extra space is at the bottom. The % threshold for doing this is if the group is more than \vfilllimit % percent of a page (\vfilllimit can be changed inside of @tex). % \newbox\groupbox \def\vfilllimit{0.7} % \envdef\group{% \ifnum\catcode`\^^M=\active \else \errhelp = \groupinvalidhelp \errmessage{@group invalid in context where filling is enabled}% \fi \startsavinginserts % \setbox\groupbox = \vtop\bgroup % Do @comment since we are called inside an environment such as % @example, where each end-of-line in the input causes an % end-of-line in the output. We don't want the end-of-line after % the `@group' to put extra space in the output. Since @group % should appear on a line by itself (according to the Texinfo % manual), we don't worry about eating any user text. \comment } % % The \vtop produces a box with normal height and large depth; thus, TeX puts % \baselineskip glue before it, and (when the next line of text is done) % \lineskip glue after it. Thus, space below is not quite equal to space % above. But it's pretty close. \def\Egroup{% % To get correct interline space between the last line of the group % and the first line afterwards, we have to propagate \prevdepth. \endgraf % Not \par, as it may have been set to \lisppar. \global\dimen1 = \prevdepth \egroup % End the \vtop. % \dimen0 is the vertical size of the group's box. \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox % \dimen2 is how much space is left on the page (more or less). \dimen2 = \pageheight \advance\dimen2 by -\pagetotal % if the group doesn't fit on the current page, and it's a big big % group, force a page break. \ifdim \dimen0 > \dimen2 \ifdim \pagetotal < \vfilllimit\pageheight \page \fi \fi \box\groupbox \prevdepth = \dimen1 \checkinserts } % % TeX puts in an \escapechar (i.e., `@') at the beginning of the help % message, so this ends up printing `@group can only ...'. % \newhelp\groupinvalidhelp{% group can only be used in environments such as @example,^^J% where each line of input produces a line of output.} % @need space-in-mils % forces a page break if there is not space-in-mils remaining. \newdimen\mil \mil=0.001in \parseargdef\need{% % Ensure vertical mode, so we don't make a big box in the middle of a % paragraph. \par % % If the @need value is less than one line space, it's useless. \dimen0 = #1\mil \dimen2 = \ht\strutbox \advance\dimen2 by \dp\strutbox \ifdim\dimen0 > \dimen2 % % Do a \strut just to make the height of this box be normal, so the % normal leading is inserted relative to the preceding line. % And a page break here is fine. \vtop to #1\mil{\strut\vfil}% % % TeX does not even consider page breaks if a penalty added to the % main vertical list is 10000 or more. But in order to see if the % empty box we just added fits on the page, we must make it consider % page breaks. On the other hand, we don't want to actually break the % page after the empty box. So we use a penalty of 9999. % % There is an extremely small chance that TeX will actually break the % page at this \penalty, if there are no other feasible breakpoints in % sight. (If the user is using lots of big @group commands, which % almost-but-not-quite fill up a page, TeX will have a hard time doing % good page breaking, for example.) However, I could not construct an % example where a page broke at this \penalty; if it happens in a real % document, then we can reconsider our strategy. \penalty9999 % % Back up by the size of the box, whether we did a page break or not. \kern -#1\mil % % Do not allow a page break right after this kern. \nobreak \fi } % @br forces paragraph break (and is undocumented). \let\br = \par % @page forces the start of a new page. % \def\page{\par\vfill\supereject} % @exdent text.... % outputs text on separate line in roman font, starting at standard page margin % This records the amount of indent in the innermost environment. % That's how much \exdent should take out. \newskip\exdentamount % This defn is used inside fill environments such as @defun. \parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break} % This defn is used inside nofill environments such as @example. \parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount \leftline{\hskip\leftskip{\rm#1}}}} % @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current % paragraph. For more general purposes, use the \margin insertion % class. WHICH is `l' or `r'. Not documented, written for gawk manual. % \newskip\inmarginspacing \inmarginspacing=1cm \def\strutdepth{\dp\strutbox} % \def\doinmargin#1#2{\strut\vadjust{% \nobreak \kern-\strutdepth \vtop to \strutdepth{% \baselineskip=\strutdepth \vss % if you have multiple lines of stuff to put here, you'll need to % make the vbox yourself of the appropriate size. \ifx#1l% \llap{\ignorespaces #2\hskip\inmarginspacing}% \else \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}% \fi \null }% }} \def\inleftmargin{\doinmargin l} \def\inrightmargin{\doinmargin r} % % @inmargin{TEXT [, RIGHT-TEXT]} % (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right; % else use TEXT for both). % \def\inmargin#1{\parseinmargin #1,,\finish} \def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing. \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0 > 0pt \def\lefttext{#1}% have both texts \def\righttext{#2}% \else \def\lefttext{#1}% have only one text \def\righttext{#1}% \fi % \ifodd\pageno \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin \else \def\temp{\inleftmargin\lefttext}% \fi \temp } % @| inserts a changebar to the left of the current line. It should % surround any changed text. This approach does *not* work if the % change spans more than two lines of output. To handle that, we would % have adopt a much more difficult approach (putting marks into the main % vertical list for the beginning and end of each change). This command % is not documented, not supported, and doesn't work. % \def\|{% % \vadjust can only be used in horizontal mode. \leavevmode % % Append this vertical mode material after the current line in the output. \vadjust{% % We want to insert a rule with the height and depth of the current % leading; that is exactly what \strutbox is supposed to record. \vskip-\baselineskip % % \vadjust-items are inserted at the left edge of the type. So % the \llap here moves out into the left-hand margin. \llap{% % % For a thicker or thinner bar, change the `1pt'. \vrule height\baselineskip width1pt % % This is the space between the bar and the text. \hskip 12pt }% }% } % @include FILE -- \input text of FILE. % \def\include{\parseargusing\filenamecatcodes\includezzz} \def\includezzz#1{% \pushthisfilestack \def\thisfile{#1}% {% \makevalueexpandable % we want to expand any @value in FILE. \turnoffactive % and allow special characters in the expansion \indexnofonts % Allow `@@' and other weird things in file names. \wlog{texinfo.tex: doing @include of #1^^J}% \edef\temp{\noexpand\input #1 }% % % This trickery is to read FILE outside of a group, in case it makes % definitions, etc. \expandafter }\temp \popthisfilestack } \def\filenamecatcodes{% \catcode`\\=\other \catcode`~=\other \catcode`^=\other \catcode`_=\other \catcode`|=\other \catcode`<=\other \catcode`>=\other \catcode`+=\other \catcode`-=\other \catcode`\`=\other \catcode`\'=\other } \def\pushthisfilestack{% \expandafter\pushthisfilestackX\popthisfilestack\StackTerm } \def\pushthisfilestackX{% \expandafter\pushthisfilestackY\thisfile\StackTerm } \def\pushthisfilestackY #1\StackTerm #2\StackTerm {% \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}% } \def\popthisfilestack{\errthisfilestackempty} \def\errthisfilestackempty{\errmessage{Internal error: the stack of filenames is empty.}} % \def\thisfile{} % @center line % outputs that line, centered. % \parseargdef\center{% \ifhmode \let\centersub\centerH \else \let\centersub\centerV \fi \centersub{\hfil \ignorespaces#1\unskip \hfil}% \let\centersub\relax % don't let the definition persist, just in case } \def\centerH#1{{% \hfil\break \advance\hsize by -\leftskip \advance\hsize by -\rightskip \line{#1}% \break }} % \newcount\centerpenalty \def\centerV#1{% % The idea here is the same as in \startdefun, \cartouche, etc.: if % @center is the first thing after a section heading, we need to wipe % out the negative parskip inserted by \sectionheading, but still % prevent a page break here. \centerpenalty = \lastpenalty \ifnum\centerpenalty>10000 \vskip\parskip \fi \ifnum\centerpenalty>9999 \penalty\centerpenalty \fi \line{\kern\leftskip #1\kern\rightskip}% } % @sp n outputs n lines of vertical space % \parseargdef\sp{\vskip #1\baselineskip} % @comment ...line which is ignored... % @c is the same as @comment % @ignore ... @end ignore is another way to write a comment % \def\comment{\begingroup \catcode`\^^M=\other% \catcode`\@=\other \catcode`\{=\other \catcode`\}=\other% \commentxxx} {\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}} % \let\c=\comment % @paragraphindent NCHARS % We'll use ems for NCHARS, close enough. % NCHARS can also be the word `asis' or `none'. % We cannot feasibly implement @paragraphindent asis, though. % \def\asisword{asis} % no translation, these are keywords \def\noneword{none} % \parseargdef\paragraphindent{% \def\temp{#1}% \ifx\temp\asisword \else \ifx\temp\noneword \defaultparindent = 0pt \else \defaultparindent = #1em \fi \fi \parindent = \defaultparindent } % @exampleindent NCHARS % We'll use ems for NCHARS like @paragraphindent. % It seems @exampleindent asis isn't necessary, but % I preserve it to make it similar to @paragraphindent. \parseargdef\exampleindent{% \def\temp{#1}% \ifx\temp\asisword \else \ifx\temp\noneword \lispnarrowing = 0pt \else \lispnarrowing = #1em \fi \fi } % @firstparagraphindent WORD % If WORD is `none', then suppress indentation of the first paragraph % after a section heading. If WORD is `insert', then do indent at such % paragraphs. % % The paragraph indentation is suppressed or not by calling % \suppressfirstparagraphindent, which the sectioning commands do. % We switch the definition of this back and forth according to WORD. % By default, we suppress indentation. % \def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent} \def\insertword{insert} % \parseargdef\firstparagraphindent{% \def\temp{#1}% \ifx\temp\noneword \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent \else\ifx\temp\insertword \let\suppressfirstparagraphindent = \relax \else \errhelp = \EMsimple \errmessage{Unknown @firstparagraphindent option `\temp'}% \fi\fi } % Here is how we actually suppress indentation. Redefine \everypar to % \kern backwards by \parindent, and then reset itself to empty. % % We also make \indent itself not actually do anything until the next % paragraph. % \gdef\dosuppressfirstparagraphindent{% \gdef\indent{% \restorefirstparagraphindent \indent }% \gdef\noindent{% \restorefirstparagraphindent \noindent }% \global\everypar = {% \kern -\parindent \restorefirstparagraphindent }% } \gdef\restorefirstparagraphindent{% \global \let \indent = \ptexindent \global \let \noindent = \ptexnoindent \global \everypar = {}% } % @refill is a no-op. \let\refill=\relax % If working on a large document in chapters, it is convenient to % be able to disable indexing, cross-referencing, and contents, for test runs. % This is done with @novalidate (before @setfilename). % \newif\iflinks \linkstrue % by default we want the aux files. \let\novalidate = \linksfalse % @setfilename is done at the beginning of every texinfo file. % So open here the files we need to have open while reading the input. % This makes it possible to make a .fmt file for texinfo. \def\setfilename{% \fixbackslash % Turn off hack to swallow `\input texinfo'. \iflinks \tryauxfile % Open the new aux file. TeX will close it automatically at exit. \immediate\openout\auxfile=\jobname.aux \fi % \openindices needs to do some work in any case. \openindices \let\setfilename=\comment % Ignore extra @setfilename cmds. % % If texinfo.cnf is present on the system, read it. % Useful for site-wide @afourpaper, etc. \openin 1 texinfo.cnf \ifeof 1 \else \input texinfo.cnf \fi \closein 1 % \comment % Ignore the actual filename. } % Called from \setfilename. % \def\openindices{% \newindex{cp}% \newcodeindex{fn}% \newcodeindex{vr}% \newcodeindex{tp}% \newcodeindex{ky}% \newcodeindex{pg}% } % @bye. \outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} \message{pdf,} % adobe `portable' document format \newcount\tempnum \newcount\lnkcount \newtoks\filename \newcount\filenamelength \newcount\pgn \newtoks\toksA \newtoks\toksB \newtoks\toksC \newtoks\toksD \newbox\boxA \newcount\countA \newif\ifpdf \newif\ifpdfmakepagedest % when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1 % can be set). So we test for \relax and 0 as well as being undefined. \ifx\pdfoutput\thisisundefined \else \ifx\pdfoutput\relax \else \ifcase\pdfoutput \else \pdftrue \fi \fi \fi % PDF uses PostScript string constants for the names of xref targets, % for display in the outlines, and in other places. Thus, we have to % double any backslashes. Otherwise, a name like "\node" will be % interpreted as a newline (\n), followed by o, d, e. Not good. % % See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and % related messages. The final outcome is that it is up to the TeX user % to double the backslashes and otherwise make the string valid, so % that's what we do. pdftex 1.30.0 (ca.2005) introduced a primitive to % do this reliably, so we use it. % #1 is a control sequence in which to do the replacements, % which we \xdef. \def\txiescapepdf#1{% \ifx\pdfescapestring\relax % No primitive available; should we give a warning or log? % Many times it won't matter. \else % The expandable \pdfescapestring primitive escapes parentheses, % backslashes, and other special chars. \xdef#1{\pdfescapestring{#1}}% \fi } \newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images with PDF output, and none of those formats could be found. (.eps cannot be supported due to the design of the PDF format; use regular TeX (DVI output) for that.)} \ifpdf % % Color manipulation macros based on pdfcolor.tex, % except using rgb instead of cmyk; the latter is said to render as a % very dark gray on-screen and a very dark halftone in print, instead % of actual black. \def\rgbDarkRed{0.50 0.09 0.12} \def\rgbBlack{0 0 0} % % k sets the color for filling (usual text, etc.); % K sets the color for stroking (thin rules, e.g., normal _'s). \def\pdfsetcolor#1{\pdfliteral{#1 rg #1 RG}} % % Set color, and create a mark which defines \thiscolor accordingly, % so that \makeheadline knows which color to restore. \def\setcolor#1{% \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}% \domark \pdfsetcolor{#1}% } % \def\maincolor{\rgbBlack} \pdfsetcolor{\maincolor} \edef\thiscolor{\maincolor} \def\lastcolordefs{} % \def\makefootline{% \baselineskip24pt \line{\pdfsetcolor{\maincolor}\the\footline}% } % \def\makeheadline{% \vbox to 0pt{% \vskip-22.5pt \line{% \vbox to8.5pt{}% % Extract \thiscolor definition from the marks. \getcolormarks % Typeset the headline with \maincolor, then restore the color. \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}% }% \vss }% \nointerlineskip } % % \pdfcatalog{/PageMode /UseOutlines} % % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). \def\dopdfimage#1#2#3{% \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% % % pdftex (and the PDF format) support .pdf, .png, .jpg (among % others). Let's try in that order, PDF first since if % someone has a scalable image, presumably better to use that than a % bitmap. \let\pdfimgext=\empty \begingroup \openin 1 #1.pdf \ifeof 1 \openin 1 #1.PDF \ifeof 1 \openin 1 #1.png \ifeof 1 \openin 1 #1.jpg \ifeof 1 \openin 1 #1.jpeg \ifeof 1 \openin 1 #1.JPG \ifeof 1 \errhelp = \nopdfimagehelp \errmessage{Could not find image file #1 for pdf}% \else \gdef\pdfimgext{JPG}% \fi \else \gdef\pdfimgext{jpeg}% \fi \else \gdef\pdfimgext{jpg}% \fi \else \gdef\pdfimgext{png}% \fi \else \gdef\pdfimgext{PDF}% \fi \else \gdef\pdfimgext{pdf}% \fi \closein 1 \endgroup % % without \immediate, ancient pdftex seg faults when the same image is % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.) \ifnum\pdftexversion < 14 \immediate\pdfimage \else \immediate\pdfximage \fi \ifdim \wd0 >0pt width \pdfimagewidth \fi \ifdim \wd2 >0pt height \pdfimageheight \fi \ifnum\pdftexversion<13 #1.\pdfimgext \else {#1.\pdfimgext}% \fi \ifnum\pdftexversion < 14 \else \pdfrefximage \pdflastximage \fi} % \def\pdfmkdest#1{{% % We have to set dummies so commands such as @code, and characters % such as \, aren't expanded when present in a section title. \indexnofonts \turnoffactive \makevalueexpandable \def\pdfdestname{#1}% \txiescapepdf\pdfdestname \safewhatsit{\pdfdest name{\pdfdestname} xyz}% }} % % used to mark target names; must be expandable. \def\pdfmkpgn#1{#1} % % by default, use a color that is dark enough to print on paper as % nearly black, but still distinguishable for online viewing. \def\urlcolor{\rgbDarkRed} \def\linkcolor{\rgbDarkRed} \def\endlink{\setcolor{\maincolor}\pdfendlink} % % Adding outlines to PDF; macros for calculating structure of outlines % come from Petr Olsak \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% \else \csname#1\endcsname \fi} \def\advancenumber#1{\tempnum=\expnumber{#1}\relax \advance\tempnum by 1 \expandafter\xdef\csname#1\endcsname{\the\tempnum}} % % #1 is the section text, which is what will be displayed in the % outline by the pdf viewer. #2 is the pdf expression for the number % of subentries (or empty, for subsubsections). #3 is the node text, % which might be empty if this toc entry had no corresponding node. % #4 is the page number % \def\dopdfoutline#1#2#3#4{% % Generate a link to the node text if that exists; else, use the % page number. We could generate a destination for the section % text in the case where a section has no node, but it doesn't % seem worth the trouble, since most documents are normally structured. \edef\pdfoutlinedest{#3}% \ifx\pdfoutlinedest\empty \def\pdfoutlinedest{#4}% \else \txiescapepdf\pdfoutlinedest \fi % % Also escape PDF chars in the display string. \edef\pdfoutlinetext{#1}% \txiescapepdf\pdfoutlinetext % \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}% } % \def\pdfmakeoutlines{% \begingroup % Read toc silently, to get counts of subentries for \pdfoutline. \def\partentry##1##2##3##4{}% ignore parts in the outlines \def\numchapentry##1##2##3##4{% \def\thischapnum{##2}% \def\thissecnum{0}% \def\thissubsecnum{0}% }% \def\numsecentry##1##2##3##4{% \advancenumber{chap\thischapnum}% \def\thissecnum{##2}% \def\thissubsecnum{0}% }% \def\numsubsecentry##1##2##3##4{% \advancenumber{sec\thissecnum}% \def\thissubsecnum{##2}% }% \def\numsubsubsecentry##1##2##3##4{% \advancenumber{subsec\thissubsecnum}% }% \def\thischapnum{0}% \def\thissecnum{0}% \def\thissubsecnum{0}% % % use \def rather than \let here because we redefine \chapentry et % al. a second time, below. \def\appentry{\numchapentry}% \def\appsecentry{\numsecentry}% \def\appsubsecentry{\numsubsecentry}% \def\appsubsubsecentry{\numsubsubsecentry}% \def\unnchapentry{\numchapentry}% \def\unnsecentry{\numsecentry}% \def\unnsubsecentry{\numsubsecentry}% \def\unnsubsubsecentry{\numsubsubsecentry}% \readdatafile{toc}% % % Read toc second time, this time actually producing the outlines. % The `-' means take the \expnumber as the absolute number of % subentries, which we calculated on our first read of the .toc above. % % We use the node names as the destinations. \def\numchapentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}% \def\numsecentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}% \def\numsubsecentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}% \def\numsubsubsecentry##1##2##3##4{% count is always zero \dopdfoutline{##1}{}{##3}{##4}}% % % PDF outlines are displayed using system fonts, instead of % document fonts. Therefore we cannot use special characters, % since the encoding is unknown. For example, the eogonek from % Latin 2 (0xea) gets translated to a | character. Info from % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100. % % TODO this right, we have to translate 8-bit characters to % their "best" equivalent, based on the @documentencoding. Too % much work for too little return. Just use the ASCII equivalents % we use for the index sort strings. % \indexnofonts \setupdatafile % We can have normal brace characters in the PDF outlines, unlike % Texinfo index files. So set that up. \def\{{\lbracecharliteral}% \def\}{\rbracecharliteral}% \catcode`\\=\active \otherbackslash \input \tocreadfilename \endgroup } {\catcode`[=1 \catcode`]=2 \catcode`{=\other \catcode`}=\other \gdef\lbracecharliteral[{]% \gdef\rbracecharliteral[}]% ] % \def\skipspaces#1{\def\PP{#1}\def\D{|}% \ifx\PP\D\let\nextsp\relax \else\let\nextsp\skipspaces \ifx\p\space\else\addtokens{\filename}{\PP}% \advance\filenamelength by 1 \fi \fi \nextsp} \def\getfilename#1{% \filenamelength=0 % If we don't expand the argument now, \skipspaces will get % snagged on things like "@value{foo}". \edef\temp{#1}% \expandafter\skipspaces\temp|\relax } \ifnum\pdftexversion < 14 \let \startlink \pdfannotlink \else \let \startlink \pdfstartlink \fi % make a live url in pdf output. \def\pdfurl#1{% \begingroup % it seems we really need yet another set of dummies; have not % tried to figure out what each command should do in the context % of @url. for now, just make @/ a no-op, that's the only one % people have actually reported a problem with. % \normalturnoffactive \def\@{@}% \let\/=\empty \makevalueexpandable % do we want to go so far as to use \indexnofonts instead of just % special-casing \var here? \def\var##1{##1}% % \leavevmode\setcolor{\urlcolor}% \startlink attr{/Border [0 0 0]}% user{/Subtype /Link /A << /S /URI /URI (#1) >>}% \endgroup} \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}} \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} \def\maketoks{% \expandafter\poptoks\the\toksA|ENDTOKS|\relax \ifx\first0\adn0 \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 \else \ifnum0=\countA\else\makelink\fi \ifx\first.\let\next=\done\else \let\next=\maketoks \addtokens{\toksB}{\the\toksD} \ifx\first,\addtokens{\toksB}{\space}\fi \fi \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \next} \def\makelink{\addtokens{\toksB}% {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} \def\pdflink#1{% \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}} \setcolor{\linkcolor}#1\endlink} \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} \else % non-pdf mode \let\pdfmkdest = \gobble \let\pdfurl = \gobble \let\endlink = \relax \let\setcolor = \gobble \let\pdfsetcolor = \gobble \let\pdfmakeoutlines = \relax \fi % \ifx\pdfoutput \message{fonts,} % Change the current font style to #1, remembering it in \curfontstyle. % For now, we do not accumulate font styles: @b{@i{foo}} prints foo in % italics, not bold italics. % \def\setfontstyle#1{% \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd. \csname ten#1\endcsname % change the current font } % Select #1 fonts with the current style. % \def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname} \def\rm{\fam=0 \setfontstyle{rm}} \def\it{\fam=\itfam \setfontstyle{it}} \def\sl{\fam=\slfam \setfontstyle{sl}} \def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf} \def\tt{\fam=\ttfam \setfontstyle{tt}} % Unfortunately, we have to override this for titles and the like, since % in those cases "rm" is bold. Sigh. \def\rmisbold{\rm\def\curfontstyle{bf}} % Texinfo sort of supports the sans serif font style, which plain TeX does not. % So we set up a \sf. \newfam\sffam \def\sf{\fam=\sffam \setfontstyle{sf}} \let\li = \sf % Sometimes we call it \li, not \sf. % We don't need math for this font style. \def\ttsl{\setfontstyle{ttsl}} % Default leading. \newdimen\textleading \textleading = 13.2pt % Set the baselineskip to #1, and the lineskip and strut size % correspondingly. There is no deep meaning behind these magic numbers % used as factors; they just match (closely enough) what Knuth defined. % \def\lineskipfactor{.08333} \def\strutheightpercent{.70833} \def\strutdepthpercent {.29167} % % can get a sort of poor man's double spacing by redefining this. \def\baselinefactor{1} % \def\setleading#1{% \dimen0 = #1\relax \normalbaselineskip = \baselinefactor\dimen0 \normallineskip = \lineskipfactor\normalbaselineskip \normalbaselines \setbox\strutbox =\hbox{% \vrule width0pt height\strutheightpercent\baselineskip depth \strutdepthpercent \baselineskip }% } % PDF CMaps. See also LaTeX's t1.cmap. % % do nothing with this by default. \expandafter\let\csname cmapOT1\endcsname\gobble \expandafter\let\csname cmapOT1IT\endcsname\gobble \expandafter\let\csname cmapOT1TT\endcsname\gobble % if we are producing pdf, and we have \pdffontattr, then define cmaps. % (\pdffontattr was introduced many years ago, but people still run % older pdftex's; it's easy to conditionalize, so we do.) \ifpdf \ifx\pdffontattr\thisisundefined \else \begingroup \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) %%BeginResource: CMap (TeX-OT1-0) %%Title: (TeX-OT1-0 TeX OT1 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (TeX) /Ordering (OT1) /Supplement 0 >> def /CMapName /TeX-OT1-0 def /CMapType 2 def 1 begincodespacerange <00> <7F> endcodespacerange 8 beginbfrange <00> <01> <0393> <09> <0A> <03A8> <23> <26> <0023> <28> <3B> <0028> <3F> <5B> <003F> <5D> <5E> <005D> <61> <7A> <0061> <7B> <7C> <2013> endbfrange 40 beginbfchar <02> <0398> <03> <039B> <04> <039E> <05> <03A0> <06> <03A3> <07> <03D2> <08> <03A6> <0B> <00660066> <0C> <00660069> <0D> <0066006C> <0E> <006600660069> <0F> <00660066006C> <10> <0131> <11> <0237> <12> <0060> <13> <00B4> <14> <02C7> <15> <02D8> <16> <00AF> <17> <02DA> <18> <00B8> <19> <00DF> <1A> <00E6> <1B> <0153> <1C> <00F8> <1D> <00C6> <1E> <0152> <1F> <00D8> <21> <0021> <22> <201D> <27> <2019> <3C> <00A1> <3D> <003D> <3E> <00BF> <5C> <201C> <5F> <02D9> <60> <2018> <7D> <02DD> <7E> <007E> <7F> <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop end end %%EndResource %%EOF }\endgroup \expandafter\edef\csname cmapOT1\endcsname#1{% \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% }% % % \cmapOT1IT \begingroup \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) %%BeginResource: CMap (TeX-OT1IT-0) %%Title: (TeX-OT1IT-0 TeX OT1IT 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (TeX) /Ordering (OT1IT) /Supplement 0 >> def /CMapName /TeX-OT1IT-0 def /CMapType 2 def 1 begincodespacerange <00> <7F> endcodespacerange 8 beginbfrange <00> <01> <0393> <09> <0A> <03A8> <25> <26> <0025> <28> <3B> <0028> <3F> <5B> <003F> <5D> <5E> <005D> <61> <7A> <0061> <7B> <7C> <2013> endbfrange 42 beginbfchar <02> <0398> <03> <039B> <04> <039E> <05> <03A0> <06> <03A3> <07> <03D2> <08> <03A6> <0B> <00660066> <0C> <00660069> <0D> <0066006C> <0E> <006600660069> <0F> <00660066006C> <10> <0131> <11> <0237> <12> <0060> <13> <00B4> <14> <02C7> <15> <02D8> <16> <00AF> <17> <02DA> <18> <00B8> <19> <00DF> <1A> <00E6> <1B> <0153> <1C> <00F8> <1D> <00C6> <1E> <0152> <1F> <00D8> <21> <0021> <22> <201D> <23> <0023> <24> <00A3> <27> <2019> <3C> <00A1> <3D> <003D> <3E> <00BF> <5C> <201C> <5F> <02D9> <60> <2018> <7D> <02DD> <7E> <007E> <7F> <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop end end %%EndResource %%EOF }\endgroup \expandafter\edef\csname cmapOT1IT\endcsname#1{% \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% }% % % \cmapOT1TT \begingroup \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) %%BeginResource: CMap (TeX-OT1TT-0) %%Title: (TeX-OT1TT-0 TeX OT1TT 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (TeX) /Ordering (OT1TT) /Supplement 0 >> def /CMapName /TeX-OT1TT-0 def /CMapType 2 def 1 begincodespacerange <00> <7F> endcodespacerange 5 beginbfrange <00> <01> <0393> <09> <0A> <03A8> <21> <26> <0021> <28> <5F> <0028> <61> <7E> <0061> endbfrange 32 beginbfchar <02> <0398> <03> <039B> <04> <039E> <05> <03A0> <06> <03A3> <07> <03D2> <08> <03A6> <0B> <2191> <0C> <2193> <0D> <0027> <0E> <00A1> <0F> <00BF> <10> <0131> <11> <0237> <12> <0060> <13> <00B4> <14> <02C7> <15> <02D8> <16> <00AF> <17> <02DA> <18> <00B8> <19> <00DF> <1A> <00E6> <1B> <0153> <1C> <00F8> <1D> <00C6> <1E> <0152> <1F> <00D8> <20> <2423> <27> <2019> <60> <2018> <7F> <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop end end %%EndResource %%EOF }\endgroup \expandafter\edef\csname cmapOT1TT\endcsname#1{% \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% }% \fi\fi % Set the font macro #1 to the font named #2, adding on the % specified font prefix (normally `cm'). % #3 is the font's design size, #4 is a scale factor, #5 is the CMap % encoding (currently only OT1, OT1IT and OT1TT are allowed, pass % empty to omit). \def\setfont#1#2#3#4#5{% \font#1=\fontprefix#2#3 scaled #4 \csname cmap#5\endcsname#1% } % This is what gets called when #5 of \setfont is empty. \let\cmap\gobble % emacs-page end of cmaps % Use cm as the default font prefix. % To specify the font prefix, you must define \fontprefix % before you read in texinfo.tex. \ifx\fontprefix\thisisundefined \def\fontprefix{cm} \fi % Support font families that don't use the same naming scheme as CM. \def\rmshape{r} \def\rmbshape{bx} %where the normal face is bold \def\bfshape{b} \def\bxshape{bx} \def\ttshape{tt} \def\ttbshape{tt} \def\ttslshape{sltt} \def\itshape{ti} \def\itbshape{bxti} \def\slshape{sl} \def\slbshape{bxsl} \def\sfshape{ss} \def\sfbshape{ss} \def\scshape{csc} \def\scbshape{csc} % Definitions for a main text size of 11pt. This is the default in % Texinfo. % \def\definetextfontsizexi{% % Text fonts (11.2pt, magstep1). \def\textnominalsize{11pt} \edef\mainmagstep{\magstephalf} \setfont\textrm\rmshape{10}{\mainmagstep}{OT1} \setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} \setfont\textbf\bfshape{10}{\mainmagstep}{OT1} \setfont\textit\itshape{10}{\mainmagstep}{OT1IT} \setfont\textsl\slshape{10}{\mainmagstep}{OT1} \setfont\textsf\sfshape{10}{\mainmagstep}{OT1} \setfont\textsc\scshape{10}{\mainmagstep}{OT1} \setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} \font\texti=cmmi10 scaled \mainmagstep \font\textsy=cmsy10 scaled \mainmagstep \def\textecsize{1095} % A few fonts for @defun names and args. \setfont\defbf\bfshape{10}{\magstep1}{OT1} \setfont\deftt\ttshape{10}{\magstep1}{OT1TT} \setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT} \def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf} % Fonts for indices, footnotes, small examples (9pt). \def\smallnominalsize{9pt} \setfont\smallrm\rmshape{9}{1000}{OT1} \setfont\smalltt\ttshape{9}{1000}{OT1TT} \setfont\smallbf\bfshape{10}{900}{OT1} \setfont\smallit\itshape{9}{1000}{OT1IT} \setfont\smallsl\slshape{9}{1000}{OT1} \setfont\smallsf\sfshape{9}{1000}{OT1} \setfont\smallsc\scshape{10}{900}{OT1} \setfont\smallttsl\ttslshape{10}{900}{OT1TT} \font\smalli=cmmi9 \font\smallsy=cmsy9 \def\smallecsize{0900} % Fonts for small examples (8pt). \def\smallernominalsize{8pt} \setfont\smallerrm\rmshape{8}{1000}{OT1} \setfont\smallertt\ttshape{8}{1000}{OT1TT} \setfont\smallerbf\bfshape{10}{800}{OT1} \setfont\smallerit\itshape{8}{1000}{OT1IT} \setfont\smallersl\slshape{8}{1000}{OT1} \setfont\smallersf\sfshape{8}{1000}{OT1} \setfont\smallersc\scshape{10}{800}{OT1} \setfont\smallerttsl\ttslshape{10}{800}{OT1TT} \font\smalleri=cmmi8 \font\smallersy=cmsy8 \def\smallerecsize{0800} % Fonts for title page (20.4pt): \def\titlenominalsize{20pt} \setfont\titlerm\rmbshape{12}{\magstep3}{OT1} \setfont\titleit\itbshape{10}{\magstep4}{OT1IT} \setfont\titlesl\slbshape{10}{\magstep4}{OT1} \setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} \setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} \setfont\titlesf\sfbshape{17}{\magstep1}{OT1} \let\titlebf=\titlerm \setfont\titlesc\scbshape{10}{\magstep4}{OT1} \font\titlei=cmmi12 scaled \magstep3 \font\titlesy=cmsy10 scaled \magstep4 \def\titleecsize{2074} % Chapter (and unnumbered) fonts (17.28pt). \def\chapnominalsize{17pt} \setfont\chaprm\rmbshape{12}{\magstep2}{OT1} \setfont\chapit\itbshape{10}{\magstep3}{OT1IT} \setfont\chapsl\slbshape{10}{\magstep3}{OT1} \setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT} \setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT} \setfont\chapsf\sfbshape{17}{1000}{OT1} \let\chapbf=\chaprm \setfont\chapsc\scbshape{10}{\magstep3}{OT1} \font\chapi=cmmi12 scaled \magstep2 \font\chapsy=cmsy10 scaled \magstep3 \def\chapecsize{1728} % Section fonts (14.4pt). \def\secnominalsize{14pt} \setfont\secrm\rmbshape{12}{\magstep1}{OT1} \setfont\secit\itbshape{10}{\magstep2}{OT1IT} \setfont\secsl\slbshape{10}{\magstep2}{OT1} \setfont\sectt\ttbshape{12}{\magstep1}{OT1TT} \setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT} \setfont\secsf\sfbshape{12}{\magstep1}{OT1} \let\secbf\secrm \setfont\secsc\scbshape{10}{\magstep2}{OT1} \font\seci=cmmi12 scaled \magstep1 \font\secsy=cmsy10 scaled \magstep2 \def\sececsize{1440} % Subsection fonts (13.15pt). \def\ssecnominalsize{13pt} \setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1} \setfont\ssecit\itbshape{10}{1315}{OT1IT} \setfont\ssecsl\slbshape{10}{1315}{OT1} \setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT} \setfont\ssecttsl\ttslshape{10}{1315}{OT1TT} \setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1} \let\ssecbf\ssecrm \setfont\ssecsc\scbshape{10}{1315}{OT1} \font\sseci=cmmi12 scaled \magstephalf \font\ssecsy=cmsy10 scaled 1315 \def\ssececsize{1200} % Reduced fonts for @acro in text (10pt). \def\reducednominalsize{10pt} \setfont\reducedrm\rmshape{10}{1000}{OT1} \setfont\reducedtt\ttshape{10}{1000}{OT1TT} \setfont\reducedbf\bfshape{10}{1000}{OT1} \setfont\reducedit\itshape{10}{1000}{OT1IT} \setfont\reducedsl\slshape{10}{1000}{OT1} \setfont\reducedsf\sfshape{10}{1000}{OT1} \setfont\reducedsc\scshape{10}{1000}{OT1} \setfont\reducedttsl\ttslshape{10}{1000}{OT1TT} \font\reducedi=cmmi10 \font\reducedsy=cmsy10 \def\reducedecsize{1000} \textleading = 13.2pt % line spacing for 11pt CM \textfonts % reset the current fonts \rm } % end of 11pt text font size definitions % Definitions to make the main text be 10pt Computer Modern, with % section, chapter, etc., sizes following suit. This is for the GNU % Press printing of the Emacs 22 manual. Maybe other manuals in the % future. Used with @smallbook, which sets the leading to 12pt. % \def\definetextfontsizex{% % Text fonts (10pt). \def\textnominalsize{10pt} \edef\mainmagstep{1000} \setfont\textrm\rmshape{10}{\mainmagstep}{OT1} \setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} \setfont\textbf\bfshape{10}{\mainmagstep}{OT1} \setfont\textit\itshape{10}{\mainmagstep}{OT1IT} \setfont\textsl\slshape{10}{\mainmagstep}{OT1} \setfont\textsf\sfshape{10}{\mainmagstep}{OT1} \setfont\textsc\scshape{10}{\mainmagstep}{OT1} \setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} \font\texti=cmmi10 scaled \mainmagstep \font\textsy=cmsy10 scaled \mainmagstep \def\textecsize{1000} % A few fonts for @defun names and args. \setfont\defbf\bfshape{10}{\magstephalf}{OT1} \setfont\deftt\ttshape{10}{\magstephalf}{OT1TT} \setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT} \def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf} % Fonts for indices, footnotes, small examples (9pt). \def\smallnominalsize{9pt} \setfont\smallrm\rmshape{9}{1000}{OT1} \setfont\smalltt\ttshape{9}{1000}{OT1TT} \setfont\smallbf\bfshape{10}{900}{OT1} \setfont\smallit\itshape{9}{1000}{OT1IT} \setfont\smallsl\slshape{9}{1000}{OT1} \setfont\smallsf\sfshape{9}{1000}{OT1} \setfont\smallsc\scshape{10}{900}{OT1} \setfont\smallttsl\ttslshape{10}{900}{OT1TT} \font\smalli=cmmi9 \font\smallsy=cmsy9 \def\smallecsize{0900} % Fonts for small examples (8pt). \def\smallernominalsize{8pt} \setfont\smallerrm\rmshape{8}{1000}{OT1} \setfont\smallertt\ttshape{8}{1000}{OT1TT} \setfont\smallerbf\bfshape{10}{800}{OT1} \setfont\smallerit\itshape{8}{1000}{OT1IT} \setfont\smallersl\slshape{8}{1000}{OT1} \setfont\smallersf\sfshape{8}{1000}{OT1} \setfont\smallersc\scshape{10}{800}{OT1} \setfont\smallerttsl\ttslshape{10}{800}{OT1TT} \font\smalleri=cmmi8 \font\smallersy=cmsy8 \def\smallerecsize{0800} % Fonts for title page (20.4pt): \def\titlenominalsize{20pt} \setfont\titlerm\rmbshape{12}{\magstep3}{OT1} \setfont\titleit\itbshape{10}{\magstep4}{OT1IT} \setfont\titlesl\slbshape{10}{\magstep4}{OT1} \setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} \setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} \setfont\titlesf\sfbshape{17}{\magstep1}{OT1} \let\titlebf=\titlerm \setfont\titlesc\scbshape{10}{\magstep4}{OT1} \font\titlei=cmmi12 scaled \magstep3 \font\titlesy=cmsy10 scaled \magstep4 \def\titleecsize{2074} % Chapter fonts (14.4pt). \def\chapnominalsize{14pt} \setfont\chaprm\rmbshape{12}{\magstep1}{OT1} \setfont\chapit\itbshape{10}{\magstep2}{OT1IT} \setfont\chapsl\slbshape{10}{\magstep2}{OT1} \setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT} \setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT} \setfont\chapsf\sfbshape{12}{\magstep1}{OT1} \let\chapbf\chaprm \setfont\chapsc\scbshape{10}{\magstep2}{OT1} \font\chapi=cmmi12 scaled \magstep1 \font\chapsy=cmsy10 scaled \magstep2 \def\chapecsize{1440} % Section fonts (12pt). \def\secnominalsize{12pt} \setfont\secrm\rmbshape{12}{1000}{OT1} \setfont\secit\itbshape{10}{\magstep1}{OT1IT} \setfont\secsl\slbshape{10}{\magstep1}{OT1} \setfont\sectt\ttbshape{12}{1000}{OT1TT} \setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT} \setfont\secsf\sfbshape{12}{1000}{OT1} \let\secbf\secrm \setfont\secsc\scbshape{10}{\magstep1}{OT1} \font\seci=cmmi12 \font\secsy=cmsy10 scaled \magstep1 \def\sececsize{1200} % Subsection fonts (10pt). \def\ssecnominalsize{10pt} \setfont\ssecrm\rmbshape{10}{1000}{OT1} \setfont\ssecit\itbshape{10}{1000}{OT1IT} \setfont\ssecsl\slbshape{10}{1000}{OT1} \setfont\ssectt\ttbshape{10}{1000}{OT1TT} \setfont\ssecttsl\ttslshape{10}{1000}{OT1TT} \setfont\ssecsf\sfbshape{10}{1000}{OT1} \let\ssecbf\ssecrm \setfont\ssecsc\scbshape{10}{1000}{OT1} \font\sseci=cmmi10 \font\ssecsy=cmsy10 \def\ssececsize{1000} % Reduced fonts for @acro in text (9pt). \def\reducednominalsize{9pt} \setfont\reducedrm\rmshape{9}{1000}{OT1} \setfont\reducedtt\ttshape{9}{1000}{OT1TT} \setfont\reducedbf\bfshape{10}{900}{OT1} \setfont\reducedit\itshape{9}{1000}{OT1IT} \setfont\reducedsl\slshape{9}{1000}{OT1} \setfont\reducedsf\sfshape{9}{1000}{OT1} \setfont\reducedsc\scshape{10}{900}{OT1} \setfont\reducedttsl\ttslshape{10}{900}{OT1TT} \font\reducedi=cmmi9 \font\reducedsy=cmsy9 \def\reducedecsize{0900} \divide\parskip by 2 % reduce space between paragraphs \textleading = 12pt % line spacing for 10pt CM \textfonts % reset the current fonts \rm } % end of 10pt text font size definitions % We provide the user-level command % @fonttextsize 10 % (or 11) to redefine the text font size. pt is assumed. % \def\xiword{11} \def\xword{10} \def\xwordpt{10pt} % \parseargdef\fonttextsize{% \def\textsizearg{#1}% %\wlog{doing @fonttextsize \textsizearg}% % % Set \globaldefs so that documents can use this inside @tex, since % makeinfo 4.8 does not support it, but we need it nonetheless. % \begingroup \globaldefs=1 \ifx\textsizearg\xword \definetextfontsizex \else \ifx\textsizearg\xiword \definetextfontsizexi \else \errhelp=\EMsimple \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'} \fi\fi \endgroup } % In order for the font changes to affect most math symbols and letters, % we have to define the \textfont of the standard families. Since % texinfo doesn't allow for producing subscripts and superscripts except % in the main text, we don't bother to reset \scriptfont and % \scriptscriptfont (which would also require loading a lot more fonts). % \def\resetmathfonts{% \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf \textfont\ttfam=\tentt \textfont\sffam=\tensf } % The font-changing commands redefine the meanings of \tenSTYLE, instead % of just \STYLE. We do this because \STYLE needs to also set the % current \fam for math mode. Our \STYLE (e.g., \rm) commands hardwire % \tenSTYLE to set the current font. % % Each font-changing command also sets the names \lsize (one size lower) % and \lllsize (three sizes lower). These relative commands are used in % the LaTeX logo and acronyms. % % This all needs generalizing, badly. % \def\textfonts{% \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl \def\curfontsize{text}% \def\lsize{reduced}\def\lllsize{smaller}% \resetmathfonts \setleading{\textleading}} \def\titlefonts{% \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy \let\tenttsl=\titlettsl \def\curfontsize{title}% \def\lsize{chap}\def\lllsize{subsec}% \resetmathfonts \setleading{27pt}} \def\titlefont#1{{\titlefonts\rmisbold #1}} \def\chapfonts{% \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy \let\tenttsl=\chapttsl \def\curfontsize{chap}% \def\lsize{sec}\def\lllsize{text}% \resetmathfonts \setleading{19pt}} \def\secfonts{% \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy \let\tenttsl=\secttsl \def\curfontsize{sec}% \def\lsize{subsec}\def\lllsize{reduced}% \resetmathfonts \setleading{16pt}} \def\subsecfonts{% \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy \let\tenttsl=\ssecttsl \def\curfontsize{ssec}% \def\lsize{text}\def\lllsize{small}% \resetmathfonts \setleading{15pt}} \let\subsubsecfonts = \subsecfonts \def\reducedfonts{% \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy \let\tenttsl=\reducedttsl \def\curfontsize{reduced}% \def\lsize{small}\def\lllsize{smaller}% \resetmathfonts \setleading{10.5pt}} \def\smallfonts{% \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy \let\tenttsl=\smallttsl \def\curfontsize{small}% \def\lsize{smaller}\def\lllsize{smaller}% \resetmathfonts \setleading{10.5pt}} \def\smallerfonts{% \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy \let\tenttsl=\smallerttsl \def\curfontsize{smaller}% \def\lsize{smaller}\def\lllsize{smaller}% \resetmathfonts \setleading{9.5pt}} % Fonts for short table of contents. \setfont\shortcontrm\rmshape{12}{1000}{OT1} \setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12 \setfont\shortcontsl\slshape{12}{1000}{OT1} \setfont\shortconttt\ttshape{12}{1000}{OT1TT} % Define these just so they can be easily changed for other fonts. \def\angleleft{$\langle$} \def\angleright{$\rangle$} % Set the fonts to use with the @small... environments. \let\smallexamplefonts = \smallfonts % About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample % can fit this many characters: % 8.5x11=86 smallbook=72 a4=90 a5=69 % If we use \scriptfonts (8pt), then we can fit this many characters: % 8.5x11=90+ smallbook=80 a4=90+ a5=77 % For me, subjectively, the few extra characters that fit aren't worth % the additional smallness of 8pt. So I'm making the default 9pt. % % By the way, for comparison, here's what fits with @example (10pt): % 8.5x11=71 smallbook=60 a4=75 a5=58 % --karl, 24jan03. % Set up the default fonts, so we can use them for creating boxes. % \definetextfontsizexi \message{markup,} % Check if we are currently using a typewriter font. Since all the % Computer Modern typewriter fonts have zero interword stretch (and % shrink), and it is reasonable to expect all typewriter fonts to have % this property, we can check that font parameter. % \def\ifmonospace{\ifdim\fontdimen3\font=0pt } % Markup style infrastructure. \defmarkupstylesetup\INITMACRO will % define and register \INITMACRO to be called on markup style changes. % \INITMACRO can check \currentmarkupstyle for the innermost % style and the set of \ifmarkupSTYLE switches for all styles % currently in effect. \newif\ifmarkupvar \newif\ifmarkupsamp \newif\ifmarkupkey %\newif\ifmarkupfile % @file == @samp. %\newif\ifmarkupoption % @option == @samp. \newif\ifmarkupcode \newif\ifmarkupkbd %\newif\ifmarkupenv % @env == @code. %\newif\ifmarkupcommand % @command == @code. \newif\ifmarkuptex % @tex (and part of @math, for now). \newif\ifmarkupexample \newif\ifmarkupverb \newif\ifmarkupverbatim \let\currentmarkupstyle\empty \def\setupmarkupstyle#1{% \csname markup#1true\endcsname \def\currentmarkupstyle{#1}% \markupstylesetup } \let\markupstylesetup\empty \def\defmarkupstylesetup#1{% \expandafter\def\expandafter\markupstylesetup \expandafter{\markupstylesetup #1}% \def#1% } % Markup style setup for left and right quotes. \defmarkupstylesetup\markupsetuplq{% \expandafter\let\expandafter \temp \csname markupsetuplq\currentmarkupstyle\endcsname \ifx\temp\relax \markupsetuplqdefault \else \temp \fi } \defmarkupstylesetup\markupsetuprq{% \expandafter\let\expandafter \temp \csname markupsetuprq\currentmarkupstyle\endcsname \ifx\temp\relax \markupsetuprqdefault \else \temp \fi } { \catcode`\'=\active \catcode`\`=\active \gdef\markupsetuplqdefault{\let`\lq} \gdef\markupsetuprqdefault{\let'\rq} \gdef\markupsetcodequoteleft{\let`\codequoteleft} \gdef\markupsetcodequoteright{\let'\codequoteright} \gdef\markupsetnoligaturesquoteleft{\let`\noligaturesquoteleft} } \let\markupsetuplqcode \markupsetcodequoteleft \let\markupsetuprqcode \markupsetcodequoteright % \let\markupsetuplqexample \markupsetcodequoteleft \let\markupsetuprqexample \markupsetcodequoteright % \let\markupsetuplqsamp \markupsetcodequoteleft \let\markupsetuprqsamp \markupsetcodequoteright % \let\markupsetuplqverb \markupsetcodequoteleft \let\markupsetuprqverb \markupsetcodequoteright % \let\markupsetuplqverbatim \markupsetcodequoteleft \let\markupsetuprqverbatim \markupsetcodequoteright \let\markupsetuplqkbd \markupsetnoligaturesquoteleft % Allow an option to not use regular directed right quote/apostrophe % (char 0x27), but instead the undirected quote from cmtt (char 0x0d). % The undirected quote is ugly, so don't make it the default, but it % works for pasting with more pdf viewers (at least evince), the % lilypond developers report. xpdf does work with the regular 0x27. % \def\codequoteright{% \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax '% \else \char'15 \fi \else \char'15 \fi } % % and a similar option for the left quote char vs. a grave accent. % Modern fonts display ASCII 0x60 as a grave accent, so some people like % the code environments to do likewise. % \def\codequoteleft{% \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax % [Knuth] pp. 380,381,391 % \relax disables Spanish ligatures ?` and !` of \tt font. \relax`% \else \char'22 \fi \else \char'22 \fi } % Commands to set the quote options. % \parseargdef\codequoteundirected{% \def\temp{#1}% \ifx\temp\onword \expandafter\let\csname SETtxicodequoteundirected\endcsname = t% \else\ifx\temp\offword \expandafter\let\csname SETtxicodequoteundirected\endcsname = \relax \else \errhelp = \EMsimple \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}% \fi\fi } % \parseargdef\codequotebacktick{% \def\temp{#1}% \ifx\temp\onword \expandafter\let\csname SETtxicodequotebacktick\endcsname = t% \else\ifx\temp\offword \expandafter\let\csname SETtxicodequotebacktick\endcsname = \relax \else \errhelp = \EMsimple \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}% \fi\fi } % [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font. \def\noligaturesquoteleft{\relax\lq} % Count depth in font-changes, for error checks \newcount\fontdepth \fontdepth=0 % Font commands. % #1 is the font command (\sl or \it), #2 is the text to slant. % If we are in a monospaced environment, however, 1) always use \ttsl, % and 2) do not add an italic correction. \def\dosmartslant#1#2{% \ifusingtt {{\ttsl #2}\let\next=\relax}% {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}% \next } \def\smartslanted{\dosmartslant\sl} \def\smartitalic{\dosmartslant\it} % Output an italic correction unless \next (presumed to be the following % character) is such as not to need one. \def\smartitaliccorrection{% \ifx\next,% \else\ifx\next-% \else\ifx\next.% \else\ptexslash \fi\fi\fi \aftersmartic } % like \smartslanted except unconditionally uses \ttsl, and no ic. % @var is set to this for defun arguments. \def\ttslanted#1{{\ttsl #1}} % @cite is like \smartslanted except unconditionally use \sl. We never want % ttsl for book titles, do we? \def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection} \def\aftersmartic{} \def\var#1{% \let\saveaftersmartic = \aftersmartic \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}% \smartslanted{#1}% } \let\i=\smartitalic \let\slanted=\smartslanted \let\dfn=\smartslanted \let\emph=\smartitalic % Explicit font changes: @r, @sc, undocumented @ii. \def\r#1{{\rm #1}} % roman font \def\sc#1{{\smallcaps#1}} % smallcaps font \def\ii#1{{\it #1}} % italic font % @b, explicit bold. Also @strong. \def\b#1{{\bf #1}} \let\strong=\b % @sansserif, explicit sans. \def\sansserif#1{{\sf #1}} % We can't just use \exhyphenpenalty, because that only has effect at % the end of a paragraph. Restore normal hyphenation at the end of the % group within which \nohyphenation is presumably called. % \def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation} \def\restorehyphenation{\hyphenchar\font = `- } % Set sfcode to normal for the chars that usually have another value. % Can't use plain's \frenchspacing because it uses the `\x notation, and % sometimes \x has an active definition that messes things up. % \catcode`@=11 \def\plainfrenchspacing{% \sfcode\dotChar =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m \def\endofsentencespacefactor{1000}% for @. and friends } \def\plainnonfrenchspacing{% \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000 \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 \def\endofsentencespacefactor{3000}% for @. and friends } \catcode`@=\other \def\endofsentencespacefactor{3000}% default % @t, explicit typewriter. \def\t#1{% {\tt \rawbackslash \plainfrenchspacing #1}% \null } % @samp. \def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}} % definition of @key that produces a lozenge. Doesn't adjust to text size. %\setfont\keyrm\rmshape{8}{1000}{OT1} %\font\keysy=cmsy9 %\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% % \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% % \vbox{\hrule\kern-0.4pt % \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% % \kern-0.4pt\hrule}% % \kern-.06em\raise0.4pt\hbox{\angleright}}}} % definition of @key with no lozenge. If the current font is already % monospace, don't change it; that way, we respect @kbdinputstyle. But % if it isn't monospace, then use \tt. % \def\key#1{{\setupmarkupstyle{key}% \nohyphenation \ifmonospace\else\tt\fi #1}\null} % ctrl is no longer a Texinfo command. \def\ctrl #1{{\tt \rawbackslash \hat}#1} % @file, @option are the same as @samp. \let\file=\samp \let\option=\samp % @code is a modification of @t, % which makes spaces the same size as normal in the surrounding text. \def\tclose#1{% {% % Change normal interword space to be same as for the current font. \spaceskip = \fontdimen2\font % % Switch to typewriter. \tt % % But `\ ' produces the large typewriter interword space. \def\ {{\spaceskip = 0pt{} }}% % % Turn off hyphenation. \nohyphenation % \rawbackslash \plainfrenchspacing #1% }% \null % reset spacefactor to 1000 } % We *must* turn on hyphenation at `-' and `_' in @code. % Otherwise, it is too hard to avoid overfull hboxes % in the Emacs manual, the Library manual, etc. % Unfortunately, TeX uses one parameter (\hyphenchar) to control % both hyphenation at - and hyphenation within words. % We must therefore turn them both off (\tclose does that) % and arrange explicitly to hyphenate at a dash. % -- rms. { \catcode`\-=\active \catcode`\_=\active \catcode`\'=\active \catcode`\`=\active \global\let'=\rq \global\let`=\lq % default definitions % \global\def\code{\begingroup \setupmarkupstyle{code}% % The following should really be moved into \setupmarkupstyle handlers. \catcode\dashChar=\active \catcode\underChar=\active \ifallowcodebreaks \let-\codedash \let_\codeunder \else \let-\realdash \let_\realunder \fi \codex } } \def\codex #1{\tclose{#1}\endgroup} \def\realdash{-} \def\codedash{-\discretionary{}{}{}} \def\codeunder{% % this is all so @math{@code{var_name}+1} can work. In math mode, _ % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.) % will therefore expand the active definition of _, which is us % (inside @code that is), therefore an endless loop. \ifusingtt{\ifmmode \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_. \else\normalunderscore \fi \discretionary{}{}{}}% {\_}% } % An additional complication: the above will allow breaks after, e.g., % each of the four underscores in __typeof__. This is undesirable in % some manuals, especially if they don't have long identifiers in % general. @allowcodebreaks provides a way to control this. % \newif\ifallowcodebreaks \allowcodebreakstrue \def\keywordtrue{true} \def\keywordfalse{false} \parseargdef\allowcodebreaks{% \def\txiarg{#1}% \ifx\txiarg\keywordtrue \allowcodebreakstrue \else\ifx\txiarg\keywordfalse \allowcodebreaksfalse \else \errhelp = \EMsimple \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}% \fi\fi } % @uref (abbreviation for `urlref') takes an optional (comma-separated) % second argument specifying the text to display and an optional third % arg as text to display instead of (rather than in addition to) the url % itself. First (mandatory) arg is the url. % (This \urefnobreak definition isn't used now, leaving it for a while % for comparison.) \def\urefnobreak#1{\dourefnobreak #1,,,\finish} \def\dourefnobreak#1,#2,#3,#4\finish{\begingroup \unsepspaces \pdfurl{#1}% \setbox0 = \hbox{\ignorespaces #3}% \ifdim\wd0 > 0pt \unhbox0 % third arg given, show only that \else \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0 > 0pt \ifpdf \unhbox0 % PDF: 2nd arg given, show only it \else \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url \fi \else \code{#1}% only url given, so show it \fi \fi \endlink \endgroup} % This \urefbreak definition is the active one. \def\urefbreak{\begingroup \urefcatcodes \dourefbreak} \let\uref=\urefbreak \def\dourefbreak#1{\urefbreakfinish #1,,,\finish} \def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example \unsepspaces \pdfurl{#1}% \setbox0 = \hbox{\ignorespaces #3}% \ifdim\wd0 > 0pt \unhbox0 % third arg given, show only that \else \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0 > 0pt \ifpdf \unhbox0 % PDF: 2nd arg given, show only it \else \unhbox0\ (\urefcode{#1})% DVI: 2nd arg given, show both it and url \fi \else \urefcode{#1}% only url given, so show it \fi \fi \endlink \endgroup} % Allow line breaks around only a few characters (only). \def\urefcatcodes{% \catcode\ampChar=\active \catcode\dotChar=\active \catcode\hashChar=\active \catcode\questChar=\active \catcode\slashChar=\active } { \urefcatcodes % \global\def\urefcode{\begingroup \setupmarkupstyle{code}% \urefcatcodes \let&\urefcodeamp \let.\urefcodedot \let#\urefcodehash \let?\urefcodequest \let/\urefcodeslash \codex } % % By default, they are just regular characters. \global\def&{\normalamp} \global\def.{\normaldot} \global\def#{\normalhash} \global\def?{\normalquest} \global\def/{\normalslash} } % we put a little stretch before and after the breakable chars, to help % line breaking of long url's. The unequal skips make look better in % cmtt at least, especially for dots. \def\urefprestretch{\urefprebreak \hskip0pt plus.13em } \def\urefpoststretch{\urefpostbreak \hskip0pt plus.1em } % \def\urefcodeamp{\urefprestretch \&\urefpoststretch} \def\urefcodedot{\urefprestretch .\urefpoststretch} \def\urefcodehash{\urefprestretch \#\urefpoststretch} \def\urefcodequest{\urefprestretch ?\urefpoststretch} \def\urefcodeslash{\futurelet\next\urefcodeslashfinish} { \catcode`\/=\active \global\def\urefcodeslashfinish{% \urefprestretch \slashChar % Allow line break only after the final / in a sequence of % slashes, to avoid line break between the slashes in http://. \ifx\next/\else \urefpoststretch \fi } } % One more complication: by default we'll break after the special % characters, but some people like to break before the special chars, so % allow that. Also allow no breaking at all, for manual control. % \parseargdef\urefbreakstyle{% \def\txiarg{#1}% \ifx\txiarg\wordnone \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak} \else\ifx\txiarg\wordbefore \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak} \else\ifx\txiarg\wordafter \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak} \else \errhelp = \EMsimple \errmessage{Unknown @urefbreakstyle setting `\txiarg'}% \fi\fi\fi } \def\wordafter{after} \def\wordbefore{before} \def\wordnone{none} \urefbreakstyle after % @url synonym for @uref, since that's how everyone uses it. % \let\url=\uref % rms does not like angle brackets --karl, 17may97. % So now @email is just like @uref, unless we are pdf. % %\def\email#1{\angleleft{\tt #1}\angleright} \ifpdf \def\email#1{\doemail#1,,\finish} \def\doemail#1,#2,#3\finish{\begingroup \unsepspaces \pdfurl{mailto:#1}% \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi \endlink \endgroup} \else \let\email=\uref \fi % @kbd is like @code, except that if the argument is just one @key command, % then @kbd has no effect. \def\kbd#1{{\setupmarkupstyle{kbd}\def\look{#1}\expandafter\kbdfoo\look??\par}} % @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), % `example' (@kbd uses ttsl only inside of @example and friends), % or `code' (@kbd uses normal tty font always). \parseargdef\kbdinputstyle{% \def\txiarg{#1}% \ifx\txiarg\worddistinct \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% \else\ifx\txiarg\wordexample \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% \else\ifx\txiarg\wordcode \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% \else \errhelp = \EMsimple \errmessage{Unknown @kbdinputstyle setting `\txiarg'}% \fi\fi\fi } \def\worddistinct{distinct} \def\wordexample{example} \def\wordcode{code} % Default is `distinct'. \kbdinputstyle distinct \def\xkey{\key} \def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}% \ifx\one\xkey\ifx\threex\three \key{#2}% \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi} % For @indicateurl, @env, @command quotes seem unnecessary, so use \code. \let\indicateurl=\code \let\env=\code \let\command=\code % @clicksequence{File @click{} Open ...} \def\clicksequence#1{\begingroup #1\endgroup} % @clickstyle @arrow (by default) \parseargdef\clickstyle{\def\click{#1}} \def\click{\arrow} % Typeset a dimension, e.g., `in' or `pt'. The only reason for the % argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. % \def\dmn#1{\thinspace #1} % @l was never documented to mean ``switch to the Lisp font'', % and it is not used as such in any manual I can find. We need it for % Polish suppressed-l. --karl, 22sep96. %\def\l#1{{\li #1}\null} % @acronym for "FBI", "NATO", and the like. % We print this one point size smaller, since it's intended for % all-uppercase. % \def\acronym#1{\doacronym #1,,\finish} \def\doacronym#1,#2,#3\finish{% {\selectfonts\lsize #1}% \def\temp{#2}% \ifx\temp\empty \else \space ({\unsepspaces \ignorespaces \temp \unskip})% \fi \null % reset \spacefactor=1000 } % @abbr for "Comput. J." and the like. % No font change, but don't do end-of-sentence spacing. % \def\abbr#1{\doabbr #1,,\finish} \def\doabbr#1,#2,#3\finish{% {\plainfrenchspacing #1}% \def\temp{#2}% \ifx\temp\empty \else \space ({\unsepspaces \ignorespaces \temp \unskip})% \fi \null % reset \spacefactor=1000 } % @asis just yields its argument. Used with @table, for example. % \def\asis#1{#1} % @math outputs its argument in math mode. % % One complication: _ usually means subscripts, but it could also mean % an actual _ character, as in @math{@var{some_variable} + 1}. So make % _ active, and distinguish by seeing if the current family is \slfam, % which is what @var uses. { \catcode`\_ = \active \gdef\mathunderscore{% \catcode`\_=\active \def_{\ifnum\fam=\slfam \_\else\sb\fi}% } } % Another complication: we want \\ (and @\) to output a math (or tt) \. % FYI, plain.tex uses \\ as a temporary control sequence (for no % particular reason), but this is not advertised and we don't care. % % The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. \def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} % \def\math{% \tex \mathunderscore \let\\ = \mathbackslash \mathactive % make the texinfo accent commands work in math mode \let\"=\ddot \let\'=\acute \let\==\bar \let\^=\hat \let\`=\grave \let\u=\breve \let\v=\check \let\~=\tilde \let\dotaccent=\dot $\finishmath } \def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. % Some active characters (such as <) are spaced differently in math. % We have to reset their definitions in case the @math was an argument % to a command which sets the catcodes (such as @item or @section). % { \catcode`^ = \active \catcode`< = \active \catcode`> = \active \catcode`+ = \active \catcode`' = \active \gdef\mathactive{% \let^ = \ptexhat \let< = \ptexless \let> = \ptexgtr \let+ = \ptexplus \let' = \ptexquoteright } } % @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}. % Ignore unless FMTNAME == tex; then it is like @iftex and @tex, % except specified as a normal braced arg, so no newlines to worry about. % \def\outfmtnametex{tex} % \long\def\inlinefmt#1{\doinlinefmt #1,\finish} \long\def\doinlinefmt#1,#2,\finish{% \def\inlinefmtname{#1}% \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi } % For raw, must switch into @tex before parsing the argument, to avoid % setting catcodes prematurely. Doing it this way means that, for % example, @inlineraw{html, foo{bar} gets a parse error instead of being % ignored. But this isn't important because if people want a literal % *right* brace they would have to use a command anyway, so they may as % well use a command to get a left brace too. We could re-use the % delimiter character idea from \verb, but it seems like overkill. % \long\def\inlineraw{\tex \doinlineraw} \long\def\doinlineraw#1{\doinlinerawtwo #1,\finish} \def\doinlinerawtwo#1,#2,\finish{% \def\inlinerawname{#1}% \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi \endgroup % close group opened by \tex. } \message{glyphs,} % and logos. % @@ prints an @, as does @atchar{}. \def\@{\char64 } \let\atchar=\@ % @{ @} @lbracechar{} @rbracechar{} all generate brace characters. % Unless we're in typewriter, use \ecfont because the CM text fonts do % not have braces, and we don't want to switch into math. \def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}} \def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}} \let\{=\mylbrace \let\lbracechar=\{ \let\}=\myrbrace \let\rbracechar=\} \begingroup % Definitions to produce \{ and \} commands for indices, % and @{ and @} for the aux/toc files. \catcode`\{ = \other \catcode`\} = \other \catcode`\[ = 1 \catcode`\] = 2 \catcode`\! = 0 \catcode`\\ = \other !gdef!lbracecmd[\{]% !gdef!rbracecmd[\}]% !gdef!lbraceatcmd[@{]% !gdef!rbraceatcmd[@}]% !endgroup % @comma{} to avoid , parsing problems. \let\comma = , % Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent % Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H. \let\, = \ptexc \let\dotaccent = \ptexdot \def\ringaccent#1{{\accent23 #1}} \let\tieaccent = \ptext \let\ubaraccent = \ptexb \let\udotaccent = \d % Other special characters: @questiondown @exclamdown @ordf @ordm % Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss. \def\questiondown{?`} \def\exclamdown{!`} \def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}} \def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}} % Dotless i and dotless j, used for accents. \def\imacro{i} \def\jmacro{j} \def\dotless#1{% \def\temp{#1}% \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi \else \errmessage{@dotless can be used only with i or j}% \fi\fi } % The \TeX{} logo, as in plain, but resetting the spacing so that a % period following counts as ending a sentence. (Idea found in latex.) % \edef\TeX{\TeX \spacefactor=1000 } % @LaTeX{} logo. Not quite the same results as the definition in % latex.ltx, since we use a different font for the raised A; it's most % convenient for us to use an explicitly smaller font, rather than using % the \scriptstyle font (since we don't reset \scriptstyle and % \scriptscriptstyle). % \def\LaTeX{% L\kern-.36em {\setbox0=\hbox{T}% \vbox to \ht0{\hbox{% \ifx\textnominalsize\xwordpt % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX. % Revert to plain's \scriptsize, which is 7pt. \count255=\the\fam $\fam\count255 \scriptstyle A$% \else % For 11pt, we can use our lllsize. \selectfonts\lllsize A% \fi }% \vss }}% \kern-.15em \TeX } % Some math mode symbols. \def\bullet{$\ptexbullet$} \def\geq{\ifmmode \ge\else $\ge$\fi} \def\leq{\ifmmode \le\else $\le$\fi} \def\minus{\ifmmode -\else $-$\fi} % @dots{} outputs an ellipsis using the current font. % We do .5em per period so that it has the same spacing in the cm % typewriter fonts as three actual period characters; on the other hand, % in other typewriter fonts three periods are wider than 1.5em. So do % whichever is larger. % \def\dots{% \leavevmode \setbox0=\hbox{...}% get width of three periods \ifdim\wd0 > 1.5em \dimen0 = \wd0 \else \dimen0 = 1.5em \fi \hbox to \dimen0{% \hskip 0pt plus.25fil .\hskip 0pt plus1fil .\hskip 0pt plus1fil .\hskip 0pt plus.5fil }% } % @enddots{} is an end-of-sentence ellipsis. % \def\enddots{% \dots \spacefactor=\endofsentencespacefactor } % @point{}, @result{}, @expansion{}, @print{}, @equiv{}. % % Since these characters are used in examples, they should be an even number of % \tt widths. Each \tt character is 1en, so two makes it 1em. % \def\point{$\star$} \def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}} \def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} \def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}} \def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} \def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}} % The @error{} command. % Adapted from the TeXbook's \boxit. % \newbox\errorbox % {\tentt \global\dimen0 = 3em}% Width of the box. \dimen2 = .55pt % Thickness of rules % The text. (`r' is open on the right, `e' somewhat less so on the left.) \setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt} % \setbox\errorbox=\hbox to \dimen0{\hfil \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. \advance\hsize by -2\dimen2 % Rules. \vbox{% \hrule height\dimen2 \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. \kern3pt\vrule width\dimen2}% Space to right. \hrule height\dimen2} \hfil} % \def\error{\leavevmode\lower.7ex\copy\errorbox} % @pounds{} is a sterling sign, which Knuth put in the CM italic font. % \def\pounds{{\it\$}} % @euro{} comes from a separate font, depending on the current style. % We use the free feym* fonts from the eurosym package by Henrik % Theiling, which support regular, slanted, bold and bold slanted (and % "outlined" (blackboard board, sort of) versions, which we don't need). % It is available from http://www.ctan.org/tex-archive/fonts/eurosym. % % Although only regular is the truly official Euro symbol, we ignore % that. The Euro is designed to be slightly taller than the regular % font height. % % feymr - regular % feymo - slanted % feybr - bold % feybo - bold slanted % % There is no good (free) typewriter version, to my knowledge. % A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide. % Hmm. % % Also doesn't work in math. Do we need to do math with euro symbols? % Hope not. % % \def\euro{{\eurofont e}} \def\eurofont{% % We set the font at each command, rather than predefining it in % \textfonts and the other font-switching commands, so that % installations which never need the symbol don't have to have the % font installed. % % There is only one designed size (nominal 10pt), so we always scale % that to the current nominal size. % % By the way, simply using "at 1em" works for cmr10 and the like, but % does not work for cmbx10 and other extended/shrunken fonts. % \def\eurosize{\csname\curfontsize nominalsize\endcsname}% % \ifx\curfontstyle\bfstylename % bold: \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize \else % regular: \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize \fi \thiseurofont } % Glyphs from the EC fonts. We don't use \let for the aliases, because % sometimes we redefine the original macro, and the alias should reflect % the redefinition. % % Use LaTeX names for the Icelandic letters. \def\DH{{\ecfont \char"D0}} % Eth \def\dh{{\ecfont \char"F0}} % eth \def\TH{{\ecfont \char"DE}} % Thorn \def\th{{\ecfont \char"FE}} % thorn % \def\guillemetleft{{\ecfont \char"13}} \def\guillemotleft{\guillemetleft} \def\guillemetright{{\ecfont \char"14}} \def\guillemotright{\guillemetright} \def\guilsinglleft{{\ecfont \char"0E}} \def\guilsinglright{{\ecfont \char"0F}} \def\quotedblbase{{\ecfont \char"12}} \def\quotesinglbase{{\ecfont \char"0D}} % % This positioning is not perfect (see the ogonek LaTeX package), but % we have the precomposed glyphs for the most common cases. We put the % tests to use those glyphs in the single \ogonek macro so we have fewer % dummy definitions to worry about for index entries, etc. % % ogonek is also used with other letters in Lithuanian (IOU), but using % the precomposed glyphs for those is not so easy since they aren't in % the same EC font. \def\ogonek#1{{% \def\temp{#1}% \ifx\temp\macrocharA\Aogonek \else\ifx\temp\macrochara\aogonek \else\ifx\temp\macrocharE\Eogonek \else\ifx\temp\macrochare\eogonek \else \ecfont \setbox0=\hbox{#1}% \ifdim\ht0=1ex\accent"0C #1% \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}% \fi \fi\fi\fi\fi }% } \def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A} \def\aogonek{{\ecfont \char"A1}}\def\macrochara{a} \def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E} \def\eogonek{{\ecfont \char"A6}}\def\macrochare{e} % % Use the ec* fonts (cm-super in outline format) for non-CM glyphs. \def\ecfont{% % We can't distinguish serif/sans and italic/slanted, but this % is used for crude hacks anyway (like adding French and German % quotes to documents typeset with CM, where we lose kerning), so % hopefully nobody will notice/care. \edef\ecsize{\csname\curfontsize ecsize\endcsname}% \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}% \ifx\curfontstyle\bfstylename % bold: \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize \else % regular: \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize \fi \thisecfont } % @registeredsymbol - R in a circle. The font for the R should really % be smaller yet, but lllsize is the best we can do for now. % Adapted from the plain.tex definition of \copyright. % \def\registeredsymbol{% $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}% \hfil\crcr\Orb}}% }$% } % @textdegree - the normal degrees sign. % \def\textdegree{$^\circ$} % Laurent Siebenmann reports \Orb undefined with: % Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38 % so we'll define it if necessary. % \ifx\Orb\thisisundefined \def\Orb{\mathhexbox20D} \fi % Quotes. \chardef\quotedblleft="5C \chardef\quotedblright=`\" \chardef\quoteleft=`\` \chardef\quoteright=`\' \message{page headings,} \newskip\titlepagetopglue \titlepagetopglue = 1.5in \newskip\titlepagebottomglue \titlepagebottomglue = 2pc % First the title page. Must do @settitle before @titlepage. \newif\ifseenauthor \newif\iffinishedtitlepage % Do an implicit @contents or @shortcontents after @end titlepage if the % user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage. % \newif\ifsetcontentsaftertitlepage \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue \newif\ifsetshortcontentsaftertitlepage \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue \parseargdef\shorttitlepage{% \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}% \endgroup\page\hbox{}\page} \envdef\titlepage{% % Open one extra group, as we want to close it in the middle of \Etitlepage. \begingroup \parindent=0pt \textfonts % Leave some space at the very top of the page. \vglue\titlepagetopglue % No rule at page bottom unless we print one at the top with @title. \finishedtitlepagetrue % % Most title ``pages'' are actually two pages long, with space % at the top of the second. We don't want the ragged left on the second. \let\oldpage = \page \def\page{% \iffinishedtitlepage\else \finishtitlepage \fi \let\page = \oldpage \page \null }% } \def\Etitlepage{% \iffinishedtitlepage\else \finishtitlepage \fi % It is important to do the page break before ending the group, % because the headline and footline are only empty inside the group. % If we use the new definition of \page, we always get a blank page % after the title page, which we certainly don't want. \oldpage \endgroup % % Need this before the \...aftertitlepage checks so that if they are % in effect the toc pages will come out with page numbers. \HEADINGSon % % If they want short, they certainly want long too. \ifsetshortcontentsaftertitlepage \shortcontents \contents \global\let\shortcontents = \relax \global\let\contents = \relax \fi % \ifsetcontentsaftertitlepage \contents \global\let\contents = \relax \global\let\shortcontents = \relax \fi } \def\finishtitlepage{% \vskip4pt \hrule height 2pt width \hsize \vskip\titlepagebottomglue \finishedtitlepagetrue } % Macros to be used within @titlepage: \let\subtitlerm=\tenrm \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines} \parseargdef\title{% \checkenv\titlepage \leftline{\titlefonts\rmisbold #1} % print a rule at the page bottom also. \finishedtitlepagefalse \vskip4pt \hrule height 4pt width \hsize \vskip4pt } \parseargdef\subtitle{% \checkenv\titlepage {\subtitlefont \rightline{#1}}% } % @author should come last, but may come many times. % It can also be used inside @quotation. % \parseargdef\author{% \def\temp{\quotation}% \ifx\thisenv\temp \def\quotationauthor{#1}% printed in \Equotation. \else \checkenv\titlepage \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi {\secfonts\rmisbold \leftline{#1}}% \fi } % Set up page headings and footings. \let\thispage=\folio \newtoks\evenheadline % headline on even pages \newtoks\oddheadline % headline on odd pages \newtoks\evenfootline % footline on even pages \newtoks\oddfootline % footline on odd pages % Now make TeX use those variables \headline={{\textfonts\rm \ifodd\pageno \the\oddheadline \else \the\evenheadline \fi}} \footline={{\textfonts\rm \ifodd\pageno \the\oddfootline \else \the\evenfootline \fi}\HEADINGShook} \let\HEADINGShook=\relax % Commands to set those variables. % For example, this is what @headings on does % @evenheading @thistitle|@thispage|@thischapter % @oddheading @thischapter|@thispage|@thistitle % @evenfooting @thisfile|| % @oddfooting ||@thisfile \def\evenheading{\parsearg\evenheadingxxx} \def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish} \def\evenheadingyyy #1\|#2\|#3\|#4\finish{% \global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} \def\oddheading{\parsearg\oddheadingxxx} \def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish} \def\oddheadingyyy #1\|#2\|#3\|#4\finish{% \global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} \parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}% \def\evenfooting{\parsearg\evenfootingxxx} \def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish} \def\evenfootingyyy #1\|#2\|#3\|#4\finish{% \global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} \def\oddfooting{\parsearg\oddfootingxxx} \def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish} \def\oddfootingyyy #1\|#2\|#3\|#4\finish{% \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}% % % Leave some space for the footline. Hopefully ok to assume % @evenfooting will not be used by itself. \global\advance\pageheight by -12pt \global\advance\vsize by -12pt } \parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}} % @evenheadingmarks top \thischapter <- chapter at the top of a page % @evenheadingmarks bottom \thischapter <- chapter at the bottom of a page % % The same set of arguments for: % % @oddheadingmarks % @evenfootingmarks % @oddfootingmarks % @everyheadingmarks % @everyfootingmarks \def\evenheadingmarks{\headingmarks{even}{heading}} \def\oddheadingmarks{\headingmarks{odd}{heading}} \def\evenfootingmarks{\headingmarks{even}{footing}} \def\oddfootingmarks{\headingmarks{odd}{footing}} \def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1} \headingmarks{odd}{heading}{#1} } \def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1} \headingmarks{odd}{footing}{#1} } % #1 = even/odd, #2 = heading/footing, #3 = top/bottom. \def\headingmarks#1#2#3 {% \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname \global\expandafter\let\csname get#1#2marks\endcsname \temp } \everyheadingmarks bottom \everyfootingmarks bottom % @headings double turns headings on for double-sided printing. % @headings single turns headings on for single-sided printing. % @headings off turns them off. % @headings on same as @headings double, retained for compatibility. % @headings after turns on double-sided headings after this page. % @headings doubleafter turns on double-sided headings after this page. % @headings singleafter turns on single-sided headings after this page. % By default, they are off at the start of a document, % and turned `on' after @end titlepage. \def\headings #1 {\csname HEADINGS#1\endcsname} \def\headingsoff{% non-global headings elimination \evenheadline={\hfil}\evenfootline={\hfil}% \oddheadline={\hfil}\oddfootline={\hfil}% } \def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting \HEADINGSoff % it's the default % When we turn headings on, set the page number to 1. % For double-sided printing, put current file name in lower left corner, % chapter name on inside top of right hand pages, document % title on inside top of left hand pages, and page numbers on outside top % edge of all pages. \def\HEADINGSdouble{% \global\pageno=1 \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chapoddpage } \let\contentsalignmacro = \chappager % For single-sided printing, chapter title goes across top left of page, % page number on top right. \def\HEADINGSsingle{% \global\pageno=1 \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\thischapter\hfil\folio}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chappager } \def\HEADINGSon{\HEADINGSdouble} \def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex} \let\HEADINGSdoubleafter=\HEADINGSafter \def\HEADINGSdoublex{% \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chapoddpage } \def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} \def\HEADINGSsinglex{% \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\thischapter\hfil\folio}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chappager } % Subroutines used in generating headings % This produces Day Month Year style of output. % Only define if not already defined, in case a txi-??.tex file has set % up a different format (e.g., txi-cs.tex does this). \ifx\today\thisisundefined \def\today{% \number\day\space \ifcase\month \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec \fi \space\number\year} \fi % @settitle line... specifies the title of the document, for headings. % It generates no output of its own. \def\thistitle{\putwordNoTitle} \def\settitle{\parsearg{\gdef\thistitle}} \message{tables,} % Tables -- @table, @ftable, @vtable, @item(x). % default indentation of table text \newdimen\tableindent \tableindent=.8in % default indentation of @itemize and @enumerate text \newdimen\itemindent \itemindent=.3in % margin between end of table item and start of table text. \newdimen\itemmargin \itemmargin=.1in % used internally for \itemindent minus \itemmargin \newdimen\itemmax % Note @table, @ftable, and @vtable define @item, @itemx, etc., with % these defs. % They also define \itemindex % to index the item name in whatever manner is desired (perhaps none). \newif\ifitemxneedsnegativevskip \def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} \def\internalBitem{\smallbreak \parsearg\itemzzz} \def\internalBitemx{\itemxpar \parsearg\itemzzz} \def\itemzzz #1{\begingroup % \advance\hsize by -\rightskip \advance\hsize by -\tableindent \setbox0=\hbox{\itemindicate{#1}}% \itemindex{#1}% \nobreak % This prevents a break before @itemx. % % If the item text does not fit in the space we have, put it on a line % by itself, and do not allow a page break either before or after that % line. We do not start a paragraph here because then if the next % command is, e.g., @kindex, the whatsit would get put into the % horizontal list on a line by itself, resulting in extra blank space. \ifdim \wd0>\itemmax % % Make this a paragraph so we get the \parskip glue and wrapping, % but leave it ragged-right. \begingroup \advance\leftskip by-\tableindent \advance\hsize by\tableindent \advance\rightskip by0pt plus1fil\relax \leavevmode\unhbox0\par \endgroup % % We're going to be starting a paragraph, but we don't want the % \parskip glue -- logically it's part of the @item we just started. \nobreak \vskip-\parskip % % Stop a page break at the \parskip glue coming up. However, if % what follows is an environment such as @example, there will be no % \parskip glue; then the negative vskip we just inserted would % cause the example and the item to crash together. So we use this % bizarre value of 10001 as a signal to \aboveenvbreak to insert % \parskip glue after all. Section titles are handled this way also. % \penalty 10001 \endgroup \itemxneedsnegativevskipfalse \else % The item text fits into the space. Start a paragraph, so that the % following text (if any) will end up on the same line. \noindent % Do this with kerns and \unhbox so that if there is a footnote in % the item text, it can migrate to the main vertical list and % eventually be printed. \nobreak\kern-\tableindent \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0 \unhbox0 \nobreak\kern\dimen0 \endgroup \itemxneedsnegativevskiptrue \fi } \def\item{\errmessage{@item while not in a list environment}} \def\itemx{\errmessage{@itemx while not in a list environment}} % @table, @ftable, @vtable. \envdef\table{% \let\itemindex\gobble \tablecheck{table}% } \envdef\ftable{% \def\itemindex ##1{\doind {fn}{\code{##1}}}% \tablecheck{ftable}% } \envdef\vtable{% \def\itemindex ##1{\doind {vr}{\code{##1}}}% \tablecheck{vtable}% } \def\tablecheck#1{% \ifnum \the\catcode`\^^M=\active \endgroup \errmessage{This command won't work in this context; perhaps the problem is that we are \inenvironment\thisenv}% \def\next{\doignore{#1}}% \else \let\next\tablex \fi \next } \def\tablex#1{% \def\itemindicate{#1}% \parsearg\tabley } \def\tabley#1{% {% \makevalueexpandable \edef\temp{\noexpand\tablez #1\space\space\space}% \expandafter }\temp \endtablez } \def\tablez #1 #2 #3 #4\endtablez{% \aboveenvbreak \ifnum 0#1>0 \advance \leftskip by #1\mil \fi \ifnum 0#2>0 \tableindent=#2\mil \fi \ifnum 0#3>0 \advance \rightskip by #3\mil \fi \itemmax=\tableindent \advance \itemmax by -\itemmargin \advance \leftskip by \tableindent \exdentamount=\tableindent \parindent = 0pt \parskip = \smallskipamount \ifdim \parskip=0pt \parskip=2pt \fi \let\item = \internalBitem \let\itemx = \internalBitemx } \def\Etable{\endgraf\afterenvbreak} \let\Eftable\Etable \let\Evtable\Etable \let\Eitemize\Etable \let\Eenumerate\Etable % This is the counter used by @enumerate, which is really @itemize \newcount \itemno \envdef\itemize{\parsearg\doitemize} \def\doitemize#1{% \aboveenvbreak \itemmax=\itemindent \advance\itemmax by -\itemmargin \advance\leftskip by \itemindent \exdentamount=\itemindent \parindent=0pt \parskip=\smallskipamount \ifdim\parskip=0pt \parskip=2pt \fi % % Try typesetting the item mark that if the document erroneously says % something like @itemize @samp (intending @table), there's an error % right away at the @itemize. It's not the best error message in the % world, but it's better than leaving it to the @item. This means if % the user wants an empty mark, they have to say @w{} not just @w. \def\itemcontents{#1}% \setbox0 = \hbox{\itemcontents}% % % @itemize with no arg is equivalent to @itemize @bullet. \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi % \let\item=\itemizeitem } % Definition of @item while inside @itemize and @enumerate. % \def\itemizeitem{% \advance\itemno by 1 % for enumerations {\let\par=\endgraf \smallbreak}% reasonable place to break {% % If the document has an @itemize directly after a section title, a % \nobreak will be last on the list, and \sectionheading will have % done a \vskip-\parskip. In that case, we don't want to zero % parskip, or the item text will crash with the heading. On the % other hand, when there is normal text preceding the item (as there % usually is), we do want to zero parskip, or there would be too much % space. In that case, we won't have a \nobreak before. At least % that's the theory. \ifnum\lastpenalty<10000 \parskip=0in \fi \noindent \hbox to 0pt{\hss \itemcontents \kern\itemmargin}% % \vadjust{\penalty 1200}}% not good to break after first line of item. \flushcr } % \splitoff TOKENS\endmark defines \first to be the first token in % TOKENS, and \rest to be the remainder. % \def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}% % Allow an optional argument of an uppercase letter, lowercase letter, % or number, to specify the first label in the enumerated list. No % argument is the same as `1'. % \envparseargdef\enumerate{\enumeratey #1 \endenumeratey} \def\enumeratey #1 #2\endenumeratey{% % If we were given no argument, pretend we were given `1'. \def\thearg{#1}% \ifx\thearg\empty \def\thearg{1}\fi % % Detect if the argument is a single token. If so, it might be a % letter. Otherwise, the only valid thing it can be is a number. % (We will always have one token, because of the test we just made. % This is a good thing, since \splitoff doesn't work given nothing at % all -- the first parameter is undelimited.) \expandafter\splitoff\thearg\endmark \ifx\rest\empty % Only one token in the argument. It could still be anything. % A ``lowercase letter'' is one whose \lccode is nonzero. % An ``uppercase letter'' is one whose \lccode is both nonzero, and % not equal to itself. % Otherwise, we assume it's a number. % % We need the \relax at the end of the \ifnum lines to stop TeX from % continuing to look for a . % \ifnum\lccode\expandafter`\thearg=0\relax \numericenumerate % a number (we hope) \else % It's a letter. \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax \lowercaseenumerate % lowercase letter \else \uppercaseenumerate % uppercase letter \fi \fi \else % Multiple tokens in the argument. We hope it's a number. \numericenumerate \fi } % An @enumerate whose labels are integers. The starting integer is % given in \thearg. % \def\numericenumerate{% \itemno = \thearg \startenumeration{\the\itemno}% } % The starting (lowercase) letter is in \thearg. \def\lowercaseenumerate{% \itemno = \expandafter`\thearg \startenumeration{% % Be sure we're not beyond the end of the alphabet. \ifnum\itemno=0 \errmessage{No more lowercase letters in @enumerate; get a bigger alphabet}% \fi \char\lccode\itemno }% } % The starting (uppercase) letter is in \thearg. \def\uppercaseenumerate{% \itemno = \expandafter`\thearg \startenumeration{% % Be sure we're not beyond the end of the alphabet. \ifnum\itemno=0 \errmessage{No more uppercase letters in @enumerate; get a bigger alphabet} \fi \char\uccode\itemno }% } % Call \doitemize, adding a period to the first argument and supplying the % common last two arguments. Also subtract one from the initial value in % \itemno, since @item increments \itemno. % \def\startenumeration#1{% \advance\itemno by -1 \doitemize{#1.}\flushcr } % @alphaenumerate and @capsenumerate are abbreviations for giving an arg % to @enumerate. % \def\alphaenumerate{\enumerate{a}} \def\capsenumerate{\enumerate{A}} \def\Ealphaenumerate{\Eenumerate} \def\Ecapsenumerate{\Eenumerate} % @multitable macros % Amy Hendrickson, 8/18/94, 3/6/96 % % @multitable ... @end multitable will make as many columns as desired. % Contents of each column will wrap at width given in preamble. Width % can be specified either with sample text given in a template line, % or in percent of \hsize, the current width of text on page. % Table can continue over pages but will only break between lines. % To make preamble: % % Either define widths of columns in terms of percent of \hsize: % @multitable @columnfractions .25 .3 .45 % @item ... % % Numbers following @columnfractions are the percent of the total % current hsize to be used for each column. You may use as many % columns as desired. % Or use a template: % @multitable {Column 1 template} {Column 2 template} {Column 3 template} % @item ... % using the widest term desired in each column. % Each new table line starts with @item, each subsequent new column % starts with @tab. Empty columns may be produced by supplying @tab's % with nothing between them for as many times as empty columns are needed, % ie, @tab@tab@tab will produce two empty columns. % @item, @tab do not need to be on their own lines, but it will not hurt % if they are. % Sample multitable: % @multitable {Column 1 template} {Column 2 template} {Column 3 template} % @item first col stuff @tab second col stuff @tab third col % @item % first col stuff % @tab % second col stuff % @tab % third col % @item first col stuff @tab second col stuff % @tab Many paragraphs of text may be used in any column. % % They will wrap at the width determined by the template. % @item@tab@tab This will be in third column. % @end multitable % Default dimensions may be reset by user. % @multitableparskip is vertical space between paragraphs in table. % @multitableparindent is paragraph indent in table. % @multitablecolmargin is horizontal space to be left between columns. % @multitablelinespace is space to leave between table items, baseline % to baseline. % 0pt means it depends on current normal line spacing. % \newskip\multitableparskip \newskip\multitableparindent \newdimen\multitablecolspace \newskip\multitablelinespace \multitableparskip=0pt \multitableparindent=6pt \multitablecolspace=12pt \multitablelinespace=0pt % Macros used to set up halign preamble: % \let\endsetuptable\relax \def\xendsetuptable{\endsetuptable} \let\columnfractions\relax \def\xcolumnfractions{\columnfractions} \newif\ifsetpercent % #1 is the @columnfraction, usually a decimal number like .5, but might % be just 1. We just use it, whatever it is. % \def\pickupwholefraction#1 {% \global\advance\colcount by 1 \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}% \setuptable } \newcount\colcount \def\setuptable#1{% \def\firstarg{#1}% \ifx\firstarg\xendsetuptable \let\go = \relax \else \ifx\firstarg\xcolumnfractions \global\setpercenttrue \else \ifsetpercent \let\go\pickupwholefraction \else \global\advance\colcount by 1 \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a % separator; typically that is always in the input, anyway. \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% \fi \fi \ifx\go\pickupwholefraction % Put the argument back for the \pickupwholefraction call, so % we'll always have a period there to be parsed. \def\go{\pickupwholefraction#1}% \else \let\go = \setuptable \fi% \fi \go } % multitable-only commands. % % @headitem starts a heading row, which we typeset in bold. % Assignments have to be global since we are inside the implicit group % of an alignment entry. \everycr resets \everytab so we don't have to % undo it ourselves. \def\headitemfont{\b}% for people to use in the template row; not changeable \def\headitem{% \checkenv\multitable \crcr \global\everytab={\bf}% can't use \headitemfont since the parsing differs \the\everytab % for the first item }% % % A \tab used to include \hskip1sp. But then the space in a template % line is not enough. That is bad. So let's go back to just `&' until % we again encounter the problem the 1sp was intended to solve. % --karl, nathan@acm.org, 20apr99. \def\tab{\checkenv\multitable &\the\everytab}% % @multitable ... @end multitable definitions: % \newtoks\everytab % insert after every tab. % \envdef\multitable{% \vskip\parskip \startsavinginserts % % @item within a multitable starts a normal row. % We use \def instead of \let so that if one of the multitable entries % contains an @itemize, we don't choke on the \item (seen as \crcr aka % \endtemplate) expanding \doitemize. \def\item{\crcr}% % \tolerance=9500 \hbadness=9500 \setmultitablespacing \parskip=\multitableparskip \parindent=\multitableparindent \overfullrule=0pt \global\colcount=0 % \everycr = {% \noalign{% \global\everytab={}% \global\colcount=0 % Reset the column counter. % Check for saved footnotes, etc. \checkinserts % Keeps underfull box messages off when table breaks over pages. %\filbreak % Maybe so, but it also creates really weird page breaks when the % table breaks over pages. Wouldn't \vfil be better? Wait until the % problem manifests itself, so it can be fixed for real --karl. }% }% % \parsearg\domultitable } \def\domultitable#1{% % To parse everything between @multitable and @item: \setuptable#1 \endsetuptable % % This preamble sets up a generic column definition, which will % be used as many times as user calls for columns. % \vtop will set a single line and will also let text wrap and % continue for many paragraphs if desired. \halign\bgroup &% \global\advance\colcount by 1 \multistrut \vtop{% % Use the current \colcount to find the correct column width: \hsize=\expandafter\csname col\the\colcount\endcsname % % In order to keep entries from bumping into each other % we will add a \leftskip of \multitablecolspace to all columns after % the first one. % % If a template has been used, we will add \multitablecolspace % to the width of each template entry. % % If the user has set preamble in terms of percent of \hsize we will % use that dimension as the width of the column, and the \leftskip % will keep entries from bumping into each other. Table will start at % left margin and final column will justify at right margin. % % Make sure we don't inherit \rightskip from the outer environment. \rightskip=0pt \ifnum\colcount=1 % The first column will be indented with the surrounding text. \advance\hsize by\leftskip \else \ifsetpercent \else % If user has not set preamble in terms of percent of \hsize % we will advance \hsize by \multitablecolspace. \advance\hsize by \multitablecolspace \fi % In either case we will make \leftskip=\multitablecolspace: \leftskip=\multitablecolspace \fi % Ignoring space at the beginning and end avoids an occasional spurious % blank line, when TeX decides to break the line at the space before the % box from the multistrut, so the strut ends up on a line by itself. % For example: % @multitable @columnfractions .11 .89 % @item @code{#} % @tab Legal holiday which is valid in major parts of the whole country. % Is automatically provided with highlighting sequences respectively % marking characters. \noindent\ignorespaces##\unskip\multistrut }\cr } \def\Emultitable{% \crcr \egroup % end the \halign \global\setpercentfalse } \def\setmultitablespacing{% \def\multistrut{\strut}% just use the standard line spacing % % Compute \multitablelinespace (if not defined by user) for use in % \multitableparskip calculation. We used define \multistrut based on % this, but (ironically) that caused the spacing to be off. % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100. \ifdim\multitablelinespace=0pt \setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip \global\advance\multitablelinespace by-\ht0 \fi % Test to see if parskip is larger than space between lines of % table. If not, do nothing. % If so, set to same dimension as multitablelinespace. \ifdim\multitableparskip>\multitablelinespace \global\multitableparskip=\multitablelinespace \global\advance\multitableparskip-7pt % to keep parskip somewhat smaller % than skip between lines in the table. \fi% \ifdim\multitableparskip=0pt \global\multitableparskip=\multitablelinespace \global\advance\multitableparskip-7pt % to keep parskip somewhat smaller % than skip between lines in the table. \fi} \message{conditionals,} % @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext, % @ifnotxml always succeed. They currently do nothing; we don't % attempt to check whether the conditionals are properly nested. But we % have to remember that they are conditionals, so that @end doesn't % attempt to close an environment group. % \def\makecond#1{% \expandafter\let\csname #1\endcsname = \relax \expandafter\let\csname iscond.#1\endcsname = 1 } \makecond{iftex} \makecond{ifnotdocbook} \makecond{ifnothtml} \makecond{ifnotinfo} \makecond{ifnotplaintext} \makecond{ifnotxml} % Ignore @ignore, @ifhtml, @ifinfo, and the like. % \def\direntry{\doignore{direntry}} \def\documentdescription{\doignore{documentdescription}} \def\docbook{\doignore{docbook}} \def\html{\doignore{html}} \def\ifdocbook{\doignore{ifdocbook}} \def\ifhtml{\doignore{ifhtml}} \def\ifinfo{\doignore{ifinfo}} \def\ifnottex{\doignore{ifnottex}} \def\ifplaintext{\doignore{ifplaintext}} \def\ifxml{\doignore{ifxml}} \def\ignore{\doignore{ignore}} \def\menu{\doignore{menu}} \def\xml{\doignore{xml}} % Ignore text until a line `@end #1', keeping track of nested conditionals. % % A count to remember the depth of nesting. \newcount\doignorecount \def\doignore#1{\begingroup % Scan in ``verbatim'' mode: \obeylines \catcode`\@ = \other \catcode`\{ = \other \catcode`\} = \other % % Make sure that spaces turn into tokens that match what \doignoretext wants. \spaceisspace % % Count number of #1's that we've seen. \doignorecount = 0 % % Swallow text until we reach the matching `@end #1'. \dodoignore{#1}% } { \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source. \obeylines % % \gdef\dodoignore#1{% % #1 contains the command name as a string, e.g., `ifinfo'. % % Define a command to find the next `@end #1'. \long\def\doignoretext##1^^M@end #1{% \doignoretextyyy##1^^M@#1\_STOP_}% % % And this command to find another #1 command, at the beginning of a % line. (Otherwise, we would consider a line `@c @ifset', for % example, to count as an @ifset for nesting.) \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}% % % And now expand that command. \doignoretext ^^M% }% } \def\doignoreyyy#1{% \def\temp{#1}% \ifx\temp\empty % Nothing found. \let\next\doignoretextzzz \else % Found a nested condition, ... \advance\doignorecount by 1 \let\next\doignoretextyyy % ..., look for another. % If we're here, #1 ends with ^^M\ifinfo (for example). \fi \next #1% the token \_STOP_ is present just after this macro. } % We have to swallow the remaining "\_STOP_". % \def\doignoretextzzz#1{% \ifnum\doignorecount = 0 % We have just found the outermost @end. \let\next\enddoignore \else % Still inside a nested condition. \advance\doignorecount by -1 \let\next\doignoretext % Look for the next @end. \fi \next } % Finish off ignored text. { \obeylines% % Ignore anything after the last `@end #1'; this matters in verbatim % environments, where otherwise the newline after an ignored conditional % would result in a blank line in the output. \gdef\enddoignore#1^^M{\endgroup\ignorespaces}% } % @set VAR sets the variable VAR to an empty value. % @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE. % % Since we want to separate VAR from REST-OF-LINE (which might be % empty), we can't just use \parsearg; we have to insert a space of our % own to delimit the rest of the line, and then take it out again if we % didn't need it. % We rely on the fact that \parsearg sets \catcode`\ =10. % \parseargdef\set{\setyyy#1 \endsetyyy} \def\setyyy#1 #2\endsetyyy{% {% \makevalueexpandable \def\temp{#2}% \edef\next{\gdef\makecsname{SET#1}}% \ifx\temp\empty \next{}% \else \setzzz#2\endsetzzz \fi }% } % Remove the trailing space \setxxx inserted. \def\setzzz#1 \endsetzzz{\next{#1}} % @clear VAR clears (i.e., unsets) the variable VAR. % \parseargdef\clear{% {% \makevalueexpandable \global\expandafter\let\csname SET#1\endcsname=\relax }% } % @value{foo} gets the text saved in variable foo. \def\value{\begingroup\makevalueexpandable\valuexxx} \def\valuexxx#1{\expandablevalue{#1}\endgroup} { \catcode`\- = \active \catcode`\_ = \active % \gdef\makevalueexpandable{% \let\value = \expandablevalue % We don't want these characters active, ... \catcode`\-=\other \catcode`\_=\other % ..., but we might end up with active ones in the argument if % we're called from @code, as @code{@value{foo-bar_}}, though. % So \let them to their normal equivalents. \let-\realdash \let_\normalunderscore } } % We have this subroutine so that we can handle at least some @value's % properly in indexes (we call \makevalueexpandable in \indexdummies). % The command has to be fully expandable (if the variable is set), since % the result winds up in the index file. This means that if the % variable's value contains other Texinfo commands, it's almost certain % it will fail (although perhaps we could fix that with sufficient work % to do a one-level expansion on the result, instead of complete). % \def\expandablevalue#1{% \expandafter\ifx\csname SET#1\endcsname\relax {[No value for ``#1'']}% \message{Variable `#1', used in @value, is not set.}% \else \csname SET#1\endcsname \fi } % @ifset VAR ... @end ifset reads the `...' iff VAR has been defined % with @set. % % To get special treatment of `@end ifset,' call \makeond and the redefine. % \makecond{ifset} \def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}} \def\doifset#1#2{% {% \makevalueexpandable \let\next=\empty \expandafter\ifx\csname SET#2\endcsname\relax #1% If not set, redefine \next. \fi \expandafter }\next } \def\ifsetfail{\doignore{ifset}} % @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been % defined with @set, or has been undefined with @clear. % % The `\else' inside the `\doifset' parameter is a trick to reuse the % above code: if the variable is not set, do nothing, if it is set, % then redefine \next to \ifclearfail. % \makecond{ifclear} \def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}} \def\ifclearfail{\doignore{ifclear}} % @dircategory CATEGORY -- specify a category of the dir file % which this file should belong to. Ignore this in TeX. \let\dircategory=\comment % @defininfoenclose. \let\definfoenclose=\comment \message{indexing,} % Index generation facilities % Define \newwrite to be identical to plain tex's \newwrite % except not \outer, so it can be used within macros and \if's. \edef\newwrite{\makecsname{ptexnewwrite}} % \newindex {foo} defines an index named foo. % It automatically defines \fooindex such that % \fooindex ...rest of line... puts an entry in the index foo. % It also defines \fooindfile to be the number of the output channel for % the file that accumulates this index. The file's extension is foo. % The name of an index should be no more than 2 characters long % for the sake of vms. % \def\newindex#1{% \iflinks \expandafter\newwrite \csname#1indfile\endcsname \openout \csname#1indfile\endcsname \jobname.#1 % Open the file \fi \expandafter\xdef\csname#1index\endcsname{% % Define @#1index \noexpand\doindex{#1}} } % @defindex foo == \newindex{foo} % \def\defindex{\parsearg\newindex} % Define @defcodeindex, like @defindex except put all entries in @code. % \def\defcodeindex{\parsearg\newcodeindex} % \def\newcodeindex#1{% \iflinks \expandafter\newwrite \csname#1indfile\endcsname \openout \csname#1indfile\endcsname \jobname.#1 \fi \expandafter\xdef\csname#1index\endcsname{% \noexpand\docodeindex{#1}}% } % @synindex foo bar makes index foo feed into index bar. % Do this instead of @defindex foo if you don't want it as a separate index. % % @syncodeindex foo bar similar, but put all entries made for index foo % inside @code. % \def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}} \def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}} % #1 is \doindex or \docodeindex, #2 the index getting redefined (foo), % #3 the target index (bar). \def\dosynindex#1#2#3{% % Only do \closeout if we haven't already done it, else we'll end up % closing the target index. \expandafter \ifx\csname donesynindex#2\endcsname \relax % The \closeout helps reduce unnecessary open files; the limit on the % Acorn RISC OS is a mere 16 files. \expandafter\closeout\csname#2indfile\endcsname \expandafter\let\csname donesynindex#2\endcsname = 1 \fi % redefine \fooindfile: \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname \expandafter\let\csname#2indfile\endcsname=\temp % redefine \fooindex: \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}% } % Define \doindex, the driver for all \fooindex macros. % Argument #1 is generated by the calling \fooindex macro, % and it is "foo", the name of the index. % \doindex just uses \parsearg; it calls \doind for the actual work. % This is because \doind is more useful to call from other macros. % There is also \dosubind {index}{topic}{subtopic} % which makes an entry in a two-level index such as the operation index. \def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer} \def\singleindexer #1{\doind{\indexname}{#1}} % like the previous two, but they put @code around the argument. \def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer} \def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} % Take care of Texinfo commands that can appear in an index entry. % Since there are some commands we want to expand, and others we don't, % we have to laboriously prevent expansion for those that we don't. % \def\indexdummies{% \escapechar = `\\ % use backslash in output files. \def\@{@}% change to @@ when we switch to @ as escape char in index files. \def\ {\realbackslash\space }% % % Need these unexpandable (because we define \tt as a dummy) % definitions when @{ or @} appear in index entry text. Also, more % complicated, when \tex is in effect and \{ is a \delimiter again. % We can't use \lbracecmd and \rbracecmd because texindex assumes % braces and backslashes are used only as delimiters. Perhaps we % should define @lbrace and @rbrace commands a la @comma. \def\{{{\tt\char123}}% \def\}{{\tt\char125}}% % % I don't entirely understand this, but when an index entry is % generated from a macro call, the \endinput which \scanmacro inserts % causes processing to be prematurely terminated. This is, % apparently, because \indexsorttmp is fully expanded, and \endinput % is an expandable command. The redefinition below makes \endinput % disappear altogether for that purpose -- although logging shows that % processing continues to some further point. On the other hand, it % seems \endinput does not hurt in the printed index arg, since that % is still getting written without apparent harm. % % Sample source (mac-idx3.tex, reported by Graham Percival to % help-texinfo, 22may06): % @macro funindex {WORD} % @findex xyz % @end macro % ... % @funindex commtest % % The above is not enough to reproduce the bug, but it gives the flavor. % % Sample whatsit resulting: % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}} % % So: \let\endinput = \empty % % Do the redefinitions. \commondummies } % For the aux and toc files, @ is the escape character. So we want to % redefine everything using @ as the escape character (instead of % \realbackslash, still used for index files). When everything uses @, % this will be simpler. % \def\atdummies{% \def\@{@@}% \def\ {@ }% \let\{ = \lbraceatcmd \let\} = \rbraceatcmd % % Do the redefinitions. \commondummies \otherbackslash } % Called from \indexdummies and \atdummies. % \def\commondummies{% % % \definedummyword defines \#1 as \string\#1\space, thus effectively % preventing its expansion. This is used only for control words, % not control letters, because the \space would be incorrect for % control characters, but is needed to separate the control word % from whatever follows. % % For control letters, we have \definedummyletter, which omits the % space. % % These can be used both for control words that take an argument and % those that do not. If it is followed by {arg} in the input, then % that will dutifully get written to the index (or wherever). % \def\definedummyword ##1{\def##1{\string##1\space}}% \def\definedummyletter##1{\def##1{\string##1}}% \let\definedummyaccent\definedummyletter % \commondummiesnofonts % \definedummyletter\_% \definedummyletter\-% % % Non-English letters. \definedummyword\AA \definedummyword\AE \definedummyword\DH \definedummyword\L \definedummyword\O \definedummyword\OE \definedummyword\TH \definedummyword\aa \definedummyword\ae \definedummyword\dh \definedummyword\exclamdown \definedummyword\l \definedummyword\o \definedummyword\oe \definedummyword\ordf \definedummyword\ordm \definedummyword\questiondown \definedummyword\ss \definedummyword\th % % Although these internal commands shouldn't show up, sometimes they do. \definedummyword\bf \definedummyword\gtr \definedummyword\hat \definedummyword\less \definedummyword\sf \definedummyword\sl \definedummyword\tclose \definedummyword\tt % \definedummyword\LaTeX \definedummyword\TeX % % Assorted special characters. \definedummyword\arrow \definedummyword\bullet \definedummyword\comma \definedummyword\copyright \definedummyword\registeredsymbol \definedummyword\dots \definedummyword\enddots \definedummyword\entrybreak \definedummyword\equiv \definedummyword\error \definedummyword\euro \definedummyword\expansion \definedummyword\geq \definedummyword\guillemetleft \definedummyword\guillemetright \definedummyword\guilsinglleft \definedummyword\guilsinglright \definedummyword\leq \definedummyword\minus \definedummyword\ogonek \definedummyword\pounds \definedummyword\point \definedummyword\print \definedummyword\quotedblbase \definedummyword\quotedblleft \definedummyword\quotedblright \definedummyword\quoteleft \definedummyword\quoteright \definedummyword\quotesinglbase \definedummyword\result \definedummyword\textdegree % % We want to disable all macros so that they are not expanded by \write. \macrolist % \normalturnoffactive % % Handle some cases of @value -- where it does not contain any % (non-fully-expandable) commands. \makevalueexpandable } % \commondummiesnofonts: common to \commondummies and \indexnofonts. % \def\commondummiesnofonts{% % Control letters and accents. \definedummyletter\!% \definedummyaccent\"% \definedummyaccent\'% \definedummyletter\*% \definedummyaccent\,% \definedummyletter\.% \definedummyletter\/% \definedummyletter\:% \definedummyaccent\=% \definedummyletter\?% \definedummyaccent\^% \definedummyaccent\`% \definedummyaccent\~% \definedummyword\u \definedummyword\v \definedummyword\H \definedummyword\dotaccent \definedummyword\ogonek \definedummyword\ringaccent \definedummyword\tieaccent \definedummyword\ubaraccent \definedummyword\udotaccent \definedummyword\dotless % % Texinfo font commands. \definedummyword\b \definedummyword\i \definedummyword\r \definedummyword\sansserif \definedummyword\sc \definedummyword\slanted \definedummyword\t % % Commands that take arguments. \definedummyword\acronym \definedummyword\anchor \definedummyword\cite \definedummyword\code \definedummyword\command \definedummyword\dfn \definedummyword\dmn \definedummyword\email \definedummyword\emph \definedummyword\env \definedummyword\file \definedummyword\indicateurl \definedummyword\kbd \definedummyword\key \definedummyword\math \definedummyword\option \definedummyword\pxref \definedummyword\ref \definedummyword\samp \definedummyword\strong \definedummyword\tie \definedummyword\uref \definedummyword\url \definedummyword\var \definedummyword\verb \definedummyword\w \definedummyword\xref } % \indexnofonts is used when outputting the strings to sort the index % by, and when constructing control sequence names. It eliminates all % control sequences and just writes whatever the best ASCII sort string % would be for a given command (usually its argument). % \def\indexnofonts{% % Accent commands should become @asis. \def\definedummyaccent##1{\let##1\asis}% % We can just ignore other control letters. \def\definedummyletter##1{\let##1\empty}% % All control words become @asis by default; overrides below. \let\definedummyword\definedummyaccent % \commondummiesnofonts % % Don't no-op \tt, since it isn't a user-level command % and is used in the definitions of the active chars like <, >, |, etc. % Likewise with the other plain tex font commands. %\let\tt=\asis % \def\ { }% \def\@{@}% \def\_{\normalunderscore}% \def\-{}% @- shouldn't affect sorting % % Unfortunately, texindex is not prepared to handle braces in the % content at all. So for index sorting, we map @{ and @} to strings % starting with |, since that ASCII character is between ASCII { and }. \def\{{|a}% \def\}{|b}% % % Non-English letters. \def\AA{AA}% \def\AE{AE}% \def\DH{DZZ}% \def\L{L}% \def\OE{OE}% \def\O{O}% \def\TH{ZZZ}% \def\aa{aa}% \def\ae{ae}% \def\dh{dzz}% \def\exclamdown{!}% \def\l{l}% \def\oe{oe}% \def\ordf{a}% \def\ordm{o}% \def\o{o}% \def\questiondown{?}% \def\ss{ss}% \def\th{zzz}% % \def\LaTeX{LaTeX}% \def\TeX{TeX}% % % Assorted special characters. % (The following {} will end up in the sort string, but that's ok.) \def\arrow{->}% \def\bullet{bullet}% \def\comma{,}% \def\copyright{copyright}% \def\dots{...}% \def\enddots{...}% \def\equiv{==}% \def\error{error}% \def\euro{euro}% \def\expansion{==>}% \def\geq{>=}% \def\guillemetleft{<<}% \def\guillemetright{>>}% \def\guilsinglleft{<}% \def\guilsinglright{>}% \def\leq{<=}% \def\minus{-}% \def\point{.}% \def\pounds{pounds}% \def\print{-|}% \def\quotedblbase{"}% \def\quotedblleft{"}% \def\quotedblright{"}% \def\quoteleft{`}% \def\quoteright{'}% \def\quotesinglbase{,}% \def\registeredsymbol{R}% \def\result{=>}% \def\textdegree{o}% % \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax \else \indexlquoteignore \fi % % We need to get rid of all macros, leaving only the arguments (if present). % Of course this is not nearly correct, but it is the best we can do for now. % makeinfo does not expand macros in the argument to @deffn, which ends up % writing an index entry, and texindex isn't prepared for an index sort entry % that starts with \. % % Since macro invocations are followed by braces, we can just redefine them % to take a single TeX argument. The case of a macro invocation that % goes to end-of-line is not handled. % \macrolist } % Undocumented (for FSFS 2nd ed.): @set txiindexlquoteignore makes us % ignore left quotes in the sort term. {\catcode`\`=\active \gdef\indexlquoteignore{\let`=\empty}} \let\indexbackslash=0 %overridden during \printindex. \let\SETmarginindex=\relax % put index entries in margin (undocumented)? % Most index entries go through here, but \dosubind is the general case. % #1 is the index name, #2 is the entry text. \def\doind#1#2{\dosubind{#1}{#2}{}} % Workhorse for all \fooindexes. % #1 is name of index, #2 is stuff to put there, #3 is subentry -- % empty if called from \doind, as we usually are (the main exception % is with most defuns, which call us directly). % \def\dosubind#1#2#3{% \iflinks {% % Store the main index entry text (including the third arg). \toks0 = {#2}% % If third arg is present, precede it with a space. \def\thirdarg{#3}% \ifx\thirdarg\empty \else \toks0 = \expandafter{\the\toks0 \space #3}% \fi % \edef\writeto{\csname#1indfile\endcsname}% % \safewhatsit\dosubindwrite }% \fi } % Write the entry in \toks0 to the index file: % \def\dosubindwrite{% % Put the index entry in the margin if desired. \ifx\SETmarginindex\relax\else \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}% \fi % % Remember, we are within a group. \indexdummies % Must do this here, since \bf, etc expand at this stage \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now % so it will be output as is; and it will print as backslash. % % Process the index entry with all font commands turned off, to % get the string to sort by. {\indexnofonts \edef\temp{\the\toks0}% need full expansion \xdef\indexsorttmp{\temp}% }% % % Set up the complete index entry, with both the sort key and % the original text, including any font commands. We write % three arguments to \entry to the .?? file (four in the % subentry case), texindex reduces to two when writing the .??s % sorted result. \edef\temp{% \write\writeto{% \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}% }% \temp } % Take care of unwanted page breaks/skips around a whatsit: % % If a skip is the last thing on the list now, preserve it % by backing up by \lastskip, doing the \write, then inserting % the skip again. Otherwise, the whatsit generated by the % \write or \pdfdest will make \lastskip zero. The result is that % sequences like this: % @end defun % @tindex whatever % @defun ... % will have extra space inserted, because the \medbreak in the % start of the @defun won't see the skip inserted by the @end of % the previous defun. % % But don't do any of this if we're not in vertical mode. We % don't want to do a \vskip and prematurely end a paragraph. % % Avoid page breaks due to these extra skips, too. % % But wait, there is a catch there: % We'll have to check whether \lastskip is zero skip. \ifdim is not % sufficient for this purpose, as it ignores stretch and shrink parts % of the skip. The only way seems to be to check the textual % representation of the skip. % % The following is almost like \def\zeroskipmacro{0.0pt} except that % the ``p'' and ``t'' characters have catcode \other, not 11 (letter). % \edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname} % \newskip\whatsitskip \newcount\whatsitpenalty % % ..., ready, GO: % \def\safewhatsit#1{\ifhmode #1% \else % \lastskip and \lastpenalty cannot both be nonzero simultaneously. \whatsitskip = \lastskip \edef\lastskipmacro{\the\lastskip}% \whatsitpenalty = \lastpenalty % % If \lastskip is nonzero, that means the last item was a % skip. And since a skip is discardable, that means this % -\whatsitskip glue we're inserting is preceded by a % non-discardable item, therefore it is not a potential % breakpoint, therefore no \nobreak needed. \ifx\lastskipmacro\zeroskipmacro \else \vskip-\whatsitskip \fi % #1% % \ifx\lastskipmacro\zeroskipmacro % If \lastskip was zero, perhaps the last item was a penalty, and % perhaps it was >=10000, e.g., a \nobreak. In that case, we want % to re-insert the same penalty (values >10000 are used for various % signals); since we just inserted a non-discardable item, any % following glue (such as a \parskip) would be a breakpoint. For example: % @deffn deffn-whatever % @vindex index-whatever % Description. % would allow a break between the index-whatever whatsit % and the "Description." paragraph. \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi \else % On the other hand, if we had a nonzero \lastskip, % this make-up glue would be preceded by a non-discardable item % (the whatsit from the \write), so we must insert a \nobreak. \nobreak\vskip\whatsitskip \fi \fi} % The index entry written in the file actually looks like % \entry {sortstring}{page}{topic} % or % \entry {sortstring}{page}{topic}{subtopic} % The texindex program reads in these files and writes files % containing these kinds of lines: % \initial {c} % before the first topic whose initial is c % \entry {topic}{pagelist} % for a topic that is used without subtopics % \primary {topic} % for the beginning of a topic that is used with subtopics % \secondary {subtopic}{pagelist} % for each subtopic. % Define the user-accessible indexing commands % @findex, @vindex, @kindex, @cindex. \def\findex {\fnindex} \def\kindex {\kyindex} \def\cindex {\cpindex} \def\vindex {\vrindex} \def\tindex {\tpindex} \def\pindex {\pgindex} \def\cindexsub {\begingroup\obeylines\cindexsub} {\obeylines % \gdef\cindexsub "#1" #2^^M{\endgroup % \dosubind{cp}{#2}{#1}}} % Define the macros used in formatting output of the sorted index material. % @printindex causes a particular index (the ??s file) to get printed. % It does not print any chapter heading (usually an @unnumbered). % \parseargdef\printindex{\begingroup \dobreak \chapheadingskip{10000}% % \smallfonts \rm \tolerance = 9500 \plainfrenchspacing \everypar = {}% don't want the \kern\-parindent from indentation suppression. % % See if the index file exists and is nonempty. % Change catcode of @ here so that if the index file contains % \initial {@} % as its first line, TeX doesn't complain about mismatched braces % (because it thinks @} is a control sequence). \catcode`\@ = 11 \openin 1 \jobname.#1s \ifeof 1 % \enddoublecolumns gets confused if there is no text in the index, % and it loses the chapter title and the aux file entries for the % index. The easiest way to prevent this problem is to make sure % there is some text. \putwordIndexNonexistent \else % % If the index file exists but is empty, then \openin leaves \ifeof % false. We have to make TeX try to read something from the file, so % it can discover if there is anything in it. \read 1 to \temp \ifeof 1 \putwordIndexIsEmpty \else % Index files are almost Texinfo source, but we use \ as the escape % character. It would be better to use @, but that's too big a change % to make right now. \def\indexbackslash{\backslashcurfont}% \catcode`\\ = 0 \escapechar = `\\ \begindoublecolumns \input \jobname.#1s \enddoublecolumns \fi \fi \closein 1 \endgroup} % These macros are used by the sorted index file itself. % Change them to control the appearance of the index. \def\initial#1{{% % Some minor font changes for the special characters. \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt % % Remove any glue we may have, we'll be inserting our own. \removelastskip % % We like breaks before the index initials, so insert a bonus. \nobreak \vskip 0pt plus 3\baselineskip \penalty 0 \vskip 0pt plus -3\baselineskip % % Typeset the initial. Making this add up to a whole number of % baselineskips increases the chance of the dots lining up from column % to column. It still won't often be perfect, because of the stretch % we need before each entry, but it's better. % % No shrink because it confuses \balancecolumns. \vskip 1.67\baselineskip plus .5\baselineskip \leftline{\secbf #1}% % Do our best not to break after the initial. \nobreak \vskip .33\baselineskip plus .1\baselineskip }} % \entry typesets a paragraph consisting of the text (#1), dot leaders, and % then page number (#2) flushed to the right margin. It is used for index % and table of contents entries. The paragraph is indented by \leftskip. % % A straightforward implementation would start like this: % \def\entry#1#2{... % But this freezes the catcodes in the argument, and can cause problems to % @code, which sets - active. This problem was fixed by a kludge--- % ``-'' was active throughout whole index, but this isn't really right. % The right solution is to prevent \entry from swallowing the whole text. % --kasal, 21nov03 \def\entry{% \begingroup % % Start a new paragraph if necessary, so our assignments below can't % affect previous text. \par % % Do not fill out the last line with white space. \parfillskip = 0in % % No extra space above this paragraph. \parskip = 0in % % Do not prefer a separate line ending with a hyphen to fewer lines. \finalhyphendemerits = 0 % % \hangindent is only relevant when the entry text and page number % don't both fit on one line. In that case, bob suggests starting the % dots pretty far over on the line. Unfortunately, a large % indentation looks wrong when the entry text itself is broken across % lines. So we use a small indentation and put up with long leaders. % % \hangafter is reset to 1 (which is the value we want) at the start % of each paragraph, so we need not do anything with that. \hangindent = 2em % % When the entry text needs to be broken, just fill out the first line % with blank space. \rightskip = 0pt plus1fil % % A bit of stretch before each entry for the benefit of balancing % columns. \vskip 0pt plus1pt % % When reading the text of entry, convert explicit line breaks % from @* into spaces. The user might give these in long section % titles, for instance. \def\*{\unskip\space\ignorespaces}% \def\entrybreak{\hfil\break}% % % Swallow the left brace of the text (first parameter): \afterassignment\doentry \let\temp = } \def\entrybreak{\unskip\space\ignorespaces}% \def\doentry{% \bgroup % Instead of the swallowed brace. \noindent \aftergroup\finishentry % And now comes the text of the entry. } \def\finishentry#1{% % #1 is the page number. % % The following is kludged to not output a line of dots in the index if % there are no page numbers. The next person who breaks this will be % cursed by a Unix daemon. \setbox\boxA = \hbox{#1}% \ifdim\wd\boxA = 0pt \ % \else % % If we must, put the page number on a line of its own, and fill out % this line with blank space. (The \hfil is overwhelmed with the % fill leaders glue in \indexdotfill if the page number does fit.) \hfil\penalty50 \null\nobreak\indexdotfill % Have leaders before the page number. % % The `\ ' here is removed by the implicit \unskip that TeX does as % part of (the primitive) \par. Without it, a spurious underfull % \hbox ensues. \ifpdf \pdfgettoks#1.% \ \the\toksA \else \ #1% \fi \fi \par \endgroup } % Like plain.tex's \dotfill, except uses up at least 1 em. \def\indexdotfill{\cleaders \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill} \def\primary #1{\line{#1\hfil}} \newskip\secondaryindent \secondaryindent=0.5cm \def\secondary#1#2{{% \parfillskip=0in \parskip=0in \hangindent=1in \hangafter=1 \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill \ifpdf \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. \else #2 \fi \par }} % Define two-column mode, which we use to typeset indexes. % Adapted from the TeXbook, page 416, which is to say, % the manmac.tex format used to print the TeXbook itself. \catcode`\@=11 \newbox\partialpage \newdimen\doublecolumnhsize \def\begindoublecolumns{\begingroup % ended by \enddoublecolumns % Grab any single-column material above us. \output = {% % % Here is a possibility not foreseen in manmac: if we accumulate a % whole lot of material, we might end up calling this \output % routine twice in a row (see the doublecol-lose test, which is % essentially a couple of indexes with @setchapternewpage off). In % that case we just ship out what is in \partialpage with the normal % output routine. Generally, \partialpage will be empty when this % runs and this will be a no-op. See the indexspread.tex test case. \ifvoid\partialpage \else \onepageout{\pagecontents\partialpage}% \fi % \global\setbox\partialpage = \vbox{% % Unvbox the main output page. \unvbox\PAGE \kern-\topskip \kern\baselineskip }% }% \eject % run that output routine to set \partialpage % % Use the double-column output routine for subsequent pages. \output = {\doublecolumnout}% % % Change the page size parameters. We could do this once outside this % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 % format, but then we repeat the same computation. Repeating a couple % of assignments once per index is clearly meaningless for the % execution time, so we may as well do it in one place. % % First we halve the line length, less a little for the gutter between % the columns. We compute the gutter based on the line length, so it % changes automatically with the paper format. The magic constant % below is chosen so that the gutter has the same value (well, +-<1pt) % as it did when we hard-coded it. % % We put the result in a separate register, \doublecolumhsize, so we % can restore it in \pagesofar, after \hsize itself has (potentially) % been clobbered. % \doublecolumnhsize = \hsize \advance\doublecolumnhsize by -.04154\hsize \divide\doublecolumnhsize by 2 \hsize = \doublecolumnhsize % % Double the \vsize as well. (We don't need a separate register here, % since nobody clobbers \vsize.) \vsize = 2\vsize } % The double-column output routine for all double-column pages except % the last. % \def\doublecolumnout{% \splittopskip=\topskip \splitmaxdepth=\maxdepth % Get the available space for the double columns -- the normal % (undoubled) page height minus any material left over from the % previous page. \dimen@ = \vsize \divide\dimen@ by 2 \advance\dimen@ by -\ht\partialpage % % box0 will be the left-hand column, box2 the right. \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ \onepageout\pagesofar \unvbox255 \penalty\outputpenalty } % % Re-output the contents of the output page -- any previous material, % followed by the two boxes we just split, in box0 and box2. \def\pagesofar{% \unvbox\partialpage % \hsize = \doublecolumnhsize \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}% } % % All done with double columns. \def\enddoublecolumns{% % The following penalty ensures that the page builder is exercised % _before_ we change the output routine. This is necessary in the % following situation: % % The last section of the index consists only of a single entry. % Before this section, \pagetotal is less than \pagegoal, so no % break occurs before the last section starts. However, the last % section, consisting of \initial and the single \entry, does not % fit on the page and has to be broken off. Without the following % penalty the page builder will not be exercised until \eject % below, and by that time we'll already have changed the output % routine to the \balancecolumns version, so the next-to-last % double-column page will be processed with \balancecolumns, which % is wrong: The two columns will go to the main vertical list, with % the broken-off section in the recent contributions. As soon as % the output routine finishes, TeX starts reconsidering the page % break. The two columns and the broken-off section both fit on the % page, because the two columns now take up only half of the page % goal. When TeX sees \eject from below which follows the final % section, it invokes the new output routine that we've set after % \balancecolumns below; \onepageout will try to fit the two columns % and the final section into the vbox of \pageheight (see % \pagebody), causing an overfull box. % % Note that glue won't work here, because glue does not exercise the % page builder, unlike penalties (see The TeXbook, pp. 280-281). \penalty0 % \output = {% % Split the last of the double-column material. Leave it on the % current page, no automatic page break. \balancecolumns % % If we end up splitting too much material for the current page, % though, there will be another page break right after this \output % invocation ends. Having called \balancecolumns once, we do not % want to call it again. Therefore, reset \output to its normal % definition right away. (We hope \balancecolumns will never be % called on to balance too much material, but if it is, this makes % the output somewhat more palatable.) \global\output = {\onepageout{\pagecontents\PAGE}}% }% \eject \endgroup % started in \begindoublecolumns % % \pagegoal was set to the doubled \vsize above, since we restarted % the current page. We're now back to normal single-column % typesetting, so reset \pagegoal to the normal \vsize (after the % \endgroup where \vsize got restored). \pagegoal = \vsize } % % Called at the end of the double column material. \def\balancecolumns{% \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120. \dimen@ = \ht0 \advance\dimen@ by \topskip \advance\dimen@ by-\baselineskip \divide\dimen@ by 2 % target to split to %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}% \splittopskip = \topskip % Loop until we get a decent breakpoint. {% \vbadness = 10000 \loop \global\setbox3 = \copy0 \global\setbox1 = \vsplit3 to \dimen@ \ifdim\ht3>\dimen@ \global\advance\dimen@ by 1pt \repeat }% %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}% \setbox0=\vbox to\dimen@{\unvbox1}% \setbox2=\vbox to\dimen@{\unvbox3}% % \pagesofar } \catcode`\@ = \other \message{sectioning,} % Chapters, sections, etc. % Let's start with @part. \outer\parseargdef\part{\partzzz{#1}} \def\partzzz#1{% \chapoddpage \null \vskip.3\vsize % move it down on the page a bit \begingroup \noindent \titlefonts\rmisbold #1\par % the text \let\lastnode=\empty % no node to associate with \writetocentry{part}{#1}{}% but put it in the toc \headingsoff % no headline or footline on the part page \chapoddpage \endgroup } % \unnumberedno is an oxymoron. But we count the unnumbered % sections so that we can refer to them unambiguously in the pdf % outlines by their "section number". We avoid collisions with chapter % numbers by starting them at 10000. (If a document ever has 10000 % chapters, we're in trouble anyway, I'm sure.) \newcount\unnumberedno \unnumberedno = 10000 \newcount\chapno \newcount\secno \secno=0 \newcount\subsecno \subsecno=0 \newcount\subsubsecno \subsubsecno=0 % This counter is funny since it counts through charcodes of letters A, B, ... \newcount\appendixno \appendixno = `\@ % % \def\appendixletter{\char\the\appendixno} % We do the following ugly conditional instead of the above simple % construct for the sake of pdftex, which needs the actual % letter in the expansion, not just typeset. % \def\appendixletter{% \ifnum\appendixno=`A A% \else\ifnum\appendixno=`B B% \else\ifnum\appendixno=`C C% \else\ifnum\appendixno=`D D% \else\ifnum\appendixno=`E E% \else\ifnum\appendixno=`F F% \else\ifnum\appendixno=`G G% \else\ifnum\appendixno=`H H% \else\ifnum\appendixno=`I I% \else\ifnum\appendixno=`J J% \else\ifnum\appendixno=`K K% \else\ifnum\appendixno=`L L% \else\ifnum\appendixno=`M M% \else\ifnum\appendixno=`N N% \else\ifnum\appendixno=`O O% \else\ifnum\appendixno=`P P% \else\ifnum\appendixno=`Q Q% \else\ifnum\appendixno=`R R% \else\ifnum\appendixno=`S S% \else\ifnum\appendixno=`T T% \else\ifnum\appendixno=`U U% \else\ifnum\appendixno=`V V% \else\ifnum\appendixno=`W W% \else\ifnum\appendixno=`X X% \else\ifnum\appendixno=`Y Y% \else\ifnum\appendixno=`Z Z% % The \the is necessary, despite appearances, because \appendixletter is % expanded while writing the .toc file. \char\appendixno is not % expandable, thus it is written literally, thus all appendixes come out % with the same letter (or @) in the toc without it. \else\char\the\appendixno \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} % Each @chapter defines these (using marks) as the number+name, number % and name of the chapter. Page headings and footings can use % these. @section does likewise. \def\thischapter{} \def\thischapternum{} \def\thischaptername{} \def\thissection{} \def\thissectionnum{} \def\thissectionname{} \newcount\absseclevel % used to calculate proper heading level \newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count % @raisesections: treat @section as chapter, @subsection as section, etc. \def\raisesections{\global\advance\secbase by -1} \let\up=\raisesections % original BFox name % @lowersections: treat @chapter as section, @section as subsection, etc. \def\lowersections{\global\advance\secbase by 1} \let\down=\lowersections % original BFox name % we only have subsub. \chardef\maxseclevel = 3 % % A numbered section within an unnumbered changes to unnumbered too. % To achieve this, remember the "biggest" unnum. sec. we are currently in: \chardef\unnlevel = \maxseclevel % % Trace whether the current chapter is an appendix or not: % \chapheadtype is "N" or "A", unnumbered chapters are ignored. \def\chapheadtype{N} % Choose a heading macro % #1 is heading type % #2 is heading level % #3 is text for heading \def\genhead#1#2#3{% % Compute the abs. sec. level: \absseclevel=#2 \advance\absseclevel by \secbase % Make sure \absseclevel doesn't fall outside the range: \ifnum \absseclevel < 0 \absseclevel = 0 \else \ifnum \absseclevel > 3 \absseclevel = 3 \fi \fi % The heading type: \def\headtype{#1}% \if \headtype U% \ifnum \absseclevel < \unnlevel \chardef\unnlevel = \absseclevel \fi \else % Check for appendix sections: \ifnum \absseclevel = 0 \edef\chapheadtype{\headtype}% \else \if \headtype A\if \chapheadtype N% \errmessage{@appendix... within a non-appendix chapter}% \fi\fi \fi % Check for numbered within unnumbered: \ifnum \absseclevel > \unnlevel \def\headtype{U}% \else \chardef\unnlevel = 3 \fi \fi % Now print the heading: \if \headtype U% \ifcase\absseclevel \unnumberedzzz{#3}% \or \unnumberedseczzz{#3}% \or \unnumberedsubseczzz{#3}% \or \unnumberedsubsubseczzz{#3}% \fi \else \if \headtype A% \ifcase\absseclevel \appendixzzz{#3}% \or \appendixsectionzzz{#3}% \or \appendixsubseczzz{#3}% \or \appendixsubsubseczzz{#3}% \fi \else \ifcase\absseclevel \chapterzzz{#3}% \or \seczzz{#3}% \or \numberedsubseczzz{#3}% \or \numberedsubsubseczzz{#3}% \fi \fi \fi \suppressfirstparagraphindent } % an interface: \def\numhead{\genhead N} \def\apphead{\genhead A} \def\unnmhead{\genhead U} % @chapter, @appendix, @unnumbered. Increment top-level counter, reset % all lower-level sectioning counters to zero. % % Also set \chaplevelprefix, which we prepend to @float sequence numbers % (e.g., figures), q.v. By default (before any chapter), that is empty. \let\chaplevelprefix = \empty % \outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz \def\chapterzzz#1{% % section resetting is \global in case the chapter is in a group, such % as an @include file. \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 \global\advance\chapno by 1 % % Used for \float. \gdef\chaplevelprefix{\the\chapno.}% \resetallfloatnos % % \putwordChapter can contain complex things in translations. \toks0=\expandafter{\putwordChapter}% \message{\the\toks0 \space \the\chapno}% % % Write the actual heading. \chapmacro{#1}{Ynumbered}{\the\chapno}% % % So @section and the like are numbered underneath this chapter. \global\let\section = \numberedsec \global\let\subsection = \numberedsubsec \global\let\subsubsection = \numberedsubsubsec } \outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz % \def\appendixzzz#1{% \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 \global\advance\appendixno by 1 \gdef\chaplevelprefix{\appendixletter.}% \resetallfloatnos % % \putwordAppendix can contain complex things in translations. \toks0=\expandafter{\putwordAppendix}% \message{\the\toks0 \space \appendixletter}% % \chapmacro{#1}{Yappendix}{\appendixletter}% % \global\let\section = \appendixsec \global\let\subsection = \appendixsubsec \global\let\subsubsection = \appendixsubsubsec } % normally unnmhead0 calls unnumberedzzz: \outer\parseargdef\unnumbered{\unnmhead0{#1}} \def\unnumberedzzz#1{% \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 \global\advance\unnumberedno by 1 % % Since an unnumbered has no number, no prefix for figures. \global\let\chaplevelprefix = \empty \resetallfloatnos % % This used to be simply \message{#1}, but TeX fully expands the % argument to \message. Therefore, if #1 contained @-commands, TeX % expanded them. For example, in `@unnumbered The @cite{Book}', TeX % expanded @cite (which turns out to cause errors because \cite is meant % to be executed, not expanded). % % Anyway, we don't want the fully-expanded definition of @cite to appear % as a result of the \message, we just want `@cite' itself. We use % \the to achieve this: TeX expands \the only once, % simply yielding the contents of . (We also do this for % the toc entries.) \toks0 = {#1}% \message{(\the\toks0)}% % \chapmacro{#1}{Ynothing}{\the\unnumberedno}% % \global\let\section = \unnumberedsec \global\let\subsection = \unnumberedsubsec \global\let\subsubsection = \unnumberedsubsubsec } % @centerchap is like @unnumbered, but the heading is centered. \outer\parseargdef\centerchap{% % Well, we could do the following in a group, but that would break % an assumption that \chapmacro is called at the outermost level. % Thus we are safer this way: --kasal, 24feb04 \let\centerparametersmaybe = \centerparameters \unnmhead0{#1}% \let\centerparametersmaybe = \relax } % @top is like @unnumbered. \let\top\unnumbered % Sections. % \outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz \def\seczzz#1{% \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}% } % normally calls appendixsectionzzz: \outer\parseargdef\appendixsection{\apphead1{#1}} \def\appendixsectionzzz#1{% \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}% } \let\appendixsec\appendixsection % normally calls unnumberedseczzz: \outer\parseargdef\unnumberedsec{\unnmhead1{#1}} \def\unnumberedseczzz#1{% \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}% } % Subsections. % % normally calls numberedsubseczzz: \outer\parseargdef\numberedsubsec{\numhead2{#1}} \def\numberedsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}% } % normally calls appendixsubseczzz: \outer\parseargdef\appendixsubsec{\apphead2{#1}} \def\appendixsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Yappendix}% {\appendixletter.\the\secno.\the\subsecno}% } % normally calls unnumberedsubseczzz: \outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} \def\unnumberedsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Ynothing}% {\the\unnumberedno.\the\secno.\the\subsecno}% } % Subsubsections. % % normally numberedsubsubseczzz: \outer\parseargdef\numberedsubsubsec{\numhead3{#1}} \def\numberedsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Ynumbered}% {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}% } % normally appendixsubsubseczzz: \outer\parseargdef\appendixsubsubsec{\apphead3{#1}} \def\appendixsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Yappendix}% {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}% } % normally unnumberedsubsubseczzz: \outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} \def\unnumberedsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Ynothing}% {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}% } % These macros control what the section commands do, according % to what kind of chapter we are in (ordinary, appendix, or unnumbered). % Define them by default for a numbered chapter. \let\section = \numberedsec \let\subsection = \numberedsubsec \let\subsubsection = \numberedsubsubsec % Define @majorheading, @heading and @subheading % NOTE on use of \vbox for chapter headings, section headings, and such: % 1) We use \vbox rather than the earlier \line to permit % overlong headings to fold. % 2) \hyphenpenalty is set to 10000 because hyphenation in a % heading is obnoxious; this forbids it. % 3) Likewise, headings look best if no \parindent is used, and % if justification is not attempted. Hence \raggedright. \def\majorheading{% {\advance\chapheadingskip by 10pt \chapbreak }% \parsearg\chapheadingzzz } \def\chapheading{\chapbreak \parsearg\chapheadingzzz} \def\chapheadingzzz#1{% {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 \parindent=0pt\ptexraggedright \rmisbold #1\hfill}}% \bigskip \par\penalty 200\relax \suppressfirstparagraphindent } % @heading, @subheading, @subsubheading. \parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{} \suppressfirstparagraphindent} \parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{} \suppressfirstparagraphindent} \parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{} \suppressfirstparagraphindent} % These macros generate a chapter, section, etc. heading only % (including whitespace, linebreaking, etc. around it), % given all the information in convenient, parsed form. % Args are the skip and penalty (usually negative) \def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi} % Parameter controlling skip before chapter headings (if needed) \newskip\chapheadingskip % Define plain chapter starts, and page on/off switching for it. \def\chapbreak{\dobreak \chapheadingskip {-4000}} \def\chappager{\par\vfill\supereject} % Because \domark is called before \chapoddpage, the filler page will % get the headings for the next chapter, which is wrong. But we don't % care -- we just disable all headings on the filler page. \def\chapoddpage{% \chappager \ifodd\pageno \else \begingroup \headingsoff \null \chappager \endgroup \fi } \def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname} \def\CHAPPAGoff{% \global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chapbreak \global\let\pagealignmacro=\chappager} \def\CHAPPAGon{% \global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chappager \global\let\pagealignmacro=\chappager \global\def\HEADINGSon{\HEADINGSsingle}} \def\CHAPPAGodd{% \global\let\contentsalignmacro = \chapoddpage \global\let\pchapsepmacro=\chapoddpage \global\let\pagealignmacro=\chapoddpage \global\def\HEADINGSon{\HEADINGSdouble}} \CHAPPAGon % Chapter opening. % % #1 is the text, #2 is the section type (Ynumbered, Ynothing, % Yappendix, Yomitfromtoc), #3 the chapter number. % % To test against our argument. \def\Ynothingkeyword{Ynothing} \def\Yomitfromtockeyword{Yomitfromtoc} \def\Yappendixkeyword{Yappendix} % \def\chapmacro#1#2#3{% % Insert the first mark before the heading break (see notes for \domark). \let\prevchapterdefs=\lastchapterdefs \let\prevsectiondefs=\lastsectiondefs \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}% \gdef\thissection{}}% % \def\temptype{#2}% \ifx\temptype\Ynothingkeyword \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% \gdef\thischapter{\thischaptername}}% \else\ifx\temptype\Yomitfromtockeyword \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% \gdef\thischapter{}}% \else\ifx\temptype\Yappendixkeyword \toks0={#1}% \xdef\lastchapterdefs{% \gdef\noexpand\thischaptername{\the\toks0}% \gdef\noexpand\thischapternum{\appendixletter}% % \noexpand\putwordAppendix avoids expanding indigestible % commands in some of the translations. \gdef\noexpand\thischapter{\noexpand\putwordAppendix{} \noexpand\thischapternum: \noexpand\thischaptername}% }% \else \toks0={#1}% \xdef\lastchapterdefs{% \gdef\noexpand\thischaptername{\the\toks0}% \gdef\noexpand\thischapternum{\the\chapno}% % \noexpand\putwordChapter avoids expanding indigestible % commands in some of the translations. \gdef\noexpand\thischapter{\noexpand\putwordChapter{} \noexpand\thischapternum: \noexpand\thischaptername}% }% \fi\fi\fi % % Output the mark. Pass it through \safewhatsit, to take care of % the preceding space. \safewhatsit\domark % % Insert the chapter heading break. \pchapsepmacro % % Now the second mark, after the heading break. No break points % between here and the heading. \let\prevchapterdefs=\lastchapterdefs \let\prevsectiondefs=\lastsectiondefs \domark % {% \chapfonts \rmisbold % % Have to define \lastsection before calling \donoderef, because the % xref code eventually uses it. On the other hand, it has to be called % after \pchapsepmacro, or the headline will change too soon. \gdef\lastsection{#1}% % % Only insert the separating space if we have a chapter/appendix % number, and don't print the unnumbered ``number''. \ifx\temptype\Ynothingkeyword \setbox0 = \hbox{}% \def\toctype{unnchap}% \else\ifx\temptype\Yomitfromtockeyword \setbox0 = \hbox{}% contents like unnumbered, but no toc entry \def\toctype{omit}% \else\ifx\temptype\Yappendixkeyword \setbox0 = \hbox{\putwordAppendix{} #3\enspace}% \def\toctype{app}% \else \setbox0 = \hbox{#3\enspace}% \def\toctype{numchap}% \fi\fi\fi % % Write the toc entry for this chapter. Must come before the % \donoderef, because we include the current node name in the toc % entry, and \donoderef resets it to empty. \writetocentry{\toctype}{#1}{#3}% % % For pdftex, we have to write out the node definition (aka, make % the pdfdest) after any page break, but before the actual text has % been typeset. If the destination for the pdf outline is after the % text, then jumping from the outline may wind up with the text not % being visible, for instance under high magnification. \donoderef{#2}% % % Typeset the actual heading. \nobreak % Avoid page breaks at the interline glue. \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright \hangindent=\wd0 \centerparametersmaybe \unhbox0 #1\par}% }% \nobreak\bigskip % no page break after a chapter title \nobreak } % @centerchap -- centered and unnumbered. \let\centerparametersmaybe = \relax \def\centerparameters{% \advance\rightskip by 3\rightskip \leftskip = \rightskip \parfillskip = 0pt } % I don't think this chapter style is supported any more, so I'm not % updating it with the new noderef stuff. We'll see. --karl, 11aug03. % \def\setchapterstyle #1 {\csname CHAPF#1\endcsname} % \def\unnchfopen #1{% \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 \parindent=0pt\ptexraggedright \rmisbold #1\hfill}}\bigskip \par\nobreak } \def\chfopen #1#2{\chapoddpage {\chapfonts \vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}% \par\penalty 5000 % } \def\centerchfopen #1{% \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 \parindent=0pt \hfill {\rmisbold #1}\hfill}}\bigskip \par\nobreak } \def\CHAPFopen{% \global\let\chapmacro=\chfopen \global\let\centerchapmacro=\centerchfopen} % Section titles. These macros combine the section number parts and % call the generic \sectionheading to do the printing. % \newskip\secheadingskip \def\secheadingbreak{\dobreak \secheadingskip{-1000}} % Subsection titles. \newskip\subsecheadingskip \def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}} % Subsubsection titles. \def\subsubsecheadingskip{\subsecheadingskip} \def\subsubsecheadingbreak{\subsecheadingbreak} % Print any size, any type, section title. % % #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is % the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the % section number. % \def\seckeyword{sec} % \def\sectionheading#1#2#3#4{% {% \checkenv{}% should not be in an environment. % % Switch to the right set of fonts. \csname #2fonts\endcsname \rmisbold % \def\sectionlevel{#2}% \def\temptype{#3}% % % Insert first mark before the heading break (see notes for \domark). \let\prevsectiondefs=\lastsectiondefs \ifx\temptype\Ynothingkeyword \ifx\sectionlevel\seckeyword \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}% \gdef\thissection{\thissectionname}}% \fi \else\ifx\temptype\Yomitfromtockeyword % Don't redefine \thissection. \else\ifx\temptype\Yappendixkeyword \ifx\sectionlevel\seckeyword \toks0={#1}% \xdef\lastsectiondefs{% \gdef\noexpand\thissectionname{\the\toks0}% \gdef\noexpand\thissectionnum{#4}% % \noexpand\putwordSection avoids expanding indigestible % commands in some of the translations. \gdef\noexpand\thissection{\noexpand\putwordSection{} \noexpand\thissectionnum: \noexpand\thissectionname}% }% \fi \else \ifx\sectionlevel\seckeyword \toks0={#1}% \xdef\lastsectiondefs{% \gdef\noexpand\thissectionname{\the\toks0}% \gdef\noexpand\thissectionnum{#4}% % \noexpand\putwordSection avoids expanding indigestible % commands in some of the translations. \gdef\noexpand\thissection{\noexpand\putwordSection{} \noexpand\thissectionnum: \noexpand\thissectionname}% }% \fi \fi\fi\fi % % Go into vertical mode. Usually we'll already be there, but we % don't want the following whatsit to end up in a preceding paragraph % if the document didn't happen to have a blank line. \par % % Output the mark. Pass it through \safewhatsit, to take care of % the preceding space. \safewhatsit\domark % % Insert space above the heading. \csname #2headingbreak\endcsname % % Now the second mark, after the heading break. No break points % between here and the heading. \let\prevsectiondefs=\lastsectiondefs \domark % % Only insert the space after the number if we have a section number. \ifx\temptype\Ynothingkeyword \setbox0 = \hbox{}% \def\toctype{unn}% \gdef\lastsection{#1}% \else\ifx\temptype\Yomitfromtockeyword % for @headings -- no section number, don't include in toc, % and don't redefine \lastsection. \setbox0 = \hbox{}% \def\toctype{omit}% \let\sectionlevel=\empty \else\ifx\temptype\Yappendixkeyword \setbox0 = \hbox{#4\enspace}% \def\toctype{app}% \gdef\lastsection{#1}% \else \setbox0 = \hbox{#4\enspace}% \def\toctype{num}% \gdef\lastsection{#1}% \fi\fi\fi % % Write the toc entry (before \donoderef). See comments in \chapmacro. \writetocentry{\toctype\sectionlevel}{#1}{#4}% % % Write the node reference (= pdf destination for pdftex). % Again, see comments in \chapmacro. \donoderef{#3}% % % Interline glue will be inserted when the vbox is completed. % That glue will be a valid breakpoint for the page, since it'll be % preceded by a whatsit (usually from the \donoderef, or from the % \writetocentry if there was no node). We don't want to allow that % break, since then the whatsits could end up on page n while the % section is on page n+1, thus toc/etc. are wrong. Debian bug 276000. \nobreak % % Output the actual section heading. \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright \hangindent=\wd0 % zero if no section number \unhbox0 #1}% }% % Add extra space after the heading -- half of whatever came above it. % Don't allow stretch, though. \kern .5 \csname #2headingskip\endcsname % % Do not let the kern be a potential breakpoint, as it would be if it % was followed by glue. \nobreak % % We'll almost certainly start a paragraph next, so don't let that % glue accumulate. (Not a breakpoint because it's preceded by a % discardable item.) However, when a paragraph is not started next % (\startdefun, \cartouche, \center, etc.), this needs to be wiped out % or the negative glue will cause weirdly wrong output, typically % obscuring the section heading with something else. \vskip-\parskip % % This is so the last item on the main vertical list is a known % \penalty > 10000, so \startdefun, etc., can recognize the situation % and do the needful. \penalty 10001 } \message{toc,} % Table of contents. \newwrite\tocfile % Write an entry to the toc file, opening it if necessary. % Called from @chapter, etc. % % Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno} % We append the current node name (if any) and page number as additional % arguments for the \{chap,sec,...}entry macros which will eventually % read this. The node name is used in the pdf outlines as the % destination to jump to. % % We open the .toc file for writing here instead of at @setfilename (or % any other fixed time) so that @contents can be anywhere in the document. % But if #1 is `omit', then we don't do anything. This is used for the % table of contents chapter openings themselves. % \newif\iftocfileopened \def\omitkeyword{omit}% % \def\writetocentry#1#2#3{% \edef\writetoctype{#1}% \ifx\writetoctype\omitkeyword \else \iftocfileopened\else \immediate\openout\tocfile = \jobname.toc \global\tocfileopenedtrue \fi % \iflinks {\atdummies \edef\temp{% \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}% \temp }% \fi \fi % % Tell \shipout to create a pdf destination on each page, if we're % writing pdf. These are used in the table of contents. We can't % just write one on every page because the title pages are numbered % 1 and 2 (the page numbers aren't printed), and so are the first % two pages of the document. Thus, we'd have two destinations named % `1', and two named `2'. \ifpdf \global\pdfmakepagedesttrue \fi } % These characters do not print properly in the Computer Modern roman % fonts, so we must take special care. This is more or less redundant % with the Texinfo input format setup at the end of this file. % \def\activecatcodes{% \catcode`\"=\active \catcode`\$=\active \catcode`\<=\active \catcode`\>=\active \catcode`\\=\active \catcode`\^=\active \catcode`\_=\active \catcode`\|=\active \catcode`\~=\active } % Read the toc file, which is essentially Texinfo input. \def\readtocfile{% \setupdatafile \activecatcodes \input \tocreadfilename } \newskip\contentsrightmargin \contentsrightmargin=1in \newcount\savepageno \newcount\lastnegativepageno \lastnegativepageno = -1 % Prepare to read what we've written to \tocfile. % \def\startcontents#1{% % If @setchapternewpage on, and @headings double, the contents should % start on an odd page, unlike chapters. Thus, we maintain % \contentsalignmacro in parallel with \pagealignmacro. % From: Torbjorn Granlund \contentsalignmacro \immediate\closeout\tocfile % % Don't need to put `Contents' or `Short Contents' in the headline. % It is abundantly clear what they are. \chapmacro{#1}{Yomitfromtoc}{}% % \savepageno = \pageno \begingroup % Set up to handle contents files properly. \raggedbottom % Worry more about breakpoints than the bottom. \advance\hsize by -\contentsrightmargin % Don't use the full line length. % % Roman numerals for page numbers. \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi } % redefined for the two-volume lispref. We always output on % \jobname.toc even if this is redefined. % \def\tocreadfilename{\jobname.toc} % Normal (long) toc. % \def\contents{% \startcontents{\putwordTOC}% \openin 1 \tocreadfilename\space \ifeof 1 \else \readtocfile \fi \vfill \eject \contentsalignmacro % in case @setchapternewpage odd is in effect \ifeof 1 \else \pdfmakeoutlines \fi \closein 1 \endgroup \lastnegativepageno = \pageno \global\pageno = \savepageno } % And just the chapters. \def\summarycontents{% \startcontents{\putwordShortTOC}% % \let\partentry = \shortpartentry \let\numchapentry = \shortchapentry \let\appentry = \shortchapentry \let\unnchapentry = \shortunnchapentry % We want a true roman here for the page numbers. \secfonts \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl \let\tt=\shortconttt \rm \hyphenpenalty = 10000 \advance\baselineskip by 1pt % Open it up a little. \def\numsecentry##1##2##3##4{} \let\appsecentry = \numsecentry \let\unnsecentry = \numsecentry \let\numsubsecentry = \numsecentry \let\appsubsecentry = \numsecentry \let\unnsubsecentry = \numsecentry \let\numsubsubsecentry = \numsecentry \let\appsubsubsecentry = \numsecentry \let\unnsubsubsecentry = \numsecentry \openin 1 \tocreadfilename\space \ifeof 1 \else \readtocfile \fi \closein 1 \vfill \eject \contentsalignmacro % in case @setchapternewpage odd is in effect \endgroup \lastnegativepageno = \pageno \global\pageno = \savepageno } \let\shortcontents = \summarycontents % Typeset the label for a chapter or appendix for the short contents. % The arg is, e.g., `A' for an appendix, or `3' for a chapter. % \def\shortchaplabel#1{% % This space should be enough, since a single number is .5em, and the % widest letter (M) is 1em, at least in the Computer Modern fonts. % But use \hss just in case. % (This space doesn't include the extra space that gets added after % the label; that gets put in by \shortchapentry above.) % % We'd like to right-justify chapter numbers, but that looks strange % with appendix letters. And right-justifying numbers and % left-justifying letters looks strange when there is less than 10 % chapters. Have to read the whole toc once to know how many chapters % there are before deciding ... \hbox to 1em{#1\hss}% } % These macros generate individual entries in the table of contents. % The first argument is the chapter or section name. % The last argument is the page number. % The arguments in between are the chapter number, section number, ... % Parts, in the main contents. Replace the part number, which doesn't % exist, with an empty box. Let's hope all the numbers have the same width. % Also ignore the page number, which is conventionally not printed. \def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}} \def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}} % % Parts, in the short toc. \def\shortpartentry#1#2#3#4{% \penalty-300 \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip \shortchapentry{{\bf #1}}{\numeralbox}{}{}% } % Chapters, in the main contents. \def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}} % % Chapters, in the short toc. % See comments in \dochapentry re vbox and related settings. \def\shortchapentry#1#2#3#4{% \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}% } % Appendices, in the main contents. % Need the word Appendix, and a fixed-size box. % \def\appendixbox#1{% % We use M since it's probably the widest letter. \setbox0 = \hbox{\putwordAppendix{} M}% \hbox to \wd0{\putwordAppendix{} #1\hss}} % \def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}} % Unnumbered chapters. \def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}} \def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}} % Sections. \def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}} \let\appsecentry=\numsecentry \def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}} % Subsections. \def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}} \let\appsubsecentry=\numsubsecentry \def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}} % And subsubsections. \def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}} \let\appsubsubsecentry=\numsubsubsecentry \def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}} % This parameter controls the indentation of the various levels. % Same as \defaultparindent. \newdimen\tocindent \tocindent = 15pt % Now for the actual typesetting. In all these, #1 is the text and #2 is the % page number. % % If the toc has to be broken over pages, we want it to be at chapters % if at all possible; hence the \penalty. \def\dochapentry#1#2{% \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip \begingroup \chapentryfonts \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup \nobreak\vskip .25\baselineskip plus.1\baselineskip } \def\dosecentry#1#2{\begingroup \secentryfonts \leftskip=\tocindent \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} \def\dosubsecentry#1#2{\begingroup \subsecentryfonts \leftskip=2\tocindent \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} \def\dosubsubsecentry#1#2{\begingroup \subsubsecentryfonts \leftskip=3\tocindent \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} % We use the same \entry macro as for the index entries. \let\tocentry = \entry % Space between chapter (or whatever) number and the title. \def\labelspace{\hskip1em \relax} \def\dopageno#1{{\rm #1}} \def\doshortpageno#1{{\rm #1}} \def\chapentryfonts{\secfonts \rm} \def\secentryfonts{\textfonts} \def\subsecentryfonts{\textfonts} \def\subsubsecentryfonts{\textfonts} \message{environments,} % @foo ... @end foo. % @tex ... @end tex escapes into raw TeX temporarily. % One exception: @ is still an escape character, so that @end tex works. % But \@ or @@ will get a plain @ character. \envdef\tex{% \setupmarkupstyle{tex}% \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie \catcode `\%=14 \catcode `\+=\other \catcode `\"=\other \catcode `\|=\other \catcode `\<=\other \catcode `\>=\other \catcode`\`=\other \catcode`\'=\other \escapechar=`\\ % % ' is active in math mode (mathcode"8000). So reset it, and all our % other math active characters (just in case), to plain's definitions. \mathactive % \let\b=\ptexb \let\bullet=\ptexbullet \let\c=\ptexc \let\,=\ptexcomma \let\.=\ptexdot \let\dots=\ptexdots \let\equiv=\ptexequiv \let\!=\ptexexclam \let\i=\ptexi \let\indent=\ptexindent \let\noindent=\ptexnoindent \let\{=\ptexlbrace \let\+=\tabalign \let\}=\ptexrbrace \let\/=\ptexslash \let\*=\ptexstar \let\t=\ptext \expandafter \let\csname top\endcsname=\ptextop % outer \let\frenchspacing=\plainfrenchspacing % \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% \def\@{@}% } % There is no need to define \Etex. % Define @lisp ... @end lisp. % @lisp environment forms a group so it can rebind things, % including the definition of @end lisp (which normally is erroneous). % Amount to narrow the margins by for @lisp. \newskip\lispnarrowing \lispnarrowing=0.4in % This is the definition that ^^M gets inside @lisp, @example, and other % such environments. \null is better than a space, since it doesn't % have any width. \def\lisppar{\null\endgraf} % This space is always present above and below environments. \newskip\envskipamount \envskipamount = 0pt % Make spacing and below environment symmetrical. We use \parskip here % to help in doing that, since in @example-like environments \parskip % is reset to zero; thus the \afterenvbreak inserts no space -- but the % start of the next paragraph will insert \parskip. % \def\aboveenvbreak{{% % =10000 instead of <10000 because of a special case in \itemzzz and % \sectionheading, q.v. \ifnum \lastpenalty=10000 \else \advance\envskipamount by \parskip \endgraf \ifdim\lastskip<\envskipamount \removelastskip % it's not a good place to break if the last penalty was \nobreak % or better ... \ifnum\lastpenalty<10000 \penalty-50 \fi \vskip\envskipamount \fi \fi }} \let\afterenvbreak = \aboveenvbreak % \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will % also clear it, so that its embedded environments do the narrowing again. \let\nonarrowing=\relax % @cartouche ... @end cartouche: draw rectangle w/rounded corners around % environment contents. \font\circle=lcircle10 \newdimen\circthick \newdimen\cartouter\newdimen\cartinner \newskip\normbskip\newskip\normpskip\newskip\normlskip \circthick=\fontdimen8\circle % \def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth \def\ctr{{\hskip 6pt\circle\char'010}} \def\cbl{{\circle\char'012\hskip -6pt}} \def\cbr{{\hskip 6pt\circle\char'011}} \def\carttop{\hbox to \cartouter{\hskip\lskip \ctl\leaders\hrule height\circthick\hfil\ctr \hskip\rskip}} \def\cartbot{\hbox to \cartouter{\hskip\lskip \cbl\leaders\hrule height\circthick\hfil\cbr \hskip\rskip}} % \newskip\lskip\newskip\rskip \envdef\cartouche{% \ifhmode\par\fi % can't be in the midst of a paragraph. \startsavinginserts \lskip=\leftskip \rskip=\rightskip \leftskip=0pt\rightskip=0pt % we want these *outside*. \cartinner=\hsize \advance\cartinner by-\lskip \advance\cartinner by-\rskip \cartouter=\hsize \advance\cartouter by 18.4pt % allow for 3pt kerns on either % side, and for 6pt waste from % each corner char, and rule thickness \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip % Flag to tell @lisp, etc., not to narrow margin. \let\nonarrowing = t% % % If this cartouche directly follows a sectioning command, we need the % \parskip glue (backspaced over by default) or the cartouche can % collide with the section heading. \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi % \vbox\bgroup \baselineskip=0pt\parskip=0pt\lineskip=0pt \carttop \hbox\bgroup \hskip\lskip \vrule\kern3pt \vbox\bgroup \kern3pt \hsize=\cartinner \baselineskip=\normbskip \lineskip=\normlskip \parskip=\normpskip \vskip -\parskip \comment % For explanation, see the end of def\group. } \def\Ecartouche{% \ifhmode\par\fi \kern3pt \egroup \kern3pt\vrule \hskip\rskip \egroup \cartbot \egroup \checkinserts } % This macro is called at the beginning of all the @example variants, % inside a group. \newdimen\nonfillparindent \def\nonfillstart{% \aboveenvbreak \hfuzz = 12pt % Don't be fussy \sepspaces % Make spaces be word-separators rather than space tokens. \let\par = \lisppar % don't ignore blank lines \obeylines % each line of input is a line of output \parskip = 0pt % Turn off paragraph indentation but redefine \indent to emulate % the normal \indent. \nonfillparindent=\parindent \parindent = 0pt \let\indent\nonfillindent % \emergencystretch = 0pt % don't try to avoid overfull boxes \ifx\nonarrowing\relax \advance \leftskip by \lispnarrowing \exdentamount=\lispnarrowing \else \let\nonarrowing = \relax \fi \let\exdent=\nofillexdent } \begingroup \obeyspaces % We want to swallow spaces (but not other tokens) after the fake % @indent in our nonfill-environments, where spaces are normally % active and set to @tie, resulting in them not being ignored after % @indent. \gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}% \gdef\nonfillindentcheck{% \ifx\temp % \expandafter\nonfillindentgobble% \else% \leavevmode\nonfillindentbox% \fi% }% \endgroup \def\nonfillindentgobble#1{\nonfillindent} \def\nonfillindentbox{\hbox to \nonfillparindent{\hss}} % If you want all examples etc. small: @set dispenvsize small. % If you want even small examples the full size: @set dispenvsize nosmall. % This affects the following displayed environments: % @example, @display, @format, @lisp % \def\smallword{small} \def\nosmallword{nosmall} \let\SETdispenvsize\relax \def\setnormaldispenv{% \ifx\SETdispenvsize\smallword % end paragraph for sake of leading, in case document has no blank % line. This is redundant with what happens in \aboveenvbreak, but % we need to do it before changing the fonts, and it's inconvenient % to change the fonts afterward. \ifnum \lastpenalty=10000 \else \endgraf \fi \smallexamplefonts \rm \fi } \def\setsmalldispenv{% \ifx\SETdispenvsize\nosmallword \else \ifnum \lastpenalty=10000 \else \endgraf \fi \smallexamplefonts \rm \fi } % We often define two environments, @foo and @smallfoo. % Let's do it in one command. #1 is the env name, #2 the definition. \def\makedispenvdef#1#2{% \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}% \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}% \expandafter\let\csname E#1\endcsname \afterenvbreak \expandafter\let\csname Esmall#1\endcsname \afterenvbreak } % Define two environment synonyms (#1 and #2) for an environment. \def\maketwodispenvdef#1#2#3{% \makedispenvdef{#1}{#3}% \makedispenvdef{#2}{#3}% } % % @lisp: indented, narrowed, typewriter font; % @example: same as @lisp. % % @smallexample and @smalllisp: use smaller fonts. % Originally contributed by Pavel@xerox. % \maketwodispenvdef{lisp}{example}{% \nonfillstart \tt\setupmarkupstyle{example}% \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. \gobble % eat return } % @display/@smalldisplay: same as @lisp except keep current font. % \makedispenvdef{display}{% \nonfillstart \gobble } % @format/@smallformat: same as @display except don't narrow margins. % \makedispenvdef{format}{% \let\nonarrowing = t% \nonfillstart \gobble } % @flushleft: same as @format, but doesn't obey \SETdispenvsize. \envdef\flushleft{% \let\nonarrowing = t% \nonfillstart \gobble } \let\Eflushleft = \afterenvbreak % @flushright. % \envdef\flushright{% \let\nonarrowing = t% \nonfillstart \advance\leftskip by 0pt plus 1fill\relax \gobble } \let\Eflushright = \afterenvbreak % @raggedright does more-or-less normal line breaking but no right % justification. From plain.tex. \envdef\raggedright{% \rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax } \let\Eraggedright\par \envdef\raggedleft{% \parindent=0pt \leftskip0pt plus2em \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt \hbadness=10000 % Last line will usually be underfull, so turn off % badness reporting. } \let\Eraggedleft\par \envdef\raggedcenter{% \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt \hbadness=10000 % Last line will usually be underfull, so turn off % badness reporting. } \let\Eraggedcenter\par % @quotation does normal linebreaking (hence we can't use \nonfillstart) % and narrows the margins. We keep \parskip nonzero in general, since % we're doing normal filling. So, when using \aboveenvbreak and % \afterenvbreak, temporarily make \parskip 0. % \makedispenvdef{quotation}{\quotationstart} % \def\quotationstart{% {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip \parindent=0pt % % @cartouche defines \nonarrowing to inhibit narrowing at next level down. \ifx\nonarrowing\relax \advance\leftskip by \lispnarrowing \advance\rightskip by \lispnarrowing \exdentamount = \lispnarrowing \else \let\nonarrowing = \relax \fi \parsearg\quotationlabel } % We have retained a nonzero parskip for the environment, since we're % doing normal filling. % \def\Equotation{% \par \ifx\quotationauthor\thisisundefined\else % indent a bit. \leftline{\kern 2\leftskip \sl ---\quotationauthor}% \fi {\parskip=0pt \afterenvbreak}% } \def\Esmallquotation{\Equotation} % If we're given an argument, typeset it in bold with a colon after. \def\quotationlabel#1{% \def\temp{#1}% \ifx\temp\empty \else {\bf #1: }% \fi } % LaTeX-like @verbatim...@end verbatim and @verb{...} % If we want to allow any as delimiter, % we need the curly braces so that makeinfo sees the @verb command, eg: % `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org % % [Knuth]: Donald Ervin Knuth, 1996. The TeXbook. % % [Knuth] p.344; only we need to do the other characters Texinfo sets % active too. Otherwise, they get lost as the first character on a % verbatim line. \def\dospecials{% \do\ \do\\\do\{\do\}\do\$\do\&% \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~% \do\<\do\>\do\|\do\@\do+\do\"% % Don't do the quotes -- if we do, @set txicodequoteundirected and % @set txicodequotebacktick will not have effect on @verb and % @verbatim, and ?` and !` ligatures won't get disabled. %\do\`\do\'% } % % [Knuth] p. 380 \def\uncatcodespecials{% \def\do##1{\catcode`##1=\other}\dospecials} % % Setup for the @verb command. % % Eight spaces for a tab \begingroup \catcode`\^^I=\active \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }} \endgroup % \def\setupverb{% \tt % easiest (and conventionally used) font for verbatim \def\par{\leavevmode\endgraf}% \setupmarkupstyle{verb}% \tabeightspaces % Respect line breaks, % print special symbols as themselves, and % make each space count % must do in this order: \obeylines \uncatcodespecials \sepspaces } % Setup for the @verbatim environment % % Real tab expansion. \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount % % We typeset each line of the verbatim in an \hbox, so we can handle % tabs. The \global is in case the verbatim line starts with an accent, % or some other command that starts with a begin-group. Otherwise, the % entire \verbbox would disappear at the corresponding end-group, before % it is typeset. Meanwhile, we can't have nested verbatim commands % (can we?), so the \global won't be overwriting itself. \newbox\verbbox \def\starttabbox{\global\setbox\verbbox=\hbox\bgroup} % \begingroup \catcode`\^^I=\active \gdef\tabexpand{% \catcode`\^^I=\active \def^^I{\leavevmode\egroup \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab \divide\dimen\verbbox by\tabw \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw \advance\dimen\verbbox by\tabw % advance to next multiple of \tabw \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox }% } \endgroup % start the verbatim environment. \def\setupverbatim{% \let\nonarrowing = t% \nonfillstart \tt % easiest (and conventionally used) font for verbatim % The \leavevmode here is for blank lines. Otherwise, we would % never \starttabox and the \egroup would end verbatim mode. \def\par{\leavevmode\egroup\box\verbbox\endgraf}% \tabexpand \setupmarkupstyle{verbatim}% % Respect line breaks, % print special symbols as themselves, and % make each space count. % Must do in this order: \obeylines \uncatcodespecials \sepspaces \everypar{\starttabbox}% } % Do the @verb magic: verbatim text is quoted by unique % delimiter characters. Before first delimiter expect a % right brace, after last delimiter expect closing brace: % % \def\doverb'{'#1'}'{#1} % % [Knuth] p. 382; only eat outer {} \begingroup \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next] \endgroup % \def\verb{\begingroup\setupverb\doverb} % % % Do the @verbatim magic: define the macro \doverbatim so that % the (first) argument ends when '@end verbatim' is reached, ie: % % \def\doverbatim#1@end verbatim{#1} % % For Texinfo it's a lot easier than for LaTeX, % because texinfo's \verbatim doesn't stop at '\end{verbatim}': % we need not redefine '\', '{' and '}'. % % Inspired by LaTeX's verbatim command set [latex.ltx] % \begingroup \catcode`\ =\active \obeylines % % ignore everything up to the first ^^M, that's the newline at the end % of the @verbatim input line itself. Otherwise we get an extra blank % line in the output. \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}% % We really want {...\end verbatim} in the body of the macro, but % without the active space; thus we have to use \xdef and \gobble. \endgroup % \envdef\verbatim{% \setupverbatim\doverbatim } \let\Everbatim = \afterenvbreak % @verbatiminclude FILE - insert text of file in verbatim environment. % \def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude} % \def\doverbatiminclude#1{% {% \makevalueexpandable \setupverbatim \indexnofonts % Allow `@@' and other weird things in file names. \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}% \input #1 \afterenvbreak }% } % @copying ... @end copying. % Save the text away for @insertcopying later. % % We save the uninterpreted tokens, rather than creating a box. % Saving the text in a box would be much easier, but then all the % typesetting commands (@smallbook, font changes, etc.) have to be done % beforehand -- and a) we want @copying to be done first in the source % file; b) letting users define the frontmatter in as flexible order as % possible is very desirable. % \def\copying{\checkenv{}\begingroup\scanargctxt\docopying} \def\docopying#1@end copying{\endgroup\def\copyingtext{#1}} % \def\insertcopying{% \begingroup \parindent = 0pt % paragraph indentation looks wrong on title page \scanexp\copyingtext \endgroup } \message{defuns,} % @defun etc. \newskip\defbodyindent \defbodyindent=.4in \newskip\defargsindent \defargsindent=50pt \newskip\deflastargmargin \deflastargmargin=18pt \newcount\defunpenalty % Start the processing of @deffn: \def\startdefun{% \ifnum\lastpenalty<10000 \medbreak \defunpenalty=10003 % Will keep this @deffn together with the % following @def command, see below. \else % If there are two @def commands in a row, we'll have a \nobreak, % which is there to keep the function description together with its % header. But if there's nothing but headers, we need to allow a % break somewhere. Check specifically for penalty 10002, inserted % by \printdefunline, instead of 10000, since the sectioning % commands also insert a nobreak penalty, and we don't want to allow % a break between a section heading and a defun. % % As a further refinement, we avoid "club" headers by signalling % with penalty of 10003 after the very first @deffn in the % sequence (see above), and penalty of 10002 after any following % @def command. \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi % % Similarly, after a section heading, do not allow a break. % But do insert the glue. \medskip % preceded by discardable penalty, so not a breakpoint \fi % \parindent=0in \advance\leftskip by \defbodyindent \exdentamount=\defbodyindent } \def\dodefunx#1{% % First, check whether we are in the right environment: \checkenv#1% % % As above, allow line break if we have multiple x headers in a row. % It's not a great place, though. \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi % % And now, it's time to reuse the body of the original defun: \expandafter\gobbledefun#1% } \def\gobbledefun#1\startdefun{} % \printdefunline \deffnheader{text} % \def\printdefunline#1#2{% \begingroup % call \deffnheader: #1#2 \endheader % common ending: \interlinepenalty = 10000 \advance\rightskip by 0pt plus 1fil\relax \endgraf \nobreak\vskip -\parskip \penalty\defunpenalty % signal to \startdefun and \dodefunx % Some of the @defun-type tags do not enable magic parentheses, % rendering the following check redundant. But we don't optimize. \checkparencounts \endgroup } \def\Edefun{\endgraf\medbreak} % \makedefun{deffn} creates \deffn, \deffnx and \Edeffn; % the only thing remaining is to define \deffnheader. % \def\makedefun#1{% \expandafter\let\csname E#1\endcsname = \Edefun \edef\temp{\noexpand\domakedefun \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}% \temp } % \domakedefun \deffn \deffnx \deffnheader % % Define \deffn and \deffnx, without parameters. % \deffnheader has to be defined explicitly. % \def\domakedefun#1#2#3{% \envdef#1{% \startdefun \doingtypefnfalse % distinguish typed functions from all else \parseargusing\activeparens{\printdefunline#3}% }% \def#2{\dodefunx#1}% \def#3% } \newif\ifdoingtypefn % doing typed function? \newif\ifrettypeownline % typeset return type on its own line? % @deftypefnnewline on|off says whether the return type of typed functions % are printed on their own line. This affects @deftypefn, @deftypefun, % @deftypeop, and @deftypemethod. % \parseargdef\deftypefnnewline{% \def\temp{#1}% \ifx\temp\onword \expandafter\let\csname SETtxideftypefnnl\endcsname = \empty \else\ifx\temp\offword \expandafter\let\csname SETtxideftypefnnl\endcsname = \relax \else \errhelp = \EMsimple \errmessage{Unknown @txideftypefnnl value `\temp', must be on|off}% \fi\fi } % Untyped functions: % @deffn category name args \makedefun{deffn}{\deffngeneral{}} % @deffn category class name args \makedefun{defop}#1 {\defopon{#1\ \putwordon}} % \defopon {category on}class name args \def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } % \deffngeneral {subind}category name args % \def\deffngeneral#1#2 #3 #4\endheader{% % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}. \dosubind{fn}{\code{#3}}{#1}% \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}% } % Typed functions: % @deftypefn category type name args \makedefun{deftypefn}{\deftypefngeneral{}} % @deftypeop category class type name args \makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}} % \deftypeopon {category on}class type name args \def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } % \deftypefngeneral {subind}category type name args % \def\deftypefngeneral#1#2 #3 #4 #5\endheader{% \dosubind{fn}{\code{#4}}{#1}% \doingtypefntrue \defname{#2}{#3}{#4}\defunargs{#5\unskip}% } % Typed variables: % @deftypevr category type var args \makedefun{deftypevr}{\deftypecvgeneral{}} % @deftypecv category class type var args \makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}} % \deftypecvof {category of}class type var args \def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} } % \deftypecvgeneral {subind}category type var args % \def\deftypecvgeneral#1#2 #3 #4 #5\endheader{% \dosubind{vr}{\code{#4}}{#1}% \defname{#2}{#3}{#4}\defunargs{#5\unskip}% } % Untyped variables: % @defvr category var args \makedefun{defvr}#1 {\deftypevrheader{#1} {} } % @defcv category class var args \makedefun{defcv}#1 {\defcvof{#1\ \putwordof}} % \defcvof {category of}class var args \def\defcvof#1#2 {\deftypecvof{#1}#2 {} } % Types: % @deftp category name args \makedefun{deftp}#1 #2 #3\endheader{% \doind{tp}{\code{#2}}% \defname{#1}{}{#2}\defunargs{#3\unskip}% } % Remaining @defun-like shortcuts: \makedefun{defun}{\deffnheader{\putwordDeffunc} } \makedefun{defmac}{\deffnheader{\putwordDefmac} } \makedefun{defspec}{\deffnheader{\putwordDefspec} } \makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} } \makedefun{defvar}{\defvrheader{\putwordDefvar} } \makedefun{defopt}{\defvrheader{\putwordDefopt} } \makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} } \makedefun{defmethod}{\defopon\putwordMethodon} \makedefun{deftypemethod}{\deftypeopon\putwordMethodon} \makedefun{defivar}{\defcvof\putwordInstanceVariableof} \makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof} % \defname, which formats the name of the @def (not the args). % #1 is the category, such as "Function". % #2 is the return type, if any. % #3 is the function name. % % We are followed by (but not passed) the arguments, if any. % \def\defname#1#2#3{% \par % Get the values of \leftskip and \rightskip as they were outside the @def... \advance\leftskip by -\defbodyindent % % Determine if we are typesetting the return type of a typed function % on a line by itself. \rettypeownlinefalse \ifdoingtypefn % doing a typed function specifically? % then check user option for putting return type on its own line: \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else \rettypeownlinetrue \fi \fi % % How we'll format the category name. Putting it in brackets helps % distinguish it from the body text that may end up on the next line % just below it. \def\temp{#1}% \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi} % % Figure out line sizes for the paragraph shape. We'll always have at % least two. \tempnum = 2 % % The first line needs space for \box0; but if \rightskip is nonzero, % we need only space for the part of \box0 which exceeds it: \dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip % % If doing a return type on its own line, we'll have another line. \ifrettypeownline \advance\tempnum by 1 \def\maybeshapeline{0in \hsize}% \else \def\maybeshapeline{}% \fi % % The continuations: \dimen2=\hsize \advance\dimen2 by -\defargsindent % % The final paragraph shape: \parshape \tempnum 0in \dimen0 \maybeshapeline \defargsindent \dimen2 % % Put the category name at the right margin. \noindent \hbox to 0pt{% \hfil\box0 \kern-\hsize % \hsize has to be shortened this way: \kern\leftskip % Intentionally do not respect \rightskip, since we need the space. }% % % Allow all lines to be underfull without complaint: \tolerance=10000 \hbadness=10000 \exdentamount=\defbodyindent {% % defun fonts. We use typewriter by default (used to be bold) because: % . we're printing identifiers, they should be in tt in principle. % . in languages with many accents, such as Czech or French, it's % common to leave accents off identifiers. The result looks ok in % tt, but exceedingly strange in rm. % . we don't want -- and --- to be treated as ligatures. % . this still does not fix the ?` and !` ligatures, but so far no % one has made identifiers using them :). \df \tt \def\temp{#2}% text of the return type \ifx\temp\empty\else \tclose{\temp}% typeset the return type \ifrettypeownline % put return type on its own line; prohibit line break following: \hfil\vadjust{\nobreak}\break \else \space % type on same line, so just followed by a space \fi \fi % no return type #3% output function name }% {\rm\enskip}% hskip 0.5 em of \tenrm % \boldbrax % arguments will be output next, if any. } % Print arguments in slanted roman (not ttsl), inconsistently with using % tt for the name. This is because literal text is sometimes needed in % the argument list (groff manual), and ttsl and tt are not very % distinguishable. Prevent hyphenation at `-' chars. % \def\defunargs#1{% % use sl by default (not ttsl), % tt for the names. \df \sl \hyphenchar\font=0 % % On the other hand, if an argument has two dashes (for instance), we % want a way to get ttsl. Let's try @var for that. \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}% #1% \sl\hyphenchar\font=45 } % We want ()&[] to print specially on the defun line. % \def\activeparens{% \catcode`\(=\active \catcode`\)=\active \catcode`\[=\active \catcode`\]=\active \catcode`\&=\active } % Make control sequences which act like normal parenthesis chars. \let\lparen = ( \let\rparen = ) % Be sure that we always have a definition for `(', etc. For example, % if the fn name has parens in it, \boldbrax will not be in effect yet, % so TeX would otherwise complain about undefined control sequence. { \activeparens \global\let(=\lparen \global\let)=\rparen \global\let[=\lbrack \global\let]=\rbrack \global\let& = \& \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} \gdef\magicamp{\let&=\amprm} } \newcount\parencount % If we encounter &foo, then turn on ()-hacking afterwards \newif\ifampseen \def\amprm#1 {\ampseentrue{\bf\ }} \def\parenfont{% \ifampseen % At the first level, print parens in roman, % otherwise use the default font. \ifnum \parencount=1 \rm \fi \else % The \sf parens (in \boldbrax) actually are a little bolder than % the contained text. This is especially needed for [ and ] . \sf \fi } \def\infirstlevel#1{% \ifampseen \ifnum\parencount=1 #1% \fi \fi } \def\bfafterword#1 {#1 \bf} \def\opnr{% \global\advance\parencount by 1 {\parenfont(}% \infirstlevel \bfafterword } \def\clnr{% {\parenfont)}% \infirstlevel \sl \global\advance\parencount by -1 } \newcount\brackcount \def\lbrb{% \global\advance\brackcount by 1 {\bf[}% } \def\rbrb{% {\bf]}% \global\advance\brackcount by -1 } \def\checkparencounts{% \ifnum\parencount=0 \else \badparencount \fi \ifnum\brackcount=0 \else \badbrackcount \fi } % these should not use \errmessage; the glibc manual, at least, actually % has such constructs (when documenting function pointers). \def\badparencount{% \message{Warning: unbalanced parentheses in @def...}% \global\parencount=0 } \def\badbrackcount{% \message{Warning: unbalanced square brackets in @def...}% \global\brackcount=0 } \message{macros,} % @macro. % To do this right we need a feature of e-TeX, \scantokens, % which we arrange to emulate with a temporary file in ordinary TeX. \ifx\eTeXversion\thisisundefined \newwrite\macscribble \def\scantokens#1{% \toks0={#1}% \immediate\openout\macscribble=\jobname.tmp \immediate\write\macscribble{\the\toks0}% \immediate\closeout\macscribble \input \jobname.tmp } \fi \def\scanmacro#1{\begingroup \newlinechar`\^^M \let\xeatspaces\eatspaces % % Undo catcode changes of \startcontents and \doprintindex % When called from @insertcopying or (short)caption, we need active % backslash to get it printed correctly. Previously, we had % \catcode`\\=\other instead. We'll see whether a problem appears % with macro expansion. --kasal, 19aug04 \catcode`\@=0 \catcode`\\=\active \escapechar=`\@ % % ... and for \example: \spaceisspace % % The \empty here causes a following catcode 5 newline to be eaten as % part of reading whitespace after a control sequence. It does not % eat a catcode 13 newline. There's no good way to handle the two % cases (untried: maybe e-TeX's \everyeof could help, though plain TeX % would then have different behavior). See the Macro Details node in % the manual for the workaround we recommend for macros and % line-oriented commands. % \scantokens{#1\empty}% \endgroup} \def\scanexp#1{% \edef\temp{\noexpand\scanmacro{#1}}% \temp } \newcount\paramno % Count of parameters \newtoks\macname % Macro name \newif\ifrecursive % Is it recursive? % List of all defined macros in the form % \definedummyword\macro1\definedummyword\macro2... % Currently is also contains all @aliases; the list can be split % if there is a need. \def\macrolist{} % Add the macro to \macrolist \def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname} \def\addtomacrolistxxx#1{% \toks0 = \expandafter{\macrolist\definedummyword#1}% \xdef\macrolist{\the\toks0}% } % Utility routines. % This does \let #1 = #2, with \csnames; that is, % \let \csname#1\endcsname = \csname#2\endcsname % (except of course we have to play expansion games). % \def\cslet#1#2{% \expandafter\let \csname#1\expandafter\endcsname \csname#2\endcsname } % Trim leading and trailing spaces off a string. % Concepts from aro-bend problem 15 (see CTAN). {\catcode`\@=11 \gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }} \gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@} \gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @} \def\unbrace#1{#1} \unbrace{\gdef\trim@@@ #1 } #2@{#1} } % Trim a single trailing ^^M off a string. {\catcode`\^^M=\other \catcode`\Q=3% \gdef\eatcr #1{\eatcra #1Q^^MQ}% \gdef\eatcra#1^^MQ{\eatcrb#1Q}% \gdef\eatcrb#1Q#2Q{#1}% } % Macro bodies are absorbed as an argument in a context where % all characters are catcode 10, 11 or 12, except \ which is active % (as in normal texinfo). It is necessary to change the definition of \ % to recognize macro arguments; this is the job of \mbodybackslash. % % Non-ASCII encodings make 8-bit characters active, so un-activate % them to avoid their expansion. Must do this non-globally, to % confine the change to the current group. % % It's necessary to have hard CRs when the macro is executed. This is % done by making ^^M (\endlinechar) catcode 12 when reading the macro % body, and then making it the \newlinechar in \scanmacro. % \def\scanctxt{% used as subroutine \catcode`\"=\other \catcode`\+=\other \catcode`\<=\other \catcode`\>=\other \catcode`\@=\other \catcode`\^=\other \catcode`\_=\other \catcode`\|=\other \catcode`\~=\other \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi } \def\scanargctxt{% used for copying and captions, not macros. \scanctxt \catcode`\\=\other \catcode`\^^M=\other } \def\macrobodyctxt{% used for @macro definitions \scanctxt \catcode`\{=\other \catcode`\}=\other \catcode`\^^M=\other \usembodybackslash } \def\macroargctxt{% used when scanning invocations \scanctxt \catcode`\\=0 } % why catcode 0 for \ in the above? To recognize \\ \{ \} as "escapes" % for the single characters \ { }. Thus, we end up with the "commands" % that would be written @\ @{ @} in a Texinfo document. % % We already have @{ and @}. For @\, we define it here, and only for % this purpose, to produce a typewriter backslash (so, the @\ that we % define for @math can't be used with @macro calls): % \def\\{\normalbackslash}% % % We would like to do this for \, too, since that is what makeinfo does. % But it is not possible, because Texinfo already has a command @, for a % cedilla accent. Documents must use @comma{} instead. % % \anythingelse will almost certainly be an error of some kind. % \mbodybackslash is the definition of \ in @macro bodies. % It maps \foo\ => \csname macarg.foo\endcsname => #N % where N is the macro parameter number. % We define \csname macarg.\endcsname to be \realbackslash, so % \\ in macro replacement text gets you a backslash. % {\catcode`@=0 @catcode`@\=@active @gdef@usembodybackslash{@let\=@mbodybackslash} @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname} } \expandafter\def\csname macarg.\endcsname{\realbackslash} \def\margbackslash#1{\char`\#1 } \def\macro{\recursivefalse\parsearg\macroxxx} \def\rmacro{\recursivetrue\parsearg\macroxxx} \def\macroxxx#1{% \getargs{#1}% now \macname is the macname and \argl the arglist \ifx\argl\empty % no arguments \paramno=0\relax \else \expandafter\parsemargdef \argl;% \if\paramno>256\relax \ifx\eTeXversion\thisisundefined \errhelp = \EMsimple \errmessage{You need eTeX to compile a file with macros with more than 256 arguments} \fi \fi \fi \if1\csname ismacro.\the\macname\endcsname \message{Warning: redefining \the\macname}% \else \expandafter\ifx\csname \the\macname\endcsname \relax \else \errmessage{Macro name \the\macname\space already defined}\fi \global\cslet{macsave.\the\macname}{\the\macname}% \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% \addtomacrolist{\the\macname}% \fi \begingroup \macrobodyctxt \ifrecursive \expandafter\parsermacbody \else \expandafter\parsemacbody \fi} \parseargdef\unmacro{% \if1\csname ismacro.#1\endcsname \global\cslet{#1}{macsave.#1}% \global\expandafter\let \csname ismacro.#1\endcsname=0% % Remove the macro name from \macrolist: \begingroup \expandafter\let\csname#1\endcsname \relax \let\definedummyword\unmacrodo \xdef\macrolist{\macrolist}% \endgroup \else \errmessage{Macro #1 not defined}% \fi } % Called by \do from \dounmacro on each macro. The idea is to omit any % macro definitions that have been changed to \relax. % \def\unmacrodo#1{% \ifx #1\relax % remove this \else \noexpand\definedummyword \noexpand#1% \fi } % This makes use of the obscure feature that if the last token of a % is #, then the preceding argument is delimited by % an opening brace, and that opening brace is not consumed. \def\getargs#1{\getargsxxx#1{}} \def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} \def\getmacname#1 #2\relax{\macname={#1}} \def\getmacargs#1{\def\argl{#1}} % For macro processing make @ a letter so that we can make Texinfo private macro names. \edef\texiatcatcode{\the\catcode`\@} \catcode `@=11\relax % Parse the optional {params} list. Set up \paramno and \paramlist % so \defmacro knows what to do. Define \macarg.BLAH for each BLAH % in the params list to some hook where the argument si to be expanded. If % there are less than 10 arguments that hook is to be replaced by ##N where N % is the position in that list, that is to say the macro arguments are to be % defined `a la TeX in the macro body. % % That gets used by \mbodybackslash (above). % % We need to get `macro parameter char #' into several definitions. % The technique used is stolen from LaTeX: let \hash be something % unexpandable, insert that wherever you need a #, and then redefine % it to # just before using the token list produced. % % The same technique is used to protect \eatspaces till just before % the macro is used. % % If there are 10 or more arguments, a different technique is used, where the % hook remains in the body, and when macro is to be expanded the body is % processed again to replace the arguments. % % In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the % argument N value and then \edef the body (nothing else will expand because of % the catcode regime underwhich the body was input). % % If you compile with TeX (not eTeX), and you have macros with 10 or more % arguments, you need that no macro has more than 256 arguments, otherwise an % error is produced. \def\parsemargdef#1;{% \paramno=0\def\paramlist{}% \let\hash\relax \let\xeatspaces\relax \parsemargdefxxx#1,;,% % In case that there are 10 or more arguments we parse again the arguments % list to set new definitions for the \macarg.BLAH macros corresponding to % each BLAH argument. It was anyhow needed to parse already once this list % in order to count the arguments, and as macros with at most 9 arguments % are by far more frequent than macro with 10 or more arguments, defining % twice the \macarg.BLAH macros does not cost too much processing power. \ifnum\paramno<10\relax\else \paramno0\relax \parsemmanyargdef@@#1,;,% 10 or more arguments \fi } \def\parsemargdefxxx#1,{% \if#1;\let\next=\relax \else \let\next=\parsemargdefxxx \advance\paramno by 1 \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname {\xeatspaces{\hash\the\paramno}}% \edef\paramlist{\paramlist\hash\the\paramno,}% \fi\next} \def\parsemmanyargdef@@#1,{% \if#1;\let\next=\relax \else \let\next=\parsemmanyargdef@@ \edef\tempb{\eatspaces{#1}}% \expandafter\def\expandafter\tempa \expandafter{\csname macarg.\tempb\endcsname}% % Note that we need some extra \noexpand\noexpand, this is because we % don't want \the to be expanded in the \parsermacbody as it uses an % \xdef . \expandafter\edef\tempa {\noexpand\noexpand\noexpand\the\toks\the\paramno}% \advance\paramno by 1\relax \fi\next} % These two commands read recursive and nonrecursive macro bodies. % (They're different since rec and nonrec macros end differently.) % \catcode `\@\texiatcatcode \long\def\parsemacbody#1@end macro% {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% \long\def\parsermacbody#1@end rmacro% {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% \catcode `\@=11\relax \let\endargs@\relax \let\nil@\relax \def\nilm@{\nil@}% \long\def\nillm@{\nil@}% % This macro is expanded during the Texinfo macro expansion, not during its % definition. It gets all the arguments values and assigns them to macros % macarg.ARGNAME % % #1 is the macro name % #2 is the list of argument names % #3 is the list of argument values \def\getargvals@#1#2#3{% \def\macargdeflist@{}% \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion. \def\paramlist{#2,\nil@}% \def\macroname{#1}% \begingroup \macroargctxt \def\argvaluelist{#3,\nil@}% \def\@tempa{#3}% \ifx\@tempa\empty \setemptyargvalues@ \else \getargvals@@ \fi } % \def\getargvals@@{% \ifx\paramlist\nilm@ % Some sanity check needed here that \argvaluelist is also empty. \ifx\argvaluelist\nillm@ \else \errhelp = \EMsimple \errmessage{Too many arguments in macro `\macroname'!}% \fi \let\next\macargexpandinbody@ \else \ifx\argvaluelist\nillm@ % No more arguments values passed to macro. Set remaining named-arg % macros to empty. \let\next\setemptyargvalues@ \else % pop current arg name into \@tempb \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}% \expandafter\@tempa\expandafter{\paramlist}% % pop current argument value into \@tempc \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}% \expandafter\@tempa\expandafter{\argvaluelist}% % Here \@tempb is the current arg name and \@tempc is the current arg value. % First place the new argument macro definition into \@tempd \expandafter\macname\expandafter{\@tempc}% \expandafter\let\csname macarg.\@tempb\endcsname\relax \expandafter\def\expandafter\@tempe\expandafter{% \csname macarg.\@tempb\endcsname}% \edef\@tempd{\long\def\@tempe{\the\macname}}% \push@\@tempd\macargdeflist@ \let\next\getargvals@@ \fi \fi \next } \def\push@#1#2{% \expandafter\expandafter\expandafter\def \expandafter\expandafter\expandafter#2% \expandafter\expandafter\expandafter{% \expandafter#1#2}% } % Replace arguments by their values in the macro body, and place the result % in macro \@tempa \def\macvalstoargs@{% % To do this we use the property that token registers that are \the'ed % within an \edef expand only once. So we are going to place all argument % values into respective token registers. % % First we save the token context, and initialize argument numbering. \begingroup \paramno0\relax % Then, for each argument number #N, we place the corresponding argument % value into a new token list register \toks#N \expandafter\putargsintokens@\saveparamlist@,;,% % Then, we expand the body so that argument are replaced by their % values. The trick for values not to be expanded themselves is that they % are within tokens and that tokens expand only once in an \edef . \edef\@tempc{\csname mac.\macroname .body\endcsname}% % Now we restore the token stack pointer to free the token list registers % which we have used, but we make sure that expanded body is saved after % group. \expandafter \endgroup \expandafter\def\expandafter\@tempa\expandafter{\@tempc}% } \def\macargexpandinbody@{% %% Define the named-macro outside of this group and then close this group. \expandafter \endgroup \macargdeflist@ % First the replace in body the macro arguments by their values, the result % is in \@tempa . \macvalstoargs@ % Then we point at the \norecurse or \gobble (for recursive) macro value % with \@tempb . \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname % Depending on whether it is recursive or not, we need some tailing % \egroup . \ifx\@tempb\gobble \let\@tempc\relax \else \let\@tempc\egroup \fi % And now we do the real job: \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}% \@tempd } \def\putargsintokens@#1,{% \if#1;\let\next\relax \else \let\next\putargsintokens@ % First we allocate the new token list register, and give it a temporary % alias \@tempb . \toksdef\@tempb\the\paramno % Then we place the argument value into that token list register. \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname \expandafter\@tempb\expandafter{\@tempa}% \advance\paramno by 1\relax \fi \next } % Save the token stack pointer into macro #1 \def\texisavetoksstackpoint#1{\edef#1{\the\@cclvi}} % Restore the token stack pointer from number in macro #1 \def\texirestoretoksstackpoint#1{\expandafter\mathchardef\expandafter\@cclvi#1\relax} % newtoks that can be used non \outer . \def\texinonouternewtoks{\alloc@ 5\toks \toksdef \@cclvi} % Tailing missing arguments are set to empty \def\setemptyargvalues@{% \ifx\paramlist\nilm@ \let\next\macargexpandinbody@ \else \expandafter\setemptyargvaluesparser@\paramlist\endargs@ \let\next\setemptyargvalues@ \fi \next } \def\setemptyargvaluesparser@#1,#2\endargs@{% \expandafter\def\expandafter\@tempa\expandafter{% \expandafter\def\csname macarg.#1\endcsname{}}% \push@\@tempa\macargdeflist@ \def\paramlist{#2}% } % #1 is the element target macro % #2 is the list macro % #3,#4\endargs@ is the list value \def\pop@#1#2#3,#4\endargs@{% \def#1{#3}% \def#2{#4}% } \long\def\longpop@#1#2#3,#4\endargs@{% \long\def#1{#3}% \long\def#2{#4}% } % This defines a Texinfo @macro. There are eight cases: recursive and % nonrecursive macros of zero, one, up to nine, and many arguments. % Much magic with \expandafter here. % \xdef is used so that macro definitions will survive the file % they're defined in; @include reads the file inside a group. % \def\defmacro{% \let\hash=##% convert placeholders to macro parameter chars \ifrecursive \ifcase\paramno % 0 \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\scanmacro{\temp}}% \or % 1 \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt \noexpand\braceorline \expandafter\noexpand\csname\the\macname xxx\endcsname}% \expandafter\xdef\csname\the\macname xxx\endcsname##1{% \egroup\noexpand\scanmacro{\temp}}% \else \ifnum\paramno<10\relax % at most 9 \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt \noexpand\csname\the\macname xx\endcsname}% \expandafter\xdef\csname\the\macname xx\endcsname##1{% \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% \expandafter\expandafter \expandafter\xdef \expandafter\expandafter \csname\the\macname xxx\endcsname \paramlist{\egroup\noexpand\scanmacro{\temp}}% \else % 10 or more \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\getargvals@{\the\macname}{\argl}% }% \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble \fi \fi \else \ifcase\paramno % 0 \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\norecurse{\the\macname}% \noexpand\scanmacro{\temp}\egroup}% \or % 1 \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt \noexpand\braceorline \expandafter\noexpand\csname\the\macname xxx\endcsname}% \expandafter\xdef\csname\the\macname xxx\endcsname##1{% \egroup \noexpand\norecurse{\the\macname}% \noexpand\scanmacro{\temp}\egroup}% \else % at most 9 \ifnum\paramno<10\relax \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt \expandafter\noexpand\csname\the\macname xx\endcsname}% \expandafter\xdef\csname\the\macname xx\endcsname##1{% \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% \expandafter\expandafter \expandafter\xdef \expandafter\expandafter \csname\the\macname xxx\endcsname \paramlist{% \egroup \noexpand\norecurse{\the\macname}% \noexpand\scanmacro{\temp}\egroup}% \else % 10 or more: \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\getargvals@{\the\macname}{\argl}% }% \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse \fi \fi \fi} \catcode `\@\texiatcatcode\relax \def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}} % \braceorline decides whether the next nonwhitespace character is a % {. If so it reads up to the closing }, if not, it reads the whole % line. Whatever was read is then fed to the next control sequence % as an argument (by \parsebrace or \parsearg). % \def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx} \def\braceorlinexxx{% \ifx\nchar\bgroup\else \expandafter\parsearg \fi \macnamexxx} % @alias. % We need some trickery to remove the optional spaces around the equal % sign. Make them active and then expand them all to nothing. % \def\alias{\parseargusing\obeyspaces\aliasxxx} \def\aliasxxx #1{\aliasyyy#1\relax} \def\aliasyyy #1=#2\relax{% {% \expandafter\let\obeyedspace=\empty \addtomacrolist{#1}% \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}% }% \next } \message{cross references,} \newwrite\auxfile \newif\ifhavexrefs % True if xref values are known. \newif\ifwarnedxrefs % True if we warned once that they aren't known. % @inforef is relatively simple. \def\inforef #1{\inforefzzz #1,,,,**} \def\inforefzzz #1,#2,#3,#4**{% \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, node \samp{\ignorespaces#1{}}} % @node's only job in TeX is to define \lastnode, which is used in % cross-references. The @node line might or might not have commas, and % might or might not have spaces before the first comma, like: % @node foo , bar , ... % We don't want such trailing spaces in the node name. % \parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse} % % also remove a trailing comma, in case of something like this: % @node Help-Cross, , , Cross-refs \def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse} \def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}} \let\nwnode=\node \let\lastnode=\empty % Write a cross-reference definition for the current node. #1 is the % type (Ynumbered, Yappendix, Ynothing). % \def\donoderef#1{% \ifx\lastnode\empty\else \setref{\lastnode}{#1}% \global\let\lastnode=\empty \fi } % @anchor{NAME} -- define xref target at arbitrary point. % \newcount\savesfregister % \def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi} \def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi} \def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces} % \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an % anchor), which consists of three parts: % 1) NAME-title - the current sectioning name taken from \lastsection, % or the anchor name. % 2) NAME-snt - section number and type, passed as the SNT arg, or % empty for anchors. % 3) NAME-pg - the page number. % % This is called from \donoderef, \anchor, and \dofloat. In the case of % floats, there is an additional part, which is not written here: % 4) NAME-lof - the text as it should appear in a @listoffloats. % \def\setref#1#2{% \pdfmkdest{#1}% \iflinks {% \atdummies % preserve commands, but don't expand them \edef\writexrdef##1##2{% \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef ##1}{##2}}% these are parameters of \writexrdef }% \toks0 = \expandafter{\lastsection}% \immediate \writexrdef{title}{\the\toks0 }% \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc. \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout }% \fi } % @xrefautosectiontitle on|off says whether @section(ing) names are used % automatically in xrefs, if the third arg is not explicitly specified. % This was provided as a "secret" @set xref-automatic-section-title % variable, now it's official. % \parseargdef\xrefautomaticsectiontitle{% \def\temp{#1}% \ifx\temp\onword \expandafter\let\csname SETxref-automatic-section-title\endcsname = \empty \else\ifx\temp\offword \expandafter\let\csname SETxref-automatic-section-title\endcsname = \relax \else \errhelp = \EMsimple \errmessage{Unknown @xrefautomaticsectiontitle value `\temp', must be on|off}% \fi\fi } % @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is % the node name, #2 the name of the Info cross-reference, #3 the printed % node name, #4 the name of the Info file, #5 the name of the printed % manual. All but the node name can be omitted. % \def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]} \def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]} \def\ref#1{\xrefX[#1,,,,,,,]} % \newbox\topbox \newbox\printedrefnamebox \newbox\printedmanualbox % \def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup \unsepspaces % \def\printedrefname{\ignorespaces #3}% \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}% % \def\printedmanual{\ignorespaces #5}% \setbox\printedmanualbox = \hbox{\printedmanual\unskip}% % % If the printed reference name (arg #3) was not explicitly given in % the @xref, figure out what we want to use. \ifdim \wd\printedrefnamebox = 0pt % No printed node name was explicitly given. \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax % Not auto section-title: use node name inside the square brackets. \def\printedrefname{\ignorespaces #1}% \else % Auto section-title: use chapter/section title inside % the square brackets if we have it. \ifdim \wd\printedmanualbox > 0pt % It is in another manual, so we don't have it; use node name. \def\printedrefname{\ignorespaces #1}% \else \ifhavexrefs % We (should) know the real title if we have the xref values. \def\printedrefname{\refx{#1-title}{}}% \else % Otherwise just copy the Info node name. \def\printedrefname{\ignorespaces #1}% \fi% \fi \fi \fi % % Make link in pdf output. \ifpdf {\indexnofonts \turnoffactive \makevalueexpandable % This expands tokens, so do it after making catcode changes, so _ % etc. don't get their TeX definitions. \getfilename{#4}% % \edef\pdfxrefdest{#1}% \txiescapepdf\pdfxrefdest % \leavevmode \startlink attr{/Border [0 0 0]}% \ifnum\filenamelength>0 goto file{\the\filename.pdf} name{\pdfxrefdest}% \else goto name{\pdfmkpgn{\pdfxrefdest}}% \fi }% \setcolor{\linkcolor}% \fi % % Float references are printed completely differently: "Figure 1.2" % instead of "[somenode], p.3". We distinguish them by the % LABEL-title being set to a magic string. {% % Have to otherify everything special to allow the \csname to % include an _ in the xref name, etc. \indexnofonts \turnoffactive \expandafter\global\expandafter\let\expandafter\Xthisreftitle \csname XR#1-title\endcsname }% \iffloat\Xthisreftitle % If the user specified the print name (third arg) to the ref, % print it instead of our usual "Figure 1.2". \ifdim\wd\printedrefnamebox = 0pt \refx{#1-snt}{}% \else \printedrefname \fi % % if the user also gave the printed manual name (fifth arg), append % "in MANUALNAME". \ifdim \wd\printedmanualbox > 0pt \space \putwordin{} \cite{\printedmanual}% \fi \else % node/anchor (non-float) references. % % If we use \unhbox to print the node names, TeX does not insert % empty discretionaries after hyphens, which means that it will not % find a line break at a hyphen in a node names. Since some manuals % are best written with fairly long node names, containing hyphens, % this is a loss. Therefore, we give the text of the node name % again, so it is as if TeX is seeing it for the first time. % % Cross-manual reference. Only include the "Section ``foo'' in" if % the foo is neither missing or Top. Thus, @xref{,,,foo,The Foo Manual} % outputs simply "see The Foo Manual". \ifdim \wd\printedmanualbox > 0pt % What is the 7sp about? The idea is that we also want to omit % the Section part if we would be printing "Top", since they are % clearly trying to refer to the whole manual. But, this being % TeX, we can't easily compare strings while ignoring the possible % spaces before and after in the input. By adding the arbitrary % 7sp, we make it much less likely that a real node name would % happen to have the same width as "Top" (e.g., in a monospaced font). % I hope it will never happen in practice. % % For the same basic reason, we retypeset the "Top" at every % reference, since the current font is indeterminate. % \setbox\topbox = \hbox{Top\kern7sp}% \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}% \ifdim \wd2 > 7sp \ifdim \wd2 = \wd\topbox \else \putwordSection{} ``\printedrefname'' \putwordin{}\space \fi \fi \cite{\printedmanual}% \else % Reference in this manual. % % _ (for example) has to be the character _ for the purposes of the % control sequence corresponding to the node, but it has to expand % into the usual \leavevmode...\vrule stuff for purposes of % printing. So we \turnoffactive for the \refx-snt, back on for the % printing, back off for the \refx-pg. {\turnoffactive % Only output a following space if the -snt ref is nonempty; for % @unnumbered and @anchor, it won't be. \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}% \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi }% % output the `[mynode]' via the macro below so it can be overridden. \xrefprintnodename\printedrefname % % But we always want a comma and a space: ,\space % % output the `page 3'. \turnoffactive \putwordpage\tie\refx{#1-pg}{}% \fi \fi \endlink \endgroup} % This macro is called from \xrefX for the `[nodename]' part of xref % output. It's a separate macro only so it can be changed more easily, % since square brackets don't work well in some documents. Particularly % one that Bob is working on :). % \def\xrefprintnodename#1{[#1]} % Things referred to by \setref. % \def\Ynothing{} \def\Yomitfromtoc{} \def\Ynumbered{% \ifnum\secno=0 \putwordChapter@tie \the\chapno \else \ifnum\subsecno=0 \putwordSection@tie \the\chapno.\the\secno \else \ifnum\subsubsecno=0 \putwordSection@tie \the\chapno.\the\secno.\the\subsecno \else \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno \fi\fi\fi } \def\Yappendix{% \ifnum\secno=0 \putwordAppendix@tie @char\the\appendixno{}% \else \ifnum\subsecno=0 \putwordSection@tie @char\the\appendixno.\the\secno \else \ifnum\subsubsecno=0 \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno \else \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno \fi\fi\fi } % Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME. % If its value is nonempty, SUFFIX is output afterward. % \def\refx#1#2{% {% \indexnofonts \otherbackslash \expandafter\global\expandafter\let\expandafter\thisrefX \csname XR#1\endcsname }% \ifx\thisrefX\relax % If not defined, say something at least. \angleleft un\-de\-fined\angleright \iflinks \ifhavexrefs {\toks0 = {#1}% avoid expansion of possibly-complex value \message{\linenumber Undefined cross reference `\the\toks0'.}}% \else \ifwarnedxrefs\else \global\warnedxrefstrue \message{Cross reference values unknown; you must run TeX again.}% \fi \fi \fi \else % It's defined, so just use it. \thisrefX \fi #2% Output the suffix in any case. } % This is the macro invoked by entries in the aux file. Usually it's % just a \def (we prepend XR to the control sequence name to avoid % collisions). But if this is a float type, we have more work to do. % \def\xrdef#1#2{% {% The node name might contain 8-bit characters, which in our current % implementation are changed to commands like @'e. Don't let these % mess up the control sequence name. \indexnofonts \turnoffactive \xdef\safexrefname{#1}% }% % \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref % % Was that xref control sequence that we just defined for a float? \expandafter\iffloat\csname XR\safexrefname\endcsname % it was a float, and we have the (safe) float type in \iffloattype. \expandafter\let\expandafter\floatlist \csname floatlist\iffloattype\endcsname % % Is this the first time we've seen this float type? \expandafter\ifx\floatlist\relax \toks0 = {\do}% yes, so just \do \else % had it before, so preserve previous elements in list. \toks0 = \expandafter{\floatlist\do}% \fi % % Remember this xref in the control sequence \floatlistFLOATTYPE, % for later use in \listoffloats. \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0 {\safexrefname}}% \fi } % Read the last existing aux file, if any. No error if none exists. % \def\tryauxfile{% \openin 1 \jobname.aux \ifeof 1 \else \readdatafile{aux}% \global\havexrefstrue \fi \closein 1 } \def\setupdatafile{% \catcode`\^^@=\other \catcode`\^^A=\other \catcode`\^^B=\other \catcode`\^^C=\other \catcode`\^^D=\other \catcode`\^^E=\other \catcode`\^^F=\other \catcode`\^^G=\other \catcode`\^^H=\other \catcode`\^^K=\other \catcode`\^^L=\other \catcode`\^^N=\other \catcode`\^^P=\other \catcode`\^^Q=\other \catcode`\^^R=\other \catcode`\^^S=\other \catcode`\^^T=\other \catcode`\^^U=\other \catcode`\^^V=\other \catcode`\^^W=\other \catcode`\^^X=\other \catcode`\^^Z=\other \catcode`\^^[=\other \catcode`\^^\=\other \catcode`\^^]=\other \catcode`\^^^=\other \catcode`\^^_=\other % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc. % in xref tags, i.e., node names. But since ^^e4 notation isn't % supported in the main text, it doesn't seem desirable. Furthermore, % that is not enough: for node names that actually contain a ^ % character, we would end up writing a line like this: 'xrdef {'hat % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first % argument, and \hat is not an expandable control sequence. It could % all be worked out, but why? Either we support ^^ or we don't. % % The other change necessary for this was to define \auxhat: % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter % and then to call \auxhat in \setq. % \catcode`\^=\other % % Special characters. Should be turned off anyway, but... \catcode`\~=\other \catcode`\[=\other \catcode`\]=\other \catcode`\"=\other \catcode`\_=\other \catcode`\|=\other \catcode`\<=\other \catcode`\>=\other \catcode`\$=\other \catcode`\#=\other \catcode`\&=\other \catcode`\%=\other \catcode`+=\other % avoid \+ for paranoia even though we've turned it off % % This is to support \ in node names and titles, since the \ % characters end up in a \csname. It's easier than % leaving it active and making its active definition an actual \ % character. What I don't understand is why it works in the *value* % of the xrdef. Seems like it should be a catcode12 \, and that % should not typeset properly. But it works, so I'm moving on for % now. --karl, 15jan04. \catcode`\\=\other % % Make the characters 128-255 be printing characters. {% \count1=128 \def\loop{% \catcode\count1=\other \advance\count1 by 1 \ifnum \count1<256 \loop \fi }% }% % % @ is our escape character in .aux files, and we need braces. \catcode`\{=1 \catcode`\}=2 \catcode`\@=0 } \def\readdatafile#1{% \begingroup \setupdatafile \input\jobname.#1 \endgroup} \message{insertions,} % including footnotes. \newcount \footnoteno % The trailing space in the following definition for supereject is % vital for proper filling; pages come out unaligned when you do a % pagealignmacro call if that space before the closing brace is % removed. (Generally, numeric constants should always be followed by a % space to prevent strange expansion errors.) \def\supereject{\par\penalty -20000\footnoteno =0 } % @footnotestyle is meaningful for Info output only. \let\footnotestyle=\comment {\catcode `\@=11 % % Auto-number footnotes. Otherwise like plain. \gdef\footnote{% \let\indent=\ptexindent \let\noindent=\ptexnoindent \global\advance\footnoteno by \@ne \edef\thisfootno{$^{\the\footnoteno}$}% % % In case the footnote comes at the end of a sentence, preserve the % extra spacing after we do the footnote number. \let\@sf\empty \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi % % Remove inadvertent blank space before typesetting the footnote number. \unskip \thisfootno\@sf \dofootnote }% % Don't bother with the trickery in plain.tex to not require the % footnote text as a parameter. Our footnotes don't need to be so general. % % Oh yes, they do; otherwise, @ifset (and anything else that uses % \parseargline) fails inside footnotes because the tokens are fixed when % the footnote is read. --karl, 16nov96. % \gdef\dofootnote{% \insert\footins\bgroup % We want to typeset this text as a normal paragraph, even if the % footnote reference occurs in (for example) a display environment. % So reset some parameters. \hsize=\pagewidth \interlinepenalty\interfootnotelinepenalty \splittopskip\ht\strutbox % top baseline for broken footnotes \splitmaxdepth\dp\strutbox \floatingpenalty\@MM \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip \parindent\defaultparindent % \smallfonts \rm % % Because we use hanging indentation in footnotes, a @noindent appears % to exdent this text, so make it be a no-op. makeinfo does not use % hanging indentation so @noindent can still be needed within footnote % text after an @example or the like (not that this is good style). \let\noindent = \relax % % Hang the footnote text off the number. Use \everypar in case the % footnote extends for more than one paragraph. \everypar = {\hang}% \textindent{\thisfootno}% % % Don't crash into the line above the footnote text. Since this % expands into a box, it must come within the paragraph, lest it % provide a place where TeX can split the footnote. \footstrut % % Invoke rest of plain TeX footnote routine. \futurelet\next\fo@t } }%end \catcode `\@=11 % In case a @footnote appears in a vbox, save the footnote text and create % the real \insert just after the vbox finished. Otherwise, the insertion % would be lost. % Similarly, if a @footnote appears inside an alignment, save the footnote % text to a box and make the \insert when a row of the table is finished. % And the same can be done for other insert classes. --kasal, 16nov03. % Replace the \insert primitive by a cheating macro. % Deeper inside, just make sure that the saved insertions are not spilled % out prematurely. % \def\startsavinginserts{% \ifx \insert\ptexinsert \let\insert\saveinsert \else \let\checkinserts\relax \fi } % This \insert replacement works for both \insert\footins{foo} and % \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}. % \def\saveinsert#1{% \edef\next{\noexpand\savetobox \makeSAVEname#1}% \afterassignment\next % swallow the left brace \let\temp = } \def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}} \def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1} \def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi} \def\placesaveins#1{% \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname {\box#1}% } % eat @SAVE -- beware, all of them have catcode \other: { \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials % ;-) \gdef\gobblesave @SAVE{} } % initialization: \def\newsaveins #1{% \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}% \next } \def\newsaveinsX #1{% \csname newbox\endcsname #1% \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts \checksaveins #1}% } % initialize: \let\checkinserts\empty \newsaveins\footins \newsaveins\margin % @image. We use the macros from epsf.tex to support this. % If epsf.tex is not installed and @image is used, we complain. % % Check for and read epsf.tex up front. If we read it only at @image % time, we might be inside a group, and then its definitions would get % undone and the next image would fail. \openin 1 = epsf.tex \ifeof 1 \else % Do not bother showing banner with epsf.tex v2.7k (available in % doc/epsf.tex and on ctan). \def\epsfannounce{\toks0 = }% \input epsf.tex \fi \closein 1 % % We will only complain once about lack of epsf.tex. \newif\ifwarnednoepsf \newhelp\noepsfhelp{epsf.tex must be installed for images to work. It is also included in the Texinfo distribution, or you can get it from ftp://tug.org/tex/epsf.tex.} % \def\image#1{% \ifx\epsfbox\thisisundefined \ifwarnednoepsf \else \errhelp = \noepsfhelp \errmessage{epsf.tex not found, images will be ignored}% \global\warnednoepsftrue \fi \else \imagexxx #1,,,,,\finish \fi } % % Arguments to @image: % #1 is (mandatory) image filename; we tack on .eps extension. % #2 is (optional) width, #3 is (optional) height. % #4 is (ignored optional) html alt text. % #5 is (ignored optional) extension. % #6 is just the usual extra ignored arg for parsing stuff. \newif\ifimagevmode \def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup \catcode`\^^M = 5 % in case we're inside an example \normalturnoffactive % allow _ et al. in names % If the image is by itself, center it. \ifvmode \imagevmodetrue \else \ifx\centersub\centerV % for @center @image, we need a vbox so we can have our vertical space \imagevmodetrue \vbox\bgroup % vbox has better behavior than vtop herev \fi\fi % \ifimagevmode \nobreak\medskip % Usually we'll have text after the image which will insert % \parskip glue, so insert it here too to equalize the space % above and below. \nobreak\vskip\parskip \nobreak \fi % % Leave vertical mode so that indentation from an enclosing % environment such as @quotation is respected. % However, if we're at the top level, we don't want the % normal paragraph indentation. % On the other hand, if we are in the case of @center @image, we don't % want to start a paragraph, which will create a hsize-width box and % eradicate the centering. \ifx\centersub\centerV\else \noindent \fi % % Output the image. \ifpdf \dopdfimage{#1}{#2}{#3}% \else % \epsfbox itself resets \epsf?size at each figure. \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi \epsfbox{#1.eps}% \fi % \ifimagevmode \medskip % space after a standalone image \fi \ifx\centersub\centerV \egroup \fi \endgroup} % @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables, % etc. We don't actually implement floating yet, we always include the % float "here". But it seemed the best name for the future. % \envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish} % There may be a space before second and/or third parameter; delete it. \def\eatcommaspace#1, {#1,} % #1 is the optional FLOATTYPE, the text label for this float, typically % "Figure", "Table", "Example", etc. Can't contain commas. If omitted, % this float will not be numbered and cannot be referred to. % % #2 is the optional xref label. Also must be present for the float to % be referable. % % #3 is the optional positioning argument; for now, it is ignored. It % will somehow specify the positions allowed to float to (here, top, bottom). % % We keep a separate counter for each FLOATTYPE, which we reset at each % chapter-level command. \let\resetallfloatnos=\empty % \def\dofloat#1,#2,#3,#4\finish{% \let\thiscaption=\empty \let\thisshortcaption=\empty % % don't lose footnotes inside @float. % % BEWARE: when the floats start float, we have to issue warning whenever an % insert appears inside a float which could possibly float. --kasal, 26may04 % \startsavinginserts % % We can't be used inside a paragraph. \par % \vtop\bgroup \def\floattype{#1}% \def\floatlabel{#2}% \def\floatloc{#3}% we do nothing with this yet. % \ifx\floattype\empty \let\safefloattype=\empty \else {% % the floattype might have accents or other special characters, % but we need to use it in a control sequence name. \indexnofonts \turnoffactive \xdef\safefloattype{\floattype}% }% \fi % % If label is given but no type, we handle that as the empty type. \ifx\floatlabel\empty \else % We want each FLOATTYPE to be numbered separately (Figure 1, % Table 1, Figure 2, ...). (And if no label, no number.) % \expandafter\getfloatno\csname\safefloattype floatno\endcsname \global\advance\floatno by 1 % {% % This magic value for \lastsection is output by \setref as the % XREFLABEL-title value. \xrefX uses it to distinguish float % labels (which have a completely different output format) from % node and anchor labels. And \xrdef uses it to construct the % lists of floats. % \edef\lastsection{\floatmagic=\safefloattype}% \setref{\floatlabel}{Yfloat}% }% \fi % % start with \parskip glue, I guess. \vskip\parskip % % Don't suppress indentation if a float happens to start a section. \restorefirstparagraphindent } % we have these possibilities: % @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap % @float Foo,lbl & no caption: Foo 1.1 % @float Foo & @caption{Cap}: Foo: Cap % @float Foo & no caption: Foo % @float ,lbl & Caption{Cap}: 1.1: Cap % @float ,lbl & no caption: 1.1 % @float & @caption{Cap}: Cap % @float & no caption: % \def\Efloat{% \let\floatident = \empty % % In all cases, if we have a float type, it comes first. \ifx\floattype\empty \else \def\floatident{\floattype}\fi % % If we have an xref label, the number comes next. \ifx\floatlabel\empty \else \ifx\floattype\empty \else % if also had float type, need tie first. \appendtomacro\floatident{\tie}% \fi % the number. \appendtomacro\floatident{\chaplevelprefix\the\floatno}% \fi % % Start the printed caption with what we've constructed in % \floatident, but keep it separate; we need \floatident again. \let\captionline = \floatident % \ifx\thiscaption\empty \else \ifx\floatident\empty \else \appendtomacro\captionline{: }% had ident, so need a colon between \fi % % caption text. \appendtomacro\captionline{\scanexp\thiscaption}% \fi % % If we have anything to print, print it, with space before. % Eventually this needs to become an \insert. \ifx\captionline\empty \else \vskip.5\parskip \captionline % % Space below caption. \vskip\parskip \fi % % If have an xref label, write the list of floats info. Do this % after the caption, to avoid chance of it being a breakpoint. \ifx\floatlabel\empty \else % Write the text that goes in the lof to the aux file as % \floatlabel-lof. Besides \floatident, we include the short % caption if specified, else the full caption if specified, else nothing. {% \atdummies % % since we read the caption text in the macro world, where ^^M % is turned into a normal character, we have to scan it back, so % we don't write the literal three characters "^^M" into the aux file. \scanexp{% \xdef\noexpand\gtemp{% \ifx\thisshortcaption\empty \thiscaption \else \thisshortcaption \fi }% }% \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident \ifx\gtemp\empty \else : \gtemp \fi}}% }% \fi \egroup % end of \vtop % % place the captured inserts % % BEWARE: when the floats start floating, we have to issue warning % whenever an insert appears inside a float which could possibly % float. --kasal, 26may04 % \checkinserts } % Append the tokens #2 to the definition of macro #1, not expanding either. % \def\appendtomacro#1#2{% \expandafter\def\expandafter#1\expandafter{#1#2}% } % @caption, @shortcaption % \def\caption{\docaption\thiscaption} \def\shortcaption{\docaption\thisshortcaption} \def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption} \def\defcaption#1#2{\egroup \def#1{#2}} % The parameter is the control sequence identifying the counter we are % going to use. Create it if it doesn't exist and assign it to \floatno. \def\getfloatno#1{% \ifx#1\relax % Haven't seen this figure type before. \csname newcount\endcsname #1% % % Remember to reset this floatno at the next chap. \expandafter\gdef\expandafter\resetallfloatnos \expandafter{\resetallfloatnos #1=0 }% \fi \let\floatno#1% } % \setref calls this to get the XREFLABEL-snt value. We want an @xref % to the FLOATLABEL to expand to "Figure 3.1". We call \setref when we % first read the @float command. % \def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}% % Magic string used for the XREFLABEL-title value, so \xrefX can % distinguish floats from other xref types. \def\floatmagic{!!float!!} % #1 is the control sequence we are passed; we expand into a conditional % which is true if #1 represents a float ref. That is, the magic % \lastsection value which we \setref above. % \def\iffloat#1{\expandafter\doiffloat#1==\finish} % % #1 is (maybe) the \floatmagic string. If so, #2 will be the % (safe) float type for this float. We set \iffloattype to #2. % \def\doiffloat#1=#2=#3\finish{% \def\temp{#1}% \def\iffloattype{#2}% \ifx\temp\floatmagic } % @listoffloats FLOATTYPE - print a list of floats like a table of contents. % \parseargdef\listoffloats{% \def\floattype{#1}% floattype {% % the floattype might have accents or other special characters, % but we need to use it in a control sequence name. \indexnofonts \turnoffactive \xdef\safefloattype{\floattype}% }% % % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE. \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax \ifhavexrefs % if the user said @listoffloats foo but never @float foo. \message{\linenumber No `\safefloattype' floats to list.}% \fi \else \begingroup \leftskip=\tocindent % indent these entries like a toc \let\do=\listoffloatsdo \csname floatlist\safefloattype\endcsname \endgroup \fi } % This is called on each entry in a list of floats. We're passed the % xref label, in the form LABEL-title, which is how we save it in the % aux file. We strip off the -title and look up \XRLABEL-lof, which % has the text we're supposed to typeset here. % % Figures without xref labels will not be included in the list (since % they won't appear in the aux file). % \def\listoffloatsdo#1{\listoffloatsdoentry#1\finish} \def\listoffloatsdoentry#1-title\finish{{% % Can't fully expand XR#1-lof because it can contain anything. Just % pass the control sequence. On the other hand, XR#1-pg is just the % page number, and we want to fully expand that so we can get a link % in pdf output. \toksA = \expandafter{\csname XR#1-lof\endcsname}% % % use the same \entry macro we use to generate the TOC and index. \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}% \writeentry }} \message{localization,} % For single-language documents, @documentlanguage is usually given very % early, just after @documentencoding. Single argument is the language % (de) or locale (de_DE) abbreviation. % { \catcode`\_ = \active \globaldefs=1 \parseargdef\documentlanguage{\begingroup \let_=\normalunderscore % normal _ character for filenames \tex % read txi-??.tex file in plain TeX. % Read the file by the name they passed if it exists. \openin 1 txi-#1.tex \ifeof 1 \documentlanguagetrywithoutunderscore{#1_\finish}% \else \globaldefs = 1 % everything in the txi-LL files needs to persist \input txi-#1.tex \fi \closein 1 \endgroup % end raw TeX \endgroup} % % If they passed de_DE, and txi-de_DE.tex doesn't exist, % try txi-de.tex. % \gdef\documentlanguagetrywithoutunderscore#1_#2\finish{% \openin 1 txi-#1.tex \ifeof 1 \errhelp = \nolanghelp \errmessage{Cannot read language file txi-#1.tex}% \else \globaldefs = 1 % everything in the txi-LL files needs to persist \input txi-#1.tex \fi \closein 1 } }% end of special _ catcode % \newhelp\nolanghelp{The given language definition file cannot be found or is empty. Maybe you need to install it? Putting it in the current directory should work if nowhere else does.} % This macro is called from txi-??.tex files; the first argument is the % \language name to set (without the "\lang@" prefix), the second and % third args are \{left,right}hyphenmin. % % The language names to pass are determined when the format is built. % See the etex.log file created at that time, e.g., % /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log. % % With TeX Live 2008, etex now includes hyphenation patterns for all % available languages. This means we can support hyphenation in % Texinfo, at least to some extent. (This still doesn't solve the % accented characters problem.) % \catcode`@=11 \def\txisetlanguage#1#2#3{% % do not set the language if the name is undefined in the current TeX. \expandafter\ifx\csname lang@#1\endcsname \relax \message{no patterns for #1}% \else \global\language = \csname lang@#1\endcsname \fi % but there is no harm in adjusting the hyphenmin values regardless. \global\lefthyphenmin = #2\relax \global\righthyphenmin = #3\relax } % Helpers for encodings. % Set the catcode of characters 128 through 255 to the specified number. % \def\setnonasciicharscatcode#1{% \count255=128 \loop\ifnum\count255<256 \global\catcode\count255=#1\relax \advance\count255 by 1 \repeat } \def\setnonasciicharscatcodenonglobal#1{% \count255=128 \loop\ifnum\count255<256 \catcode\count255=#1\relax \advance\count255 by 1 \repeat } % @documentencoding sets the definition of non-ASCII characters % according to the specified encoding. % \parseargdef\documentencoding{% % Encoding being declared for the document. \def\declaredencoding{\csname #1.enc\endcsname}% % % Supported encodings: names converted to tokens in order to be able % to compare them with \ifx. \def\ascii{\csname US-ASCII.enc\endcsname}% \def\latnine{\csname ISO-8859-15.enc\endcsname}% \def\latone{\csname ISO-8859-1.enc\endcsname}% \def\lattwo{\csname ISO-8859-2.enc\endcsname}% \def\utfeight{\csname UTF-8.enc\endcsname}% % \ifx \declaredencoding \ascii \asciichardefs % \else \ifx \declaredencoding \lattwo \setnonasciicharscatcode\active \lattwochardefs % \else \ifx \declaredencoding \latone \setnonasciicharscatcode\active \latonechardefs % \else \ifx \declaredencoding \latnine \setnonasciicharscatcode\active \latninechardefs % \else \ifx \declaredencoding \utfeight \setnonasciicharscatcode\active \utfeightchardefs % \else \message{Unknown document encoding #1, ignoring.}% % \fi % utfeight \fi % latnine \fi % latone \fi % lattwo \fi % ascii } % A message to be logged when using a character that isn't available % the default font encoding (OT1). % \def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}} % Take account of \c (plain) vs. \, (Texinfo) difference. \def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi} % First, make active non-ASCII characters in order for them to be % correctly categorized when TeX reads the replacement text of % macros containing the character definitions. \setnonasciicharscatcode\active % % Latin1 (ISO-8859-1) character definitions. \def\latonechardefs{% \gdef^^a0{\tie} \gdef^^a1{\exclamdown} \gdef^^a2{\missingcharmsg{CENT SIGN}} \gdef^^a3{{\pounds}} \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} \gdef^^a5{\missingcharmsg{YEN SIGN}} \gdef^^a6{\missingcharmsg{BROKEN BAR}} \gdef^^a7{\S} \gdef^^a8{\"{}} \gdef^^a9{\copyright} \gdef^^aa{\ordf} \gdef^^ab{\guillemetleft} \gdef^^ac{$\lnot$} \gdef^^ad{\-} \gdef^^ae{\registeredsymbol} \gdef^^af{\={}} % \gdef^^b0{\textdegree} \gdef^^b1{$\pm$} \gdef^^b2{$^2$} \gdef^^b3{$^3$} \gdef^^b4{\'{}} \gdef^^b5{$\mu$} \gdef^^b6{\P} % \gdef^^b7{$^.$} \gdef^^b8{\cedilla\ } \gdef^^b9{$^1$} \gdef^^ba{\ordm} % \gdef^^bb{\guillemetright} \gdef^^bc{$1\over4$} \gdef^^bd{$1\over2$} \gdef^^be{$3\over4$} \gdef^^bf{\questiondown} % \gdef^^c0{\`A} \gdef^^c1{\'A} \gdef^^c2{\^A} \gdef^^c3{\~A} \gdef^^c4{\"A} \gdef^^c5{\ringaccent A} \gdef^^c6{\AE} \gdef^^c7{\cedilla C} \gdef^^c8{\`E} \gdef^^c9{\'E} \gdef^^ca{\^E} \gdef^^cb{\"E} \gdef^^cc{\`I} \gdef^^cd{\'I} \gdef^^ce{\^I} \gdef^^cf{\"I} % \gdef^^d0{\DH} \gdef^^d1{\~N} \gdef^^d2{\`O} \gdef^^d3{\'O} \gdef^^d4{\^O} \gdef^^d5{\~O} \gdef^^d6{\"O} \gdef^^d7{$\times$} \gdef^^d8{\O} \gdef^^d9{\`U} \gdef^^da{\'U} \gdef^^db{\^U} \gdef^^dc{\"U} \gdef^^dd{\'Y} \gdef^^de{\TH} \gdef^^df{\ss} % \gdef^^e0{\`a} \gdef^^e1{\'a} \gdef^^e2{\^a} \gdef^^e3{\~a} \gdef^^e4{\"a} \gdef^^e5{\ringaccent a} \gdef^^e6{\ae} \gdef^^e7{\cedilla c} \gdef^^e8{\`e} \gdef^^e9{\'e} \gdef^^ea{\^e} \gdef^^eb{\"e} \gdef^^ec{\`{\dotless i}} \gdef^^ed{\'{\dotless i}} \gdef^^ee{\^{\dotless i}} \gdef^^ef{\"{\dotless i}} % \gdef^^f0{\dh} \gdef^^f1{\~n} \gdef^^f2{\`o} \gdef^^f3{\'o} \gdef^^f4{\^o} \gdef^^f5{\~o} \gdef^^f6{\"o} \gdef^^f7{$\div$} \gdef^^f8{\o} \gdef^^f9{\`u} \gdef^^fa{\'u} \gdef^^fb{\^u} \gdef^^fc{\"u} \gdef^^fd{\'y} \gdef^^fe{\th} \gdef^^ff{\"y} } % Latin9 (ISO-8859-15) encoding character definitions. \def\latninechardefs{% % Encoding is almost identical to Latin1. \latonechardefs % \gdef^^a4{\euro} \gdef^^a6{\v S} \gdef^^a8{\v s} \gdef^^b4{\v Z} \gdef^^b8{\v z} \gdef^^bc{\OE} \gdef^^bd{\oe} \gdef^^be{\"Y} } % Latin2 (ISO-8859-2) character definitions. \def\lattwochardefs{% \gdef^^a0{\tie} \gdef^^a1{\ogonek{A}} \gdef^^a2{\u{}} \gdef^^a3{\L} \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} \gdef^^a5{\v L} \gdef^^a6{\'S} \gdef^^a7{\S} \gdef^^a8{\"{}} \gdef^^a9{\v S} \gdef^^aa{\cedilla S} \gdef^^ab{\v T} \gdef^^ac{\'Z} \gdef^^ad{\-} \gdef^^ae{\v Z} \gdef^^af{\dotaccent Z} % \gdef^^b0{\textdegree} \gdef^^b1{\ogonek{a}} \gdef^^b2{\ogonek{ }} \gdef^^b3{\l} \gdef^^b4{\'{}} \gdef^^b5{\v l} \gdef^^b6{\'s} \gdef^^b7{\v{}} \gdef^^b8{\cedilla\ } \gdef^^b9{\v s} \gdef^^ba{\cedilla s} \gdef^^bb{\v t} \gdef^^bc{\'z} \gdef^^bd{\H{}} \gdef^^be{\v z} \gdef^^bf{\dotaccent z} % \gdef^^c0{\'R} \gdef^^c1{\'A} \gdef^^c2{\^A} \gdef^^c3{\u A} \gdef^^c4{\"A} \gdef^^c5{\'L} \gdef^^c6{\'C} \gdef^^c7{\cedilla C} \gdef^^c8{\v C} \gdef^^c9{\'E} \gdef^^ca{\ogonek{E}} \gdef^^cb{\"E} \gdef^^cc{\v E} \gdef^^cd{\'I} \gdef^^ce{\^I} \gdef^^cf{\v D} % \gdef^^d0{\DH} \gdef^^d1{\'N} \gdef^^d2{\v N} \gdef^^d3{\'O} \gdef^^d4{\^O} \gdef^^d5{\H O} \gdef^^d6{\"O} \gdef^^d7{$\times$} \gdef^^d8{\v R} \gdef^^d9{\ringaccent U} \gdef^^da{\'U} \gdef^^db{\H U} \gdef^^dc{\"U} \gdef^^dd{\'Y} \gdef^^de{\cedilla T} \gdef^^df{\ss} % \gdef^^e0{\'r} \gdef^^e1{\'a} \gdef^^e2{\^a} \gdef^^e3{\u a} \gdef^^e4{\"a} \gdef^^e5{\'l} \gdef^^e6{\'c} \gdef^^e7{\cedilla c} \gdef^^e8{\v c} \gdef^^e9{\'e} \gdef^^ea{\ogonek{e}} \gdef^^eb{\"e} \gdef^^ec{\v e} \gdef^^ed{\'{\dotless{i}}} \gdef^^ee{\^{\dotless{i}}} \gdef^^ef{\v d} % \gdef^^f0{\dh} \gdef^^f1{\'n} \gdef^^f2{\v n} \gdef^^f3{\'o} \gdef^^f4{\^o} \gdef^^f5{\H o} \gdef^^f6{\"o} \gdef^^f7{$\div$} \gdef^^f8{\v r} \gdef^^f9{\ringaccent u} \gdef^^fa{\'u} \gdef^^fb{\H u} \gdef^^fc{\"u} \gdef^^fd{\'y} \gdef^^fe{\cedilla t} \gdef^^ff{\dotaccent{}} } % UTF-8 character definitions. % % This code to support UTF-8 is based on LaTeX's utf8.def, with some % changes for Texinfo conventions. It is included here under the GPL by % permission from Frank Mittelbach and the LaTeX team. % \newcount\countUTFx \newcount\countUTFy \newcount\countUTFz \gdef\UTFviiiTwoOctets#1#2{\expandafter \UTFviiiDefined\csname u8:#1\string #2\endcsname} % \gdef\UTFviiiThreeOctets#1#2#3{\expandafter \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname} % \gdef\UTFviiiFourOctets#1#2#3#4{\expandafter \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname} \gdef\UTFviiiDefined#1{% \ifx #1\relax \message{\linenumber Unicode char \string #1 not defined for Texinfo}% \else \expandafter #1% \fi } \begingroup \catcode`\~13 \catcode`\"12 \def\UTFviiiLoop{% \global\catcode\countUTFx\active \uccode`\~\countUTFx \uppercase\expandafter{\UTFviiiTmp}% \advance\countUTFx by 1 \ifnum\countUTFx < \countUTFy \expandafter\UTFviiiLoop \fi} \countUTFx = "C2 \countUTFy = "E0 \def\UTFviiiTmp{% \xdef~{\noexpand\UTFviiiTwoOctets\string~}} \UTFviiiLoop \countUTFx = "E0 \countUTFy = "F0 \def\UTFviiiTmp{% \xdef~{\noexpand\UTFviiiThreeOctets\string~}} \UTFviiiLoop \countUTFx = "F0 \countUTFy = "F4 \def\UTFviiiTmp{% \xdef~{\noexpand\UTFviiiFourOctets\string~}} \UTFviiiLoop \endgroup \begingroup \catcode`\"=12 \catcode`\<=12 \catcode`\.=12 \catcode`\,=12 \catcode`\;=12 \catcode`\!=12 \catcode`\~=13 \gdef\DeclareUnicodeCharacter#1#2{% \countUTFz = "#1\relax %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}% \begingroup \parseXMLCharref \def\UTFviiiTwoOctets##1##2{% \csname u8:##1\string ##2\endcsname}% \def\UTFviiiThreeOctets##1##2##3{% \csname u8:##1\string ##2\string ##3\endcsname}% \def\UTFviiiFourOctets##1##2##3##4{% \csname u8:##1\string ##2\string ##3\string ##4\endcsname}% \expandafter\expandafter\expandafter\expandafter \expandafter\expandafter\expandafter \gdef\UTFviiiTmp{#2}% \endgroup} \gdef\parseXMLCharref{% \ifnum\countUTFz < "A0\relax \errhelp = \EMsimple \errmessage{Cannot define Unicode char value < 00A0}% \else\ifnum\countUTFz < "800\relax \parseUTFviiiA,% \parseUTFviiiB C\UTFviiiTwoOctets.,% \else\ifnum\countUTFz < "10000\relax \parseUTFviiiA;% \parseUTFviiiA,% \parseUTFviiiB E\UTFviiiThreeOctets.{,;}% \else \parseUTFviiiA;% \parseUTFviiiA,% \parseUTFviiiA!% \parseUTFviiiB F\UTFviiiFourOctets.{!,;}% \fi\fi\fi } \gdef\parseUTFviiiA#1{% \countUTFx = \countUTFz \divide\countUTFz by 64 \countUTFy = \countUTFz \multiply\countUTFz by 64 \advance\countUTFx by -\countUTFz \advance\countUTFx by 128 \uccode `#1\countUTFx \countUTFz = \countUTFy} \gdef\parseUTFviiiB#1#2#3#4{% \advance\countUTFz by "#10\relax \uccode `#3\countUTFz \uppercase{\gdef\UTFviiiTmp{#2#3#4}}} \endgroup \def\utfeightchardefs{% \DeclareUnicodeCharacter{00A0}{\tie} \DeclareUnicodeCharacter{00A1}{\exclamdown} \DeclareUnicodeCharacter{00A3}{\pounds} \DeclareUnicodeCharacter{00A8}{\"{ }} \DeclareUnicodeCharacter{00A9}{\copyright} \DeclareUnicodeCharacter{00AA}{\ordf} \DeclareUnicodeCharacter{00AB}{\guillemetleft} \DeclareUnicodeCharacter{00AD}{\-} \DeclareUnicodeCharacter{00AE}{\registeredsymbol} \DeclareUnicodeCharacter{00AF}{\={ }} \DeclareUnicodeCharacter{00B0}{\ringaccent{ }} \DeclareUnicodeCharacter{00B4}{\'{ }} \DeclareUnicodeCharacter{00B8}{\cedilla{ }} \DeclareUnicodeCharacter{00BA}{\ordm} \DeclareUnicodeCharacter{00BB}{\guillemetright} \DeclareUnicodeCharacter{00BF}{\questiondown} \DeclareUnicodeCharacter{00C0}{\`A} \DeclareUnicodeCharacter{00C1}{\'A} \DeclareUnicodeCharacter{00C2}{\^A} \DeclareUnicodeCharacter{00C3}{\~A} \DeclareUnicodeCharacter{00C4}{\"A} \DeclareUnicodeCharacter{00C5}{\AA} \DeclareUnicodeCharacter{00C6}{\AE} \DeclareUnicodeCharacter{00C7}{\cedilla{C}} \DeclareUnicodeCharacter{00C8}{\`E} \DeclareUnicodeCharacter{00C9}{\'E} \DeclareUnicodeCharacter{00CA}{\^E} \DeclareUnicodeCharacter{00CB}{\"E} \DeclareUnicodeCharacter{00CC}{\`I} \DeclareUnicodeCharacter{00CD}{\'I} \DeclareUnicodeCharacter{00CE}{\^I} \DeclareUnicodeCharacter{00CF}{\"I} \DeclareUnicodeCharacter{00D0}{\DH} \DeclareUnicodeCharacter{00D1}{\~N} \DeclareUnicodeCharacter{00D2}{\`O} \DeclareUnicodeCharacter{00D3}{\'O} \DeclareUnicodeCharacter{00D4}{\^O} \DeclareUnicodeCharacter{00D5}{\~O} \DeclareUnicodeCharacter{00D6}{\"O} \DeclareUnicodeCharacter{00D8}{\O} \DeclareUnicodeCharacter{00D9}{\`U} \DeclareUnicodeCharacter{00DA}{\'U} \DeclareUnicodeCharacter{00DB}{\^U} \DeclareUnicodeCharacter{00DC}{\"U} \DeclareUnicodeCharacter{00DD}{\'Y} \DeclareUnicodeCharacter{00DE}{\TH} \DeclareUnicodeCharacter{00DF}{\ss} \DeclareUnicodeCharacter{00E0}{\`a} \DeclareUnicodeCharacter{00E1}{\'a} \DeclareUnicodeCharacter{00E2}{\^a} \DeclareUnicodeCharacter{00E3}{\~a} \DeclareUnicodeCharacter{00E4}{\"a} \DeclareUnicodeCharacter{00E5}{\aa} \DeclareUnicodeCharacter{00E6}{\ae} \DeclareUnicodeCharacter{00E7}{\cedilla{c}} \DeclareUnicodeCharacter{00E8}{\`e} \DeclareUnicodeCharacter{00E9}{\'e} \DeclareUnicodeCharacter{00EA}{\^e} \DeclareUnicodeCharacter{00EB}{\"e} \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}} \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}} \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}} \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}} \DeclareUnicodeCharacter{00F0}{\dh} \DeclareUnicodeCharacter{00F1}{\~n} \DeclareUnicodeCharacter{00F2}{\`o} \DeclareUnicodeCharacter{00F3}{\'o} \DeclareUnicodeCharacter{00F4}{\^o} \DeclareUnicodeCharacter{00F5}{\~o} \DeclareUnicodeCharacter{00F6}{\"o} \DeclareUnicodeCharacter{00F8}{\o} \DeclareUnicodeCharacter{00F9}{\`u} \DeclareUnicodeCharacter{00FA}{\'u} \DeclareUnicodeCharacter{00FB}{\^u} \DeclareUnicodeCharacter{00FC}{\"u} \DeclareUnicodeCharacter{00FD}{\'y} \DeclareUnicodeCharacter{00FE}{\th} \DeclareUnicodeCharacter{00FF}{\"y} \DeclareUnicodeCharacter{0100}{\=A} \DeclareUnicodeCharacter{0101}{\=a} \DeclareUnicodeCharacter{0102}{\u{A}} \DeclareUnicodeCharacter{0103}{\u{a}} \DeclareUnicodeCharacter{0104}{\ogonek{A}} \DeclareUnicodeCharacter{0105}{\ogonek{a}} \DeclareUnicodeCharacter{0106}{\'C} \DeclareUnicodeCharacter{0107}{\'c} \DeclareUnicodeCharacter{0108}{\^C} \DeclareUnicodeCharacter{0109}{\^c} \DeclareUnicodeCharacter{0118}{\ogonek{E}} \DeclareUnicodeCharacter{0119}{\ogonek{e}} \DeclareUnicodeCharacter{010A}{\dotaccent{C}} \DeclareUnicodeCharacter{010B}{\dotaccent{c}} \DeclareUnicodeCharacter{010C}{\v{C}} \DeclareUnicodeCharacter{010D}{\v{c}} \DeclareUnicodeCharacter{010E}{\v{D}} \DeclareUnicodeCharacter{0112}{\=E} \DeclareUnicodeCharacter{0113}{\=e} \DeclareUnicodeCharacter{0114}{\u{E}} \DeclareUnicodeCharacter{0115}{\u{e}} \DeclareUnicodeCharacter{0116}{\dotaccent{E}} \DeclareUnicodeCharacter{0117}{\dotaccent{e}} \DeclareUnicodeCharacter{011A}{\v{E}} \DeclareUnicodeCharacter{011B}{\v{e}} \DeclareUnicodeCharacter{011C}{\^G} \DeclareUnicodeCharacter{011D}{\^g} \DeclareUnicodeCharacter{011E}{\u{G}} \DeclareUnicodeCharacter{011F}{\u{g}} \DeclareUnicodeCharacter{0120}{\dotaccent{G}} \DeclareUnicodeCharacter{0121}{\dotaccent{g}} \DeclareUnicodeCharacter{0124}{\^H} \DeclareUnicodeCharacter{0125}{\^h} \DeclareUnicodeCharacter{0128}{\~I} \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}} \DeclareUnicodeCharacter{012A}{\=I} \DeclareUnicodeCharacter{012B}{\={\dotless{i}}} \DeclareUnicodeCharacter{012C}{\u{I}} \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}} \DeclareUnicodeCharacter{0130}{\dotaccent{I}} \DeclareUnicodeCharacter{0131}{\dotless{i}} \DeclareUnicodeCharacter{0132}{IJ} \DeclareUnicodeCharacter{0133}{ij} \DeclareUnicodeCharacter{0134}{\^J} \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}} \DeclareUnicodeCharacter{0139}{\'L} \DeclareUnicodeCharacter{013A}{\'l} \DeclareUnicodeCharacter{0141}{\L} \DeclareUnicodeCharacter{0142}{\l} \DeclareUnicodeCharacter{0143}{\'N} \DeclareUnicodeCharacter{0144}{\'n} \DeclareUnicodeCharacter{0147}{\v{N}} \DeclareUnicodeCharacter{0148}{\v{n}} \DeclareUnicodeCharacter{014C}{\=O} \DeclareUnicodeCharacter{014D}{\=o} \DeclareUnicodeCharacter{014E}{\u{O}} \DeclareUnicodeCharacter{014F}{\u{o}} \DeclareUnicodeCharacter{0150}{\H{O}} \DeclareUnicodeCharacter{0151}{\H{o}} \DeclareUnicodeCharacter{0152}{\OE} \DeclareUnicodeCharacter{0153}{\oe} \DeclareUnicodeCharacter{0154}{\'R} \DeclareUnicodeCharacter{0155}{\'r} \DeclareUnicodeCharacter{0158}{\v{R}} \DeclareUnicodeCharacter{0159}{\v{r}} \DeclareUnicodeCharacter{015A}{\'S} \DeclareUnicodeCharacter{015B}{\'s} \DeclareUnicodeCharacter{015C}{\^S} \DeclareUnicodeCharacter{015D}{\^s} \DeclareUnicodeCharacter{015E}{\cedilla{S}} \DeclareUnicodeCharacter{015F}{\cedilla{s}} \DeclareUnicodeCharacter{0160}{\v{S}} \DeclareUnicodeCharacter{0161}{\v{s}} \DeclareUnicodeCharacter{0162}{\cedilla{t}} \DeclareUnicodeCharacter{0163}{\cedilla{T}} \DeclareUnicodeCharacter{0164}{\v{T}} \DeclareUnicodeCharacter{0168}{\~U} \DeclareUnicodeCharacter{0169}{\~u} \DeclareUnicodeCharacter{016A}{\=U} \DeclareUnicodeCharacter{016B}{\=u} \DeclareUnicodeCharacter{016C}{\u{U}} \DeclareUnicodeCharacter{016D}{\u{u}} \DeclareUnicodeCharacter{016E}{\ringaccent{U}} \DeclareUnicodeCharacter{016F}{\ringaccent{u}} \DeclareUnicodeCharacter{0170}{\H{U}} \DeclareUnicodeCharacter{0171}{\H{u}} \DeclareUnicodeCharacter{0174}{\^W} \DeclareUnicodeCharacter{0175}{\^w} \DeclareUnicodeCharacter{0176}{\^Y} \DeclareUnicodeCharacter{0177}{\^y} \DeclareUnicodeCharacter{0178}{\"Y} \DeclareUnicodeCharacter{0179}{\'Z} \DeclareUnicodeCharacter{017A}{\'z} \DeclareUnicodeCharacter{017B}{\dotaccent{Z}} \DeclareUnicodeCharacter{017C}{\dotaccent{z}} \DeclareUnicodeCharacter{017D}{\v{Z}} \DeclareUnicodeCharacter{017E}{\v{z}} \DeclareUnicodeCharacter{01C4}{D\v{Z}} \DeclareUnicodeCharacter{01C5}{D\v{z}} \DeclareUnicodeCharacter{01C6}{d\v{z}} \DeclareUnicodeCharacter{01C7}{LJ} \DeclareUnicodeCharacter{01C8}{Lj} \DeclareUnicodeCharacter{01C9}{lj} \DeclareUnicodeCharacter{01CA}{NJ} \DeclareUnicodeCharacter{01CB}{Nj} \DeclareUnicodeCharacter{01CC}{nj} \DeclareUnicodeCharacter{01CD}{\v{A}} \DeclareUnicodeCharacter{01CE}{\v{a}} \DeclareUnicodeCharacter{01CF}{\v{I}} \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}} \DeclareUnicodeCharacter{01D1}{\v{O}} \DeclareUnicodeCharacter{01D2}{\v{o}} \DeclareUnicodeCharacter{01D3}{\v{U}} \DeclareUnicodeCharacter{01D4}{\v{u}} \DeclareUnicodeCharacter{01E2}{\={\AE}} \DeclareUnicodeCharacter{01E3}{\={\ae}} \DeclareUnicodeCharacter{01E6}{\v{G}} \DeclareUnicodeCharacter{01E7}{\v{g}} \DeclareUnicodeCharacter{01E8}{\v{K}} \DeclareUnicodeCharacter{01E9}{\v{k}} \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}} \DeclareUnicodeCharacter{01F1}{DZ} \DeclareUnicodeCharacter{01F2}{Dz} \DeclareUnicodeCharacter{01F3}{dz} \DeclareUnicodeCharacter{01F4}{\'G} \DeclareUnicodeCharacter{01F5}{\'g} \DeclareUnicodeCharacter{01F8}{\`N} \DeclareUnicodeCharacter{01F9}{\`n} \DeclareUnicodeCharacter{01FC}{\'{\AE}} \DeclareUnicodeCharacter{01FD}{\'{\ae}} \DeclareUnicodeCharacter{01FE}{\'{\O}} \DeclareUnicodeCharacter{01FF}{\'{\o}} \DeclareUnicodeCharacter{021E}{\v{H}} \DeclareUnicodeCharacter{021F}{\v{h}} \DeclareUnicodeCharacter{0226}{\dotaccent{A}} \DeclareUnicodeCharacter{0227}{\dotaccent{a}} \DeclareUnicodeCharacter{0228}{\cedilla{E}} \DeclareUnicodeCharacter{0229}{\cedilla{e}} \DeclareUnicodeCharacter{022E}{\dotaccent{O}} \DeclareUnicodeCharacter{022F}{\dotaccent{o}} \DeclareUnicodeCharacter{0232}{\=Y} \DeclareUnicodeCharacter{0233}{\=y} \DeclareUnicodeCharacter{0237}{\dotless{j}} \DeclareUnicodeCharacter{02DB}{\ogonek{ }} \DeclareUnicodeCharacter{1E02}{\dotaccent{B}} \DeclareUnicodeCharacter{1E03}{\dotaccent{b}} \DeclareUnicodeCharacter{1E04}{\udotaccent{B}} \DeclareUnicodeCharacter{1E05}{\udotaccent{b}} \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}} \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}} \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}} \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}} \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}} \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}} \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}} \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}} \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}} \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}} \DeclareUnicodeCharacter{1E20}{\=G} \DeclareUnicodeCharacter{1E21}{\=g} \DeclareUnicodeCharacter{1E22}{\dotaccent{H}} \DeclareUnicodeCharacter{1E23}{\dotaccent{h}} \DeclareUnicodeCharacter{1E24}{\udotaccent{H}} \DeclareUnicodeCharacter{1E25}{\udotaccent{h}} \DeclareUnicodeCharacter{1E26}{\"H} \DeclareUnicodeCharacter{1E27}{\"h} \DeclareUnicodeCharacter{1E30}{\'K} \DeclareUnicodeCharacter{1E31}{\'k} \DeclareUnicodeCharacter{1E32}{\udotaccent{K}} \DeclareUnicodeCharacter{1E33}{\udotaccent{k}} \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}} \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}} \DeclareUnicodeCharacter{1E36}{\udotaccent{L}} \DeclareUnicodeCharacter{1E37}{\udotaccent{l}} \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}} \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}} \DeclareUnicodeCharacter{1E3E}{\'M} \DeclareUnicodeCharacter{1E3F}{\'m} \DeclareUnicodeCharacter{1E40}{\dotaccent{M}} \DeclareUnicodeCharacter{1E41}{\dotaccent{m}} \DeclareUnicodeCharacter{1E42}{\udotaccent{M}} \DeclareUnicodeCharacter{1E43}{\udotaccent{m}} \DeclareUnicodeCharacter{1E44}{\dotaccent{N}} \DeclareUnicodeCharacter{1E45}{\dotaccent{n}} \DeclareUnicodeCharacter{1E46}{\udotaccent{N}} \DeclareUnicodeCharacter{1E47}{\udotaccent{n}} \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}} \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}} \DeclareUnicodeCharacter{1E54}{\'P} \DeclareUnicodeCharacter{1E55}{\'p} \DeclareUnicodeCharacter{1E56}{\dotaccent{P}} \DeclareUnicodeCharacter{1E57}{\dotaccent{p}} \DeclareUnicodeCharacter{1E58}{\dotaccent{R}} \DeclareUnicodeCharacter{1E59}{\dotaccent{r}} \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}} \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}} \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}} \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}} \DeclareUnicodeCharacter{1E60}{\dotaccent{S}} \DeclareUnicodeCharacter{1E61}{\dotaccent{s}} \DeclareUnicodeCharacter{1E62}{\udotaccent{S}} \DeclareUnicodeCharacter{1E63}{\udotaccent{s}} \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}} \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}} \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}} \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}} \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}} \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}} \DeclareUnicodeCharacter{1E7C}{\~V} \DeclareUnicodeCharacter{1E7D}{\~v} \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}} \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}} \DeclareUnicodeCharacter{1E80}{\`W} \DeclareUnicodeCharacter{1E81}{\`w} \DeclareUnicodeCharacter{1E82}{\'W} \DeclareUnicodeCharacter{1E83}{\'w} \DeclareUnicodeCharacter{1E84}{\"W} \DeclareUnicodeCharacter{1E85}{\"w} \DeclareUnicodeCharacter{1E86}{\dotaccent{W}} \DeclareUnicodeCharacter{1E87}{\dotaccent{w}} \DeclareUnicodeCharacter{1E88}{\udotaccent{W}} \DeclareUnicodeCharacter{1E89}{\udotaccent{w}} \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}} \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}} \DeclareUnicodeCharacter{1E8C}{\"X} \DeclareUnicodeCharacter{1E8D}{\"x} \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}} \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}} \DeclareUnicodeCharacter{1E90}{\^Z} \DeclareUnicodeCharacter{1E91}{\^z} \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}} \DeclareUnicodeCharacter{1E93}{\udotaccent{z}} \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}} \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}} \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}} \DeclareUnicodeCharacter{1E97}{\"t} \DeclareUnicodeCharacter{1E98}{\ringaccent{w}} \DeclareUnicodeCharacter{1E99}{\ringaccent{y}} \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}} \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}} \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}} \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}} \DeclareUnicodeCharacter{1EBC}{\~E} \DeclareUnicodeCharacter{1EBD}{\~e} \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}} \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}} \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}} \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}} \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}} \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}} \DeclareUnicodeCharacter{1EF2}{\`Y} \DeclareUnicodeCharacter{1EF3}{\`y} \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}} \DeclareUnicodeCharacter{1EF8}{\~Y} \DeclareUnicodeCharacter{1EF9}{\~y} \DeclareUnicodeCharacter{2013}{--} \DeclareUnicodeCharacter{2014}{---} \DeclareUnicodeCharacter{2018}{\quoteleft} \DeclareUnicodeCharacter{2019}{\quoteright} \DeclareUnicodeCharacter{201A}{\quotesinglbase} \DeclareUnicodeCharacter{201C}{\quotedblleft} \DeclareUnicodeCharacter{201D}{\quotedblright} \DeclareUnicodeCharacter{201E}{\quotedblbase} \DeclareUnicodeCharacter{2022}{\bullet} \DeclareUnicodeCharacter{2026}{\dots} \DeclareUnicodeCharacter{2039}{\guilsinglleft} \DeclareUnicodeCharacter{203A}{\guilsinglright} \DeclareUnicodeCharacter{20AC}{\euro} \DeclareUnicodeCharacter{2192}{\expansion} \DeclareUnicodeCharacter{21D2}{\result} \DeclareUnicodeCharacter{2212}{\minus} \DeclareUnicodeCharacter{2217}{\point} \DeclareUnicodeCharacter{2261}{\equiv} }% end of \utfeightchardefs % US-ASCII character definitions. \def\asciichardefs{% nothing need be done \relax } % Make non-ASCII characters printable again for compatibility with % existing Texinfo documents that may use them, even without declaring a % document encoding. % \setnonasciicharscatcode \other \message{formatting,} \newdimen\defaultparindent \defaultparindent = 15pt \chapheadingskip = 15pt plus 4pt minus 2pt \secheadingskip = 12pt plus 3pt minus 2pt \subsecheadingskip = 9pt plus 2pt minus 2pt % Prevent underfull vbox error messages. \vbadness = 10000 % Don't be very finicky about underfull hboxes, either. \hbadness = 6666 % Following George Bush, get rid of widows and orphans. \widowpenalty=10000 \clubpenalty=10000 % Use TeX 3.0's \emergencystretch to help line breaking, but if we're % using an old version of TeX, don't do anything. We want the amount of % stretch added to depend on the line length, hence the dependence on % \hsize. We call this whenever the paper size is set. % \def\setemergencystretch{% \ifx\emergencystretch\thisisundefined % Allow us to assign to \emergencystretch anyway. \def\emergencystretch{\dimen0}% \else \emergencystretch = .15\hsize \fi } % Parameters in order: 1) textheight; 2) textwidth; % 3) voffset; 4) hoffset; 5) binding offset; 6) topskip; % 7) physical page height; 8) physical page width. % % We also call \setleading{\textleading}, so the caller should define % \textleading. The caller should also set \parskip. % \def\internalpagesizes#1#2#3#4#5#6#7#8{% \voffset = #3\relax \topskip = #6\relax \splittopskip = \topskip % \vsize = #1\relax \advance\vsize by \topskip \outervsize = \vsize \advance\outervsize by 2\topandbottommargin \pageheight = \vsize % \hsize = #2\relax \outerhsize = \hsize \advance\outerhsize by 0.5in \pagewidth = \hsize % \normaloffset = #4\relax \bindingoffset = #5\relax % \ifpdf \pdfpageheight #7\relax \pdfpagewidth #8\relax % if we don't reset these, they will remain at "1 true in" of % whatever layout pdftex was dumped with. \pdfhorigin = 1 true in \pdfvorigin = 1 true in \fi % \setleading{\textleading} % \parindent = \defaultparindent \setemergencystretch } % @letterpaper (the default). \def\letterpaper{{\globaldefs = 1 \parskip = 3pt plus 2pt minus 1pt \textleading = 13.2pt % % If page is nothing but text, make it come out even. \internalpagesizes{607.2pt}{6in}% that's 46 lines {\voffset}{.25in}% {\bindingoffset}{36pt}% {11in}{8.5in}% }} % Use @smallbook to reset parameters for 7x9.25 trim size. \def\smallbook{{\globaldefs = 1 \parskip = 2pt plus 1pt \textleading = 12pt % \internalpagesizes{7.5in}{5in}% {-.2in}{0in}% {\bindingoffset}{16pt}% {9.25in}{7in}% % \lispnarrowing = 0.3in \tolerance = 700 \hfuzz = 1pt \contentsrightmargin = 0pt \defbodyindent = .5cm }} % Use @smallerbook to reset parameters for 6x9 trim size. % (Just testing, parameters still in flux.) \def\smallerbook{{\globaldefs = 1 \parskip = 1.5pt plus 1pt \textleading = 12pt % \internalpagesizes{7.4in}{4.8in}% {-.2in}{-.4in}% {0pt}{14pt}% {9in}{6in}% % \lispnarrowing = 0.25in \tolerance = 700 \hfuzz = 1pt \contentsrightmargin = 0pt \defbodyindent = .4cm }} % Use @afourpaper to print on European A4 paper. \def\afourpaper{{\globaldefs = 1 \parskip = 3pt plus 2pt minus 1pt \textleading = 13.2pt % % Double-side printing via postscript on Laserjet 4050 % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm. % To change the settings for a different printer or situation, adjust % \normaloffset until the front-side and back-side texts align. Then % do the same for \bindingoffset. You can set these for testing in % your texinfo source file like this: % @tex % \global\normaloffset = -6mm % \global\bindingoffset = 10mm % @end tex \internalpagesizes{673.2pt}{160mm}% that's 51 lines {\voffset}{\hoffset}% {\bindingoffset}{44pt}% {297mm}{210mm}% % \tolerance = 700 \hfuzz = 1pt \contentsrightmargin = 0pt \defbodyindent = 5mm }} % Use @afivepaper to print on European A5 paper. % From romildo@urano.iceb.ufop.br, 2 July 2000. % He also recommends making @example and @lisp be small. \def\afivepaper{{\globaldefs = 1 \parskip = 2pt plus 1pt minus 0.1pt \textleading = 12.5pt % \internalpagesizes{160mm}{120mm}% {\voffset}{\hoffset}% {\bindingoffset}{8pt}% {210mm}{148mm}% % \lispnarrowing = 0.2in \tolerance = 800 \hfuzz = 1.2pt \contentsrightmargin = 0pt \defbodyindent = 2mm \tableindent = 12mm }} % A specific text layout, 24x15cm overall, intended for A4 paper. \def\afourlatex{{\globaldefs = 1 \afourpaper \internalpagesizes{237mm}{150mm}% {\voffset}{4.6mm}% {\bindingoffset}{7mm}% {297mm}{210mm}% % % Must explicitly reset to 0 because we call \afourpaper. \globaldefs = 0 }} % Use @afourwide to print on A4 paper in landscape format. \def\afourwide{{\globaldefs = 1 \afourpaper \internalpagesizes{241mm}{165mm}% {\voffset}{-2.95mm}% {\bindingoffset}{7mm}% {297mm}{210mm}% \globaldefs = 0 }} % @pagesizes TEXTHEIGHT[,TEXTWIDTH] % Perhaps we should allow setting the margins, \topskip, \parskip, % and/or leading, also. Or perhaps we should compute them somehow. % \parseargdef\pagesizes{\pagesizesyyy #1,,\finish} \def\pagesizesyyy#1,#2,#3\finish{{% \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi \globaldefs = 1 % \parskip = 3pt plus 2pt minus 1pt \setleading{\textleading}% % \dimen0 = #1\relax \advance\dimen0 by \voffset % \dimen2 = \hsize \advance\dimen2 by \normaloffset % \internalpagesizes{#1}{\hsize}% {\voffset}{\normaloffset}% {\bindingoffset}{44pt}% {\dimen0}{\dimen2}% }} % Set default to letter. % \letterpaper \message{and turning on texinfo input format.} \def^^L{\par} % remove \outer, so ^L can appear in an @comment % DEL is a comment character, in case @c does not suffice. \catcode`\^^? = 14 % Define macros to output various characters with catcode for normal text. \catcode`\"=\other \def\normaldoublequote{"} \catcode`\$=\other \def\normaldollar{$}%$ font-lock fix \catcode`\+=\other \def\normalplus{+} \catcode`\<=\other \def\normalless{<} \catcode`\>=\other \def\normalgreater{>} \catcode`\^=\other \def\normalcaret{^} \catcode`\_=\other \def\normalunderscore{_} \catcode`\|=\other \def\normalverticalbar{|} \catcode`\~=\other \def\normaltilde{~} % This macro is used to make a character print one way in \tt % (where it can probably be output as-is), and another way in other fonts, % where something hairier probably needs to be done. % % #1 is what to print if we are indeed using \tt; #2 is what to print % otherwise. Since all the Computer Modern typewriter fonts have zero % interword stretch (and shrink), and it is reasonable to expect all % typewriter fonts to have this, we can check that font parameter. % \def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi} % Same as above, but check for italic font. Actually this also catches % non-italic slanted fonts since it is impossible to distinguish them from % italic fonts. But since this is only used by $ and it uses \sl anyway % this is not a problem. \def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi} % Turn off all special characters except @ % (and those which the user can use as if they were ordinary). % Most of these we simply print from the \tt font, but for some, we can % use math or other variants that look better in normal text. \catcode`\"=\active \def\activedoublequote{{\tt\char34}} \let"=\activedoublequote \catcode`\~=\active \def~{{\tt\char126}} \chardef\hat=`\^ \catcode`\^=\active \def^{{\tt \hat}} \catcode`\_=\active \def_{\ifusingtt\normalunderscore\_} \let\realunder=_ % Subroutine for the previous macro. \def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em } \catcode`\|=\active \def|{{\tt\char124}} \chardef \less=`\< \catcode`\<=\active \def<{{\tt \less}} \chardef \gtr=`\> \catcode`\>=\active \def>{{\tt \gtr}} \catcode`\+=\active \def+{{\tt \char 43}} \catcode`\$=\active \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix % If a .fmt file is being used, characters that might appear in a file % name cannot be active until we have parsed the command line. % So turn them off again, and have \everyjob (or @setfilename) turn them on. % \otherifyactive is called near the end of this file. \def\otherifyactive{\catcode`+=\other \catcode`\_=\other} % Used sometimes to turn off (effectively) the active characters even after % parsing them. \def\turnoffactive{% \normalturnoffactive \otherbackslash } \catcode`\@=0 % \backslashcurfont outputs one backslash character in current font, % as in \char`\\. \global\chardef\backslashcurfont=`\\ \global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work % \realbackslash is an actual character `\' with catcode other, and % \doublebackslash is two of them (for the pdf outlines). {\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}} % In texinfo, backslash is an active character; it prints the backslash % in fixed width font. \catcode`\\=\active % @ for escape char from now on. % The story here is that in math mode, the \char of \backslashcurfont % ends up printing the roman \ from the math symbol font (because \char % in math mode uses the \mathcode, and plain.tex sets % \mathcode`\\="026E). It seems better for @backslashchar{} to always % print a typewriter backslash, hence we use an explicit \mathchar, % which is the decimal equivalent of "715c (class 7, e.g., use \fam; % ignored family value; char position "5C). We can't use " for the % usual hex value because it has already been made active. @def@normalbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}} @let@backslashchar = @normalbackslash % @backslashchar{} is for user documents. % On startup, @fixbackslash assigns: % @let \ = @normalbackslash % \rawbackslash defines an active \ to do \backslashcurfont. % \otherbackslash defines an active \ to be a literal `\' character with % catcode other. We switch back and forth between these. @gdef@rawbackslash{@let\=@backslashcurfont} @gdef@otherbackslash{@let\=@realbackslash} % Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of % the literal character `\'. % @def@normalturnoffactive{% @let"=@normaldoublequote @let$=@normaldollar %$ font-lock fix @let+=@normalplus @let<=@normalless @let>=@normalgreater @let\=@normalbackslash @let^=@normalcaret @let_=@normalunderscore @let|=@normalverticalbar @let~=@normaltilde @markupsetuplqdefault @markupsetuprqdefault @unsepspaces } % Make _ and + \other characters, temporarily. % This is canceled by @fixbackslash. @otherifyactive % If a .fmt file is being used, we don't want the `\input texinfo' to show up. % That is what \eatinput is for; after that, the `\' should revert to printing % a backslash. % @gdef@eatinput input texinfo{@fixbackslash} @global@let\ = @eatinput % On the other hand, perhaps the file did not have a `\input texinfo'. Then % the first `\' in the file would cause an error. This macro tries to fix % that, assuming it is called before the first `\' could plausibly occur. % Also turn back on active characters that might appear in the input % file name, in case not using a pre-dumped format. % @gdef@fixbackslash{% @ifx\@eatinput @let\ = @normalbackslash @fi @catcode`+=@active @catcode`@_=@active } % Say @foo, not \foo, in error messages. @escapechar = `@@ % These (along with & and #) are made active for url-breaking, so need % active definitions as the normal characters. @def@normaldot{.} @def@normalquest{?} @def@normalslash{/} % These look ok in all fonts, so just make them not special. % @hashchar{} gets its own user-level command, because of #line. @catcode`@& = @other @def@normalamp{&} @catcode`@# = @other @def@normalhash{#} @catcode`@% = @other @def@normalpercent{%} @let @hashchar = @normalhash @c Finally, make ` and ' active, so that txicodequoteundirected and @c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we @c don't make ` and ' active, @code will not get them as active chars. @c Do this last of all since we use ` in the previous @catcode assignments. @catcode`@'=@active @catcode`@`=@active @markupsetuplqdefault @markupsetuprqdefault @c Local variables: @c eval: (add-hook 'write-file-hooks 'time-stamp) @c page-delimiter: "^\\\\message" @c time-stamp-start: "def\\\\texinfoversion{" @c time-stamp-format: "%:y-%02m-%02d.%02H" @c time-stamp-end: "}" @c End: @c vim:sw=2: @ignore arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115 @end ignore flex-2.5.39/doc/version.texi0000644000175000017500000000014612314621336016151 0ustar srivastasrivasta@set UPDATED 6 December 2012 @set UPDATED-MONTH December 2012 @set EDITION 2.5.39 @set VERSION 2.5.39 flex-2.5.39/doc/flex.10000644000175000017500000000723312314621336014615 0ustar srivastasrivasta.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.40.11. .TH FLEX "1" "March 2014" "flex 2.5.39" "User Commands" .SH NAME flex \- the fast lexical analyser generator .SH SYNOPSIS .B flex [\fIOPTIONS\fR] [\fIFILE\fR]... .SH DESCRIPTION Generates programs that perform pattern\-matching on text. .SS "Table Compression:" .TP \fB\-Ca\fR, \fB\-\-align\fR trade off larger tables for better memory alignment .TP \fB\-Ce\fR, \fB\-\-ecs\fR construct equivalence classes .TP \fB\-Cf\fR do not compress tables; use \fB\-f\fR representation .TP \fB\-CF\fR do not compress tables; use \fB\-F\fR representation .TP \fB\-Cm\fR, \fB\-\-meta\-ecs\fR construct meta\-equivalence classes .TP \fB\-Cr\fR, \fB\-\-read\fR use read() instead of stdio for scanner input .TP \fB\-f\fR, \fB\-\-full\fR generate fast, large scanner. Same as \fB\-Cfr\fR .TP \fB\-F\fR, \fB\-\-fast\fR use alternate table representation. Same as \fB\-CFr\fR .TP \fB\-Cem\fR default compression (same as \fB\-\-ecs\fR \fB\-\-meta\-ecs\fR) .SS "Debugging:" .TP \fB\-d\fR, \fB\-\-debug\fR enable debug mode in scanner .TP \fB\-b\fR, \fB\-\-backup\fR write backing\-up information to lex.backup .TP \fB\-p\fR, \fB\-\-perf\-report\fR write performance report to stderr .TP \fB\-s\fR, \fB\-\-nodefault\fR suppress default rule to ECHO unmatched text .TP \fB\-T\fR, \fB\-\-trace\fR flex should run in trace mode .TP \fB\-w\fR, \fB\-\-nowarn\fR do not generate warnings .TP \fB\-v\fR, \fB\-\-verbose\fR write summary of scanner statistics to stdout .SH FILES .TP \fB\-o\fR, \fB\-\-outfile\fR=\fIFILE\fR specify output filename .TP \fB\-S\fR, \fB\-\-skel\fR=\fIFILE\fR specify skeleton file .TP \fB\-t\fR, \fB\-\-stdout\fR write scanner on stdout instead of lex.yy.c .TP \fB\-\-yyclass\fR=\fINAME\fR name of C++ class .TP \fB\-\-header\-file\fR=\fIFILE\fR create a C header file in addition to the scanner .HP \fB\-\-tables\-file\fR[=\fIFILE\fR] write tables to FILE .SS "Scanner behavior:" .TP \fB\-7\fR, \fB\-\-7bit\fR generate 7\-bit scanner .TP \fB\-8\fR, \fB\-\-8bit\fR generate 8\-bit scanner .TP \fB\-B\fR, \fB\-\-batch\fR generate batch scanner (opposite of \fB\-I\fR) .TP \fB\-i\fR, \fB\-\-case\-insensitive\fR ignore case in patterns .TP \fB\-l\fR, \fB\-\-lex\-compat\fR maximal compatibility with original lex .TP \fB\-X\fR, \fB\-\-posix\-compat\fR maximal compatibility with POSIX lex .TP \fB\-I\fR, \fB\-\-interactive\fR generate interactive scanner (opposite of \fB\-B\fR) .TP \fB\-\-yylineno\fR track line count in yylineno .SS "Generated code:" .TP \-+, \fB\-\-c\fR++ generate C++ scanner class .TP \fB\-Dmacro\fR[=\fIdefn\fR] #define macro defn (default defn is '1') .TP \fB\-L\fR, \fB\-\-noline\fR suppress #line directives in scanner .TP \fB\-P\fR, \fB\-\-prefix\fR=\fISTRING\fR use STRING as prefix instead of "yy" .TP \fB\-R\fR, \fB\-\-reentrant\fR generate a reentrant C scanner .TP \fB\-\-bison\-bridge\fR scanner for bison pure parser. .TP \fB\-\-bison\-locations\fR include yylloc support. .TP \fB\-\-stdinit\fR initialize yyin/yyout to stdin/stdout .HP \fB\-\-noansi\-definitions\fR old\-style function definitions .TP \fB\-\-noansi\-prototypes\fR empty parameter list in prototypes .TP \fB\-\-nounistd\fR do not include .TP \fB\-\-noFUNCTION\fR do not generate a particular FUNCTION .SS "Miscellaneous:" .TP \fB\-c\fR do\-nothing POSIX option .TP \fB\-n\fR do\-nothing POSIX option .HP \-? .TP \fB\-h\fR, \fB\-\-help\fR produce this help message .TP \fB\-V\fR, \fB\-\-version\fR report flex version .SH "SEE ALSO" The full documentation for .B flex is maintained as a Texinfo manual. If the .B info and .B flex programs are properly installed at your site, the command .IP .B info flex .PP should give you access to the complete manual. flex-2.5.39/doc/Makefile.am0000644000175000017500000000101512314546064015625 0ustar srivastasrivastahelp2man = @HELP2MAN@ info_TEXINFOS = flex.texi dist_man_MANS = flex.1 dist_doc_DATA= flex.pdf CLEANFILES = \ flex.aux \ flex.cp \ flex.cps \ flex.fn \ flex.fns \ flex.hk \ flex.hks \ flex.ky \ flex.log \ flex.op \ flex.ops \ flex.pg \ flex.toc \ flex.tp \ flex.tps \ flex.vr \ flex.vrs $(dist_man_MANS): $(top_srcdir)/main.c for i in $(dist_man_MANS) ; do \ $(help2man) --name='$(PACKAGE_NAME)' \ --section=`echo $$i | sed -e 's/.*\.\([^.]*\)$$/\1/'` \ ../flex$(EXEEXT) > $$i || rm -f $$i ; \ done flex-2.5.39/nfa.c0000644000175000017500000004351412314546064013746 0ustar srivastasrivasta/* nfa - NFA construction routines */ /* Copyright (c) 1990 The Regents of the University of California. */ /* All rights reserved. */ /* This code is derived from software contributed to Berkeley by */ /* Vern Paxson. */ /* The United States Government has rights in this work pursuant */ /* to contract no. DE-AC03-76SF00098 between the United States */ /* Department of Energy and the University of California. */ /* This file is part of flex. */ /* Redistribution and use in source and binary forms, with or without */ /* modification, are permitted provided that the following conditions */ /* are met: */ /* 1. Redistributions of source code must retain the above copyright */ /* notice, this list of conditions and the following disclaimer. */ /* 2. Redistributions in binary form must reproduce the above copyright */ /* notice, this list of conditions and the following disclaimer in the */ /* documentation and/or other materials provided with the distribution. */ /* Neither the name of the University nor the names of its contributors */ /* may be used to endorse or promote products derived from this software */ /* without specific prior written permission. */ /* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR */ /* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED */ /* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */ /* PURPOSE. */ #include "flexdef.h" /* declare functions that have forward references */ int dupmachine PROTO ((int)); void mkxtion PROTO ((int, int)); /* add_accept - add an accepting state to a machine * * accepting_number becomes mach's accepting number. */ void add_accept (mach, accepting_number) int mach, accepting_number; { /* Hang the accepting number off an epsilon state. if it is associated * with a state that has a non-epsilon out-transition, then the state * will accept BEFORE it makes that transition, i.e., one character * too soon. */ if (transchar[finalst[mach]] == SYM_EPSILON) accptnum[finalst[mach]] = accepting_number; else { int astate = mkstate (SYM_EPSILON); accptnum[astate] = accepting_number; (void) link_machines (mach, astate); } } /* copysingl - make a given number of copies of a singleton machine * * synopsis * * newsng = copysingl( singl, num ); * * newsng - a new singleton composed of num copies of singl * singl - a singleton machine * num - the number of copies of singl to be present in newsng */ int copysingl (singl, num) int singl, num; { int copy, i; copy = mkstate (SYM_EPSILON); for (i = 1; i <= num; ++i) copy = link_machines (copy, dupmachine (singl)); return copy; } /* dumpnfa - debugging routine to write out an nfa */ void dumpnfa (state1) int state1; { int sym, tsp1, tsp2, anum, ns; fprintf (stderr, _ ("\n\n********** beginning dump of nfa with start state %d\n"), state1); /* We probably should loop starting at firstst[state1] and going to * lastst[state1], but they're not maintained properly when we "or" * all of the rules together. So we use our knowledge that the machine * starts at state 1 and ends at lastnfa. */ /* for ( ns = firstst[state1]; ns <= lastst[state1]; ++ns ) */ for (ns = 1; ns <= lastnfa; ++ns) { fprintf (stderr, _("state # %4d\t"), ns); sym = transchar[ns]; tsp1 = trans1[ns]; tsp2 = trans2[ns]; anum = accptnum[ns]; fprintf (stderr, "%3d: %4d, %4d", sym, tsp1, tsp2); if (anum != NIL) fprintf (stderr, " [%d]", anum); fprintf (stderr, "\n"); } fprintf (stderr, _("********** end of dump\n")); } /* dupmachine - make a duplicate of a given machine * * synopsis * * copy = dupmachine( mach ); * * copy - holds duplicate of mach * mach - machine to be duplicated * * note that the copy of mach is NOT an exact duplicate; rather, all the * transition states values are adjusted so that the copy is self-contained, * as the original should have been. * * also note that the original MUST be contiguous, with its low and high * states accessible by the arrays firstst and lastst */ int dupmachine (mach) int mach; { int i, init, state_offset; int state = 0; int last = lastst[mach]; for (i = firstst[mach]; i <= last; ++i) { state = mkstate (transchar[i]); if (trans1[i] != NO_TRANSITION) { mkxtion (finalst[state], trans1[i] + state - i); if (transchar[i] == SYM_EPSILON && trans2[i] != NO_TRANSITION) mkxtion (finalst[state], trans2[i] + state - i); } accptnum[state] = accptnum[i]; } if (state == 0) flexfatal (_("empty machine in dupmachine()")); state_offset = state - i + 1; init = mach + state_offset; firstst[init] = firstst[mach] + state_offset; finalst[init] = finalst[mach] + state_offset; lastst[init] = lastst[mach] + state_offset; return init; } /* finish_rule - finish up the processing for a rule * * An accepting number is added to the given machine. If variable_trail_rule * is true then the rule has trailing context and both the head and trail * are variable size. Otherwise if headcnt or trailcnt is non-zero then * the machine recognizes a pattern with trailing context and headcnt is * the number of characters in the matched part of the pattern, or zero * if the matched part has variable length. trailcnt is the number of * trailing context characters in the pattern, or zero if the trailing * context has variable length. */ void finish_rule (mach, variable_trail_rule, headcnt, trailcnt, pcont_act) int mach, variable_trail_rule, headcnt, trailcnt, pcont_act; { char action_text[MAXLINE]; add_accept (mach, num_rules); /* We did this in new_rule(), but it often gets the wrong * number because we do it before we start parsing the current rule. */ rule_linenum[num_rules] = linenum; /* If this is a continued action, then the line-number has already * been updated, giving us the wrong number. */ if (continued_action) --rule_linenum[num_rules]; /* If the previous rule was continued action, then we inherit the * previous newline flag, possibly overriding the current one. */ if (pcont_act && rule_has_nl[num_rules - 1]) rule_has_nl[num_rules] = true; snprintf (action_text, sizeof(action_text), "case %d:\n", num_rules); add_action (action_text); if (rule_has_nl[num_rules]) { snprintf (action_text, sizeof(action_text), "/* rule %d can match eol */\n", num_rules); add_action (action_text); } if (variable_trail_rule) { rule_type[num_rules] = RULE_VARIABLE; if (performance_report > 0) fprintf (stderr, _ ("Variable trailing context rule at line %d\n"), rule_linenum[num_rules]); variable_trailing_context_rules = true; } else { rule_type[num_rules] = RULE_NORMAL; if (headcnt > 0 || trailcnt > 0) { /* Do trailing context magic to not match the trailing * characters. */ char *scanner_cp = "YY_G(yy_c_buf_p) = yy_cp"; char *scanner_bp = "yy_bp"; add_action ("*yy_cp = YY_G(yy_hold_char); /* undo effects of setting up yytext */\n"); if (headcnt > 0) { if (rule_has_nl[num_rules]) { snprintf (action_text, sizeof(action_text), "YY_LINENO_REWIND_TO(%s + %d);\n", scanner_bp, headcnt); add_action (action_text); } snprintf (action_text, sizeof(action_text), "%s = %s + %d;\n", scanner_cp, scanner_bp, headcnt); add_action (action_text); } else { if (rule_has_nl[num_rules]) { snprintf (action_text, sizeof(action_text), "YY_LINENO_REWIND_TO(yy_cp - %d);\n", trailcnt); add_action (action_text); } snprintf (action_text, sizeof(action_text), "%s -= %d;\n", scanner_cp, trailcnt); add_action (action_text); } add_action ("YY_DO_BEFORE_ACTION; /* set up yytext again */\n"); } } /* Okay, in the action code at this point yytext and yyleng have * their proper final values for this rule, so here's the point * to do any user action. But don't do it for continued actions, * as that'll result in multiple YY_RULE_SETUP's. */ if (!continued_action) add_action ("YY_RULE_SETUP\n"); line_directive_out ((FILE *) 0, 1); } /* link_machines - connect two machines together * * synopsis * * new = link_machines( first, last ); * * new - a machine constructed by connecting first to last * first - the machine whose successor is to be last * last - the machine whose predecessor is to be first * * note: this routine concatenates the machine first with the machine * last to produce a machine new which will pattern-match first first * and then last, and will fail if either of the sub-patterns fails. * FIRST is set to new by the operation. last is unmolested. */ int link_machines (first, last) int first, last; { if (first == NIL) return last; else if (last == NIL) return first; else { mkxtion (finalst[first], last); finalst[first] = finalst[last]; lastst[first] = MAX (lastst[first], lastst[last]); firstst[first] = MIN (firstst[first], firstst[last]); return first; } } /* mark_beginning_as_normal - mark each "beginning" state in a machine * as being a "normal" (i.e., not trailing context- * associated) states * * The "beginning" states are the epsilon closure of the first state */ void mark_beginning_as_normal (mach) register int mach; { switch (state_type[mach]) { case STATE_NORMAL: /* Oh, we've already visited here. */ return; case STATE_TRAILING_CONTEXT: state_type[mach] = STATE_NORMAL; if (transchar[mach] == SYM_EPSILON) { if (trans1[mach] != NO_TRANSITION) mark_beginning_as_normal (trans1[mach]); if (trans2[mach] != NO_TRANSITION) mark_beginning_as_normal (trans2[mach]); } break; default: flexerror (_ ("bad state type in mark_beginning_as_normal()")); break; } } /* mkbranch - make a machine that branches to two machines * * synopsis * * branch = mkbranch( first, second ); * * branch - a machine which matches either first's pattern or second's * first, second - machines whose patterns are to be or'ed (the | operator) * * Note that first and second are NEITHER destroyed by the operation. Also, * the resulting machine CANNOT be used with any other "mk" operation except * more mkbranch's. Compare with mkor() */ int mkbranch (first, second) int first, second; { int eps; if (first == NO_TRANSITION) return second; else if (second == NO_TRANSITION) return first; eps = mkstate (SYM_EPSILON); mkxtion (eps, first); mkxtion (eps, second); return eps; } /* mkclos - convert a machine into a closure * * synopsis * new = mkclos( state ); * * new - a new state which matches the closure of "state" */ int mkclos (state) int state; { return mkopt (mkposcl (state)); } /* mkopt - make a machine optional * * synopsis * * new = mkopt( mach ); * * new - a machine which optionally matches whatever mach matched * mach - the machine to make optional * * notes: * 1. mach must be the last machine created * 2. mach is destroyed by the call */ int mkopt (mach) int mach; { int eps; if (!SUPER_FREE_EPSILON (finalst[mach])) { eps = mkstate (SYM_EPSILON); mach = link_machines (mach, eps); } /* Can't skimp on the following if FREE_EPSILON(mach) is true because * some state interior to "mach" might point back to the beginning * for a closure. */ eps = mkstate (SYM_EPSILON); mach = link_machines (eps, mach); mkxtion (mach, finalst[mach]); return mach; } /* mkor - make a machine that matches either one of two machines * * synopsis * * new = mkor( first, second ); * * new - a machine which matches either first's pattern or second's * first, second - machines whose patterns are to be or'ed (the | operator) * * note that first and second are both destroyed by the operation * the code is rather convoluted because an attempt is made to minimize * the number of epsilon states needed */ int mkor (first, second) int first, second; { int eps, orend; if (first == NIL) return second; else if (second == NIL) return first; else { /* See comment in mkopt() about why we can't use the first * state of "first" or "second" if they satisfy "FREE_EPSILON". */ eps = mkstate (SYM_EPSILON); first = link_machines (eps, first); mkxtion (first, second); if (SUPER_FREE_EPSILON (finalst[first]) && accptnum[finalst[first]] == NIL) { orend = finalst[first]; mkxtion (finalst[second], orend); } else if (SUPER_FREE_EPSILON (finalst[second]) && accptnum[finalst[second]] == NIL) { orend = finalst[second]; mkxtion (finalst[first], orend); } else { eps = mkstate (SYM_EPSILON); first = link_machines (first, eps); orend = finalst[first]; mkxtion (finalst[second], orend); } } finalst[first] = orend; return first; } /* mkposcl - convert a machine into a positive closure * * synopsis * new = mkposcl( state ); * * new - a machine matching the positive closure of "state" */ int mkposcl (state) int state; { int eps; if (SUPER_FREE_EPSILON (finalst[state])) { mkxtion (finalst[state], state); return state; } else { eps = mkstate (SYM_EPSILON); mkxtion (eps, state); return link_machines (state, eps); } } /* mkrep - make a replicated machine * * synopsis * new = mkrep( mach, lb, ub ); * * new - a machine that matches whatever "mach" matched from "lb" * number of times to "ub" number of times * * note * if "ub" is INFINITE_REPEAT then "new" matches "lb" or more occurrences of "mach" */ int mkrep (mach, lb, ub) int mach, lb, ub; { int base_mach, tail, copy, i; base_mach = copysingl (mach, lb - 1); if (ub == INFINITE_REPEAT) { copy = dupmachine (mach); mach = link_machines (mach, link_machines (base_mach, mkclos (copy))); } else { tail = mkstate (SYM_EPSILON); for (i = lb; i < ub; ++i) { copy = dupmachine (mach); tail = mkopt (link_machines (copy, tail)); } mach = link_machines (mach, link_machines (base_mach, tail)); } return mach; } /* mkstate - create a state with a transition on a given symbol * * synopsis * * state = mkstate( sym ); * * state - a new state matching sym * sym - the symbol the new state is to have an out-transition on * * note that this routine makes new states in ascending order through the * state array (and increments LASTNFA accordingly). The routine DUPMACHINE * relies on machines being made in ascending order and that they are * CONTIGUOUS. Change it and you will have to rewrite DUPMACHINE (kludge * that it admittedly is) */ int mkstate (sym) int sym; { if (++lastnfa >= current_mns) { if ((current_mns += MNS_INCREMENT) >= maximum_mns) lerrif (_ ("input rules are too complicated (>= %d NFA states)"), current_mns); ++num_reallocs; firstst = reallocate_integer_array (firstst, current_mns); lastst = reallocate_integer_array (lastst, current_mns); finalst = reallocate_integer_array (finalst, current_mns); transchar = reallocate_integer_array (transchar, current_mns); trans1 = reallocate_integer_array (trans1, current_mns); trans2 = reallocate_integer_array (trans2, current_mns); accptnum = reallocate_integer_array (accptnum, current_mns); assoc_rule = reallocate_integer_array (assoc_rule, current_mns); state_type = reallocate_integer_array (state_type, current_mns); } firstst[lastnfa] = lastnfa; finalst[lastnfa] = lastnfa; lastst[lastnfa] = lastnfa; transchar[lastnfa] = sym; trans1[lastnfa] = NO_TRANSITION; trans2[lastnfa] = NO_TRANSITION; accptnum[lastnfa] = NIL; assoc_rule[lastnfa] = num_rules; state_type[lastnfa] = current_state_type; /* Fix up equivalence classes base on this transition. Note that any * character which has its own transition gets its own equivalence * class. Thus only characters which are only in character classes * have a chance at being in the same equivalence class. E.g. "a|b" * puts 'a' and 'b' into two different equivalence classes. "[ab]" * puts them in the same equivalence class (barring other differences * elsewhere in the input). */ if (sym < 0) { /* We don't have to update the equivalence classes since * that was already done when the ccl was created for the * first time. */ } else if (sym == SYM_EPSILON) ++numeps; else { check_char (sym); if (useecs) /* Map NUL's to csize. */ mkechar (sym ? sym : csize, nextecm, ecgroup); } return lastnfa; } /* mkxtion - make a transition from one state to another * * synopsis * * mkxtion( statefrom, stateto ); * * statefrom - the state from which the transition is to be made * stateto - the state to which the transition is to be made */ void mkxtion (statefrom, stateto) int statefrom, stateto; { if (trans1[statefrom] == NO_TRANSITION) trans1[statefrom] = stateto; else if ((transchar[statefrom] != SYM_EPSILON) || (trans2[statefrom] != NO_TRANSITION)) flexfatal (_("found too many transitions in mkxtion()")); else { /* second out-transition for an epsilon state */ ++eps2; trans2[statefrom] = stateto; } } /* new_rule - initialize for a new rule */ void new_rule () { if (++num_rules >= current_max_rules) { ++num_reallocs; current_max_rules += MAX_RULES_INCREMENT; rule_type = reallocate_integer_array (rule_type, current_max_rules); rule_linenum = reallocate_integer_array (rule_linenum, current_max_rules); rule_useful = reallocate_integer_array (rule_useful, current_max_rules); rule_has_nl = reallocate_bool_array (rule_has_nl, current_max_rules); } if (num_rules > MAX_RULE) lerrif (_("too many rules (> %d)!"), MAX_RULE); rule_linenum[num_rules] = linenum; rule_useful[num_rules] = false; rule_has_nl[num_rules] = false; } flex-2.5.39/missing0000755000175000017500000002415212314621560014425 0ustar srivastasrivasta#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2012-01-06.13; # UTC # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, # 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' sed_minuso='s/.* -o \([^ ]*\).*/\1/p' # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case $1 in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' autom4te touch the output file, or create a stub one automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file yacc create \`y.tab.[ch]', if possible, from existing .[ch] Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and \`g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; esac # normalize program name to check for. program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). This is about non-GNU programs, so use $1 not # $program. case $1 in lex*|yacc*) # Not GNU programs, they don't have --version. ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case $program in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case $f in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te*) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison*|yacc*) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if test $# -ne 1; then eval LASTARG=\${$#} case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.h fi ;; esac fi if test ! -f y.tab.h; then echo >y.tab.h fi if test ! -f y.tab.c; then echo 'main() { return 0; }' >y.tab.c fi ;; lex*|flex*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if test $# -ne 1; then eval LASTARG=\${$#} case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if test ! -f lex.yy.c; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit $? fi ;; makeinfo*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." # The file to touch is that specified with -o ... file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -z "$file"; then # ... or it is the one specified with @setfilename ... infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n ' /^@setfilename/{ s/.* \([^ ]*\) *$/\1/ p q }' $infile` # ... or it is derived from the source name (dir/f.texi becomes f.info) test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info fi # If the file does not exist, the user really needs makeinfo; # let's fail without touching anything. test -f $file || exit 1 touch $file ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: flex-2.5.39/yylex.c0000644000175000017500000000775612314546064014364 0ustar srivastasrivasta/* yylex - scanner front-end for flex */ /* Copyright (c) 1990 The Regents of the University of California. */ /* All rights reserved. */ /* This code is derived from software contributed to Berkeley by */ /* Vern Paxson. */ /* The United States Government has rights in this work pursuant */ /* to contract no. DE-AC03-76SF00098 between the United States */ /* Department of Energy and the University of California. */ /* This file is part of flex. */ /* Redistribution and use in source and binary forms, with or without */ /* modification, are permitted provided that the following conditions */ /* are met: */ /* 1. Redistributions of source code must retain the above copyright */ /* notice, this list of conditions and the following disclaimer. */ /* 2. Redistributions in binary form must reproduce the above copyright */ /* notice, this list of conditions and the following disclaimer in the */ /* documentation and/or other materials provided with the distribution. */ /* Neither the name of the University nor the names of its contributors */ /* may be used to endorse or promote products derived from this software */ /* without specific prior written permission. */ /* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR */ /* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED */ /* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */ /* PURPOSE. */ #include #include "flexdef.h" #include "parse.h" /* yylex - scan for a regular expression token */ int yylex () { int toktype; static int beglin = false; extern char *yytext; if (eofseen) toktype = EOF; else toktype = flexscan (); if (toktype == EOF || toktype == 0) { eofseen = 1; if (sectnum == 1) { synerr (_("premature EOF")); sectnum = 2; toktype = SECTEND; } else toktype = 0; } if (trace) { if (beglin) { fprintf (stderr, "%d\t", num_rules + 1); beglin = 0; } switch (toktype) { case '<': case '>': case '^': case '$': case '"': case '[': case ']': case '{': case '}': case '|': case '(': case ')': case '-': case '/': case '\\': case '?': case '.': case '*': case '+': case ',': (void) putc (toktype, stderr); break; case '\n': (void) putc ('\n', stderr); if (sectnum == 2) beglin = 1; break; case SCDECL: fputs ("%s", stderr); break; case XSCDECL: fputs ("%x", stderr); break; case SECTEND: fputs ("%%\n", stderr); /* We set beglin to be true so we'll start * writing out numbers as we echo rules. * flexscan() has already assigned sectnum. */ if (sectnum == 2) beglin = 1; break; case NAME: fprintf (stderr, "'%s'", nmstr); break; case CHAR: switch (yylval) { case '<': case '>': case '^': case '$': case '"': case '[': case ']': case '{': case '}': case '|': case '(': case ')': case '-': case '/': case '\\': case '?': case '.': case '*': case '+': case ',': fprintf (stderr, "\\%c", yylval); break; default: if (!isascii (yylval) || !isprint (yylval)) fprintf (stderr, "\\%.3o", (unsigned int) yylval); else (void) putc (yylval, stderr); break; } break; case NUMBER: fprintf (stderr, "%d", yylval); break; case PREVCCL: fprintf (stderr, "[%d]", yylval); break; case EOF_OP: fprintf (stderr, "<>"); break; case OPTION_OP: fprintf (stderr, "%s ", yytext); break; case OPT_OUTFILE: case OPT_PREFIX: case CCE_ALNUM: case CCE_ALPHA: case CCE_BLANK: case CCE_CNTRL: case CCE_DIGIT: case CCE_GRAPH: case CCE_LOWER: case CCE_PRINT: case CCE_PUNCT: case CCE_SPACE: case CCE_UPPER: case CCE_XDIGIT: fprintf (stderr, "%s", yytext); break; case 0: fprintf (stderr, _("End Marker\n")); break; default: fprintf (stderr, _ ("*Something Weird* - tok: %d val: %d\n"), toktype, yylval); break; } } return toktype; } flex-2.5.39/tables_shared.h0000644000175000017500000001200012314546064015771 0ustar srivastasrivasta#ifdef FLEX_SCANNER /* dnl tables_shared.h - tables serialization header dnl dnl Copyright (c) 1990 The Regents of the University of California. dnl All rights reserved. dnl dnl This code is derived from software contributed to Berkeley by dnl Vern Paxson. dnl dnl The United States Government has rights in this work pursuant dnl to contract no. DE-AC03-76SF00098 between the United States dnl Department of Energy and the University of California. dnl dnl This file is part of flex. dnl dnl Redistribution and use in source and binary forms, with or without dnl modification, are permitted provided that the following conditions dnl are met: dnl dnl 1. Redistributions of source code must retain the above copyright dnl notice, this list of conditions and the following disclaimer. dnl 2. Redistributions in binary form must reproduce the above copyright dnl notice, this list of conditions and the following disclaimer in the dnl documentation and/or other materials provided with the distribution. dnl dnl Neither the name of the University nor the names of its contributors dnl may be used to endorse or promote products derived from this software dnl without specific prior written permission. dnl dnl THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR dnl IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED dnl WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR dnl PURPOSE. dnl dnl This file is meant to be included in both the skeleton and the actual dnl flex code (hence the name "_shared"). */ #ifndef yyskel_static #define yyskel_static static #endif #else #ifndef yyskel_static #define yyskel_static #endif #endif /* Structures and prototypes for serializing flex tables. The * binary format is documented in the manual. * * Design considerations: * * - The format allows many tables per file. * - The tables can be streamed. * - All data is stored in network byte order. * - We do not hinder future unicode support. * - We can lookup tables by name. */ /** Magic number for serialized format. */ #ifndef YYTBL_MAGIC #define YYTBL_MAGIC 0xF13C57B1 #endif /** Calculate (0-7) = number bytes needed to pad n to next 64-bit boundary. */ #ifndef yypad64 #define yypad64(n) ((8-((n)%8))%8) #endif #ifndef YYTABLES_TYPES #define YYTABLES_TYPES /** Possible values for td_id field. Each one corresponds to a * scanner table of the same name. */ enum yytbl_id { YYTD_ID_ACCEPT = 0x01, /**< 1-dim ints */ YYTD_ID_BASE = 0x02, /**< 1-dim ints */ YYTD_ID_CHK = 0x03, /**< 1-dim ints */ YYTD_ID_DEF = 0x04, /**< 1-dim ints */ YYTD_ID_EC = 0x05, /**< 1-dim ints */ YYTD_ID_META = 0x06, /**< 1-dim ints */ YYTD_ID_NUL_TRANS = 0x07, /**< 1-dim ints, maybe indices */ YYTD_ID_NXT = 0x08, /**< may be 2 dimensional ints */ YYTD_ID_RULE_CAN_MATCH_EOL = 0x09, /**< 1-dim ints */ YYTD_ID_START_STATE_LIST = 0x0A, /**< 1-dim indices into trans tbl */ YYTD_ID_TRANSITION = 0x0B, /**< structs */ YYTD_ID_ACCLIST = 0x0C /**< 1-dim ints */ }; /** bit flags for t_flags field of struct yytbl_data */ enum yytbl_flags { /* These first three are mutually exclusive */ YYTD_DATA8 = 0x01, /**< data is an array of type flex_int8_t */ YYTD_DATA16 = 0x02, /**< data is an array of type flex_int16_t */ YYTD_DATA32 = 0x04, /**< data is an array of type flex_int32_t */ /* These two are mutually exclusive. */ YYTD_PTRANS = 0x08, /**< data is a list of indexes of entries into the expanded `yy_transition' array. See notes in manual. */ YYTD_STRUCT = 0x10 /**< data consists of yy_trans_info structs */ }; /* The serialized tables header. */ struct yytbl_hdr { flex_uint32_t th_magic; /**< Must be 0xF13C57B1 (comes from "Flex Table") */ flex_uint32_t th_hsize; /**< Size of this header in bytes. */ flex_uint32_t th_ssize; /**< Size of this dataset, in bytes, including header. */ flex_uint16_t th_flags; /**< Currently unused, must be 0 */ char *th_version; /**< Flex version string. NUL terminated. */ char *th_name; /**< The name of this table set. NUL terminated. */ }; /** A single serialized table */ struct yytbl_data { flex_uint16_t td_id; /**< enum yytbl_id table identifier */ flex_uint16_t td_flags; /**< how to interpret this data */ flex_uint32_t td_hilen; /**< num elements in highest dimension array */ flex_uint32_t td_lolen; /**< num elements in lowest dimension array */ void *td_data; /**< table data */ }; #endif /** Extract corresponding data size_t from td_flags */ #ifndef YYTDFLAGS2BYTES #define YYTDFLAGS2BYTES(td_flags)\ (((td_flags) & YYTD_DATA8)\ ? sizeof(flex_int8_t)\ :(((td_flags) & YYTD_DATA16)\ ? sizeof(flex_int16_t)\ :sizeof(flex_int32_t))) #endif #ifdef FLEX_SCANNER %not-for-header #endif yyskel_static flex_int32_t yytbl_calc_total_len (const struct yytbl_data *tbl); #ifdef FLEX_SCANNER %ok-for-header #endif /* vim:set noexpandtab cindent tabstop=8 softtabstop=0 shiftwidth=8 textwidth=0: */ flex-2.5.39/flexdef.h0000644000175000017500000012450712314546064014626 0ustar srivastasrivasta /* flexdef - definitions file for flex */ /* Copyright (c) 1990 The Regents of the University of California. */ /* All rights reserved. */ /* This code is derived from software contributed to Berkeley by */ /* Vern Paxson. */ /* The United States Government has rights in this work pursuant */ /* to contract no. DE-AC03-76SF00098 between the United States */ /* Department of Energy and the University of California. */ /* This file is part of flex. */ /* Redistribution and use in source and binary forms, with or without */ /* modification, are permitted provided that the following conditions */ /* are met: */ /* 1. Redistributions of source code must retain the above copyright */ /* notice, this list of conditions and the following disclaimer. */ /* 2. Redistributions in binary form must reproduce the above copyright */ /* notice, this list of conditions and the following disclaimer in the */ /* documentation and/or other materials provided with the distribution. */ /* Neither the name of the University nor the names of its contributors */ /* may be used to endorse or promote products derived from this software */ /* without specific prior written permission. */ /* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR */ /* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED */ /* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */ /* PURPOSE. */ #ifndef FLEXDEF_H #define FLEXDEF_H 1 #ifdef HAVE_CONFIG_H #include #endif /* AIX requires this to be the first thing in the file. */ #ifndef __GNUC__ # if HAVE_ALLOCA_H # include # else # ifdef _AIX #pragma alloca # else # ifndef alloca /* predefined by HP cc +Olibcalls */ char *alloca (); # endif # endif # endif #endif #ifdef STDC_HEADERS #include #include #include #include #include #include #include #endif #ifdef HAVE_ASSERT_H #include #else #define assert(Pred) #endif #ifdef HAVE_LIMITS_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_SYS_PARAMS_H #include #endif #ifdef HAVE_SYS_WAIT_H #include #endif #ifdef HAVE_STDBOOL_H #include #else #define bool int #define true 1 #define false 0 #endif #ifdef HAVE_REGEX_H #include #endif #include "flexint.h" /* We use gettext. So, when we write strings which should be translated, we mark them with _() */ #ifdef ENABLE_NLS #ifdef HAVE_LOCALE_H #include #endif /* HAVE_LOCALE_H */ #include "gettext.h" #define _(String) gettext (String) #else #define _(STRING) STRING #endif /* ENABLE_NLS */ /* Always be prepared to generate an 8-bit scanner. */ #define CSIZE 256 #define Char unsigned char /* Size of input alphabet - should be size of ASCII set. */ #ifndef DEFAULT_CSIZE #define DEFAULT_CSIZE 128 #endif #ifndef PROTO #if defined(__STDC__) #define PROTO(proto) proto #else #define PROTO(proto) () #endif #endif #ifdef VMS #ifndef __VMS_POSIX #define unlink remove #define SHORT_FILE_NAMES #endif #endif #ifdef MS_DOS #define SHORT_FILE_NAMES #endif /* Maximum line length we'll have to deal with. */ #define MAXLINE 2048 #ifndef MIN #define MIN(x,y) ((x) < (y) ? (x) : (y)) #endif #ifndef MAX #define MAX(x,y) ((x) > (y) ? (x) : (y)) #endif #ifndef ABS #define ABS(x) ((x) < 0 ? -(x) : (x)) #endif /* ANSI C does not guarantee that isascii() is defined */ #ifndef isascii #define isascii(c) ((c) <= 0177) #endif #define unspecified -1 /* Special chk[] values marking the slots taking by end-of-buffer and action * numbers. */ #define EOB_POSITION -1 #define ACTION_POSITION -2 /* Number of data items per line for -f output. */ #define NUMDATAITEMS 10 /* Number of lines of data in -f output before inserting a blank line for * readability. */ #define NUMDATALINES 10 /* transition_struct_out() definitions. */ #define TRANS_STRUCT_PRINT_LENGTH 14 /* Returns true if an nfa state has an epsilon out-transition slot * that can be used. This definition is currently not used. */ #define FREE_EPSILON(state) \ (transchar[state] == SYM_EPSILON && \ trans2[state] == NO_TRANSITION && \ finalst[state] != state) /* Returns true if an nfa state has an epsilon out-transition character * and both slots are free */ #define SUPER_FREE_EPSILON(state) \ (transchar[state] == SYM_EPSILON && \ trans1[state] == NO_TRANSITION) \ /* Maximum number of NFA states that can comprise a DFA state. It's real * big because if there's a lot of rules, the initial state will have a * huge epsilon closure. */ #define INITIAL_MAX_DFA_SIZE 750 #define MAX_DFA_SIZE_INCREMENT 750 /* A note on the following masks. They are used to mark accepting numbers * as being special. As such, they implicitly limit the number of accepting * numbers (i.e., rules) because if there are too many rules the rule numbers * will overload the mask bits. Fortunately, this limit is \large/ (0x2000 == * 8192) so unlikely to actually cause any problems. A check is made in * new_rule() to ensure that this limit is not reached. */ /* Mask to mark a trailing context accepting number. */ #define YY_TRAILING_MASK 0x2000 /* Mask to mark the accepting number of the "head" of a trailing context * rule. */ #define YY_TRAILING_HEAD_MASK 0x4000 /* Maximum number of rules, as outlined in the above note. */ #define MAX_RULE (YY_TRAILING_MASK - 1) /* NIL must be 0. If not, its special meaning when making equivalence classes * (it marks the representative of a given e.c.) will be unidentifiable. */ #define NIL 0 #define JAM -1 /* to mark a missing DFA transition */ #define NO_TRANSITION NIL #define UNIQUE -1 /* marks a symbol as an e.c. representative */ #define INFINITE_REPEAT -1 /* for x{5,} constructions */ #define INITIAL_MAX_CCLS 100 /* max number of unique character classes */ #define MAX_CCLS_INCREMENT 100 /* Size of table holding members of character classes. */ #define INITIAL_MAX_CCL_TBL_SIZE 500 #define MAX_CCL_TBL_SIZE_INCREMENT 250 #define INITIAL_MAX_RULES 100 /* default maximum number of rules */ #define MAX_RULES_INCREMENT 100 #define INITIAL_MNS 2000 /* default maximum number of nfa states */ #define MNS_INCREMENT 1000 /* amount to bump above by if it's not enough */ #define INITIAL_MAX_DFAS 1000 /* default maximum number of dfa states */ #define MAX_DFAS_INCREMENT 1000 #define JAMSTATE -32766 /* marks a reference to the state that always jams */ /* Maximum number of NFA states. */ #define MAXIMUM_MNS 31999 #define MAXIMUM_MNS_LONG 1999999999 /* Enough so that if it's subtracted from an NFA state number, the result * is guaranteed to be negative. */ #define MARKER_DIFFERENCE (maximum_mns+2) /* Maximum number of nxt/chk pairs for non-templates. */ #define INITIAL_MAX_XPAIRS 2000 #define MAX_XPAIRS_INCREMENT 2000 /* Maximum number of nxt/chk pairs needed for templates. */ #define INITIAL_MAX_TEMPLATE_XPAIRS 2500 #define MAX_TEMPLATE_XPAIRS_INCREMENT 2500 #define SYM_EPSILON (CSIZE + 1) /* to mark transitions on the symbol epsilon */ #define INITIAL_MAX_SCS 40 /* maximum number of start conditions */ #define MAX_SCS_INCREMENT 40 /* amount to bump by if it's not enough */ #define ONE_STACK_SIZE 500 /* stack of states with only one out-transition */ #define SAME_TRANS -1 /* transition is the same as "default" entry for state */ /* The following percentages are used to tune table compression: * The percentage the number of out-transitions a state must be of the * number of equivalence classes in order to be considered for table * compaction by using protos. */ #define PROTO_SIZE_PERCENTAGE 15 /* The percentage the number of homogeneous out-transitions of a state * must be of the number of total out-transitions of the state in order * that the state's transition table is first compared with a potential * template of the most common out-transition instead of with the first * proto in the proto queue. */ #define CHECK_COM_PERCENTAGE 50 /* The percentage the number of differences between a state's transition * table and the proto it was first compared with must be of the total * number of out-transitions of the state in order to keep the first * proto as a good match and not search any further. */ #define FIRST_MATCH_DIFF_PERCENTAGE 10 /* The percentage the number of differences between a state's transition * table and the most similar proto must be of the state's total number * of out-transitions to use the proto as an acceptable close match. */ #define ACCEPTABLE_DIFF_PERCENTAGE 50 /* The percentage the number of homogeneous out-transitions of a state * must be of the number of total out-transitions of the state in order * to consider making a template from the state. */ #define TEMPLATE_SAME_PERCENTAGE 60 /* The percentage the number of differences between a state's transition * table and the most similar proto must be of the state's total number * of out-transitions to create a new proto from the state. */ #define NEW_PROTO_DIFF_PERCENTAGE 20 /* The percentage the total number of out-transitions of a state must be * of the number of equivalence classes in order to consider trying to * fit the transition table into "holes" inside the nxt/chk table. */ #define INTERIOR_FIT_PERCENTAGE 15 /* Size of region set aside to cache the complete transition table of * protos on the proto queue to enable quick comparisons. */ #define PROT_SAVE_SIZE 2000 #define MSP 50 /* maximum number of saved protos (protos on the proto queue) */ /* Maximum number of out-transitions a state can have that we'll rummage * around through the interior of the internal fast table looking for a * spot for it. */ #define MAX_XTIONS_FULL_INTERIOR_FIT 4 /* Maximum number of rules which will be reported as being associated * with a DFA state. */ #define MAX_ASSOC_RULES 100 /* Number that, if used to subscript an array, has a good chance of producing * an error; should be small enough to fit into a short. */ #define BAD_SUBSCRIPT -32767 /* Absolute value of largest number that can be stored in a short, with a * bit of slop thrown in for general paranoia. */ #define MAX_SHORT 32700 /* Declarations for global variables. */ /* Variables for flags: * printstats - if true (-v), dump statistics * syntaxerror - true if a syntax error has been found * eofseen - true if we've seen an eof in the input file * ddebug - if true (-d), make a "debug" scanner * trace - if true (-T), trace processing * nowarn - if true (-w), do not generate warnings * spprdflt - if true (-s), suppress the default rule * interactive - if true (-I), generate an interactive scanner * lex_compat - if true (-l), maximize compatibility with AT&T lex * posix_compat - if true (-X), maximize compatibility with POSIX lex * do_yylineno - if true, generate code to maintain yylineno * useecs - if true (-Ce flag), use equivalence classes * fulltbl - if true (-Cf flag), don't compress the DFA state table * usemecs - if true (-Cm flag), use meta-equivalence classes * fullspd - if true (-F flag), use Jacobson method of table representation * gen_line_dirs - if true (i.e., no -L flag), generate #line directives * performance_report - if > 0 (i.e., -p flag), generate a report relating * to scanner performance; if > 1 (-p -p), report on minor performance * problems, too * backing_up_report - if true (i.e., -b flag), generate "lex.backup" file * listing backing-up states * C_plus_plus - if true (i.e., -+ flag), generate a C++ scanner class; * otherwise, a standard C scanner * reentrant - if true (-R), generate a reentrant C scanner. * bison_bridge_lval - if true (--bison-bridge), bison pure calling convention. * bison_bridge_lloc - if true (--bison-locations), bison yylloc. * long_align - if true (-Ca flag), favor long-word alignment. * use_read - if true (-f, -F, or -Cr) then use read() for scanner input; * otherwise, use fread(). * yytext_is_array - if true (i.e., %array directive), then declare * yytext as a array instead of a character pointer. Nice and inefficient. * do_yywrap - do yywrap() processing on EOF. If false, EOF treated as * "no more files". * csize - size of character set for the scanner we're generating; * 128 for 7-bit chars and 256 for 8-bit * yymore_used - if true, yymore() is used in input rules * reject - if true, generate back-up tables for REJECT macro * real_reject - if true, scanner really uses REJECT (as opposed to just * having "reject" set for variable trailing context) * continued_action - true if this rule's action is to "fall through" to * the next rule's action (i.e., the '|' action) * in_rule - true if we're inside an individual rule, false if not. * yymore_really_used - whether to treat yymore() as really used, regardless * of what we think based on references to it in the user's actions. * reject_really_used - same for REJECT */ extern int printstats, syntaxerror, eofseen, ddebug, trace, nowarn, spprdflt; extern int interactive, lex_compat, posix_compat, do_yylineno; extern int useecs, fulltbl, usemecs, fullspd; extern int gen_line_dirs, performance_report, backing_up_report; extern int reentrant, bison_bridge_lval, bison_bridge_lloc; extern bool ansi_func_defs, ansi_func_protos; extern int C_plus_plus, long_align, use_read, yytext_is_array, do_yywrap; extern int csize; extern int yymore_used, reject, real_reject, continued_action, in_rule; extern int yymore_really_used, reject_really_used; /* Variables used in the flex input routines: * datapos - characters on current output line * dataline - number of contiguous lines of data in current data * statement. Used to generate readable -f output * linenum - current input line number * skelfile - the skeleton file * skel - compiled-in skeleton array * skel_ind - index into "skel" array, if skelfile is nil * yyin - input file * backing_up_file - file to summarize backing-up states to * infilename - name of input file * outfilename - name of output file * headerfilename - name of the .h file to generate * did_outfilename - whether outfilename was explicitly set * prefix - the prefix used for externally visible names ("yy" by default) * yyclass - yyFlexLexer subclass to use for YY_DECL * do_stdinit - whether to initialize yyin/yyout to stdin/stdout * use_stdout - the -t flag * input_files - array holding names of input files * num_input_files - size of input_files array * program_name - name with which program was invoked * * action_array - array to hold the rule actions * action_size - size of action_array * defs1_offset - index where the user's section 1 definitions start * in action_array * prolog_offset - index where the prolog starts in action_array * action_offset - index where the non-prolog starts in action_array * action_index - index where the next action should go, with respect * to "action_array" */ extern int datapos, dataline, linenum; extern FILE *skelfile, *yyin, *backing_up_file; extern const char *skel[]; extern int skel_ind; extern char *infilename, *outfilename, *headerfilename; extern int did_outfilename; extern char *prefix, *yyclass, *extra_type; extern int do_stdinit, use_stdout; extern char **input_files; extern int num_input_files; extern char *program_name; extern char *action_array; extern int action_size; extern int defs1_offset, prolog_offset, action_offset, action_index; /* Variables for stack of states having only one out-transition: * onestate - state number * onesym - transition symbol * onenext - target state * onedef - default base entry * onesp - stack pointer */ extern int onestate[ONE_STACK_SIZE], onesym[ONE_STACK_SIZE]; extern int onenext[ONE_STACK_SIZE], onedef[ONE_STACK_SIZE], onesp; /* Variables for nfa machine data: * maximum_mns - maximal number of NFA states supported by tables * current_mns - current maximum on number of NFA states * num_rules - number of the last accepting state; also is number of * rules created so far * num_eof_rules - number of <> rules * default_rule - number of the default rule * current_max_rules - current maximum number of rules * lastnfa - last nfa state number created * firstst - physically the first state of a fragment * lastst - last physical state of fragment * finalst - last logical state of fragment * transchar - transition character * trans1 - transition state * trans2 - 2nd transition state for epsilons * accptnum - accepting number * assoc_rule - rule associated with this NFA state (or 0 if none) * state_type - a STATE_xxx type identifying whether the state is part * of a normal rule, the leading state in a trailing context * rule (i.e., the state which marks the transition from * recognizing the text-to-be-matched to the beginning of * the trailing context), or a subsequent state in a trailing * context rule * rule_type - a RULE_xxx type identifying whether this a ho-hum * normal rule or one which has variable head & trailing * context * rule_linenum - line number associated with rule * rule_useful - true if we've determined that the rule can be matched * rule_has_nl - true if rule could possibly match a newline * ccl_has_nl - true if current ccl could match a newline * nlch - default eol char */ extern int maximum_mns, current_mns, current_max_rules; extern int num_rules, num_eof_rules, default_rule, lastnfa; extern int *firstst, *lastst, *finalst, *transchar, *trans1, *trans2; extern int *accptnum, *assoc_rule, *state_type; extern int *rule_type, *rule_linenum, *rule_useful; extern bool *rule_has_nl, *ccl_has_nl; extern int nlch; /* Different types of states; values are useful as masks, as well, for * routines like check_trailing_context(). */ #define STATE_NORMAL 0x1 #define STATE_TRAILING_CONTEXT 0x2 /* Global holding current type of state we're making. */ extern int current_state_type; /* Different types of rules. */ #define RULE_NORMAL 0 #define RULE_VARIABLE 1 /* True if the input rules include a rule with both variable-length head * and trailing context, false otherwise. */ extern int variable_trailing_context_rules; /* Variables for protos: * numtemps - number of templates created * numprots - number of protos created * protprev - backlink to a more-recently used proto * protnext - forward link to a less-recently used proto * prottbl - base/def table entry for proto * protcomst - common state of proto * firstprot - number of the most recently used proto * lastprot - number of the least recently used proto * protsave contains the entire state array for protos */ extern int numtemps, numprots, protprev[MSP], protnext[MSP], prottbl[MSP]; extern int protcomst[MSP], firstprot, lastprot, protsave[PROT_SAVE_SIZE]; /* Variables for managing equivalence classes: * numecs - number of equivalence classes * nextecm - forward link of Equivalence Class members * ecgroup - class number or backward link of EC members * nummecs - number of meta-equivalence classes (used to compress * templates) * tecfwd - forward link of meta-equivalence classes members * tecbck - backward link of MEC's */ /* Reserve enough room in the equivalence class arrays so that we * can use the CSIZE'th element to hold equivalence class information * for the NUL character. Later we'll move this information into * the 0th element. */ extern int numecs, nextecm[CSIZE + 1], ecgroup[CSIZE + 1], nummecs; /* Meta-equivalence classes are indexed starting at 1, so it's possible * that they will require positions from 1 .. CSIZE, i.e., CSIZE + 1 * slots total (since the arrays are 0-based). nextecm[] and ecgroup[] * don't require the extra position since they're indexed from 1 .. CSIZE - 1. */ extern int tecfwd[CSIZE + 1], tecbck[CSIZE + 1]; /* Variables for start conditions: * lastsc - last start condition created * current_max_scs - current limit on number of start conditions * scset - set of rules active in start condition * scbol - set of rules active only at the beginning of line in a s.c. * scxclu - true if start condition is exclusive * sceof - true if start condition has EOF rule * scname - start condition name */ extern int lastsc, *scset, *scbol, *scxclu, *sceof; extern int current_max_scs; extern char **scname; /* Variables for dfa machine data: * current_max_dfa_size - current maximum number of NFA states in DFA * current_max_xpairs - current maximum number of non-template xtion pairs * current_max_template_xpairs - current maximum number of template pairs * current_max_dfas - current maximum number DFA states * lastdfa - last dfa state number created * nxt - state to enter upon reading character * chk - check value to see if "nxt" applies * tnxt - internal nxt table for templates * base - offset into "nxt" for given state * def - where to go if "chk" disallows "nxt" entry * nultrans - NUL transition for each state * NUL_ec - equivalence class of the NUL character * tblend - last "nxt/chk" table entry being used * firstfree - first empty entry in "nxt/chk" table * dss - nfa state set for each dfa * dfasiz - size of nfa state set for each dfa * dfaacc - accepting set for each dfa state (if using REJECT), or accepting * number, if not * accsiz - size of accepting set for each dfa state * dhash - dfa state hash value * numas - number of DFA accepting states created; note that this * is not necessarily the same value as num_rules, which is the analogous * value for the NFA * numsnpairs - number of state/nextstate transition pairs * jambase - position in base/def where the default jam table starts * jamstate - state number corresponding to "jam" state * end_of_buffer_state - end-of-buffer dfa state number */ extern int current_max_dfa_size, current_max_xpairs; extern int current_max_template_xpairs, current_max_dfas; extern int lastdfa, *nxt, *chk, *tnxt; extern int *base, *def, *nultrans, NUL_ec, tblend, firstfree, **dss, *dfasiz; extern union dfaacc_union { int *dfaacc_set; int dfaacc_state; } *dfaacc; extern int *accsiz, *dhash, numas; extern int numsnpairs, jambase, jamstate; extern int end_of_buffer_state; /* Variables for ccl information: * lastccl - ccl index of the last created ccl * current_maxccls - current limit on the maximum number of unique ccl's * cclmap - maps a ccl index to its set pointer * ccllen - gives the length of a ccl * cclng - true for a given ccl if the ccl is negated * cclreuse - counts how many times a ccl is re-used * current_max_ccl_tbl_size - current limit on number of characters needed * to represent the unique ccl's * ccltbl - holds the characters in each ccl - indexed by cclmap */ extern int lastccl, *cclmap, *ccllen, *cclng, cclreuse; extern int current_maxccls, current_max_ccl_tbl_size; extern Char *ccltbl; /* Variables for miscellaneous information: * nmstr - last NAME scanned by the scanner * sectnum - section number currently being parsed * nummt - number of empty nxt/chk table entries * hshcol - number of hash collisions detected by snstods * dfaeql - number of times a newly created dfa was equal to an old one * numeps - number of epsilon NFA states created * eps2 - number of epsilon states which have 2 out-transitions * num_reallocs - number of times it was necessary to realloc() a group * of arrays * tmpuses - number of DFA states that chain to templates * totnst - total number of NFA states used to make DFA states * peakpairs - peak number of transition pairs we had to store internally * numuniq - number of unique transitions * numdup - number of duplicate transitions * hshsave - number of hash collisions saved by checking number of states * num_backing_up - number of DFA states requiring backing up * bol_needed - whether scanner needs beginning-of-line recognition */ extern char nmstr[MAXLINE]; extern int sectnum, nummt, hshcol, dfaeql, numeps, eps2, num_reallocs; extern int tmpuses, totnst, peakpairs, numuniq, numdup, hshsave; extern int num_backing_up, bol_needed; void *allocate_array PROTO ((int, size_t)); void *reallocate_array PROTO ((void *, int, size_t)); void *flex_alloc PROTO ((size_t)); void *flex_realloc PROTO ((void *, size_t)); void flex_free PROTO ((void *)); #define allocate_integer_array(size) \ (int *) allocate_array( size, sizeof( int ) ) #define reallocate_integer_array(array,size) \ (int *) reallocate_array( (void *) array, size, sizeof( int ) ) #define allocate_bool_array(size) \ (bool *) allocate_array( size, sizeof( bool ) ) #define reallocate_bool_array(array,size) \ (bool *) reallocate_array( (void *) array, size, sizeof( bool ) ) #define allocate_int_ptr_array(size) \ (int **) allocate_array( size, sizeof( int * ) ) #define allocate_char_ptr_array(size) \ (char **) allocate_array( size, sizeof( char * ) ) #define allocate_dfaacc_union(size) \ (union dfaacc_union *) \ allocate_array( size, sizeof( union dfaacc_union ) ) #define reallocate_int_ptr_array(array,size) \ (int **) reallocate_array( (void *) array, size, sizeof( int * ) ) #define reallocate_char_ptr_array(array,size) \ (char **) reallocate_array( (void *) array, size, sizeof( char * ) ) #define reallocate_dfaacc_union(array, size) \ (union dfaacc_union *) \ reallocate_array( (void *) array, size, sizeof( union dfaacc_union ) ) #define allocate_character_array(size) \ (char *) allocate_array( size, sizeof( char ) ) #define reallocate_character_array(array,size) \ (char *) reallocate_array( (void *) array, size, sizeof( char ) ) #define allocate_Character_array(size) \ (Char *) allocate_array( size, sizeof( Char ) ) #define reallocate_Character_array(array,size) \ (Char *) reallocate_array( (void *) array, size, sizeof( Char ) ) /* Used to communicate between scanner and parser. The type should really * be YYSTYPE, but we can't easily get our hands on it. */ extern int yylval; /* External functions that are cross-referenced among the flex source files. */ /* from file ccl.c */ extern void ccladd PROTO ((int, int)); /* add a single character to a ccl */ extern int cclinit PROTO ((void)); /* make an empty ccl */ extern void cclnegate PROTO ((int)); /* negate a ccl */ extern int ccl_set_diff (int a, int b); /* set difference of two ccls. */ extern int ccl_set_union (int a, int b); /* set union of two ccls. */ /* List the members of a set of characters in CCL form. */ extern void list_character_set PROTO ((FILE *, int[])); /* from file dfa.c */ /* Check a DFA state for backing up. */ extern void check_for_backing_up PROTO ((int, int[])); /* Check to see if NFA state set constitutes "dangerous" trailing context. */ extern void check_trailing_context PROTO ((int *, int, int *, int)); /* Construct the epsilon closure of a set of ndfa states. */ extern int *epsclosure PROTO ((int *, int *, int[], int *, int *)); /* Increase the maximum number of dfas. */ extern void increase_max_dfas PROTO ((void)); extern void ntod PROTO ((void)); /* convert a ndfa to a dfa */ /* Converts a set of ndfa states into a dfa state. */ extern int snstods PROTO ((int[], int, int[], int, int, int *)); /* from file ecs.c */ /* Convert character classes to set of equivalence classes. */ extern void ccl2ecl PROTO ((void)); /* Associate equivalence class numbers with class members. */ extern int cre8ecs PROTO ((int[], int[], int)); /* Update equivalence classes based on character class transitions. */ extern void mkeccl PROTO ((Char[], int, int[], int[], int, int)); /* Create equivalence class for single character. */ extern void mkechar PROTO ((int, int[], int[])); /* from file gen.c */ extern void do_indent PROTO ((void)); /* indent to the current level */ /* Generate the code to keep backing-up information. */ extern void gen_backing_up PROTO ((void)); /* Generate the code to perform the backing up. */ extern void gen_bu_action PROTO ((void)); /* Generate full speed compressed transition table. */ extern void genctbl PROTO ((void)); /* Generate the code to find the action number. */ extern void gen_find_action PROTO ((void)); extern void genftbl PROTO ((void)); /* generate full transition table */ /* Generate the code to find the next compressed-table state. */ extern void gen_next_compressed_state PROTO ((char *)); /* Generate the code to find the next match. */ extern void gen_next_match PROTO ((void)); /* Generate the code to find the next state. */ extern void gen_next_state PROTO ((int)); /* Generate the code to make a NUL transition. */ extern void gen_NUL_trans PROTO ((void)); /* Generate the code to find the start state. */ extern void gen_start_state PROTO ((void)); /* Generate data statements for the transition tables. */ extern void gentabs PROTO ((void)); /* Write out a formatted string at the current indentation level. */ extern void indent_put2s PROTO ((const char *, const char *)); /* Write out a string + newline at the current indentation level. */ extern void indent_puts PROTO ((const char *)); extern void make_tables PROTO ((void)); /* generate transition tables */ /* from file main.c */ extern void check_options PROTO ((void)); extern void flexend PROTO ((int)); extern void usage PROTO ((void)); /* from file misc.c */ /* Add a #define to the action file. */ extern void action_define PROTO ((const char *defname, int value)); /* Add the given text to the stored actions. */ extern void add_action PROTO ((const char *new_text)); /* True if a string is all lower case. */ extern int all_lower PROTO ((register char *)); /* True if a string is all upper case. */ extern int all_upper PROTO ((register char *)); /* Compare two integers for use by qsort. */ extern int intcmp PROTO ((const void *, const void *)); /* Check a character to make sure it's in the expected range. */ extern void check_char PROTO ((int c)); /* Replace upper-case letter to lower-case. */ extern Char clower PROTO ((int)); /* Returns a dynamically allocated copy of a string. */ extern char *copy_string PROTO ((register const char *)); /* Returns a dynamically allocated copy of a (potentially) unsigned string. */ extern Char *copy_unsigned_string PROTO ((register Char *)); /* Compare two characters for use by qsort with '\0' sorting last. */ extern int cclcmp PROTO ((const void *, const void *)); /* Finish up a block of data declarations. */ extern void dataend PROTO ((void)); /* Flush generated data statements. */ extern void dataflush PROTO ((void)); /* Report an error message and terminate. */ extern void flexerror PROTO ((const char *)); /* Report a fatal error message and terminate. */ extern void flexfatal PROTO ((const char *)); /* Report a fatal error with a pinpoint, and terminate */ #if HAVE_DECL___FUNC__ #define flex_die(msg) \ do{ \ fprintf (stderr,\ _("%s: fatal internal error at %s:%d (%s): %s\n"),\ program_name, __FILE__, (int)__LINE__,\ __func__,msg);\ FLEX_EXIT(1);\ }while(0) #else /* ! HAVE_DECL___FUNC__ */ #define flex_die(msg) \ do{ \ fprintf (stderr,\ _("%s: fatal internal error at %s:%d %s\n"),\ program_name, __FILE__, (int)__LINE__,\ msg);\ FLEX_EXIT(1);\ }while(0) #endif /* ! HAVE_DECL___func__ */ /* Convert a hexadecimal digit string to an integer value. */ extern int htoi PROTO ((Char[])); /* Report an error message formatted with one integer argument. */ extern void lerrif PROTO ((const char *, int)); /* Report an error message formatted with one string argument. */ extern void lerrsf PROTO ((const char *, const char *)); /* Like lerrsf, but also exit after displaying message. */ extern void lerrsf_fatal PROTO ((const char *, const char *)); /* Spit out a "#line" statement. */ extern void line_directive_out PROTO ((FILE *, int)); /* Mark the current position in the action array as the end of the section 1 * user defs. */ extern void mark_defs1 PROTO ((void)); /* Mark the current position in the action array as the end of the prolog. */ extern void mark_prolog PROTO ((void)); /* Generate a data statment for a two-dimensional array. */ extern void mk2data PROTO ((int)); extern void mkdata PROTO ((int)); /* generate a data statement */ /* Return the integer represented by a string of digits. */ extern int myctoi PROTO ((const char *)); /* Return character corresponding to escape sequence. */ extern Char myesc PROTO ((Char[])); /* Convert an octal digit string to an integer value. */ extern int otoi PROTO ((Char[])); /* Output a (possibly-formatted) string to the generated scanner. */ extern void out PROTO ((const char *)); extern void out_dec PROTO ((const char *, int)); extern void out_dec2 PROTO ((const char *, int, int)); extern void out_hex PROTO ((const char *, unsigned int)); extern void out_str PROTO ((const char *, const char *)); extern void out_str3 PROTO ((const char *, const char *, const char *, const char *)); extern void out_str_dec PROTO ((const char *, const char *, int)); extern void outc PROTO ((int)); extern void outn PROTO ((const char *)); extern void out_m4_define (const char* def, const char* val); /* Return a printable version of the given character, which might be * 8-bit. */ extern char *readable_form PROTO ((int)); /* Write out one section of the skeleton file. */ extern void skelout PROTO ((void)); /* Output a yy_trans_info structure. */ extern void transition_struct_out PROTO ((int, int)); /* Only needed when using certain broken versions of bison to build parse.c. */ extern void *yy_flex_xmalloc PROTO ((int)); /* Set a region of memory to 0. */ extern void zero_out PROTO ((char *, size_t)); /* from file nfa.c */ /* Add an accepting state to a machine. */ extern void add_accept PROTO ((int, int)); /* Make a given number of copies of a singleton machine. */ extern int copysingl PROTO ((int, int)); /* Debugging routine to write out an nfa. */ extern void dumpnfa PROTO ((int)); /* Finish up the processing for a rule. */ extern void finish_rule PROTO ((int, int, int, int, int)); /* Connect two machines together. */ extern int link_machines PROTO ((int, int)); /* Mark each "beginning" state in a machine as being a "normal" (i.e., * not trailing context associated) state. */ extern void mark_beginning_as_normal PROTO ((register int)); /* Make a machine that branches to two machines. */ extern int mkbranch PROTO ((int, int)); extern int mkclos PROTO ((int)); /* convert a machine into a closure */ extern int mkopt PROTO ((int)); /* make a machine optional */ /* Make a machine that matches either one of two machines. */ extern int mkor PROTO ((int, int)); /* Convert a machine into a positive closure. */ extern int mkposcl PROTO ((int)); extern int mkrep PROTO ((int, int, int)); /* make a replicated machine */ /* Create a state with a transition on a given symbol. */ extern int mkstate PROTO ((int)); extern void new_rule PROTO ((void)); /* initialize for a new rule */ /* from file parse.y */ /* Build the "<>" action for the active start conditions. */ extern void build_eof_action PROTO ((void)); /* Write out a message formatted with one string, pinpointing its location. */ extern void format_pinpoint_message PROTO ((const char *, const char *)); /* Write out a message, pinpointing its location. */ extern void pinpoint_message PROTO ((const char *)); /* Write out a warning, pinpointing it at the given line. */ extern void line_warning PROTO ((const char *, int)); /* Write out a message, pinpointing it at the given line. */ extern void line_pinpoint PROTO ((const char *, int)); /* Report a formatted syntax error. */ extern void format_synerr PROTO ((const char *, const char *)); extern void synerr PROTO ((const char *)); /* report a syntax error */ extern void format_warn PROTO ((const char *, const char *)); extern void warn PROTO ((const char *)); /* report a warning */ extern void yyerror PROTO ((const char *)); /* report a parse error */ extern int yyparse PROTO ((void)); /* the YACC parser */ /* from file scan.l */ /* The Flex-generated scanner for flex. */ extern int flexscan PROTO ((void)); /* Open the given file (if NULL, stdin) for scanning. */ extern void set_input_file PROTO ((char *)); /* Wrapup a file in the lexical analyzer. */ extern int yywrap PROTO ((void)); /* from file sym.c */ /* Save the text of a character class. */ extern void cclinstal PROTO ((Char[], int)); /* Lookup the number associated with character class. */ extern int ccllookup PROTO ((Char[])); extern void ndinstal PROTO ((const char *, Char[])); /* install a name definition */ extern Char *ndlookup PROTO ((const char *)); /* lookup a name definition */ /* Increase maximum number of SC's. */ extern void scextend PROTO ((void)); extern void scinstal PROTO ((const char *, int)); /* make a start condition */ /* Lookup the number associated with a start condition. */ extern int sclookup PROTO ((const char *)); /* from file tblcmp.c */ /* Build table entries for dfa state. */ extern void bldtbl PROTO ((int[], int, int, int, int)); extern void cmptmps PROTO ((void)); /* compress template table entries */ extern void expand_nxt_chk PROTO ((void)); /* increase nxt/chk arrays */ /* Finds a space in the table for a state to be placed. */ extern int find_table_space PROTO ((int *, int)); extern void inittbl PROTO ((void)); /* initialize transition tables */ /* Make the default, "jam" table entries. */ extern void mkdeftbl PROTO ((void)); /* Create table entries for a state (or state fragment) which has * only one out-transition. */ extern void mk1tbl PROTO ((int, int, int, int)); /* Place a state into full speed transition table. */ extern void place_state PROTO ((int *, int, int)); /* Save states with only one out-transition to be processed later. */ extern void stack1 PROTO ((int, int, int, int)); /* from file yylex.c */ extern int yylex PROTO ((void)); /* A growable array. See buf.c. */ struct Buf { void *elts; /* elements. */ int nelts; /* number of elements. */ size_t elt_size; /* in bytes. */ int nmax; /* max capacity of elements. */ }; extern void buf_init PROTO ((struct Buf * buf, size_t elem_size)); extern void buf_destroy PROTO ((struct Buf * buf)); extern struct Buf *buf_append PROTO ((struct Buf * buf, const void *ptr, int n_elem)); extern struct Buf *buf_concat PROTO((struct Buf* dest, const struct Buf* src)); extern struct Buf *buf_strappend PROTO ((struct Buf *, const char *str)); extern struct Buf *buf_strnappend PROTO ((struct Buf *, const char *str, int nchars)); extern struct Buf *buf_strdefine PROTO ((struct Buf * buf, const char *str, const char *def)); extern struct Buf *buf_prints PROTO((struct Buf *buf, const char *fmt, const char* s)); extern struct Buf *buf_m4_define PROTO((struct Buf *buf, const char* def, const char* val)); extern struct Buf *buf_m4_undefine PROTO((struct Buf *buf, const char* def)); extern struct Buf *buf_print_strings PROTO((struct Buf * buf, FILE* out)); extern struct Buf *buf_linedir PROTO((struct Buf *buf, const char* filename, int lineno)); extern struct Buf userdef_buf; /* a string buffer for #define's generated by user-options on cmd line. */ extern struct Buf defs_buf; /* a char* buffer to save #define'd some symbols generated by flex. */ extern struct Buf yydmap_buf; /* a string buffer to hold yydmap elements */ extern struct Buf m4defs_buf; /* Holds m4 definitions. */ extern struct Buf top_buf; /* contains %top code. String buffer. */ /* For blocking out code from the header file. */ #define OUT_BEGIN_CODE() outn("m4_ifdef( [[M4_YY_IN_HEADER]],,[[") #define OUT_END_CODE() outn("]])") /* For setjmp/longjmp (instead of calling exit(2)). Linkage in main.c */ extern jmp_buf flex_main_jmp_buf; #define FLEX_EXIT(status) longjmp(flex_main_jmp_buf,(status)+1) /* Removes all \n and \r chars from tail of str. returns str. */ extern char *chomp (char *str); /* ctype functions forced to return boolean */ #define b_isalnum(c) (isalnum(c)?true:false) #define b_isalpha(c) (isalpha(c)?true:false) #define b_isascii(c) (isascii(c)?true:false) #define b_isblank(c) (isblank(c)?true:false) #define b_iscntrl(c) (iscntrl(c)?true:false) #define b_isdigit(c) (isdigit(c)?true:false) #define b_isgraph(c) (isgraph(c)?true:false) #define b_islower(c) (islower(c)?true:false) #define b_isprint(c) (isprint(c)?true:false) #define b_ispunct(c) (ispunct(c)?true:false) #define b_isspace(c) (isspace(c)?true:false) #define b_isupper(c) (isupper(c)?true:false) #define b_isxdigit(c) (isxdigit(c)?true:false) /* return true if char is uppercase or lowercase. */ bool has_case(int c); /* Change case of character if possible. */ int reverse_case(int c); /* return false if [c1-c2] is ambiguous for a caseless scanner. */ bool range_covers_case (int c1, int c2); /* * From "filter.c" */ /** A single stdio filter to execute. * The filter may be external, such as "sed", or it * may be internal, as a function call. */ struct filter { int (*filter_func)(struct filter*); /**< internal filter function */ void * extra; /**< extra data passed to filter_func */ int argc; /**< arg count */ const char ** argv; /**< arg vector, \0-terminated */ struct filter * next; /**< next filter or NULL */ }; /* output filter chain */ extern struct filter * output_chain; extern struct filter *filter_create_ext PROTO((struct filter * chain, const char *cmd, ...)); struct filter *filter_create_int PROTO((struct filter *chain, int (*filter_func) (struct filter *), void *extra)); extern bool filter_apply_chain PROTO((struct filter * chain)); extern int filter_truncate (struct filter * chain, int max_len); extern int filter_tee_header PROTO((struct filter *chain)); extern int filter_fix_linedirs PROTO((struct filter *chain)); /* * From "regex.c" */ extern regex_t regex_linedir, regex_blank_line; bool flex_init_regex(void); void flex_regcomp(regex_t *preg, const char *regex, int cflags); char *regmatch_dup (regmatch_t * m, const char *src); char *regmatch_cpy (regmatch_t * m, char *dest, const char *src); int regmatch_len (regmatch_t * m); int regmatch_strtol (regmatch_t * m, const char *src, char **endptr, int base); bool regmatch_empty (regmatch_t * m); /* From "scanflags.h" */ typedef unsigned int scanflags_t; extern scanflags_t* _sf_stk; extern size_t _sf_top_ix, _sf_max; /**< stack of scanner flags. */ #define _SF_CASE_INS 0x0001 #define _SF_DOT_ALL 0x0002 #define _SF_SKIP_WS 0x0004 #define sf_top() (_sf_stk[_sf_top_ix]) #define sf_case_ins() (sf_top() & _SF_CASE_INS) #define sf_dot_all() (sf_top() & _SF_DOT_ALL) #define sf_skip_ws() (sf_top() & _SF_SKIP_WS) #define sf_set_case_ins(X) ((X) ? (sf_top() |= _SF_CASE_INS) : (sf_top() &= ~_SF_CASE_INS)) #define sf_set_dot_all(X) ((X) ? (sf_top() |= _SF_DOT_ALL) : (sf_top() &= ~_SF_DOT_ALL)) #define sf_set_skip_ws(X) ((X) ? (sf_top() |= _SF_SKIP_WS) : (sf_top() &= ~_SF_SKIP_WS)) extern void sf_init(void); extern void sf_push(void); extern void sf_pop(void); #endif /* not defined FLEXDEF_H */ flex-2.5.39/libyywrap.c0000644000175000017500000000212612314546064015216 0ustar srivastasrivasta/* libyywrap - flex run-time support library "yywrap" function */ /* This file is part of flex. */ /* Redistribution and use in source and binary forms, with or without */ /* modification, are permitted provided that the following conditions */ /* are met: */ /* 1. Redistributions of source code must retain the above copyright */ /* notice, this list of conditions and the following disclaimer. */ /* 2. Redistributions in binary form must reproduce the above copyright */ /* notice, this list of conditions and the following disclaimer in the */ /* documentation and/or other materials provided with the distribution. */ /* Neither the name of the University nor the names of its contributors */ /* may be used to endorse or promote products derived from this software */ /* without specific prior written permission. */ /* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR */ /* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED */ /* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */ /* PURPOSE. */ int yywrap (void) { return 1; } flex-2.5.39/buf.c0000644000175000017500000001675612314546064013766 0ustar srivastasrivasta/* flex - tool to generate fast lexical analyzers */ /* Copyright (c) 1990 The Regents of the University of California. */ /* All rights reserved. */ /* This code is derived from software contributed to Berkeley by */ /* Vern Paxson. */ /* The United States Government has rights in this work pursuant */ /* to contract no. DE-AC03-76SF00098 between the United States */ /* Department of Energy and the University of California. */ /* This file is part of flex. */ /* Redistribution and use in source and binary forms, with or without */ /* modification, are permitted provided that the following conditions */ /* are met: */ /* 1. Redistributions of source code must retain the above copyright */ /* notice, this list of conditions and the following disclaimer. */ /* 2. Redistributions in binary form must reproduce the above copyright */ /* notice, this list of conditions and the following disclaimer in the */ /* documentation and/or other materials provided with the distribution. */ /* Neither the name of the University nor the names of its contributors */ /* may be used to endorse or promote products derived from this software */ /* without specific prior written permission. */ /* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR */ /* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED */ /* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */ /* PURPOSE. */ #include "flexdef.h" /* Take note: The buffer object is sometimes used as a String buffer (one * continuous string), and sometimes used as a list of strings, usually line by * line. * * The type is specified in buf_init by the elt_size. If the elt_size is * sizeof(char), then the buffer should be treated as string buffer. If the * elt_size is sizeof(char*), then the buffer should be treated as a list of * strings. * * Certain functions are only appropriate for one type or the other. */ /* global buffers. */ struct Buf userdef_buf; /**< for user #definitions triggered by cmd-line. */ struct Buf defs_buf; /**< for #define's autogenerated. List of strings. */ struct Buf yydmap_buf; /**< string buffer to hold yydmap elements */ struct Buf m4defs_buf; /**< m4 definitions. List of strings. */ struct Buf top_buf; /**< contains %top code. String buffer. */ struct Buf *buf_print_strings(struct Buf * buf, FILE* out) { int i; if(!buf || !out) return buf; for (i=0; i < buf->nelts; i++){ const char * s = ((char**)buf->elts)[i]; if(s) fprintf(out, "%s", s); } return buf; } /* Append a "%s" formatted string to a string buffer */ struct Buf *buf_prints (struct Buf *buf, const char *fmt, const char *s) { char *t; size_t tsz; t = flex_alloc (tsz = strlen (fmt) + strlen (s) + 1); if (!t) flexfatal (_("Allocation of buffer to print string failed")); snprintf (t, tsz, fmt, s); buf = buf_strappend (buf, t); flex_free (t); return buf; } /** Append a line directive to the string buffer. * @param buf A string buffer. * @param filename file name * @param lineno line number * @return buf */ struct Buf *buf_linedir (struct Buf *buf, const char* filename, int lineno) { char *dst, *src, *t; t = flex_alloc (strlen ("#line \"\"\n") + /* constant parts */ 2 * strlen (filename) + /* filename with possibly all backslashes escaped */ (int) (1 + log10 (abs (lineno))) + /* line number */ 1); /* NUL */ if (!t) flexfatal (_("Allocation of buffer for line directive failed")); for (dst = t + sprintf (t, "#line %d \"", lineno), src = filename; *src; *dst++ = *src++) if (*src == '\\') /* escape backslashes */ *dst++ = '\\'; *dst++ = '"'; *dst++ = '\n'; *dst = '\0'; buf = buf_strappend (buf, t); flex_free (t); return buf; } /** Append the contents of @a src to @a dest. * @param @a dest the destination buffer * @param @a dest the source buffer * @return @a dest */ struct Buf *buf_concat(struct Buf* dest, const struct Buf* src) { buf_append(dest, src->elts, src->nelts); return dest; } /* Appends n characters in str to buf. */ struct Buf *buf_strnappend (buf, str, n) struct Buf *buf; const char *str; int n; { buf_append (buf, str, n + 1); /* "undo" the '\0' character that buf_append() already copied. */ buf->nelts--; return buf; } /* Appends characters in str to buf. */ struct Buf *buf_strappend (buf, str) struct Buf *buf; const char *str; { return buf_strnappend (buf, str, strlen (str)); } /* appends "#define str def\n" */ struct Buf *buf_strdefine (buf, str, def) struct Buf *buf; const char *str; const char *def; { buf_strappend (buf, "#define "); buf_strappend (buf, " "); buf_strappend (buf, str); buf_strappend (buf, " "); buf_strappend (buf, def); buf_strappend (buf, "\n"); return buf; } /** Pushes "m4_define( [[def]], [[val]])m4_dnl" to end of buffer. * @param buf A buffer as a list of strings. * @param def The m4 symbol to define. * @param val The definition; may be NULL. * @return buf */ struct Buf *buf_m4_define (struct Buf *buf, const char* def, const char* val) { const char * fmt = "m4_define( [[%s]], [[%s]])m4_dnl\n"; char * str; size_t strsz; val = val?val:""; str = (char*)flex_alloc(strsz = strlen(fmt) + strlen(def) + strlen(val) + 2); if (!str) flexfatal (_("Allocation of buffer for m4 def failed")); snprintf(str, strsz, fmt, def, val); buf_append(buf, &str, 1); return buf; } /** Pushes "m4_undefine([[def]])m4_dnl" to end of buffer. * @param buf A buffer as a list of strings. * @param def The m4 symbol to undefine. * @return buf */ struct Buf *buf_m4_undefine (struct Buf *buf, const char* def) { const char * fmt = "m4_undefine( [[%s]])m4_dnl\n"; char * str; size_t strsz; str = (char*)flex_alloc(strsz = strlen(fmt) + strlen(def) + 2); if (!str) flexfatal (_("Allocation of buffer for m4 undef failed")); snprintf(str, strsz, fmt, def); buf_append(buf, &str, 1); return buf; } /* create buf with 0 elements, each of size elem_size. */ void buf_init (buf, elem_size) struct Buf *buf; size_t elem_size; { buf->elts = (void *) 0; buf->nelts = 0; buf->elt_size = elem_size; buf->nmax = 0; } /* frees memory */ void buf_destroy (buf) struct Buf *buf; { if (buf && buf->elts) flex_free (buf->elts); buf->elts = (void *) 0; } /* appends ptr[] to buf, grow if necessary. * n_elem is number of elements in ptr[], NOT bytes. * returns buf. * We grow by mod(512) boundaries. */ struct Buf *buf_append (buf, ptr, n_elem) struct Buf *buf; const void *ptr; int n_elem; { int n_alloc = 0; if (!ptr || n_elem == 0) return buf; /* May need to alloc more. */ if (n_elem + buf->nelts > buf->nmax) { /* exact amount needed... */ n_alloc = (n_elem + buf->nelts) * buf->elt_size; /* ...plus some extra */ if (((n_alloc * buf->elt_size) % 512) != 0 && buf->elt_size < 512) n_alloc += (512 - ((n_alloc * buf->elt_size) % 512)) / buf->elt_size; if (!buf->elts) buf->elts = allocate_array (n_alloc, buf->elt_size); else buf->elts = reallocate_array (buf->elts, n_alloc, buf->elt_size); buf->nmax = n_alloc; } memcpy ((char *) buf->elts + buf->nelts * buf->elt_size, ptr, n_elem * buf->elt_size); buf->nelts += n_elem; return buf; } /* vim:set tabstop=8 softtabstop=4 shiftwidth=4: */ flex-2.5.39/parse.c0000644000175000017500000025126612314621333014312 0ustar srivastasrivasta/* A Bison parser, made by GNU Bison 2.5. */ /* Bison implementation for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. There are some unavoidable exceptions within include files to define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ #define YYBISON_VERSION "2.5" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 0 /* Push parsers. */ #define YYPUSH 0 /* Pull parsers. */ #define YYPULL 1 /* Using locations. */ #define YYLSP_NEEDED 0 /* Copy the first part of user declarations. */ /* Line 268 of yacc.c */ #line 34 "parse.y" /* Copyright (c) 1990 The Regents of the University of California. */ /* All rights reserved. */ /* This code is derived from software contributed to Berkeley by */ /* Vern Paxson. */ /* The United States Government has rights in this work pursuant */ /* to contract no. DE-AC03-76SF00098 between the United States */ /* Department of Energy and the University of California. */ /* This file is part of flex. */ /* Redistribution and use in source and binary forms, with or without */ /* modification, are permitted provided that the following conditions */ /* are met: */ /* 1. Redistributions of source code must retain the above copyright */ /* notice, this list of conditions and the following disclaimer. */ /* 2. Redistributions in binary form must reproduce the above copyright */ /* notice, this list of conditions and the following disclaimer in the */ /* documentation and/or other materials provided with the distribution. */ /* Neither the name of the University nor the names of its contributors */ /* may be used to endorse or promote products derived from this software */ /* without specific prior written permission. */ /* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR */ /* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED */ /* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */ /* PURPOSE. */ #include "flexdef.h" #include "tables.h" int pat, scnum, eps, headcnt, trailcnt, lastchar, i, rulelen; int trlcontxt, xcluflg, currccl, cclsorted, varlength, variable_trail_rule; int *scon_stk; int scon_stk_ptr; static int madeany = false; /* whether we've made the '.' character class */ static int ccldot, cclany; int previous_continued_action; /* whether the previous rule's action was '|' */ #define format_warn3(fmt, a1, a2) \ do{ \ char fw3_msg[MAXLINE];\ snprintf( fw3_msg, MAXLINE,(fmt), (a1), (a2) );\ warn( fw3_msg );\ }while(0) /* Expand a POSIX character class expression. */ #define CCL_EXPR(func) \ do{ \ int c; \ for ( c = 0; c < csize; ++c ) \ if ( isascii(c) && func(c) ) \ ccladd( currccl, c ); \ }while(0) /* negated class */ #define CCL_NEG_EXPR(func) \ do{ \ int c; \ for ( c = 0; c < csize; ++c ) \ if ( !func(c) ) \ ccladd( currccl, c ); \ }while(0) /* While POSIX defines isblank(), it's not ANSI C. */ #define IS_BLANK(c) ((c) == ' ' || (c) == '\t') /* On some over-ambitious machines, such as DEC Alpha's, the default * token type is "long" instead of "int"; this leads to problems with * declaring yylval in flexdef.h. But so far, all the yacc's I've seen * wrap their definitions of YYSTYPE with "#ifndef YYSTYPE"'s, so the * following should ensure that the default token type is "int". */ #define YYSTYPE int /* Line 268 of yacc.c */ #line 155 "parse.c" /* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else # define YYERROR_VERBOSE 0 #endif /* Enabling the token table. */ #ifndef YYTOKEN_TABLE # define YYTOKEN_TABLE 0 #endif /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { CHAR = 258, NUMBER = 259, SECTEND = 260, SCDECL = 261, XSCDECL = 262, NAME = 263, PREVCCL = 264, EOF_OP = 265, OPTION_OP = 266, OPT_OUTFILE = 267, OPT_PREFIX = 268, OPT_YYCLASS = 269, OPT_HEADER = 270, OPT_EXTRA_TYPE = 271, OPT_TABLES = 272, CCE_ALNUM = 273, CCE_ALPHA = 274, CCE_BLANK = 275, CCE_CNTRL = 276, CCE_DIGIT = 277, CCE_GRAPH = 278, CCE_LOWER = 279, CCE_PRINT = 280, CCE_PUNCT = 281, CCE_SPACE = 282, CCE_UPPER = 283, CCE_XDIGIT = 284, CCE_NEG_ALNUM = 285, CCE_NEG_ALPHA = 286, CCE_NEG_BLANK = 287, CCE_NEG_CNTRL = 288, CCE_NEG_DIGIT = 289, CCE_NEG_GRAPH = 290, CCE_NEG_LOWER = 291, CCE_NEG_PRINT = 292, CCE_NEG_PUNCT = 293, CCE_NEG_SPACE = 294, CCE_NEG_UPPER = 295, CCE_NEG_XDIGIT = 296, CCL_OP_UNION = 297, CCL_OP_DIFF = 298, BEGIN_REPEAT_POSIX = 299, END_REPEAT_POSIX = 300, BEGIN_REPEAT_FLEX = 301, END_REPEAT_FLEX = 302 }; #endif /* Tokens. */ #define CHAR 258 #define NUMBER 259 #define SECTEND 260 #define SCDECL 261 #define XSCDECL 262 #define NAME 263 #define PREVCCL 264 #define EOF_OP 265 #define OPTION_OP 266 #define OPT_OUTFILE 267 #define OPT_PREFIX 268 #define OPT_YYCLASS 269 #define OPT_HEADER 270 #define OPT_EXTRA_TYPE 271 #define OPT_TABLES 272 #define CCE_ALNUM 273 #define CCE_ALPHA 274 #define CCE_BLANK 275 #define CCE_CNTRL 276 #define CCE_DIGIT 277 #define CCE_GRAPH 278 #define CCE_LOWER 279 #define CCE_PRINT 280 #define CCE_PUNCT 281 #define CCE_SPACE 282 #define CCE_UPPER 283 #define CCE_XDIGIT 284 #define CCE_NEG_ALNUM 285 #define CCE_NEG_ALPHA 286 #define CCE_NEG_BLANK 287 #define CCE_NEG_CNTRL 288 #define CCE_NEG_DIGIT 289 #define CCE_NEG_GRAPH 290 #define CCE_NEG_LOWER 291 #define CCE_NEG_PRINT 292 #define CCE_NEG_PUNCT 293 #define CCE_NEG_SPACE 294 #define CCE_NEG_UPPER 295 #define CCE_NEG_XDIGIT 296 #define CCL_OP_UNION 297 #define CCL_OP_DIFF 298 #define BEGIN_REPEAT_POSIX 299 #define END_REPEAT_POSIX 300 #define BEGIN_REPEAT_FLEX 301 #define END_REPEAT_FLEX 302 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef int YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif /* Copy the second part of user declarations. */ /* Line 343 of yacc.c */ #line 291 "parse.c" #ifdef short # undef short #endif #ifdef YYTYPE_UINT8 typedef YYTYPE_UINT8 yytype_uint8; #else typedef unsigned char yytype_uint8; #endif #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; #elif (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) typedef signed char yytype_int8; #else typedef short int yytype_int8; #endif #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else typedef unsigned short int yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else typedef short int yytype_int16; #endif #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else # define YYSIZE_T unsigned int # endif #endif #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ # define YY_(msgid) dgettext ("bison-runtime", msgid) # endif # endif # ifndef YY_ # define YY_(msgid) msgid # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(e) ((void) (e)) #else # define YYUSE(e) /* empty */ #endif /* Identity function, used to suppress warnings about constant conditions. */ #ifndef lint # define YYID(n) (n) #else #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static int YYID (int yyi) #else static int YYID (yyi) int yyi; #endif { return yyi; } #endif #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ # ifdef YYSTACK_USE_ALLOCA # if YYSTACK_USE_ALLOCA # ifdef __GNUC__ # define YYSTACK_ALLOC __builtin_alloca # elif defined __BUILTIN_VA_ARG_INCR # include /* INFRINGES ON USER NAME SPACE */ # elif defined _AIX # define YYSTACK_ALLOC __alloca # elif defined _MSC_VER # include /* INFRINGES ON USER NAME SPACE */ # define alloca _alloca # else # define YYSTACK_ALLOC alloca # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # endif # endif # endif # ifdef YYSTACK_ALLOC /* Pacify GCC's `empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely invoke alloca (N) if N exceeds 4096. Use a slightly smaller number to allow for a few compiler-allocated temporary stack slots. */ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else # define YYSTACK_ALLOC YYMALLOC # define YYSTACK_FREE YYFREE # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc # if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { yytype_int16 yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (YYID (0)) #endif #if defined YYCOPY_NEEDED && YYCOPY_NEEDED /* Copy COUNT objects from FROM to TO. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(To, From, Count) \ __builtin_memcpy (To, From, (Count) * sizeof (*(From))) # else # define YYCOPY(To, From, Count) \ do \ { \ YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (To)[yyi] = (From)[yyi]; \ } \ while (YYID (0)) # endif # endif #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ #define YYFINAL 3 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 161 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 69 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 27 /* YYNRULES -- Number of rules. */ #define YYNRULES 97 /* YYNRULES -- Number of states. */ #define YYNSTATES 140 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 302 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 49, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 63, 2, 57, 2, 2, 2, 64, 65, 55, 60, 56, 68, 62, 59, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 53, 48, 54, 61, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 66, 2, 67, 52, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 50, 58, 51, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47 }; #if YYDEBUG /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in YYRHS. */ static const yytype_uint16 yyprhs[] = { 0, 0, 3, 9, 10, 14, 17, 18, 20, 22, 24, 26, 29, 31, 33, 36, 39, 40, 44, 48, 52, 56, 60, 64, 70, 76, 77, 78, 81, 83, 85, 87, 88, 93, 97, 98, 102, 104, 106, 108, 111, 115, 118, 120, 124, 126, 129, 132, 134, 141, 147, 152, 155, 158, 161, 168, 174, 179, 181, 183, 185, 189, 193, 195, 199, 203, 205, 209, 214, 219, 222, 225, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 277 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int8 yyrhs[] = { 70, 0, -1, 71, 72, 73, 79, 80, -1, -1, 72, 74, 75, -1, 72, 76, -1, -1, 1, -1, 5, -1, 6, -1, 7, -1, 75, 8, -1, 8, -1, 1, -1, 11, 77, -1, 77, 78, -1, -1, 12, 48, 8, -1, 16, 48, 8, -1, 13, 48, 8, -1, 14, 48, 8, -1, 15, 48, 8, -1, 17, 48, 8, -1, 79, 83, 80, 81, 49, -1, 79, 83, 50, 79, 51, -1, -1, -1, 52, 86, -1, 86, -1, 10, -1, 1, -1, -1, 53, 82, 84, 54, -1, 53, 55, 54, -1, -1, 84, 56, 85, -1, 85, -1, 1, -1, 8, -1, 88, 87, -1, 88, 87, 57, -1, 87, 57, -1, 87, -1, 87, 58, 89, -1, 89, -1, 87, 59, -1, 89, 90, -1, 90, -1, 89, 44, 4, 56, 4, 45, -1, 89, 44, 4, 56, 45, -1, 89, 44, 4, 45, -1, 90, 55, -1, 90, 60, -1, 90, 61, -1, 90, 46, 4, 56, 4, 47, -1, 90, 46, 4, 56, 47, -1, 90, 46, 4, 47, -1, 62, -1, 91, -1, 9, -1, 63, 95, 63, -1, 64, 87, 65, -1, 3, -1, 91, 43, 92, -1, 91, 42, 92, -1, 92, -1, 66, 93, 67, -1, 66, 52, 93, 67, -1, 93, 3, 68, 3, -1, 93, 3, -1, 93, 94, -1, -1, 18, -1, 19, -1, 20, -1, 21, -1, 22, -1, 23, -1, 24, -1, 25, -1, 26, -1, 27, -1, 29, -1, 28, -1, 30, -1, 31, -1, 32, -1, 33, -1, 34, -1, 35, -1, 37, -1, 38, -1, 39, -1, 41, -1, 36, -1, 40, -1, 95, 3, -1, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { 0, 118, 118, 148, 155, 156, 157, 158, 162, 170, 173, 177, 180, 183, 187, 190, 191, 194, 199, 201, 203, 205, 207, 211, 213, 215, 219, 231, 267, 291, 314, 319, 322, 325, 343, 346, 348, 350, 354, 377, 433, 436, 479, 497, 503, 508, 535, 543, 546, 574, 588, 610, 617, 623, 629, 657, 671, 690, 724, 742, 752, 755, 758, 773, 774, 775, 780, 782, 789, 849, 867, 875, 883, 884, 885, 886, 887, 888, 889, 894, 895, 896, 897, 898, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 920, 928, 944 }; #endif #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { "$end", "error", "$undefined", "CHAR", "NUMBER", "SECTEND", "SCDECL", "XSCDECL", "NAME", "PREVCCL", "EOF_OP", "OPTION_OP", "OPT_OUTFILE", "OPT_PREFIX", "OPT_YYCLASS", "OPT_HEADER", "OPT_EXTRA_TYPE", "OPT_TABLES", "CCE_ALNUM", "CCE_ALPHA", "CCE_BLANK", "CCE_CNTRL", "CCE_DIGIT", "CCE_GRAPH", "CCE_LOWER", "CCE_PRINT", "CCE_PUNCT", "CCE_SPACE", "CCE_UPPER", "CCE_XDIGIT", "CCE_NEG_ALNUM", "CCE_NEG_ALPHA", "CCE_NEG_BLANK", "CCE_NEG_CNTRL", "CCE_NEG_DIGIT", "CCE_NEG_GRAPH", "CCE_NEG_LOWER", "CCE_NEG_PRINT", "CCE_NEG_PUNCT", "CCE_NEG_SPACE", "CCE_NEG_UPPER", "CCE_NEG_XDIGIT", "CCL_OP_UNION", "CCL_OP_DIFF", "BEGIN_REPEAT_POSIX", "END_REPEAT_POSIX", "BEGIN_REPEAT_FLEX", "END_REPEAT_FLEX", "'='", "'\\n'", "'{'", "'}'", "'^'", "'<'", "'>'", "'*'", "','", "'$'", "'|'", "'/'", "'+'", "'?'", "'.'", "'\"'", "'('", "')'", "'['", "']'", "'-'", "$accept", "goal", "initlex", "sect1", "sect1end", "startconddecl", "namelist1", "options", "optionlist", "option", "sect2", "initforrule", "flexrule", "scon_stk_ptr", "scon", "namelist2", "sconname", "rule", "re", "re2", "series", "singleton", "fullccl", "braceccl", "ccl", "ccl_expr", "string", 0 }; #endif # ifdef YYPRINT /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to token YYLEX-NUM. */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 61, 10, 123, 125, 94, 60, 62, 42, 44, 36, 124, 47, 43, 63, 46, 34, 40, 41, 91, 93, 45 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { 0, 69, 70, 71, 72, 72, 72, 72, 73, 74, 74, 75, 75, 75, 76, 77, 77, 78, 78, 78, 78, 78, 78, 79, 79, 79, 80, 81, 81, 81, 81, 82, 83, 83, 83, 84, 84, 84, 85, 86, 86, 86, 86, 87, 87, 88, 89, 89, 89, 89, 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 91, 91, 91, 92, 92, 93, 93, 93, 93, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 95, 95 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 5, 0, 3, 2, 0, 1, 1, 1, 1, 2, 1, 1, 2, 2, 0, 3, 3, 3, 3, 3, 3, 5, 5, 0, 0, 2, 1, 1, 1, 0, 4, 3, 0, 3, 1, 1, 1, 2, 3, 2, 1, 3, 1, 2, 2, 1, 6, 5, 4, 2, 2, 2, 6, 5, 4, 1, 1, 1, 3, 3, 1, 3, 3, 1, 3, 4, 4, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0 }; /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. Performed when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ static const yytype_uint8 yydefact[] = { 3, 0, 0, 1, 7, 0, 8, 9, 10, 16, 25, 0, 5, 14, 34, 13, 12, 4, 0, 0, 0, 0, 0, 0, 15, 31, 2, 26, 11, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 17, 19, 20, 21, 18, 22, 33, 37, 38, 0, 36, 34, 30, 62, 59, 29, 0, 57, 97, 0, 71, 0, 28, 42, 0, 44, 47, 58, 65, 32, 0, 24, 27, 0, 0, 71, 0, 23, 41, 0, 45, 39, 0, 46, 0, 51, 52, 53, 0, 0, 35, 96, 60, 61, 0, 69, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 83, 82, 84, 85, 86, 87, 88, 89, 94, 90, 91, 92, 95, 93, 66, 70, 43, 40, 0, 0, 64, 63, 67, 0, 50, 0, 56, 0, 68, 0, 49, 0, 55, 48, 54 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int8 yydefgoto[] = { -1, 1, 2, 5, 10, 11, 17, 12, 13, 24, 14, 26, 60, 36, 27, 48, 49, 61, 62, 63, 64, 65, 66, 67, 75, 120, 72 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ #define YYPACT_NINF -52 static const yytype_int16 yypact[] = { -52, 17, 103, -52, -52, 113, -52, -52, -52, -52, -52, 48, -52, 114, 6, -52, -52, 42, 7, 12, 58, 77, 88, 89, -52, 43, -52, 73, -52, 130, 131, 132, 133, 134, 135, 90, 91, -52, -1, -52, -52, -52, -52, -52, -52, -52, -52, -52, 40, -52, 44, -52, -52, -52, -52, 39, -52, -52, 39, 93, 97, -52, -12, 39, 49, 61, -31, -52, -52, 139, -52, -52, 1, -51, -52, 0, -52, -52, 39, -52, 75, 144, 61, 145, -52, -52, -52, 84, 84, -52, -52, -52, -52, 50, 83, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, 49, -52, -40, 10, -52, -52, -52, 149, -52, 9, -52, -3, -52, 108, -52, 107, -52, -52, -52 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, 118, 129, -52, -52, -52, -52, 92, 102, -48, -52, 80, -21, -52, 47, 85, -52, -52 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -27 static const yytype_int16 yytable[] = { 51, 136, 52, 94, 90, 129, -26, 78, 53, 54, 73, 87, 88, 134, 92, 80, 130, 3, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 52, 82, 137, 77, 78, 79, 53, 15, 28, 55, 52, 94, 135, 29, 16, 131, 53, 25, 30, 56, 57, 58, 91, 59, 132, 119, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 46, 81, 68, 70, 69, 25, 35, 47, 82, 56, 57, 58, 4, 59, 31, 83, -6, -6, -6, 56, 57, 58, -6, 59, 84, 127, 6, 7, 8, 85, 86, 37, 9, 32, 18, 19, 20, 21, 22, 23, 122, 78, 125, 126, 33, 34, 39, 40, 41, 42, 43, 44, 45, 74, 76, 47, 123, 124, 59, 128, 133, 138, 139, 50, 38, 71, 121, 93, 0, 89 }; #define yypact_value_is_default(yystate) \ ((yystate) == (-52)) #define yytable_value_is_error(yytable_value) \ YYID (0) static const yytype_int8 yycheck[] = { 1, 4, 3, 3, 3, 45, 0, 58, 9, 10, 58, 42, 43, 4, 65, 63, 56, 0, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 3, 64, 47, 57, 58, 59, 9, 1, 8, 52, 3, 3, 45, 48, 8, 47, 9, 53, 48, 62, 63, 64, 63, 66, 56, 67, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 1, 44, 54, 51, 56, 53, 55, 8, 121, 62, 63, 64, 1, 66, 48, 46, 5, 6, 7, 62, 63, 64, 11, 66, 55, 67, 5, 6, 7, 60, 61, 50, 11, 48, 12, 13, 14, 15, 16, 17, 57, 58, 87, 88, 48, 48, 8, 8, 8, 8, 8, 8, 54, 52, 49, 8, 4, 4, 66, 68, 3, 45, 47, 37, 27, 55, 78, 74, -1, 69 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 70, 71, 0, 1, 72, 5, 6, 7, 11, 73, 74, 76, 77, 79, 1, 8, 75, 12, 13, 14, 15, 16, 17, 78, 53, 80, 83, 8, 48, 48, 48, 48, 48, 48, 55, 82, 50, 80, 8, 8, 8, 8, 8, 8, 54, 1, 8, 84, 85, 79, 1, 3, 9, 10, 52, 62, 63, 64, 66, 81, 86, 87, 88, 89, 90, 91, 92, 54, 56, 51, 86, 95, 87, 52, 93, 49, 57, 58, 59, 87, 44, 90, 46, 55, 60, 61, 42, 43, 85, 3, 63, 65, 93, 3, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 67, 94, 89, 57, 4, 4, 92, 92, 67, 68, 45, 56, 47, 56, 3, 4, 45, 4, 47, 45, 47 }; #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYEMPTY (-2) #define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. Once GCC version 2 has supplanted version 1, this can go. However, YYFAIL appears to be in use. Nevertheless, it is formally deprecated in Bison 2.4.2's NEWS entry, where a plan to phase it out is discussed. */ #define YYFAIL goto yyerrlab #if defined YYFAIL /* This is here to suppress warnings from the GCC cpp's -Wunused-macros. Normally we don't worry about that warning, but some users do, and we want to make it easy for users to remove YYFAIL uses, which will produce warnings from Bison 2.5. */ #endif #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY && yylen == 1) \ { \ yychar = (Token); \ yylval = (Value); \ YYPOPSTACK (1); \ goto yybackup; \ } \ else \ { \ yyerror (YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (YYID (0)) #define YYTERROR 1 #define YYERRCODE 256 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends the previous symbol: RHS[0] (always defined). */ #define YYRHSLOC(Rhs, K) ((Rhs)[K]) #ifndef YYLLOC_DEFAULT # define YYLLOC_DEFAULT(Current, Rhs, N) \ do \ if (YYID (N)) \ { \ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ } \ else \ { \ (Current).first_line = (Current).last_line = \ YYRHSLOC (Rhs, 0).last_line; \ (Current).first_column = (Current).last_column = \ YYRHSLOC (Rhs, 0).last_column; \ } \ while (YYID (0)) #endif /* This macro is provided for backward compatibility. */ #ifndef YY_LOCATION_PRINT # define YY_LOCATION_PRINT(File, Loc) ((void) 0) #endif /* YYLEX -- calling `yylex' with the right arguments. */ #ifdef YYLEX_PARAM # define YYLEX yylex (YYLEX_PARAM) #else # define YYLEX yylex () #endif /* Enable debugging if requested. */ #if YYDEBUG # ifndef YYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define YYFPRINTF fprintf # endif # define YYDPRINTF(Args) \ do { \ if (yydebug) \ YYFPRINTF Args; \ } while (YYID (0)) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ Type, Value); \ YYFPRINTF (stderr, "\n"); \ } \ } while (YYID (0)) /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) #else static void yy_symbol_value_print (yyoutput, yytype, yyvaluep) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; #endif { if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # else YYUSE (yyoutput); # endif switch (yytype) { default: break; } } /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) #else static void yy_symbol_print (yyoutput, yytype, yyvaluep) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; #endif { if (yytype < YYNTOKENS) YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); else YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); yy_symbol_value_print (yyoutput, yytype, yyvaluep); YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) #else static void yy_stack_print (yybottom, yytop) yytype_int16 *yybottom; yytype_int16 *yytop; #endif { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) { int yybot = *yybottom; YYFPRINTF (stderr, " %d", yybot); } YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ } while (YYID (0)) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_reduce_print (YYSTYPE *yyvsp, int yyrule) #else static void yy_reduce_print (yyvsp, yyrule) YYSTYPE *yyvsp; int yyrule; #endif { int yynrhs = yyr2[yyrule]; int yyi; unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], &(yyvsp[(yyi + 1) - (yynrhs)]) ); YYFPRINTF (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyvsp, Rule); \ } while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ # define YYDPRINTF(Args) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ #ifndef YYMAXDEPTH # define YYMAXDEPTH 10000 #endif #if YYERROR_VERBOSE # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H # define yystrlen strlen # else /* Return the length of YYSTR. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) #else static YYSIZE_T yystrlen (yystr) const char *yystr; #endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; } # endif # endif # ifndef yystpcpy # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE # define yystpcpy stpcpy # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) #else static char * yystpcpy (yydest, yysrc) char *yydest; const char *yysrc; #endif { char *yyd = yydest; const char *yys = yysrc; while ((*yyd++ = *yys++) != '\0') continue; return yyd - 1; } # endif # endif # ifndef yytnamerr /* Copy to YYRES the contents of YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is that double-quoting is unnecessary unless the string contains an apostrophe, a comma, or backslash (other than backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ static YYSIZE_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { YYSIZE_T yyn = 0; char const *yyp = yystr; for (;;) switch (*++yyp) { case '\'': case ',': goto do_not_strip_quotes; case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; /* Fall through. */ default: if (yyres) yyres[yyn] = *yyp; yyn++; break; case '"': if (yyres) yyres[yyn] = '\0'; return yyn; } do_not_strip_quotes: ; } if (! yyres) return yystrlen (yystr); return yystpcpy (yyres, yystr) - yyres; } # endif /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message about the unexpected token YYTOKEN for the state stack whose top is YYSSP. Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is not large enough to hold the message. In that case, also set *YYMSG_ALLOC to the required number of bytes. Return 2 if the required number of bytes is too large to store. */ static int yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken) { YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]); YYSIZE_T yysize = yysize0; YYSIZE_T yysize1; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ const char *yyformat = 0; /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; /* Number of reported tokens (one for the "unexpected", one per "expected"). */ int yycount = 0; /* There are many possibilities here to consider: - Assume YYFAIL is not used. It's too flawed to consider. See for details. YYERROR is fine as it does not invoke this function. - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action is an error action. In that case, don't check for expected tokens because there are none. - The only way there can be no lookahead present (in yychar) is if this state is a consistent state with a default action. Thus, detecting the absence of a lookahead is sufficient to determine that there is no unexpected or expected token to report. In that case, just report a simple "syntax error". - Don't assume there isn't a lookahead just because this state is a consistent state with a default action. There might have been a previous inconsistent state, consistent state with a non-default action, or user semantic action that manipulated yychar. - Of course, the expected token list depends on states to have correct lookahead information, and it depends on the parser not to perform extra reductions after fetching a lookahead from the scanner and before detecting a syntax error. Thus, state merging (from LALR or IELR) and default reductions corrupt the expected token list. However, the list is correct for canonical LR with one exception: it will still contain any token that will not be accepted due to an error action in a later state. */ if (yytoken != YYEMPTY) { int yyn = yypact[*yyssp]; yyarg[yycount++] = yytname[yytoken]; if (!yypact_value_is_default (yyn)) { /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. In other words, skip the first -YYN actions for this state because they are default actions. */ int yyxbegin = yyn < 0 ? -yyn : 0; /* Stay within bounds of both yycheck and yytname. */ int yychecklim = YYLAST - yyn + 1; int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; int yyx; for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR && !yytable_value_is_error (yytable[yyx + yyn])) { if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) { yycount = 1; yysize = yysize0; break; } yyarg[yycount++] = yytname[yyx]; yysize1 = yysize + yytnamerr (0, yytname[yyx]); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; yysize = yysize1; } } } switch (yycount) { # define YYCASE_(N, S) \ case N: \ yyformat = S; \ break YYCASE_(0, YY_("syntax error")); YYCASE_(1, YY_("syntax error, unexpected %s")); YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); # undef YYCASE_ } yysize1 = yysize + yystrlen (yyformat); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; yysize = yysize1; if (*yymsg_alloc < yysize) { *yymsg_alloc = 2 * yysize; if (! (yysize <= *yymsg_alloc && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; return 1; } /* Avoid sprintf, as that infringes on the user's name space. Don't have undefined behavior even if the translation produced a string with the wrong number of "%s"s. */ { char *yyp = *yymsg; int yyi = 0; while ((*yyp = *yyformat) != '\0') if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) { yyp += yytnamerr (yyp, yyarg[yyi++]); yyformat += 2; } else { yyp++; yyformat++; } } return 0; } #endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) #else static void yydestruct (yymsg, yytype, yyvaluep) const char *yymsg; int yytype; YYSTYPE *yyvaluep; #endif { YYUSE (yyvaluep); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); switch (yytype) { default: break; } } /* Prevent warnings from -Wmissing-prototypes. */ #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus int yyparse (void *YYPARSE_PARAM); #else int yyparse (); #endif #else /* ! YYPARSE_PARAM */ #if defined __STDC__ || defined __cplusplus int yyparse (void); #else int yyparse (); #endif #endif /* ! YYPARSE_PARAM */ /* The lookahead symbol. */ int yychar; /* The semantic value of the lookahead symbol. */ YYSTYPE yylval; /* Number of syntax errors so far. */ int yynerrs; /*----------. | yyparse. | `----------*/ #ifdef YYPARSE_PARAM #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void *YYPARSE_PARAM) #else int yyparse (YYPARSE_PARAM) void *YYPARSE_PARAM; #endif #else /* ! YYPARSE_PARAM */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void) #else int yyparse () #endif #endif { int yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* The stacks and their tools: `yyss': related to states. `yyvs': related to semantic values. Refer to the stacks thru separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* The state stack. */ yytype_int16 yyssa[YYINITDEPTH]; yytype_int16 *yyss; yytype_int16 *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs; YYSTYPE *yyvsp; YYSIZE_T yystacksize; int yyn; int yyresult; /* Lookahead token as an internal (translated) token number. */ int yytoken; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; #if YYERROR_VERBOSE /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; yytoken = 0; yyss = yyssa; yyvs = yyvsa; yystacksize = YYINITDEPTH; YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ /* Initialize stack pointers. Waste one element of value and location stack so that they stay on the same level as the state stack. The wasted elements are never initialized. */ yyssp = yyss; yyvsp = yyvs; goto yysetstate; /*------------------------------------------------------------. | yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; yysetstate: *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) { /* Get the current used size of the three stacks, in elements. */ YYSIZE_T yysize = yyssp - yyss + 1; #ifdef yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ YYSTYPE *yyvs1 = yyvs; yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE goto yyexhaustedlab; # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; { yytype_int16 *yyss1 = yyss; union yyalloc *yyptr = (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); if (yystate == YYFINAL) YYACCEPT; goto yybackup; /*-----------. | yybackup. | `-----------*/ yybackup: /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; if (yypact_value_is_default (yyn)) goto yydefault; /* Not known => get a lookahead token if don't already have one. */ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; } if (yychar <= YYEOF) { yychar = yytoken = YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } else { yytoken = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to detect an error, take that action. */ yyn += yytoken; if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) { if (yytable_value_is_error (yyn)) goto yyerrlab; yyn = -yyn; goto yyreduce; } /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); /* Discard the shifted token. */ yychar = YYEMPTY; yystate = yyn; *++yyvsp = yylval; goto yynewstate; /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; goto yyreduce; /*-----------------------------. | yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: `$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison users should not rely upon it. Assigning to YYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; YY_REDUCE_PRINT (yyn); switch (yyn) { case 2: /* Line 1806 of yacc.c */ #line 119 "parse.y" { /* add default rule */ int def_rule; pat = cclinit(); cclnegate( pat ); def_rule = mkstate( -pat ); /* Remember the number of the default rule so we * don't generate "can't match" warnings for it. */ default_rule = num_rules; finish_rule( def_rule, false, 0, 0, 0); for ( i = 1; i <= lastsc; ++i ) scset[i] = mkbranch( scset[i], def_rule ); if ( spprdflt ) add_action( "YY_FATAL_ERROR( \"flex scanner jammed\" )" ); else add_action( "ECHO" ); add_action( ";\n\tYY_BREAK\n" ); } break; case 3: /* Line 1806 of yacc.c */ #line 148 "parse.y" { /* initialize for processing rules */ /* Create default DFA start condition. */ scinstal( "INITIAL", false ); } break; case 7: /* Line 1806 of yacc.c */ #line 159 "parse.y" { synerr( _("unknown error processing section 1") ); } break; case 8: /* Line 1806 of yacc.c */ #line 163 "parse.y" { check_options(); scon_stk = allocate_integer_array( lastsc + 1 ); scon_stk_ptr = 0; } break; case 9: /* Line 1806 of yacc.c */ #line 171 "parse.y" { xcluflg = false; } break; case 10: /* Line 1806 of yacc.c */ #line 174 "parse.y" { xcluflg = true; } break; case 11: /* Line 1806 of yacc.c */ #line 178 "parse.y" { scinstal( nmstr, xcluflg ); } break; case 12: /* Line 1806 of yacc.c */ #line 181 "parse.y" { scinstal( nmstr, xcluflg ); } break; case 13: /* Line 1806 of yacc.c */ #line 184 "parse.y" { synerr( _("bad start condition list") ); } break; case 17: /* Line 1806 of yacc.c */ #line 195 "parse.y" { outfilename = copy_string( nmstr ); did_outfilename = 1; } break; case 18: /* Line 1806 of yacc.c */ #line 200 "parse.y" { extra_type = copy_string( nmstr ); } break; case 19: /* Line 1806 of yacc.c */ #line 202 "parse.y" { prefix = copy_string( nmstr ); } break; case 20: /* Line 1806 of yacc.c */ #line 204 "parse.y" { yyclass = copy_string( nmstr ); } break; case 21: /* Line 1806 of yacc.c */ #line 206 "parse.y" { headerfilename = copy_string( nmstr ); } break; case 22: /* Line 1806 of yacc.c */ #line 208 "parse.y" { tablesext = true; tablesfilename = copy_string( nmstr ); } break; case 23: /* Line 1806 of yacc.c */ #line 212 "parse.y" { scon_stk_ptr = (yyvsp[(2) - (5)]); } break; case 24: /* Line 1806 of yacc.c */ #line 214 "parse.y" { scon_stk_ptr = (yyvsp[(2) - (5)]); } break; case 26: /* Line 1806 of yacc.c */ #line 219 "parse.y" { /* Initialize for a parse of one rule. */ trlcontxt = variable_trail_rule = varlength = false; trailcnt = headcnt = rulelen = 0; current_state_type = STATE_NORMAL; previous_continued_action = continued_action; in_rule = true; new_rule(); } break; case 27: /* Line 1806 of yacc.c */ #line 232 "parse.y" { pat = (yyvsp[(2) - (2)]); finish_rule( pat, variable_trail_rule, headcnt, trailcnt , previous_continued_action); if ( scon_stk_ptr > 0 ) { for ( i = 1; i <= scon_stk_ptr; ++i ) scbol[scon_stk[i]] = mkbranch( scbol[scon_stk[i]], pat ); } else { /* Add to all non-exclusive start conditions, * including the default (0) start condition. */ for ( i = 1; i <= lastsc; ++i ) if ( ! scxclu[i] ) scbol[i] = mkbranch( scbol[i], pat ); } if ( ! bol_needed ) { bol_needed = true; if ( performance_report > 1 ) pinpoint_message( "'^' operator results in sub-optimal performance" ); } } break; case 28: /* Line 1806 of yacc.c */ #line 268 "parse.y" { pat = (yyvsp[(1) - (1)]); finish_rule( pat, variable_trail_rule, headcnt, trailcnt , previous_continued_action); if ( scon_stk_ptr > 0 ) { for ( i = 1; i <= scon_stk_ptr; ++i ) scset[scon_stk[i]] = mkbranch( scset[scon_stk[i]], pat ); } else { for ( i = 1; i <= lastsc; ++i ) if ( ! scxclu[i] ) scset[i] = mkbranch( scset[i], pat ); } } break; case 29: /* Line 1806 of yacc.c */ #line 292 "parse.y" { if ( scon_stk_ptr > 0 ) build_eof_action(); else { /* This EOF applies to all start conditions * which don't already have EOF actions. */ for ( i = 1; i <= lastsc; ++i ) if ( ! sceof[i] ) scon_stk[++scon_stk_ptr] = i; if ( scon_stk_ptr == 0 ) warn( "all start conditions already have <> rules" ); else build_eof_action(); } } break; case 30: /* Line 1806 of yacc.c */ #line 315 "parse.y" { synerr( _("unrecognized rule") ); } break; case 31: /* Line 1806 of yacc.c */ #line 319 "parse.y" { (yyval) = scon_stk_ptr; } break; case 32: /* Line 1806 of yacc.c */ #line 323 "parse.y" { (yyval) = (yyvsp[(2) - (4)]); } break; case 33: /* Line 1806 of yacc.c */ #line 326 "parse.y" { (yyval) = scon_stk_ptr; for ( i = 1; i <= lastsc; ++i ) { int j; for ( j = 1; j <= scon_stk_ptr; ++j ) if ( scon_stk[j] == i ) break; if ( j > scon_stk_ptr ) scon_stk[++scon_stk_ptr] = i; } } break; case 34: /* Line 1806 of yacc.c */ #line 343 "parse.y" { (yyval) = scon_stk_ptr; } break; case 37: /* Line 1806 of yacc.c */ #line 351 "parse.y" { synerr( _("bad start condition list") ); } break; case 38: /* Line 1806 of yacc.c */ #line 355 "parse.y" { if ( (scnum = sclookup( nmstr )) == 0 ) format_pinpoint_message( "undeclared start condition %s", nmstr ); else { for ( i = 1; i <= scon_stk_ptr; ++i ) if ( scon_stk[i] == scnum ) { format_warn( "<%s> specified twice", scname[scnum] ); break; } if ( i > scon_stk_ptr ) scon_stk[++scon_stk_ptr] = scnum; } } break; case 39: /* Line 1806 of yacc.c */ #line 378 "parse.y" { if ( transchar[lastst[(yyvsp[(2) - (2)])]] != SYM_EPSILON ) /* Provide final transition \now/ so it * will be marked as a trailing context * state. */ (yyvsp[(2) - (2)]) = link_machines( (yyvsp[(2) - (2)]), mkstate( SYM_EPSILON ) ); mark_beginning_as_normal( (yyvsp[(2) - (2)]) ); current_state_type = STATE_NORMAL; if ( previous_continued_action ) { /* We need to treat this as variable trailing * context so that the backup does not happen * in the action but before the action switch * statement. If the backup happens in the * action, then the rules "falling into" this * one's action will *also* do the backup, * erroneously. */ if ( ! varlength || headcnt != 0 ) warn( "trailing context made variable due to preceding '|' action" ); /* Mark as variable. */ varlength = true; headcnt = 0; } if ( lex_compat || (varlength && headcnt == 0) ) { /* variable trailing context rule */ /* Mark the first part of the rule as the * accepting "head" part of a trailing * context rule. * * By the way, we didn't do this at the * beginning of this production because back * then current_state_type was set up for a * trail rule, and add_accept() can create * a new state ... */ add_accept( (yyvsp[(1) - (2)]), num_rules | YY_TRAILING_HEAD_MASK ); variable_trail_rule = true; } else trailcnt = rulelen; (yyval) = link_machines( (yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]) ); } break; case 40: /* Line 1806 of yacc.c */ #line 434 "parse.y" { synerr( _("trailing context used twice") ); } break; case 41: /* Line 1806 of yacc.c */ #line 437 "parse.y" { headcnt = 0; trailcnt = 1; rulelen = 1; varlength = false; current_state_type = STATE_TRAILING_CONTEXT; if ( trlcontxt ) { synerr( _("trailing context used twice") ); (yyval) = mkstate( SYM_EPSILON ); } else if ( previous_continued_action ) { /* See the comment in the rule for "re2 re" * above. */ warn( "trailing context made variable due to preceding '|' action" ); varlength = true; } if ( lex_compat || varlength ) { /* Again, see the comment in the rule for * "re2 re" above. */ add_accept( (yyvsp[(1) - (2)]), num_rules | YY_TRAILING_HEAD_MASK ); variable_trail_rule = true; } trlcontxt = true; eps = mkstate( SYM_EPSILON ); (yyval) = link_machines( (yyvsp[(1) - (2)]), link_machines( eps, mkstate( '\n' ) ) ); } break; case 42: /* Line 1806 of yacc.c */ #line 480 "parse.y" { (yyval) = (yyvsp[(1) - (1)]); if ( trlcontxt ) { if ( lex_compat || (varlength && headcnt == 0) ) /* Both head and trail are * variable-length. */ variable_trail_rule = true; else trailcnt = rulelen; } } break; case 43: /* Line 1806 of yacc.c */ #line 498 "parse.y" { varlength = true; (yyval) = mkor( (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]) ); } break; case 44: /* Line 1806 of yacc.c */ #line 504 "parse.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 45: /* Line 1806 of yacc.c */ #line 509 "parse.y" { /* This rule is written separately so the * reduction will occur before the trailing * series is parsed. */ if ( trlcontxt ) synerr( _("trailing context used twice") ); else trlcontxt = true; if ( varlength ) /* We hope the trailing context is * fixed-length. */ varlength = false; else headcnt = rulelen; rulelen = 0; current_state_type = STATE_TRAILING_CONTEXT; (yyval) = (yyvsp[(1) - (2)]); } break; case 46: /* Line 1806 of yacc.c */ #line 536 "parse.y" { /* This is where concatenation of adjacent patterns * gets done. */ (yyval) = link_machines( (yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]) ); } break; case 47: /* Line 1806 of yacc.c */ #line 544 "parse.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 48: /* Line 1806 of yacc.c */ #line 547 "parse.y" { varlength = true; if ( (yyvsp[(3) - (6)]) > (yyvsp[(5) - (6)]) || (yyvsp[(3) - (6)]) < 0 ) { synerr( _("bad iteration values") ); (yyval) = (yyvsp[(1) - (6)]); } else { if ( (yyvsp[(3) - (6)]) == 0 ) { if ( (yyvsp[(5) - (6)]) <= 0 ) { synerr( _("bad iteration values") ); (yyval) = (yyvsp[(1) - (6)]); } else (yyval) = mkopt( mkrep( (yyvsp[(1) - (6)]), 1, (yyvsp[(5) - (6)]) ) ); } else (yyval) = mkrep( (yyvsp[(1) - (6)]), (yyvsp[(3) - (6)]), (yyvsp[(5) - (6)]) ); } } break; case 49: /* Line 1806 of yacc.c */ #line 575 "parse.y" { varlength = true; if ( (yyvsp[(3) - (5)]) <= 0 ) { synerr( _("iteration value must be positive") ); (yyval) = (yyvsp[(1) - (5)]); } else (yyval) = mkrep( (yyvsp[(1) - (5)]), (yyvsp[(3) - (5)]), INFINITE_REPEAT ); } break; case 50: /* Line 1806 of yacc.c */ #line 589 "parse.y" { /* The series could be something like "(foo)", * in which case we have no idea what its length * is, so we punt here. */ varlength = true; if ( (yyvsp[(3) - (4)]) <= 0 ) { synerr( _("iteration value must be positive") ); (yyval) = (yyvsp[(1) - (4)]); } else (yyval) = link_machines( (yyvsp[(1) - (4)]), copysingl( (yyvsp[(1) - (4)]), (yyvsp[(3) - (4)]) - 1 ) ); } break; case 51: /* Line 1806 of yacc.c */ #line 611 "parse.y" { varlength = true; (yyval) = mkclos( (yyvsp[(1) - (2)]) ); } break; case 52: /* Line 1806 of yacc.c */ #line 618 "parse.y" { varlength = true; (yyval) = mkposcl( (yyvsp[(1) - (2)]) ); } break; case 53: /* Line 1806 of yacc.c */ #line 624 "parse.y" { varlength = true; (yyval) = mkopt( (yyvsp[(1) - (2)]) ); } break; case 54: /* Line 1806 of yacc.c */ #line 630 "parse.y" { varlength = true; if ( (yyvsp[(3) - (6)]) > (yyvsp[(5) - (6)]) || (yyvsp[(3) - (6)]) < 0 ) { synerr( _("bad iteration values") ); (yyval) = (yyvsp[(1) - (6)]); } else { if ( (yyvsp[(3) - (6)]) == 0 ) { if ( (yyvsp[(5) - (6)]) <= 0 ) { synerr( _("bad iteration values") ); (yyval) = (yyvsp[(1) - (6)]); } else (yyval) = mkopt( mkrep( (yyvsp[(1) - (6)]), 1, (yyvsp[(5) - (6)]) ) ); } else (yyval) = mkrep( (yyvsp[(1) - (6)]), (yyvsp[(3) - (6)]), (yyvsp[(5) - (6)]) ); } } break; case 55: /* Line 1806 of yacc.c */ #line 658 "parse.y" { varlength = true; if ( (yyvsp[(3) - (5)]) <= 0 ) { synerr( _("iteration value must be positive") ); (yyval) = (yyvsp[(1) - (5)]); } else (yyval) = mkrep( (yyvsp[(1) - (5)]), (yyvsp[(3) - (5)]), INFINITE_REPEAT ); } break; case 56: /* Line 1806 of yacc.c */ #line 672 "parse.y" { /* The singleton could be something like "(foo)", * in which case we have no idea what its length * is, so we punt here. */ varlength = true; if ( (yyvsp[(3) - (4)]) <= 0 ) { synerr( _("iteration value must be positive") ); (yyval) = (yyvsp[(1) - (4)]); } else (yyval) = link_machines( (yyvsp[(1) - (4)]), copysingl( (yyvsp[(1) - (4)]), (yyvsp[(3) - (4)]) - 1 ) ); } break; case 57: /* Line 1806 of yacc.c */ #line 691 "parse.y" { if ( ! madeany ) { /* Create the '.' character class. */ ccldot = cclinit(); ccladd( ccldot, '\n' ); cclnegate( ccldot ); if ( useecs ) mkeccl( ccltbl + cclmap[ccldot], ccllen[ccldot], nextecm, ecgroup, csize, csize ); /* Create the (?s:'.') character class. */ cclany = cclinit(); cclnegate( cclany ); if ( useecs ) mkeccl( ccltbl + cclmap[cclany], ccllen[cclany], nextecm, ecgroup, csize, csize ); madeany = true; } ++rulelen; if (sf_dot_all()) (yyval) = mkstate( -cclany ); else (yyval) = mkstate( -ccldot ); } break; case 58: /* Line 1806 of yacc.c */ #line 725 "parse.y" { /* Sort characters for fast searching. */ qsort( ccltbl + cclmap[(yyvsp[(1) - (1)])], ccllen[(yyvsp[(1) - (1)])], sizeof (*ccltbl), cclcmp ); if ( useecs ) mkeccl( ccltbl + cclmap[(yyvsp[(1) - (1)])], ccllen[(yyvsp[(1) - (1)])], nextecm, ecgroup, csize, csize ); ++rulelen; if (ccl_has_nl[(yyvsp[(1) - (1)])]) rule_has_nl[num_rules] = true; (yyval) = mkstate( -(yyvsp[(1) - (1)]) ); } break; case 59: /* Line 1806 of yacc.c */ #line 743 "parse.y" { ++rulelen; if (ccl_has_nl[(yyvsp[(1) - (1)])]) rule_has_nl[num_rules] = true; (yyval) = mkstate( -(yyvsp[(1) - (1)]) ); } break; case 60: /* Line 1806 of yacc.c */ #line 753 "parse.y" { (yyval) = (yyvsp[(2) - (3)]); } break; case 61: /* Line 1806 of yacc.c */ #line 756 "parse.y" { (yyval) = (yyvsp[(2) - (3)]); } break; case 62: /* Line 1806 of yacc.c */ #line 759 "parse.y" { ++rulelen; if ((yyvsp[(1) - (1)]) == nlch) rule_has_nl[num_rules] = true; if (sf_case_ins() && has_case((yyvsp[(1) - (1)]))) /* create an alternation, as in (a|A) */ (yyval) = mkor (mkstate((yyvsp[(1) - (1)])), mkstate(reverse_case((yyvsp[(1) - (1)])))); else (yyval) = mkstate( (yyvsp[(1) - (1)]) ); } break; case 63: /* Line 1806 of yacc.c */ #line 773 "parse.y" { (yyval) = ccl_set_diff ((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)])); } break; case 64: /* Line 1806 of yacc.c */ #line 774 "parse.y" { (yyval) = ccl_set_union ((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)])); } break; case 66: /* Line 1806 of yacc.c */ #line 780 "parse.y" { (yyval) = (yyvsp[(2) - (3)]); } break; case 67: /* Line 1806 of yacc.c */ #line 783 "parse.y" { cclnegate( (yyvsp[(3) - (4)]) ); (yyval) = (yyvsp[(3) - (4)]); } break; case 68: /* Line 1806 of yacc.c */ #line 790 "parse.y" { if (sf_case_ins()) { /* If one end of the range has case and the other * does not, or the cases are different, then we're not * sure what range the user is trying to express. * Examples: [@-z] or [S-t] */ if (has_case ((yyvsp[(2) - (4)])) != has_case ((yyvsp[(4) - (4)])) || (has_case ((yyvsp[(2) - (4)])) && (b_islower ((yyvsp[(2) - (4)])) != b_islower ((yyvsp[(4) - (4)])))) || (has_case ((yyvsp[(2) - (4)])) && (b_isupper ((yyvsp[(2) - (4)])) != b_isupper ((yyvsp[(4) - (4)]))))) format_warn3 ( _("the character range [%c-%c] is ambiguous in a case-insensitive scanner"), (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); /* If the range spans uppercase characters but not * lowercase (or vice-versa), then should we automatically * include lowercase characters in the range? * Example: [@-_] spans [a-z] but not [A-Z] */ else if (!has_case ((yyvsp[(2) - (4)])) && !has_case ((yyvsp[(4) - (4)])) && !range_covers_case ((yyvsp[(2) - (4)]), (yyvsp[(4) - (4)]))) format_warn3 ( _("the character range [%c-%c] is ambiguous in a case-insensitive scanner"), (yyvsp[(2) - (4)]), (yyvsp[(4) - (4)])); } if ( (yyvsp[(2) - (4)]) > (yyvsp[(4) - (4)]) ) synerr( _("negative range in character class") ); else { for ( i = (yyvsp[(2) - (4)]); i <= (yyvsp[(4) - (4)]); ++i ) ccladd( (yyvsp[(1) - (4)]), i ); /* Keep track if this ccl is staying in * alphabetical order. */ cclsorted = cclsorted && ((yyvsp[(2) - (4)]) > lastchar); lastchar = (yyvsp[(4) - (4)]); /* Do it again for upper/lowercase */ if (sf_case_ins() && has_case((yyvsp[(2) - (4)])) && has_case((yyvsp[(4) - (4)]))){ (yyvsp[(2) - (4)]) = reverse_case ((yyvsp[(2) - (4)])); (yyvsp[(4) - (4)]) = reverse_case ((yyvsp[(4) - (4)])); for ( i = (yyvsp[(2) - (4)]); i <= (yyvsp[(4) - (4)]); ++i ) ccladd( (yyvsp[(1) - (4)]), i ); cclsorted = cclsorted && ((yyvsp[(2) - (4)]) > lastchar); lastchar = (yyvsp[(4) - (4)]); } } (yyval) = (yyvsp[(1) - (4)]); } break; case 69: /* Line 1806 of yacc.c */ #line 850 "parse.y" { ccladd( (yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]) ); cclsorted = cclsorted && ((yyvsp[(2) - (2)]) > lastchar); lastchar = (yyvsp[(2) - (2)]); /* Do it again for upper/lowercase */ if (sf_case_ins() && has_case((yyvsp[(2) - (2)]))){ (yyvsp[(2) - (2)]) = reverse_case ((yyvsp[(2) - (2)])); ccladd ((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)])); cclsorted = cclsorted && ((yyvsp[(2) - (2)]) > lastchar); lastchar = (yyvsp[(2) - (2)]); } (yyval) = (yyvsp[(1) - (2)]); } break; case 70: /* Line 1806 of yacc.c */ #line 868 "parse.y" { /* Too hard to properly maintain cclsorted. */ cclsorted = false; (yyval) = (yyvsp[(1) - (2)]); } break; case 71: /* Line 1806 of yacc.c */ #line 875 "parse.y" { cclsorted = true; lastchar = 0; currccl = (yyval) = cclinit(); } break; case 72: /* Line 1806 of yacc.c */ #line 883 "parse.y" { CCL_EXPR(isalnum); } break; case 73: /* Line 1806 of yacc.c */ #line 884 "parse.y" { CCL_EXPR(isalpha); } break; case 74: /* Line 1806 of yacc.c */ #line 885 "parse.y" { CCL_EXPR(IS_BLANK); } break; case 75: /* Line 1806 of yacc.c */ #line 886 "parse.y" { CCL_EXPR(iscntrl); } break; case 76: /* Line 1806 of yacc.c */ #line 887 "parse.y" { CCL_EXPR(isdigit); } break; case 77: /* Line 1806 of yacc.c */ #line 888 "parse.y" { CCL_EXPR(isgraph); } break; case 78: /* Line 1806 of yacc.c */ #line 889 "parse.y" { CCL_EXPR(islower); if (sf_case_ins()) CCL_EXPR(isupper); } break; case 79: /* Line 1806 of yacc.c */ #line 894 "parse.y" { CCL_EXPR(isprint); } break; case 80: /* Line 1806 of yacc.c */ #line 895 "parse.y" { CCL_EXPR(ispunct); } break; case 81: /* Line 1806 of yacc.c */ #line 896 "parse.y" { CCL_EXPR(isspace); } break; case 82: /* Line 1806 of yacc.c */ #line 897 "parse.y" { CCL_EXPR(isxdigit); } break; case 83: /* Line 1806 of yacc.c */ #line 898 "parse.y" { CCL_EXPR(isupper); if (sf_case_ins()) CCL_EXPR(islower); } break; case 84: /* Line 1806 of yacc.c */ #line 904 "parse.y" { CCL_NEG_EXPR(isalnum); } break; case 85: /* Line 1806 of yacc.c */ #line 905 "parse.y" { CCL_NEG_EXPR(isalpha); } break; case 86: /* Line 1806 of yacc.c */ #line 906 "parse.y" { CCL_NEG_EXPR(IS_BLANK); } break; case 87: /* Line 1806 of yacc.c */ #line 907 "parse.y" { CCL_NEG_EXPR(iscntrl); } break; case 88: /* Line 1806 of yacc.c */ #line 908 "parse.y" { CCL_NEG_EXPR(isdigit); } break; case 89: /* Line 1806 of yacc.c */ #line 909 "parse.y" { CCL_NEG_EXPR(isgraph); } break; case 90: /* Line 1806 of yacc.c */ #line 910 "parse.y" { CCL_NEG_EXPR(isprint); } break; case 91: /* Line 1806 of yacc.c */ #line 911 "parse.y" { CCL_NEG_EXPR(ispunct); } break; case 92: /* Line 1806 of yacc.c */ #line 912 "parse.y" { CCL_NEG_EXPR(isspace); } break; case 93: /* Line 1806 of yacc.c */ #line 913 "parse.y" { CCL_NEG_EXPR(isxdigit); } break; case 94: /* Line 1806 of yacc.c */ #line 914 "parse.y" { if ( sf_case_ins() ) warn(_("[:^lower:] is ambiguous in case insensitive scanner")); else CCL_NEG_EXPR(islower); } break; case 95: /* Line 1806 of yacc.c */ #line 920 "parse.y" { if ( sf_case_ins() ) warn(_("[:^upper:] ambiguous in case insensitive scanner")); else CCL_NEG_EXPR(isupper); } break; case 96: /* Line 1806 of yacc.c */ #line 929 "parse.y" { if ( (yyvsp[(2) - (2)]) == nlch ) rule_has_nl[num_rules] = true; ++rulelen; if (sf_case_ins() && has_case((yyvsp[(2) - (2)]))) (yyval) = mkor (mkstate((yyvsp[(2) - (2)])), mkstate(reverse_case((yyvsp[(2) - (2)])))); else (yyval) = mkstate ((yyvsp[(2) - (2)])); (yyval) = link_machines( (yyvsp[(1) - (2)]), (yyval)); } break; case 97: /* Line 1806 of yacc.c */ #line 944 "parse.y" { (yyval) = mkstate( SYM_EPSILON ); } break; /* Line 1806 of yacc.c */ #line 2847 "parse.c" default: break; } /* User semantic actions sometimes alter yychar, and that requires that yytoken be updated with the new translation. We take the approach of translating immediately before every use of yytoken. One alternative is translating here after every semantic action, but that translation would be missed if the semantic action invokes YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an incorrect destructor might then be invoked immediately. In the case of YYERROR or YYBACKUP, subsequent parser actions might lead to an incorrect destructor call or verbose syntax error message before the lookahead is translated. */ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ yyn = yyr1[yyn]; yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) yystate = yytable[yystate]; else yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; /*------------------------------------. | yyerrlab -- here on detecting error | `------------------------------------*/ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; #if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); #else # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ yyssp, yytoken) { char const *yymsgp = YY_("syntax error"); int yysyntax_error_status; yysyntax_error_status = YYSYNTAX_ERROR; if (yysyntax_error_status == 0) yymsgp = yymsg; else if (yysyntax_error_status == 1) { if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); if (!yymsg) { yymsg = yymsgbuf; yymsg_alloc = sizeof yymsgbuf; yysyntax_error_status = 2; } else { yysyntax_error_status = YYSYNTAX_ERROR; yymsgp = yymsg; } } yyerror (yymsgp); if (yysyntax_error_status == 2) goto yyexhaustedlab; } # undef YYSYNTAX_ERROR #endif } if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an error, discard it. */ if (yychar <= YYEOF) { /* Return failure if at end of input. */ if (yychar == YYEOF) YYABORT; } else { yydestruct ("Error: discarding", yytoken, &yylval); yychar = YYEMPTY; } } /* Else will try to reuse lookahead token after shifting the error token. */ goto yyerrlab1; /*---------------------------------------------------. | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: /* Pacify compilers like GCC when the user code never invokes YYERROR and the label yyerrorlab therefore never appears in user code. */ if (/*CONSTCOND*/ 0) goto yyerrorlab; /* Do not reclaim the symbols of the rule which action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); yystate = *yyssp; goto yyerrlab1; /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) { yyn += YYTERROR; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) { yyn = yytable[yyn]; if (0 < yyn) break; } } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) YYABORT; yydestruct ("Error: popping", yystos[yystate], yyvsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } *++yyvsp = yylval; /* Shift the error token. */ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; /*-------------------------------------. | yyacceptlab -- YYACCEPT comes here. | `-------------------------------------*/ yyacceptlab: yyresult = 0; goto yyreturn; /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: yyresult = 1; goto yyreturn; #if !defined(yyoverflow) || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; /* Fall through. */ #endif yyreturn: if (yychar != YYEMPTY) { /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = YYTRANSLATE (yychar); yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval); } /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", yystos[*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif #if YYERROR_VERBOSE if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif /* Make sure YYID is used. */ return YYID (yyresult); } /* Line 2067 of yacc.c */ #line 947 "parse.y" /* build_eof_action - build the "<>" action for the active start * conditions */ void build_eof_action() { register int i; char action_text[MAXLINE]; for ( i = 1; i <= scon_stk_ptr; ++i ) { if ( sceof[scon_stk[i]] ) format_pinpoint_message( "multiple <> rules for start condition %s", scname[scon_stk[i]] ); else { sceof[scon_stk[i]] = true; if (previous_continued_action /* && previous action was regular */) add_action("YY_RULE_SETUP\n"); snprintf( action_text, sizeof(action_text), "case YY_STATE_EOF(%s):\n", scname[scon_stk[i]] ); add_action( action_text ); } } line_directive_out( (FILE *) 0, 1 ); /* This isn't a normal rule after all - don't count it as * such, so we don't have any holes in the rule numbering * (which make generating "rule can never match" warnings * more difficult. */ --num_rules; ++num_eof_rules; } /* format_synerr - write out formatted syntax error */ void format_synerr( msg, arg ) const char *msg, arg[]; { char errmsg[MAXLINE]; (void) snprintf( errmsg, sizeof(errmsg), msg, arg ); synerr( errmsg ); } /* synerr - report a syntax error */ void synerr( str ) const char *str; { syntaxerror = true; pinpoint_message( str ); } /* format_warn - write out formatted warning */ void format_warn( msg, arg ) const char *msg, arg[]; { char warn_msg[MAXLINE]; snprintf( warn_msg, sizeof(warn_msg), msg, arg ); warn( warn_msg ); } /* warn - report a warning, unless -w was given */ void warn( str ) const char *str; { line_warning( str, linenum ); } /* format_pinpoint_message - write out a message formatted with one string, * pinpointing its location */ void format_pinpoint_message( msg, arg ) const char *msg, arg[]; { char errmsg[MAXLINE]; snprintf( errmsg, sizeof(errmsg), msg, arg ); pinpoint_message( errmsg ); } /* pinpoint_message - write out a message, pinpointing its location */ void pinpoint_message( str ) const char *str; { line_pinpoint( str, linenum ); } /* line_warning - report a warning at a given line, unless -w was given */ void line_warning( str, line ) const char *str; int line; { char warning[MAXLINE]; if ( ! nowarn ) { snprintf( warning, sizeof(warning), "warning, %s", str ); line_pinpoint( warning, line ); } } /* line_pinpoint - write out a message, pinpointing it at the given line */ void line_pinpoint( str, line ) const char *str; int line; { fprintf( stderr, "%s:%d: %s\n", infilename, line, str ); } /* yyerror - eat up an error message from the parser; * currently, messages are ignore */ void yyerror( msg ) const char *msg; { } flex-2.5.39/examples/0002755000175000017500000000000012314621664014647 5ustar srivastasrivastaflex-2.5.39/examples/manual/0002755000175000017500000000000012314621664016124 5ustar srivastasrivastaflex-2.5.39/examples/manual/pascal.lex0000644000175000017500000000617512060131401020067 0ustar srivastasrivasta/* * pascal.lex: An example PASCAL scanner * */ %{ #include #include "y.tab.h" int line_number = 0; void yyerror(char *message); %} %x COMMENT1 COMMENT2 white_space [ \t]* digit [0-9] alpha [A-Za-z_] alpha_num ({alpha}|{digit}) hex_digit [0-9A-F] identifier {alpha}{alpha_num}* unsigned_integer {digit}+ hex_integer ${hex_digit}{hex_digit}* exponent e[+-]?{digit}+ i {unsigned_integer} real ({i}\.{i}?|{i}?\.{i}){exponent}? string \'([^'\n]|\'\')+\' bad_string \'([^'\n]|\'\')+ %% "{" BEGIN(COMMENT1); [^}\n]+ \n ++line_number; <> yyerror("EOF in comment"); "}" BEGIN(INITIAL); "(*" BEGIN(COMMENT2); [^)*\n]+ \n ++line_number; <> yyerror("EOF in comment"); "*)" BEGIN(INITIAL); [*)] /* note that FILE and BEGIN are already * defined in FLEX or C so they can't * be used. This can be overcome in * a cleaner way by defining all the * tokens to start with TOK_ or some * other prefix. */ and return(AND); array return(ARRAY); begin return(_BEGIN); case return(CASE); const return(CONST); div return(DIV); do return(DO); downto return(DOWNTO); else return(ELSE); end return(END); file return(_FILE); for return(FOR); function return(FUNCTION); goto return(GOTO); if return(IF); in return(IN); label return(LABEL); mod return(MOD); nil return(NIL); not return(NOT); of return(OF); packed return(PACKED); procedure return(PROCEDURE); program return(PROGRAM); record return(RECORD); repeat return(REPEAT); set return(SET); then return(THEN); to return(TO); type return(TYPE); until return(UNTIL); var return(VAR); while return(WHILE); with return(WITH); "<="|"=<" return(LEQ); "=>"|">=" return(GEQ); "<>" return(NEQ); "=" return(EQ); ".." return(DOUBLEDOT); {unsigned_integer} return(UNSIGNED_INTEGER); {real} return(REAL); {hex_integer} return(HEX_INTEGER); {string} return{STRING}; {bad_string} yyerror("Unterminated string"); {identifier} return(IDENTIFIER); [*/+\-,^.;:()\[\]] return(yytext[0]); {white_space} /* do nothing */ \n line_number += 1; . yyerror("Illegal input"); %% void yyerror(char *message) { fprintf(stderr,"Error: \"%s\" in line %d. Token = %s\n", message,line_number,yytext); exit(1); } flex-2.5.39/examples/manual/replace.lex0000644000175000017500000000102112060131401020220 0ustar srivastasrivasta/* * replace.lex : A simple filter for renaming * parts of flex of bison generated * scanners or parsers. */ %{ #include char lower_replace[1024]; char upper_replace[1024]; %} %% "yy" printf("%s",lower_replace); "YY" printf("%s",upper_replace); , ECHO; %% int main(int argc, char *argv[]) { if(argc < 2){ printf("Usage %s lower UPPER\n",argv[0]); exit(1); } strcpy(lower_replace,argv[1]); strcpy(upper_replace,argv[2]); yylex(); return(0); } flex-2.5.39/examples/manual/yymore2.lex0000644000175000017500000000132012060131401020215 0ustar srivastasrivasta/* * yymore.lex: An example of using yymore() * to good effect. */ %{ #include void yyerror(char *message) { printf("Error: %s\n",message); } %} %x STRING %% \" BEGIN(STRING); [^\\\n"]* yymore(); <> yyerror("EOF in string."); BEGIN(INITIAL); \n yyerror("Unterminated string."); BEGIN(INITIAL); \\\n { bcopy(yytext,yytext+2,yyleng-2); yytext += 2; yyleng -= 2; yymore(); } \" { yyleng -= 1; yytext[yyleng] = '\0'; printf("string = \"%s\"",yytext); BEGIN(INITIAL); } %% flex-2.5.39/examples/manual/Makefile.examples0000644000175000017500000000355612060131401021367 0ustar srivastasrivasta############################################################# # # Makefile : Makefile for Flex examples. # Author : G.T.Nicol # Last Updated : 1993/10/05 # # If you use bison, you may have to supply an alloca # ############################################################# CC = gcc -g LEX = flex -i -I YACC = bison -d -y ALLOCA = ############################################################ # # DO NOT CHANGE ANYTHING FROM HERE ON !!!!!!!!! # ############################################################ all: expr front myname eof wc replace user_act string1\ string2 yymore numbers dates cat expr: expr.y expr.lex $(YACC) expr.y $(LEX) expr.lex $(CC) -o expr lex.yy.c y.tab.c $(ALLOCA) -ll -lm front: front.y front.lex $(YACC) front.y $(LEX) front.lex $(CC) -o front lex.yy.c y.tab.c $(ALLOCA) -ll -lm numbers: numbers.lex $(LEX) numbers.lex $(CC) lex.yy.c -o numbers dates: dates.lex $(LEX) dates.lex $(CC) lex.yy.c -o dates -ll yymore: yymore.lex $(LEX) yymore.lex $(CC) lex.yy.c -o yymore -ll string1: string1.lex $(LEX) string1.lex $(CC) lex.yy.c -o string1 -ll string2: string2.lex $(LEX) string2.lex $(CC) lex.yy.c -o string2 -ll myname: myname.lex $(LEX) myname.lex $(CC) lex.yy.c -o myname -ll myname2: myname2.lex $(LEX) myname2.lex $(CC) lex.yy.c -o myname2 -ll eof: eof_rules.lex $(LEX) eof_rules.lex $(CC) lex.yy.c -o eof -ll wc: wc.lex $(LEX) wc.lex $(CC) lex.yy.c -o wc -ll cat: cat.lex $(LEX) cat.lex $(CC) lex.yy.c -o cat -ll replace: replace.lex $(LEX) replace.lex $(CC) lex.yy.c -o replace -ll user_act: expr.y expr.lex $(LEX) user_act.lex $(CC) -o user_act lex.yy.c -ll clean: rm -f *.BAK *.o core *~* *.a rm -f *.tab.h *.tab.c rm -f myname expr lex.yy.c *.out eof wc yymore rm -f replace front user_act string1 string2 rm -f dates numbers cat flex-2.5.39/examples/manual/cat.lex0000644000175000017500000000152112060131401017361 0ustar srivastasrivasta/* * cat.lex: A demonstration of YY_NEW_FILE. */ %{ #include char **names = NULL; int current = 1; %} %% <> { current += 1; if(names[current] != NULL){ yyin = fopen(names[current],"r"); if(yyin == NULL){ fprintf(stderr,"cat: unable to open %s\n", names[current]); yyterminate(); } YY_NEW_FILE; } else { yyterminate(); } } %% int main(int argc, char **argv) { if(argc < 2){ fprintf(stderr,"Usage: cat files....\n"); exit(1); } names = argv; yyin = fopen(names[current],"r"); if(yyin == NULL){ fprintf(stderr,"cat: unable to open %s\n", names[current]); yyterminate(); } yylex(); } flex-2.5.39/examples/manual/reject.lex0000644000175000017500000000036512060131401020073 0ustar srivastasrivasta/* * reject.lex: An example of REJECT and unput() * misuse. */ %% UNIX { unput('U'); unput('N'); unput('G'); unput('\0'); REJECT; } GNU printf("GNU is Not Unix!\n"); %% flex-2.5.39/examples/manual/userinit.lex0000644000175000017500000000100212060131401020446 0ustar srivastasrivasta%{ #define YY_USER_INIT open_input_file() extern FILE *yyin; void open_input_file(void) { char *file_name,buffer[1024]; yyin = NULL; while(yyin == NULL){ printf("Input file: "); file_name = fgets(buffer,1024,stdin); if(file_name){ file_name[strlen(file_name)-1] = '\0'; yyin = fopen(file_name,"r"); if(yyin == NULL){ printf("Unable to open \"%s\"\n",file_name); } } else { printf("stdin\n"); yyin = stdin; break; } } } %} %% flex-2.5.39/examples/manual/eof_rules.lex0000644000175000017500000000246512060131401020605 0ustar srivastasrivasta/* * eof_rules.lex : An example of using multiple buffers * EOF rules, and start states */ %{ #define MAX_NEST 10 YY_BUFFER_STATE include_stack[MAX_NEST]; int include_count = -1; %} %x INCLUDE %% ^"#include"[ \t]*\" BEGIN(INCLUDE); \" BEGIN(INITIAL); [^\"]+ { /* get the include file name */ if ( include_count >= MAX_NEST){ fprintf( stderr, "Too many include files" ); exit( 1 ); } include_stack[++include_count] = YY_CURRENT_BUFFER; yyin = fopen( yytext, "r" ); if ( ! yyin ){ fprintf( stderr, "Unable to open \"%s\"\n",yytext); exit( 1 ); } yy_switch_to_buffer(yy_create_buffer(yyin,YY_BUF_SIZE)); BEGIN(INITIAL); } <> { fprintf( stderr, "EOF in include" ); yyterminate(); } <> { if ( include_count <= 0 ){ yyterminate(); } else { yy_delete_buffer(include_stack[include_count--] ); yy_switch_to_buffer(include_stack[include_count] ); BEGIN(INCLUDE); } } [a-z]+ ECHO; .|\n ECHO; flex-2.5.39/examples/manual/wc.lex0000644000175000017500000000526012060131401017227 0ustar srivastasrivasta%{ /* * wc.lex : A simple example of using FLEX * to create a wc-like utility. * * See MISC/fastwc/ in the flex distribution for examples * of how to write this scanner for maximum performance. */ int numchars = 0; int numwords = 0; int numlines = 0; int totchars = 0; int totwords = 0; int totlines = 0; /* * rules start from here */ %} %% [\n] { numchars++; numlines++; } [\r] { numchars++; } [^ \t\n]+ { numwords++; numchars += yyleng; } . { numchars++; } %% /* * additional C code start from here. This supplies * all the argument processing etc. */ int main(int argc, char *argv[]) { int loop,first=1; int lflag = 0; /* 1 if we count # of lines */ int wflag = 0; /* 1 if we count # of words */ int cflag = 0; /* 1 if we count # of characters */ int fflag = 0; /* 1 if we have a file name */ for(loop=1; loop #define UNSIGNED_LONG_SYM 1 #define SIGNED_LONG_SYM 2 #define UNSIGNED_SYM 3 #define SIGNED_SYM 4 #define LONG_DOUBLE_SYM 5 #define FLOAT_SYM 6 union _yylval { long double ylong_double; float yfloat; unsigned long yunsigned_long; unsigned yunsigned; long ysigned_long; int ysigned; } yylval; %} digit [0-9] hex_digit [0-9a-fA-F] oct_digit [0-7] exponent [eE][+-]?{digit}+ i {digit}+ float_constant ({i}\.{i}?|{i}?\.{i}){exponent}? hex_constant 0[xX]{hex_digit}+ oct_constant 0{oct_digit}* int_constant {digit}+ long_ext [lL] unsigned_ext [uU] float_ext [fF] ulong_ext {long_ext}{unsigned_ext}|{unsigned_ext}{long_ext} %% {hex_constant}{ulong_ext} { /* we need to skip the "0x" part */ sscanf(&yytext[2],"%lx",&yylval.yunsigned_long); return(UNSIGNED_LONG_SYM); } {hex_constant}{long_ext} { sscanf(&yytext[2],"%lx",&yylval.ysigned_long); return(SIGNED_LONG_SYM); } {hex_constant}{unsigned_ext} { sscanf(&yytext[2],"%x",&yylval.yunsigned); return(UNSIGNED_SYM); } {hex_constant} { /* use %lx to protect against overflow */ sscanf(&yytext[2],"%lx",&yylval.ysigned_long); return(SIGNED_LONG_SYM); } {oct_constant}{ulong_ext} { sscanf(yytext,"%lo",&yylval.yunsigned_long); return(UNSIGNED_LONG_SYM); } {oct_constant}{long_ext} { sscanf(yytext,"%lo",&yylval.ysigned_long); return(SIGNED_LONG_SYM); } {oct_constant}{unsigned_ext} { sscanf(yytext,"%o",&yylval.yunsigned); return(UNSIGNED_SYM); } {oct_constant} { /* use %lo to protect against overflow */ sscanf(yytext,"%lo",&yylval.ysigned_long); return(SIGNED_LONG_SYM); } {int_constant}{ulong_ext} { sscanf(yytext,"%ld",&yylval.yunsigned_long); return(UNSIGNED_LONG_SYM); } {int_constant}{long_ext} { sscanf(yytext,"%ld",&yylval.ysigned_long); return(SIGNED_LONG_SYM); } {int_constant}{unsigned_ext} { sscanf(yytext,"%d",&yylval.yunsigned); return(UNSIGNED_SYM); } {int_constant} { /* use %ld to protect against overflow */ sscanf(yytext,"%ld",&yylval.ysigned_long); return(SIGNED_LONG_SYM); } {float_constant}{long_ext} { sscanf(yytext,"%lf",&yylval.ylong_double); return(LONG_DOUBLE_SYM); } {float_constant}{float_ext} { sscanf(yytext,"%f",&yylval.yfloat); return(FLOAT_SYM); } {float_constant} { /* use %lf to protect against overflow */ sscanf(yytext,"%lf",&yylval.ylong_double); return(LONG_DOUBLE_SYM); } %% int main(void) { int code; while((code = yylex())){ printf("yytext : %s\n",yytext); switch(code){ case UNSIGNED_LONG_SYM: printf("Type of number : UNSIGNED LONG\n"); printf("Value of number : %lu\n",yylval.yunsigned_long); break; case SIGNED_LONG_SYM: printf("Type of number : SIGNED LONG\n"); printf("Value of number : %ld\n",yylval.ysigned_long); break; case UNSIGNED_SYM: printf("Type of number : UNSIGNED\n"); printf("Value of number : %u\n",yylval.yunsigned); break; case SIGNED_SYM: printf("Type of number : SIGNED\n"); printf("Value of number : %d\n",yylval.ysigned); break; case LONG_DOUBLE_SYM: printf("Type of number : LONG DOUBLE\n"); printf("Value of number : %lf\n",yylval.ylong_double); break; case FLOAT_SYM: printf("Type of number : FLOAT\n"); printf("Value of number : %f\n",yylval.yfloat); break; default: printf("Type of number : UNDEFINED\n"); printf("Value of number : UNDEFINED\n"); break; } } return(0); } flex-2.5.39/examples/manual/pas_include.lex0000644000175000017500000000320612060131401021102 0ustar srivastasrivasta/* * eof_rules.lex : An example of using multiple buffers * EOF rules, and start states */ %{ #define MAX_NEST 10 YY_BUFFER_STATE include_stack[MAX_NEST]; int include_count = -1; %} %x INCLUDE %x COMMENT %% "{" BEGIN(COMMENT); "}" BEGIN(INITIAL); "$include"[ \t]*"(" BEGIN(INCLUDE); [ \t]* /* skip whitespace */ ")" BEGIN(COMMENT); [ \t]* /* skip whitespace */ [^ \t\n() ]+ { /* get the include file name */ if ( include_count >= MAX_NEST){ fprintf( stderr, "Too many include files" ); exit( 1 ); } include_stack[++include_count] = YY_CURRENT_BUFFER; yyin = fopen( yytext, "r" ); if ( ! yyin ){ fprintf( stderr, "Unable to open %s",yytext); exit( 1 ); } yy_switch_to_buffer(yy_create_buffer(yyin,YY_BUF_SIZE)); BEGIN(INITIAL); } <> { fprintf( stderr, "EOF in include" ); yyterminate(); } <> { fprintf( stderr, "EOF in comment" ); yyterminate(); } <> { if ( include_count <= 0 ){ yyterminate(); } else { yy_delete_buffer(include_stack[include_count--] ); yy_switch_to_buffer(include_stack[include_count] ); BEGIN(INCLUDE); } } [a-z]+ ECHO; .|\n ECHO; flex-2.5.39/examples/manual/front.lex0000644000175000017500000000233412060131401017745 0ustar srivastasrivasta%{ #include #include #include "y.tab.h" /* this comes from bison */ #define TRUE 1 #define FALSE 0 #define copy_and_return(token_type) { strcpy(yylval.name,yytext); \ return(token_type); } int yylexlinenum = 0; /* so we can count lines */ %} %% /* Lexical scanning rules begin from here. */ MEN|WOMEN|STOCKS|TREES copy_and_return(NOUN) MISTAKES|GNUS|EMPLOYEES copy_and_return(NOUN) LOSERS|USERS|CARS|WINDOWS copy_and_return(NOUN) DATABASE|NETWORK|FSF|GNU copy_and_return(PROPER_NOUN) COMPANY|HOUSE|OFFICE|LPF copy_and_return(PROPER_NOUN) THE|THIS|THAT|THOSE copy_and_return(DECLARATIVE) ALL|FIRST|LAST copy_and_return(CONDITIONAL) FIND|SEARCH|SORT|ERASE|KILL copy_and_return(VERB) ADD|REMOVE|DELETE|PRINT copy_and_return(VERB) QUICKLY|SLOWLY|CAREFULLY copy_and_return(ADVERB) IN|AT|ON|AROUND|INSIDE|ON copy_and_return(POSITIONAL) "." return(PERIOD); "\n" yylexlinenum++; return(NEWLINE); . %% flex-2.5.39/examples/manual/myname.lex0000644000175000017500000000043712060131401020105 0ustar srivastasrivasta/* * * myname.lex : A sample Flex program * that does token replacement. */ %% %NAME { printf("%s",getenv("LOGNAME")); } %HOST { printf("%s",getenv("HOST")); } %HOSTTYPE { printf("%s",getenv("HOSTTYPE"));} %HOME { printf("%s",getenv("HOME")); } %% flex-2.5.39/examples/manual/yymore.lex0000644000175000017500000000106612060131401020142 0ustar srivastasrivasta/* * yymore.lex: An example of using yymore() * to good effect. */ %{ #include void yyerror(char *message) { printf("Error: %s\n",message); } %} %x STRING %% \" BEGIN(STRING); [^\\\n"]* yymore(); <> yyerror("EOF in string."); BEGIN(INITIAL); \n yyerror("Unterminated string."); BEGIN(INITIAL); \\\n yymore(); \" { yytext[yyleng-1] = '\0'; printf("string = \"%s\"",yytext); BEGIN(INITIAL); } %% flex-2.5.39/examples/manual/expr.y0000644000175000017500000000173412060131401017256 0ustar srivastasrivasta/* * expr.y : A simple yacc expression parser * Based on the Bison manual example. */ %{ #include #include %} %union { float val; } %token NUMBER %token PLUS MINUS MULT DIV EXPON %token EOL %token LB RB %left MINUS PLUS %left MULT DIV %right EXPON %type exp NUMBER %% input : | input line ; line : EOL | exp EOL { printf("%g\n",$1);} exp : NUMBER { $$ = $1; } | exp PLUS exp { $$ = $1 + $3; } | exp MINUS exp { $$ = $1 - $3; } | exp MULT exp { $$ = $1 * $3; } | exp DIV exp { $$ = $1 / $3; } | MINUS exp %prec MINUS { $$ = -$2; } | exp EXPON exp { $$ = pow($1,$3);} | LB exp RB { $$ = $2; } ; %% yyerror(char *message) { printf("%s\n",message); } int main(int argc, char *argv[]) { yyparse(); return(0); } flex-2.5.39/examples/manual/front.y0000644000175000017500000000512512060131401017426 0ustar srivastasrivasta/* C code supplied at the beginning of the file. */ %{ #include #include extern int yylexlinenum; /* these are in YYlex */ extern char *yytext; /* current token */ %} /* Keywords and reserved words begin here. */ %union{ /* this is the data union */ char name[128]; /* names */ } /*-------------------- the reserved words -----------------------------*/ %token PERIOD %token NEWLINE %token POSITIONAL %token VERB %token ADVERB %token PROPER_NOUN %token NOUN %token DECLARATIVE %token CONDITIONAL %type declarative %type verb_phrase %type noun_phrase %type position_phrase %type adverb %type POSITIONAL VERB ADVERB PROPER_NOUN %type NOUN DECLARATIVE CONDITIONAL %% sentence_list : sentence | sentence_list NEWLINE sentence ; sentence : verb_phrase noun_phrase position_phrase adverb period { printf("I understand that sentence.\n"); printf("VP = %s \n",$1); printf("NP = %s \n",$2); printf("PP = %s \n",$3); printf("AD = %s \n",$4); } | { yyerror("That's a strange sentence !!"); } ; position_phrase : POSITIONAL declarative PROPER_NOUN { sprintf($$,"%s %s %s",$1,$2,$3); } | /* empty */ { strcpy($$,""); } ; verb_phrase : VERB { strcpy($$,$1); strcat($$," "); } | adverb VERB { sprintf($$,"%s %s",$1,$2); } ; adverb : ADVERB { strcpy($$,$1); } | /* empty */ { strcpy($$,""); } ; noun_phrase : DECLARATIVE NOUN { sprintf($$,"%s %s",$1,$2); } | CONDITIONAL declarative NOUN { sprintf($$,"%s %s %s",$1,$2,$3); } | NOUN { strcpy($$,$1); strcat($$," "); } ; declarative : DECLARATIVE { strcpy($$,$1); } | /* empty */ { strcpy($$,""); } ; period : /* empty */ | PERIOD ; %% /* Supplied main() and yyerror() functions. */ int main(int argc, char *argv[]) { yyparse(); /* parse the file */ return(0); } int yyerror(char *message) { extern FILE *yyout; fprintf(yyout,"\nError at line %5d. (%s) \n", yylexlinenum,message); } flex-2.5.39/examples/manual/Makefile.in0000644000175000017500000003073212314621560020167 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = examples/manual DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ ChangeLog ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = \ ChangeLog \ Makefile.examples \ README \ cat.lex \ dates.lex \ datetest.dat \ eof_rules.lex \ eof_test01.txt \ eof_test02.txt \ eof_test03.txt \ expr.lex \ expr.y \ front.lex \ front.y \ j2t.lex \ myname.lex \ myname.txt \ myname2.lex \ numbers.lex \ pas_include.lex \ pascal.lex \ reject.lex \ replace.lex \ string1.lex \ string2.lex \ strtest.dat \ unput.lex \ user_act.lex \ userinit.lex \ wc.lex \ yymore.lex \ yymore2.lex \ yymoretest.dat all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/manual/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu examples/manual/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/examples/manual/yymoretest.dat0000644000175000017500000000016312060131401021017 0ustar srivastasrivasta"This is a test \ of multi-line string \ scanning in flex. \ This may be breaking some law \ of usage though..." flex-2.5.39/examples/manual/string1.lex0000644000175000017500000000500512060131401020202 0ustar srivastasrivasta/* * string1.lex: Handling strings by using input() */ %{ #include #include #define ALLOC_SIZE 32 /* for (re)allocating the buffer */ #define isodigit(x) ((x) >= '0' && (x) <= '7') #define hextoint(x) (isdigit((x)) ? (x) - '0' : ((x) - 'A') + 10) void yyerror(char *message) { printf("\nError: %s\n",message); } %} %% \" { int inch,count,max_size; char *buffer; int temp; buffer = malloc(ALLOC_SIZE); max_size = ALLOC_SIZE; inch = input(); count = 0; while(inch != EOF && inch != '"' && inch != '\n'){ if(inch == '\\'){ inch = input(); switch(inch){ case '\n': inch = input(); break; case 'b' : inch = '\b'; break; case 't' : inch = '\t'; break; case 'n' : inch = '\n'; break; case 'v' : inch = '\v'; break; case 'f' : inch = '\f'; break; case 'r' : inch = '\r'; break; case 'X' : case 'x' : inch = input(); if(isxdigit(inch)){ temp = hextoint(toupper(inch)); inch = input(); if(isxdigit(inch)){ temp = (temp << 4) + hextoint(toupper(inch)); } else { unput(inch); } inch = temp; } else { unput(inch); inch = 'x'; } break; default: if(isodigit(inch)){ temp = inch - '0'; inch = input(); if(isodigit(inch)){ temp = (temp << 3) + (inch - '0'); } else { unput(inch); goto done; } inch = input(); if(isodigit(inch)){ temp = (temp << 3) + (inch - '0'); } else { unput(inch); } done: inch = temp; } } } buffer[count++] = inch; if(count >= max_size){ buffer = realloc(buffer,max_size + ALLOC_SIZE); max_size += ALLOC_SIZE; } inch = input(); } if(inch == EOF || inch == '\n'){ yyerror("Unterminated string."); } buffer[count] = '\0'; printf("String = \"%s\"\n",buffer); free(buffer); } . \n %% flex-2.5.39/examples/manual/eof_test02.txt0000644000175000017500000000015012060131401020610 0ustar srivastasrivastaINCLUDE #2 This is the second file that will be included. >>> Foo are GNU? #include "eof_test03.txt" flex-2.5.39/examples/manual/expr.lex0000644000175000017500000000115312060131401017571 0ustar srivastasrivasta/* * expr.lex : Scanner for a simple * expression parser. */ %{ #include "y.tab.h" %} %% [0-9]+ { yylval.val = atol(yytext); return(NUMBER); } [0-9]+\.[0-9]+ { sscanf(yytext,"%f",&yylval.val); return(NUMBER); } "+" return(PLUS); "-" return(MINUS); "*" return(MULT); "/" return(DIV); "^" return(EXPON); "(" return(LB); ")" return(RB); \n return(EOL); [\t ]* /* throw away whitespace */ . { yyerror("Illegal character"); return(EOL); } %% flex-2.5.39/examples/manual/eof_test03.txt0000644000175000017500000000012712060131401020615 0ustar srivastasrivastaINCLUDE #3 This is the third file that will be included. >>> echo "I am `whoami`!!" flex-2.5.39/examples/manual/unput.lex0000644000175000017500000000065512060131401017774 0ustar srivastasrivasta/* * unput.l : An example of what *not* * to do with unput(). */ %{ #include void putback_yytext(void); %} %% foobar putback_yytext(); raboof putback_yytext(); %% void putback_yytext(void) { int i; int l = strlen(yytext); char buffer[YY_BUF_SIZE]; strcpy(buffer,yytext); printf("Got: %s\n",yytext); for(i=0; i %} %x STRING %% \" ECHO; BEGIN(STRING); [^\"\n]* ECHO; \" ECHO; BEGIN(INITIAL); %NAME { printf("%s",getenv("LOGNAME")); } %HOST { printf("%s",getenv("HOST")); } %HOSTTYPE { printf("%s",getenv("HOSTTYPE"));} %HOME { printf("%s",getenv("HOME")); } flex-2.5.39/examples/manual/eof_test01.txt0000644000175000017500000000055712060131401020622 0ustar srivastasrivastaThis is test file #1 ------------------------------------------------- We will now include test #2 in a standard way. #include "eof_test02.txt" ------------------------------------------------- And now we will include test # 2 with a different format #include "eof_test02.txt" ------------------------------------------------- and this is the end of the test. flex-2.5.39/examples/manual/strtest.dat0000644000175000017500000000133512060131401020305 0ustar srivastasrivasta"This is a string" "The next string will be empty" "" "This is a string with a \b(\\b) in it" "This is a string with a \t(\\t) in it" "This is a string with a \n(\\n) in it" "This is a string with a \v(\\v) in it" "This is a string with a \f(\\f) in it" "This is a string with a \r(\\r) in it" "This is a string with a \"(\\\") in it" "This is a string with a \z(\\z) in it" "This is a string with a \X4a(\\X4a) in it" "This is a string with a \x4a(\\x4a) in it" "This is a string with a \x7(\\x7) in it" "This is a string with a \112(\\112) in it" "This is a string with a \043(\\043) in it" "This is a string with a \7(\\7) in it" "This is a multi-line \ string" "This is an unterminated string "This is an unterminated string too flex-2.5.39/examples/manual/user_act.lex0000644000175000017500000000045712060131401020426 0ustar srivastasrivasta%{ #include void user_action(void); #define YY_USER_ACTION user_action(); %} %% .* ECHO; \n ECHO; %% void user_action(void) { int loop; for(loop=0; loop"@" printf("@@"); "{" printf("@{"); "}" printf("@}"); /* * reproduce @example code */ ":"\n+[^\n0-9*]+\n" "[^ ] { int loop; int len; int cnt; printf(":\n\n@example \n"); strcpy(buffer,yytext); len = strlen(buffer); cnt = 0; for(loop=len; loop > 0;loop--){ if(buffer[loop] == '\n') cnt++; if(cnt == 2) break; } yyless(loop+1); statep++; states[statep] = EXAMPLE2; BEGIN(EXAMPLE2); } ^\n { printf("@end example\n\n"); statep--; BEGIN(states[statep]); } /* * repoduce @enumerate lists */ ":"\n+[ \t]*[0-9]+"." { int loop; int len; printf(":\n\n@enumerate \n"); strcpy(buffer,yytext); len = strlen(buffer); for(loop=len; loop > 0;loop--){ if(buffer[loop] == '\n') break; } yyless(loop); statep++; states[statep] = ENUM; BEGIN(ENUM); } "@" printf("@@"); ":"\n+" "[^0-9] { printf(":\n\n@example\n"); statep++; states[statep] = EXAMPLE; BEGIN(EXAMPLE); } \n[ \t]+[0-9]+"." { printf("\n\n@item "); } ^[^ ] | \n\n\n[ \t]+[^0-9] { printf("\n\n@end enumerate\n\n"); statep--; BEGIN(states[statep]); } /* * reproduce one kind of @itemize list */ ":"\n+":" { int loop; int len; printf(":\n\n@itemize @bullet \n"); yyless(2); statep++; states[statep] = LITEM2; BEGIN(LITEM2); } ^":".+":" { (void)check_and_convert(&yytext[1]); buffer[strlen(buffer)-1]='\0'; printf("@item @b{%s:}\n",buffer); } \n\n\n+[^:\n] { printf("\n\n@end itemize\n\n"); ECHO; statep--; BEGIN(states[statep]); } /* * create a list out of the revision history part. * We need the "Version" for this because it * clashes with other rules otherwise. */ :[\n]+"Version"[^:\n*]+":" { int loop; int len; printf(":\n\n@itemize @bullet \n"); strcpy(buffer,yytext); len = strlen(buffer); for(loop=len; loop > 0;loop--){ if(buffer[loop] == '\n') break; } yyless(loop); statep++; states[statep] = LITEM; BEGIN(LITEM); } ^.+":" { (void)check_and_convert(yytext); buffer[strlen(buffer)-1]='\0'; printf("@item @b{%s}\n\n",buffer); } ^[^:\n]+\n\n[^:\n]+\n { int loop; strcpy(buffer,yytext); for(loop=0; buffer[loop] != '\n'; loop++); buffer[loop] = '\0'; printf("%s\n",buffer); printf("@end itemize\n\n"); printf("%s",&buffer[loop+1]); statep--; BEGIN(states[statep]); } /* * reproduce @itemize @bullet lists */ ":"\n[ ]*"*" { int loop; int len; printf(":\n\n@itemize @bullet \n"); len = strlen(buffer); for(loop=0; loop < len;loop++){ if(buffer[loop] == '\n') break; } yyless((len-loop)+2); statep++; states[statep] = BITEM; BEGIN(BITEM); } ^" "*"*" { printf("@item"); statep++; states[statep] = BITEM_ITEM; BEGIN(BITEM_ITEM); } "@" printf("@@"); ^\n { printf("@end itemize\n\n"); statep--; BEGIN(states[statep]); } [^\:]* { printf(" @b{%s}\n\n",check_and_convert(yytext)); } ":" { statep--; BEGIN(states[statep]); } /* * recreate @chapter, @section etc. */ ^:[^:]* { (void)check_and_convert(&yytext[1]); statep++; states[statep] = HEADING; BEGIN(HEADING); } :[^\n] { printf("@item @b{%s}\n",buffer); write_underline(strlen(buffer),6,'~'); statep--; BEGIN(states[statep]); } :\n"*"* { if(need_closing == TRUE){ printf("@end table\n\n\n"); need_closing = FALSE; } printf("@chapter %s\n",buffer); write_underline(strlen(buffer),9,'*'); statep--; BEGIN(states[statep]); } :\n"="* { if(need_closing == TRUE){ printf("@end table\n\n\n"); need_closing = FALSE; } printf("@section %s\n",buffer); write_underline(strlen(buffer),9,'='); statep--; BEGIN(states[statep]); } "@" printf("@@"); :\n"-"* { if(need_closing == TRUE){ printf("@end table\n\n\n"); need_closing = FALSE; } printf("@subsection %s\n",buffer); write_underline(strlen(buffer),12,'-'); statep--; BEGIN(states[statep]); } /* * recreate @example text */ ^" " { printf("@example\n"); statep++; states[statep] = EXAMPLE; BEGIN(EXAMPLE); } ^" " . ECHO; %% /* * initialise and go. */ int main(int argc, char *argv[]) { states[0] = INITIAL; statep = 0; print_header(); yylex(); print_trailer(); return(0); } flex-2.5.39/examples/manual/README0000644000175000017500000000053512060131401016764 0ustar srivastasrivastaThis directory contains the example programs from the manual, and a few other things as well. To make all the programs, simply type "make -f Makefile.examples", and assuming you have flex and gcc, all will be well. To build the programs individually, type make -f Makefile.examples program_name For example: make -f Makefile.examples expr flex-2.5.39/examples/manual/string2.lex0000644000175000017500000000600412060131401020203 0ustar srivastasrivasta/* * string2.lex: An example of using scanning strings * by using start states. */ %{ #include #include #define isodigit(x) ((x) >= '0' && (x) <= '7') #define hextoint(x) (isdigit((x)) ? (x) - '0' : ((x) - 'A') + 10) char *buffer = NULL; int buffer_size = 0; void yyerror(char *message) { printf("\nError: %s\n",message); } %} %x STRING hex (x|X)[0-9a-fA-F]{1,2} oct [0-7]{1,3} %% \" { buffer = malloc(1); buffer_size = 1; strcpy(buffer,""); BEGIN(STRING); } \n { yyerror("Unterminated string"); free(buffer); BEGIN(INITIAL); } <> { yyerror("EOF in string"); free(buffer); BEGIN(INITIAL); } [^\\\n"] { buffer = realloc(buffer,buffer_size+yyleng+1); buffer_size += yyleng; strcat(buffer,yytext); } \\\n /* ignore this */ \\{hex} { int temp =0,loop = 0; for(loop=yyleng-2; loop>0; loop--){ temp <<= 4; temp += hextoint(toupper(yytext[yyleng-loop])); } buffer = realloc(buffer,buffer_size+1); buffer[buffer_size-1] = temp; buffer[buffer_size] = '\0'; buffer_size += 1; } \\{oct} { int temp =0,loop = 0; for(loop=yyleng-1; loop>0; loop--){ temp <<= 3; temp += (yytext[yyleng-loop] - '0'); } buffer = realloc(buffer,buffer_size+1); buffer[buffer_size-1] = temp; buffer[buffer_size] = '\0'; buffer_size += 1; } \\[^\n] { buffer = realloc(buffer,buffer_size+1); switch(yytext[yyleng-1]){ case 'b' : buffer[buffer_size-1] = '\b'; break; case 't' : buffer[buffer_size-1] = '\t'; break; case 'n' : buffer[buffer_size-1] = '\n'; break; case 'v' : buffer[buffer_size-1] = '\v'; break; case 'f' : buffer[buffer_size-1] = '\f'; break; case 'r' : buffer[buffer_size-1] = '\r'; break; default : buffer[buffer_size-1] = yytext[yyleng-1]; } buffer[buffer_size] = '\0'; buffer_size += 1; } \" { printf("string = \"%s\"",buffer); free(buffer); BEGIN(INITIAL); } %% flex-2.5.39/examples/manual/dates.lex0000644000175000017500000000546612060131401017726 0ustar srivastasrivasta/* * dates.lex: An example of using start states to * distinguish between different date formats. */ %{ #include char month[20],dow[20],day[20],year[20]; %} skip of|the|[ \t,]* mon (mon(day)?) tue (tue(sday)?) wed (wed(nesday)?) thu (thu(rsday)?) fri (fri(day)?) sat (sat(urday)?) sun (sun(day)?) day_of_the_week ({mon}|{tue}|{wed}|{thu}|{fri}|{sat}|{sun}) jan (jan(uary)?) feb (feb(ruary)?) mar (mar(ch)?) apr (apr(il)?) may (may) jun (jun(e)?) jul (jul(y)?) aug (aug(ust)?) sep (sep(tember)?) oct (oct(ober)?) nov (nov(ember)?) dec (dec(ember)?) first_half ({jan}|{feb}|{mar}|{apr}|{may}|{jun}) second_half ({jul}|{aug}|{sep}|{oct}|{nov}|{dec}) month {first_half}|{second_half} nday [1-9]|[1-2][0-9]|3[0-1] nmonth [1-9]|1[0-2] nyear [0-9]{1,4} year_ext (ad|AD|bc|BC)? day_ext (st|nd|rd|th)? %s LONG SHORT %s DAY DAY_FIRST YEAR_FIRST YEAR_LAST YFMONTH YLMONTH %% /* the default is month-day-year */ {day_of_the_week} strcpy(dow,yytext); {month} strcpy(month,yytext); BEGIN(DAY); /* handle the form: day-month-year */ {nday}{day_ext} strcpy(day,yytext); BEGIN(DAY_FIRST); {month} strcpy(month,yytext); BEGIN(LONG); {nday}{day_ext} strcpy(day,yytext); BEGIN(LONG); {nyear}{year_ext} { printf("Long:\n"); printf(" DOW : %s \n",dow); printf(" Day : %s \n",day); printf(" Month : %s \n",month); printf(" Year : %s \n",yytext); strcpy(dow,""); strcpy(day,""); strcpy(month,""); } /* handle dates of the form: day-month-year */ {nday} strcpy(day,yytext); BEGIN(YEAR_LAST); {nmonth} strcpy(month,yytext);BEGIN(YLMONTH); {nyear} strcpy(year,yytext); BEGIN(SHORT); /* handle dates of the form: year-month-day */ {nyear} strcpy(year,yytext); BEGIN(YEAR_FIRST); {nmonth} strcpy(month,yytext);BEGIN(YFMONTH); {nday} strcpy(day,yytext); BEGIN(SHORT); \n { printf("Short:\n"); printf(" Day : %s \n",day); printf(" Month : %s \n",month); printf(" Year : %s \n",year); strcpy(year,""); strcpy(day,""); strcpy(month,""); } long\n BEGIN(LONG); short\n BEGIN(SHORT); {skip}* \n . flex-2.5.39/examples/manual/datetest.dat0000644000175000017500000000052712060131401020414 0ustar srivastasrivastashort 1989:12:23 1989:11:12 23:12:1989 11:12:1989 1989/12/23 1989/11/12 23/12/1989 11/12/1989 1989-12-23 1989-11-12 23-12-1989 11-12-1989 long Friday the 5th of January, 1989 Friday, 5th of January, 1989 Friday, January 5th, 1989 Fri, January 5th, 1989 Fri, Jan 5th, 1989 Fri, Jan 5, 1989 FriJan 5, 1989 FriJan5, 1989 FriJan51989 Jan51989 flex-2.5.39/examples/testxxLexer.l0000644000175000017500000000155012060131401017341 0ustar srivastasrivasta // An example of using the flex C++ scanner class. %option C++ noyywrap %{ int mylineno = 0; %} string \"[^\n"]+\" ws [ \t]+ alpha [A-Za-z] dig [0-9] name ({alpha}|{dig}|\$)({alpha}|{dig}|\_|\.|\-|\/|\$)* num1 [-+]?{dig}+\.?([eE][-+]?{dig}+)? num2 [-+]?{dig}*\.{dig}+([eE][-+]?{dig}+)? number {num1}|{num2} %% {ws} /* skip blanks and tabs */ "/*" { int c; while((c = yyinput()) != 0) { if(c == '\n') ++mylineno; else if(c == '*') { if((c = yyinput()) == '/') break; else unput(c); } } } {number} FLEX_STD cout << "number " << YYText() << '\n'; \n mylineno++; {name} FLEX_STD cout << "name " << YYText() << '\n'; {string} FLEX_STD cout << "string " << YYText() << '\n'; %% int main( int /* argc */, char** /* argv */ ) { FlexLexer* lexer = new yyFlexLexer; while(lexer->yylex() != 0) ; return 0; } flex-2.5.39/examples/Makefile.in0000644000175000017500000004604312314621560016714 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = examples DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = \ testxxLexer.l \ debflex.awk \ README SUBDIRS = \ manual \ fastwc all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu examples/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/examples/debflex.awk0000644000175000017500000000536012060131401016745 0ustar srivastasrivasta# Clarify the flex debug trace by substituting first line of each rule. # Francois Pinard , July 1990. # # Rewritten to process correctly \n's in scanner input. # BEGIN section modified to correct a collection of rules. # Michal Jaegermann , December 1993 # # Sample usage: # flex -d PROGRAM.l # gcc -o PROGRAM PROGRAM.c -lfl # PROGRAM 2>&1 | gawk -f debflex.awk PROGRAM.l # # (VP's note: this script presently does not work with either "old" or # "new" awk; fixes so it does will be welcome) BEGIN { # Insure proper usage. if (ARGC != 2) { print "usage: gawk -f debflex.awk FLEX_SOURCE > { printf( "%8d %8d %8d\n", lc, wc, cc ); yyterminate(); } flex-2.5.39/examples/fastwc/mywc.c0000644000175000017500000000064212060131401017240 0ustar srivastasrivasta/* A simple but fairly efficient C version of the Unix "wc" tool */ #include #include main() { register int c, cc = 0, wc = 0, lc = 0; FILE *f = stdin; while ((c = getc(f)) != EOF) { ++cc; if (isgraph(c)) { ++wc; do { c = getc(f); if (c == EOF) goto done; ++cc; } while (isgraph(c)); } if (c == '\n') ++lc; } done: printf( "%8d%8d%8d\n", lc, wc, cc ); } flex-2.5.39/examples/fastwc/wc3.l0000644000175000017500000000103012060131401016756 0ustar srivastasrivasta/* Somewhat faster still: potentially match a lot of text with each rule */ ws [ \t] nonws [^ \t\n] word {ws}*{nonws}+ words {word}{ws}+ %option main noyywrap %% int cc = 0, wc = 0, lc = 0; {word}{ws}* cc += yyleng; ++wc; {word}{ws}*\n cc += yyleng; ++wc; ++lc; {words}{word}{ws}* cc += yyleng; wc += 2; {words}{2}{word}{ws}* cc += yyleng; wc += 3; {words}{3}{word}{ws}* cc += yyleng; wc += 4; {ws}+ cc += yyleng; \n+ cc += yyleng; lc += yyleng; <> { printf( "%8d %8d %8d\n", lc, wc, cc ); yyterminate(); } flex-2.5.39/examples/fastwc/Makefile.in0000644000175000017500000003005512314621560020177 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = examples/fastwc DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = \ wc5.l \ wc4.l \ wc3.l \ wc2.l \ wc1.l \ mywc.c \ README all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/fastwc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu examples/fastwc/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/examples/fastwc/wc4.l0000644000175000017500000000125012060131401016763 0ustar srivastasrivasta/* Fastest version of wc: add rules to pick up newlines, too */ ws [ \t] nonws [^ \t\n] word {ws}*{nonws}+ words {word}{ws}+ %option main noyywrap %% int cc = 0, wc = 0, lc = 0; {word}{ws}* ++wc; cc += yyleng; {word}{ws}*\n ++wc; cc += yyleng; ++lc; {words}{word}{ws}* wc += 2; cc += yyleng; {words}{word}{ws}*\n wc += 2; cc += yyleng; ++lc; {words}{2}{word}{ws}* wc += 3; cc += yyleng; {words}{2}{word}{ws}*\n wc += 3; cc += yyleng; ++lc; {words}{3}{word}{ws}* wc += 4; cc += yyleng; {words}{3}{word}{ws}*\n wc += 4; cc += yyleng; ++lc; {ws}+ cc += yyleng; \n+ cc += yyleng; lc += yyleng; <> { printf( "%8d %8d %8d\n", lc, wc, cc ); yyterminate(); } flex-2.5.39/examples/fastwc/Makefile.am0000644000175000017500000000175412060131401020156 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. EXTRA_DIST = \ wc5.l \ wc4.l \ wc3.l \ wc2.l \ wc1.l \ mywc.c \ README flex-2.5.39/examples/fastwc/README0000644000175000017500000000353312060131401016777 0ustar srivastasrivastaThis directory contains some examples illustrating techniques for extracting high-performance from flex scanners. Each program implements a simplified version of the Unix "wc" tool: read text from stdin and print the number of characters, words, and lines present in the text. All programs were compiled using gcc (version unavailable, sorry) with the -O flag, and run on a SPARCstation 1+. The input used was a PostScript file, mainly containing figures, with the following "wc" counts: lines words characters 214217 635954 2592172 The basic principles illustrated by these programs are: - match as much text with each rule as possible - adding rules does not slow you down! - avoid backing up and the big caveat that comes with them is: - you buy performance with decreased maintainability; make sure you really need it before applying the above techniques. See the "Performance Considerations" section of flexdoc for more details regarding these principles. The different versions of "wc": mywc.c a simple but fairly efficient C version wc1.l a naive flex "wc" implementation wc2.l somewhat faster; adds rules to match multiple tokens at once wc3.l faster still; adds more rules to match longer runs of tokens wc4.l fastest; still more rules added; hard to do much better using flex (or, I suspect, hand-coding) wc5.l identical to wc3.l except one rule has been slightly shortened, introducing backing-up Timing results (all times in user CPU seconds): program time notes ------- ---- ----- wc1 16.4 default flex table compression (= -Cem) wc1 6.7 -Cf compression option /bin/wc 5.8 Sun's standard "wc" tool mywc 4.6 simple but better C implementation! wc2 4.6 as good as C implementation; built using -Cf wc3 3.8 -Cf wc4 3.3 -Cf wc5 5.7 -Cf; ouch, backing up is expensive flex-2.5.39/examples/fastwc/wc5.l0000644000175000017500000000102012060131401016757 0ustar srivastasrivasta/* Oops; slight change from wc3.l introduces backtracking */ ws [ \t] nonws [^ \t\n] word {ws}*{nonws}+ words {word}{ws}+ %option main noyywrap %% int cc = 0, wc = 0, lc = 0; {word}{ws}* cc += yyleng; ++wc; {word}{ws}*\n cc += yyleng; ++wc; ++lc; {words}{word} cc += yyleng; wc += 2; /* oops */ {words}{2}{word}{ws}* cc += yyleng; wc += 3; {words}{3}{word}{ws}* cc += yyleng; wc += 4; {ws}+ cc += yyleng; \n+ cc += yyleng; lc += yyleng; <> { printf( "%8d %8d %8d\n", lc, wc, cc ); yyterminate(); } flex-2.5.39/examples/fastwc/wc1.l0000644000175000017500000000041512060131401016762 0ustar srivastasrivasta/* First cut at a flex-based "wc" tool. */ ws [ \t] nonws [^ \t\n] %option main noyywrap %% int cc = 0, wc = 0, lc = 0; {nonws}+ cc += yyleng; ++wc; {ws}+ cc += yyleng; \n ++lc; ++cc; <> { printf( "%8d %8d %8d\n", lc, wc, cc ); yyterminate(); } flex-2.5.39/examples/Makefile.am0000644000175000017500000000176412060131401016670 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. EXTRA_DIST = \ testxxLexer.l \ debflex.awk \ README SUBDIRS = \ manual \ fastwc flex-2.5.39/examples/README0000644000175000017500000000122012060131401015477 0ustar srivastasrivastaThis directory contains some examples of what you can do with flex. These files are not tested regularly so you might have to tinker a bit before they work for you. Updates, new files and patches are welcome. - debflex.awk, an awk script for anotating flex debug output. It presently only works with gawk and mawk, not with "old" or "new" awk. - testxxLexer.l, a sample C++ program that uses flex's scanner class option ("-+"). - fastwc/, a subdirectory containing examples of how to use flex to write progressively higher-performance versions of the Unix "wc" utility. This certainly should work with 2.5, but hasn't been tested. flex-2.5.39/tables_shared.c0000644000175000017500000000424012314546064015773 0ustar srivastasrivasta#ifdef FLEX_SCANNER /* dnl tables_shared.c - tables serialization code dnl dnl Copyright (c) 1990 The Regents of the University of California. dnl All rights reserved. dnl dnl This code is derived from software contributed to Berkeley by dnl Vern Paxson. dnl dnl The United States Government has rights in this work pursuant dnl to contract no. DE-AC03-76SF00098 between the United States dnl Department of Energy and the University of California. dnl dnl This file is part of flex. dnl dnl Redistribution and use in source and binary forms, with or without dnl modification, are permitted provided that the following conditions dnl are met: dnl dnl 1. Redistributions of source code must retain the above copyright dnl notice, this list of conditions and the following disclaimer. dnl 2. Redistributions in binary form must reproduce the above copyright dnl notice, this list of conditions and the following disclaimer in the dnl documentation and/or other materials provided with the distribution. dnl dnl Neither the name of the University nor the names of its contributors dnl may be used to endorse or promote products derived from this software dnl without specific prior written permission. dnl dnl THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR dnl IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED dnl WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR dnl PURPOSE. dnl */ /* This file is meant to be included in both the skeleton and the actual * flex code (hence the name "_shared"). */ #ifndef yyskel_static #define yyskel_static static #endif #else #include "flexdef.h" #include "tables.h" #ifndef yyskel_static #define yyskel_static #endif #endif /** Get the number of integers in this table. This is NOT the * same thing as the number of elements. * @param td the table * @return the number of integers in the table */ yyskel_static flex_int32_t yytbl_calc_total_len (const struct yytbl_data *tbl) { flex_int32_t n; /* total number of ints */ n = tbl->td_lolen; if (tbl->td_hilen > 0) n *= tbl->td_hilen; if (tbl->td_id == YYTD_ID_TRANSITION) n *= 2; return n; } flex-2.5.39/ABOUT-NLS0000644000175000017500000026713312300730747014270 0ustar srivastasrivasta1 Notes on the Free Translation Project *************************************** Free software is going international! The Free Translation Project is a way to get maintainers of free software, translators, and users all together, so that free software will gradually become able to speak many languages. A few packages already provide translations for their messages. If you found this `ABOUT-NLS' file inside a distribution, you may assume that the distributed package does use GNU `gettext' internally, itself available at your nearest GNU archive site. But you do _not_ need to install GNU `gettext' prior to configuring, installing or using this package with messages translated. Installers will find here some useful hints. These notes also explain how users should proceed for getting the programs to use the available translations. They tell how people wanting to contribute and work on translations can contact the appropriate team. 1.1 INSTALL Matters =================== Some packages are "localizable" when properly installed; the programs they contain can be made to speak your own native language. Most such packages use GNU `gettext'. Other packages have their own ways to internationalization, predating GNU `gettext'. By default, this package will be installed to allow translation of messages. It will automatically detect whether the system already provides the GNU `gettext' functions. Installers may use special options at configuration time for changing the default behaviour. The command: ./configure --disable-nls will _totally_ disable translation of messages. When you already have GNU `gettext' installed on your system and run configure without an option for your new package, `configure' will probably detect the previously built and installed `libintl' library and will decide to use it. If not, you may have to to use the `--with-libintl-prefix' option to tell `configure' where to look for it. Internationalized packages usually have many `po/LL.po' files, where LL gives an ISO 639 two-letter code identifying the language. Unless translations have been forbidden at `configure' time by using the `--disable-nls' switch, all available translations are installed together with the package. However, the environment variable `LINGUAS' may be set, prior to configuration, to limit the installed set. `LINGUAS' should then contain a space separated list of two-letter codes, stating which languages are allowed. 1.2 Using This Package ====================== As a user, if your language has been installed for this package, you only have to set the `LANG' environment variable to the appropriate `LL_CC' combination. If you happen to have the `LC_ALL' or some other `LC_xxx' environment variables set, you should unset them before setting `LANG', otherwise the setting of `LANG' will not have the desired effect. Here `LL' is an ISO 639 two-letter language code, and `CC' is an ISO 3166 two-letter country code. For example, let's suppose that you speak German and live in Germany. At the shell prompt, merely execute `setenv LANG de_DE' (in `csh'), `export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). This can be done from your `.login' or `.profile' file, once and for all. You might think that the country code specification is redundant. But in fact, some languages have dialects in different countries. For example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The country code serves to distinguish the dialects. The locale naming convention of `LL_CC', with `LL' denoting the language and `CC' denoting the country, is the one use on systems based on GNU libc. On other systems, some variations of this scheme are used, such as `LL' or `LL_CC.ENCODING'. You can get the list of locales supported by your system for your language by running the command `locale -a | grep '^LL''. Not all programs have translations for all languages. By default, an English message is shown in place of a nonexistent translation. If you understand other languages, you can set up a priority list of languages. This is done through a different environment variable, called `LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' for the purpose of message handling, but you still need to have `LANG' set to the primary language; this is required by other parts of the system libraries. For example, some Swedish users who would rather read translations in German than English for when Swedish is not available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. Special advice for Norwegian users: The language code for Norwegian bokma*l changed from `no' to `nb' recently (in 2003). During the transition period, while some message catalogs for this language are installed under `nb' and some older ones under `no', it's recommended for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and older translations are used. In the `LANGUAGE' environment variable, but not in the `LANG' environment variable, `LL_CC' combinations can be abbreviated as `LL' to denote the language's main dialect. For example, `de' is equivalent to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' (Portuguese as spoken in Portugal) in this context. 1.3 Translating Teams ===================== For the Free Translation Project to be a success, we need interested people who like their own language and write it well, and who are also able to synergize with other translators speaking the same language. Each translation team has its own mailing list. The up-to-date list of teams can be found at the Free Translation Project's homepage, `http://translationproject.org/', in the "Teams" area. If you'd like to volunteer to _work_ at translating messages, you should become a member of the translating team for your own language. The subscribing address is _not_ the same as the list itself, it has `-request' appended. For example, speakers of Swedish can send a message to `sv-request@li.org', having this message body: subscribe Keep in mind that team members are expected to participate _actively_ in translations, or at solving translational difficulties, rather than merely lurking around. If your team does not exist yet and you want to start one, or if you are unsure about what to do or how to get started, please write to `coordinator@translationproject.org' to reach the coordinator for all translator teams. The English team is special. It works at improving and uniformizing the terminology in use. Proven linguistic skills are praised more than programming skills, here. 1.4 Available Packages ====================== Languages are not equally supported in all packages. The following matrix shows the current state of internationalization, as of June 2010. The matrix shows, in regard of each package, for which languages PO files have been submitted to translation coordination, with a translation percentage of at least 50%. Ready PO files af am an ar as ast az be be@latin bg bn_IN bs ca +--------------------------------------------------+ a2ps | [] [] | aegis | | ant-phone | | anubis | | aspell | [] [] | bash | | bfd | | bibshelf | [] | binutils | | bison | | bison-runtime | [] | bluez-pin | [] [] | bombono-dvd | | buzztard | | cflow | | clisp | | coreutils | [] [] | cpio | | cppi | | cpplib | [] | cryptsetup | | dfarc | | dialog | [] [] | dico | | diffutils | [] | dink | | doodle | | e2fsprogs | [] | enscript | [] | exif | | fetchmail | [] | findutils | [] | flex | [] | freedink | | gas | | gawk | [] [] | gcal | [] | gcc | | gettext-examples | [] [] [] [] | gettext-runtime | [] [] | gettext-tools | [] [] | gip | [] | gjay | | gliv | [] | glunarclock | [] [] | gnubiff | | gnucash | [] | gnuedu | | gnulib | | gnunet | | gnunet-gtk | | gnutls | | gold | | gpe-aerial | | gpe-beam | | gpe-bluetooth | | gpe-calendar | | gpe-clock | [] | gpe-conf | | gpe-contacts | | gpe-edit | | gpe-filemanager | | gpe-go | | gpe-login | | gpe-ownerinfo | [] | gpe-package | | gpe-sketchbook | | gpe-su | [] | gpe-taskmanager | [] | gpe-timesheet | [] | gpe-today | [] | gpe-todo | | gphoto2 | | gprof | [] | gpsdrive | | gramadoir | | grep | | grub | [] [] | gsasl | | gss | | gst-plugins-bad | [] | gst-plugins-base | [] | gst-plugins-good | [] | gst-plugins-ugly | [] | gstreamer | [] [] [] | gtick | | gtkam | [] | gtkorphan | [] | gtkspell | [] [] [] | gutenprint | | hello | [] | help2man | | hylafax | | idutils | | indent | [] [] | iso_15924 | | iso_3166 | [] [] [] [] [] [] [] | iso_3166_2 | | iso_4217 | | iso_639 | [] [] [] [] | iso_639_3 | | jwhois | | kbd | | keytouch | [] | keytouch-editor | | keytouch-keyboa... | [] | klavaro | [] | latrine | | ld | [] | leafpad | [] [] | libc | [] [] | libexif | () | libextractor | | libgnutls | | libgpewidget | | libgpg-error | | libgphoto2 | | libgphoto2_port | | libgsasl | | libiconv | [] | libidn | | lifelines | | liferea | [] [] | lilypond | | linkdr | [] | lordsawar | | lprng | | lynx | [] | m4 | | mailfromd | | mailutils | | make | | man-db | | man-db-manpages | | minicom | | mkisofs | | myserver | | nano | [] [] | opcodes | | parted | | pies | | popt | | psmisc | | pspp | [] | pwdutils | | radius | [] | recode | [] [] | rosegarden | | rpm | | rush | | sarg | | screem | | scrollkeeper | [] [] [] | sed | [] [] | sharutils | [] [] | shishi | | skencil | | solfege | | solfege-manual | | soundtracker | | sp | | sysstat | | tar | [] | texinfo | | tin | | unicode-han-tra... | | unicode-transla... | | util-linux-ng | [] | vice | | vmm | | vorbis-tools | | wastesedge | | wdiff | | wget | [] [] | wyslij-po | | xchat | [] [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] | +--------------------------------------------------+ af am an ar as ast az be be@latin bg bn_IN bs ca 6 0 1 2 3 19 1 10 3 28 3 1 38 crh cs da de el en en_GB en_ZA eo es et eu fa +-------------------------------------------------+ a2ps | [] [] [] [] [] [] [] | aegis | [] [] [] | ant-phone | [] () | anubis | [] [] | aspell | [] [] [] [] [] | bash | [] [] [] | bfd | [] | bibshelf | [] [] [] | binutils | [] | bison | [] [] | bison-runtime | [] [] [] [] | bluez-pin | [] [] [] [] [] [] | bombono-dvd | [] | buzztard | [] [] [] | cflow | [] [] | clisp | [] [] [] [] | coreutils | [] [] [] [] | cpio | | cppi | | cpplib | [] [] [] | cryptsetup | [] | dfarc | [] [] [] | dialog | [] [] [] [] [] | dico | | diffutils | [] [] [] [] [] [] | dink | [] [] [] | doodle | [] | e2fsprogs | [] [] [] | enscript | [] [] [] | exif | () [] [] | fetchmail | [] [] () [] [] [] | findutils | [] [] [] | flex | [] [] | freedink | [] [] [] | gas | [] | gawk | [] [] [] | gcal | [] | gcc | [] [] | gettext-examples | [] [] [] [] | gettext-runtime | [] [] [] [] | gettext-tools | [] [] [] | gip | [] [] [] [] | gjay | [] | gliv | [] [] [] | glunarclock | [] [] | gnubiff | () | gnucash | [] () () () () | gnuedu | [] [] | gnulib | [] [] | gnunet | | gnunet-gtk | [] | gnutls | [] [] | gold | [] | gpe-aerial | [] [] [] [] | gpe-beam | [] [] [] [] | gpe-bluetooth | [] [] | gpe-calendar | [] | gpe-clock | [] [] [] [] | gpe-conf | [] [] [] | gpe-contacts | [] [] [] | gpe-edit | [] [] | gpe-filemanager | [] [] [] | gpe-go | [] [] [] [] | gpe-login | [] [] | gpe-ownerinfo | [] [] [] [] | gpe-package | [] [] [] | gpe-sketchbook | [] [] [] [] | gpe-su | [] [] [] [] | gpe-taskmanager | [] [] [] [] | gpe-timesheet | [] [] [] [] | gpe-today | [] [] [] [] | gpe-todo | [] [] [] | gphoto2 | [] [] () [] [] [] | gprof | [] [] [] | gpsdrive | [] [] [] | gramadoir | [] [] [] | grep | [] | grub | [] [] | gsasl | [] | gss | | gst-plugins-bad | [] [] [] [] [] | gst-plugins-base | [] [] [] [] [] | gst-plugins-good | [] [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] [] | gstreamer | [] [] [] [] [] | gtick | [] () [] | gtkam | [] [] () [] [] | gtkorphan | [] [] [] [] | gtkspell | [] [] [] [] [] [] [] | gutenprint | [] [] [] | hello | [] [] [] [] | help2man | [] | hylafax | [] [] | idutils | [] [] | indent | [] [] [] [] [] [] [] | iso_15924 | [] () [] [] | iso_3166 | [] [] [] [] () [] [] [] () | iso_3166_2 | () | iso_4217 | [] [] [] () [] [] | iso_639 | [] [] [] [] () [] [] | iso_639_3 | [] | jwhois | [] | kbd | [] [] [] [] [] | keytouch | [] [] | keytouch-editor | [] [] | keytouch-keyboa... | [] | klavaro | [] [] [] [] | latrine | [] () | ld | [] [] | leafpad | [] [] [] [] [] [] | libc | [] [] [] [] | libexif | [] [] () | libextractor | | libgnutls | [] | libgpewidget | [] [] | libgpg-error | [] [] | libgphoto2 | [] () | libgphoto2_port | [] () [] | libgsasl | | libiconv | [] [] [] [] [] | libidn | [] [] [] | lifelines | [] () | liferea | [] [] [] [] [] | lilypond | [] [] [] | linkdr | [] [] [] | lordsawar | [] | lprng | | lynx | [] [] [] [] | m4 | [] [] [] [] | mailfromd | | mailutils | [] | make | [] [] [] | man-db | | man-db-manpages | | minicom | [] [] [] [] | mkisofs | | myserver | | nano | [] [] [] | opcodes | [] [] | parted | [] [] | pies | | popt | [] [] [] [] [] | psmisc | [] [] [] | pspp | [] | pwdutils | [] | radius | [] | recode | [] [] [] [] [] [] | rosegarden | () () () | rpm | [] [] [] | rush | | sarg | | screem | | scrollkeeper | [] [] [] [] [] | sed | [] [] [] [] [] [] | sharutils | [] [] [] [] | shishi | | skencil | [] () [] | solfege | [] [] [] | solfege-manual | [] [] | soundtracker | [] [] [] | sp | [] | sysstat | [] [] [] | tar | [] [] [] [] | texinfo | [] [] [] | tin | [] [] | unicode-han-tra... | | unicode-transla... | | util-linux-ng | [] [] [] [] | vice | () () | vmm | [] | vorbis-tools | [] [] | wastesedge | [] | wdiff | [] [] | wget | [] [] [] | wyslij-po | | xchat | [] [] [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] [] [] | +-------------------------------------------------+ crh cs da de el en en_GB en_ZA eo es et eu fa 5 64 105 117 18 1 8 0 28 89 18 19 0 fi fr ga gl gu he hi hr hu hy id is it ja ka kn +----------------------------------------------------+ a2ps | [] [] [] [] | aegis | [] [] | ant-phone | [] [] | anubis | [] [] [] [] | aspell | [] [] [] [] | bash | [] [] [] [] | bfd | [] [] [] | bibshelf | [] [] [] [] [] | binutils | [] [] [] | bison | [] [] [] [] | bison-runtime | [] [] [] [] [] [] | bluez-pin | [] [] [] [] [] [] [] [] | bombono-dvd | [] | buzztard | [] | cflow | [] [] [] | clisp | [] | coreutils | [] [] [] [] [] | cpio | [] [] [] [] | cppi | [] [] | cpplib | [] [] [] | cryptsetup | [] [] [] | dfarc | [] [] [] | dialog | [] [] [] [] [] [] [] | dico | | diffutils | [] [] [] [] [] [] [] [] [] | dink | [] | doodle | [] [] | e2fsprogs | [] [] | enscript | [] [] [] [] | exif | [] [] [] [] [] [] | fetchmail | [] [] [] [] | findutils | [] [] [] [] [] [] | flex | [] [] [] | freedink | [] [] [] | gas | [] [] | gawk | [] [] [] [] () [] | gcal | [] | gcc | [] | gettext-examples | [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] | gettext-tools | [] [] [] [] | gip | [] [] [] [] [] [] | gjay | [] | gliv | [] () | glunarclock | [] [] [] [] | gnubiff | () [] () | gnucash | () () () () () [] | gnuedu | [] [] | gnulib | [] [] [] [] [] [] | gnunet | | gnunet-gtk | [] | gnutls | [] [] | gold | [] [] | gpe-aerial | [] [] [] | gpe-beam | [] [] [] [] | gpe-bluetooth | [] [] [] [] | gpe-calendar | [] [] | gpe-clock | [] [] [] [] [] | gpe-conf | [] [] [] [] | gpe-contacts | [] [] [] [] | gpe-edit | [] [] [] | gpe-filemanager | [] [] [] [] | gpe-go | [] [] [] [] [] | gpe-login | [] [] [] | gpe-ownerinfo | [] [] [] [] [] | gpe-package | [] [] [] | gpe-sketchbook | [] [] [] [] | gpe-su | [] [] [] [] [] [] | gpe-taskmanager | [] [] [] [] [] | gpe-timesheet | [] [] [] [] [] | gpe-today | [] [] [] [] [] [] [] | gpe-todo | [] [] [] | gphoto2 | [] [] [] [] [] [] | gprof | [] [] [] [] | gpsdrive | [] [] [] | gramadoir | [] [] [] | grep | [] [] | grub | [] [] [] [] | gsasl | [] [] [] [] [] | gss | [] [] [] [] [] | gst-plugins-bad | [] [] [] [] [] [] | gst-plugins-base | [] [] [] [] [] [] | gst-plugins-good | [] [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] [] | gstreamer | [] [] [] [] [] | gtick | [] [] [] [] [] | gtkam | [] [] [] [] [] | gtkorphan | [] [] [] | gtkspell | [] [] [] [] [] [] [] [] [] | gutenprint | [] [] [] [] | hello | [] [] [] | help2man | [] [] | hylafax | [] | idutils | [] [] [] [] [] [] | indent | [] [] [] [] [] [] [] [] | iso_15924 | [] () [] [] | iso_3166 | [] () [] [] [] [] [] [] [] [] [] [] | iso_3166_2 | () [] [] [] | iso_4217 | [] () [] [] [] [] | iso_639 | [] () [] [] [] [] [] [] [] | iso_639_3 | () [] [] | jwhois | [] [] [] [] [] | kbd | [] [] | keytouch | [] [] [] [] [] [] | keytouch-editor | [] [] [] [] [] | keytouch-keyboa... | [] [] [] [] [] | klavaro | [] [] | latrine | [] [] [] | ld | [] [] [] [] | leafpad | [] [] [] [] [] [] [] () | libc | [] [] [] [] [] | libexif | [] | libextractor | | libgnutls | [] [] | libgpewidget | [] [] [] [] | libgpg-error | [] [] | libgphoto2 | [] [] [] | libgphoto2_port | [] [] [] | libgsasl | [] [] [] [] [] | libiconv | [] [] [] [] [] [] | libidn | [] [] [] [] | lifelines | () | liferea | [] [] [] [] | lilypond | [] [] | linkdr | [] [] [] [] [] | lordsawar | | lprng | [] | lynx | [] [] [] [] [] | m4 | [] [] [] [] [] [] | mailfromd | | mailutils | [] [] | make | [] [] [] [] [] [] [] [] [] | man-db | [] [] | man-db-manpages | [] | minicom | [] [] [] [] [] | mkisofs | [] [] [] [] | myserver | | nano | [] [] [] [] [] [] | opcodes | [] [] [] [] | parted | [] [] [] [] | pies | | popt | [] [] [] [] [] [] [] [] [] | psmisc | [] [] [] | pspp | | pwdutils | [] [] | radius | [] [] | recode | [] [] [] [] [] [] [] [] | rosegarden | () () () () () | rpm | [] [] | rush | | sarg | [] | screem | [] [] | scrollkeeper | [] [] [] [] | sed | [] [] [] [] [] [] [] [] | sharutils | [] [] [] [] [] [] [] | shishi | [] | skencil | [] | solfege | [] [] [] [] | solfege-manual | [] [] | soundtracker | [] [] | sp | [] () | sysstat | [] [] [] [] [] | tar | [] [] [] [] [] [] [] | texinfo | [] [] [] [] | tin | [] | unicode-han-tra... | | unicode-transla... | [] [] | util-linux-ng | [] [] [] [] [] [] | vice | () () () | vmm | [] | vorbis-tools | [] | wastesedge | () () | wdiff | [] | wget | [] [] [] [] [] [] [] [] | wyslij-po | [] [] [] | xchat | [] [] [] [] [] [] [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] [] | +----------------------------------------------------+ fi fr ga gl gu he hi hr hu hy id is it ja ka kn 105 121 53 20 4 8 3 5 53 2 120 5 84 67 0 4 ko ku ky lg lt lv mk ml mn mr ms mt nb nds ne +-----------------------------------------------+ a2ps | [] | aegis | | ant-phone | | anubis | [] [] | aspell | [] | bash | | bfd | | bibshelf | [] [] | binutils | | bison | [] | bison-runtime | [] [] [] [] [] | bluez-pin | [] [] [] [] [] | bombono-dvd | | buzztard | | cflow | | clisp | | coreutils | [] | cpio | | cppi | | cpplib | | cryptsetup | | dfarc | [] | dialog | [] [] [] [] [] | dico | | diffutils | [] [] | dink | | doodle | | e2fsprogs | | enscript | | exif | [] | fetchmail | | findutils | | flex | | freedink | [] | gas | | gawk | | gcal | | gcc | | gettext-examples | [] [] [] [] | gettext-runtime | [] | gettext-tools | [] | gip | [] [] | gjay | | gliv | | glunarclock | [] | gnubiff | | gnucash | () () () () | gnuedu | | gnulib | | gnunet | | gnunet-gtk | | gnutls | [] | gold | | gpe-aerial | [] | gpe-beam | [] | gpe-bluetooth | [] [] | gpe-calendar | [] | gpe-clock | [] [] [] [] [] | gpe-conf | [] [] | gpe-contacts | [] [] | gpe-edit | [] | gpe-filemanager | [] [] | gpe-go | [] [] [] | gpe-login | [] | gpe-ownerinfo | [] [] | gpe-package | [] [] | gpe-sketchbook | [] [] | gpe-su | [] [] [] [] [] [] | gpe-taskmanager | [] [] [] [] [] [] | gpe-timesheet | [] [] | gpe-today | [] [] [] [] | gpe-todo | [] [] | gphoto2 | | gprof | [] | gpsdrive | | gramadoir | | grep | | grub | | gsasl | | gss | | gst-plugins-bad | [] [] [] [] | gst-plugins-base | [] [] | gst-plugins-good | [] [] | gst-plugins-ugly | [] [] [] [] [] | gstreamer | | gtick | | gtkam | [] | gtkorphan | [] [] | gtkspell | [] [] [] [] [] [] [] | gutenprint | | hello | [] [] [] | help2man | | hylafax | | idutils | | indent | | iso_15924 | [] [] | iso_3166 | [] [] () [] [] [] [] [] | iso_3166_2 | | iso_4217 | [] [] | iso_639 | [] [] | iso_639_3 | [] | jwhois | [] | kbd | | keytouch | [] | keytouch-editor | [] | keytouch-keyboa... | [] | klavaro | [] | latrine | [] | ld | | leafpad | [] [] [] | libc | [] | libexif | | libextractor | | libgnutls | [] | libgpewidget | [] [] | libgpg-error | | libgphoto2 | | libgphoto2_port | | libgsasl | | libiconv | | libidn | | lifelines | | liferea | | lilypond | | linkdr | | lordsawar | | lprng | | lynx | | m4 | | mailfromd | | mailutils | | make | [] | man-db | | man-db-manpages | | minicom | [] | mkisofs | | myserver | | nano | [] [] | opcodes | | parted | | pies | | popt | [] [] [] | psmisc | | pspp | | pwdutils | | radius | | recode | | rosegarden | | rpm | | rush | | sarg | | screem | | scrollkeeper | [] [] | sed | | sharutils | | shishi | | skencil | | solfege | [] | solfege-manual | | soundtracker | | sp | | sysstat | [] | tar | [] | texinfo | [] | tin | | unicode-han-tra... | | unicode-transla... | | util-linux-ng | | vice | | vmm | | vorbis-tools | | wastesedge | | wdiff | | wget | [] | wyslij-po | | xchat | [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] | +-----------------------------------------------+ ko ku ky lg lt lv mk ml mn mr ms mt nb nds ne 20 5 10 1 13 48 4 2 2 4 24 10 20 3 1 nl nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr +---------------------------------------------------+ a2ps | [] [] [] [] [] [] [] [] | aegis | [] [] [] | ant-phone | [] [] | anubis | [] [] [] | aspell | [] [] [] [] [] | bash | [] [] | bfd | [] | bibshelf | [] [] | binutils | [] [] | bison | [] [] [] | bison-runtime | [] [] [] [] [] [] [] | bluez-pin | [] [] [] [] [] [] [] [] | bombono-dvd | [] () | buzztard | [] [] | cflow | [] | clisp | [] [] | coreutils | [] [] [] [] [] [] | cpio | [] [] [] | cppi | [] | cpplib | [] | cryptsetup | [] | dfarc | [] | dialog | [] [] [] [] | dico | [] | diffutils | [] [] [] [] [] [] | dink | () | doodle | [] [] | e2fsprogs | [] [] | enscript | [] [] [] [] [] | exif | [] [] [] () [] | fetchmail | [] [] [] [] | findutils | [] [] [] [] [] | flex | [] [] [] [] [] | freedink | [] [] | gas | | gawk | [] [] [] [] | gcal | | gcc | [] | gettext-examples | [] [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] [] [] [] | gettext-tools | [] [] [] [] [] [] | gip | [] [] [] [] [] | gjay | | gliv | [] [] [] [] [] [] | glunarclock | [] [] [] [] [] | gnubiff | [] () | gnucash | [] () () () | gnuedu | [] | gnulib | [] [] [] [] | gnunet | | gnunet-gtk | | gnutls | [] [] | gold | | gpe-aerial | [] [] [] [] [] [] [] | gpe-beam | [] [] [] [] [] [] [] | gpe-bluetooth | [] [] | gpe-calendar | [] [] [] [] | gpe-clock | [] [] [] [] [] [] [] [] | gpe-conf | [] [] [] [] [] [] [] | gpe-contacts | [] [] [] [] [] | gpe-edit | [] [] [] | gpe-filemanager | [] [] [] | gpe-go | [] [] [] [] [] [] [] [] | gpe-login | [] [] | gpe-ownerinfo | [] [] [] [] [] [] [] [] | gpe-package | [] [] | gpe-sketchbook | [] [] [] [] [] [] [] | gpe-su | [] [] [] [] [] [] [] [] | gpe-taskmanager | [] [] [] [] [] [] [] [] | gpe-timesheet | [] [] [] [] [] [] [] [] | gpe-today | [] [] [] [] [] [] [] [] | gpe-todo | [] [] [] [] [] | gphoto2 | [] [] [] [] [] [] [] [] | gprof | [] [] [] | gpsdrive | [] [] | gramadoir | [] [] | grep | [] [] [] [] | grub | [] [] [] | gsasl | [] [] [] [] | gss | [] [] [] | gst-plugins-bad | [] [] [] [] [] [] | gst-plugins-base | [] [] [] [] [] | gst-plugins-good | [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] [] | gstreamer | [] [] [] [] [] | gtick | [] [] [] | gtkam | [] [] [] [] [] [] | gtkorphan | [] | gtkspell | [] [] [] [] [] [] [] [] [] [] | gutenprint | [] [] | hello | [] [] [] [] | help2man | [] [] | hylafax | [] | idutils | [] [] [] [] [] | indent | [] [] [] [] [] [] [] | iso_15924 | [] [] [] [] | iso_3166 | [] [] [] [] [] () [] [] [] [] [] [] [] [] | iso_3166_2 | [] [] [] | iso_4217 | [] [] [] [] [] [] [] [] | iso_639 | [] [] [] [] [] [] [] [] [] | iso_639_3 | [] [] | jwhois | [] [] [] [] | kbd | [] [] [] | keytouch | [] [] [] | keytouch-editor | [] [] [] | keytouch-keyboa... | [] [] [] | klavaro | [] [] | latrine | [] [] | ld | | leafpad | [] [] [] [] [] [] [] [] [] | libc | [] [] [] [] | libexif | [] [] () [] | libextractor | | libgnutls | [] [] | libgpewidget | [] [] [] | libgpg-error | [] [] | libgphoto2 | [] [] | libgphoto2_port | [] [] [] [] [] | libgsasl | [] [] [] [] [] | libiconv | [] [] [] [] [] | libidn | [] [] | lifelines | [] [] | liferea | [] [] [] [] [] () () [] | lilypond | [] | linkdr | [] [] [] | lordsawar | | lprng | [] | lynx | [] [] [] | m4 | [] [] [] [] [] | mailfromd | [] | mailutils | [] | make | [] [] [] [] | man-db | [] [] [] | man-db-manpages | [] [] [] | minicom | [] [] [] [] | mkisofs | [] [] [] | myserver | | nano | [] [] [] [] | opcodes | [] [] | parted | [] [] [] [] | pies | [] | popt | [] [] [] [] | psmisc | [] [] [] | pspp | [] [] | pwdutils | [] | radius | [] [] [] | recode | [] [] [] [] [] [] [] [] | rosegarden | () () | rpm | [] [] [] | rush | [] [] | sarg | | screem | | scrollkeeper | [] [] [] [] [] [] [] [] | sed | [] [] [] [] [] [] [] [] [] | sharutils | [] [] [] [] | shishi | [] | skencil | [] [] | solfege | [] [] [] [] | solfege-manual | [] [] [] | soundtracker | [] | sp | | sysstat | [] [] [] [] | tar | [] [] [] [] | texinfo | [] [] [] [] | tin | [] | unicode-han-tra... | | unicode-transla... | | util-linux-ng | [] [] [] [] [] | vice | [] | vmm | [] | vorbis-tools | [] [] | wastesedge | [] | wdiff | [] [] | wget | [] [] [] [] [] [] [] | wyslij-po | [] [] [] | xchat | [] [] [] [] [] [] [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] | +---------------------------------------------------+ nl nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr 135 10 4 7 105 1 29 62 47 91 3 54 46 9 37 sv sw ta te tg th tr uk vi wa zh_CN zh_HK zh_TW +---------------------------------------------------+ a2ps | [] [] [] [] [] | 27 aegis | [] | 9 ant-phone | [] [] [] [] | 9 anubis | [] [] [] [] | 15 aspell | [] [] [] | 20 bash | [] [] [] | 12 bfd | [] | 6 bibshelf | [] [] [] | 16 binutils | [] [] | 8 bison | [] [] | 12 bison-runtime | [] [] [] [] [] [] | 29 bluez-pin | [] [] [] [] [] [] [] [] | 37 bombono-dvd | [] | 4 buzztard | [] | 7 cflow | [] [] [] | 9 clisp | | 10 coreutils | [] [] [] [] | 22 cpio | [] [] [] [] [] [] | 13 cppi | [] [] | 5 cpplib | [] [] [] [] [] [] | 14 cryptsetup | [] [] | 7 dfarc | [] | 9 dialog | [] [] [] [] [] [] [] | 30 dico | [] | 2 diffutils | [] [] [] [] [] [] | 30 dink | | 4 doodle | [] [] | 7 e2fsprogs | [] [] [] | 11 enscript | [] [] [] [] | 17 exif | [] [] [] | 16 fetchmail | [] [] [] | 17 findutils | [] [] [] [] [] | 20 flex | [] [] [] [] | 15 freedink | [] | 10 gas | [] | 4 gawk | [] [] [] [] | 18 gcal | [] [] | 5 gcc | [] [] [] | 7 gettext-examples | [] [] [] [] [] [] [] | 34 gettext-runtime | [] [] [] [] [] [] [] | 29 gettext-tools | [] [] [] [] [] [] | 22 gip | [] [] [] [] | 22 gjay | [] | 3 gliv | [] [] [] | 14 glunarclock | [] [] [] [] [] | 19 gnubiff | [] [] | 4 gnucash | () [] () [] () | 10 gnuedu | [] [] | 7 gnulib | [] [] [] [] | 16 gnunet | [] | 1 gnunet-gtk | [] [] [] | 5 gnutls | [] [] [] | 10 gold | [] | 4 gpe-aerial | [] [] [] | 18 gpe-beam | [] [] [] | 19 gpe-bluetooth | [] [] [] | 13 gpe-calendar | [] [] [] [] | 12 gpe-clock | [] [] [] [] [] | 28 gpe-conf | [] [] [] [] | 20 gpe-contacts | [] [] [] | 17 gpe-edit | [] [] [] | 12 gpe-filemanager | [] [] [] [] | 16 gpe-go | [] [] [] [] [] | 25 gpe-login | [] [] [] | 11 gpe-ownerinfo | [] [] [] [] [] | 25 gpe-package | [] [] [] | 13 gpe-sketchbook | [] [] [] | 20 gpe-su | [] [] [] [] [] | 30 gpe-taskmanager | [] [] [] [] [] | 29 gpe-timesheet | [] [] [] [] [] | 25 gpe-today | [] [] [] [] [] [] | 30 gpe-todo | [] [] [] [] | 17 gphoto2 | [] [] [] [] [] | 24 gprof | [] [] [] | 15 gpsdrive | [] [] [] | 11 gramadoir | [] [] [] | 11 grep | [] [] [] | 10 grub | [] [] [] | 14 gsasl | [] [] [] [] | 14 gss | [] [] [] | 11 gst-plugins-bad | [] [] [] [] | 26 gst-plugins-base | [] [] [] [] [] | 24 gst-plugins-good | [] [] [] [] | 24 gst-plugins-ugly | [] [] [] [] [] | 29 gstreamer | [] [] [] [] | 22 gtick | [] [] [] | 13 gtkam | [] [] [] | 20 gtkorphan | [] [] [] | 14 gtkspell | [] [] [] [] [] [] [] [] [] | 45 gutenprint | [] | 10 hello | [] [] [] [] [] [] | 21 help2man | [] [] | 7 hylafax | [] | 5 idutils | [] [] [] [] | 17 indent | [] [] [] [] [] [] | 30 iso_15924 | () [] () [] [] | 16 iso_3166 | [] [] () [] [] () [] [] [] () | 53 iso_3166_2 | () [] () [] | 9 iso_4217 | [] () [] [] () [] [] | 26 iso_639 | [] [] [] () [] () [] [] [] [] | 38 iso_639_3 | [] () | 8 jwhois | [] [] [] [] [] | 16 kbd | [] [] [] [] [] | 15 keytouch | [] [] [] | 16 keytouch-editor | [] [] [] | 14 keytouch-keyboa... | [] [] [] | 14 klavaro | [] | 11 latrine | [] [] [] | 10 ld | [] [] [] [] | 11 leafpad | [] [] [] [] [] [] | 33 libc | [] [] [] [] [] | 21 libexif | [] () | 7 libextractor | [] | 1 libgnutls | [] [] [] | 9 libgpewidget | [] [] [] | 14 libgpg-error | [] [] [] | 9 libgphoto2 | [] [] | 8 libgphoto2_port | [] [] [] [] | 14 libgsasl | [] [] [] | 13 libiconv | [] [] [] [] | 21 libidn | () [] [] | 11 lifelines | [] | 4 liferea | [] [] [] | 21 lilypond | [] | 7 linkdr | [] [] [] [] [] | 17 lordsawar | | 1 lprng | [] | 3 lynx | [] [] [] [] | 17 m4 | [] [] [] [] | 19 mailfromd | [] [] | 3 mailutils | [] | 5 make | [] [] [] [] | 21 man-db | [] [] [] | 8 man-db-manpages | | 4 minicom | [] [] | 16 mkisofs | [] [] | 9 myserver | | 0 nano | [] [] [] [] | 21 opcodes | [] [] [] | 11 parted | [] [] [] [] [] | 15 pies | [] [] | 3 popt | [] [] [] [] [] [] | 27 psmisc | [] [] | 11 pspp | | 4 pwdutils | [] [] | 6 radius | [] [] | 9 recode | [] [] [] [] | 28 rosegarden | () | 0 rpm | [] [] [] | 11 rush | [] [] | 4 sarg | | 1 screem | [] | 3 scrollkeeper | [] [] [] [] [] | 27 sed | [] [] [] [] [] | 30 sharutils | [] [] [] [] [] | 22 shishi | [] | 3 skencil | [] [] | 7 solfege | [] [] [] [] | 16 solfege-manual | [] | 8 soundtracker | [] [] [] | 9 sp | [] | 3 sysstat | [] [] | 15 tar | [] [] [] [] [] [] | 23 texinfo | [] [] [] [] [] | 17 tin | | 4 unicode-han-tra... | | 0 unicode-transla... | | 2 util-linux-ng | [] [] [] [] | 20 vice | () () | 1 vmm | [] | 4 vorbis-tools | [] | 6 wastesedge | | 2 wdiff | [] [] | 7 wget | [] [] [] [] [] | 26 wyslij-po | [] [] | 8 xchat | [] [] [] [] [] [] | 36 xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] | 63 xkeyboard-config | [] [] [] | 22 +---------------------------------------------------+ 85 teams sv sw ta te tg th tr uk vi wa zh_CN zh_HK zh_TW 178 domains 119 1 3 3 0 10 65 51 155 17 98 7 41 2618 Some counters in the preceding matrix are higher than the number of visible blocks let us expect. This is because a few extra PO files are used for implementing regional variants of languages, or language dialects. For a PO file in the matrix above to be effective, the package to which it applies should also have been internationalized and distributed as such by its maintainer. There might be an observable lag between the mere existence a PO file and its wide availability in a distribution. If June 2010 seems to be old, you may fetch a more recent copy of this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date matrix with full percentage details can be found at `http://translationproject.org/extra/matrix.html'. 1.5 Using `gettext' in new packages =================================== If you are writing a freely available program and want to internationalize it you are welcome to use GNU `gettext' in your package. Of course you have to respect the GNU Library General Public License which covers the use of the GNU `gettext' library. This means in particular that even non-free programs can use `libintl' as a shared library, whereas only free software can use `libintl' as a static library or use modified versions of `libintl'. Once the sources are changed appropriately and the setup can handle the use of `gettext' the only thing missing are the translations. The Free Translation Project is also available for packages which are not developed inside the GNU project. Therefore the information given above applies also for every other Free Software Project. Contact `coordinator@translationproject.org' to make the `.pot' files available to the translation teams. flex-2.5.39/scanflags.c0000644000175000017500000000436412314546064015143 0ustar srivastasrivasta/* scanflags - flags used by scanning. */ /* Copyright (c) 1990 The Regents of the University of California. */ /* All rights reserved. */ /* This code is derived from software contributed to Berkeley by */ /* Vern Paxson. */ /* The United States Government has rights in this work pursuant */ /* to contract no. DE-AC03-76SF00098 between the United States */ /* Department of Energy and the University of California. */ /* This file is part of flex. */ /* Redistribution and use in source and binary forms, with or without */ /* modification, are permitted provided that the following conditions */ /* are met: */ /* 1. Redistributions of source code must retain the above copyright */ /* notice, this list of conditions and the following disclaimer. */ /* 2. Redistributions in binary form must reproduce the above copyright */ /* notice, this list of conditions and the following disclaimer in the */ /* documentation and/or other materials provided with the distribution. */ /* Neither the name of the University nor the names of its contributors */ /* may be used to endorse or promote products derived from this software */ /* without specific prior written permission. */ /* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR */ /* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED */ /* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */ /* PURPOSE. */ #include "flexdef.h" scanflags_t* _sf_stk = NULL; size_t _sf_top_ix=0, _sf_max=0; void sf_push (void) { if (_sf_top_ix + 1 >= _sf_max) _sf_stk = (scanflags_t*) flex_realloc ( (void*) _sf_stk, sizeof(scanflags_t) * (_sf_max += 32)); // copy the top element _sf_stk[_sf_top_ix + 1] = _sf_stk[_sf_top_ix]; ++_sf_top_ix; } void sf_pop (void) { assert(_sf_top_ix > 0); --_sf_top_ix; } /* one-time initialization. Should be called before any sf_ functions. */ void sf_init (void) { assert(_sf_stk == NULL); _sf_stk = (scanflags_t*) flex_alloc ( sizeof(scanflags_t) * (_sf_max = 32)); if (!_sf_stk) lerrsf_fatal(_("Unable to allocate %ld of stack"), (long)sizeof(scanflags_t)); _sf_stk[_sf_top_ix] = 0; } /* vim:set expandtab cindent tabstop=4 softtabstop=4 shiftwidth=4 textwidth=0: */ flex-2.5.39/version.h0000644000175000017500000000003512314546064014663 0ustar srivastasrivasta#define FLEX_VERSION VERSION flex-2.5.39/sym.c0000644000175000017500000001516712314546064014015 0ustar srivastasrivasta/* sym - symbol table routines */ /* Copyright (c) 1990 The Regents of the University of California. */ /* All rights reserved. */ /* This code is derived from software contributed to Berkeley by */ /* Vern Paxson. */ /* The United States Government has rights in this work pursuant */ /* to contract no. DE-AC03-76SF00098 between the United States */ /* Department of Energy and the University of California. */ /* This file is part of flex. */ /* Redistribution and use in source and binary forms, with or without */ /* modification, are permitted provided that the following conditions */ /* are met: */ /* 1. Redistributions of source code must retain the above copyright */ /* notice, this list of conditions and the following disclaimer. */ /* 2. Redistributions in binary form must reproduce the above copyright */ /* notice, this list of conditions and the following disclaimer in the */ /* documentation and/or other materials provided with the distribution. */ /* Neither the name of the University nor the names of its contributors */ /* may be used to endorse or promote products derived from this software */ /* without specific prior written permission. */ /* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR */ /* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED */ /* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */ /* PURPOSE. */ #include "flexdef.h" /* Variables for symbol tables: * sctbl - start-condition symbol table * ndtbl - name-definition symbol table * ccltab - character class text symbol table */ struct hash_entry { struct hash_entry *prev, *next; char *name; char *str_val; int int_val; }; typedef struct hash_entry **hash_table; #define NAME_TABLE_HASH_SIZE 101 #define START_COND_HASH_SIZE 101 #define CCL_HASH_SIZE 101 static struct hash_entry *ndtbl[NAME_TABLE_HASH_SIZE]; static struct hash_entry *sctbl[START_COND_HASH_SIZE]; static struct hash_entry *ccltab[CCL_HASH_SIZE]; /* declare functions that have forward references */ static int addsym PROTO ((register char[], char *, int, hash_table, int)); static struct hash_entry *findsym PROTO ((register const char *sym, hash_table table, int table_size)); static int hashfunct PROTO ((register const char *, int)); /* addsym - add symbol and definitions to symbol table * * -1 is returned if the symbol already exists, and the change not made. */ static int addsym (sym, str_def, int_def, table, table_size) register char sym[]; char *str_def; int int_def; hash_table table; int table_size; { int hash_val = hashfunct (sym, table_size); register struct hash_entry *sym_entry = table[hash_val]; register struct hash_entry *new_entry; register struct hash_entry *successor; while (sym_entry) { if (!strcmp (sym, sym_entry->name)) { /* entry already exists */ return -1; } sym_entry = sym_entry->next; } /* create new entry */ new_entry = (struct hash_entry *) flex_alloc (sizeof (struct hash_entry)); if (new_entry == NULL) flexfatal (_("symbol table memory allocation failed")); if ((successor = table[hash_val]) != 0) { new_entry->next = successor; successor->prev = new_entry; } else new_entry->next = NULL; new_entry->prev = NULL; new_entry->name = sym; new_entry->str_val = str_def; new_entry->int_val = int_def; table[hash_val] = new_entry; return 0; } /* cclinstal - save the text of a character class */ void cclinstal (ccltxt, cclnum) Char ccltxt[]; int cclnum; { /* We don't bother checking the return status because we are not * called unless the symbol is new. */ (void) addsym ((char *) copy_unsigned_string (ccltxt), (char *) 0, cclnum, ccltab, CCL_HASH_SIZE); } /* ccllookup - lookup the number associated with character class text * * Returns 0 if there's no CCL associated with the text. */ int ccllookup (ccltxt) Char ccltxt[]; { return findsym ((char *) ccltxt, ccltab, CCL_HASH_SIZE)->int_val; } /* findsym - find symbol in symbol table */ static struct hash_entry *findsym (sym, table, table_size) register const char *sym; hash_table table; int table_size; { static struct hash_entry empty_entry = { (struct hash_entry *) 0, (struct hash_entry *) 0, (char *) 0, (char *) 0, 0, }; register struct hash_entry *sym_entry = table[hashfunct (sym, table_size)]; while (sym_entry) { if (!strcmp (sym, sym_entry->name)) return sym_entry; sym_entry = sym_entry->next; } return &empty_entry; } /* hashfunct - compute the hash value for "str" and hash size "hash_size" */ static int hashfunct (str, hash_size) register const char *str; int hash_size; { register int hashval; register int locstr; hashval = 0; locstr = 0; while (str[locstr]) { hashval = (hashval << 1) + (unsigned char) str[locstr++]; hashval %= hash_size; } return hashval; } /* ndinstal - install a name definition */ void ndinstal (name, definition) const char *name; Char definition[]; { if (addsym (copy_string (name), (char *) copy_unsigned_string (definition), 0, ndtbl, NAME_TABLE_HASH_SIZE)) synerr (_("name defined twice")); } /* ndlookup - lookup a name definition * * Returns a nil pointer if the name definition does not exist. */ Char *ndlookup (nd) const char *nd; { return (Char *) findsym (nd, ndtbl, NAME_TABLE_HASH_SIZE)->str_val; } /* scextend - increase the maximum number of start conditions */ void scextend () { current_max_scs += MAX_SCS_INCREMENT; ++num_reallocs; scset = reallocate_integer_array (scset, current_max_scs); scbol = reallocate_integer_array (scbol, current_max_scs); scxclu = reallocate_integer_array (scxclu, current_max_scs); sceof = reallocate_integer_array (sceof, current_max_scs); scname = reallocate_char_ptr_array (scname, current_max_scs); } /* scinstal - make a start condition * * NOTE * The start condition is "exclusive" if xcluflg is true. */ void scinstal (str, xcluflg) const char *str; int xcluflg; { if (++lastsc >= current_max_scs) scextend (); scname[lastsc] = copy_string (str); if (addsym (scname[lastsc], (char *) 0, lastsc, sctbl, START_COND_HASH_SIZE)) format_pinpoint_message (_ ("start condition %s declared twice"), str); scset[lastsc] = mkstate (SYM_EPSILON); scbol[lastsc] = mkstate (SYM_EPSILON); scxclu[lastsc] = xcluflg; sceof[lastsc] = false; } /* sclookup - lookup the number associated with a start condition * * Returns 0 if no such start condition. */ int sclookup (str) const char *str; { return findsym (str, sctbl, START_COND_HASH_SIZE)->int_val; } flex-2.5.39/gettext.h0000644000175000017500000000507412314546064014672 0ustar srivastasrivasta/* Convenience header for conditional use of GNU . Copyright (C) 1995-1998, 2000-2002 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _LIBGETTEXT_H #define _LIBGETTEXT_H 1 /* NLS can be disabled through the configure --disable-nls option. */ #if ENABLE_NLS /* Get declarations of GNU message catalog functions. */ # include #else /* Disabled NLS. The casts to 'const char *' serve the purpose of producing warnings for invalid uses of the value returned from these functions. On pre-ANSI systems without 'const', the config.h file is supposed to contain "#define const". */ # define gettext(Msgid) ((const char *) (Msgid)) # define dgettext(Domainname, Msgid) ((const char *) (Msgid)) # define dcgettext(Domainname, Msgid, Category) ((const char *) (Msgid)) # define ngettext(Msgid1, Msgid2, N) \ ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) # define dngettext(Domainname, Msgid1, Msgid2, N) \ ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) # define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \ ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) # define textdomain(Domainname) ((const char *) (Domainname)) # define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname)) # define bind_textdomain_codeset(Domainname, Codeset) ((const char *) (Codeset)) #endif /* A pseudo function call that serves as a marker for the automated extraction of messages, but does not call gettext(). The run-time translation is done at a different place in the code. The argument, String, should be a literal string. Concatenated strings and other string expressions won't work. The macro's expansion is not parenthesized, so that it is suitable as initializer for static 'char[]' or 'const char[]' variables. */ #define gettext_noop(String) String #endif /* _LIBGETTEXT_H */ flex-2.5.39/main.c0000644000175000017500000014207012314546064014123 0ustar srivastasrivasta/* flex - tool to generate fast lexical analyzers */ /* Copyright (c) 1990 The Regents of the University of California. */ /* All rights reserved. */ /* This code is derived from software contributed to Berkeley by */ /* Vern Paxson. */ /* The United States Government has rights in this work pursuant */ /* to contract no. DE-AC03-76SF00098 between the United States */ /* Department of Energy and the University of California. */ /* This file is part of flex. */ /* Redistribution and use in source and binary forms, with or without */ /* modification, are permitted provided that the following conditions */ /* are met: */ /* 1. Redistributions of source code must retain the above copyright */ /* notice, this list of conditions and the following disclaimer. */ /* 2. Redistributions in binary form must reproduce the above copyright */ /* notice, this list of conditions and the following disclaimer in the */ /* documentation and/or other materials provided with the distribution. */ /* Neither the name of the University nor the names of its contributors */ /* may be used to endorse or promote products derived from this software */ /* without specific prior written permission. */ /* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR */ /* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED */ /* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */ /* PURPOSE. */ #include "flexdef.h" #include "version.h" #include "options.h" #include "tables.h" static char flex_version[] = FLEX_VERSION; /* declare functions that have forward references */ void flexinit PROTO ((int, char **)); void readin PROTO ((void)); void set_up_initial_allocations PROTO ((void)); static char *basename2 PROTO ((char *path, int should_strip_ext)); /* these globals are all defined and commented in flexdef.h */ int printstats, syntaxerror, eofseen, ddebug, trace, nowarn, spprdflt; int interactive, lex_compat, posix_compat, do_yylineno, useecs, fulltbl, usemecs; int fullspd, gen_line_dirs, performance_report, backing_up_report; int C_plus_plus, long_align, use_read, yytext_is_array, do_yywrap, csize; int reentrant, bison_bridge_lval, bison_bridge_lloc; int yymore_used, reject, real_reject, continued_action, in_rule; int yymore_really_used, reject_really_used; int datapos, dataline, linenum; FILE *skelfile = NULL; int skel_ind = 0; char *action_array; int action_size, defs1_offset, prolog_offset, action_offset, action_index; char *infilename = NULL, *outfilename = NULL, *headerfilename = NULL; int did_outfilename; char *prefix, *yyclass, *extra_type = NULL; int do_stdinit, use_stdout; int onestate[ONE_STACK_SIZE], onesym[ONE_STACK_SIZE]; int onenext[ONE_STACK_SIZE], onedef[ONE_STACK_SIZE], onesp; int maximum_mns, current_mns, current_max_rules; int num_rules, num_eof_rules, default_rule, lastnfa; int *firstst, *lastst, *finalst, *transchar, *trans1, *trans2; int *accptnum, *assoc_rule, *state_type; int *rule_type, *rule_linenum, *rule_useful; int current_state_type; int variable_trailing_context_rules; int numtemps, numprots, protprev[MSP], protnext[MSP], prottbl[MSP]; int protcomst[MSP], firstprot, lastprot, protsave[PROT_SAVE_SIZE]; int numecs, nextecm[CSIZE + 1], ecgroup[CSIZE + 1], nummecs, tecfwd[CSIZE + 1]; int tecbck[CSIZE + 1]; int lastsc, *scset, *scbol, *scxclu, *sceof; int current_max_scs; char **scname; int current_max_dfa_size, current_max_xpairs; int current_max_template_xpairs, current_max_dfas; int lastdfa, *nxt, *chk, *tnxt; int *base, *def, *nultrans, NUL_ec, tblend, firstfree, **dss, *dfasiz; union dfaacc_union *dfaacc; int *accsiz, *dhash, numas; int numsnpairs, jambase, jamstate; int lastccl, *cclmap, *ccllen, *cclng, cclreuse; int current_maxccls, current_max_ccl_tbl_size; Char *ccltbl; char nmstr[MAXLINE]; int sectnum, nummt, hshcol, dfaeql, numeps, eps2, num_reallocs; int tmpuses, totnst, peakpairs, numuniq, numdup, hshsave; int num_backing_up, bol_needed; FILE *backing_up_file; int end_of_buffer_state; char **input_files; int num_input_files; jmp_buf flex_main_jmp_buf; bool *rule_has_nl, *ccl_has_nl; int nlch = '\n'; bool ansi_func_defs, ansi_func_protos; bool tablesext, tablesverify, gentables; char *tablesfilename=0,*tablesname=0; struct yytbl_writer tableswr; /* Make sure program_name is initialized so we don't crash if writing * out an error message before getting the program name from argv[0]. */ char *program_name = "flex"; #ifndef SHORT_FILE_NAMES static char *outfile_template = "lex.%s.%s"; static char *backing_name = "lex.backup"; static char *tablesfile_template = "lex.%s.tables"; #else static char *outfile_template = "lex%s.%s"; static char *backing_name = "lex.bck"; static char *tablesfile_template = "lex%s.tbl"; #endif #ifdef MS_DOS extern unsigned _stklen = 16384; #endif /* From scan.l */ extern FILE* yyout; static char outfile_path[MAXLINE]; static int outfile_created = 0; static char *skelname = NULL; static int _stdout_closed = 0; /* flag to prevent double-fclose() on stdout. */ const char *escaped_qstart = "[[]]M4_YY_NOOP[M4_YY_NOOP[M4_YY_NOOP[[]]"; const char *escaped_qend = "[[]]M4_YY_NOOP]M4_YY_NOOP]M4_YY_NOOP[[]]"; /* For debugging. The max number of filters to apply to skeleton. */ static int preproc_level = 1000; int flex_main PROTO ((int argc, char *argv[])); int main PROTO ((int argc, char *argv[])); int flex_main (argc, argv) int argc; char *argv[]; { int i, exit_status, child_status; /* Set a longjmp target. Yes, I know it's a hack, but it gets worse: The * return value of setjmp, if non-zero, is the desired exit code PLUS ONE. * For example, if you want 'main' to return with code '2', then call * longjmp() with an argument of 3. This is because it is invalid to * specify a value of 0 to longjmp. FLEX_EXIT(n) should be used instead of * exit(n); */ exit_status = setjmp (flex_main_jmp_buf); if (exit_status){ if (stdout && !_stdout_closed && !ferror(stdout)){ fflush(stdout); fclose(stdout); } while (wait(&child_status) > 0){ if (!WIFEXITED (child_status) || WEXITSTATUS (child_status) != 0){ /* report an error of a child */ if( exit_status <= 1 ) exit_status = 2; } } return exit_status - 1; } flexinit (argc, argv); readin (); skelout (); /* %% [1.5] DFA */ ntod (); for (i = 1; i <= num_rules; ++i) if (!rule_useful[i] && i != default_rule) line_warning (_("rule cannot be matched"), rule_linenum[i]); if (spprdflt && !reject && rule_useful[default_rule]) line_warning (_ ("-s option given but default rule can be matched"), rule_linenum[default_rule]); /* Generate the C state transition tables from the DFA. */ make_tables (); /* Note, flexend does not return. It exits with its argument * as status. */ flexend (0); return 0; /* keep compilers/lint happy */ } /* Wrapper around flex_main, so flex_main can be built as a library. */ int main (argc, argv) int argc; char *argv[]; { #if ENABLE_NLS #if HAVE_LOCALE_H setlocale (LC_MESSAGES, ""); setlocale (LC_CTYPE, ""); textdomain (PACKAGE); bindtextdomain (PACKAGE, LOCALEDIR); #endif #endif return flex_main (argc, argv); } /* check_options - check user-specified options */ void check_options () { int i; const char * m4 = NULL; if (lex_compat) { if (C_plus_plus) flexerror (_("Can't use -+ with -l option")); if (fulltbl || fullspd) flexerror (_("Can't use -f or -F with -l option")); if (reentrant || bison_bridge_lval) flexerror (_ ("Can't use --reentrant or --bison-bridge with -l option")); yytext_is_array = true; do_yylineno = true; use_read = false; } #if 0 /* This makes no sense whatsoever. I'm removing it. */ if (do_yylineno) /* This should really be "maintain_backup_tables = true" */ reject_really_used = true; #endif if (csize == unspecified) { if ((fulltbl || fullspd) && !useecs) csize = DEFAULT_CSIZE; else csize = CSIZE; } if (interactive == unspecified) { if (fulltbl || fullspd) interactive = false; else interactive = true; } if (fulltbl || fullspd) { if (usemecs) flexerror (_ ("-Cf/-CF and -Cm don't make sense together")); if (interactive) flexerror (_("-Cf/-CF and -I are incompatible")); if (lex_compat) flexerror (_ ("-Cf/-CF are incompatible with lex-compatibility mode")); if (fulltbl && fullspd) flexerror (_ ("-Cf and -CF are mutually exclusive")); } if (C_plus_plus && fullspd) flexerror (_("Can't use -+ with -CF option")); if (C_plus_plus && yytext_is_array) { warn (_("%array incompatible with -+ option")); yytext_is_array = false; } if (C_plus_plus && (reentrant)) flexerror (_("Options -+ and --reentrant are mutually exclusive.")); if (C_plus_plus && bison_bridge_lval) flexerror (_("bison bridge not supported for the C++ scanner.")); if (useecs) { /* Set up doubly-linked equivalence classes. */ /* We loop all the way up to csize, since ecgroup[csize] is * the position used for NUL characters. */ ecgroup[1] = NIL; for (i = 2; i <= csize; ++i) { ecgroup[i] = i - 1; nextecm[i - 1] = i; } nextecm[csize] = NIL; } else { /* Put everything in its own equivalence class. */ for (i = 1; i <= csize; ++i) { ecgroup[i] = i; nextecm[i] = BAD_SUBSCRIPT; /* to catch errors */ } } if (!ansi_func_defs) buf_m4_define( &m4defs_buf, "M4_YY_NO_ANSI_FUNC_DEFS", NULL); if (!ansi_func_protos) buf_m4_define( &m4defs_buf, "M4_YY_NO_ANSI_FUNC_PROTOS", NULL); if (extra_type) buf_m4_define( &m4defs_buf, "M4_EXTRA_TYPE_DEFS", extra_type); if (!use_stdout) { FILE *prev_stdout; if (!did_outfilename) { char *suffix; if (C_plus_plus) suffix = "cc"; else suffix = "c"; snprintf (outfile_path, sizeof(outfile_path), outfile_template, prefix, suffix); outfilename = outfile_path; } prev_stdout = freopen (outfilename, "w+", stdout); if (prev_stdout == NULL) lerrsf (_("could not create %s"), outfilename); outfile_created = 1; } /* Setup the filter chain. */ output_chain = filter_create_int(NULL, filter_tee_header, headerfilename); if ( !(m4 = getenv("M4"))) m4 = M4; filter_create_ext(output_chain, m4, "-P", 0); filter_create_int(output_chain, filter_fix_linedirs, NULL); /* For debugging, only run the requested number of filters. */ if (preproc_level > 0) { filter_truncate(output_chain, preproc_level); filter_apply_chain(output_chain); } yyout = stdout; /* always generate the tablesverify flag. */ buf_m4_define (&m4defs_buf, "M4_YY_TABLES_VERIFY", tablesverify ? "1" : "0"); if (tablesext) gentables = false; if (tablesverify) /* force generation of C tables. */ gentables = true; if (tablesext) { FILE *tablesout; struct yytbl_hdr hdr; char *pname = 0; int nbytes = 0; buf_m4_define (&m4defs_buf, "M4_YY_TABLES_EXTERNAL", NULL); if (!tablesfilename) { nbytes = strlen (prefix) + strlen (tablesfile_template) + 2; tablesfilename = pname = (char *) calloc (nbytes, 1); snprintf (pname, nbytes, tablesfile_template, prefix); } if ((tablesout = fopen (tablesfilename, "w")) == NULL) lerrsf (_("could not create %s"), tablesfilename); if (pname) free (pname); tablesfilename = 0; yytbl_writer_init (&tableswr, tablesout); nbytes = strlen (prefix) + strlen ("tables") + 2; tablesname = (char *) calloc (nbytes, 1); snprintf (tablesname, nbytes, "%stables", prefix); yytbl_hdr_init (&hdr, flex_version, tablesname); if (yytbl_hdr_fwrite (&tableswr, &hdr) <= 0) flexerror (_("could not write tables header")); } if (skelname && (skelfile = fopen (skelname, "r")) == NULL) lerrsf (_("can't open skeleton file %s"), skelname); if (reentrant) { buf_m4_define (&m4defs_buf, "M4_YY_REENTRANT", NULL); if (yytext_is_array) buf_m4_define (&m4defs_buf, "M4_YY_TEXT_IS_ARRAY", NULL); } if ( bison_bridge_lval) buf_m4_define (&m4defs_buf, "M4_YY_BISON_LVAL", NULL); if ( bison_bridge_lloc) buf_m4_define (&m4defs_buf, "", NULL); buf_m4_define(&m4defs_buf, "M4_YY_PREFIX", prefix); if (did_outfilename) line_directive_out (stdout, 0); if (do_yylineno) buf_m4_define (&m4defs_buf, "M4_YY_USE_LINENO", NULL); /* Create the alignment type. */ buf_strdefine (&userdef_buf, "YY_INT_ALIGNED", long_align ? "long int" : "short int"); /* Define the start condition macros. */ { struct Buf tmpbuf; buf_init(&tmpbuf, sizeof(char)); for (i = 1; i <= lastsc; i++) { char *str, *fmt = "#define %s %d\n"; size_t strsz; str = (char*)flex_alloc(strsz = strlen(fmt) + strlen(scname[i]) + (int)(1 + log10(i)) + 2); if (!str) flexfatal(_("allocation of macro definition failed")); snprintf(str, strsz, fmt, scname[i], i - 1); buf_strappend(&tmpbuf, str); free(str); } buf_m4_define(&m4defs_buf, "M4_YY_SC_DEFS", tmpbuf.elts); buf_destroy(&tmpbuf); } /* This is where we begin writing to the file. */ /* Dump the %top code. */ if( top_buf.elts) outn((char*) top_buf.elts); /* Dump the m4 definitions. */ buf_print_strings(&m4defs_buf, stdout); m4defs_buf.nelts = 0; /* memory leak here. */ /* Place a bogus line directive, it will be fixed in the filter. */ outn("#line 0 \"M4_YY_OUTFILE_NAME\"\n"); /* Dump the user defined preproc directives. */ if (userdef_buf.elts) outn ((char *) (userdef_buf.elts)); skelout (); /* %% [1.0] */ } /* flexend - terminate flex * * note * This routine does not return. */ void flexend (exit_status) int exit_status; { static int called_before = -1; /* prevent infinite recursion. */ int tblsiz; if (++called_before) FLEX_EXIT (exit_status); if (skelfile != NULL) { if (ferror (skelfile)) lerrsf (_("input error reading skeleton file %s"), skelname); else if (fclose (skelfile)) lerrsf (_("error closing skeleton file %s"), skelname); } #if 0 fprintf (header_out, "#ifdef YY_HEADER_EXPORT_START_CONDITIONS\n"); fprintf (header_out, "/* Beware! Start conditions are not prefixed. */\n"); /* Special case for "INITIAL" */ fprintf (header_out, "#undef INITIAL\n#define INITIAL 0\n"); for (i = 2; i <= lastsc; i++) fprintf (header_out, "#define %s %d\n", scname[i], i - 1); fprintf (header_out, "#endif /* YY_HEADER_EXPORT_START_CONDITIONS */\n\n"); /* Kill ALL flex-related macros. This is so the user * can #include more than one generated header file. */ fprintf (header_out, "#ifndef YY_HEADER_NO_UNDEFS\n"); fprintf (header_out, "/* Undefine all internal macros, etc., that do no belong in the header. */\n\n"); { const char * undef_list[] = { "BEGIN", "ECHO", "EOB_ACT_CONTINUE_SCAN", "EOB_ACT_END_OF_FILE", "EOB_ACT_LAST_MATCH", "FLEX_SCANNER", "FLEX_STD", "REJECT", "YYFARGS0", "YYFARGS1", "YYFARGS2", "YYFARGS3", "YYLMAX", "YYSTATE", "YY_AT_BOL", "YY_BREAK", "YY_BUFFER_EOF_PENDING", "YY_BUFFER_NEW", "YY_BUFFER_NORMAL", "YY_BUF_SIZE", "M4_YY_CALL_LAST_ARG", "M4_YY_CALL_ONLY_ARG", "YY_CURRENT_BUFFER", "YY_DECL", "M4_YY_DECL_LAST_ARG", "M4_YY_DEF_LAST_ARG", "M4_YY_DEF_ONLY_ARG", "YY_DO_BEFORE_ACTION", "YY_END_OF_BUFFER", "YY_END_OF_BUFFER_CHAR", "YY_EXIT_FAILURE", "YY_EXTRA_TYPE", "YY_FATAL_ERROR", "YY_FLEX_DEFINED_ECHO", "YY_FLEX_LEX_COMPAT", "YY_FLEX_MAJOR_VERSION", "YY_FLEX_MINOR_VERSION", "YY_FLEX_SUBMINOR_VERSION", "YY_FLUSH_BUFFER", "YY_G", "YY_INPUT", "YY_INTERACTIVE", "YY_INT_ALIGNED", "YY_LAST_ARG", "YY_LESS_LINENO", "YY_LEX_ARGS", "YY_LEX_DECLARATION", "YY_LEX_PROTO", "YY_MAIN", "YY_MORE_ADJ", "YY_NEED_STRLEN", "YY_NEW_FILE", "YY_NULL", "YY_NUM_RULES", "YY_ONLY_ARG", "YY_PARAMS", "YY_PROTO", "M4_YY_PROTO_LAST_ARG", "M4_YY_PROTO_ONLY_ARG void", "YY_READ_BUF_SIZE", "YY_REENTRANT", "YY_RESTORE_YY_MORE_OFFSET", "YY_RULE_SETUP", "YY_SC_TO_UI", "YY_SKIP_YYWRAP", "YY_START", "YY_START_STACK_INCR", "YY_STATE_EOF", "YY_STDINIT", "YY_TRAILING_HEAD_MASK", "YY_TRAILING_MASK", "YY_USER_ACTION", "YY_USE_CONST", "YY_USE_PROTOS", "unput", "yyTABLES_NAME", "yy_create_buffer", "yy_delete_buffer", "yy_flex_debug", "yy_flush_buffer", "yy_init_buffer", "yy_load_buffer_state", "yy_new_buffer", "yy_scan_buffer", "yy_scan_bytes", "yy_scan_string", "yy_set_bol", "yy_set_interactive", "yy_switch_to_buffer", "yypush_buffer_state", "yypop_buffer_state", "yyensure_buffer_stack", "yyalloc", "yyconst", "yyextra", "yyfree", "yyget_debug", "yyget_extra", "yyget_in", "yyget_leng", "yyget_lineno", "yyget_lloc", "yyget_lval", "yyget_out", "yyget_text", "yyin", "yyleng", "yyless", "yylex", "yylex_destroy", "yylex_init", "yylex_init_extra", "yylineno", "yylloc", "yylval", "yymore", "yyout", "yyrealloc", "yyrestart", "yyset_debug", "yyset_extra", "yyset_in", "yyset_lineno", "yyset_lloc", "yyset_lval", "yyset_out", "yytables_destroy", "yytables_fload", "yyterminate", "yytext", "yytext_ptr", "yywrap", /* must be null-terminated */ NULL}; for (i=0; undef_list[i] != NULL; i++) fprintf (header_out, "#undef %s\n", undef_list[i]); } /* undef any of the auto-generated symbols. */ for (i = 0; i < defs_buf.nelts; i++) { /* don't undef start conditions */ if (sclookup (((char **) defs_buf.elts)[i]) > 0) continue; fprintf (header_out, "#undef %s\n", ((char **) defs_buf.elts)[i]); } fprintf (header_out, "#endif /* !YY_HEADER_NO_UNDEFS */\n"); fprintf (header_out, "\n"); fprintf (header_out, "#undef %sIN_HEADER\n", prefix); fprintf (header_out, "#endif /* %sHEADER_H */\n", prefix); if (ferror (header_out)) lerrsf (_("error creating header file %s"), headerfilename); fflush (header_out); fclose (header_out); #endif if (exit_status != 0 && outfile_created) { if (ferror (stdout)) lerrsf (_("error writing output file %s"), outfilename); else if ((_stdout_closed = 1) && fclose (stdout)) lerrsf (_("error closing output file %s"), outfilename); else if (unlink (outfilename)) lerrsf (_("error deleting output file %s"), outfilename); } if (backing_up_report && backing_up_file) { if (num_backing_up == 0) fprintf (backing_up_file, _("No backing up.\n")); else if (fullspd || fulltbl) fprintf (backing_up_file, _ ("%d backing up (non-accepting) states.\n"), num_backing_up); else fprintf (backing_up_file, _("Compressed tables always back up.\n")); if (ferror (backing_up_file)) lerrsf (_("error writing backup file %s"), backing_name); else if (fclose (backing_up_file)) lerrsf (_("error closing backup file %s"), backing_name); } if (printstats) { fprintf (stderr, _("%s version %s usage statistics:\n"), program_name, flex_version); fprintf (stderr, _(" scanner options: -")); if (C_plus_plus) putc ('+', stderr); if (backing_up_report) putc ('b', stderr); if (ddebug) putc ('d', stderr); if (sf_case_ins()) putc ('i', stderr); if (lex_compat) putc ('l', stderr); if (posix_compat) putc ('X', stderr); if (performance_report > 0) putc ('p', stderr); if (performance_report > 1) putc ('p', stderr); if (spprdflt) putc ('s', stderr); if (reentrant) fputs ("--reentrant", stderr); if (bison_bridge_lval) fputs ("--bison-bridge", stderr); if (bison_bridge_lloc) fputs ("--bison-locations", stderr); if (use_stdout) putc ('t', stderr); if (printstats) putc ('v', stderr); /* always true! */ if (nowarn) putc ('w', stderr); if (interactive == false) putc ('B', stderr); if (interactive == true) putc ('I', stderr); if (!gen_line_dirs) putc ('L', stderr); if (trace) putc ('T', stderr); if (csize == unspecified) /* We encountered an error fairly early on, so csize * never got specified. Define it now, to prevent * bogus table sizes being written out below. */ csize = 256; if (csize == 128) putc ('7', stderr); else putc ('8', stderr); fprintf (stderr, " -C"); if (long_align) putc ('a', stderr); if (fulltbl) putc ('f', stderr); if (fullspd) putc ('F', stderr); if (useecs) putc ('e', stderr); if (usemecs) putc ('m', stderr); if (use_read) putc ('r', stderr); if (did_outfilename) fprintf (stderr, " -o%s", outfilename); if (skelname) fprintf (stderr, " -S%s", skelname); if (strcmp (prefix, "yy")) fprintf (stderr, " -P%s", prefix); putc ('\n', stderr); fprintf (stderr, _(" %d/%d NFA states\n"), lastnfa, current_mns); fprintf (stderr, _(" %d/%d DFA states (%d words)\n"), lastdfa, current_max_dfas, totnst); fprintf (stderr, _(" %d rules\n"), num_rules + num_eof_rules - 1 /* - 1 for def. rule */ ); if (num_backing_up == 0) fprintf (stderr, _(" No backing up\n")); else if (fullspd || fulltbl) fprintf (stderr, _ (" %d backing-up (non-accepting) states\n"), num_backing_up); else fprintf (stderr, _ (" Compressed tables always back-up\n")); if (bol_needed) fprintf (stderr, _(" Beginning-of-line patterns used\n")); fprintf (stderr, _(" %d/%d start conditions\n"), lastsc, current_max_scs); fprintf (stderr, _ (" %d epsilon states, %d double epsilon states\n"), numeps, eps2); if (lastccl == 0) fprintf (stderr, _(" no character classes\n")); else fprintf (stderr, _ (" %d/%d character classes needed %d/%d words of storage, %d reused\n"), lastccl, current_maxccls, cclmap[lastccl] + ccllen[lastccl], current_max_ccl_tbl_size, cclreuse); fprintf (stderr, _(" %d state/nextstate pairs created\n"), numsnpairs); fprintf (stderr, _(" %d/%d unique/duplicate transitions\n"), numuniq, numdup); if (fulltbl) { tblsiz = lastdfa * numecs; fprintf (stderr, _(" %d table entries\n"), tblsiz); } else { tblsiz = 2 * (lastdfa + numtemps) + 2 * tblend; fprintf (stderr, _(" %d/%d base-def entries created\n"), lastdfa + numtemps, current_max_dfas); fprintf (stderr, _ (" %d/%d (peak %d) nxt-chk entries created\n"), tblend, current_max_xpairs, peakpairs); fprintf (stderr, _ (" %d/%d (peak %d) template nxt-chk entries created\n"), numtemps * nummecs, current_max_template_xpairs, numtemps * numecs); fprintf (stderr, _(" %d empty table entries\n"), nummt); fprintf (stderr, _(" %d protos created\n"), numprots); fprintf (stderr, _(" %d templates created, %d uses\n"), numtemps, tmpuses); } if (useecs) { tblsiz = tblsiz + csize; fprintf (stderr, _ (" %d/%d equivalence classes created\n"), numecs, csize); } if (usemecs) { tblsiz = tblsiz + numecs; fprintf (stderr, _ (" %d/%d meta-equivalence classes created\n"), nummecs, csize); } fprintf (stderr, _ (" %d (%d saved) hash collisions, %d DFAs equal\n"), hshcol, hshsave, dfaeql); fprintf (stderr, _(" %d sets of reallocations needed\n"), num_reallocs); fprintf (stderr, _(" %d total table entries needed\n"), tblsiz); } FLEX_EXIT (exit_status); } /* flexinit - initialize flex */ void flexinit (argc, argv) int argc; char **argv; { int i, sawcmpflag, rv, optind; char *arg; scanopt_t sopt; printstats = syntaxerror = trace = spprdflt = false; lex_compat = posix_compat = C_plus_plus = backing_up_report = ddebug = fulltbl = false; fullspd = long_align = nowarn = yymore_used = continued_action = false; do_yylineno = yytext_is_array = in_rule = reject = do_stdinit = false; yymore_really_used = reject_really_used = unspecified; interactive = csize = unspecified; do_yywrap = gen_line_dirs = usemecs = useecs = true; reentrant = bison_bridge_lval = bison_bridge_lloc = false; performance_report = 0; did_outfilename = 0; prefix = "yy"; yyclass = 0; use_read = use_stdout = false; tablesext = tablesverify = false; gentables = true; tablesfilename = tablesname = NULL; ansi_func_defs = ansi_func_protos = true; sawcmpflag = false; /* Initialize dynamic array for holding the rule actions. */ action_size = 2048; /* default size of action array in bytes */ action_array = allocate_character_array (action_size); defs1_offset = prolog_offset = action_offset = action_index = 0; action_array[0] = '\0'; /* Initialize any buffers. */ buf_init (&userdef_buf, sizeof (char)); /* one long string */ buf_init (&defs_buf, sizeof (char *)); /* list of strings */ buf_init (&yydmap_buf, sizeof (char)); /* one long string */ buf_init (&top_buf, sizeof (char)); /* one long string */ { const char * m4defs_init_str[] = {"m4_changequote\n", "m4_changequote([[, ]])\n"}; buf_init (&m4defs_buf, sizeof (char *)); buf_append (&m4defs_buf, &m4defs_init_str, 2); } sf_init (); /* initialize regex lib */ flex_init_regex(); /* Enable C++ if program name ends with '+'. */ program_name = basename2 (argv[0], 0); if (program_name[0] != '\0' && program_name[strlen (program_name) - 1] == '+') C_plus_plus = true; /* read flags */ sopt = scanopt_init (flexopts, argc, argv, 0); if (!sopt) { /* This will only happen when flexopts array is altered. */ fprintf (stderr, _("Internal error. flexopts are malformed.\n")); FLEX_EXIT (1); } while ((rv = scanopt (sopt, &arg, &optind)) != 0) { if (rv < 0) { /* Scanopt has already printed an option-specific error message. */ fprintf (stderr, _ ("Try `%s --help' for more information.\n"), program_name); FLEX_EXIT (1); } switch ((enum flexopt_flag_t) rv) { case OPT_CPLUSPLUS: C_plus_plus = true; break; case OPT_BATCH: interactive = false; break; case OPT_BACKUP: backing_up_report = true; break; case OPT_DONOTHING: break; case OPT_COMPRESSION: if (!sawcmpflag) { useecs = false; usemecs = false; fulltbl = false; sawcmpflag = true; } for (i = 0; arg && arg[i] != '\0'; i++) switch (arg[i]) { case 'a': long_align = true; break; case 'e': useecs = true; break; case 'F': fullspd = true; break; case 'f': fulltbl = true; break; case 'm': usemecs = true; break; case 'r': use_read = true; break; default: lerrif (_ ("unknown -C option '%c'"), (int) arg[i]); break; } break; case OPT_DEBUG: ddebug = true; break; case OPT_NO_DEBUG: ddebug = false; break; case OPT_FULL: useecs = usemecs = false; use_read = fulltbl = true; break; case OPT_FAST: useecs = usemecs = false; use_read = fullspd = true; break; case OPT_HELP: usage (); FLEX_EXIT (0); case OPT_INTERACTIVE: interactive = true; break; case OPT_CASE_INSENSITIVE: sf_set_case_ins(true); break; case OPT_LEX_COMPAT: lex_compat = true; break; case OPT_POSIX_COMPAT: posix_compat = true; break; case OPT_PREPROC_LEVEL: preproc_level = strtol(arg,NULL,0); break; case OPT_MAIN: buf_strdefine (&userdef_buf, "YY_MAIN", "1"); do_yywrap = false; break; case OPT_NO_MAIN: buf_strdefine (&userdef_buf, "YY_MAIN", "0"); break; case OPT_NO_LINE: gen_line_dirs = false; break; case OPT_OUTFILE: outfilename = arg; did_outfilename = 1; break; case OPT_PREFIX: prefix = arg; break; case OPT_PERF_REPORT: ++performance_report; break; case OPT_BISON_BRIDGE: bison_bridge_lval = true; break; case OPT_BISON_BRIDGE_LOCATIONS: bison_bridge_lval = bison_bridge_lloc = true; break; case OPT_REENTRANT: reentrant = true; break; case OPT_NO_REENTRANT: reentrant = false; break; case OPT_SKEL: skelname = arg; break; case OPT_DEFAULT: spprdflt = false; break; case OPT_NO_DEFAULT: spprdflt = true; break; case OPT_STDOUT: use_stdout = true; break; case OPT_NO_UNISTD_H: //buf_strdefine (&userdef_buf, "YY_NO_UNISTD_H", "1"); buf_m4_define( &m4defs_buf, "M4_YY_NO_UNISTD_H",0); break; case OPT_TABLES_FILE: tablesext = true; tablesfilename = arg; break; case OPT_TABLES_VERIFY: tablesverify = true; break; case OPT_TRACE: trace = true; break; case OPT_VERBOSE: printstats = true; break; case OPT_VERSION: printf (_("%s %s\n"), program_name, flex_version); FLEX_EXIT (0); case OPT_WARN: nowarn = false; break; case OPT_NO_WARN: nowarn = true; break; case OPT_7BIT: csize = 128; break; case OPT_8BIT: csize = CSIZE; break; case OPT_ALIGN: long_align = true; break; case OPT_NO_ALIGN: long_align = false; break; case OPT_ALWAYS_INTERACTIVE: buf_m4_define (&m4defs_buf, "M4_YY_ALWAYS_INTERACTIVE", 0); break; case OPT_NEVER_INTERACTIVE: buf_m4_define( &m4defs_buf, "M4_YY_NEVER_INTERACTIVE", 0); break; case OPT_ARRAY: yytext_is_array = true; break; case OPT_POINTER: yytext_is_array = false; break; case OPT_ECS: useecs = true; break; case OPT_NO_ECS: useecs = false; break; case OPT_HEADER_FILE: headerfilename = arg; break; case OPT_META_ECS: usemecs = true; break; case OPT_NO_META_ECS: usemecs = false; break; case OPT_PREPROCDEFINE: { /* arg is "symbol" or "symbol=definition". */ char *def; for (def = arg; *def != '\0' && *def != '='; ++def) ; buf_strappend (&userdef_buf, "#define "); if (*def == '\0') { buf_strappend (&userdef_buf, arg); buf_strappend (&userdef_buf, " 1\n"); } else { buf_strnappend (&userdef_buf, arg, def - arg); buf_strappend (&userdef_buf, " "); buf_strappend (&userdef_buf, def + 1); buf_strappend (&userdef_buf, "\n"); } } break; case OPT_READ: use_read = true; break; case OPT_STACK: //buf_strdefine (&userdef_buf, "YY_STACK_USED", "1"); buf_m4_define( &m4defs_buf, "M4_YY_STACK_USED",0); break; case OPT_STDINIT: do_stdinit = true; break; case OPT_NO_STDINIT: do_stdinit = false; break; case OPT_YYCLASS: yyclass = arg; break; case OPT_YYLINENO: do_yylineno = true; break; case OPT_NO_YYLINENO: do_yylineno = false; break; case OPT_YYWRAP: do_yywrap = true; break; case OPT_NO_YYWRAP: do_yywrap = false; break; case OPT_YYMORE: yymore_really_used = true; break; case OPT_NO_YYMORE: yymore_really_used = false; break; case OPT_REJECT: reject_really_used = true; break; case OPT_NO_REJECT: reject_really_used = false; break; case OPT_NO_ANSI_FUNC_DEFS: ansi_func_defs = false; break; case OPT_NO_ANSI_FUNC_PROTOS: ansi_func_protos = false; break; case OPT_NO_YY_PUSH_STATE: //buf_strdefine (&userdef_buf, "YY_NO_PUSH_STATE", "1"); buf_m4_define( &m4defs_buf, "M4_YY_NO_PUSH_STATE",0); break; case OPT_NO_YY_POP_STATE: //buf_strdefine (&userdef_buf, "YY_NO_POP_STATE", "1"); buf_m4_define( &m4defs_buf, "M4_YY_NO_POP_STATE",0); break; case OPT_NO_YY_TOP_STATE: //buf_strdefine (&userdef_buf, "YY_NO_TOP_STATE", "1"); buf_m4_define( &m4defs_buf, "M4_YY_NO_TOP_STATE",0); break; case OPT_NO_UNPUT: //buf_strdefine (&userdef_buf, "YY_NO_UNPUT", "1"); buf_m4_define( &m4defs_buf, "M4_YY_NO_UNPUT",0); break; case OPT_NO_YY_SCAN_BUFFER: //buf_strdefine (&userdef_buf, "YY_NO_SCAN_BUFFER", "1"); buf_m4_define( &m4defs_buf, "M4_YY_NO_SCAN_BUFFER",0); break; case OPT_NO_YY_SCAN_BYTES: //buf_strdefine (&userdef_buf, "YY_NO_SCAN_BYTES", "1"); buf_m4_define( &m4defs_buf, "M4_YY_NO_SCAN_BYTES",0); break; case OPT_NO_YY_SCAN_STRING: //buf_strdefine (&userdef_buf, "YY_NO_SCAN_STRING", "1"); buf_m4_define( &m4defs_buf, "M4_YY_NO_SCAN_STRING",0); break; case OPT_NO_YYGET_EXTRA: //buf_strdefine (&userdef_buf, "YY_NO_GET_EXTRA", "1"); buf_m4_define( &m4defs_buf, "M4_YY_NO_GET_EXTRA",0); break; case OPT_NO_YYSET_EXTRA: //buf_strdefine (&userdef_buf, "YY_NO_SET_EXTRA", "1"); buf_m4_define( &m4defs_buf, "M4_YY_NO_SET_EXTRA",0); break; case OPT_NO_YYGET_LENG: //buf_strdefine (&userdef_buf, "YY_NO_GET_LENG", "1"); buf_m4_define( &m4defs_buf, "M4_YY_NO_GET_LENG",0); break; case OPT_NO_YYGET_TEXT: //buf_strdefine (&userdef_buf, "YY_NO_GET_TEXT", "1"); buf_m4_define( &m4defs_buf, "M4_YY_NO_GET_TEXT",0); break; case OPT_NO_YYGET_LINENO: //buf_strdefine (&userdef_buf, "YY_NO_GET_LINENO", "1"); buf_m4_define( &m4defs_buf, "M4_YY_NO_GET_LINENO",0); break; case OPT_NO_YYSET_LINENO: //buf_strdefine (&userdef_buf, "YY_NO_SET_LINENO", "1"); buf_m4_define( &m4defs_buf, "M4_YY_NO_SET_LINENO",0); break; case OPT_NO_YYGET_IN: //buf_strdefine (&userdef_buf, "YY_NO_GET_IN", "1"); buf_m4_define( &m4defs_buf, "M4_YY_NO_GET_IN",0); break; case OPT_NO_YYSET_IN: //buf_strdefine (&userdef_buf, "YY_NO_SET_IN", "1"); buf_m4_define( &m4defs_buf, "M4_YY_NO_SET_IN",0); break; case OPT_NO_YYGET_OUT: //buf_strdefine (&userdef_buf, "YY_NO_GET_OUT", "1"); buf_m4_define( &m4defs_buf, "M4_YY_NO_GET_OUT",0); break; case OPT_NO_YYSET_OUT: //buf_strdefine (&userdef_buf, "YY_NO_SET_OUT", "1"); buf_m4_define( &m4defs_buf, "M4_YY_NO_SET_OUT",0); break; case OPT_NO_YYGET_LVAL: //buf_strdefine (&userdef_buf, "YY_NO_GET_LVAL", "1"); buf_m4_define( &m4defs_buf, "M4_YY_NO_GET_LVAL",0); break; case OPT_NO_YYSET_LVAL: //buf_strdefine (&userdef_buf, "YY_NO_SET_LVAL", "1"); buf_m4_define( &m4defs_buf, "M4_YY_NO_SET_LVAL",0); break; case OPT_NO_YYGET_LLOC: //buf_strdefine (&userdef_buf, "YY_NO_GET_LLOC", "1"); buf_m4_define( &m4defs_buf, "M4_YY_NO_GET_LLOC",0); break; case OPT_NO_YYSET_LLOC: //buf_strdefine (&userdef_buf, "YY_NO_SET_LLOC", "1"); buf_m4_define( &m4defs_buf, "M4_YY_NO_SET_LLOC",0); break; } /* switch */ } /* while scanopt() */ scanopt_destroy (sopt); num_input_files = argc - optind; input_files = argv + optind; set_input_file (num_input_files > 0 ? input_files[0] : NULL); lastccl = lastsc = lastdfa = lastnfa = 0; num_rules = num_eof_rules = default_rule = 0; numas = numsnpairs = tmpuses = 0; numecs = numeps = eps2 = num_reallocs = hshcol = dfaeql = totnst = 0; numuniq = numdup = hshsave = eofseen = datapos = dataline = 0; num_backing_up = onesp = numprots = 0; variable_trailing_context_rules = bol_needed = false; linenum = sectnum = 1; firstprot = NIL; /* Used in mkprot() so that the first proto goes in slot 1 * of the proto queue. */ lastprot = 1; set_up_initial_allocations (); } /* readin - read in the rules section of the input file(s) */ void readin () { static char yy_stdinit[] = "FILE *yyin = stdin, *yyout = stdout;"; static char yy_nostdinit[] = "FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;"; line_directive_out ((FILE *) 0, 1); if (yyparse ()) { pinpoint_message (_("fatal parse error")); flexend (1); } if (syntaxerror) flexend (1); /* If the user explicitly requested posix compatibility by specifing the * posix-compat option, then we check for conflicting options. However, if * the POSIXLY_CORRECT variable is set, then we quietly make flex as * posix-compatible as possible. This is the recommended behavior * according to the GNU Coding Standards. * * Note: The posix option was added to flex to provide the posix behavior * of the repeat operator in regular expressions, e.g., `ab{3}' */ if (posix_compat) { /* TODO: This is where we try to make flex behave according to * posiz, AND check for conflicting options. How far should we go * with this? Should we disable all the neat-o flex features? */ /* Update: Estes says no, since other flex features don't violate posix. */ } if (getenv ("POSIXLY_CORRECT")) { posix_compat = true; } if (backing_up_report) { backing_up_file = fopen (backing_name, "w"); if (backing_up_file == NULL) lerrsf (_ ("could not create backing-up info file %s"), backing_name); } else backing_up_file = NULL; if (yymore_really_used == true) yymore_used = true; else if (yymore_really_used == false) yymore_used = false; if (reject_really_used == true) reject = true; else if (reject_really_used == false) reject = false; if (performance_report > 0) { if (lex_compat) { fprintf (stderr, _ ("-l AT&T lex compatibility option entails a large performance penalty\n")); fprintf (stderr, _ (" and may be the actual source of other reported performance penalties\n")); } else if (do_yylineno) { fprintf (stderr, _ ("%%option yylineno entails a performance penalty ONLY on rules that can match newline characters\n")); } if (performance_report > 1) { if (interactive) fprintf (stderr, _ ("-I (interactive) entails a minor performance penalty\n")); if (yymore_used) fprintf (stderr, _ ("yymore() entails a minor performance penalty\n")); } if (reject) fprintf (stderr, _ ("REJECT entails a large performance penalty\n")); if (variable_trailing_context_rules) fprintf (stderr, _ ("Variable trailing context rules entail a large performance penalty\n")); } if (reject) real_reject = true; if (variable_trailing_context_rules) reject = true; if ((fulltbl || fullspd) && reject) { if (real_reject) flexerror (_ ("REJECT cannot be used with -f or -F")); else if (do_yylineno) flexerror (_ ("%option yylineno cannot be used with REJECT")); else flexerror (_ ("variable trailing context rules cannot be used with -f or -F")); } if (reject){ out_m4_define( "M4_YY_USES_REJECT", NULL); //outn ("\n#define YY_USES_REJECT"); } if (!do_yywrap) { if (!C_plus_plus) if (reentrant) outn ("\n#define yywrap(yyscanner) 1"); else outn ("\n#define yywrap() 1"); outn ("#define YY_SKIP_YYWRAP"); } if (ddebug) outn ("\n#define FLEX_DEBUG"); OUT_BEGIN_CODE (); if (csize == 256) outn ("typedef unsigned char YY_CHAR;"); else outn ("typedef char YY_CHAR;"); OUT_END_CODE (); if (C_plus_plus) { outn ("#define yytext_ptr yytext"); if (interactive) outn ("#define YY_INTERACTIVE"); } else { OUT_BEGIN_CODE (); /* In reentrant scanner, stdinit is handled in flex.skl. */ if (do_stdinit) { if (reentrant){ outn ("#ifdef VMS"); outn ("#ifdef __VMS_POSIX"); outn ("#define YY_STDINIT"); outn ("#endif"); outn ("#else"); outn ("#define YY_STDINIT"); outn ("#endif"); } outn ("#ifdef VMS"); outn ("#ifndef __VMS_POSIX"); outn (yy_nostdinit); outn ("#else"); outn (yy_stdinit); outn ("#endif"); outn ("#else"); outn (yy_stdinit); outn ("#endif"); } else { if(!reentrant) outn (yy_nostdinit); } OUT_END_CODE (); } OUT_BEGIN_CODE (); if (fullspd) outn ("typedef yyconst struct yy_trans_info *yy_state_type;"); else if (!C_plus_plus) outn ("typedef int yy_state_type;"); OUT_END_CODE (); if (lex_compat) outn ("#define YY_FLEX_LEX_COMPAT"); if (!C_plus_plus && !reentrant) { outn ("extern int yylineno;"); OUT_BEGIN_CODE (); outn ("int yylineno = 1;"); OUT_END_CODE (); } if (C_plus_plus) { outn ("\n#include "); if (!do_yywrap) { outn("\nint yyFlexLexer::yywrap() { return 1; }"); } if (yyclass) { outn ("int yyFlexLexer::yylex()"); outn ("\t{"); outn ("\tLexerError( \"yyFlexLexer::yylex invoked but %option yyclass used\" );"); outn ("\treturn 0;"); outn ("\t}"); out_str ("\n#define YY_DECL int %s::yylex()\n", yyclass); } } else { /* Watch out: yytext_ptr is a variable when yytext is an array, * but it's a macro when yytext is a pointer. */ if (yytext_is_array) { if (!reentrant) outn ("extern char yytext[];\n"); } else { if (reentrant) { outn ("#define yytext_ptr yytext_r"); } else { outn ("extern char *yytext;"); outn ("#define yytext_ptr yytext"); } } if (yyclass) flexerror (_ ("%option yyclass only meaningful for C++ scanners")); } if (useecs) numecs = cre8ecs (nextecm, ecgroup, csize); else numecs = csize; /* Now map the equivalence class for NUL to its expected place. */ ecgroup[0] = ecgroup[csize]; NUL_ec = ABS (ecgroup[0]); if (useecs) ccl2ecl (); } /* set_up_initial_allocations - allocate memory for internal tables */ void set_up_initial_allocations () { maximum_mns = (long_align ? MAXIMUM_MNS_LONG : MAXIMUM_MNS); current_mns = INITIAL_MNS; firstst = allocate_integer_array (current_mns); lastst = allocate_integer_array (current_mns); finalst = allocate_integer_array (current_mns); transchar = allocate_integer_array (current_mns); trans1 = allocate_integer_array (current_mns); trans2 = allocate_integer_array (current_mns); accptnum = allocate_integer_array (current_mns); assoc_rule = allocate_integer_array (current_mns); state_type = allocate_integer_array (current_mns); current_max_rules = INITIAL_MAX_RULES; rule_type = allocate_integer_array (current_max_rules); rule_linenum = allocate_integer_array (current_max_rules); rule_useful = allocate_integer_array (current_max_rules); rule_has_nl = allocate_bool_array (current_max_rules); current_max_scs = INITIAL_MAX_SCS; scset = allocate_integer_array (current_max_scs); scbol = allocate_integer_array (current_max_scs); scxclu = allocate_integer_array (current_max_scs); sceof = allocate_integer_array (current_max_scs); scname = allocate_char_ptr_array (current_max_scs); current_maxccls = INITIAL_MAX_CCLS; cclmap = allocate_integer_array (current_maxccls); ccllen = allocate_integer_array (current_maxccls); cclng = allocate_integer_array (current_maxccls); ccl_has_nl = allocate_bool_array (current_maxccls); current_max_ccl_tbl_size = INITIAL_MAX_CCL_TBL_SIZE; ccltbl = allocate_Character_array (current_max_ccl_tbl_size); current_max_dfa_size = INITIAL_MAX_DFA_SIZE; current_max_xpairs = INITIAL_MAX_XPAIRS; nxt = allocate_integer_array (current_max_xpairs); chk = allocate_integer_array (current_max_xpairs); current_max_template_xpairs = INITIAL_MAX_TEMPLATE_XPAIRS; tnxt = allocate_integer_array (current_max_template_xpairs); current_max_dfas = INITIAL_MAX_DFAS; base = allocate_integer_array (current_max_dfas); def = allocate_integer_array (current_max_dfas); dfasiz = allocate_integer_array (current_max_dfas); accsiz = allocate_integer_array (current_max_dfas); dhash = allocate_integer_array (current_max_dfas); dss = allocate_int_ptr_array (current_max_dfas); dfaacc = allocate_dfaacc_union (current_max_dfas); nultrans = (int *) 0; } /* extracts basename from path, optionally stripping the extension "\.*" * (same concept as /bin/sh `basename`, but different handling of extension). */ static char *basename2 (path, strip_ext) char *path; int strip_ext; /* boolean */ { char *b, *e = 0; b = path; for (b = path; *path; path++) if (*path == '/') b = path + 1; else if (*path == '.') e = path; if (strip_ext && e && e > b) *e = '\0'; return b; } void usage () { FILE *f = stdout; if (!did_outfilename) { snprintf (outfile_path, sizeof(outfile_path), outfile_template, prefix, C_plus_plus ? "cc" : "c"); outfilename = outfile_path; } fprintf (f, _("Usage: %s [OPTIONS] [FILE]...\n"), program_name); fprintf (f, _ ("Generates programs that perform pattern-matching on text.\n" "\n" "Table Compression:\n" " -Ca, --align trade off larger tables for better memory alignment\n" " -Ce, --ecs construct equivalence classes\n" " -Cf do not compress tables; use -f representation\n" " -CF do not compress tables; use -F representation\n" " -Cm, --meta-ecs construct meta-equivalence classes\n" " -Cr, --read use read() instead of stdio for scanner input\n" " -f, --full generate fast, large scanner. Same as -Cfr\n" " -F, --fast use alternate table representation. Same as -CFr\n" " -Cem default compression (same as --ecs --meta-ecs)\n" "\n" "Debugging:\n" " -d, --debug enable debug mode in scanner\n" " -b, --backup write backing-up information to %s\n" " -p, --perf-report write performance report to stderr\n" " -s, --nodefault suppress default rule to ECHO unmatched text\n" " -T, --trace %s should run in trace mode\n" " -w, --nowarn do not generate warnings\n" " -v, --verbose write summary of scanner statistics to stdout\n" "\n" "Files:\n" " -o, --outfile=FILE specify output filename\n" " -S, --skel=FILE specify skeleton file\n" " -t, --stdout write scanner on stdout instead of %s\n" " --yyclass=NAME name of C++ class\n" " --header-file=FILE create a C header file in addition to the scanner\n" " --tables-file[=FILE] write tables to FILE\n" "\n" "Scanner behavior:\n" " -7, --7bit generate 7-bit scanner\n" " -8, --8bit generate 8-bit scanner\n" " -B, --batch generate batch scanner (opposite of -I)\n" " -i, --case-insensitive ignore case in patterns\n" " -l, --lex-compat maximal compatibility with original lex\n" " -X, --posix-compat maximal compatibility with POSIX lex\n" " -I, --interactive generate interactive scanner (opposite of -B)\n" " --yylineno track line count in yylineno\n" "\n" "Generated code:\n" " -+, --c++ generate C++ scanner class\n" " -Dmacro[=defn] #define macro defn (default defn is '1')\n" " -L, --noline suppress #line directives in scanner\n" " -P, --prefix=STRING use STRING as prefix instead of \"yy\"\n" " -R, --reentrant generate a reentrant C scanner\n" " --bison-bridge scanner for bison pure parser.\n" " --bison-locations include yylloc support.\n" " --stdinit initialize yyin/yyout to stdin/stdout\n" " --noansi-definitions old-style function definitions\n" " --noansi-prototypes empty parameter list in prototypes\n" " --nounistd do not include \n" " --noFUNCTION do not generate a particular FUNCTION\n" "\n" "Miscellaneous:\n" " -c do-nothing POSIX option\n" " -n do-nothing POSIX option\n" " -?\n" " -h, --help produce this help message\n" " -V, --version report %s version\n"), backing_name, program_name, outfile_path, program_name); } flex-2.5.39/conf.in0000644000175000017500000001355612314621557014317 0ustar srivastasrivasta/* conf.in. Generated from configure.ac by autoheader. */ /* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP systems. This function is required for `alloca.c' support on those systems. */ #undef CRAY_STACKSEG_END /* Define to 1 if using `alloca.c'. */ #undef C_ALLOCA /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS /* Define to 1 if you have `alloca', as a function or macro. */ #undef HAVE_ALLOCA /* Define to 1 if you have and it should be used (not on Ultrix). */ #undef HAVE_ALLOCA_H /* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework. */ #undef HAVE_CFLOCALECOPYCURRENT /* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework. */ #undef HAVE_CFPREFERENCESCOPYAPPVALUE /* Define if the GNU dcgettext() function is already present or preinstalled. */ #undef HAVE_DCGETTEXT /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the `dup2' function. */ #undef HAVE_DUP2 /* Define to 1 if you have the `fork' function. */ #undef HAVE_FORK /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT /* Define if you have the iconv() function and it works. */ #undef HAVE_ICONV /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the `isascii' function. */ #undef HAVE_ISASCII /* Define to 1 if you have the header file. */ #undef HAVE_LIBINTL_H /* Define to 1 if you have the `m' library (-lm). */ #undef HAVE_LIBM /* pthread library */ #undef HAVE_LIBPTHREAD /* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H /* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H /* Define to 1 if your system has a GNU libc compatible `malloc' function, and to 0 otherwise. */ #undef HAVE_MALLOC /* Define to 1 if you have the header file. */ #undef HAVE_MALLOC_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the `memset' function. */ #undef HAVE_MEMSET /* Define to 1 if you have the header file. */ #undef HAVE_NETINET_IN_H /* Define to 1 if you have the `pow' function. */ #undef HAVE_POW /* Define to 1 if you have the header file. */ #undef HAVE_PTHREAD_H /* Define to 1 if your system has a GNU libc compatible `realloc' function, and to 0 otherwise. */ #undef HAVE_REALLOC /* Define to 1 if you have the `regcomp' function. */ #undef HAVE_REGCOMP /* Define to 1 if you have the header file. */ #undef HAVE_REGEX_H /* Define to 1 if you have the `setlocale' function. */ #undef HAVE_SETLOCALE /* Define to 1 if stdbool.h conforms to C99. */ #undef HAVE_STDBOOL_H /* Define to 1 if you have the header file. */ #undef HAVE_STDDEF_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the `strchr' function. */ #undef HAVE_STRCHR /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strtol' function. */ #undef HAVE_STRTOL /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have that is POSIX.1 compatible. */ #undef HAVE_SYS_WAIT_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if you have the `vfork' function. */ #undef HAVE_VFORK /* Define to 1 if you have the header file. */ #undef HAVE_VFORK_H /* Define to 1 if `fork' works. */ #undef HAVE_WORKING_FORK /* Define to 1 if `vfork' works. */ #undef HAVE_WORKING_VFORK /* Define to 1 if the system has the type `_Bool'. */ #undef HAVE__BOOL /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Define to the m4 executable name. */ #undef M4 /* Define to 1 if your C compiler doesn't accept -c and -o together. */ #undef NO_MINUS_C_MINUS_O /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at runtime. STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION = 0 => direction of growth unknown */ #undef STACK_DIRECTION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION /* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a `char[]'. */ #undef YYTEXT_POINTER /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define to rpl_malloc if the replacement function should be used. */ #undef malloc /* Define to `int' if does not define. */ #undef pid_t /* Define to rpl_realloc if the replacement function should be used. */ #undef realloc /* Define to `unsigned int' if does not define. */ #undef size_t /* Define as `fork' if `vfork' does not work. */ #undef vfork flex-2.5.39/dfa.c0000644000175000017500000006530012314546064013731 0ustar srivastasrivasta/* dfa - DFA construction routines */ /* Copyright (c) 1990 The Regents of the University of California. */ /* All rights reserved. */ /* This code is derived from software contributed to Berkeley by */ /* Vern Paxson. */ /* The United States Government has rights in this work pursuant */ /* to contract no. DE-AC03-76SF00098 between the United States */ /* Department of Energy and the University of California. */ /* Redistribution and use in source and binary forms, with or without */ /* modification, are permitted provided that the following conditions */ /* are met: */ /* 1. Redistributions of source code must retain the above copyright */ /* notice, this list of conditions and the following disclaimer. */ /* 2. Redistributions in binary form must reproduce the above copyright */ /* notice, this list of conditions and the following disclaimer in the */ /* documentation and/or other materials provided with the distribution. */ /* Neither the name of the University nor the names of its contributors */ /* may be used to endorse or promote products derived from this software */ /* without specific prior written permission. */ /* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR */ /* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED */ /* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */ /* PURPOSE. */ #include "flexdef.h" #include "tables.h" /* declare functions that have forward references */ void dump_associated_rules PROTO ((FILE *, int)); void dump_transitions PROTO ((FILE *, int[])); void sympartition PROTO ((int[], int, int[], int[])); int symfollowset PROTO ((int[], int, int, int[])); /* check_for_backing_up - check a DFA state for backing up * * synopsis * void check_for_backing_up( int ds, int state[numecs] ); * * ds is the number of the state to check and state[] is its out-transitions, * indexed by equivalence class. */ void check_for_backing_up (ds, state) int ds; int state[]; { if ((reject && !dfaacc[ds].dfaacc_set) || (!reject && !dfaacc[ds].dfaacc_state)) { /* state is non-accepting */ ++num_backing_up; if (backing_up_report) { fprintf (backing_up_file, _("State #%d is non-accepting -\n"), ds); /* identify the state */ dump_associated_rules (backing_up_file, ds); /* Now identify it further using the out- and * jam-transitions. */ dump_transitions (backing_up_file, state); putc ('\n', backing_up_file); } } } /* check_trailing_context - check to see if NFA state set constitutes * "dangerous" trailing context * * synopsis * void check_trailing_context( int nfa_states[num_states+1], int num_states, * int accset[nacc+1], int nacc ); * * NOTES * Trailing context is "dangerous" if both the head and the trailing * part are of variable size \and/ there's a DFA state which contains * both an accepting state for the head part of the rule and NFA states * which occur after the beginning of the trailing context. * * When such a rule is matched, it's impossible to tell if having been * in the DFA state indicates the beginning of the trailing context or * further-along scanning of the pattern. In these cases, a warning * message is issued. * * nfa_states[1 .. num_states] is the list of NFA states in the DFA. * accset[1 .. nacc] is the list of accepting numbers for the DFA state. */ void check_trailing_context (nfa_states, num_states, accset, nacc) int *nfa_states, num_states; int *accset; int nacc; { register int i, j; for (i = 1; i <= num_states; ++i) { int ns = nfa_states[i]; register int type = state_type[ns]; register int ar = assoc_rule[ns]; if (type == STATE_NORMAL || rule_type[ar] != RULE_VARIABLE) { /* do nothing */ } else if (type == STATE_TRAILING_CONTEXT) { /* Potential trouble. Scan set of accepting numbers * for the one marking the end of the "head". We * assume that this looping will be fairly cheap * since it's rare that an accepting number set * is large. */ for (j = 1; j <= nacc; ++j) if (accset[j] & YY_TRAILING_HEAD_MASK) { line_warning (_ ("dangerous trailing context"), rule_linenum[ar]); return; } } } } /* dump_associated_rules - list the rules associated with a DFA state * * Goes through the set of NFA states associated with the DFA and * extracts the first MAX_ASSOC_RULES unique rules, sorts them, * and writes a report to the given file. */ void dump_associated_rules (file, ds) FILE *file; int ds; { register int i, j; register int num_associated_rules = 0; int rule_set[MAX_ASSOC_RULES + 1]; int *dset = dss[ds]; int size = dfasiz[ds]; for (i = 1; i <= size; ++i) { register int rule_num = rule_linenum[assoc_rule[dset[i]]]; for (j = 1; j <= num_associated_rules; ++j) if (rule_num == rule_set[j]) break; if (j > num_associated_rules) { /* new rule */ if (num_associated_rules < MAX_ASSOC_RULES) rule_set[++num_associated_rules] = rule_num; } } qsort (&rule_set [1], num_associated_rules, sizeof (rule_set [1]), intcmp); fprintf (file, _(" associated rule line numbers:")); for (i = 1; i <= num_associated_rules; ++i) { if (i % 8 == 1) putc ('\n', file); fprintf (file, "\t%d", rule_set[i]); } putc ('\n', file); } /* dump_transitions - list the transitions associated with a DFA state * * synopsis * dump_transitions( FILE *file, int state[numecs] ); * * Goes through the set of out-transitions and lists them in human-readable * form (i.e., not as equivalence classes); also lists jam transitions * (i.e., all those which are not out-transitions, plus EOF). The dump * is done to the given file. */ void dump_transitions (file, state) FILE *file; int state[]; { register int i, ec; int out_char_set[CSIZE]; for (i = 0; i < csize; ++i) { ec = ABS (ecgroup[i]); out_char_set[i] = state[ec]; } fprintf (file, _(" out-transitions: ")); list_character_set (file, out_char_set); /* now invert the members of the set to get the jam transitions */ for (i = 0; i < csize; ++i) out_char_set[i] = !out_char_set[i]; fprintf (file, _("\n jam-transitions: EOF ")); list_character_set (file, out_char_set); putc ('\n', file); } /* epsclosure - construct the epsilon closure of a set of ndfa states * * synopsis * int *epsclosure( int t[num_states], int *numstates_addr, * int accset[num_rules+1], int *nacc_addr, * int *hashval_addr ); * * NOTES * The epsilon closure is the set of all states reachable by an arbitrary * number of epsilon transitions, which themselves do not have epsilon * transitions going out, unioned with the set of states which have non-null * accepting numbers. t is an array of size numstates of nfa state numbers. * Upon return, t holds the epsilon closure and *numstates_addr is updated. * accset holds a list of the accepting numbers, and the size of accset is * given by *nacc_addr. t may be subjected to reallocation if it is not * large enough to hold the epsilon closure. * * hashval is the hash value for the dfa corresponding to the state set. */ int *epsclosure (t, ns_addr, accset, nacc_addr, hv_addr) int *t, *ns_addr, accset[], *nacc_addr, *hv_addr; { register int stkpos, ns, tsp; int numstates = *ns_addr, nacc, hashval, transsym, nfaccnum; int stkend, nstate; static int did_stk_init = false, *stk; #define MARK_STATE(state) \ do{ trans1[state] = trans1[state] - MARKER_DIFFERENCE;} while(0) #define IS_MARKED(state) (trans1[state] < 0) #define UNMARK_STATE(state) \ do{ trans1[state] = trans1[state] + MARKER_DIFFERENCE;} while(0) #define CHECK_ACCEPT(state) \ do{ \ nfaccnum = accptnum[state]; \ if ( nfaccnum != NIL ) \ accset[++nacc] = nfaccnum; \ }while(0) #define DO_REALLOCATION() \ do { \ current_max_dfa_size += MAX_DFA_SIZE_INCREMENT; \ ++num_reallocs; \ t = reallocate_integer_array( t, current_max_dfa_size ); \ stk = reallocate_integer_array( stk, current_max_dfa_size ); \ }while(0) \ #define PUT_ON_STACK(state) \ do { \ if ( ++stkend >= current_max_dfa_size ) \ DO_REALLOCATION(); \ stk[stkend] = state; \ MARK_STATE(state); \ }while(0) #define ADD_STATE(state) \ do { \ if ( ++numstates >= current_max_dfa_size ) \ DO_REALLOCATION(); \ t[numstates] = state; \ hashval += state; \ }while(0) #define STACK_STATE(state) \ do { \ PUT_ON_STACK(state); \ CHECK_ACCEPT(state); \ if ( nfaccnum != NIL || transchar[state] != SYM_EPSILON ) \ ADD_STATE(state); \ }while(0) if (!did_stk_init) { stk = allocate_integer_array (current_max_dfa_size); did_stk_init = true; } nacc = stkend = hashval = 0; for (nstate = 1; nstate <= numstates; ++nstate) { ns = t[nstate]; /* The state could be marked if we've already pushed it onto * the stack. */ if (!IS_MARKED (ns)) { PUT_ON_STACK (ns); CHECK_ACCEPT (ns); hashval += ns; } } for (stkpos = 1; stkpos <= stkend; ++stkpos) { ns = stk[stkpos]; transsym = transchar[ns]; if (transsym == SYM_EPSILON) { tsp = trans1[ns] + MARKER_DIFFERENCE; if (tsp != NO_TRANSITION) { if (!IS_MARKED (tsp)) STACK_STATE (tsp); tsp = trans2[ns]; if (tsp != NO_TRANSITION && !IS_MARKED (tsp)) STACK_STATE (tsp); } } } /* Clear out "visit" markers. */ for (stkpos = 1; stkpos <= stkend; ++stkpos) { if (IS_MARKED (stk[stkpos])) UNMARK_STATE (stk[stkpos]); else flexfatal (_ ("consistency check failed in epsclosure()")); } *ns_addr = numstates; *hv_addr = hashval; *nacc_addr = nacc; return t; } /* increase_max_dfas - increase the maximum number of DFAs */ void increase_max_dfas () { current_max_dfas += MAX_DFAS_INCREMENT; ++num_reallocs; base = reallocate_integer_array (base, current_max_dfas); def = reallocate_integer_array (def, current_max_dfas); dfasiz = reallocate_integer_array (dfasiz, current_max_dfas); accsiz = reallocate_integer_array (accsiz, current_max_dfas); dhash = reallocate_integer_array (dhash, current_max_dfas); dss = reallocate_int_ptr_array (dss, current_max_dfas); dfaacc = reallocate_dfaacc_union (dfaacc, current_max_dfas); if (nultrans) nultrans = reallocate_integer_array (nultrans, current_max_dfas); } /* ntod - convert an ndfa to a dfa * * Creates the dfa corresponding to the ndfa we've constructed. The * dfa starts out in state #1. */ void ntod () { int *accset, ds, nacc, newds; int sym, hashval, numstates, dsize; int num_full_table_rows=0; /* used only for -f */ int *nset, *dset; int targptr, totaltrans, i, comstate, comfreq, targ; int symlist[CSIZE + 1]; int num_start_states; int todo_head, todo_next; struct yytbl_data *yynxt_tbl = 0; flex_int32_t *yynxt_data = 0, yynxt_curr = 0; /* Note that the following are indexed by *equivalence classes* * and not by characters. Since equivalence classes are indexed * beginning with 1, even if the scanner accepts NUL's, this * means that (since every character is potentially in its own * equivalence class) these arrays must have room for indices * from 1 to CSIZE, so their size must be CSIZE + 1. */ int duplist[CSIZE + 1], state[CSIZE + 1]; int targfreq[CSIZE + 1], targstate[CSIZE + 1]; /* accset needs to be large enough to hold all of the rules present * in the input, *plus* their YY_TRAILING_HEAD_MASK variants. */ accset = allocate_integer_array ((num_rules + 1) * 2); nset = allocate_integer_array (current_max_dfa_size); /* The "todo" queue is represented by the head, which is the DFA * state currently being processed, and the "next", which is the * next DFA state number available (not in use). We depend on the * fact that snstods() returns DFA's \in increasing order/, and thus * need only know the bounds of the dfas to be processed. */ todo_head = todo_next = 0; for (i = 0; i <= csize; ++i) { duplist[i] = NIL; symlist[i] = false; } for (i = 0; i <= num_rules; ++i) accset[i] = NIL; if (trace) { dumpnfa (scset[1]); fputs (_("\n\nDFA Dump:\n\n"), stderr); } inittbl (); /* Check to see whether we should build a separate table for * transitions on NUL characters. We don't do this for full-speed * (-F) scanners, since for them we don't have a simple state * number lying around with which to index the table. We also * don't bother doing it for scanners unless (1) NUL is in its own * equivalence class (indicated by a positive value of * ecgroup[NUL]), (2) NUL's equivalence class is the last * equivalence class, and (3) the number of equivalence classes is * the same as the number of characters. This latter case comes * about when useecs is false or when it's true but every character * still manages to land in its own class (unlikely, but it's * cheap to check for). If all these things are true then the * character code needed to represent NUL's equivalence class for * indexing the tables is going to take one more bit than the * number of characters, and therefore we won't be assured of * being able to fit it into a YY_CHAR variable. This rules out * storing the transitions in a compressed table, since the code * for interpreting them uses a YY_CHAR variable (perhaps it * should just use an integer, though; this is worth pondering ... * ###). * * Finally, for full tables, we want the number of entries in the * table to be a power of two so the array references go fast (it * will just take a shift to compute the major index). If * encoding NUL's transitions in the table will spoil this, we * give it its own table (note that this will be the case if we're * not using equivalence classes). */ /* Note that the test for ecgroup[0] == numecs below accomplishes * both (1) and (2) above */ if (!fullspd && ecgroup[0] == numecs) { /* NUL is alone in its equivalence class, which is the * last one. */ int use_NUL_table = (numecs == csize); if (fulltbl && !use_NUL_table) { /* We still may want to use the table if numecs * is a power of 2. */ int power_of_two; for (power_of_two = 1; power_of_two <= csize; power_of_two *= 2) if (numecs == power_of_two) { use_NUL_table = true; break; } } if (use_NUL_table) nultrans = allocate_integer_array (current_max_dfas); /* From now on, nultrans != nil indicates that we're * saving null transitions for later, separate encoding. */ } if (fullspd) { for (i = 0; i <= numecs; ++i) state[i] = 0; place_state (state, 0, 0); dfaacc[0].dfaacc_state = 0; } else if (fulltbl) { if (nultrans) /* We won't be including NUL's transitions in the * table, so build it for entries from 0 .. numecs - 1. */ num_full_table_rows = numecs; else /* Take into account the fact that we'll be including * the NUL entries in the transition table. Build it * from 0 .. numecs. */ num_full_table_rows = numecs + 1; /* Begin generating yy_nxt[][] * This spans the entire LONG function. * This table is tricky because we don't know how big it will be. * So we'll have to realloc() on the way... * we'll wait until we can calculate yynxt_tbl->td_hilen. */ yynxt_tbl = (struct yytbl_data *) calloc (1, sizeof (struct yytbl_data)); yytbl_data_init (yynxt_tbl, YYTD_ID_NXT); yynxt_tbl->td_hilen = 1; yynxt_tbl->td_lolen = num_full_table_rows; yynxt_tbl->td_data = yynxt_data = (flex_int32_t *) calloc (yynxt_tbl->td_lolen * yynxt_tbl->td_hilen, sizeof (flex_int32_t)); yynxt_curr = 0; buf_prints (&yydmap_buf, "\t{YYTD_ID_NXT, (void**)&yy_nxt, sizeof(%s)},\n", long_align ? "flex_int32_t" : "flex_int16_t"); /* Unless -Ca, declare it "short" because it's a real * long-shot that that won't be large enough. */ if (gentables) out_str_dec ("static yyconst %s yy_nxt[][%d] =\n {\n", long_align ? "flex_int32_t" : "flex_int16_t", num_full_table_rows); else { out_dec ("#undef YY_NXT_LOLEN\n#define YY_NXT_LOLEN (%d)\n", num_full_table_rows); out_str ("static yyconst %s *yy_nxt =0;\n", long_align ? "flex_int32_t" : "flex_int16_t"); } if (gentables) outn (" {"); /* Generate 0 entries for state #0. */ for (i = 0; i < num_full_table_rows; ++i) { mk2data (0); yynxt_data[yynxt_curr++] = 0; } dataflush (); if (gentables) outn (" },\n"); } /* Create the first states. */ num_start_states = lastsc * 2; for (i = 1; i <= num_start_states; ++i) { numstates = 1; /* For each start condition, make one state for the case when * we're at the beginning of the line (the '^' operator) and * one for the case when we're not. */ if (i % 2 == 1) nset[numstates] = scset[(i / 2) + 1]; else nset[numstates] = mkbranch (scbol[i / 2], scset[i / 2]); nset = epsclosure (nset, &numstates, accset, &nacc, &hashval); if (snstods (nset, numstates, accset, nacc, hashval, &ds)) { numas += nacc; totnst += numstates; ++todo_next; if (variable_trailing_context_rules && nacc > 0) check_trailing_context (nset, numstates, accset, nacc); } } if (!fullspd) { if (!snstods (nset, 0, accset, 0, 0, &end_of_buffer_state)) flexfatal (_ ("could not create unique end-of-buffer state")); ++numas; ++num_start_states; ++todo_next; } while (todo_head < todo_next) { targptr = 0; totaltrans = 0; for (i = 1; i <= numecs; ++i) state[i] = 0; ds = ++todo_head; dset = dss[ds]; dsize = dfasiz[ds]; if (trace) fprintf (stderr, _("state # %d:\n"), ds); sympartition (dset, dsize, symlist, duplist); for (sym = 1; sym <= numecs; ++sym) { if (symlist[sym]) { symlist[sym] = 0; if (duplist[sym] == NIL) { /* Symbol has unique out-transitions. */ numstates = symfollowset (dset, dsize, sym, nset); nset = epsclosure (nset, &numstates, accset, &nacc, &hashval); if (snstods (nset, numstates, accset, nacc, hashval, &newds)) { totnst = totnst + numstates; ++todo_next; numas += nacc; if (variable_trailing_context_rules && nacc > 0) check_trailing_context (nset, numstates, accset, nacc); } state[sym] = newds; if (trace) fprintf (stderr, "\t%d\t%d\n", sym, newds); targfreq[++targptr] = 1; targstate[targptr] = newds; ++numuniq; } else { /* sym's equivalence class has the same * transitions as duplist(sym)'s * equivalence class. */ targ = state[duplist[sym]]; state[sym] = targ; if (trace) fprintf (stderr, "\t%d\t%d\n", sym, targ); /* Update frequency count for * destination state. */ i = 0; while (targstate[++i] != targ) ; ++targfreq[i]; ++numdup; } ++totaltrans; duplist[sym] = NIL; } } numsnpairs += totaltrans; if (ds > num_start_states) check_for_backing_up (ds, state); if (nultrans) { nultrans[ds] = state[NUL_ec]; state[NUL_ec] = 0; /* remove transition */ } if (fulltbl) { /* Each time we hit here, it's another td_hilen, so we realloc. */ yynxt_tbl->td_hilen++; yynxt_tbl->td_data = yynxt_data = (flex_int32_t *) realloc (yynxt_data, yynxt_tbl->td_hilen * yynxt_tbl->td_lolen * sizeof (flex_int32_t)); if (gentables) outn (" {"); /* Supply array's 0-element. */ if (ds == end_of_buffer_state) { mk2data (-end_of_buffer_state); yynxt_data[yynxt_curr++] = -end_of_buffer_state; } else { mk2data (end_of_buffer_state); yynxt_data[yynxt_curr++] = end_of_buffer_state; } for (i = 1; i < num_full_table_rows; ++i) { /* Jams are marked by negative of state * number. */ mk2data (state[i] ? state[i] : -ds); yynxt_data[yynxt_curr++] = state[i] ? state[i] : -ds; } dataflush (); if (gentables) outn (" },\n"); } else if (fullspd) place_state (state, ds, totaltrans); else if (ds == end_of_buffer_state) /* Special case this state to make sure it does what * it's supposed to, i.e., jam on end-of-buffer. */ stack1 (ds, 0, 0, JAMSTATE); else { /* normal, compressed state */ /* Determine which destination state is the most * common, and how many transitions to it there are. */ comfreq = 0; comstate = 0; for (i = 1; i <= targptr; ++i) if (targfreq[i] > comfreq) { comfreq = targfreq[i]; comstate = targstate[i]; } bldtbl (state, ds, totaltrans, comstate, comfreq); } } if (fulltbl) { dataend (); if (tablesext) { yytbl_data_compress (yynxt_tbl); if (yytbl_data_fwrite (&tableswr, yynxt_tbl) < 0) flexerror (_ ("Could not write yynxt_tbl[][]")); } if (yynxt_tbl) { yytbl_data_destroy (yynxt_tbl); yynxt_tbl = 0; } } else if (!fullspd) { cmptmps (); /* create compressed template entries */ /* Create tables for all the states with only one * out-transition. */ while (onesp > 0) { mk1tbl (onestate[onesp], onesym[onesp], onenext[onesp], onedef[onesp]); --onesp; } mkdeftbl (); } flex_free ((void *) accset); flex_free ((void *) nset); } /* snstods - converts a set of ndfa states into a dfa state * * synopsis * is_new_state = snstods( int sns[numstates], int numstates, * int accset[num_rules+1], int nacc, * int hashval, int *newds_addr ); * * On return, the dfa state number is in newds. */ int snstods (sns, numstates, accset, nacc, hashval, newds_addr) int sns[], numstates, accset[], nacc, hashval, *newds_addr; { int didsort = 0; register int i, j; int newds, *oldsns; for (i = 1; i <= lastdfa; ++i) if (hashval == dhash[i]) { if (numstates == dfasiz[i]) { oldsns = dss[i]; if (!didsort) { /* We sort the states in sns so we * can compare it to oldsns quickly. */ qsort (&sns [1], numstates, sizeof (sns [1]), intcmp); didsort = 1; } for (j = 1; j <= numstates; ++j) if (sns[j] != oldsns[j]) break; if (j > numstates) { ++dfaeql; *newds_addr = i; return 0; } ++hshcol; } else ++hshsave; } /* Make a new dfa. */ if (++lastdfa >= current_max_dfas) increase_max_dfas (); newds = lastdfa; dss[newds] = allocate_integer_array (numstates + 1); /* If we haven't already sorted the states in sns, we do so now, * so that future comparisons with it can be made quickly. */ if (!didsort) qsort (&sns [1], numstates, sizeof (sns [1]), intcmp); for (i = 1; i <= numstates; ++i) dss[newds][i] = sns[i]; dfasiz[newds] = numstates; dhash[newds] = hashval; if (nacc == 0) { if (reject) dfaacc[newds].dfaacc_set = (int *) 0; else dfaacc[newds].dfaacc_state = 0; accsiz[newds] = 0; } else if (reject) { /* We sort the accepting set in increasing order so the * disambiguating rule that the first rule listed is considered * match in the event of ties will work. */ qsort (&accset [1], nacc, sizeof (accset [1]), intcmp); dfaacc[newds].dfaacc_set = allocate_integer_array (nacc + 1); /* Save the accepting set for later */ for (i = 1; i <= nacc; ++i) { dfaacc[newds].dfaacc_set[i] = accset[i]; if (accset[i] <= num_rules) /* Who knows, perhaps a REJECT can yield * this rule. */ rule_useful[accset[i]] = true; } accsiz[newds] = nacc; } else { /* Find lowest numbered rule so the disambiguating rule * will work. */ j = num_rules + 1; for (i = 1; i <= nacc; ++i) if (accset[i] < j) j = accset[i]; dfaacc[newds].dfaacc_state = j; if (j <= num_rules) rule_useful[j] = true; } *newds_addr = newds; return 1; } /* symfollowset - follow the symbol transitions one step * * synopsis * numstates = symfollowset( int ds[current_max_dfa_size], int dsize, * int transsym, int nset[current_max_dfa_size] ); */ int symfollowset (ds, dsize, transsym, nset) int ds[], dsize, transsym, nset[]; { int ns, tsp, sym, i, j, lenccl, ch, numstates, ccllist; numstates = 0; for (i = 1; i <= dsize; ++i) { /* for each nfa state ns in the state set of ds */ ns = ds[i]; sym = transchar[ns]; tsp = trans1[ns]; if (sym < 0) { /* it's a character class */ sym = -sym; ccllist = cclmap[sym]; lenccl = ccllen[sym]; if (cclng[sym]) { for (j = 0; j < lenccl; ++j) { /* Loop through negated character * class. */ ch = ccltbl[ccllist + j]; if (ch == 0) ch = NUL_ec; if (ch > transsym) /* Transsym isn't in negated * ccl. */ break; else if (ch == transsym) /* next 2 */ goto bottom; } /* Didn't find transsym in ccl. */ nset[++numstates] = tsp; } else for (j = 0; j < lenccl; ++j) { ch = ccltbl[ccllist + j]; if (ch == 0) ch = NUL_ec; if (ch > transsym) break; else if (ch == transsym) { nset[++numstates] = tsp; break; } } } else if (sym == SYM_EPSILON) { /* do nothing */ } else if (ABS (ecgroup[sym]) == transsym) nset[++numstates] = tsp; bottom:; } return numstates; } /* sympartition - partition characters with same out-transitions * * synopsis * sympartition( int ds[current_max_dfa_size], int numstates, * int symlist[numecs], int duplist[numecs] ); */ void sympartition (ds, numstates, symlist, duplist) int ds[], numstates; int symlist[], duplist[]; { int tch, i, j, k, ns, dupfwd[CSIZE + 1], lenccl, cclp, ich; /* Partitioning is done by creating equivalence classes for those * characters which have out-transitions from the given state. Thus * we are really creating equivalence classes of equivalence classes. */ for (i = 1; i <= numecs; ++i) { /* initialize equivalence class list */ duplist[i] = i - 1; dupfwd[i] = i + 1; } duplist[1] = NIL; dupfwd[numecs] = NIL; for (i = 1; i <= numstates; ++i) { ns = ds[i]; tch = transchar[ns]; if (tch != SYM_EPSILON) { if (tch < -lastccl || tch >= csize) { flexfatal (_ ("bad transition character detected in sympartition()")); } if (tch >= 0) { /* character transition */ int ec = ecgroup[tch]; mkechar (ec, dupfwd, duplist); symlist[ec] = 1; } else { /* character class */ tch = -tch; lenccl = ccllen[tch]; cclp = cclmap[tch]; mkeccl (ccltbl + cclp, lenccl, dupfwd, duplist, numecs, NUL_ec); if (cclng[tch]) { j = 0; for (k = 0; k < lenccl; ++k) { ich = ccltbl[cclp + k]; if (ich == 0) ich = NUL_ec; for (++j; j < ich; ++j) symlist[j] = 1; } for (++j; j <= numecs; ++j) symlist[j] = 1; } else for (k = 0; k < lenccl; ++k) { ich = ccltbl[cclp + k]; if (ich == 0) ich = NUL_ec; symlist[ich] = 1; } } } } } flex-2.5.39/autogen.sh0000755000175000017500000000237012060131411015012 0ustar srivastasrivasta#!/bin/sh # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. # If you see no configure script, then run ./autogen.sh to create it # and procede with the "normal" build procedures. #if we pretend to have a ChangeLog, then automake is less #worried. (Don't worry, we *do* have a ChangeLog, we just need the #Makefile first.) touch ChangeLog autoreconf --install --verbose --force flex-2.5.39/mkskel.sh0000755000175000017500000000215312314546064014655 0ustar srivastasrivasta#! /bin/sh # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. cat <. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . case "$1" in '') echo "$0: No files given. Try \`$0 --help' for more information." 1>&2 exit 1 ;; --basedir) basedir=$2 shift 2 ;; -h|--h*) cat <<\EOF Usage: ylwrap [--help|--version] INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]... Wrapper for lex/yacc invocations, renaming files as desired. INPUT is the input file OUTPUT is one file PROG generates DESIRED is the file we actually want instead of OUTPUT PROGRAM is program to run ARGS are passed to PROG Any number of OUTPUT,DESIRED pairs may be used. Report bugs to . EOF exit $? ;; -v|--v*) echo "ylwrap $scriptversion" exit $? ;; esac # The input. input="$1" shift case "$input" in [\\/]* | ?:[\\/]*) # Absolute path; do nothing. ;; *) # Relative path. Make it absolute. input="`pwd`/$input" ;; esac pairlist= while test "$#" -ne 0; do if test "$1" = "--"; then shift break fi pairlist="$pairlist $1" shift done # The program to run. prog="$1" shift # Make any relative path in $prog absolute. case "$prog" in [\\/]* | ?:[\\/]*) ;; *[\\/]*) prog="`pwd`/$prog" ;; esac # FIXME: add hostname here for parallel makes that run commands on # other machines. But that might take us over the 14-char limit. dirname=ylwrap$$ do_exit="cd '`pwd`' && rm -rf $dirname > /dev/null 2>&1;"' (exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 mkdir $dirname || exit 1 cd $dirname case $# in 0) "$prog" "$input" ;; *) "$prog" "$@" "$input" ;; esac ret=$? if test $ret -eq 0; then set X $pairlist shift first=yes # Since DOS filename conventions don't allow two dots, # the DOS version of Bison writes out y_tab.c instead of y.tab.c # and y_tab.h instead of y.tab.h. Test to see if this is the case. y_tab_nodot="no" if test -f y_tab.c || test -f y_tab.h; then y_tab_nodot="yes" fi # The directory holding the input. input_dir=`echo "$input" | sed -e 's,\([\\/]\)[^\\/]*$,\1,'` # Quote $INPUT_DIR so we can use it in a regexp. # FIXME: really we should care about more than `.' and `\'. input_rx=`echo "$input_dir" | sed 's,\\\\,\\\\\\\\,g;s,\\.,\\\\.,g'` while test "$#" -ne 0; do from="$1" # Handle y_tab.c and y_tab.h output by DOS if test $y_tab_nodot = "yes"; then if test $from = "y.tab.c"; then from="y_tab.c" else if test $from = "y.tab.h"; then from="y_tab.h" fi fi fi if test -f "$from"; then # If $2 is an absolute path name, then just use that, # otherwise prepend `../'. case "$2" in [\\/]* | ?:[\\/]*) target="$2";; *) target="../$2";; esac # We do not want to overwrite a header file if it hasn't # changed. This avoid useless recompilations. However the # parser itself (the first file) should always be updated, # because it is the destination of the .y.c rule in the # Makefile. Divert the output of all other files to a temporary # file so we can compare them to existing versions. if test $first = no; then realtarget="$target" target="tmp-`echo $target | sed s/.*[\\/]//g`" fi # Edit out `#line' or `#' directives. # # We don't want the resulting debug information to point at # an absolute srcdir; it is better for it to just mention the # .y file with no path. # # We want to use the real output file name, not yy.lex.c for # instance. # # We want the include guards to be adjusted too. FROM=`echo "$from" | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'` TARGET=`echo "$2" | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'` sed -e "/^#/!b" -e "s,$input_rx,," -e "s,$from,$2," \ -e "s,$FROM,$TARGET," "$from" >"$target" || ret=$? # Check whether header files must be updated. if test $first = no; then if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then echo "$2" is unchanged rm -f "$target" else echo updating "$2" mv -f "$target" "$realtarget" fi fi else # A missing file is only an error for the first file. This # is a blatant hack to let us support using "yacc -d". If -d # is not specified, we don't want an error when the header # file is "missing". if test $first = yes; then ret=1 fi fi shift shift first=no done else ret=$? fi # Remove the directory. cd .. rm -rf $dirname exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: flex-2.5.39/regex.c0000644000175000017500000001145112314546064014307 0ustar srivastasrivasta/** regex - regular expression functions related to POSIX regex lib. */ /* This file is part of flex. */ /* Redistribution and use in source and binary forms, with or without */ /* modification, are permitted provided that the following conditions */ /* are met: */ /* 1. Redistributions of source code must retain the above copyright */ /* notice, this list of conditions and the following disclaimer. */ /* 2. Redistributions in binary form must reproduce the above copyright */ /* notice, this list of conditions and the following disclaimer in the */ /* documentation and/or other materials provided with the distribution. */ /* Neither the name of the University nor the names of its contributors */ /* may be used to endorse or promote products derived from this software */ /* without specific prior written permission. */ /* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR */ /* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED */ /* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */ /* PURPOSE. */ #include "flexdef.h" static const char* REGEXP_LINEDIR = "^#line ([[:digit:]]+) \"(.*)\""; static const char* REGEXP_BLANK_LINE = "^[[:space:]]*$"; regex_t regex_linedir; /**< matches line directives */ regex_t regex_blank_line; /**< matches blank lines */ /** Initialize the regular expressions. * @return true upon success. */ bool flex_init_regex(void) { flex_regcomp(®ex_linedir, REGEXP_LINEDIR, REG_EXTENDED); flex_regcomp(®ex_blank_line, REGEXP_BLANK_LINE, REG_EXTENDED); return true; } /** Compiles a regular expression or dies trying. * @param preg Same as for regcomp(). * @param regex Same as for regcomp(). * @param cflags Same as for regcomp(). */ void flex_regcomp(regex_t *preg, const char *regex, int cflags) { int err; memset (preg, 0, sizeof (regex_t)); if ((err = regcomp (preg, regex, cflags)) != 0) { const int errbuf_sz = 200; char *errbuf, *rxerr; errbuf = (char*)flex_alloc(errbuf_sz *sizeof(char)); if (!errbuf) flexfatal(_("Unable to allocate buffer to report regcomp")); rxerr = (char*)flex_alloc(errbuf_sz *sizeof(char)); if (!rxerr) flexfatal(_("Unable to allocate buffer for regerror")); regerror (err, preg, rxerr, errbuf_sz); snprintf (errbuf, errbuf_sz, "regcomp for \"%s\" failed: %s", regex, rxerr); flexfatal (errbuf); free(errbuf); free(rxerr); } } /** Extract a copy of the match, or NULL if no match. * @param m A match as returned by regexec(). * @param src The source string that was passed to regexec(). * @return The allocated string. */ char *regmatch_dup (regmatch_t * m, const char *src) { char *str; int len; if (m == NULL || m->rm_so < 0) return NULL; len = m->rm_eo - m->rm_so; str = (char *) flex_alloc ((len + 1) * sizeof (char)); if (!str) flexfatal(_("Unable to allocate a copy of the match")); strncpy (str, src + m->rm_so, len); str[len] = 0; return str; } /** Copy the match. * @param m A match as returned by regexec(). * @param dest The destination buffer. * @param src The source string that was passed to regexec(). * @return dest */ char *regmatch_cpy (regmatch_t * m, char *dest, const char *src) { if (m == NULL || m->rm_so < 0) { if (dest) dest[0] = '\0'; return dest; } snprintf (dest, regmatch_len(m), "%s", src + m->rm_so); return dest; } /** Get the length in characters of the match. * @param m A match as returned by regexec(). * @param src The source string that was passed to regexec(). * @return The length of the match. */ int regmatch_len (regmatch_t * m) { if (m == NULL || m->rm_so < 0) { return 0; } return m->rm_eo - m->rm_so; } /** Convert a regmatch_t object to an integer using the strtol() function. * @param m A match as returned by regexec(). * @param src The source string that was passed to regexec(). * @param endptr Same as the second argument to strtol(). * @param base Same as the third argument to strtol(). * @return The converted integer or error (Return value is the same as for strtol()). */ int regmatch_strtol (regmatch_t * m, const char *src, char **endptr, int base) { int n = 0; #define bufsz 20 char buf[bufsz]; char *s; if (m == NULL || m->rm_so < 0) return 0; if (regmatch_len (m) < bufsz) s = regmatch_cpy (m, buf, src); else s = regmatch_dup (m, src); n = strtol (s, endptr, base); if (s != buf) free (s); return n; } /** Check for empty or non-existent match. * @param m A match as returned by regexec(). * @return false if match length is non-zero. * Note that reg_empty returns true even if match did not occur at all. */ bool regmatch_empty (regmatch_t * m) { return (m == NULL || m->rm_so < 0 || m->rm_so == m->rm_eo); } /* vim:set expandtab cindent tabstop=4 softtabstop=4 shiftwidth=4 textwidth=0: */ flex-2.5.39/gen.c0000644000175000017500000015470012314546064013753 0ustar srivastasrivasta/* gen - actual generation (writing) of flex scanners */ /* Copyright (c) 1990 The Regents of the University of California. */ /* All rights reserved. */ /* This code is derived from software contributed to Berkeley by */ /* Vern Paxson. */ /* The United States Government has rights in this work pursuant */ /* to contract no. DE-AC03-76SF00098 between the United States */ /* Department of Energy and the University of California. */ /* This file is part of flex. */ /* Redistribution and use in source and binary forms, with or without */ /* modification, are permitted provided that the following conditions */ /* are met: */ /* 1. Redistributions of source code must retain the above copyright */ /* notice, this list of conditions and the following disclaimer. */ /* 2. Redistributions in binary form must reproduce the above copyright */ /* notice, this list of conditions and the following disclaimer in the */ /* documentation and/or other materials provided with the distribution. */ /* Neither the name of the University nor the names of its contributors */ /* may be used to endorse or promote products derived from this software */ /* without specific prior written permission. */ /* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR */ /* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED */ /* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */ /* PURPOSE. */ #include "flexdef.h" #include "tables.h" /* declare functions that have forward references */ void gen_next_state PROTO ((int)); void genecs PROTO ((void)); void indent_put2s PROTO ((const char *, const char *)); void indent_puts PROTO ((const char *)); static int indent_level = 0; /* each level is 8 spaces */ #define indent_up() (++indent_level) #define indent_down() (--indent_level) #define set_indent(indent_val) indent_level = indent_val /* Almost everything is done in terms of arrays starting at 1, so provide * a null entry for the zero element of all C arrays. (The exception * to this is that the fast table representation generally uses the * 0 elements of its arrays, too.) */ static const char *get_int16_decl (void) { return (gentables) ? "static yyconst flex_int16_t %s[%d] =\n { 0,\n" : "static yyconst flex_int16_t * %s = 0;\n"; } static const char *get_int32_decl (void) { return (gentables) ? "static yyconst flex_int32_t %s[%d] =\n { 0,\n" : "static yyconst flex_int32_t * %s = 0;\n"; } static const char *get_state_decl (void) { return (gentables) ? "static yyconst yy_state_type %s[%d] =\n { 0,\n" : "static yyconst yy_state_type * %s = 0;\n"; } /* Indent to the current level. */ void do_indent () { register int i = indent_level * 8; while (i >= 8) { outc ('\t'); i -= 8; } while (i > 0) { outc (' '); --i; } } /** Make the table for possible eol matches. * @return the newly allocated rule_can_match_eol table */ static struct yytbl_data *mkeoltbl (void) { int i; flex_int8_t *tdata = 0; struct yytbl_data *tbl; tbl = (struct yytbl_data *) calloc (1, sizeof (struct yytbl_data)); yytbl_data_init (tbl, YYTD_ID_RULE_CAN_MATCH_EOL); tbl->td_flags = YYTD_DATA8; tbl->td_lolen = num_rules + 1; tbl->td_data = tdata = (flex_int8_t *) calloc (tbl->td_lolen, sizeof (flex_int8_t)); for (i = 1; i <= num_rules; i++) tdata[i] = rule_has_nl[i] ? 1 : 0; buf_prints (&yydmap_buf, "\t{YYTD_ID_RULE_CAN_MATCH_EOL, (void**)&yy_rule_can_match_eol, sizeof(%s)},\n", "flex_int32_t"); return tbl; } /* Generate the table for possible eol matches. */ static void geneoltbl () { int i; outn ("m4_ifdef( [[M4_YY_USE_LINENO]],[["); outn ("/* Table of booleans, true if rule could match eol. */"); out_str_dec (get_int32_decl (), "yy_rule_can_match_eol", num_rules + 1); if (gentables) { for (i = 1; i <= num_rules; i++) { out_dec ("%d, ", rule_has_nl[i] ? 1 : 0); /* format nicely, 20 numbers per line. */ if ((i % 20) == 19) out ("\n "); } out (" };\n"); } outn ("]])"); } /* Generate the code to keep backing-up information. */ void gen_backing_up () { if (reject || num_backing_up == 0) return; if (fullspd) indent_puts ("if ( yy_current_state[-1].yy_nxt )"); else indent_puts ("if ( yy_accept[yy_current_state] )"); indent_up (); indent_puts ("{"); indent_puts ("YY_G(yy_last_accepting_state) = yy_current_state;"); indent_puts ("YY_G(yy_last_accepting_cpos) = yy_cp;"); indent_puts ("}"); indent_down (); } /* Generate the code to perform the backing up. */ void gen_bu_action () { if (reject || num_backing_up == 0) return; set_indent (3); indent_puts ("case 0: /* must back up */"); indent_puts ("/* undo the effects of YY_DO_BEFORE_ACTION */"); indent_puts ("*yy_cp = YY_G(yy_hold_char);"); if (fullspd || fulltbl) indent_puts ("yy_cp = YY_G(yy_last_accepting_cpos) + 1;"); else /* Backing-up info for compressed tables is taken \after/ * yy_cp has been incremented for the next state. */ indent_puts ("yy_cp = YY_G(yy_last_accepting_cpos);"); indent_puts ("yy_current_state = YY_G(yy_last_accepting_state);"); indent_puts ("goto yy_find_action;"); outc ('\n'); set_indent (0); } /** mkctbl - make full speed compressed transition table * This is an array of structs; each struct a pair of integers. * You should call mkssltbl() immediately after this. * Then, I think, mkecstbl(). Arrrg. * @return the newly allocated trans table */ static struct yytbl_data *mkctbl (void) { register int i; struct yytbl_data *tbl = 0; flex_int32_t *tdata = 0, curr = 0; int end_of_buffer_action = num_rules + 1; buf_prints (&yydmap_buf, "\t{YYTD_ID_TRANSITION, (void**)&yy_transition, sizeof(%s)},\n", ((tblend + numecs + 1) >= INT16_MAX || long_align) ? "flex_int32_t" : "flex_int16_t"); tbl = (struct yytbl_data *) calloc (1, sizeof (struct yytbl_data)); yytbl_data_init (tbl, YYTD_ID_TRANSITION); tbl->td_flags = YYTD_DATA32 | YYTD_STRUCT; tbl->td_hilen = 0; tbl->td_lolen = tblend + numecs + 1; /* number of structs */ tbl->td_data = tdata = (flex_int32_t *) calloc (tbl->td_lolen * 2, sizeof (flex_int32_t)); /* We want the transition to be represented as the offset to the * next state, not the actual state number, which is what it currently * is. The offset is base[nxt[i]] - (base of current state)]. That's * just the difference between the starting points of the two involved * states (to - from). * * First, though, we need to find some way to put in our end-of-buffer * flags and states. We do this by making a state with absolutely no * transitions. We put it at the end of the table. */ /* We need to have room in nxt/chk for two more slots: One for the * action and one for the end-of-buffer transition. We now *assume* * that we're guaranteed the only character we'll try to index this * nxt/chk pair with is EOB, i.e., 0, so we don't have to make sure * there's room for jam entries for other characters. */ while (tblend + 2 >= current_max_xpairs) expand_nxt_chk (); while (lastdfa + 1 >= current_max_dfas) increase_max_dfas (); base[lastdfa + 1] = tblend + 2; nxt[tblend + 1] = end_of_buffer_action; chk[tblend + 1] = numecs + 1; chk[tblend + 2] = 1; /* anything but EOB */ /* So that "make test" won't show arb. differences. */ nxt[tblend + 2] = 0; /* Make sure every state has an end-of-buffer transition and an * action #. */ for (i = 0; i <= lastdfa; ++i) { int anum = dfaacc[i].dfaacc_state; int offset = base[i]; chk[offset] = EOB_POSITION; chk[offset - 1] = ACTION_POSITION; nxt[offset - 1] = anum; /* action number */ } for (i = 0; i <= tblend; ++i) { if (chk[i] == EOB_POSITION) { tdata[curr++] = 0; tdata[curr++] = base[lastdfa + 1] - i; } else if (chk[i] == ACTION_POSITION) { tdata[curr++] = 0; tdata[curr++] = nxt[i]; } else if (chk[i] > numecs || chk[i] == 0) { tdata[curr++] = 0; tdata[curr++] = 0; } else { /* verify, transition */ tdata[curr++] = chk[i]; tdata[curr++] = base[nxt[i]] - (i - chk[i]); } } /* Here's the final, end-of-buffer state. */ tdata[curr++] = chk[tblend + 1]; tdata[curr++] = nxt[tblend + 1]; tdata[curr++] = chk[tblend + 2]; tdata[curr++] = nxt[tblend + 2]; return tbl; } /** Make start_state_list table. * @return the newly allocated start_state_list table */ static struct yytbl_data *mkssltbl (void) { struct yytbl_data *tbl = 0; flex_int32_t *tdata = 0; flex_int32_t i; tbl = (struct yytbl_data *) calloc (1, sizeof (struct yytbl_data)); yytbl_data_init (tbl, YYTD_ID_START_STATE_LIST); tbl->td_flags = YYTD_DATA32 | YYTD_PTRANS; tbl->td_hilen = 0; tbl->td_lolen = lastsc * 2 + 1; tbl->td_data = tdata = (flex_int32_t *) calloc (tbl->td_lolen, sizeof (flex_int32_t)); for (i = 0; i <= lastsc * 2; ++i) tdata[i] = base[i]; buf_prints (&yydmap_buf, "\t{YYTD_ID_START_STATE_LIST, (void**)&yy_start_state_list, sizeof(%s)},\n", "struct yy_trans_info*"); return tbl; } /* genctbl - generates full speed compressed transition table */ void genctbl () { register int i; int end_of_buffer_action = num_rules + 1; /* Table of verify for transition and offset to next state. */ if (gentables) out_dec ("static yyconst struct yy_trans_info yy_transition[%d] =\n {\n", tblend + numecs + 1); else outn ("static yyconst struct yy_trans_info *yy_transition = 0;"); /* We want the transition to be represented as the offset to the * next state, not the actual state number, which is what it currently * is. The offset is base[nxt[i]] - (base of current state)]. That's * just the difference between the starting points of the two involved * states (to - from). * * First, though, we need to find some way to put in our end-of-buffer * flags and states. We do this by making a state with absolutely no * transitions. We put it at the end of the table. */ /* We need to have room in nxt/chk for two more slots: One for the * action and one for the end-of-buffer transition. We now *assume* * that we're guaranteed the only character we'll try to index this * nxt/chk pair with is EOB, i.e., 0, so we don't have to make sure * there's room for jam entries for other characters. */ while (tblend + 2 >= current_max_xpairs) expand_nxt_chk (); while (lastdfa + 1 >= current_max_dfas) increase_max_dfas (); base[lastdfa + 1] = tblend + 2; nxt[tblend + 1] = end_of_buffer_action; chk[tblend + 1] = numecs + 1; chk[tblend + 2] = 1; /* anything but EOB */ /* So that "make test" won't show arb. differences. */ nxt[tblend + 2] = 0; /* Make sure every state has an end-of-buffer transition and an * action #. */ for (i = 0; i <= lastdfa; ++i) { int anum = dfaacc[i].dfaacc_state; int offset = base[i]; chk[offset] = EOB_POSITION; chk[offset - 1] = ACTION_POSITION; nxt[offset - 1] = anum; /* action number */ } for (i = 0; i <= tblend; ++i) { if (chk[i] == EOB_POSITION) transition_struct_out (0, base[lastdfa + 1] - i); else if (chk[i] == ACTION_POSITION) transition_struct_out (0, nxt[i]); else if (chk[i] > numecs || chk[i] == 0) transition_struct_out (0, 0); /* unused slot */ else /* verify, transition */ transition_struct_out (chk[i], base[nxt[i]] - (i - chk[i])); } /* Here's the final, end-of-buffer state. */ transition_struct_out (chk[tblend + 1], nxt[tblend + 1]); transition_struct_out (chk[tblend + 2], nxt[tblend + 2]); if (gentables) outn (" };\n"); /* Table of pointers to start states. */ if (gentables) out_dec ("static yyconst struct yy_trans_info *yy_start_state_list[%d] =\n", lastsc * 2 + 1); else outn ("static yyconst struct yy_trans_info **yy_start_state_list =0;"); if (gentables) { outn (" {"); for (i = 0; i <= lastsc * 2; ++i) out_dec (" &yy_transition[%d],\n", base[i]); dataend (); } if (useecs) genecs (); } /* mkecstbl - Make equivalence-class tables. */ struct yytbl_data *mkecstbl (void) { register int i; struct yytbl_data *tbl = 0; flex_int32_t *tdata = 0; tbl = (struct yytbl_data *) calloc (1, sizeof (struct yytbl_data)); yytbl_data_init (tbl, YYTD_ID_EC); tbl->td_flags |= YYTD_DATA32; tbl->td_hilen = 0; tbl->td_lolen = csize; tbl->td_data = tdata = (flex_int32_t *) calloc (tbl->td_lolen, sizeof (flex_int32_t)); for (i = 1; i < csize; ++i) { ecgroup[i] = ABS (ecgroup[i]); tdata[i] = ecgroup[i]; } buf_prints (&yydmap_buf, "\t{YYTD_ID_EC, (void**)&yy_ec, sizeof(%s)},\n", "flex_int32_t"); return tbl; } /* Generate equivalence-class tables. */ void genecs () { register int i, j; int numrows; out_str_dec (get_int32_decl (), "yy_ec", csize); for (i = 1; i < csize; ++i) { ecgroup[i] = ABS (ecgroup[i]); mkdata (ecgroup[i]); } dataend (); if (trace) { fputs (_("\n\nEquivalence Classes:\n\n"), stderr); numrows = csize / 8; for (j = 0; j < numrows; ++j) { for (i = j; i < csize; i = i + numrows) { fprintf (stderr, "%4s = %-2d", readable_form (i), ecgroup[i]); putc (' ', stderr); } putc ('\n', stderr); } } } /* Generate the code to find the action number. */ void gen_find_action () { if (fullspd) indent_puts ("yy_act = yy_current_state[-1].yy_nxt;"); else if (fulltbl) indent_puts ("yy_act = yy_accept[yy_current_state];"); else if (reject) { indent_puts ("yy_current_state = *--YY_G(yy_state_ptr);"); indent_puts ("YY_G(yy_lp) = yy_accept[yy_current_state];"); outn ("find_rule: /* we branch to this label when backing up */"); indent_puts ("for ( ; ; ) /* until we find what rule we matched */"); indent_up (); indent_puts ("{"); indent_puts ("if ( YY_G(yy_lp) && YY_G(yy_lp) < yy_accept[yy_current_state + 1] )"); indent_up (); indent_puts ("{"); indent_puts ("yy_act = yy_acclist[YY_G(yy_lp)];"); if (variable_trailing_context_rules) { indent_puts ("if ( yy_act & YY_TRAILING_HEAD_MASK ||"); indent_puts (" YY_G(yy_looking_for_trail_begin) )"); indent_up (); indent_puts ("{"); indent_puts ("if ( yy_act == YY_G(yy_looking_for_trail_begin) )"); indent_up (); indent_puts ("{"); indent_puts ("YY_G(yy_looking_for_trail_begin) = 0;"); indent_puts ("yy_act &= ~YY_TRAILING_HEAD_MASK;"); indent_puts ("break;"); indent_puts ("}"); indent_down (); indent_puts ("}"); indent_down (); indent_puts ("else if ( yy_act & YY_TRAILING_MASK )"); indent_up (); indent_puts ("{"); indent_puts ("YY_G(yy_looking_for_trail_begin) = yy_act & ~YY_TRAILING_MASK;"); indent_puts ("YY_G(yy_looking_for_trail_begin) |= YY_TRAILING_HEAD_MASK;"); if (real_reject) { /* Remember matched text in case we back up * due to REJECT. */ indent_puts ("YY_G(yy_full_match) = yy_cp;"); indent_puts ("YY_G(yy_full_state) = YY_G(yy_state_ptr);"); indent_puts ("YY_G(yy_full_lp) = YY_G(yy_lp);"); } indent_puts ("}"); indent_down (); indent_puts ("else"); indent_up (); indent_puts ("{"); indent_puts ("YY_G(yy_full_match) = yy_cp;"); indent_puts ("YY_G(yy_full_state) = YY_G(yy_state_ptr);"); indent_puts ("YY_G(yy_full_lp) = YY_G(yy_lp);"); indent_puts ("break;"); indent_puts ("}"); indent_down (); indent_puts ("++YY_G(yy_lp);"); indent_puts ("goto find_rule;"); } else { /* Remember matched text in case we back up due to * trailing context plus REJECT. */ indent_up (); indent_puts ("{"); indent_puts ("YY_G(yy_full_match) = yy_cp;"); indent_puts ("break;"); indent_puts ("}"); indent_down (); } indent_puts ("}"); indent_down (); indent_puts ("--yy_cp;"); /* We could consolidate the following two lines with those at * the beginning, but at the cost of complaints that we're * branching inside a loop. */ indent_puts ("yy_current_state = *--YY_G(yy_state_ptr);"); indent_puts ("YY_G(yy_lp) = yy_accept[yy_current_state];"); indent_puts ("}"); indent_down (); } else { /* compressed */ indent_puts ("yy_act = yy_accept[yy_current_state];"); if (interactive && !reject) { /* Do the guaranteed-needed backing up to figure out * the match. */ indent_puts ("if ( yy_act == 0 )"); indent_up (); indent_puts ("{ /* have to back up */"); indent_puts ("yy_cp = YY_G(yy_last_accepting_cpos);"); indent_puts ("yy_current_state = YY_G(yy_last_accepting_state);"); indent_puts ("yy_act = yy_accept[yy_current_state];"); indent_puts ("}"); indent_down (); } } } /* mkftbl - make the full table and return the struct . * you should call mkecstbl() after this. */ struct yytbl_data *mkftbl (void) { register int i; int end_of_buffer_action = num_rules + 1; struct yytbl_data *tbl; flex_int32_t *tdata = 0; tbl = (struct yytbl_data *) calloc (1, sizeof (struct yytbl_data)); yytbl_data_init (tbl, YYTD_ID_ACCEPT); tbl->td_flags |= YYTD_DATA32; tbl->td_hilen = 0; /* it's a one-dimensional array */ tbl->td_lolen = lastdfa + 1; tbl->td_data = tdata = (flex_int32_t *) calloc (tbl->td_lolen, sizeof (flex_int32_t)); dfaacc[end_of_buffer_state].dfaacc_state = end_of_buffer_action; for (i = 1; i <= lastdfa; ++i) { register int anum = dfaacc[i].dfaacc_state; tdata[i] = anum; if (trace && anum) fprintf (stderr, _("state # %d accepts: [%d]\n"), i, anum); } buf_prints (&yydmap_buf, "\t{YYTD_ID_ACCEPT, (void**)&yy_accept, sizeof(%s)},\n", long_align ? "flex_int32_t" : "flex_int16_t"); return tbl; } /* genftbl - generate full transition table */ void genftbl () { register int i; int end_of_buffer_action = num_rules + 1; out_str_dec (long_align ? get_int32_decl () : get_int16_decl (), "yy_accept", lastdfa + 1); dfaacc[end_of_buffer_state].dfaacc_state = end_of_buffer_action; for (i = 1; i <= lastdfa; ++i) { register int anum = dfaacc[i].dfaacc_state; mkdata (anum); if (trace && anum) fprintf (stderr, _("state # %d accepts: [%d]\n"), i, anum); } dataend (); if (useecs) genecs (); /* Don't have to dump the actual full table entries - they were * created on-the-fly. */ } /* Generate the code to find the next compressed-table state. */ void gen_next_compressed_state (char_map) char *char_map; { indent_put2s ("register YY_CHAR yy_c = %s;", char_map); /* Save the backing-up info \before/ computing the next state * because we always compute one more state than needed - we * always proceed until we reach a jam state */ gen_backing_up (); indent_puts ("while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )"); indent_up (); indent_puts ("{"); indent_puts ("yy_current_state = (int) yy_def[yy_current_state];"); if (usemecs) { /* We've arrange it so that templates are never chained * to one another. This means we can afford to make a * very simple test to see if we need to convert to * yy_c's meta-equivalence class without worrying * about erroneously looking up the meta-equivalence * class twice */ do_indent (); /* lastdfa + 2 is the beginning of the templates */ out_dec ("if ( yy_current_state >= %d )\n", lastdfa + 2); indent_up (); indent_puts ("yy_c = yy_meta[(unsigned int) yy_c];"); indent_down (); } indent_puts ("}"); indent_down (); indent_puts ("yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];"); } /* Generate the code to find the next match. */ void gen_next_match () { /* NOTE - changes in here should be reflected in gen_next_state() and * gen_NUL_trans(). */ char *char_map = useecs ? "yy_ec[YY_SC_TO_UI(*yy_cp)] " : "YY_SC_TO_UI(*yy_cp)"; char *char_map_2 = useecs ? "yy_ec[YY_SC_TO_UI(*++yy_cp)] " : "YY_SC_TO_UI(*++yy_cp)"; if (fulltbl) { if (gentables) indent_put2s ("while ( (yy_current_state = yy_nxt[yy_current_state][ %s ]) > 0 )", char_map); else indent_put2s ("while ( (yy_current_state = yy_nxt[yy_current_state*YY_NXT_LOLEN + %s ]) > 0 )", char_map); indent_up (); if (num_backing_up > 0) { indent_puts ("{"); gen_backing_up (); outc ('\n'); } indent_puts ("++yy_cp;"); if (num_backing_up > 0) indent_puts ("}"); indent_down (); outc ('\n'); indent_puts ("yy_current_state = -yy_current_state;"); } else if (fullspd) { indent_puts ("{"); indent_puts ("register yyconst struct yy_trans_info *yy_trans_info;\n"); indent_puts ("register YY_CHAR yy_c;\n"); indent_put2s ("for ( yy_c = %s;", char_map); indent_puts (" (yy_trans_info = &yy_current_state[(unsigned int) yy_c])->"); indent_puts ("yy_verify == yy_c;"); indent_put2s (" yy_c = %s )", char_map_2); indent_up (); if (num_backing_up > 0) indent_puts ("{"); indent_puts ("yy_current_state += yy_trans_info->yy_nxt;"); if (num_backing_up > 0) { outc ('\n'); gen_backing_up (); indent_puts ("}"); } indent_down (); indent_puts ("}"); } else { /* compressed */ indent_puts ("do"); indent_up (); indent_puts ("{"); gen_next_state (false); indent_puts ("++yy_cp;"); indent_puts ("}"); indent_down (); do_indent (); if (interactive) out_dec ("while ( yy_base[yy_current_state] != %d );\n", jambase); else out_dec ("while ( yy_current_state != %d );\n", jamstate); if (!reject && !interactive) { /* Do the guaranteed-needed backing up to figure out * the match. */ indent_puts ("yy_cp = YY_G(yy_last_accepting_cpos);"); indent_puts ("yy_current_state = YY_G(yy_last_accepting_state);"); } } } /* Generate the code to find the next state. */ void gen_next_state (worry_about_NULs) int worry_about_NULs; { /* NOTE - changes in here should be reflected in gen_next_match() */ char char_map[256]; if (worry_about_NULs && !nultrans) { if (useecs) snprintf (char_map, sizeof(char_map), "(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : %d)", NUL_ec); else snprintf (char_map, sizeof(char_map), "(*yy_cp ? YY_SC_TO_UI(*yy_cp) : %d)", NUL_ec); } else strcpy (char_map, useecs ? "yy_ec[YY_SC_TO_UI(*yy_cp)] " : "YY_SC_TO_UI(*yy_cp)"); if (worry_about_NULs && nultrans) { if (!fulltbl && !fullspd) /* Compressed tables back up *before* they match. */ gen_backing_up (); indent_puts ("if ( *yy_cp )"); indent_up (); indent_puts ("{"); } if (fulltbl) { if (gentables) indent_put2s ("yy_current_state = yy_nxt[yy_current_state][%s];", char_map); else indent_put2s ("yy_current_state = yy_nxt[yy_current_state*YY_NXT_LOLEN + %s];", char_map); } else if (fullspd) indent_put2s ("yy_current_state += yy_current_state[%s].yy_nxt;", char_map); else gen_next_compressed_state (char_map); if (worry_about_NULs && nultrans) { indent_puts ("}"); indent_down (); indent_puts ("else"); indent_up (); indent_puts ("yy_current_state = yy_NUL_trans[yy_current_state];"); indent_down (); } if (fullspd || fulltbl) gen_backing_up (); if (reject) indent_puts ("*YY_G(yy_state_ptr)++ = yy_current_state;"); } /* Generate the code to make a NUL transition. */ void gen_NUL_trans () { /* NOTE - changes in here should be reflected in gen_next_match() */ /* Only generate a definition for "yy_cp" if we'll generate code * that uses it. Otherwise lint and the like complain. */ int need_backing_up = (num_backing_up > 0 && !reject); if (need_backing_up && (!nultrans || fullspd || fulltbl)) /* We're going to need yy_cp lying around for the call * below to gen_backing_up(). */ indent_puts ("register char *yy_cp = YY_G(yy_c_buf_p);"); outc ('\n'); if (nultrans) { indent_puts ("yy_current_state = yy_NUL_trans[yy_current_state];"); indent_puts ("yy_is_jam = (yy_current_state == 0);"); } else if (fulltbl) { do_indent (); if (gentables) out_dec ("yy_current_state = yy_nxt[yy_current_state][%d];\n", NUL_ec); else out_dec ("yy_current_state = yy_nxt[yy_current_state*YY_NXT_LOLEN + %d];\n", NUL_ec); indent_puts ("yy_is_jam = (yy_current_state <= 0);"); } else if (fullspd) { do_indent (); out_dec ("register int yy_c = %d;\n", NUL_ec); indent_puts ("register yyconst struct yy_trans_info *yy_trans_info;\n"); indent_puts ("yy_trans_info = &yy_current_state[(unsigned int) yy_c];"); indent_puts ("yy_current_state += yy_trans_info->yy_nxt;"); indent_puts ("yy_is_jam = (yy_trans_info->yy_verify != yy_c);"); } else { char NUL_ec_str[20]; snprintf (NUL_ec_str, sizeof(NUL_ec_str), "%d", NUL_ec); gen_next_compressed_state (NUL_ec_str); do_indent (); out_dec ("yy_is_jam = (yy_current_state == %d);\n", jamstate); if (reject) { /* Only stack this state if it's a transition we * actually make. If we stack it on a jam, then * the state stack and yy_c_buf_p get out of sync. */ indent_puts ("if ( ! yy_is_jam )"); indent_up (); indent_puts ("*YY_G(yy_state_ptr)++ = yy_current_state;"); indent_down (); } } /* If we've entered an accepting state, back up; note that * compressed tables have *already* done such backing up, so * we needn't bother with it again. */ if (need_backing_up && (fullspd || fulltbl)) { outc ('\n'); indent_puts ("if ( ! yy_is_jam )"); indent_up (); indent_puts ("{"); gen_backing_up (); indent_puts ("}"); indent_down (); } } /* Generate the code to find the start state. */ void gen_start_state () { if (fullspd) { if (bol_needed) { indent_puts ("yy_current_state = yy_start_state_list[YY_G(yy_start) + YY_AT_BOL()];"); } else indent_puts ("yy_current_state = yy_start_state_list[YY_G(yy_start)];"); } else { indent_puts ("yy_current_state = YY_G(yy_start);"); if (bol_needed) indent_puts ("yy_current_state += YY_AT_BOL();"); if (reject) { /* Set up for storing up states. */ outn ("m4_ifdef( [[M4_YY_USES_REJECT]],\n[["); indent_puts ("YY_G(yy_state_ptr) = YY_G(yy_state_buf);"); indent_puts ("*YY_G(yy_state_ptr)++ = yy_current_state;"); outn ("]])"); } } } /* gentabs - generate data statements for the transition tables */ void gentabs () { int i, j, k, *accset, nacc, *acc_array, total_states; int end_of_buffer_action = num_rules + 1; struct yytbl_data *yyacc_tbl = 0, *yymeta_tbl = 0, *yybase_tbl = 0, *yydef_tbl = 0, *yynxt_tbl = 0, *yychk_tbl = 0, *yyacclist_tbl=0; flex_int32_t *yyacc_data = 0, *yybase_data = 0, *yydef_data = 0, *yynxt_data = 0, *yychk_data = 0, *yyacclist_data=0; flex_int32_t yybase_curr = 0, yyacclist_curr=0,yyacc_curr=0; acc_array = allocate_integer_array (current_max_dfas); nummt = 0; /* The compressed table format jams by entering the "jam state", * losing information about the previous state in the process. * In order to recover the previous state, we effectively need * to keep backing-up information. */ ++num_backing_up; if (reject) { /* Write out accepting list and pointer list. * First we generate the "yy_acclist" array. In the process, * we compute the indices that will go into the "yy_accept" * array, and save the indices in the dfaacc array. */ int EOB_accepting_list[2]; /* Set up accepting structures for the End Of Buffer state. */ EOB_accepting_list[0] = 0; EOB_accepting_list[1] = end_of_buffer_action; accsiz[end_of_buffer_state] = 1; dfaacc[end_of_buffer_state].dfaacc_set = EOB_accepting_list; out_str_dec (long_align ? get_int32_decl () : get_int16_decl (), "yy_acclist", MAX (numas, 1) + 1); buf_prints (&yydmap_buf, "\t{YYTD_ID_ACCLIST, (void**)&yy_acclist, sizeof(%s)},\n", long_align ? "flex_int32_t" : "flex_int16_t"); yyacclist_tbl = (struct yytbl_data*)calloc(1,sizeof(struct yytbl_data)); yytbl_data_init (yyacclist_tbl, YYTD_ID_ACCLIST); yyacclist_tbl->td_lolen = MAX(numas,1) + 1; yyacclist_tbl->td_data = yyacclist_data = (flex_int32_t *) calloc (yyacclist_tbl->td_lolen, sizeof (flex_int32_t)); yyacclist_curr = 1; j = 1; /* index into "yy_acclist" array */ for (i = 1; i <= lastdfa; ++i) { acc_array[i] = j; if (accsiz[i] != 0) { accset = dfaacc[i].dfaacc_set; nacc = accsiz[i]; if (trace) fprintf (stderr, _("state # %d accepts: "), i); for (k = 1; k <= nacc; ++k) { int accnum = accset[k]; ++j; if (variable_trailing_context_rules && !(accnum & YY_TRAILING_HEAD_MASK) && accnum > 0 && accnum <= num_rules && rule_type[accnum] == RULE_VARIABLE) { /* Special hack to flag * accepting number as part * of trailing context rule. */ accnum |= YY_TRAILING_MASK; } mkdata (accnum); yyacclist_data[yyacclist_curr++] = accnum; if (trace) { fprintf (stderr, "[%d]", accset[k]); if (k < nacc) fputs (", ", stderr); else putc ('\n', stderr); } } } } /* add accepting number for the "jam" state */ acc_array[i] = j; dataend (); if (tablesext) { yytbl_data_compress (yyacclist_tbl); if (yytbl_data_fwrite (&tableswr, yyacclist_tbl) < 0) flexerror (_("Could not write yyacclist_tbl")); yytbl_data_destroy (yyacclist_tbl); yyacclist_tbl = NULL; } } else { dfaacc[end_of_buffer_state].dfaacc_state = end_of_buffer_action; for (i = 1; i <= lastdfa; ++i) acc_array[i] = dfaacc[i].dfaacc_state; /* add accepting number for jam state */ acc_array[i] = 0; } /* Begin generating yy_accept */ /* Spit out "yy_accept" array. If we're doing "reject", it'll be * pointers into the "yy_acclist" array. Otherwise it's actual * accepting numbers. In either case, we just dump the numbers. */ /* "lastdfa + 2" is the size of "yy_accept"; includes room for C arrays * beginning at 0 and for "jam" state. */ k = lastdfa + 2; if (reject) /* We put a "cap" on the table associating lists of accepting * numbers with state numbers. This is needed because we tell * where the end of an accepting list is by looking at where * the list for the next state starts. */ ++k; out_str_dec (long_align ? get_int32_decl () : get_int16_decl (), "yy_accept", k); buf_prints (&yydmap_buf, "\t{YYTD_ID_ACCEPT, (void**)&yy_accept, sizeof(%s)},\n", long_align ? "flex_int32_t" : "flex_int16_t"); yyacc_tbl = (struct yytbl_data *) calloc (1, sizeof (struct yytbl_data)); yytbl_data_init (yyacc_tbl, YYTD_ID_ACCEPT); yyacc_tbl->td_lolen = k; yyacc_tbl->td_data = yyacc_data = (flex_int32_t *) calloc (yyacc_tbl->td_lolen, sizeof (flex_int32_t)); yyacc_curr=1; for (i = 1; i <= lastdfa; ++i) { mkdata (acc_array[i]); yyacc_data[yyacc_curr++] = acc_array[i]; if (!reject && trace && acc_array[i]) fprintf (stderr, _("state # %d accepts: [%d]\n"), i, acc_array[i]); } /* Add entry for "jam" state. */ mkdata (acc_array[i]); yyacc_data[yyacc_curr++] = acc_array[i]; if (reject) { /* Add "cap" for the list. */ mkdata (acc_array[i]); yyacc_data[yyacc_curr++] = acc_array[i]; } dataend (); if (tablesext) { yytbl_data_compress (yyacc_tbl); if (yytbl_data_fwrite (&tableswr, yyacc_tbl) < 0) flexerror (_("Could not write yyacc_tbl")); yytbl_data_destroy (yyacc_tbl); yyacc_tbl = NULL; } /* End generating yy_accept */ if (useecs) { genecs (); if (tablesext) { struct yytbl_data *tbl; tbl = mkecstbl (); yytbl_data_compress (tbl); if (yytbl_data_fwrite (&tableswr, tbl) < 0) flexerror (_("Could not write ecstbl")); yytbl_data_destroy (tbl); tbl = 0; } } if (usemecs) { /* Begin generating yy_meta */ /* Write out meta-equivalence classes (used to index * templates with). */ flex_int32_t *yymecs_data = 0; yymeta_tbl = (struct yytbl_data *) calloc (1, sizeof (struct yytbl_data)); yytbl_data_init (yymeta_tbl, YYTD_ID_META); yymeta_tbl->td_lolen = numecs + 1; yymeta_tbl->td_data = yymecs_data = (flex_int32_t *) calloc (yymeta_tbl->td_lolen, sizeof (flex_int32_t)); if (trace) fputs (_("\n\nMeta-Equivalence Classes:\n"), stderr); out_str_dec (get_int32_decl (), "yy_meta", numecs + 1); buf_prints (&yydmap_buf, "\t{YYTD_ID_META, (void**)&yy_meta, sizeof(%s)},\n", "flex_int32_t"); for (i = 1; i <= numecs; ++i) { if (trace) fprintf (stderr, "%d = %d\n", i, ABS (tecbck[i])); mkdata (ABS (tecbck[i])); yymecs_data[i] = ABS (tecbck[i]); } dataend (); if (tablesext) { yytbl_data_compress (yymeta_tbl); if (yytbl_data_fwrite (&tableswr, yymeta_tbl) < 0) flexerror (_ ("Could not write yymeta_tbl")); yytbl_data_destroy (yymeta_tbl); yymeta_tbl = NULL; } /* End generating yy_meta */ } total_states = lastdfa + numtemps; /* Begin generating yy_base */ out_str_dec ((tblend >= INT16_MAX || long_align) ? get_int32_decl () : get_int16_decl (), "yy_base", total_states + 1); buf_prints (&yydmap_buf, "\t{YYTD_ID_BASE, (void**)&yy_base, sizeof(%s)},\n", (tblend >= INT16_MAX || long_align) ? "flex_int32_t" : "flex_int16_t"); yybase_tbl = (struct yytbl_data *) calloc (1, sizeof (struct yytbl_data)); yytbl_data_init (yybase_tbl, YYTD_ID_BASE); yybase_tbl->td_lolen = total_states + 1; yybase_tbl->td_data = yybase_data = (flex_int32_t *) calloc (yybase_tbl->td_lolen, sizeof (flex_int32_t)); yybase_curr = 1; for (i = 1; i <= lastdfa; ++i) { register int d = def[i]; if (base[i] == JAMSTATE) base[i] = jambase; if (d == JAMSTATE) def[i] = jamstate; else if (d < 0) { /* Template reference. */ ++tmpuses; def[i] = lastdfa - d + 1; } mkdata (base[i]); yybase_data[yybase_curr++] = base[i]; } /* Generate jam state's base index. */ mkdata (base[i]); yybase_data[yybase_curr++] = base[i]; for (++i /* skip jam state */ ; i <= total_states; ++i) { mkdata (base[i]); yybase_data[yybase_curr++] = base[i]; def[i] = jamstate; } dataend (); if (tablesext) { yytbl_data_compress (yybase_tbl); if (yytbl_data_fwrite (&tableswr, yybase_tbl) < 0) flexerror (_("Could not write yybase_tbl")); yytbl_data_destroy (yybase_tbl); yybase_tbl = NULL; } /* End generating yy_base */ /* Begin generating yy_def */ out_str_dec ((total_states >= INT16_MAX || long_align) ? get_int32_decl () : get_int16_decl (), "yy_def", total_states + 1); buf_prints (&yydmap_buf, "\t{YYTD_ID_DEF, (void**)&yy_def, sizeof(%s)},\n", (total_states >= INT16_MAX || long_align) ? "flex_int32_t" : "flex_int16_t"); yydef_tbl = (struct yytbl_data *) calloc (1, sizeof (struct yytbl_data)); yytbl_data_init (yydef_tbl, YYTD_ID_DEF); yydef_tbl->td_lolen = total_states + 1; yydef_tbl->td_data = yydef_data = (flex_int32_t *) calloc (yydef_tbl->td_lolen, sizeof (flex_int32_t)); for (i = 1; i <= total_states; ++i) { mkdata (def[i]); yydef_data[i] = def[i]; } dataend (); if (tablesext) { yytbl_data_compress (yydef_tbl); if (yytbl_data_fwrite (&tableswr, yydef_tbl) < 0) flexerror (_("Could not write yydef_tbl")); yytbl_data_destroy (yydef_tbl); yydef_tbl = NULL; } /* End generating yy_def */ /* Begin generating yy_nxt */ out_str_dec ((total_states >= INT16_MAX || long_align) ? get_int32_decl () : get_int16_decl (), "yy_nxt", tblend + 1); buf_prints (&yydmap_buf, "\t{YYTD_ID_NXT, (void**)&yy_nxt, sizeof(%s)},\n", (total_states >= INT16_MAX || long_align) ? "flex_int32_t" : "flex_int16_t"); yynxt_tbl = (struct yytbl_data *) calloc (1, sizeof (struct yytbl_data)); yytbl_data_init (yynxt_tbl, YYTD_ID_NXT); yynxt_tbl->td_lolen = tblend + 1; yynxt_tbl->td_data = yynxt_data = (flex_int32_t *) calloc (yynxt_tbl->td_lolen, sizeof (flex_int32_t)); for (i = 1; i <= tblend; ++i) { /* Note, the order of the following test is important. * If chk[i] is 0, then nxt[i] is undefined. */ if (chk[i] == 0 || nxt[i] == 0) nxt[i] = jamstate; /* new state is the JAM state */ mkdata (nxt[i]); yynxt_data[i] = nxt[i]; } dataend (); if (tablesext) { yytbl_data_compress (yynxt_tbl); if (yytbl_data_fwrite (&tableswr, yynxt_tbl) < 0) flexerror (_("Could not write yynxt_tbl")); yytbl_data_destroy (yynxt_tbl); yynxt_tbl = NULL; } /* End generating yy_nxt */ /* Begin generating yy_chk */ out_str_dec ((total_states >= INT16_MAX || long_align) ? get_int32_decl () : get_int16_decl (), "yy_chk", tblend + 1); buf_prints (&yydmap_buf, "\t{YYTD_ID_CHK, (void**)&yy_chk, sizeof(%s)},\n", (total_states >= INT16_MAX || long_align) ? "flex_int32_t" : "flex_int16_t"); yychk_tbl = (struct yytbl_data *) calloc (1, sizeof (struct yytbl_data)); yytbl_data_init (yychk_tbl, YYTD_ID_CHK); yychk_tbl->td_lolen = tblend + 1; yychk_tbl->td_data = yychk_data = (flex_int32_t *) calloc (yychk_tbl->td_lolen, sizeof (flex_int32_t)); for (i = 1; i <= tblend; ++i) { if (chk[i] == 0) ++nummt; mkdata (chk[i]); yychk_data[i] = chk[i]; } dataend (); if (tablesext) { yytbl_data_compress (yychk_tbl); if (yytbl_data_fwrite (&tableswr, yychk_tbl) < 0) flexerror (_("Could not write yychk_tbl")); yytbl_data_destroy (yychk_tbl); yychk_tbl = NULL; } /* End generating yy_chk */ flex_free ((void *) acc_array); } /* Write out a formatted string (with a secondary string argument) at the * current indentation level, adding a final newline. */ void indent_put2s (fmt, arg) const char *fmt, *arg; { do_indent (); out_str (fmt, arg); outn (""); } /* Write out a string at the current indentation level, adding a final * newline. */ void indent_puts (str) const char *str; { do_indent (); outn (str); } /* make_tables - generate transition tables and finishes generating output file */ void make_tables () { register int i; int did_eof_rule = false; struct yytbl_data *yynultrans_tbl; skelout (); /* %% [2.0] - break point in skel */ /* First, take care of YY_DO_BEFORE_ACTION depending on yymore * being used. */ set_indent (1); if (yymore_used && !yytext_is_array) { indent_puts ("YY_G(yytext_ptr) -= YY_G(yy_more_len); \\"); indent_puts ("yyleng = (size_t) (yy_cp - YY_G(yytext_ptr)); \\"); } else indent_puts ("yyleng = (size_t) (yy_cp - yy_bp); \\"); /* Now also deal with copying yytext_ptr to yytext if needed. */ skelout (); /* %% [3.0] - break point in skel */ if (yytext_is_array) { if (yymore_used) indent_puts ("if ( yyleng + YY_G(yy_more_offset) >= YYLMAX ) \\"); else indent_puts ("if ( yyleng >= YYLMAX ) \\"); indent_up (); indent_puts ("YY_FATAL_ERROR( \"token too large, exceeds YYLMAX\" ); \\"); indent_down (); if (yymore_used) { indent_puts ("yy_flex_strncpy( &yytext[YY_G(yy_more_offset)], YY_G(yytext_ptr), yyleng + 1 M4_YY_CALL_LAST_ARG); \\"); indent_puts ("yyleng += YY_G(yy_more_offset); \\"); indent_puts ("YY_G(yy_prev_more_offset) = YY_G(yy_more_offset); \\"); indent_puts ("YY_G(yy_more_offset) = 0; \\"); } else { indent_puts ("yy_flex_strncpy( yytext, YY_G(yytext_ptr), yyleng + 1 M4_YY_CALL_LAST_ARG); \\"); } } set_indent (0); skelout (); /* %% [4.0] - break point in skel */ /* This is where we REALLY begin generating the tables. */ out_dec ("#define YY_NUM_RULES %d\n", num_rules); out_dec ("#define YY_END_OF_BUFFER %d\n", num_rules + 1); if (fullspd) { /* Need to define the transet type as a size large * enough to hold the biggest offset. */ int total_table_size = tblend + numecs + 1; char *trans_offset_type = (total_table_size >= INT16_MAX || long_align) ? "flex_int32_t" : "flex_int16_t"; set_indent (0); indent_puts ("struct yy_trans_info"); indent_up (); indent_puts ("{"); /* We require that yy_verify and yy_nxt must be of the same size int. */ indent_put2s ("%s yy_verify;", trans_offset_type); /* In cases where its sister yy_verify *is* a "yes, there is * a transition", yy_nxt is the offset (in records) to the * next state. In most cases where there is no transition, * the value of yy_nxt is irrelevant. If yy_nxt is the -1th * record of a state, though, then yy_nxt is the action number * for that state. */ indent_put2s ("%s yy_nxt;", trans_offset_type); indent_puts ("};"); indent_down (); } else { /* We generate a bogus 'struct yy_trans_info' data type * so we can guarantee that it is always declared in the skel. * This is so we can compile "sizeof(struct yy_trans_info)" * in any scanner. */ indent_puts ("/* This struct is not used in this scanner,"); indent_puts (" but its presence is necessary. */"); indent_puts ("struct yy_trans_info"); indent_up (); indent_puts ("{"); indent_puts ("flex_int32_t yy_verify;"); indent_puts ("flex_int32_t yy_nxt;"); indent_puts ("};"); indent_down (); } if (fullspd) { genctbl (); if (tablesext) { struct yytbl_data *tbl; tbl = mkctbl (); yytbl_data_compress (tbl); if (yytbl_data_fwrite (&tableswr, tbl) < 0) flexerror (_("Could not write ftbl")); yytbl_data_destroy (tbl); tbl = mkssltbl (); yytbl_data_compress (tbl); if (yytbl_data_fwrite (&tableswr, tbl) < 0) flexerror (_("Could not write ssltbl")); yytbl_data_destroy (tbl); tbl = 0; if (useecs) { tbl = mkecstbl (); yytbl_data_compress (tbl); if (yytbl_data_fwrite (&tableswr, tbl) < 0) flexerror (_ ("Could not write ecstbl")); yytbl_data_destroy (tbl); tbl = 0; } } } else if (fulltbl) { genftbl (); if (tablesext) { struct yytbl_data *tbl; tbl = mkftbl (); yytbl_data_compress (tbl); if (yytbl_data_fwrite (&tableswr, tbl) < 0) flexerror (_("Could not write ftbl")); yytbl_data_destroy (tbl); tbl = 0; if (useecs) { tbl = mkecstbl (); yytbl_data_compress (tbl); if (yytbl_data_fwrite (&tableswr, tbl) < 0) flexerror (_ ("Could not write ecstbl")); yytbl_data_destroy (tbl); tbl = 0; } } } else gentabs (); if (do_yylineno) { geneoltbl (); if (tablesext) { struct yytbl_data *tbl; tbl = mkeoltbl (); yytbl_data_compress (tbl); if (yytbl_data_fwrite (&tableswr, tbl) < 0) flexerror (_("Could not write eoltbl")); yytbl_data_destroy (tbl); tbl = 0; } } /* Definitions for backing up. We don't need them if REJECT * is being used because then we use an alternative backin-up * technique instead. */ if (num_backing_up > 0 && !reject) { if (!C_plus_plus && !reentrant) { indent_puts ("static yy_state_type yy_last_accepting_state;"); indent_puts ("static char *yy_last_accepting_cpos;\n"); } } if (nultrans) { flex_int32_t *yynultrans_data = 0; /* Begin generating yy_NUL_trans */ out_str_dec (get_state_decl (), "yy_NUL_trans", lastdfa + 1); buf_prints (&yydmap_buf, "\t{YYTD_ID_NUL_TRANS, (void**)&yy_NUL_trans, sizeof(%s)},\n", (fullspd) ? "struct yy_trans_info*" : "flex_int32_t"); yynultrans_tbl = (struct yytbl_data *) calloc (1, sizeof (struct yytbl_data)); yytbl_data_init (yynultrans_tbl, YYTD_ID_NUL_TRANS); if (fullspd) yynultrans_tbl->td_flags |= YYTD_PTRANS; yynultrans_tbl->td_lolen = lastdfa + 1; yynultrans_tbl->td_data = yynultrans_data = (flex_int32_t *) calloc (yynultrans_tbl->td_lolen, sizeof (flex_int32_t)); for (i = 1; i <= lastdfa; ++i) { if (fullspd) { out_dec (" &yy_transition[%d],\n", base[i]); yynultrans_data[i] = base[i]; } else { mkdata (nultrans[i]); yynultrans_data[i] = nultrans[i]; } } dataend (); if (tablesext) { yytbl_data_compress (yynultrans_tbl); if (yytbl_data_fwrite (&tableswr, yynultrans_tbl) < 0) flexerror (_ ("Could not write yynultrans_tbl")); yytbl_data_destroy (yynultrans_tbl); yynultrans_tbl = NULL; } /* End generating yy_NUL_trans */ } if (!C_plus_plus && !reentrant) { indent_puts ("extern int yy_flex_debug;"); indent_put2s ("int yy_flex_debug = %s;\n", ddebug ? "1" : "0"); } if (ddebug) { /* Spit out table mapping rules to line numbers. */ out_str_dec (long_align ? get_int32_decl () : get_int16_decl (), "yy_rule_linenum", num_rules); for (i = 1; i < num_rules; ++i) mkdata (rule_linenum[i]); dataend (); } if (reject) { outn ("m4_ifdef( [[M4_YY_USES_REJECT]],\n[["); /* Declare state buffer variables. */ if (!C_plus_plus && !reentrant) { outn ("static yy_state_type *yy_state_buf=0, *yy_state_ptr=0;"); outn ("static char *yy_full_match;"); outn ("static int yy_lp;"); } if (variable_trailing_context_rules) { if (!C_plus_plus && !reentrant) { outn ("static int yy_looking_for_trail_begin = 0;"); outn ("static int yy_full_lp;"); outn ("static int *yy_full_state;"); } out_hex ("#define YY_TRAILING_MASK 0x%x\n", (unsigned int) YY_TRAILING_MASK); out_hex ("#define YY_TRAILING_HEAD_MASK 0x%x\n", (unsigned int) YY_TRAILING_HEAD_MASK); } outn ("#define REJECT \\"); outn ("{ \\"); outn ("*yy_cp = YY_G(yy_hold_char); /* undo effects of setting up yytext */ \\"); outn ("yy_cp = YY_G(yy_full_match); /* restore poss. backed-over text */ \\"); if (variable_trailing_context_rules) { outn ("YY_G(yy_lp) = YY_G(yy_full_lp); /* restore orig. accepting pos. */ \\"); outn ("YY_G(yy_state_ptr) = YY_G(yy_full_state); /* restore orig. state */ \\"); outn ("yy_current_state = *YY_G(yy_state_ptr); /* restore curr. state */ \\"); } outn ("++YY_G(yy_lp); \\"); outn ("goto find_rule; \\"); outn ("}"); outn ("]])\n"); } else { outn ("/* The intent behind this definition is that it'll catch"); outn (" * any uses of REJECT which flex missed."); outn (" */"); outn ("#define REJECT reject_used_but_not_detected"); } if (yymore_used) { if (!C_plus_plus) { if (yytext_is_array) { if (!reentrant){ indent_puts ("static int yy_more_offset = 0;"); indent_puts ("static int yy_prev_more_offset = 0;"); } } else if (!reentrant) { indent_puts ("static int yy_more_flag = 0;"); indent_puts ("static int yy_more_len = 0;"); } } if (yytext_is_array) { indent_puts ("#define yymore() (YY_G(yy_more_offset) = yy_flex_strlen( yytext M4_YY_CALL_LAST_ARG))"); indent_puts ("#define YY_NEED_STRLEN"); indent_puts ("#define YY_MORE_ADJ 0"); indent_puts ("#define YY_RESTORE_YY_MORE_OFFSET \\"); indent_up (); indent_puts ("{ \\"); indent_puts ("YY_G(yy_more_offset) = YY_G(yy_prev_more_offset); \\"); indent_puts ("yyleng -= YY_G(yy_more_offset); \\"); indent_puts ("}"); indent_down (); } else { indent_puts ("#define yymore() (YY_G(yy_more_flag) = 1)"); indent_puts ("#define YY_MORE_ADJ YY_G(yy_more_len)"); indent_puts ("#define YY_RESTORE_YY_MORE_OFFSET"); } } else { indent_puts ("#define yymore() yymore_used_but_not_detected"); indent_puts ("#define YY_MORE_ADJ 0"); indent_puts ("#define YY_RESTORE_YY_MORE_OFFSET"); } if (!C_plus_plus) { if (yytext_is_array) { outn ("#ifndef YYLMAX"); outn ("#define YYLMAX 8192"); outn ("#endif\n"); if (!reentrant){ outn ("char yytext[YYLMAX];"); outn ("char *yytext_ptr;"); } } else { if(! reentrant) outn ("char *yytext;"); } } out (&action_array[defs1_offset]); line_directive_out (stdout, 0); skelout (); /* %% [5.0] - break point in skel */ if (!C_plus_plus) { if (use_read) { outn ("\terrno=0; \\"); outn ("\twhile ( (result = read( fileno(yyin), (char *) buf, max_size )) < 0 ) \\"); outn ("\t{ \\"); outn ("\t\tif( errno != EINTR) \\"); outn ("\t\t{ \\"); outn ("\t\t\tYY_FATAL_ERROR( \"input in flex scanner failed\" ); \\"); outn ("\t\t\tbreak; \\"); outn ("\t\t} \\"); outn ("\t\terrno=0; \\"); outn ("\t\tclearerr(yyin); \\"); outn ("\t}\\"); } else { outn ("\tif ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \\"); outn ("\t\t{ \\"); outn ("\t\tint c = '*'; \\"); outn ("\t\tsize_t n; \\"); outn ("\t\tfor ( n = 0; n < max_size && \\"); outn ("\t\t\t (c = getc( yyin )) != EOF && c != '\\n'; ++n ) \\"); outn ("\t\t\tbuf[n] = (char) c; \\"); outn ("\t\tif ( c == '\\n' ) \\"); outn ("\t\t\tbuf[n++] = (char) c; \\"); outn ("\t\tif ( c == EOF && ferror( yyin ) ) \\"); outn ("\t\t\tYY_FATAL_ERROR( \"input in flex scanner failed\" ); \\"); outn ("\t\tresult = n; \\"); outn ("\t\t} \\"); outn ("\telse \\"); outn ("\t\t{ \\"); outn ("\t\terrno=0; \\"); outn ("\t\twhile ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \\"); outn ("\t\t\t{ \\"); outn ("\t\t\tif( errno != EINTR) \\"); outn ("\t\t\t\t{ \\"); outn ("\t\t\t\tYY_FATAL_ERROR( \"input in flex scanner failed\" ); \\"); outn ("\t\t\t\tbreak; \\"); outn ("\t\t\t\t} \\"); outn ("\t\t\terrno=0; \\"); outn ("\t\t\tclearerr(yyin); \\"); outn ("\t\t\t} \\"); outn ("\t\t}\\"); } } skelout (); /* %% [6.0] - break point in skel */ indent_puts ("#define YY_RULE_SETUP \\"); indent_up (); if (bol_needed) { indent_puts ("if ( yyleng > 0 ) \\"); indent_up (); indent_puts ("YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \\"); indent_puts ("\t\t(yytext[yyleng - 1] == '\\n'); \\"); indent_down (); } indent_puts ("YY_USER_ACTION"); indent_down (); skelout (); /* %% [7.0] - break point in skel */ /* Copy prolog to output file. */ out (&action_array[prolog_offset]); line_directive_out (stdout, 0); skelout (); /* %% [8.0] - break point in skel */ set_indent (2); if (yymore_used && !yytext_is_array) { indent_puts ("YY_G(yy_more_len) = 0;"); indent_puts ("if ( YY_G(yy_more_flag) )"); indent_up (); indent_puts ("{"); indent_puts ("YY_G(yy_more_len) = YY_G(yy_c_buf_p) - YY_G(yytext_ptr);"); indent_puts ("YY_G(yy_more_flag) = 0;"); indent_puts ("}"); indent_down (); } skelout (); /* %% [9.0] - break point in skel */ gen_start_state (); /* Note, don't use any indentation. */ outn ("yy_match:"); gen_next_match (); skelout (); /* %% [10.0] - break point in skel */ set_indent (2); gen_find_action (); skelout (); /* %% [11.0] - break point in skel */ outn ("m4_ifdef( [[M4_YY_USE_LINENO]],[["); indent_puts ("if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )"); indent_up (); indent_puts ("{"); indent_puts ("yy_size_t yyl;"); do_indent (); out_str ("for ( yyl = %s; yyl < yyleng; ++yyl )\n", yymore_used ? (yytext_is_array ? "YY_G(yy_prev_more_offset)" : "YY_G(yy_more_len)") : "0"); indent_up (); indent_puts ("if ( yytext[yyl] == '\\n' )"); indent_up (); indent_puts ("M4_YY_INCR_LINENO();"); indent_down (); indent_down (); indent_puts ("}"); indent_down (); outn ("]])"); skelout (); /* %% [12.0] - break point in skel */ if (ddebug) { indent_puts ("if ( yy_flex_debug )"); indent_up (); indent_puts ("{"); indent_puts ("if ( yy_act == 0 )"); indent_up (); indent_puts (C_plus_plus ? "std::cerr << \"--scanner backing up\\n\";" : "fprintf( stderr, \"--scanner backing up\\n\" );"); indent_down (); do_indent (); out_dec ("else if ( yy_act < %d )\n", num_rules); indent_up (); if (C_plus_plus) { indent_puts ("std::cerr << \"--accepting rule at line \" << yy_rule_linenum[yy_act] <<"); indent_puts (" \"(\\\"\" << yytext << \"\\\")\\n\";"); } else { indent_puts ("fprintf( stderr, \"--accepting rule at line %ld (\\\"%s\\\")\\n\","); indent_puts (" (long)yy_rule_linenum[yy_act], yytext );"); } indent_down (); do_indent (); out_dec ("else if ( yy_act == %d )\n", num_rules); indent_up (); if (C_plus_plus) { indent_puts ("std::cerr << \"--accepting default rule (\\\"\" << yytext << \"\\\")\\n\";"); } else { indent_puts ("fprintf( stderr, \"--accepting default rule (\\\"%s\\\")\\n\","); indent_puts (" yytext );"); } indent_down (); do_indent (); out_dec ("else if ( yy_act == %d )\n", num_rules + 1); indent_up (); indent_puts (C_plus_plus ? "std::cerr << \"--(end of buffer or a NUL)\\n\";" : "fprintf( stderr, \"--(end of buffer or a NUL)\\n\" );"); indent_down (); do_indent (); outn ("else"); indent_up (); if (C_plus_plus) { indent_puts ("std::cerr << \"--EOF (start condition \" << YY_START << \")\\n\";"); } else { indent_puts ("fprintf( stderr, \"--EOF (start condition %d)\\n\", YY_START );"); } indent_down (); indent_puts ("}"); indent_down (); } /* Copy actions to output file. */ skelout (); /* %% [13.0] - break point in skel */ indent_up (); gen_bu_action (); out (&action_array[action_offset]); line_directive_out (stdout, 0); /* generate cases for any missing EOF rules */ for (i = 1; i <= lastsc; ++i) if (!sceof[i]) { do_indent (); out_str ("case YY_STATE_EOF(%s):\n", scname[i]); did_eof_rule = true; } if (did_eof_rule) { indent_up (); indent_puts ("yyterminate();"); indent_down (); } /* Generate code for handling NUL's, if needed. */ /* First, deal with backing up and setting up yy_cp if the scanner * finds that it should JAM on the NUL. */ skelout (); /* %% [14.0] - break point in skel */ set_indent (4); if (fullspd || fulltbl) indent_puts ("yy_cp = YY_G(yy_c_buf_p);"); else { /* compressed table */ if (!reject && !interactive) { /* Do the guaranteed-needed backing up to figure * out the match. */ indent_puts ("yy_cp = YY_G(yy_last_accepting_cpos);"); indent_puts ("yy_current_state = YY_G(yy_last_accepting_state);"); } else /* Still need to initialize yy_cp, though * yy_current_state was set up by * yy_get_previous_state(). */ indent_puts ("yy_cp = YY_G(yy_c_buf_p);"); } /* Generate code for yy_get_previous_state(). */ set_indent (1); skelout (); /* %% [15.0] - break point in skel */ gen_start_state (); set_indent (2); skelout (); /* %% [16.0] - break point in skel */ gen_next_state (true); set_indent (1); skelout (); /* %% [17.0] - break point in skel */ gen_NUL_trans (); skelout (); /* %% [18.0] - break point in skel */ skelout (); /* %% [19.0] - break point in skel */ /* Update BOL and yylineno inside of input(). */ if (bol_needed) { indent_puts ("YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\\n');"); if (do_yylineno) { indent_puts ("if ( YY_CURRENT_BUFFER_LVALUE->yy_at_bol )"); indent_up (); indent_puts ("M4_YY_INCR_LINENO();"); indent_down (); } } else if (do_yylineno) { indent_puts ("if ( c == '\\n' )"); indent_up (); indent_puts ("M4_YY_INCR_LINENO();"); indent_down (); } skelout (); /* Copy remainder of input to output. */ line_directive_out (stdout, 1); if (sectnum == 3) { OUT_BEGIN_CODE (); (void) flexscan (); /* copy remainder of input to output */ OUT_END_CODE (); } } flex-2.5.39/options.c0000644000175000017500000001701512314546064014672 0ustar srivastasrivasta/* flex - tool to generate fast lexical analyzers */ /* Copyright (c) 1990 The Regents of the University of California. */ /* All rights reserved. */ /* This code is derived from software contributed to Berkeley by */ /* Vern Paxson. */ /* The United States Government has rights in this work pursuant */ /* to contract no. DE-AC03-76SF00098 between the United States */ /* Department of Energy and the University of California. */ /* This file is part of flex. */ /* Redistribution and use in source and binary forms, with or without */ /* modification, are permitted provided that the following conditions */ /* are met: */ /* 1. Redistributions of source code must retain the above copyright */ /* notice, this list of conditions and the following disclaimer. */ /* 2. Redistributions in binary form must reproduce the above copyright */ /* notice, this list of conditions and the following disclaimer in the */ /* documentation and/or other materials provided with the distribution. */ /* Neither the name of the University nor the names of its contributors */ /* may be used to endorse or promote products derived from this software */ /* without specific prior written permission. */ /* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR */ /* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED */ /* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */ /* PURPOSE. */ #include "options.h" /* Be sure to synchronize these options with those defined in "options.h", * the giant switch() statement in "main.c", and the %option processing in * "scan.l". */ /* The command-line options, passed to scanopt_init() */ optspec_t flexopts[] = { {"-7", OPT_7BIT, 0} , {"--7bit", OPT_7BIT, 0} , /* Generate 7-bit scanner. */ {"-8", OPT_8BIT, 0} , {"--8bit", OPT_8BIT, 0} , /* Generate 8-bit scanner. */ {"--align", OPT_ALIGN, 0} , /* Trade off larger tables for better memory alignment. */ {"--noalign", OPT_NO_ALIGN, 0} , {"--always-interactive", OPT_ALWAYS_INTERACTIVE, 0} , {"--array", OPT_ARRAY, 0} , {"-b", OPT_BACKUP, 0} , {"--backup", OPT_BACKUP, 0} , /* Generate backing-up information to lex.backup. */ {"-B", OPT_BATCH, 0} , {"--batch", OPT_BATCH, 0} , /* Generate batch scanner (opposite of -I). */ {"--bison-bridge", OPT_BISON_BRIDGE, 0} , /* Scanner to be called by a bison pure parser. */ {"--bison-locations", OPT_BISON_BRIDGE_LOCATIONS, 0} , /* Scanner to be called by a bison pure parser. */ {"-i", OPT_CASE_INSENSITIVE, 0} , {"--case-insensitive", OPT_CASE_INSENSITIVE, 0} , /* Generate case-insensitive scanner. */ {"-C[aefFmr]", OPT_COMPRESSION, "Specify degree of table compression (default is -Cem)"}, {"-+", OPT_CPLUSPLUS, 0} , {"--c++", OPT_CPLUSPLUS, 0} , /* Generate C++ scanner class. */ {"-d", OPT_DEBUG, 0} , {"--debug", OPT_DEBUG, 0} , /* Turn on debug mode in generated scanner. */ {"--nodebug", OPT_NO_DEBUG, 0} , {"-s", OPT_NO_DEFAULT, 0} , {"--nodefault", OPT_NO_DEFAULT, 0} , /* Suppress default rule to ECHO unmatched text. */ {"--default", OPT_DEFAULT, 0} , {"-c", OPT_DONOTHING, 0} , /* For POSIX lex compatibility. */ {"-n", OPT_DONOTHING, 0} , /* For POSIX lex compatibility. */ {"--ecs", OPT_ECS, 0} , /* Construct equivalence classes. */ {"--noecs", OPT_NO_ECS, 0} , {"-F", OPT_FAST, 0} , {"--fast", OPT_FAST, 0} , /* Same as -CFr. */ {"-f", OPT_FULL, 0} , {"--full", OPT_FULL, 0} , /* Same as -Cfr. */ {"--header-file[=FILE]", OPT_HEADER_FILE, 0} , {"-?", OPT_HELP, 0} , {"-h", OPT_HELP, 0} , {"--help", OPT_HELP, 0} , /* Produce this help message. */ {"-I", OPT_INTERACTIVE, 0} , {"--interactive", OPT_INTERACTIVE, 0} , /* Generate interactive scanner (opposite of -B). */ {"-l", OPT_LEX_COMPAT, 0} , {"--lex-compat", OPT_LEX_COMPAT, 0} , /* Maximal compatibility with original lex. */ {"-X", OPT_POSIX_COMPAT, 0} , {"--posix-compat", OPT_POSIX_COMPAT, 0} , /* Maximal compatibility with POSIX lex. */ {"--preproc=NUM", OPT_PREPROC_LEVEL, 0} , {"-L", OPT_NO_LINE, 0} , /* Suppress #line directives in scanner. */ {"--noline", OPT_NO_LINE, 0} , /* Suppress #line directives in scanner. */ {"--main", OPT_MAIN, 0} , /* use built-in main() function. */ {"--nomain", OPT_NO_MAIN, 0} , {"--meta-ecs", OPT_META_ECS, 0} , /* Construct meta-equivalence classes. */ {"--nometa-ecs", OPT_NO_META_ECS, 0} , {"--never-interactive", OPT_NEVER_INTERACTIVE, 0} , {"-o FILE", OPT_OUTFILE, 0} , {"--outfile=FILE", OPT_OUTFILE, 0} , /* Write to FILE (default is lex.yy.c) */ {"-p", OPT_PERF_REPORT, 0} , {"--perf-report", OPT_PERF_REPORT, 0} , /* Generate performance report to stderr. */ {"--pointer", OPT_POINTER, 0} , {"-P PREFIX", OPT_PREFIX, 0} , {"--prefix=PREFIX", OPT_PREFIX, 0} , /* Use PREFIX (default is yy) */ {"-Dmacro", OPT_PREPROCDEFINE, 0} , /* Define a preprocessor symbol. */ {"--read", OPT_READ, 0} , /* Use read(2) instead of stdio. */ {"-R", OPT_REENTRANT, 0} , {"--reentrant", OPT_REENTRANT, 0} , /* Generate a reentrant C scanner. */ {"--noreentrant", OPT_NO_REENTRANT, 0} , {"--reject", OPT_REJECT, 0} , {"--noreject", OPT_NO_REJECT, 0} , {"-S FILE", OPT_SKEL, 0} , {"--skel=FILE", OPT_SKEL, 0} , /* Use skeleton from FILE */ {"--stack", OPT_STACK, 0} , {"--stdinit", OPT_STDINIT, 0} , {"--nostdinit", OPT_NO_STDINIT, 0} , {"-t", OPT_STDOUT, 0} , {"--stdout", OPT_STDOUT, 0} , /* Write generated scanner to stdout. */ {"-T", OPT_TRACE, 0} , {"--trace", OPT_TRACE, 0} , /* Flex should run in trace mode. */ {"--tables-file[=FILE]", OPT_TABLES_FILE, 0} , /* Save tables to FILE */ {"--tables-verify", OPT_TABLES_VERIFY, 0} , /* Tables integrity check */ {"--nounistd", OPT_NO_UNISTD_H, 0} , /* Do not include unistd.h */ {"-v", OPT_VERBOSE, 0} , {"--verbose", OPT_VERBOSE, 0} , /* Write summary of scanner statistics to stdout. */ {"-V", OPT_VERSION, 0} , {"--version", OPT_VERSION, 0} , /* Report flex version. */ {"--warn", OPT_WARN, 0} , {"-w", OPT_NO_WARN, 0} , {"--nowarn", OPT_NO_WARN, 0} , /* Suppress warning messages. */ {"--noansi-definitions", OPT_NO_ANSI_FUNC_DEFS, 0} , {"--noansi-prototypes", OPT_NO_ANSI_FUNC_PROTOS, 0} , {"--yyclass=NAME", OPT_YYCLASS, 0} , {"--yylineno", OPT_YYLINENO, 0} , {"--noyylineno", OPT_NO_YYLINENO, 0} , {"--yymore", OPT_YYMORE, 0} , {"--noyymore", OPT_NO_YYMORE, 0} , {"--noyywrap", OPT_NO_YYWRAP, 0} , {"--yywrap", OPT_YYWRAP, 0} , {"--nounput", OPT_NO_UNPUT, 0} , {"--noyy_push_state", OPT_NO_YY_PUSH_STATE, 0} , {"--noyy_pop_state", OPT_NO_YY_POP_STATE, 0} , {"--noyy_top_state", OPT_NO_YY_TOP_STATE, 0} , {"--noyy_scan_buffer", OPT_NO_YY_SCAN_BUFFER, 0} , {"--noyy_scan_bytes", OPT_NO_YY_SCAN_BYTES, 0} , {"--noyy_scan_string", OPT_NO_YY_SCAN_STRING, 0} , {"--noyyget_extra", OPT_NO_YYGET_EXTRA, 0} , {"--noyyset_extra", OPT_NO_YYSET_EXTRA, 0} , {"--noyyget_leng", OPT_NO_YYGET_LENG, 0} , {"--noyyget_text", OPT_NO_YYGET_TEXT, 0} , {"--noyyget_lineno", OPT_NO_YYGET_LINENO, 0} , {"--noyyset_lineno", OPT_NO_YYSET_LINENO, 0} , {"--noyyget_in", OPT_NO_YYGET_IN, 0} , {"--noyyset_in", OPT_NO_YYSET_IN, 0} , {"--noyyget_out", OPT_NO_YYGET_OUT, 0} , {"--noyyset_out", OPT_NO_YYSET_OUT, 0} , {"--noyyget_lval", OPT_NO_YYGET_LVAL, 0} , {"--noyyset_lval", OPT_NO_YYSET_LVAL, 0} , {"--noyyget_lloc", OPT_NO_YYGET_LLOC, 0} , {"--noyyset_lloc", OPT_NO_YYSET_LLOC, 0} , {0, 0, 0} /* required final NULL entry. */ }; /* vim:set tabstop=8 softtabstop=4 shiftwidth=4: */ flex-2.5.39/aclocal.m40000644000175000017500000011051612314621556014673 0ustar srivastasrivasta# generated automatically by aclocal 1.11.6 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, # Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software # Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.11.6], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.11.6])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 9 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, # 2010, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 12 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], UPC, [depcc="$UPC" am_compiler_list=], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. #serial 5 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2008, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 16 # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.62])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl dnl The `parallel-tests' driver may need to know about EXEEXT, so add the dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl ]) dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation, # Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # AM_PROG_LEX # ----------- # Autoconf leaves LEX=: if lex or flex can't be found. Change that to a # "missing" invocation, for better error output. AC_DEFUN([AM_PROG_LEX], [AC_PREREQ(2.50)dnl AC_REQUIRE([AM_MISSING_HAS_RUN])dnl AC_REQUIRE([AC_PROG_LEX])dnl if test "$LEX" = :; then LEX=${am_missing_run}flex fi]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 6 # AM_PROG_CC_C_O # -------------- # Like AC_PROG_CC_C_O, but changed for automake. AC_DEFUN([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC_C_O])dnl AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl # FIXME: we rely on the cache variable name because # there is no other way. set dummy $CC am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']` eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o if test "$am_t" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi dnl Make sure AC_PROG_CC is never called again, or it will override our dnl setting of CC. m4_define([AC_PROG_CC], [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])]) ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 6 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation, # Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_PROG_MKDIR_P # --------------- # Check for `mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software # Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) # Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 3 # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([m4/gettext.m4]) m4_include([m4/iconv.m4]) m4_include([m4/intlmacosx.m4]) m4_include([m4/lib-ld.m4]) m4_include([m4/lib-link.m4]) m4_include([m4/lib-prefix.m4]) m4_include([m4/libtool.m4]) m4_include([m4/ltoptions.m4]) m4_include([m4/ltsugar.m4]) m4_include([m4/ltversion.m4]) m4_include([m4/lt~obsolete.m4]) m4_include([m4/nls.m4]) m4_include([m4/po.m4]) m4_include([m4/progtest.m4]) flex-2.5.39/options.h0000644000175000017500000000624312314546064014700 0ustar srivastasrivasta/* flex - tool to generate fast lexical analyzers */ /* Copyright (c) 1990 The Regents of the University of California. */ /* All rights reserved. */ /* This code is derived from software contributed to Berkeley by */ /* Vern Paxson. */ /* The United States Government has rights in this work pursuant */ /* to contract no. DE-AC03-76SF00098 between the United States */ /* Department of Energy and the University of California. */ /* This file is part of flex. */ /* Redistribution and use in source and binary forms, with or without */ /* modification, are permitted provided that the following conditions */ /* are met: */ /* 1. Redistributions of source code must retain the above copyright */ /* notice, this list of conditions and the following disclaimer. */ /* 2. Redistributions in binary form must reproduce the above copyright */ /* notice, this list of conditions and the following disclaimer in the */ /* documentation and/or other materials provided with the distribution. */ /* Neither the name of the University nor the names of its contributors */ /* may be used to endorse or promote products derived from this software */ /* without specific prior written permission. */ /* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR */ /* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED */ /* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */ /* PURPOSE. */ #ifndef OPTIONS_H #define OPTIONS_H #include "scanopt.h" extern optspec_t flexopts[]; enum flexopt_flag_t { /* Use positive integers only, since they are return codes for scanopt. * Order is not important. */ OPT_7BIT = 1, OPT_8BIT, OPT_ALIGN, OPT_ALWAYS_INTERACTIVE, OPT_ARRAY, OPT_BACKUP, OPT_BATCH, OPT_BISON_BRIDGE, OPT_BISON_BRIDGE_LOCATIONS, OPT_CASE_INSENSITIVE, OPT_COMPRESSION, OPT_CPLUSPLUS, OPT_DEBUG, OPT_DEFAULT, OPT_DONOTHING, OPT_ECS, OPT_FAST, OPT_FULL, OPT_HEADER_FILE, OPT_HELP, OPT_INTERACTIVE, OPT_LEX_COMPAT, OPT_POSIX_COMPAT, OPT_MAIN, OPT_META_ECS, OPT_NEVER_INTERACTIVE, OPT_NO_ALIGN, OPT_NO_ANSI_FUNC_DEFS, OPT_NO_ANSI_FUNC_PROTOS, OPT_NO_DEBUG, OPT_NO_DEFAULT, OPT_NO_ECS, OPT_NO_LINE, OPT_NO_MAIN, OPT_NO_META_ECS, OPT_NO_REENTRANT, OPT_NO_REJECT, OPT_NO_STDINIT, OPT_NO_UNPUT, OPT_NO_WARN, OPT_NO_YYGET_EXTRA, OPT_NO_YYGET_IN, OPT_NO_YYGET_LENG, OPT_NO_YYGET_LINENO, OPT_NO_YYGET_LLOC, OPT_NO_YYGET_LVAL, OPT_NO_YYGET_OUT, OPT_NO_YYGET_TEXT, OPT_NO_YYLINENO, OPT_NO_YYMORE, OPT_NO_YYSET_EXTRA, OPT_NO_YYSET_IN, OPT_NO_YYSET_LINENO, OPT_NO_YYSET_LLOC, OPT_NO_YYSET_LVAL, OPT_NO_YYSET_OUT, OPT_NO_YYWRAP, OPT_NO_YY_POP_STATE, OPT_NO_YY_PUSH_STATE, OPT_NO_YY_SCAN_BUFFER, OPT_NO_YY_SCAN_BYTES, OPT_NO_YY_SCAN_STRING, OPT_NO_YY_TOP_STATE, OPT_OUTFILE, OPT_PERF_REPORT, OPT_POINTER, OPT_PREFIX, OPT_PREPROCDEFINE, OPT_PREPROC_LEVEL, OPT_READ, OPT_REENTRANT, OPT_REJECT, OPT_SKEL, OPT_STACK, OPT_STDINIT, OPT_STDOUT, OPT_TABLES_FILE, OPT_TABLES_VERIFY, OPT_TRACE, OPT_NO_UNISTD_H, OPT_VERBOSE, OPT_VERSION, OPT_WARN, OPT_YYCLASS, OPT_YYLINENO, OPT_YYMORE, OPT_YYWRAP }; #endif /* vim:set tabstop=8 softtabstop=4 shiftwidth=4 textwidth=0: */ flex-2.5.39/configure.ac0000644000175000017500000001216212314621207015310 0ustar srivastasrivasta# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. # autoconf requirements and initialization AC_INIT([the fast lexical analyser generator], [2.5.39], [flex-help@lists.sourceforge.net], [flex]) SHARED_VERSION_INFO="2:0:0" AC_SUBST(SHARED_VERSION_INFO) AC_CONFIG_SRCDIR([scan.l]) AM_INIT_AUTOMAKE([gnu check-news std-options dist-bzip2 dist-xz 1.10]) AC_CONFIG_HEADER([config.h:conf.in]) AC_CONFIG_LIBOBJ_DIR([lib]) # checks for programs AM_GNU_GETTEXT([external]) AM_GNU_GETTEXT_VERSION([0.18.1]) AC_PROG_YACC AM_PROG_LEX AC_PROG_CC AC_PROG_CXX AM_PROG_CC_C_O AC_PROG_LN_S LT_INIT AC_PROG_AWK AC_PROG_INSTALL AC_PATH_PROG(BISON, bison,bison) AC_PATH_PROG(HELP2MAN, help2man, help2man) # Check for a m4 that supports -P AC_CACHE_CHECK([for m4 that supports -P], [ac_cv_path_M4], [AC_PATH_PROGS_FEATURE_CHECK([M4], [gm4 gnum4 m4], [[m4out=`echo 'm''4_divnum' | $ac_path_M4 -P`] [test "x$m4out" = x0 \ && ac_cv_path_M4=$ac_path_M4 ac_path_M4_found=:]], [AC_MSG_ERROR([could not find m4 that supports -P])])]) AC_SUBST([M4], [$ac_cv_path_M4]) AC_DEFINE_UNQUOTED([M4], ["$M4"], [Define to the m4 executable name.]) AC_PATH_PROG(INDENT, indent, indent) # if INDENT is set to 'indent' then we didn't find indent if test "$INDENT" != indent ; then AC_MSG_CHECKING(if $INDENT is GNU indent) if $INDENT --version 2>/dev/null | head -n 1|grep "GNU indent" > /dev/null ; then AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) AC_MSG_WARN($INDENT does not appear to be GNU indent.) fi else AC_MSG_WARN(no indent program found: make indent target will not function) fi # checks for headers AC_HEADER_STDC AC_HEADER_SYS_WAIT AC_CHECK_HEADERS([inttypes.h libintl.h limits.h locale.h malloc.h netinet/in.h regex.h stddef.h stdlib.h string.h strings.h unistd.h]) # checks for libraries # The test test-pthread uses libpthread, so we check for it here, but # all we need is the preprocessor symbol defined since we don't need # LIBS to include libpthread for building flex. AC_CHECK_LIB(pthread, pthread_mutex_lock, AC_DEFINE([HAVE_LIBPTHREAD], 1, [pthread library] ), AC_DEFINE([HAVE_LIBPTHREAD], 0, [pthread library] ) ) AC_CHECK_HEADERS([pthread.h]) AC_CHECK_LIB(m, log10) # Checks for typedefs, structures, and compiler characteristics. AC_HEADER_STDBOOL AC_C_CONST AC_TYPE_SIZE_T # Checks for library functions. AC_FUNC_ALLOCA AC_FUNC_FORK AC_FUNC_MALLOC AC_FUNC_REALLOC AC_CHECK_FUNCS([dup2 isascii memset pow regcomp setlocale strchr strtol]) AC_CONFIG_FILES( Makefile doc/Makefile examples/Makefile examples/fastwc/Makefile examples/manual/Makefile lib/Makefile po/Makefile.in tests/Makefile tests/TEMPLATE/Makefile tests/test-array-nr/Makefile tests/test-array-r/Makefile tests/test-basic-nr/Makefile tests/test-basic-r/Makefile tests/test-bison-yylloc/Makefile tests/test-bison-yylval/Makefile tests/test-c-cpp-nr/Makefile tests/test-c-cpp-r/Makefile tests/test-header-nr/Makefile tests/test-header-r/Makefile tests/test-include-by-buffer/Makefile tests/test-include-by-push/Makefile tests/test-include-by-reentrant/Makefile tests/test-multiple-scanners-nr/Makefile tests/test-multiple-scanners-r/Makefile tests/test-noansi-nr/Makefile tests/test-noansi-r/Makefile tests/test-prefix-nr/Makefile tests/test-prefix-r/Makefile tests/test-pthread/Makefile tests/test-string-nr/Makefile tests/test-string-r/Makefile tests/test-yyextra/Makefile tests/test-alloc-extra/Makefile tests/test-lineno-nr/Makefile tests/test-lineno-trailing/Makefile tests/test-lineno-r/Makefile tests/test-linedir-r/Makefile tests/test-debug-r/Makefile tests/test-debug-nr/Makefile tests/test-mem-nr/Makefile tests/test-mem-r/Makefile tests/test-posix/Makefile tests/test-posixly-correct/Makefile tests/test-table-opts/Makefile tests/test-c++-basic/Makefile tests/test-bison-nr/Makefile tests/test-reject/Makefile tests/test-c++-multiple-scanners/Makefile tests/test-top/Makefile tests/test-rescan-nr/Makefile tests/test-rescan-r/Makefile tests/test-quotes/Makefile tests/test-ccl/Makefile tests/test-extended/Makefile tests/test-c++-yywrap/Makefile tests/test-concatenated-options/Makefile dnl --new-test-here-- This line is processed by tests/create-test. ) AC_OUTPUT flex-2.5.39/ltmain.sh0000644000175000017500000105204012314621550014643 0ustar srivastasrivasta # libtool (GNU libtool) 2.4.2 # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, # 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, # or obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Usage: $progname [OPTION]... [MODE-ARG]... # # Provide generalized library-building support services. # # --config show all configuration variables # --debug enable verbose shell tracing # -n, --dry-run display commands without modifying any files # --features display basic configuration information and exit # --mode=MODE use operation mode MODE # --preserve-dup-deps don't remove duplicate dependency libraries # --quiet, --silent don't print informational messages # --no-quiet, --no-silent # print informational messages (default) # --no-warn don't display warning messages # --tag=TAG use configuration variables from tag TAG # -v, --verbose print more informational messages than default # --no-verbose don't print the extra informational messages # --version print version information # -h, --help, --help-all print short, long, or detailed help message # # MODE must be one of the following: # # clean remove files from the build directory # compile compile a source file into a libtool object # execute automatically set library path, then run a program # finish complete the installation of libtool libraries # install install libraries or executables # link create a library or an executable # uninstall remove libraries from an installed directory # # MODE-ARGS vary depending on the MODE. When passed as first option, # `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. # Try `$progname --help --mode=MODE' for a more detailed description of MODE. # # When reporting a bug, please describe a test case to reproduce it and # include the following information: # # host-triplet: $host # shell: $SHELL # compiler: $LTCC # compiler flags: $LTCFLAGS # linker: $LD (gnu? $with_gnu_ld) # $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1ubuntu2 # automake: $automake_version # autoconf: $autoconf_version # # Report bugs to . # GNU libtool home page: . # General help using GNU software: . PROGRAM=libtool PACKAGE=libtool VERSION="2.4.2 Debian-2.4.2-1ubuntu2" TIMESTAMP="" package_revision=1.3337 # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # NLS nuisances: We save the old values to restore during execute mode. lt_user_locale= lt_safe_locale= for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${$lt_var+set}\" = set; then save_$lt_var=\$$lt_var $lt_var=C export $lt_var lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" fi" done LC_ALL=C LANGUAGE=C export LANGUAGE LC_ALL $lt_unset CDPATH # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath="$0" : ${CP="cp -f"} test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} : ${Xsed="$SED -e 1s/^X//"} # Global variables: EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. exit_status=$EXIT_SUCCESS # Make sure IFS has a sensible default lt_nl=' ' IFS=" $lt_nl" dirname="s,/[^/]*$,," basename="s,^.*/,," # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_dirname may be replaced by extended shell implementation # func_basename file func_basename () { func_basename_result=`$ECHO "${1}" | $SED "$basename"` } # func_basename may be replaced by extended shell implementation # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` } # func_dirname_and_basename may be replaced by extended shell implementation # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname may be replaced by extended shell implementation # These SED scripts presuppose an absolute path with a trailing slash. pathcar='s,^/\([^/]*\).*$,\1,' pathcdr='s,^/[^/]*,,' removedotparts=':dotsl s@/\./@/@g t dotsl s,/\.$,/,' collapseslashes='s@/\{1,\}@/@g' finalslash='s,/*$,/,' # func_normal_abspath PATH # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. # value returned in "$func_normal_abspath_result" func_normal_abspath () { # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` while :; do # Processed it all yet? if test "$func_normal_abspath_tpath" = / ; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result" ; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_relative_path SRCDIR DSTDIR # generates a relative path from SRCDIR to DSTDIR, with a trailing # slash if non-empty, suitable for immediately appending a filename # without needing to append a separator. # value returned in "$func_relative_path_result" func_relative_path () { func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=${func_dirname_result} if test "x$func_relative_path_tlibdir" = x ; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test "x$func_stripname_result" != x ; then func_relative_path_result=${func_relative_path_result}/${func_stripname_result} fi # Normalisation. If bindir is libdir, return empty string, # else relative path ending with a slash; either way, target # file name can be directly appended. if test ! -z "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result/" func_relative_path_result=$func_stripname_result fi } # The name of this program: func_dirname_and_basename "$progpath" progname=$func_basename_result # Make sure we have an absolute path for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=$func_dirname_result progdir=`cd "$progdir" && pwd` progpath="$progdir/$progname" ;; *) save_IFS="$IFS" IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS="$save_IFS" test -x "$progdir/$progname" && break done IFS="$save_IFS" test -n "$progdir" || progdir=`pwd` progpath="$progdir/$progname" ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed="${SED}"' -e 1s/^X//' sed_quote_subst='s/\([`"$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' # Sed substitution that converts a w32 file name or path # which contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-`\' parameter expansions in output of double_quote_subst that were # `\'-ed in input to the same. If an odd number of `\' preceded a '$' # in input to double_quote_subst, that '$' was protected from expansion. # Since each input `\' is now two `\'s, look for any number of runs of # four `\'s followed by two `\'s and then a '$'. `\' that '$'. bs='\\' bs2='\\\\' bs4='\\\\\\\\' dollar='\$' sed_double_backslash="\ s/$bs4/&\\ /g s/^$bs2$dollar/$bs&/ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g s/\n//g" # Standard options: opt_dry_run=false opt_help=false opt_quiet=false opt_verbose=false opt_warning=: # func_echo arg... # Echo program name prefixed message, along with the current mode # name if it has been set yet. func_echo () { $ECHO "$progname: ${opt_mode+$opt_mode: }$*" } # func_verbose arg... # Echo program name prefixed message in verbose mode only. func_verbose () { $opt_verbose && func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_error arg... # Echo program name prefixed message to standard error. func_error () { $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 } # func_warning arg... # Echo program name prefixed warning message to standard error. func_warning () { $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 # bash bug again: : } # func_fatal_error arg... # Echo program name prefixed message to standard error, and exit. func_fatal_error () { func_error ${1+"$@"} exit $EXIT_FAILURE } # func_fatal_help arg... # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { func_error ${1+"$@"} func_fatal_error "$help" } help="Try \`$progname --help' for more information." ## default # func_grep expression filename # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $GREP "$1" "$2" >/dev/null 2>&1 } # func_mkdir_p directory-path # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { my_directory_path="$1" my_dir_list= if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then # Protect directory names starting with `-' case $my_directory_path in -*) my_directory_path="./$my_directory_path" ;; esac # While some portion of DIR does not yet exist... while test ! -d "$my_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. my_dir_list="$my_directory_path:$my_dir_list" # If the last portion added has no slash in it, the list is done case $my_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` done my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` save_mkdir_p_IFS="$IFS"; IFS=':' for my_dir in $my_dir_list; do IFS="$save_mkdir_p_IFS" # mkdir can fail with a `File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$my_dir" 2>/dev/null || : done IFS="$save_mkdir_p_IFS" # Bail out if we (or some other process) failed to create a directory. test -d "$my_directory_path" || \ func_fatal_error "Failed to create \`$1'" fi } # func_mktempdir [string] # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, STRING is the basename for that directory. func_mktempdir () { my_template="${TMPDIR-/tmp}/${1-$progname}" if test "$opt_dry_run" = ":"; then # Return a directory name, but don't create it in dry-run mode my_tmpdir="${my_template}-$$" else # If mktemp works, use that first and foremost my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` if test ! -d "$my_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race my_tmpdir="${my_template}-${RANDOM-0}$$" save_mktempdir_umask=`umask` umask 0077 $MKDIR "$my_tmpdir" umask $save_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$my_tmpdir" || \ func_fatal_error "cannot create temporary directory \`$my_tmpdir'" fi $ECHO "$my_tmpdir" } # func_quote_for_eval arg # Aesthetically quote ARG to be evaled later. # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT # is double-quoted, suitable for a subsequent eval, whereas # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters # which are still active within double quotes backslashified. func_quote_for_eval () { case $1 in *[\\\`\"\$]*) func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; *) func_quote_for_eval_unquoted_result="$1" ;; esac case $func_quote_for_eval_unquoted_result in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and and variable # expansion for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" ;; *) func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" esac } # func_quote_for_expand arg # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { case $1 in *[\\\`\"]*) my_arg=`$ECHO "$1" | $SED \ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; *) my_arg="$1" ;; esac case $my_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") my_arg="\"$my_arg\"" ;; esac func_quote_for_expand_result="$my_arg" } # func_show_eval cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$my_cmd" my_status=$? if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_show_eval_locale cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$lt_user_locale $my_cmd" my_status=$? eval "$lt_safe_locale" if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_tr_sh # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_version # Echo version message to standard output and exit. func_version () { $opt_debug $SED -n '/(C)/!b go :more /\./!{ N s/\n# / / b more } :go /^# '$PROGRAM' (GNU /,/# warranty; / { s/^# // s/^# *$// s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ p }' < "$progpath" exit $? } # func_usage # Echo short help message to standard output and exit. func_usage () { $opt_debug $SED -n '/^# Usage:/,/^# *.*--help/ { s/^# // s/^# *$// s/\$progname/'$progname'/ p }' < "$progpath" echo $ECHO "run \`$progname --help | more' for full usage" exit $? } # func_help [NOEXIT] # Echo long help message to standard output and exit, # unless 'noexit' is passed as argument. func_help () { $opt_debug $SED -n '/^# Usage:/,/# Report bugs to/ { :print s/^# // s/^# *$// s*\$progname*'$progname'* s*\$host*'"$host"'* s*\$SHELL*'"$SHELL"'* s*\$LTCC*'"$LTCC"'* s*\$LTCFLAGS*'"$LTCFLAGS"'* s*\$LD*'"$LD"'* s/\$with_gnu_ld/'"$with_gnu_ld"'/ s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ p d } /^# .* home page:/b print /^# General help using/b print ' < "$progpath" ret=$? if test -z "$1"; then exit $ret fi } # func_missing_arg argname # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $opt_debug func_error "missing argument for $1." exit_cmd=exit } # func_split_short_opt shortopt # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. func_split_short_opt () { my_sed_short_opt='1s/^\(..\).*$/\1/;q' my_sed_short_rest='1s/^..\(.*\)$/\1/;q' func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` } # func_split_short_opt may be replaced by extended shell implementation # func_split_long_opt longopt # Set func_split_long_opt_name and func_split_long_opt_arg shell # variables after splitting LONGOPT at the `=' sign. func_split_long_opt () { my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' my_sed_long_arg='1s/^--[^=]*=//' func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` } # func_split_long_opt may be replaced by extended shell implementation exit_cmd=: magic="%%%MAGIC variable%%%" magic_exe="%%%MAGIC EXE variable%%%" # Global variables. nonopt= preserve_args= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "${1}=\$${1}\${2}" } # func_append may be replaced by extended shell implementation # func_append_quoted var value # Quote VALUE and append to the end of shell variable VAR, separated # by a space. func_append_quoted () { func_quote_for_eval "${2}" eval "${1}=\$${1}\\ \$func_quote_for_eval_result" } # func_append_quoted may be replaced by extended shell implementation # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "${@}"` } # func_arith may be replaced by extended shell implementation # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` } # func_len may be replaced by extended shell implementation # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` } # func_lo2o may be replaced by extended shell implementation # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` } # func_xform may be replaced by extended shell implementation # func_fatal_configuration arg... # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func_error ${1+"$@"} func_error "See the $PACKAGE documentation for more information." func_fatal_error "Fatal configuration error." } # func_config # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # Display the features supported by this script. func_features () { echo "host: $host" if test "$build_libtool_libs" = yes; then echo "enable shared libraries" else echo "disable shared libraries" fi if test "$build_old_libs" = yes; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag tagname # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname="$1" re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf="/$re_begincf/,/$re_endcf/p" # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Option defaults: opt_debug=: opt_dry_run=false opt_config=false opt_preserve_dup_deps=false opt_features=false opt_finish=false opt_help=false opt_help_all=false opt_silent=: opt_warning=: opt_verbose=: opt_silent=false opt_verbose=false # Parse options once, thoroughly. This comes as soon as possible in the # script to make things like `--version' happen as quickly as we can. { # this just eases exit handling while test $# -gt 0; do opt="$1" shift case $opt in --debug|-x) opt_debug='set -x' func_echo "enabling shell trace mode" $opt_debug ;; --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) opt_config=: func_config ;; --dlopen|-dlopen) optarg="$1" opt_dlopen="${opt_dlopen+$opt_dlopen }$optarg" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) opt_features=: func_features ;; --finish) opt_finish=: set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help_all=: opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $opt && break optarg="$1" opt_mode="$optarg" case $optarg in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_silent=false func_append preserve_args " $opt" ;; --no-warning|--no-warn) opt_warning=false func_append preserve_args " $opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $opt" ;; --silent|--quiet) opt_silent=: func_append preserve_args " $opt" opt_verbose=false ;; --verbose|-v) opt_verbose=: func_append preserve_args " $opt" opt_silent=false ;; --tag) test $# = 0 && func_missing_arg $opt && break optarg="$1" opt_tag="$optarg" func_append preserve_args " $opt $optarg" func_enable_tag "$optarg" shift ;; -\?|-h) func_usage ;; --help) func_help ;; --version) func_version ;; # Separate optargs to long options: --*=*) func_split_long_opt "$opt" set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-n*|-v*) func_split_short_opt "$opt" set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) break ;; -*) func_fatal_help "unrecognized option \`$opt'" ;; *) set dummy "$opt" ${1+"$@"}; shift; break ;; esac done # Validate options: # save first non-option argument if test "$#" -gt 0; then nonopt="$opt" shift fi # preserve --debug test "$opt_debug" = : || func_append preserve_args " --debug" case $host in *cygwin* | *mingw* | *pw32* | *cegcc*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then func_fatal_configuration "not configured to build any kind of library" fi # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test "$opt_mode" != execute; then func_error "unrecognized option \`-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$progname --help --mode=$opt_mode' for more information." } # Bail if the options were screwed $exit_cmd $EXIT_FAILURE } ## ----------- ## ## Main. ## ## ----------- ## # func_lalib_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null \ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_unsafe_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if `file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case "$lalib_p_line" in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test "$lalib_p" = yes } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { func_lalib_p "$1" } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $opt_debug save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$save_ifs eval cmd=\"$cmd\" func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # `FILE.' does not work on cygwin managed mounts. func_source () { $opt_debug case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case "$lt_sysroot:$1" in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result="=$func_stripname_result" ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $opt_debug if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with \`--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=${1} if test "$build_libtool_libs" = yes; then write_lobj=\'${2}\' else write_lobj=none fi if test "$build_old_libs" = yes; then write_oldobj=\'${3}\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$lt_sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $opt_debug # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result="" if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result" ; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $opt_debug if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $opt_debug # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $opt_debug if test -z "$2" && test -n "$1" ; then func_error "Could not determine host file name corresponding to" func_error " \`$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result="$1" fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $opt_debug if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " \`$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result="$3" fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $opt_debug case $4 in $1 ) func_to_host_path_result="$3$func_to_host_path_result" ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via `$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $opt_debug $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $opt_debug case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result="$1" } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result="$func_convert_core_msys_to_w32_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result="$func_cygpath_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result="$func_cygpath_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via `$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $opt_debug if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd="func_convert_path_${func_stripname_result}" fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $opt_debug func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result="$1" } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result="$func_convert_core_msys_to_w32_result" func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result="$func_cygpath_result" func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result="$func_cygpath_result" func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_mode_compile arg... func_mode_compile () { $opt_debug # Get the compilation command and the source file. base_compile= srcfile="$nonopt" # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg="$arg" arg_mode=normal ;; target ) libobj="$arg" arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify \`-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs="$IFS"; IFS=',' for arg in $args; do IFS="$save_ifs" func_append_quoted lastarg "$arg" done IFS="$save_ifs" func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg="$srcfile" srcfile="$arg" ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with \`-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj="$func_basename_result" } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from \`$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name \`$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname="$func_basename_result" xdir="$func_dirname_result" lobj=${xdir}$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test "$pic_mode" != no; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test "$suppress_opt" = yes; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then if test "$pic_mode" != yes; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test "$compiler_c_o" = yes; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test "$need_locks" != no; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test "$opt_mode" = compile && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a \`.o' file suitable for static linking -static only build a \`.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode \`$opt_mode'" ;; esac echo $ECHO "Try \`$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test "$opt_help" = :; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | sed -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | sed '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $opt_debug # The first argument is the command name. cmd="$nonopt" test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "\`$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "\`$file' was not linked with \`-export-dynamic'" continue fi func_dirname "$file" "" "." dir="$func_dirname_result" if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir="$func_dirname_result" ;; *) func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file="$progdir/$program" elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if test "X$opt_dry_run" = Xfalse; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS fi } test "$opt_mode" = execute && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $opt_debug libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "\`$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument \`$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and \`=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_silent && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the \`-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the \`$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the \`$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test "$opt_mode" = finish && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $opt_debug # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac; then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=yes ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test "x$prev" = x-m && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then func_quote_for_eval "$arg2" fi func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the \`$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_for_eval "$install_override_mode" func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else func_dirname_and_basename "$dest" "" "." destdir="$func_dirname_result" destname="$func_basename_result" # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "\`$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "\`$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir="$func_dirname_result" func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking \`$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname="$1" shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme="$stripme" case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme="" ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try `ln -sf' first, because the `ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib="$destdir/$realname" func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name="$func_basename_result" instname="$dir/$name"i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest="$destfile" destfile= ;; *) func_fatal_help "cannot copy a libtool object to \`$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext="" case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=".exe" fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script \`$wrapper'" finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then func_warning "\`$lib' has not been installed in \`$libdir'" finalize=no fi done relink_command= func_source "$wrapper" outputname= if test "$fast_install" = no && test -n "$relink_command"; then $opt_dry_run || { if test "$finalize" = yes; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file="$func_basename_result" outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_silent || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink \`$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file="$outputname" else func_warning "cannot relink \`$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name="$func_basename_result" # Set up the ranlib parameters. oldlib="$destdir/$name" func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run \`$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test "$opt_mode" = install && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $opt_debug my_outputname="$1" my_originator="$2" my_pic_p="${3-no}" my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms="${my_outputname}S.c" else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${my_outputname}.nm" func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then func_verbose "generating symbol list for \`$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$outputname.exp" $opt_dry_run || { $RM $export_symbols eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from \`$dlprefile'" func_basename "$dlprefile" name="$func_basename_result" case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename="" if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname" ; then func_basename "$dlprefile_dlname" dlprefile_dlbasename="$func_basename_result" else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename" ; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[]; LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = {\ { \"$my_originator\", (void *) 0 }," case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) if test "X$my_pic_p" != Xno; then pic_flag_for_symtable=" $pic_flag" fi ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' # Transform the symbol file into the correct name. symfileobj="$output_objdir/${my_outputname}S.$objext" case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for \`$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $opt_debug win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s,.*,import, p q } }'` case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $opt_debug sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $opt_debug match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive which possess that section. Heuristic: eliminate # all those which have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $opt_debug func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $opt_debug func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $opt_debug if func_cygming_gnu_implib_p "$1" ; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1" ; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result="" fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $opt_debug f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" if test "$lock_old_archive_extraction" = yes; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test "$lock_old_archive_extraction" = yes; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $opt_debug my_gentop="$1"; shift my_oldlibs=${1+"$@"} my_oldobjs="" my_xlib="" my_xabs="" my_xdir="" for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib="$func_basename_result" my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir="$my_gentop/$my_xlib_u" func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` darwin_base_archive=`basename "$darwin_archive"` darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches ; do func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" func_extract_an_archive "`pwd`" "${darwin_base_archive}" cd "$darwin_curdir" $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result="$my_oldobjs" } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory in which it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ which is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options which match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include /* declarations of non-ANSI functions */ #if defined(__MINGW32__) # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined(__CYGWIN__) # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined (other platforms) ... */ #endif /* portability defines, excluding path handling macros */ #if defined(_MSC_VER) # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC # ifndef _INTPTR_T_DEFINED # define _INTPTR_T_DEFINED # define intptr_t int # endif #elif defined(__MINGW32__) # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined(__CYGWIN__) # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined (other platforms) ... */ #endif #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ defined (__OS2__) # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free ((void *) stale); stale = 0; } \ } while (0) #if defined(LT_DEBUGWRAPPER) static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; int tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined (HAVE_DOS_BASED_FILE_SYSTEM) if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined (HAVE_DOS_BASED_FILE_SYSTEM) } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = q - p; p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (strcmp (str, pat) == 0) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else int len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { int orig_value_len = strlen (orig_value); int add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ int len = strlen (new_value); while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[len-1] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $opt_debug case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_mode_link arg... func_mode_link () { $opt_debug case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll which has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=no prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module="${wl}-single_module" func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg="$1" shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir="$arg" prev= continue ;; dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" test -f "$arg" \ || func_fatal_error "symbol file \`$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file \`$arg' does not exist" fi arg=$save_arg prev= continue ;; precious_regex) precious_files_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds="$arg" prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "\`-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between \`-L' and \`$1'" else func_fatal_error "need path for \`-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of \`$dir'" dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test "X$arg" = "X-lc" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test "X$arg" = "X-lc" && continue ;; esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module="${wl}-multi_module" continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "\`-no-install' is ignored for $host" func_warning "assuming \`-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-flto*|-fwhopr*|-fuse-linker-plugin) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test "$prev" = dlfiles; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the \`$prevarg' option requires an argument" if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname="$func_basename_result" libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" func_dirname "$output" "/" "" output_objdir="$func_dirname_result$objdir" func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps ; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test "$linkmode,$pass" = "lib,link"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs="$tmp_deplibs" fi if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS%" test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" ;; esac fi if test "$linkmode,$pass" = "lib,dlpreopen"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs="$dlprefiles" fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then func_warning "\`-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test "$linkmode" = lib; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib="$searchdir/lib${name}${search_ext}" if test -f "$lib"; then if test "$search_ext" = ".la"; then found=yes else found=no fi break 2 fi done done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll="$l" done if test "X$ll" = "X$old_library" ; then # only static version available found=no func_dirname "$lib" "" "." ladir="$func_dirname_result" lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l *.ltframework) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "\`-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=no case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi ;; pass_all) valid_a_lib=yes ;; esac if test "$valid_a_lib" != yes; then echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." else echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi ;; esac continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append newdlfiles " $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" fi # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "\`$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir="$func_dirname_result" dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done elif test "$linkmode" != prog && test "$linkmode" != lib; then func_fatal_error "\`$lib' is not a convenience library" fi continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test "$prefer_static_libs" = yes || test "$prefer_static_libs,$installed" = "built,no"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib="$l" done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then func_fatal_error "cannot -dlopen a convenience library: \`$lib'" fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of \`$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir="$ladir" fi ;; esac func_basename "$lib" laname="$func_basename_result" # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library \`$lib' was moved." dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$lt_sysroot$libdir" absdir="$lt_sysroot$libdir" fi test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir="$ladir" absdir="$abs_ladir" # Remove this search path later func_append notinst_path " $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir" && test "$linkmode" = prog; then func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" fi case "$host" in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test "$linkmode" = prog && test "$pass" != link; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { { test "$prefer_static_libs" = no || test "$prefer_static_libs,$installed" = "built,yes"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then # Make sure the rpath contains only unique directories. case "$temp_rpath:" in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test "$use_static_libs" = built && test "$installed" = yes; then use_static_libs=no fi if test -n "$library_names" && { test "$use_static_libs" = no || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test "$installed" = no; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule="" for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule="$dlpremoduletest" break fi done if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then echo if test "$linkmode" = prog; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname="$1" shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc*) func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" func_basename "$soroot" soname="$func_basename_result" func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from \`$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for \`$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test "$linkmode" = prog || test "$opt_mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" case $host in *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; *-*-sysv4*uw2*) add_dir="-L$dir" ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir="-L$dir" ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we can not # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null ; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library" ; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else add="$dir/$old_library" fi elif test -n "$old_library"; then add="$dir/$old_library" fi fi esac elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$absdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && test "$hardcode_minus_L" != yes && test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$opt_mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then add="$inst_prefix_dir$libdir/$linklib" else add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo $ECHO "*** Warning: This system can not link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs="$temp_deplibs" fi func_append newlib_search_path " $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path="$deplib" ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of \`$dir'" absdir="$dir" fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl" ; then depdepl="$absdir/$objdir/$depdepl" darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" path= fi fi ;; *) path="-L$absdir/$objdir" ;; esac else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "\`$deplib' seems to be moved" path="-L$absdir" fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test "$pass" = link; then if test "$linkmode" = "prog"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i="" ;; esac if test -n "$i" ; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" fi if test "$linkmode" = prog || test "$linkmode" = lib; then dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "\`-R' is ignored for archives" test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "\`-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "\`-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test "$module" = no && \ func_fatal_help "libtool library \`$output' must begin with \`lib'" if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" func_append libobjs " $objs" fi fi test "$dlself" != no && \ func_warning "\`-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test "$#" -gt 1 && \ func_warning "ignoring multiple \`-rpath's for a libtool library" install_libdir="$1" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. # Some compilers have problems with a `.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "\`-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 shift IFS="$save_ifs" test -n "$7" && \ func_fatal_help "too many parameters to \`-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major="$1" number_minor="$2" number_revision="$3" # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # which has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|qnx|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_minor" lt_irix_increment=no ;; *) func_fatal_configuration "$modename: unknown library version type \`$version_type'" ;; esac ;; no) current="$1" revision="$2" age="$3" ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT \`$current' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION \`$revision' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE \`$age' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE \`$age' is greater than the current interface number \`$current'" func_fatal_error "\`$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current" ;; irix | nonstopux) if test "X$lt_irix_increment" = "Xno"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring:${iface}.0" done # Make executables depend on our current version. func_append verstring ":${current}.0" ;; qnx) major=".$current" versuffix=".$current" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; *) func_fatal_configuration "unknown library version type \`$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then func_warning "undefined symbols not allowed in $host shared libraries" build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi func_generate_dlsyms "$libname" "$libname" "yes" func_append libobjs " $symfileobj" test "X$libobjs" = "X " && libobjs= if test "$opt_mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) func_append dlfiles " $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` done fi case $tmp_deplibs in *[!\ \ ]*) echo if test "X$deplibs_check_method" = "Xnone"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs="$new_libs" # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then # Remove ${wl} instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$opt_mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname="$1" shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi if test -z "$dlname"; then dlname=$soname fi lib="$output_objdir/$realname" linknames= for link do func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols="$output_objdir/$libname.uexp" func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile if test "x`$SED 1q $export_symbols`" != xEXPORTS; then # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols="$export_symbols" export_symbols= always_export_symbols=yes fi fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' for cmd1 in $cmds; do IFS="$save_ifs" # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test "$try_normal_branch" = yes \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=${output_objdir}/${output_la}.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS="$save_ifs" if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test "$compiler_needs_object" = yes && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test "X$skipped_export" != "X:" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then output=${output_objdir}/${output_la}.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then output=${output_objdir}/${output_la}.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test "$compiler_needs_object" = yes; then firstobj="$1 " shift fi for obj do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-${k}.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test "X$objlist" = X || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-${k}.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-${k}.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\${concat_cmds}$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi if ${skipped_export-false}; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi fi test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs="$IFS"; IFS='~' for cmd in $concat_cmds; do IFS="$save_ifs" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi if ${skipped_export-false}; then if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi fi libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "\`-R' is ignored for objects" test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for objects" test -n "$release" && \ func_warning "\`-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object \`$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec and hope we can get by with # turning comma into space.. wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` else gentop="$output_objdir/${obj}x" func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" # Create the old-style object. reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for programs" test -n "$release" && \ func_warning "\`-release' is ignored for programs" test "$preload" = yes \ && test "$dlopen_support" = unknown \ && test "$dlopen_self" = unknown \ && test "$dlopen_self_static" = unknown && \ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test "$tagname" = CXX ; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " ${wl}-bind_at_load" func_append finalize_command " ${wl}-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs="$new_libs" func_append compile_command " $compile_deplibs" func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append finalize_perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" "no" # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=yes case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=no ;; *cygwin* | *mingw* ) if test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; *) if test "$need_relink" = no || test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; esac if test "$wrappers_required" = no; then # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.${objext}"; then func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' fi exit $exit_status fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" func_warning "this platform does not like uninstalled shared libraries" func_warning "\`$output' will be relinked during installation" else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource="$output_path/$objdir/lt-$output_name.c" cwrapper="$output_path/$output_name.exe" $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host" ; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save $symfileobj" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" if test "$preload" = yes && test -f "$symfileobj"; then func_append oldobjs " $symfileobj" fi fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase="$func_basename_result" case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name="$func_basename_result" func_resolve_sysroot "$deplib" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles="$newdlprefiles" else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles="$newdlprefiles" fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test "x$bindir" != x ; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that can not go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } { test "$opt_mode" = link || test "$opt_mode" = relink; } && func_mode_link ${1+"$@"} # func_mode_uninstall arg... func_mode_uninstall () { $opt_debug RM="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) func_append RM " $arg"; rmforce=yes ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir="$func_dirname_result" if test "X$dir" = X.; then odir="$objdir" else odir="$dir/$objdir" fi func_basename "$file" name="$func_basename_result" test "$opt_mode" = uninstall && odir="$dir" # Remember odir for removal later, being careful to avoid duplicates if test "$opt_mode" = clean; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case "$opt_mode" in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test "$pic_object" != none; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test "$non_pic_object" != none; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test "$opt_mode" = clean ; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name" ; then func_append rmfiles " $odir/lt-${noexename}.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } { test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && func_mode_uninstall ${1+"$@"} test -z "$opt_mode" && { help="$generic_help" func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode \`$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: # vi:sw=2 flex-2.5.39/COPYING0000644000175000017500000000347712060131401014054 0ustar srivastasrivastaFlex carries the copyright used for BSD software, slightly modified because it originated at the Lawrence Berkeley (not Livermore!) Laboratory, which operates under a contract with the Department of Energy: Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007 The Flex Project. Copyright (c) 1990, 1997 The Regents of the University of California. All rights reserved. This code is derived from software contributed to Berkeley by Vern Paxson. The United States Government has rights in this work pursuant to contract no. DE-AC03-76SF00098 between the United States Department of Energy and the University of California. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. This basically says "do whatever you please with this software except remove this notice or take advantage of the University's (or the flex authors') name". Note that the "flex.skl" scanner skeleton carries no copyright notice. You are free to do whatever you please with scanners generated using flex; for them, you are not even bound by the above copyright. flex-2.5.39/lib/0002755000175000017500000000000012314621664013577 5ustar srivastasrivastaflex-2.5.39/lib/malloc.c0000755000175000017500000000054612060131411015200 0ustar srivastasrivasta #include #undef malloc #include void *malloc (); /* Allocate an N-byte block of memory from the heap. If N is zero, allocate a 1-byte block. */ void * rpl_malloc (size_t n) { if (n == 0) n = 1; return malloc (n); } flex-2.5.39/lib/lib.c0000644000175000017500000000040012060131411014461 0ustar srivastasrivasta/* Since building an empty library could cause problems, we provide a * function to go into the library. We could make this non-trivial by * moving something that flex treats as a library function into this * directory. */ void do_nothing(){ return;} flex-2.5.39/lib/realloc.c0000644000175000017500000000047312060131411015346 0ustar srivastasrivasta#include #include #include void * rpl_realloc (void *p, size_t n) { void *result; if (n == 0) { n = 1; } if (p == NULL) { result = malloc (n); } else result = realloc (p, n); if (result == NULL) errno = ENOMEM; return result; } flex-2.5.39/lib/Makefile.in0000644000175000017500000003741112314621560015643 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = lib DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in malloc.c \ realloc.c ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libcompat_la_DEPENDENCIES = $(LIBOBJS) am_libcompat_la_OBJECTS = lib.lo libcompat_la_OBJECTS = $(am_libcompat_la_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(libcompat_la_SOURCES) DIST_SOURCES = $(libcompat_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libcompat.la libcompat_la_SOURCES = lib.c libcompat_la_LIBADD = $(LIBOBJS) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libcompat.la: $(libcompat_la_OBJECTS) $(libcompat_la_DEPENDENCIES) $(EXTRA_libcompat_la_DEPENDENCIES) $(LINK) $(libcompat_la_OBJECTS) $(libcompat_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/malloc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/realloc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf $(DEPDIR) ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf $(DEPDIR) ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/lib/Makefile.am0000644000175000017500000000014112300734270015616 0ustar srivastasrivastanoinst_LTLIBRARIES = libcompat.la libcompat_la_SOURCES = lib.c libcompat_la_LIBADD = $(LIBOBJS) flex-2.5.39/depcomp0000755000175000017500000005064312314621561014410 0ustar srivastasrivasta#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2012-03-27.16; # UTC # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, # 2011, 2012 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # A tabulation character. tab=' ' # A newline character. nl=' ' if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' "$nl" < "$tmpdepfile" | ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependent.h'. # Do two passes, one to just change these to # '$object: dependent.h' and one to simply 'dependent.h:'. sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'. # However on # $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\': # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... # tcc 0.9.26 (FIXME still under development at the moment of writing) # will emit a similar output, but also prepend the continuation lines # with horizontal tabulation characters. "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form 'foo.o: dependent.h', # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'. # Do two passes, one to just change these to # '$object: dependent.h' and one to simply 'dependent.h:'. sed -e "s/^[ $tab][ $tab]*/ /" -e "s,^[^:]*:,$object :," \ < "$tmpdepfile" > "$depfile" sed ' s/[ '"$tab"'][ '"$tab"']*/ /g s/^ *// s/ *\\*$// s/^[^:]*: *// /^$/d /:$/d s/$/ :/ ' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # With Tru64 cc, shared objects can also be used to make a # static library. This mechanism is used in libtool 1.4 series to # handle both shared and static libraries in a single compilation. # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. # # With libtool 1.5 this exception was removed, and libtool now # generates 2 separate objects for the 2 libraries. These two # compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 tmpdepfile2=$dir$base.o.d # libtool 1.5 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.o.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d tmpdepfile4=$dir$base.d "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test "$stat" = 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' "$nl" < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: flex-2.5.39/Makefile.in0000644000175000017500000012657012314621561015103 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. # Notes on building: # Possible values for DEFS: # # By default, flex generates 8-bit scanners when using table compression, # and 7-bit scanners when using uncompressed tables (-f or -F options). # For flex to always generate 8-bit scanners, add "-DDEFAULT_CSIZE=256" # to DEFS. # # For Vax/VMS, add "-DVMS" to DEFS. # # For MS-DOS, add "-DMS_DOS" to DEFS. See the directory MISC/MSDOS for # additional info. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = flex$(EXEEXT) subdir = . DIST_COMMON = README $(am__configure_deps) $(dist_doc_DATA) \ $(include_HEADERS) $(noinst_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/conf.in \ $(top_srcdir)/configure ABOUT-NLS AUTHORS COPYING ChangeLog \ INSTALL NEWS THANKS TODO compile config.guess config.rpath \ config.sub depcomp install-sh ltmain.sh missing parse.c \ parse.h scan.c ylwrap ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \ "$(DESTDIR)$(docdir)" "$(DESTDIR)$(includedir)" LTLIBRARIES = $(lib_LTLIBRARIES) libfl_la_LIBADD = am_libfl_la_OBJECTS = libmain.lo libyywrap.lo libfl_la_OBJECTS = $(am_libfl_la_OBJECTS) libfl_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(libfl_la_LDFLAGS) \ $(LDFLAGS) -o $@ libfl_pic_la_LIBADD = am_libfl_pic_la_OBJECTS = libmain.lo libyywrap.lo libfl_pic_la_OBJECTS = $(am_libfl_pic_la_OBJECTS) libfl_pic_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libfl_pic_la_LDFLAGS) $(LDFLAGS) -o $@ PROGRAMS = $(bin_PROGRAMS) am_flex_OBJECTS = ccl.$(OBJEXT) dfa.$(OBJEXT) ecs.$(OBJEXT) \ scanflags.$(OBJEXT) gen.$(OBJEXT) main.$(OBJEXT) \ misc.$(OBJEXT) nfa.$(OBJEXT) parse.$(OBJEXT) scan.$(OBJEXT) \ skel.$(OBJEXT) sym.$(OBJEXT) tblcmp.$(OBJEXT) yylex.$(OBJEXT) \ options.$(OBJEXT) scanopt.$(OBJEXT) buf.$(OBJEXT) \ tables.$(OBJEXT) tables_shared.$(OBJEXT) filter.$(OBJEXT) \ regex.$(OBJEXT) flex_OBJECTS = $(am_flex_OBJECTS) flex_LDADD = $(LDADD) flex_DEPENDENCIES = lib/libcompat.la DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS) LTLEXCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(LEX) $(AM_LFLAGS) $(LFLAGS) YLWRAP = $(top_srcdir)/ylwrap YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS) LTYACCCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(YACC) $(AM_YFLAGS) $(YFLAGS) SOURCES = $(libfl_la_SOURCES) $(libfl_pic_la_SOURCES) $(flex_SOURCES) DIST_SOURCES = $(libfl_la_SOURCES) $(libfl_pic_la_SOURCES) \ $(flex_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DATA = $(dist_doc_DATA) HEADERS = $(include_HEADERS) $(noinst_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir dist dist-all distcheck ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 $(distdir).tar.xz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBINTL@ @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = $(datadir)/locale localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_YFLAGS = -d ACLOCAL_AMFLAGS = -I m4 m4 = @M4@ indent = @INDENT@ lib_LTLIBRARIES = \ libfl.la \ libfl_pic.la flex_SOURCES = \ ccl.c \ dfa.c \ ecs.c \ scanflags.c \ gen.c \ main.c \ misc.c \ nfa.c \ parse.y \ scan.l \ skel.c \ sym.c \ tblcmp.c \ yylex.c \ options.c \ scanopt.c \ buf.c \ tables.c \ tables_shared.c \ filter.c \ regex.c LDADD = lib/libcompat.la libfl_la_SOURCES = \ libmain.c \ libyywrap.c libfl_la_LDFLAGS = -no-undefined -version-info @SHARED_VERSION_INFO@ libfl_pic_la_SOURCES = \ libmain.c \ libyywrap.c libfl_pic_la_LDFLAGS = -no-undefined -version-info @SHARED_VERSION_INFO@ noinst_HEADERS = \ flexdef.h \ flexint.h \ version.h \ options.h \ scanopt.h \ tables.h \ tables_shared.h include_HEADERS = \ FlexLexer.h dist_doc_DATA = \ AUTHORS \ COPYING \ NEWS \ ONEWS \ README \ TODO EXTRA_DIST = \ .indent.pro \ ABOUT-NLS \ INSTALL \ autogen.sh \ flex.skl \ mkskel.sh \ config.rpath \ gettext.h BUILT_SOURCES = \ skel.c SUBDIRS = \ lib \ . \ doc \ examples \ po \ tests AM_CPPFLAGS = -DLOCALEDIR=\"$(localedir)\" -I$(top_srcdir)/intl # Run GNU indent on sources. Don't run this unless all the sources compile cleanly. # # Whole idea: # 1. Check for .indent.pro, otherwise indent will use unknown # settings, or worse, the GNU defaults.) # 2. Check that this is GNU indent. # 3. Make sure to process only the NON-generated .c and .h files. # 4. Run indent twice per file. The first time is a test. # Otherwise, indent overwrites your file even if it fails! indentfiles = \ buf.c \ ccl.c \ dfa.c \ ecs.c \ scanflags.c \ filter.c \ flexdef.h \ gen.c \ libmain.c \ libyywrap.c \ main.c \ misc.c \ nfa.c \ options.c \ options.h \ regex.c \ scanopt.c \ scanopt.h \ sym.c \ tables.c \ tables.h \ tables_shared.c \ tables_shared.h \ tblcmp.c all: $(BUILT_SOURCES) config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: .SUFFIXES: .c .l .lo .o .obj .y am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @if test ! -f $@; then rm -f stamp-h1; else :; fi @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi stamp-h1: $(srcdir)/conf.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/conf.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libfl.la: $(libfl_la_OBJECTS) $(libfl_la_DEPENDENCIES) $(EXTRA_libfl_la_DEPENDENCIES) $(libfl_la_LINK) -rpath $(libdir) $(libfl_la_OBJECTS) $(libfl_la_LIBADD) $(LIBS) libfl_pic.la: $(libfl_pic_la_OBJECTS) $(libfl_pic_la_DEPENDENCIES) $(EXTRA_libfl_pic_la_DEPENDENCIES) $(libfl_pic_la_LINK) -rpath $(libdir) $(libfl_pic_la_OBJECTS) $(libfl_pic_la_LIBADD) $(LIBS) install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list installcheck-binPROGRAMS: $(bin_PROGRAMS) bad=0; pid=$$$$; list="$(bin_PROGRAMS)"; for p in $$list; do \ case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \ *" $$p "* | *" $(srcdir)/$$p "*) continue;; \ esac; \ f=`echo "$$p" | \ sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ for opt in --help --version; do \ if "$(DESTDIR)$(bindir)/$$f" $$opt >c$${pid}_.out \ 2>c$${pid}_.err &2; bad=1; fi; \ done; \ done; rm -f c$${pid}_.???; exit $$bad parse.h: parse.c @if test ! -f $@; then rm -f parse.c; else :; fi @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) parse.c; else :; fi flex$(EXEEXT): $(flex_OBJECTS) $(flex_DEPENDENCIES) $(EXTRA_flex_DEPENDENCIES) @rm -f flex$(EXEEXT) $(LINK) $(flex_OBJECTS) $(flex_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/buf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ccl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dfa.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ecs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gen.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmain.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libyywrap.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/misc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfa.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/options.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parse.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regex.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scan.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scanflags.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scanopt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/skel.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sym.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tables.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tables_shared.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tblcmp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yylex.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< .l.c: $(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE) .y.c: $(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE) mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt install-dist_docDATA: $(dist_doc_DATA) @$(NORMAL_INSTALL) @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ done uninstall-dist_docDATA: @$(NORMAL_UNINSTALL) @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) install-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ done uninstall-includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) conf.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) conf.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) conf.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) conf.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @case `sed 15q $(srcdir)/NEWS` in \ *"$(VERSION)"*) : ;; \ *) \ echo "NEWS not updated; not releasing" 1>&2; \ exit 1;; \ esac $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__remove_distdir) dist-lzma: distdir tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma $(am__remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod u+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-recursive all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(DATA) $(HEADERS) \ config.h install-binPROGRAMS: install-libLTLIBRARIES installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(docdir)" "$(DESTDIR)$(includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -rm -f parse.c -rm -f parse.h -rm -f scan.c -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-recursive clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \ clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dist_docDATA install-includeHEADERS install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-binPROGRAMS install-libLTLIBRARIES @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-exec-hook install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: installcheck-binPROGRAMS maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-dist_docDATA \ uninstall-includeHEADERS uninstall-libLTLIBRARIES .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \ ctags-recursive install install-am install-exec-am \ install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-am clean clean-binPROGRAMS \ clean-generic clean-libLTLIBRARIES clean-libtool ctags \ ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-lzip \ dist-lzma dist-shar dist-tarZ dist-xz dist-zip distcheck \ distclean distclean-compile distclean-generic distclean-hdr \ distclean-libtool distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ install install-am install-binPROGRAMS install-data \ install-data-am install-dist_docDATA install-dvi \ install-dvi-am install-exec install-exec-am install-exec-hook \ install-html install-html-am install-includeHEADERS \ install-info install-info-am install-libLTLIBRARIES \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installcheck-binPROGRAMS installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ uninstall-binPROGRAMS uninstall-dist_docDATA \ uninstall-includeHEADERS uninstall-libLTLIBRARIES skel.c: flex.skl mkskel.sh flexint.h tables_shared.h sed 's/m4_/m4postproc_/g; s/m4preproc_/m4_/g' $(srcdir)/flex.skl | $(m4) -P -DFLEX_MAJOR_VERSION=`echo $(VERSION)|cut -f 1 -d .` -DFLEX_MINOR_VERSION=`echo $(VERSION)|cut -f 2 -d .` -DFLEX_SUBMINOR_VERSION=`echo $(VERSION)|cut -f 3 -d .` | sed 's/m4postproc_/m4_/g' | $(SHELL) $(srcdir)/mkskel.sh >skel.c # Explicitly describe dependencies. # You can recreate this with `gcc -I. -MM *.c' buf.o: buf.c flexdef.h flexint.h ccl.o: ccl.c flexdef.h flexint.h dfa.o: dfa.c flexdef.h flexint.h tables.h tables_shared.h ecs.o: ecs.c flexdef.h flexint.h scanflags.o: scanflags.c flexdef.h flexint.h gen.o: gen.c flexdef.h flexint.h tables.h tables_shared.h libmain.o: libmain.c libyywrap.o: libyywrap.c main.o: main.c flexdef.h flexint.h version.h options.h scanopt.h \ tables.h tables_shared.h misc.o: misc.c flexdef.h flexint.h tables.h tables_shared.h nfa.o: nfa.c flexdef.h flexint.h options.o: options.c options.h scanopt.h flexdef.h flexint.h parse.o: parse.c flexdef.h flexint.h tables.h tables_shared.h scan.o: scan.c flexdef.h flexint.h parse.h scanopt.o: scanopt.c flexdef.h flexint.h scanopt.h skel.o: skel.c flexdef.h flexint.h sym.o: sym.c flexdef.h flexint.h tables.o: tables.c flexdef.h flexint.h tables.h tables_shared.h tables_shared.o: tables_shared.c flexdef.h flexint.h tables.h \ tables_shared.h tblcmp.o: tblcmp.c flexdef.h flexint.h yylex.o: yylex.c flexdef.h flexint.h parse.h filter.o: filter.c flexdef.h flexint.h # Create the ChangeLog, but only if we're inside a git working directory ChangeLog: $(srcdir)/tools/git2cl if [ -d $(srcdir)/.git ] ; then \ $(srcdir)/tools/git2cl > $@ \ ; fi indent: if [ -f .indent.pro ] ; then \ for f in $(indentfiles);\ do\ echo indenting $$f ;\ $(indent) < $$f >/dev/null && indent $$f || echo $$f FAILED to indent ;\ done \ fi install-exec-hook: cd $(DESTDIR)$(bindir) && \ $(LN_S) -f flex$(EXEEXT) flex++$(EXEEXT) .PHONY: ChangeLog tags indent # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/THANKS0000644000175000017500000000610712060131401013725 0ustar srivastasrivastaVern had the following things to say: Many thanks to the 2.5 beta-testers for finding bugs and helping test and increase portability: Stan Adermann, Scott David Daniels, Charles Elliott, Joe Gayda, Chris Meier, James Nordby, Terrence O'Kane, Karsten Pahnke, Francois Pinard, Pat Rankin, Andreas Scherer, Marc Wiese, Nathan Zelle. Thanks to the many flex beta-testers, feedbackers, and contributors, especially Francois Pinard, Casey Leedom, Robert Abramovitz, Stan Adermann, Terry Allen, David Barker-Plummer, John Basrai, Neal Becker, Nelson H.F. Beebe, benson@odi.com, Karl Berry, Peter A. Bigot, Simon Blanchard, Keith Bostic, Frederic Brehm, Ian Brockbank, Kin Cho, Nick Christopher, Brian Clapper, J.T. Conklin, Jason Coughlin, Bill Cox, Nick Cropper, Dave Curtis, Scott David Daniels, Chris G. Demetriou, Theo Deraadt, Mike Donahue, Chuck Doucette, Tom Epperly, Leo Eskin, Chris Faylor, Chris Flatters, Jon Forrest, Jeffrey Friedl, Joe Gayda, Kaveh R. Ghazi, Wolfgang Glunz, Eric Goldman, Christopher M. Gould, Ulrich Grepel, Peer Griebel, Jan Hajic, Charles Hemphill, NORO Hideo, Jarkko Hietaniemi, Scott Hofmann, Jeff Honig, Dana Hudes, Eric Hughes, John Interrante, Ceriel Jacobs, Michal Jaegermann, Sakari Jalovaara, Jeffrey R. Jones, Henry Juengst, Klaus Kaempf, Jonathan I. Kamens, Terrence O Kane, Amir Katz, ken@ken.hilco.com, Kevin B. Kenny, Steve Kirsch, Winfried Koenig, Marq Kole, Ronald Lamprecht, Greg Lee, Rohan Lenard, Craig Leres, John Levine, Steve Liddle, David Loffredo, Mike Long, Mohamed el Lozy, Brian Madsen, Malte, Joe Marshall, Bengt Martensson, Chris Metcalf, Luke Mewburn, Jim Meyering, R. Alexander Milowski, Erik Naggum, G.T. Nicol, Landon Noll, James Nordby, Marc Nozell, Richard Ohnemus, Karsten Pahnke, Sven Panne, Roland Pesch, Walter Pelissero, Gaumond Pierre, Esmond Pitt, Jef Poskanzer, Joe Rahmeh, Jarmo Raiha, Frederic Raimbault, Pat Rankin, Rick Richardson, Kevin Rodgers, Kai Uwe Rommel, Jim Roskind, Alberto Santini, Andreas Scherer, Darrell Schiebel, Raf Schietekat, Doug Schmidt, Philippe Schnoebelen, Andreas Schwab, Larry Schwimmer, Alex Siegel, Eckehard Stolz, Jan-Erik Strvmquist, Mike Stump, Paul Stuart, Dave Tallman, Ian Lance Taylor, Chris Thewalt, Richard M. Timoney, Jodi Tsai, Paul Tuinenga, Gary Weik, Frank Whaley, Gerhard Wilhelms, Kent Williams, Ken Yap, Ron Zellar, Nathan Zelle, David Zuhn, and those whose names have slipped my marginal mail-archiving skills but whose contributions are appreciated all the same. Thanks to Keith Bostic, Jon Forrest, Noah Friedman, John Gilmore, Craig Leres, John Levine, Bob Mulcahy, G.T. Nicol, Francois Pinard, Rich Salz, and Richard Stallman for help with various distribution headaches. Thanks to Esmond Pitt and Earle Horton for 8-bit character support; to Benson Margulies and Fred Burke for C++ support; to Kent Williams and Tom Epperly for C++ class support; to Ove Ewerlid for support of NUL's; and to Eric Hughes for support of multiple buffers. This work was primarily done when I was with the Real Time Systems Group at the Lawrence Berkeley Laboratory in Berkeley, CA. Many thanks to all there for the support I received. flex-2.5.39/configure0000755000175000017500000250217212314621557014750 0ustar srivastasrivasta#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for the fast lexical analyser generator 2.5.39. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: flex-help@lists.sourceforge.net about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='the fast lexical analyser generator' PACKAGE_TARNAME='flex' PACKAGE_VERSION='2.5.39' PACKAGE_STRING='the fast lexical analyser generator 2.5.39' PACKAGE_BUGREPORT='flex-help@lists.sourceforge.net' PACKAGE_URL='' ac_unique_file="scan.l" ac_config_libobj_dir=lib gt_needs= # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS ALLOCA INDENT M4 HELP2MAN BISON CXXCPP OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB ac_ct_AR AR DLLTOOL OBJDUMP NM ac_ct_DUMPBIN DUMPBIN LD FGREP SED LIBTOOL LN_S am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE ac_ct_CXX CXXFLAGS CXX LEXLIB LEX_OUTPUT_ROOT LEX YFLAGS YACC POSUB LTLIBINTL LIBINTL INTLLIBS LTLIBICONV LIBICONV INTL_MACOSX_LIBS EGREP GREP CPP host_os host_vendor host_cpu host build_os build_vendor build_cpu build am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC XGETTEXT_EXTRA_OPTIONS MSGMERGE XGETTEXT_015 XGETTEXT GMSGFMT_015 MSGFMT_015 GMSGFMT MSGFMT GETTEXT_MACRO_VERSION USE_NLS am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM SHARED_VERSION_INFO target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_nls enable_dependency_tracking with_gnu_ld enable_rpath with_libiconv_prefix with_libintl_prefix enable_shared enable_static with_pic enable_fast_install with_sysroot enable_libtool_lock ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP YACC YFLAGS CXX CXXFLAGS CCC CXXCPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures the fast lexical analyser generator 2.5.39 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/flex] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of the fast lexical analyser generator 2.5.39:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-nls do not use Native Language Support --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --disable-rpath do not hardcode runtime library paths --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-gnu-ld assume the C compiler uses GNU ld default=no --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib --without-libiconv-prefix don't search for libiconv in includedir and libdir --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib --without-libintl-prefix don't search for libintl in includedir and libdir --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot=DIR Search for dependent libraries within DIR (or the compiler's sysroot if not specified). Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor YACC The `Yet Another Compiler Compiler' implementation to use. Defaults to the first program found out of: `bison -y', `byacc', `yacc'. YFLAGS The list of arguments that will be passed by default to $YACC. This script will default YFLAGS to the empty string to avoid a default value of `-d' given by some make applications. CXX C++ compiler command CXXFLAGS C++ compiler flags CXXCPP C++ preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF the fast lexical analyser generator configure 2.5.39 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_link # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## ---------------------------------------------- ## ## Report this to flex-help@lists.sourceforge.net ## ## ---------------------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by the fast lexical analyser generator $as_me 2.5.39, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi gt_needs="$gt_needs " # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu SHARED_VERSION_INFO="2:0:0" am__api_version='1.11' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='flex' VERSION='2.5.39' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' ac_config_headers="$ac_config_headers config.h:conf.in" # checks for programs { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 $as_echo_n "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. if test "${enable_nls+set}" = set; then : enableval=$enable_nls; USE_NLS=$enableval else USE_NLS=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } GETTEXT_MACRO_VERSION=0.18 # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGFMT" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; *) MSGFMT_015=$MSGFMT ;; esac case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; *) GMSGFMT_015=$GMSGFMT ;; esac # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case "$XGETTEXT" in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f messages.po case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; *) XGETTEXT_015=$XGETTEXT ;; esac # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGMERGE+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGMERGE" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" ;; esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 $as_echo "$MSGMERGE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$localedir" || localedir='${datadir}/locale' test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= ac_config_commands="$ac_config_commands po-directories" if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5 $as_echo_n "checking for ld used by GCC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${acl_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in *GNU* | *'with BFD'*) test "$with_gnu_ld" != no && break ;; *) test "$with_gnu_ld" != yes && break ;; esac fi done IFS="$ac_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi fi LD="$acl_cv_path_LD" if test -n "$LD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${acl_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 &5 $as_echo "$acl_cv_prog_gnu_ld" >&6; } with_gnu_ld=$acl_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 $as_echo_n "checking for shared library run path origin... " >&6; } if ${acl_cv_rpath+:} false; then : $as_echo_n "(cached) " >&6 else CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 $as_echo "$acl_cv_rpath" >&6; } wl="$acl_cv_wl" acl_libext="$acl_cv_libext" acl_shlibext="$acl_cv_shlibext" acl_libname_spec="$acl_cv_libname_spec" acl_library_names_spec="$acl_cv_library_names_spec" acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" acl_hardcode_direct="$acl_cv_hardcode_direct" acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" # Check whether --enable-rpath was given. if test "${enable_rpath+set}" = set; then : enableval=$enable_rpath; : else enable_rpath=yes fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" acl_libdirstem=lib acl_libdirstem2= case "$host_os" in solaris*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 $as_echo_n "checking for 64-bit host... " >&6; } if ${gl_cv_solaris_64bit+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef _LP64 sixtyfour bits #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "sixtyfour bits" >/dev/null 2>&1; then : gl_cv_solaris_64bit=yes else gl_cv_solaris_64bit=no fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 $as_echo "$gl_cv_solaris_64bit" >&6; } if test $gl_cv_solaris_64bit = yes; then acl_libdirstem=lib/64 case "$host_cpu" in sparc*) acl_libdirstem2=lib/sparcv9 ;; i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; esac fi ;; *) searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` if test -n "$searchpath"; then acl_save_IFS="${IFS= }"; IFS=":" for searchdir in $searchpath; do if test -d "$searchdir"; then case "$searchdir" in */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; */../ | */.. ) # Better ignore directories of this form. They are misleading. ;; *) searchdir=`cd "$searchdir" && pwd` case "$searchdir" in */lib64 ) acl_libdirstem=lib64 ;; esac ;; esac fi done IFS="$acl_save_IFS" fi ;; esac test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libiconv-prefix was given. if test "${with_libiconv_prefix+set}" = set; then : withval=$with_libiconv_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" if test "$acl_libdirstem2" != "$acl_libdirstem" \ && ! test -d "$withval/$acl_libdirstem"; then additional_libdir="$withval/$acl_libdirstem2" fi fi fi fi LIBICONV= LTLIBICONV= INCICONV= LIBICONV_PREFIX= HAVE_LIBICONV= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='iconv ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" else : fi else found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$acl_hardcode_direct" = yes; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" else LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = 'iconv'; then LIBICONV_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = 'iconv'; then LIBICONV_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" ;; esac done fi else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 $as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then : $as_echo_n "(cached) " >&6 else gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { CFPreferencesCopyAppValue(NULL, NULL) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_CFPreferencesCopyAppValue=yes else gt_cv_func_CFPreferencesCopyAppValue=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 $as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then $as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 $as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then : $as_echo_n "(cached) " >&6 else gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { CFLocaleCopyCurrent(); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_CFLocaleCopyCurrent=yes else gt_cv_func_CFLocaleCopyCurrent=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 $as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } if test $gt_cv_func_CFLocaleCopyCurrent = yes; then $as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h fi INTL_MACOSX_LIBS= if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi LIBINTL= LTLIBINTL= POSUB= case " $gt_needs " in *" need-formatstring-macros "*) gt_api_version=3 ;; *" need-ngettext "*) gt_api_version=2 ;; *) gt_api_version=1 ;; esac gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no if test $gt_api_version -ge 3; then gt_revision_test_code=' #ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; ' else gt_revision_test_code= fi if test $gt_api_version -ge 2; then gt_expression_test_code=' + * ngettext ("", "", 0)' else gt_expression_test_code= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 $as_echo_n "checking for GNU gettext in libc... " >&6; } if eval \${$gt_func_gnugettext_libc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; int main () { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$gt_func_gnugettext_libc=yes" else eval "$gt_func_gnugettext_libc=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$gt_func_gnugettext_libc { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then am_save_CPPFLAGS="$CPPFLAGS" for element in $INCICONV; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 $as_echo_n "checking for iconv... " >&6; } if ${am_cv_func_iconv+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_lib_iconv=yes am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 $as_echo "$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 $as_echo_n "checking for working iconv... " >&6; } if ${am_cv_func_iconv_works+:} false; then : $as_echo_n "(cached) " >&6 else am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi if test "$cross_compiling" = yes; then : case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { /* Test against AIX 5.1 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static const char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; const char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) return 1; } } /* Test against Solaris 10 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); if (cd_ascii_to_88591 != (iconv_t)(-1)) { static const char input[] = "\263"; char buf[10]; const char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_ascii_to_88591, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) return 1; } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; const char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) return 1; } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ if (/* Try standardized names. */ iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) /* Try IRIX, OSF/1 names. */ && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) /* Try AIX names. */ && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) /* Try HP-UX names. */ && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) return 1; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : am_cv_func_iconv_works=yes else am_cv_func_iconv_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi LIBS="$am_save_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 $as_echo "$am_cv_func_iconv_works" >&6; } case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then $as_echo "#define HAVE_ICONV 1" >>confdefs.h fi if test "$am_cv_lib_iconv" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 $as_echo_n "checking how to link with libiconv... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 $as_echo "$LIBICONV" >&6; } else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libintl-prefix was given. if test "${with_libintl_prefix+set}" = set; then : withval=$with_libintl_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" if test "$acl_libdirstem2" != "$acl_libdirstem" \ && ! test -d "$withval/$acl_libdirstem"; then additional_libdir="$withval/$acl_libdirstem2" fi fi fi fi LIBINTL= LTLIBINTL= INCINTL= LIBINTL_PREFIX= HAVE_LIBINTL= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='intl ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" else : fi else found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$acl_hardcode_direct" = yes; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" else LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = 'intl'; then LIBINTL_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = 'intl'; then LIBINTL_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" ;; esac done fi else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 $as_echo_n "checking for GNU gettext in libintl... " >&6; } if eval \${$gt_func_gnugettext_libintl+:} false; then : $as_echo_n "(cached) " >&6 else gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); int main () { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$gt_func_gnugettext_libintl=yes" else eval "$gt_func_gnugettext_libintl=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); int main () { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS" fi eval ac_res=\$$gt_func_gnugettext_libintl { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else LIBINTL= LTLIBINTL= INCINTL= fi if test -n "$INTL_MACOSX_LIBS"; then if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" fi fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then $as_echo "#define ENABLE_NLS 1" >>confdefs.h else USE_NLS=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 $as_echo_n "checking whether to use NLS... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } if test "$USE_NLS" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 $as_echo_n "checking where the gettext function comes from... " >&6; } if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 $as_echo "$gt_source" >&6; } fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 $as_echo_n "checking how to link with libintl... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 $as_echo "$LIBINTL" >&6; } for element in $INCINTL; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done fi $as_echo "#define HAVE_GETTEXT 1" >>confdefs.h $as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h fi POSUB=po fi INTLLIBS="$LIBINTL" for ac_prog in 'bison -y' byacc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_YACC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$YACC"; then ac_cv_prog_YACC="$YACC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_YACC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi YACC=$ac_cv_prog_YACC if test -n "$YACC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5 $as_echo "$YACC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$YACC" && break done test -n "$YACC" || YACC="yacc" for ac_prog in flex lex do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LEX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LEX"; then ac_cv_prog_LEX="$LEX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LEX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LEX=$ac_cv_prog_LEX if test -n "$LEX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5 $as_echo "$LEX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$LEX" && break done test -n "$LEX" || LEX=":" if test "x$LEX" != "x:"; then cat >conftest.l <<_ACEOF %% a { ECHO; } b { REJECT; } c { yymore (); } d { yyless (1); } e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */ yyless ((input () != 0)); } f { unput (yytext[0]); } . { BEGIN INITIAL; } %% #ifdef YYTEXT_POINTER extern char *yytext; #endif int main (void) { return ! yylex () + ! yywrap (); } _ACEOF { { ac_try="$LEX conftest.l" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$LEX conftest.l") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex output file root" >&5 $as_echo_n "checking lex output file root... " >&6; } if ${ac_cv_prog_lex_root+:} false; then : $as_echo_n "(cached) " >&6 else if test -f lex.yy.c; then ac_cv_prog_lex_root=lex.yy elif test -f lexyy.c; then ac_cv_prog_lex_root=lexyy else as_fn_error $? "cannot find output from $LEX; giving up" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5 $as_echo "$ac_cv_prog_lex_root" >&6; } LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root if test -z "${LEXLIB+set}"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex library" >&5 $as_echo_n "checking lex library... " >&6; } if ${ac_cv_lib_lex+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_LIBS=$LIBS ac_cv_lib_lex='none needed' for ac_lib in '' -lfl -ll; do LIBS="$ac_lib $ac_save_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ `cat $LEX_OUTPUT_ROOT.c` _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_lex=$ac_lib fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext test "$ac_cv_lib_lex" != 'none needed' && break done LIBS=$ac_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5 $as_echo "$ac_cv_lib_lex" >&6; } test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5 $as_echo_n "checking whether yytext is a pointer... " >&6; } if ${ac_cv_prog_lex_yytext_pointer+:} false; then : $as_echo_n "(cached) " >&6 else # POSIX says lex can declare yytext either as a pointer or an array; the # default is implementation-dependent. Figure out which it is, since # not all implementations provide the %pointer and %array declarations. ac_cv_prog_lex_yytext_pointer=no ac_save_LIBS=$LIBS LIBS="$LEXLIB $ac_save_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define YYTEXT_POINTER 1 `cat $LEX_OUTPUT_ROOT.c` _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_prog_lex_yytext_pointer=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5 $as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; } if test $ac_cv_prog_lex_yytext_pointer = yes; then $as_echo "#define YYTEXT_POINTER 1" >>confdefs.h fi rm -f conftest.l $LEX_OUTPUT_ROOT.c fi if test "$LEX" = :; then LEX=${am_missing_run}flex fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi if test "x$CC" != xcc; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5 $as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5 $as_echo_n "checking whether cc understands -c and -o together... " >&6; } fi set dummy $CC; ac_cc=`$as_echo "$2" | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # We do the test twice because some compilers refuse to overwrite an # existing .o file with -o, though they will create one. ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5' rm -f conftest2.* if { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -f conftest2.$ac_objext && { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then eval ac_cv_prog_cc_${ac_cc}_c_o=yes if test "x$CC" != xcc; then # Test first that cc exists at all. if { ac_try='cc -c conftest.$ac_ext >&5' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5' rm -f conftest2.* if { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -f conftest2.$ac_objext && { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # cc works too. : else # cc exists but doesn't like -o. eval ac_cv_prog_cc_${ac_cc}_c_o=no fi fi fi else eval ac_cv_prog_cc_${ac_cc}_c_o=no fi rm -f core conftest* fi if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h fi # FIXME: we rely on the cache variable name because # there is no other way. set dummy $CC am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o if test "$am_t" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi case `pwd` in *\ * | *\ *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.2' macro_revision='1.3337' ltmain="$ac_aux_dir/ltmain.sh" # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 $as_echo_n "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case "$ECHO" in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 $as_echo "print -r" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 $as_echo "cat" >&6; } ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if ${ac_cv_path_FGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if ${lt_cv_path_NM+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: ;; esac fi if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if ${lt_cv_nm_interface+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } # find the maximum length of command line arguments { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if ${lt_cv_sys_max_cmd_len+:} false; then : $as_echo_n "(cached) " >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 $as_echo "$xsi_shell" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 $as_echo_n "checking whether the shell understands \"+=\"... " >&6; } lt_shell_append=no ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 $as_echo "$lt_shell_append" >&6; } if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 $as_echo_n "checking how to convert $build file names to $host format... " >&6; } if ${lt_cv_to_host_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 $as_echo "$lt_cv_to_host_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } if ${lt_cv_to_tool_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 $as_echo "$lt_cv_to_tool_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if ${lt_cv_ld_reload_flag+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test "$GCC" != yes; then reload_cmds=false fi ;; darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if ${lt_cv_deplibs_check_method+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 $as_echo_n "checking how to associate runtime and link libraries... " >&6; } if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 $as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} : ${AR_FLAGS=cru} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 $as_echo_n "checking for archiver @FILE support... " >&6; } if ${lt_cv_ar_at_file+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if ${lt_cv_sys_global_symbol_pipe+:} false; then : $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test "${with_sysroot+set}" = set; then : withval=$with_sysroot; else with_sysroot=no fi lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 $as_echo "${with_sysroot}" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 $as_echo "${lt_sysroot:-no}" >&6; } # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if ${lt_cv_cc_needs_belf+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD="${LD-ld}_sol2" fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 $as_echo "$MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 $as_echo "$ac_ct_MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 $as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if ${lt_cv_path_mainfest_tool+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 $as_echo "$lt_cv_path_mainfest_tool" >&6; } if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if ${lt_cv_apple_cc_single_mod+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if ${lt_cv_ld_exported_symbols_list+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 $as_echo_n "checking for -force_load linker flag... " >&6; } if ${lt_cv_ld_force_load+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR cru libconftest.a conftest.o" >&5 $AR cru libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 $as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[012]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DLFCN_H 1 _ACEOF fi done func_stripname_cnf () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname_cnf # Set options enable_dlopen=no enable_win32_dll=no # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=yes fi # Check whether --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS="$lt_save_ifs" ;; esac else pic_mode=default fi test -z "$pic_mode" && pic_mode=default # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if ${lt_cv_objdir+:} false; then : $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 $as_echo "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if ${lt_cv_prog_compiler_pic_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='${wl}--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs=yes ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi link_all_deplibs=no else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 $as_echo_n "checking if $CC understands -b... " >&6; } if ${lt_cv_prog_compiler__b+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 $as_echo "$lt_cv_prog_compiler__b" >&6; } if test x"$lt_cv_prog_compiler__b" = xyes; then archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test "$lt_cv_irix_exported_symbol" = yes; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='${wl}-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='${wl}-z,text' allow_undefined_flag='${wl}-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='${wl}-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 $as_echo "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's,/\([A-Za-z]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink || test "$inherit_rpath" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : lt_cv_dlopen="shl_load" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if ${ac_cv_lib_dld_shl_load+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : lt_cv_dlopen="dlopen" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if ${ac_cv_lib_svld_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if ${ac_cv_lib_dld_dld_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self_static+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report which library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if ${ac_cv_prog_CXXCPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu else _lt_caught_CXX_error=yes fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= compiler_needs_object_CXX=no export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no inherit_rpath_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds reload_flag_CXX=$reload_flag reload_cmds_CXX=$reload_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC compiler_CXX=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes file_list_spec_CXX='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec_CXX='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. always_export_symbols_CXX=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty # executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' ${wl}-bernotok' allow_undefined_flag_CXX=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' fi archive_cmds_need_lc_CXX=yes # This is similar to how AIX traditionally builds its shared # libraries. archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_CXX=' ' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=yes file_list_spec_CXX='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' enable_shared_with_static_runtimes_CXX=yes # Don't use ranlib old_postinstall_cmds_CXX='chmod 644 $oldlib' postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ func_to_tool_file "$lt_outputfile"~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' export_dynamic_flag_spec_CXX='${wl}--export-all-symbols' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_CXX=no fi ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec_CXX='' fi link_all_deplibs_CXX=yes allow_undefined_flag_CXX="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" if test "$lt_cv_apple_cc_single_mod" != "yes"; then archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi else ld_shlibs_CXX=no fi ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; gnu*) ;; haiku*) archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs_CXX=yes ;; hpux9*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: inherit_rpath_CXX=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [1-5].* | *pgcpp\ [1-5].*) prelink_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' old_archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object_CXX=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) ld_shlibs_CXX=yes ;; openbsd2*) # C++ shared libraries are fairly broken ld_shlibs_CXX=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no hardcode_direct_absolute_CXX=yes archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='${wl}-E' whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else ld_shlibs_CXX=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) case $host in osf3*) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' ;; *) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' ;; esac hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='${wl}-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_CXX='${wl}-z,text' allow_undefined_flag_CXX='${wl}-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ '"$old_archive_cmds_CXX" reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ '"$reload_cmds_CXX" ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" LD_CXX="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test "$pre_test_object_deps_done" = no; then case ${prev} in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX="${prev}${p}" else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX="${prev}${p}" else postdeps_CXX="${postdeps_CXX} ${prev}${p}" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$predep_objects_CXX"; then predep_objects_CXX="$p" else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX="$p" else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken case $host_os in interix[3-9]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac compiler_lib_search_dirs_CXX= if test -n "${compiler_lib_search_path_CXX}"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_CXX='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static_CXX= ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix[4-9]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) # IBM XL 8.0, 9.0 on PPC and BlueGene lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-qpic' lt_prog_compiler_static_CXX='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then : else lt_prog_compiler_static_CXX= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global defined # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' ;; esac ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs_CXX=no ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc_CXX=no else lt_cv_archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 $as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || test "X$hardcode_automatic_CXX" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct_CXX" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && test "$hardcode_minus_L_CXX" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 $as_echo "$hardcode_action_CXX" >&6; } if test "$hardcode_action_CXX" = relink || test "$inherit_rpath_CXX" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_commands="$ac_config_commands libtool" # Only expand once: for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done # Extract the first word of "bison", so it can be a program name with args. set dummy bison; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_BISON+:} false; then : $as_echo_n "(cached) " >&6 else case $BISON in [\\/]* | ?:[\\/]*) ac_cv_path_BISON="$BISON" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_BISON="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_BISON" && ac_cv_path_BISON="bison" ;; esac fi BISON=$ac_cv_path_BISON if test -n "$BISON"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BISON" >&5 $as_echo "$BISON" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "help2man", so it can be a program name with args. set dummy help2man; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_HELP2MAN+:} false; then : $as_echo_n "(cached) " >&6 else case $HELP2MAN in [\\/]* | ?:[\\/]*) ac_cv_path_HELP2MAN="$HELP2MAN" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_HELP2MAN="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_HELP2MAN" && ac_cv_path_HELP2MAN="help2man" ;; esac fi HELP2MAN=$ac_cv_path_HELP2MAN if test -n "$HELP2MAN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HELP2MAN" >&5 $as_echo "$HELP2MAN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Check for a m4 that supports -P { $as_echo "$as_me:${as_lineno-$LINENO}: checking for m4 that supports -P" >&5 $as_echo_n "checking for m4 that supports -P... " >&6; } if ${ac_cv_path_M4+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$M4"; then ac_path_M4_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in gm4 gnum4 m4; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_M4="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_M4" || continue m4out=`echo 'm''4_divnum' | $ac_path_M4 -P` test "x$m4out" = x0 \ && ac_cv_path_M4=$ac_path_M4 ac_path_M4_found=: $ac_path_M4_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_M4"; then as_fn_error $? "could not find m4 that supports -P" "$LINENO" 5 fi else ac_cv_path_M4=$M4 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_M4" >&5 $as_echo "$ac_cv_path_M4" >&6; } M4=$ac_cv_path_M4 cat >>confdefs.h <<_ACEOF #define M4 "$M4" _ACEOF # Extract the first word of "indent", so it can be a program name with args. set dummy indent; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_INDENT+:} false; then : $as_echo_n "(cached) " >&6 else case $INDENT in [\\/]* | ?:[\\/]*) ac_cv_path_INDENT="$INDENT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_INDENT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_INDENT" && ac_cv_path_INDENT="indent" ;; esac fi INDENT=$ac_cv_path_INDENT if test -n "$INDENT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INDENT" >&5 $as_echo "$INDENT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # if INDENT is set to 'indent' then we didn't find indent if test "$INDENT" != indent ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $INDENT is GNU indent" >&5 $as_echo_n "checking if $INDENT is GNU indent... " >&6; } if $INDENT --version 2>/dev/null | head -n 1|grep "GNU indent" > /dev/null ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $INDENT does not appear to be GNU indent." >&5 $as_echo "$as_me: WARNING: $INDENT does not appear to be GNU indent." >&2;} fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no indent program found: make indent target will not function" >&5 $as_echo "$as_me: WARNING: no indent program found: make indent target will not function" >&2;} fi # checks for headers { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5 $as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; } if ${ac_cv_header_sys_wait_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #ifndef WEXITSTATUS # define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8) #endif #ifndef WIFEXITED # define WIFEXITED(stat_val) (((stat_val) & 255) == 0) #endif int main () { int s; wait (&s); s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_sys_wait_h=yes else ac_cv_header_sys_wait_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_wait_h" >&5 $as_echo "$ac_cv_header_sys_wait_h" >&6; } if test $ac_cv_header_sys_wait_h = yes; then $as_echo "#define HAVE_SYS_WAIT_H 1" >>confdefs.h fi for ac_header in inttypes.h libintl.h limits.h locale.h malloc.h netinet/in.h regex.h stddef.h stdlib.h string.h strings.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # checks for libraries # The test test-pthread uses libpthread, so we check for it here, but # all we need is the preprocessor symbol defined since we don't need # LIBS to include libpthread for building flex. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_mutex_lock in -lpthread" >&5 $as_echo_n "checking for pthread_mutex_lock in -lpthread... " >&6; } if ${ac_cv_lib_pthread_pthread_mutex_lock+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpthread $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pthread_mutex_lock (); int main () { return pthread_mutex_lock (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_pthread_pthread_mutex_lock=yes else ac_cv_lib_pthread_pthread_mutex_lock=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_mutex_lock" >&5 $as_echo "$ac_cv_lib_pthread_pthread_mutex_lock" >&6; } if test "x$ac_cv_lib_pthread_pthread_mutex_lock" = xyes; then : $as_echo "#define HAVE_LIBPTHREAD 1" >>confdefs.h else $as_echo "#define HAVE_LIBPTHREAD 0" >>confdefs.h fi for ac_header in pthread.h do : ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default" if test "x$ac_cv_header_pthread_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_PTHREAD_H 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for log10 in -lm" >&5 $as_echo_n "checking for log10 in -lm... " >&6; } if ${ac_cv_lib_m_log10+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lm $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char log10 (); int main () { return log10 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_m_log10=yes else ac_cv_lib_m_log10=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_log10" >&5 $as_echo "$ac_cv_lib_m_log10" >&6; } if test "x$ac_cv_lib_m_log10" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBM 1 _ACEOF LIBS="-lm $LIBS" fi # Checks for typedefs, structures, and compiler characteristics. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5 $as_echo_n "checking for stdbool.h that conforms to C99... " >&6; } if ${ac_cv_header_stdbool_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifndef bool "error: bool is not defined" #endif #ifndef false "error: false is not defined" #endif #if false "error: false is not 0" #endif #ifndef true "error: true is not defined" #endif #if true != 1 "error: true is not 1" #endif #ifndef __bool_true_false_are_defined "error: __bool_true_false_are_defined is not defined" #endif struct s { _Bool s: 1; _Bool t; } s; char a[true == 1 ? 1 : -1]; char b[false == 0 ? 1 : -1]; char c[__bool_true_false_are_defined == 1 ? 1 : -1]; char d[(bool) 0.5 == true ? 1 : -1]; /* See body of main program for 'e'. */ char f[(_Bool) 0.0 == false ? 1 : -1]; char g[true]; char h[sizeof (_Bool)]; char i[sizeof s.t]; enum { j = false, k = true, l = false * true, m = true * 256 }; /* The following fails for HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ _Bool n[m]; char o[sizeof n == m * sizeof n[0] ? 1 : -1]; char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; /* Catch a bug in an HP-UX C compiler. See http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html */ _Bool q = true; _Bool *pq = &q; int main () { bool e = &s; *pq |= q; *pq |= ! q; /* Refer to every declared value, to avoid compiler optimizations. */ return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l + !m + !n + !o + !p + !q + !pq); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdbool_h=yes else ac_cv_header_stdbool_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 $as_echo "$ac_cv_header_stdbool_h" >&6; } ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" if test "x$ac_cv_type__Bool" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE__BOOL 1 _ACEOF fi if test $ac_cv_header_stdbool_h = yes; then $as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if ${ac_cv_c_const+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this sort of thing. */ char tx; char *t = &tx; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "#define const /**/" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi # Checks for library functions. # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 $as_echo_n "checking for working alloca.h... " >&6; } if ${ac_cv_working_alloca_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { char *p = (char *) alloca (2 * sizeof (int)); if (p) return 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_working_alloca_h=yes else ac_cv_working_alloca_h=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 $as_echo "$ac_cv_working_alloca_h" >&6; } if test $ac_cv_working_alloca_h = yes; then $as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 $as_echo_n "checking for alloca... " >&6; } if ${ac_cv_func_alloca_works+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __GNUC__ # define alloca __builtin_alloca #else # ifdef _MSC_VER # include # define alloca _alloca # else # ifdef HAVE_ALLOCA_H # include # else # ifdef _AIX #pragma alloca # else # ifndef alloca /* predefined by HP cc +Olibcalls */ void *alloca (size_t); # endif # endif # endif # endif #endif int main () { char *p = (char *) alloca (1); if (p) return 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_func_alloca_works=yes else ac_cv_func_alloca_works=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 $as_echo "$ac_cv_func_alloca_works" >&6; } if test $ac_cv_func_alloca_works = yes; then $as_echo "#define HAVE_ALLOCA 1" >>confdefs.h else # The SVR3 libPW and SVR4 libucb both contain incompatible functions # that cause trouble. Some versions do not even contain alloca or # contain a buggy version. If you still want to use their alloca, # use ar to extract alloca.o from them instead of compiling alloca.c. ALLOCA=\${LIBOBJDIR}alloca.$ac_objext $as_echo "#define C_ALLOCA 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5 $as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } if ${ac_cv_os_cray+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined CRAY && ! defined CRAY2 webecray #else wenotbecray #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "webecray" >/dev/null 2>&1; then : ac_cv_os_cray=yes else ac_cv_os_cray=no fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5 $as_echo "$ac_cv_os_cray" >&6; } if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define CRAY_STACKSEG_END $ac_func _ACEOF break fi done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 $as_echo_n "checking stack direction for C alloca... " >&6; } if ${ac_cv_c_stack_direction+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_c_stack_direction=0 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int find_stack_direction (int *addr, int depth) { int dir, dummy = 0; if (! addr) addr = &dummy; *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; dir = depth ? find_stack_direction (addr, depth - 1) : 0; return dir + dummy; } int main (int argc, char **argv) { return find_stack_direction (0, argc + !argv + 20) < 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_c_stack_direction=1 else ac_cv_c_stack_direction=-1 fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 $as_echo "$ac_cv_c_stack_direction" >&6; } cat >>confdefs.h <<_ACEOF #define STACK_DIRECTION $ac_cv_c_stack_direction _ACEOF fi ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" if test "x$ac_cv_type_pid_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define pid_t int _ACEOF fi for ac_header in vfork.h do : ac_fn_c_check_header_mongrel "$LINENO" "vfork.h" "ac_cv_header_vfork_h" "$ac_includes_default" if test "x$ac_cv_header_vfork_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_VFORK_H 1 _ACEOF fi done for ac_func in fork vfork do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done if test "x$ac_cv_func_fork" = xyes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5 $as_echo_n "checking for working fork... " >&6; } if ${ac_cv_func_fork_works+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_fork_works=cross else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { /* By Ruediger Kuhlmann. */ return fork () < 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_fork_works=yes else ac_cv_func_fork_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5 $as_echo "$ac_cv_func_fork_works" >&6; } else ac_cv_func_fork_works=$ac_cv_func_fork fi if test "x$ac_cv_func_fork_works" = xcross; then case $host in *-*-amigaos* | *-*-msdosdjgpp*) # Override, as these systems have only a dummy fork() stub ac_cv_func_fork_works=no ;; *) ac_cv_func_fork_works=yes ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 $as_echo "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;} fi ac_cv_func_vfork_works=$ac_cv_func_vfork if test "x$ac_cv_func_vfork" = xyes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5 $as_echo_n "checking for working vfork... " >&6; } if ${ac_cv_func_vfork_works+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_vfork_works=cross else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Thanks to Paul Eggert for this test. */ $ac_includes_default #include #ifdef HAVE_VFORK_H # include #endif /* On some sparc systems, changes by the child to local and incoming argument registers are propagated back to the parent. The compiler is told about this with #include , but some compilers (e.g. gcc -O) don't grok . Test for this by using a static variable whose address is put into a register that is clobbered by the vfork. */ static void #ifdef __cplusplus sparc_address_test (int arg) # else sparc_address_test (arg) int arg; #endif { static pid_t child; if (!child) { child = vfork (); if (child < 0) { perror ("vfork"); _exit(2); } if (!child) { arg = getpid(); write(-1, "", 0); _exit (arg); } } } int main () { pid_t parent = getpid (); pid_t child; sparc_address_test (0); child = vfork (); if (child == 0) { /* Here is another test for sparc vfork register problems. This test uses lots of local variables, at least as many local variables as main has allocated so far including compiler temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should reuse the register of parent for one of the local variables, since it will think that parent can't possibly be used any more in this routine. Assigning to the local variable will thus munge parent in the parent process. */ pid_t p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); /* Convince the compiler that p..p7 are live; otherwise, it might use the same hardware register for all 8 local variables. */ if (p != p1 || p != p2 || p != p3 || p != p4 || p != p5 || p != p6 || p != p7) _exit(1); /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent from child file descriptors. If the child closes a descriptor before it execs or exits, this munges the parent's descriptor as well. Test for this by closing stdout in the child. */ _exit(close(fileno(stdout)) != 0); } else { int status; struct stat st; while (wait(&status) != child) ; return ( /* Was there some problem with vforking? */ child < 0 /* Did the child fail? (This shouldn't happen.) */ || status /* Did the vfork/compiler bug occur? */ || parent != getpid() /* Did the file descriptor bug occur? */ || fstat(fileno(stdout), &st) != 0 ); } } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_vfork_works=yes else ac_cv_func_vfork_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5 $as_echo "$ac_cv_func_vfork_works" >&6; } fi; if test "x$ac_cv_func_fork_works" = xcross; then ac_cv_func_vfork_works=$ac_cv_func_vfork { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 $as_echo "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} fi if test "x$ac_cv_func_vfork_works" = xyes; then $as_echo "#define HAVE_WORKING_VFORK 1" >>confdefs.h else $as_echo "#define vfork fork" >>confdefs.h fi if test "x$ac_cv_func_fork_works" = xyes; then $as_echo "#define HAVE_WORKING_FORK 1" >>confdefs.h fi for ac_header in stdlib.h do : ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" if test "x$ac_cv_header_stdlib_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STDLIB_H 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5 $as_echo_n "checking for GNU libc compatible malloc... " >&6; } if ${ac_cv_func_malloc_0_nonnull+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_malloc_0_nonnull=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined STDC_HEADERS || defined HAVE_STDLIB_H # include #else char *malloc (); #endif int main () { return ! malloc (0); ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_malloc_0_nonnull=yes else ac_cv_func_malloc_0_nonnull=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5 $as_echo "$ac_cv_func_malloc_0_nonnull" >&6; } if test $ac_cv_func_malloc_0_nonnull = yes; then : $as_echo "#define HAVE_MALLOC 1" >>confdefs.h else $as_echo "#define HAVE_MALLOC 0" >>confdefs.h case " $LIBOBJS " in *" malloc.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS malloc.$ac_objext" ;; esac $as_echo "#define malloc rpl_malloc" >>confdefs.h fi for ac_header in stdlib.h do : ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" if test "x$ac_cv_header_stdlib_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STDLIB_H 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible realloc" >&5 $as_echo_n "checking for GNU libc compatible realloc... " >&6; } if ${ac_cv_func_realloc_0_nonnull+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_realloc_0_nonnull=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined STDC_HEADERS || defined HAVE_STDLIB_H # include #else char *realloc (); #endif int main () { return ! realloc (0, 0); ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_realloc_0_nonnull=yes else ac_cv_func_realloc_0_nonnull=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_realloc_0_nonnull" >&5 $as_echo "$ac_cv_func_realloc_0_nonnull" >&6; } if test $ac_cv_func_realloc_0_nonnull = yes; then : $as_echo "#define HAVE_REALLOC 1" >>confdefs.h else $as_echo "#define HAVE_REALLOC 0" >>confdefs.h case " $LIBOBJS " in *" realloc.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS realloc.$ac_objext" ;; esac $as_echo "#define realloc rpl_realloc" >>confdefs.h fi for ac_func in dup2 isascii memset pow regcomp setlocale strchr strtol do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done ac_config_files="$ac_config_files Makefile doc/Makefile examples/Makefile examples/fastwc/Makefile examples/manual/Makefile lib/Makefile po/Makefile.in tests/Makefile tests/TEMPLATE/Makefile tests/test-array-nr/Makefile tests/test-array-r/Makefile tests/test-basic-nr/Makefile tests/test-basic-r/Makefile tests/test-bison-yylloc/Makefile tests/test-bison-yylval/Makefile tests/test-c-cpp-nr/Makefile tests/test-c-cpp-r/Makefile tests/test-header-nr/Makefile tests/test-header-r/Makefile tests/test-include-by-buffer/Makefile tests/test-include-by-push/Makefile tests/test-include-by-reentrant/Makefile tests/test-multiple-scanners-nr/Makefile tests/test-multiple-scanners-r/Makefile tests/test-noansi-nr/Makefile tests/test-noansi-r/Makefile tests/test-prefix-nr/Makefile tests/test-prefix-r/Makefile tests/test-pthread/Makefile tests/test-string-nr/Makefile tests/test-string-r/Makefile tests/test-yyextra/Makefile tests/test-alloc-extra/Makefile tests/test-lineno-nr/Makefile tests/test-lineno-trailing/Makefile tests/test-lineno-r/Makefile tests/test-linedir-r/Makefile tests/test-debug-r/Makefile tests/test-debug-nr/Makefile tests/test-mem-nr/Makefile tests/test-mem-r/Makefile tests/test-posix/Makefile tests/test-posixly-correct/Makefile tests/test-table-opts/Makefile tests/test-c++-basic/Makefile tests/test-bison-nr/Makefile tests/test-reject/Makefile tests/test-c++-multiple-scanners/Makefile tests/test-top/Makefile tests/test-rescan-nr/Makefile tests/test-rescan-r/Makefile tests/test-quotes/Makefile tests/test-ccl/Makefile tests/test-extended/Makefile tests/test-c++-yywrap/Makefile tests/test-concatenated-options/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by the fast lexical analyser generator $as_me 2.5.39, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ the fast lexical analyser generator config.status 2.5.39 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # # Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake < 1.5. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ nm_file_list_spec \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib \ compiler_lib_search_dirs \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ LD_CXX \ reload_flag_CXX \ compiler_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_static_CXX \ lt_cv_prog_compiler_c_o_CXX \ export_dynamic_flag_spec_CXX \ whole_archive_flag_spec_CXX \ compiler_needs_object_CXX \ with_gnu_ld_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_separator_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX \ file_list_spec_CXX \ compiler_lib_search_dirs_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec \ reload_cmds_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ export_symbols_cmds_CXX \ prelink_cmds_CXX \ postlink_cmds_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h:conf.in" ;; "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; "examples/fastwc/Makefile") CONFIG_FILES="$CONFIG_FILES examples/fastwc/Makefile" ;; "examples/manual/Makefile") CONFIG_FILES="$CONFIG_FILES examples/manual/Makefile" ;; "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; "tests/TEMPLATE/Makefile") CONFIG_FILES="$CONFIG_FILES tests/TEMPLATE/Makefile" ;; "tests/test-array-nr/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-array-nr/Makefile" ;; "tests/test-array-r/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-array-r/Makefile" ;; "tests/test-basic-nr/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-basic-nr/Makefile" ;; "tests/test-basic-r/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-basic-r/Makefile" ;; "tests/test-bison-yylloc/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-bison-yylloc/Makefile" ;; "tests/test-bison-yylval/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-bison-yylval/Makefile" ;; "tests/test-c-cpp-nr/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-c-cpp-nr/Makefile" ;; "tests/test-c-cpp-r/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-c-cpp-r/Makefile" ;; "tests/test-header-nr/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-header-nr/Makefile" ;; "tests/test-header-r/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-header-r/Makefile" ;; "tests/test-include-by-buffer/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-include-by-buffer/Makefile" ;; "tests/test-include-by-push/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-include-by-push/Makefile" ;; "tests/test-include-by-reentrant/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-include-by-reentrant/Makefile" ;; "tests/test-multiple-scanners-nr/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-multiple-scanners-nr/Makefile" ;; "tests/test-multiple-scanners-r/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-multiple-scanners-r/Makefile" ;; "tests/test-noansi-nr/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-noansi-nr/Makefile" ;; "tests/test-noansi-r/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-noansi-r/Makefile" ;; "tests/test-prefix-nr/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-prefix-nr/Makefile" ;; "tests/test-prefix-r/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-prefix-r/Makefile" ;; "tests/test-pthread/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-pthread/Makefile" ;; "tests/test-string-nr/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-string-nr/Makefile" ;; "tests/test-string-r/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-string-r/Makefile" ;; "tests/test-yyextra/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-yyextra/Makefile" ;; "tests/test-alloc-extra/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-alloc-extra/Makefile" ;; "tests/test-lineno-nr/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-lineno-nr/Makefile" ;; "tests/test-lineno-trailing/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-lineno-trailing/Makefile" ;; "tests/test-lineno-r/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-lineno-r/Makefile" ;; "tests/test-linedir-r/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-linedir-r/Makefile" ;; "tests/test-debug-r/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-debug-r/Makefile" ;; "tests/test-debug-nr/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-debug-nr/Makefile" ;; "tests/test-mem-nr/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-mem-nr/Makefile" ;; "tests/test-mem-r/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-mem-r/Makefile" ;; "tests/test-posix/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-posix/Makefile" ;; "tests/test-posixly-correct/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-posixly-correct/Makefile" ;; "tests/test-table-opts/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-table-opts/Makefile" ;; "tests/test-c++-basic/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-c++-basic/Makefile" ;; "tests/test-bison-nr/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-bison-nr/Makefile" ;; "tests/test-reject/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-reject/Makefile" ;; "tests/test-c++-multiple-scanners/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-c++-multiple-scanners/Makefile" ;; "tests/test-top/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-top/Makefile" ;; "tests/test-rescan-nr/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-rescan-nr/Makefile" ;; "tests/test-rescan-r/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-rescan-r/Makefile" ;; "tests/test-quotes/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-quotes/Makefile" ;; "tests/test-ccl/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-ccl/Makefile" ;; "tests/test-extended/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-extended/Makefile" ;; "tests/test-c++-yywrap/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-c++-yywrap/Makefile" ;; "tests/test-concatenated-options/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-concatenated-options/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "po-directories":C) for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Treat a directory as a PO directory if and only if it has a # POTFILES.in file. This allows packages to have multiple PO # directories under different names or in different locations. if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake < 1.5. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. # Hide the ALL_LINGUAS assigment from automake < 1.5. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done ;; "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "libtool":C) # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # The names of the tagged configurations supported by this script. available_tags="CXX " # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # DLL creation program. DLLTOOL=$lt_DLLTOOL # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive. AR_FLAGS=$lt_AR_FLAGS # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and in which our libraries should be installed. lt_sysroot=$lt_sysroot # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects postdep_objects=$lt_postdep_objects predeps=$lt_predeps postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain="$ac_aux_dir/ltmain.sh" # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) if test x"$xsi_shell" = xyes; then sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ func_dirname ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ } # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_basename ()$/,/^} # func_basename /c\ func_basename ()\ {\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ func_dirname_and_basename ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ func_stripname ()\ {\ \ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ \ # positional parameters, so assign one to ordinary parameter first.\ \ func_stripname_result=${3}\ \ func_stripname_result=${func_stripname_result#"${1}"}\ \ func_stripname_result=${func_stripname_result%"${2}"}\ } # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ func_split_long_opt ()\ {\ \ func_split_long_opt_name=${1%%=*}\ \ func_split_long_opt_arg=${1#*=}\ } # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ func_split_short_opt ()\ {\ \ func_split_short_opt_arg=${1#??}\ \ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ } # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ func_lo2o ()\ {\ \ case ${1} in\ \ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ \ *) func_lo2o_result=${1} ;;\ \ esac\ } # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_xform ()$/,/^} # func_xform /c\ func_xform ()\ {\ func_xform_result=${1%.*}.lo\ } # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_arith ()$/,/^} # func_arith /c\ func_arith ()\ {\ func_arith_result=$(( $* ))\ } # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_len ()$/,/^} # func_len /c\ func_len ()\ {\ func_len_result=${#1}\ } # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$lt_shell_append" = xyes; then sed -e '/^func_append ()$/,/^} # func_append /c\ func_append ()\ {\ eval "${1}+=\\${2}"\ } # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ func_append_quoted ()\ {\ \ func_quote_for_eval "${2}"\ \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ } # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 $as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} fi mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: CXX # The linker used to build libraries. LD=$lt_LD_CXX # How to create reloadable object files. reload_flag=$lt_reload_flag_CXX reload_cmds=$lt_reload_cmds_CXX # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_CXX # A language specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU compiler? with_gcc=$GCC_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_CXX # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_CXX # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_CXX # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic_CXX # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_CXX # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_CXX # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds_CXX # Specify filename containing input files. file_list_spec=$lt_file_list_spec_CXX # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_CXX postdep_objects=$lt_postdep_objects_CXX predeps=$lt_predeps_CXX postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # ### END LIBTOOL TAG CONFIG: CXX _LT_EOF ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi flex-2.5.39/tests/0002755000175000017500000000000012314621667014176 5ustar srivastasrivastaflex-2.5.39/tests/test-c-cpp-r/0002755000175000017500000000000012314621667016414 5ustar srivastasrivastaflex-2.5.39/tests/test-c-cpp-r/scanner.l0000644000175000017500000000310412060131401020172 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* A template scanner file to build "scanner.c". The scanner is not really important -- we only care if it compiles under a c++ compiler, and runs. */ #include #include #include "config.h" /*#include "parser.h" */ %} %option 8bit outfile="scanner.cpp" prefix="test" %option nounput nomain noyywrap %option warn reentrant %% . { } %% int main(void); int main () { yyscan_t lexer; yylex_init( &lexer ); yyset_out ( stdout,lexer); yyset_in ( stdin, lexer); while( yylex(lexer) ) { } yylex_destroy( lexer ); printf("TEST RETURNING OK.\n"); return 0; } flex-2.5.39/tests/test-c-cpp-r/test.input0000644000175000017500000000006612060131401020430 0ustar srivastasrivasta0000 foo 1111 foo 0000 bar 0000 foo 1111 foo 0000 bar flex-2.5.39/tests/test-c-cpp-r/Makefile.in0000644000175000017500000003114212314621560020450 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-c-cpp-r DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.cpp $(testname)$(EXEEXT) $(OBJS) OUTPUT OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #YFLAGS = --defines --output=parser.c testname = test-c-cpp-r all: all-am .SUFFIXES: .SUFFIXES: .cpp .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-c-cpp-r/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-c-cpp-r/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.cpp: $(srcdir)/scanner.l $(FLEX) $< $(testname)$(EXEEXT): $(OBJS) $(CXX) $(CXXFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .cpp.o: $(CXX) $(CXXFLAGS) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-c-cpp-r/Makefile.am0000644000175000017500000000274012300734270020437 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.cpp $(testname)$(EXEEXT) $(OBJS) OUTPUT OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #YFLAGS = --defines --output=parser.c testname = test-c-cpp-r scanner.cpp: $(srcdir)/scanner.l $(FLEX) $< $(testname)$(EXEEXT): $(OBJS) $(CXX) $(CXXFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .cpp.o: $(CXX) $(CXXFLAGS) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $< flex-2.5.39/tests/test-prefix-nr/0002755000175000017500000000000012314621667017065 5ustar srivastasrivastaflex-2.5.39/tests/test-prefix-nr/scanner.l0000644000175000017500000000373712060131401020657 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* Builds "scanner.c". */ /* The scanner itself is a no-op. A successful compilation is all we want. */ #include #include #include "config.h" %} %option 8bit outfile="scanner.c" prefix="FOO" %option nounput nomain noyywrap %option warn %% .|\n|\r { /* Compile, but do not execute the following code. */ if( 0) { FOO_create_buffer((FILE*)0,0); FOO_delete_buffer((YY_BUFFER_STATE)0); FOO_flush_buffer((YY_BUFFER_STATE)0); FOO_init_buffer((YY_BUFFER_STATE)0,(FILE*)0); FOO_load_buffer_state(); FOO_scan_buffer((char*)0,(yy_size_t)0); FOO_scan_bytes((yyconst char*)0, 0); FOO_scan_string((yyconst char*)0); FOO_switch_to_buffer((YY_BUFFER_STATE)0); yyin = (FILE*)0; yyout = (FILE*)0; yyleng = 0; yylex(); yyrestart((FILE*)0); yytext = (char*)0; } } %% int main(void); int main () { yyin = stdin; yyout = stdout; FOOlex(); printf("TEST RETURNING OK.\n"); return 0; } flex-2.5.39/tests/test-prefix-nr/test.input0000644000175000017500000000001512060131401021073 0ustar srivastasrivastaDummy input. flex-2.5.39/tests/test-prefix-nr/Makefile.in0000644000175000017500000003135012314621561021123 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-prefix-nr DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c scanner.h parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = test-prefix-nr all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-prefix-nr/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-prefix-nr/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-prefix-nr/Makefile.am0000644000175000017500000000313312300734270021105 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c scanner.h parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = test-prefix-nr scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-prefix-nr/README0000644000175000017500000000011712060131401017716 0ustar srivastasrivastaThis check is to make sure the prefix "yy" is substituted where it should be. flex-2.5.39/tests/test-rescan-nr/0002755000175000017500000000000012314621666017042 5ustar srivastasrivastaflex-2.5.39/tests/test-rescan-nr/scanner.l0000644000175000017500000000334012060131401020623 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* A template scanner file to build "scanner.c". */ #include #include %} %option 8bit outfile="scanner.c" prefix="test" %option nounput nomain noyywrap %option warn stack never-interactive %x STATE_1 %% { 0 yy_push_state (STATE_1); .|\n return 1; } { 1 yy_pop_state(); .|\n return yy_top_state() + 1; } %% int main (int argc, char* const argv[]) { FILE* fp; int i; if ((fp = fopen(argv[1],"r")) == NULL){ perror("Failed to open input file."); return 1; } yyset_out ( stdout); for (i=0; i < 4; ++i){ rewind(fp); yyset_in ( fp); while( yylex() ) ; yylex_destroy(); } printf("TEST RETURNING OK.\n"); return 0; } flex-2.5.39/tests/test-rescan-nr/test.input0000644000175000017500000000006612060131401021057 0ustar srivastasrivasta0000 foo 1111 foo 0000 bar 0000 foo 1111 foo 0000 bar flex-2.5.39/tests/test-rescan-nr/Makefile.in0000644000175000017500000003123412314621561021102 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-rescan-nr DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c scanner.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(builddir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = test-rescan-nr all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-rescan-nr/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-rescan-nr/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-rescan-nr/Makefile.am0000644000175000017500000000305412300734270021065 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex builddir = @builddir@ EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c scanner.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(builddir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = test-rescan-nr scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-rescan-r/0002755000175000017500000000000012314621666016664 5ustar srivastasrivastaflex-2.5.39/tests/test-rescan-r/scanner.l0000644000175000017500000000450312060131401020447 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* A template scanner file to build "scanner.c". */ #include #include %} %option 8bit outfile="scanner.c" prefix="test" %option nounput nomain noyywrap reentrant %option warn stack never-interactive %x STATE_1 %% { 0 yy_push_state (STATE_1, yyscanner); .|\n return 1; } { 1 yy_pop_state(yyscanner); .|\n return yy_top_state(yyscanner) + 1; } %% int main (int argc, char* const argv[]) { FILE* fp; int i; yyscan_t yyscanner; if ((fp = fopen(argv[1],"r")) == NULL){ perror("Failed to open input file."); return 1; } printf("Test 1: Reusing same scanner.\n"); yylex_init( &yyscanner ); yyset_out ( stdout, yyscanner); for (i=0; i < 4; ++i){ rewind(fp); yyset_in ( fp, yyscanner); while( yylex(yyscanner) ) ; } yylex_destroy( yyscanner ); printf("Test 1 OK\n\n"); printf("Test 2: Rescanning with new scanner each time.\n"); memset(&yyscanner,0,sizeof(yyscanner)); // Just to be clean about it. for (i=0; i < 4; ++i){ yyscan_t s; yylex_init( &s ); yyset_out ( stdout, s); rewind(fp); yyset_in ( fp, s); while( yylex(s) ) ; yylex_destroy( s ); } printf("Test 2 OK\n\n"); printf("TEST RETURNING OK.\n"); return 0; } flex-2.5.39/tests/test-rescan-r/test.input0000644000175000017500000000006612060131401020701 0ustar srivastasrivasta0000 foo 1111 foo 0000 bar 0000 foo 1111 foo 0000 bar flex-2.5.39/tests/test-rescan-r/Makefile.in0000644000175000017500000003124212314621561020723 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-rescan-r DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c scanner.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(builddir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = test-rescan-r all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-rescan-r/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-rescan-r/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-rescan-r/Makefile.am0000644000175000017500000000306512300734270020711 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex builddir = @builddir@ EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c scanner.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(builddir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = test-rescan-r scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-debug-nr/0002755000175000017500000000000012314621667016656 5ustar srivastasrivastaflex-2.5.39/tests/test-debug-nr/scanner.l0000644000175000017500000000252212060131401020437 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* A template scanner file to build "scanner.c". */ #include #include #include "config.h" %} %option 8bit outfile="scanner.c" prefix="test" %option nounput nomain noyywrap %option warn debug %% .+ { } \n { } %% int main(void); int main () { yyin = stdin; yyout = stdout; yy_flex_debug = 1; yylex(); printf("TEST RETURNING OK.\n"); return 0; } flex-2.5.39/tests/test-debug-nr/test.input0000644000175000017500000000013012060131401020662 0ustar srivastasrivastaAny input will do for this test. We are only testing if it actually runs in debug mode. flex-2.5.39/tests/test-debug-nr/Makefile.in0000644000175000017500000003110612314621561020713 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-debug-nr DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c scanner.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a testname = test-debug-nr all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-debug-nr/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-debug-nr/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-debug-nr/Makefile.am0000644000175000017500000000270312300734270020700 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c scanner.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a testname = test-debug-nr scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-header-r/0002755000175000017500000000000012314621666016641 5ustar srivastasrivastaflex-2.5.39/tests/test-header-r/scanner.l0000644000175000017500000000241012060131401020417 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* Build "scanner.c". The scanner is not important. This test is really about compilation. See "main.c". */ #include #include #include "config.h" %} %option reentrant %option 8bit outfile="scanner.c" prefix="test" %option nounput nomain noyywrap %option warn %% .|\n { } %% flex-2.5.39/tests/test-header-r/main.c0000644000175000017500000000353612060131401017713 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ #include "scanner.h" /* The scanner itself is not important here. * We simply try to use all the functions that are exported in the * header, to see if we get any compiler warnings. */ int main ( int argc, char** argv ) { yyscan_t scanner; FILE *fp; char * extra = "EXTRA"; testlex_init(&scanner); testset_in(stdin,scanner); testset_out(stdout,scanner); testset_extra(extra,scanner); fp = testget_in(scanner); fp = testget_out(scanner); while(testlex(scanner)) { char * text; int line; line = testget_lineno(scanner); text = testget_text(scanner); if( (char*)testget_extra(scanner) != extra) break; if ( !text || line < 0) continue; } testlex_destroy(scanner); printf("TEST RETURNING OK.\n"); return 0; } /* vim:set tabstop=8 softtabstop=4 shiftwidth=4: */ flex-2.5.39/tests/test-header-r/test.input0000644000175000017500000000007512060131401020656 0ustar srivastasrivastaAny input is ok for this scanner. We only care if it links. flex-2.5.39/tests/test-header-r/Makefile.in0000644000175000017500000003140312314621561020677 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-header-r DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input main.c CLEANFILES = scanner.c scanner.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o main.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) -I$(builddir) #LDFLAGS = $(top_srcdir)/libfl.a LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = test-header-r all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-header-r/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-header-r/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< scanner.h: scanner.c main.o: scanner.h # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-header-r/Makefile.am0000644000175000017500000000322712300734270020666 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex builddir = @builddir@ EXTRA_DIST = scanner.l test.input main.c CLEANFILES = scanner.c scanner.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o main.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) -I$(builddir) #LDFLAGS = $(top_srcdir)/libfl.a LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = test-header-r scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< scanner.h: scanner.c main.o: scanner.h flex-2.5.39/tests/test-noansi-nr/0002755000175000017500000000000012314621667017057 5ustar srivastasrivastaflex-2.5.39/tests/test-noansi-nr/scanner.l0000644000175000017500000000346212060131401020644 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ /* TEST scanner. Basic non-reentrant scanner, but with non-ansi function defs. Compile with: flex scanner.l Sample Input: # this is a comment foo = true bar = "string value" integer = 43 */ %{ #include "config.h" %} %option prefix="test" outfile="scanner.c" %option nounput noyywrap noyylineno warn nodefault %option noansi-prototypes noansi-definitions IDENT [[:alnum:]_-] WS [[:blank:]] %% ^{IDENT}+{WS}*={WS}*(true|false){WS}*\r?\n { return 100;} ^{IDENT}+{WS}*={WS}*\"[^\"\n\r]*\"{WS}*\r?\n { return 101;} ^{IDENT}+{WS}*={WS}*[[:digit:]]+{WS}*\r?\n { return 102;} ^{WS}*#.*\r?\n { } ^{WS}*\r?\n { } .|\n { fprintf(stderr,"Invalid line.\n"); exit(-1);} %% int main(void); int main () { yyin = stdin; yyout = stdout; while( yylex() ) { } printf("TEST RETURNING OK.\n"); return 0; } flex-2.5.39/tests/test-noansi-nr/test.input0000644000175000017500000000007212060131401021070 0ustar srivastasrivasta# this is a comment foo = "bar" num = 43 setting = false flex-2.5.39/tests/test-noansi-nr/Makefile.in0000644000175000017500000003125612314621561021122 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-noansi-nr DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #YFLAGS = --defines --output=parser.c testname = test-noansi-nr all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-noansi-nr/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-noansi-nr/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-noansi-nr/Makefile.am0000644000175000017500000000305012300734270021075 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #YFLAGS = --defines --output=parser.c testname = test-noansi-nr scanner.c: $(srcdir)/scanner.l $(FLEX) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-header-nr/0002755000175000017500000000000012314621666017017 5ustar srivastasrivastaflex-2.5.39/tests/test-header-nr/scanner.l0000644000175000017500000000231112060131401020575 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* A template scanner file to build "scanner.c". */ #include #include #include "config.h" %} %option 8bit outfile="scanner.c" prefix="test" header="scanner.h" %option nounput nomain noyywrap %option warn %% .|\n { } %% flex-2.5.39/tests/test-header-nr/main.c0000644000175000017500000000223712060131401020066 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ #include "scanner.h" int main ( int argc, char** argv ) { testin = stdin; testout = stdout; testlex(); printf("TEST RETURNING OK.\n"); return 0; } /* vim:set tabstop=8 softtabstop=4 shiftwidth=4: */ flex-2.5.39/tests/test-header-nr/test.input0000644000175000017500000000007512060131401021034 0ustar srivastasrivastaAny input is ok for this scanner. We only care if it links. flex-2.5.39/tests/test-header-nr/Makefile.in0000644000175000017500000003134012314621561021055 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-header-nr DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input main.c CLEANFILES = scanner.c scanner.h $(testname)$(EXEEXT) $(OBJS) OUTPUT OBJS = scanner.o main.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) -I$(builddir) #LDFLAGS = $(top_srcdir)/libfl.a #YFLAGS = --defines --output=parser.c testname = test-header-nr all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-header-nr/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-header-nr/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< scanner.h: scanner.c main.o: scanner.h # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-header-nr/Makefile.am0000644000175000017500000000316112300734270021041 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex builddir = @builddir@ EXTRA_DIST = scanner.l test.input main.c CLEANFILES = scanner.c scanner.h $(testname)$(EXEEXT) $(OBJS) OUTPUT OBJS = scanner.o main.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) -I$(builddir) #LDFLAGS = $(top_srcdir)/libfl.a #YFLAGS = --defines --output=parser.c testname = test-header-nr scanner.c: $(srcdir)/scanner.l $(FLEX) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< scanner.h: scanner.c main.o: scanner.h flex-2.5.39/tests/test-prefix-r/0002755000175000017500000000000012314621667016707 5ustar srivastasrivastaflex-2.5.39/tests/test-prefix-r/scanner.l0000644000175000017500000000474012060131401020474 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* Builds "scanner.c". */ /* The scanner itself is a no-op. A successful compilation is all we want. */ #include #include #include "config.h" %} %option reentrant %option 8bit outfile="scanner.c" prefix="FOO" %option nounput nomain noyywrap %option warn %% .|\n|\r { /* Compile, but do not execute the following code. */ if( 0 ) { FOO_create_buffer( (FILE*)0, 0, yyscanner); FOO_delete_buffer( (YY_BUFFER_STATE)0, yyscanner); FOO_flush_buffer( (YY_BUFFER_STATE)0, yyscanner); FOO_init_buffer( (YY_BUFFER_STATE)0, (FILE*)0, yyscanner); FOO_load_buffer_state( yyscanner); FOO_scan_buffer( (char*)0, (yy_size_t)0, yyscanner); FOO_scan_bytes( (yyconst char*)0, 0, yyscanner); FOO_scan_string( (yyconst char*)0, yyscanner); FOO_switch_to_buffer( (YY_BUFFER_STATE)0, yyscanner); FOOrestart( (FILE*)0, (yyscan_t )0); FOOget_extra( (yyscan_t )0 ); FOOget_in( (yyscan_t )0 ); FOOget_leng( (yyscan_t )0 ); FOOget_out( (yyscan_t )0 ); FOOget_text( (yyscan_t )0 ); FOOlex( (yyscan_t )0 ); FOOlex_destroy( (yyscan_t )0 ); FOOlex_init( (yyscan_t *)0 ); FOOset_extra( (void *)0, (yyscan_t )0 ); FOOset_in( (FILE*)0, (yyscan_t )0 ); FOOset_out( (FILE*)0, (yyscan_t )0 ); } } %% int main(void); int main () { yyscan_t scanner; FOOlex_init( &scanner); FOOlex( scanner); FOOlex_destroy( scanner); printf( "TEST RETURNING OK.\n"); return 0; } flex-2.5.39/tests/test-prefix-r/test.input0000644000175000017500000000001512060131401020715 0ustar srivastasrivastaDummy input. flex-2.5.39/tests/test-prefix-r/Makefile.in0000644000175000017500000003134412314621561020750 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-prefix-r DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c scanner.h parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = test-prefix-r all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-prefix-r/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-prefix-r/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-prefix-r/Makefile.am0000644000175000017500000000313212300734270020726 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c scanner.h parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = test-prefix-r scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-prefix-r/README0000644000175000017500000000011712060131401017540 0ustar srivastasrivastaThis check is to make sure the prefix "yy" is substituted where it should be. flex-2.5.39/tests/test-multiple-scanners-nr/0002755000175000017500000000000012314621666021234 5ustar srivastasrivastaflex-2.5.39/tests/test-multiple-scanners-nr/scanner-2.l0000644000175000017500000000263512060131401023162 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* A template scanner file to build "scanner-2.c" and "scanner-2.h". */ #include #include #include "config.h" %} %option header="scanner-2.h" %option 8bit outfile="scanner-2.c" prefix="S2_" %option nounput nomain noyywrap %option warn stack noyy_top_state %x OFF %x ON %% { on yy_push_state(ON); return 3; off yy_push_state(OFF); return 4; .|\n return 5; } .|\n yy_pop_state(); return 6; .|\n yy_pop_state(); return 7; %% flex-2.5.39/tests/test-multiple-scanners-nr/main.c0000644000175000017500000000305412060131401022301 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ #include "scanner-1.h" #include "scanner-2.h" int main ( int argc, char** argv ) { int S1_ok=1, S2_ok=1; YY_BUFFER_STATE buff1, buff2; S1_out = S2_out = stdout; buff1 = S1__scan_string("foo on bar off"); buff2 = S2__scan_string("on blah blah off foo on bar off"); /* scan simultaneously. */ while(S1_ok || S2_ok) { if (S1_ok) S1_ok = S1_lex(); if (S2_ok) S2_ok = S2_lex(); } S1__delete_buffer(buff1); S2__delete_buffer(buff2); printf("TEST RETURNING OK.\n"); return 0; } /* vim:set tabstop=8 softtabstop=4 shiftwidth=4: */ flex-2.5.39/tests/test-multiple-scanners-nr/Makefile.in0000644000175000017500000003161112314621561023273 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-multiple-scanners-nr DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner-1.l scanner-2.l main.c CLEANFILES = scanner-1.c scanner-1.h $(testname)$(EXEEXT) OUTPUT $(OBJS) scanner-2.c scanner-2.h OBJS = scanner-1.o scanner-2.o main.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) -I$(builddir) #LDFLAGS = $(top_srcdir)/libfl.a #YFLAGS = --defines --output=parser.c testname = test-multiple-scanners-nr all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-multiple-scanners-nr/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-multiple-scanners-nr/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner-1.c: $(srcdir)/scanner-1.l $(FLEX) $(LFLAGS) --header=scanner-1.h $< scanner-2.c: $(srcdir)/scanner-2.l $(FLEX) $(LFLAGS) --header=scanner-2.h $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< main.o: scanner-1.h scanner-2.h scanner-1.h: scanner-1.c scanner-2.h: scanner-2.c # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-multiple-scanners-nr/scanner-1.l0000644000175000017500000000264312060131401023160 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* A template scanner file to build "scanner-1.c" and "scanner-1.h". */ #include #include #include "config.h" %} %option header="scanner-1.h" %option 8bit outfile="scanner-1.c" prefix="S1_" %option nounput nomain noyywrap %option warn stack noyy_top_state %x ON %x OFF %% { on yy_push_state(ON); return 10; off yy_push_state(OFF); return 11; .|\n return 12; } .|\n yy_pop_state(); return 13; .|\n yy_pop_state(); return 14; %% flex-2.5.39/tests/test-multiple-scanners-nr/Makefile.am0000644000175000017500000000337112300734270023261 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex builddir = @builddir@ EXTRA_DIST = scanner-1.l scanner-2.l main.c CLEANFILES = scanner-1.c scanner-1.h $(testname)$(EXEEXT) OUTPUT $(OBJS) scanner-2.c scanner-2.h OBJS = scanner-1.o scanner-2.o main.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) -I$(builddir) #LDFLAGS = $(top_srcdir)/libfl.a #YFLAGS = --defines --output=parser.c testname = test-multiple-scanners-nr scanner-1.c: $(srcdir)/scanner-1.l $(FLEX) $(LFLAGS) --header=scanner-1.h $< scanner-2.c: $(srcdir)/scanner-2.l $(FLEX) $(LFLAGS) --header=scanner-2.h $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< main.o: scanner-1.h scanner-2.h scanner-1.h: scanner-1.c scanner-2.h: scanner-2.c flex-2.5.39/tests/test-extended/0002755000175000017500000000000012314621666016752 5ustar srivastasrivastaflex-2.5.39/tests/test-extended/scanner.l0000644000175000017500000000342512060131401020537 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* This test is for correctness of extended (?...) patterns. */ #include #include #include "config.h" %} %option 8bit outfile="scanner.c" prefix="test" %option nounput nomain noyywrap %option warn %% /* Output should match the input. */ abc(?# Single Line Comment )def ECHO; ghi(?# multi-line comment )jkl ECHO; mno(?# multi-line // comment with ## ~~!@#$ %^&*(@-_+=\|,.<>/ ?: ; punctuation )pqr ECHO; (?# Start of a rule.)stu ECHO; vwxyz(?#End of a rule.) ECHO; A(?x: B /* comment */ C D) ECHO; \n ECHO; %% int main(void); int main () { yyin = stdin; yyout = stdout; yylex(); //printf("TEST RETURNING OK.\n"); return 0; } flex-2.5.39/tests/test-extended/test.input0000644000175000017500000000004012060131401020757 0ustar srivastasrivastaabcdefghijklmnopqrstuvwxyz ABCD flex-2.5.39/tests/test-extended/Makefile.in0000644000175000017500000003112212314621561021006 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-extended DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c scanner.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(builddir) -I$(top_srcdir) -I$(top_builddir) testname = test-extended all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-extended/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-extended/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input | cmp -s $(srcdir)/test.input - .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-extended/Makefile.am0000644000175000017500000000274512300734270021003 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex builddir = @builddir@ EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c scanner.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(builddir) -I$(top_srcdir) -I$(top_builddir) testname = test-extended scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input | cmp -s $(srcdir)/test.input - .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-array-r/0002755000175000017500000000000012314621667016530 5ustar srivastasrivastaflex-2.5.39/tests/test-array-r/scanner.l0000644000175000017500000000270512060131401020314 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* A template scanner file to build "scanner.c". */ #include #include #include "config.h" /*#include "parser.h" */ %} %option 8bit outfile="scanner.c" prefix="test" %option nounput nomain noyywrap %option warn array reentrant %% .|\n { } %% int main(void); int main () { yyscan_t lexer; yylex_init(&lexer); yyset_in(stdin, lexer); yyset_out(stdout, lexer); yylex( lexer ); yylex_destroy( lexer); printf("TEST RETURNING OK.\n"); return 0; } flex-2.5.39/tests/test-array-r/test.input0000644000175000017500000000006612060131401020544 0ustar srivastasrivasta0000 foo 1111 foo 0000 bar 0000 foo 1111 foo 0000 bar flex-2.5.39/tests/test-array-r/Makefile.in0000644000175000017500000003112412314621560020564 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-array-r DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #YFLAGS = --defines --output=parser.c testname = test-array-r all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-array-r/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-array-r/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-array-r/Makefile.am0000644000175000017500000000272412300734270020555 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #YFLAGS = --defines --output=parser.c testname = test-array-r scanner.c: $(srcdir)/scanner.l $(FLEX) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-string-nr/0002755000175000017500000000000012314621667017076 5ustar srivastasrivastaflex-2.5.39/tests/test-string-nr/scanner.l0000644000175000017500000000515712060131401020666 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* A template scanner file to build "scanner.c". */ #include #include #include "config.h" #define NUMBER 200 #define WORD 201 %} %option 8bit outfile="scanner.c" prefix="test" %option nounput nomain nodefault noyywrap %option warn %% [[:space:]]+ { } [[:digit:]]+ { printf("NUMBER "); fflush(stdout);} [[:alpha:]]+ { printf("WORD "); fflush(stdout);} . { fprintf(stderr,"*** Error: Unrecognized character '%c' while scanning.\n", yytext[0]); yyterminate(); } <> { printf("<>\n"); yyterminate();} %% #define INPUT_STRING_1 "1234 foo bar" #define INPUT_STRING_2 "1234 foo bar *@&@&###@^$#&#*" int main(void); int main () { char * buf; int len; YY_BUFFER_STATE state; /* Scan a good string. */ printf("Testing: yy_scan_string(%s): ",INPUT_STRING_1); fflush(stdout); state = yy_scan_string ( INPUT_STRING_1 ); yylex(); yy_delete_buffer(state); /* Scan only the first 12 chars of a string. */ printf("Testing: yy_scan_bytes(%s): ",INPUT_STRING_2); fflush(stdout); state = yy_scan_bytes ( INPUT_STRING_2, 12 ); yylex(); yy_delete_buffer(state); /* Scan directly from a buffer. We make a copy, since the buffer will be modified by flex.*/ printf("Testing: yy_scan_buffer(%s): ",INPUT_STRING_1); fflush(stdout); len = strlen(INPUT_STRING_1) + 2; buf = (char*)malloc( len ); strcpy( buf, INPUT_STRING_1); buf[ len -2 ] = 0; /* Flex requires two NUL bytes at end of buffer. */ buf[ len -1 ] =0; state = yy_scan_buffer( buf, len ); yylex(); yy_delete_buffer(state); printf("TEST RETURNING OK.\n"); return 0; } flex-2.5.39/tests/test-string-nr/Makefile.in0000644000175000017500000003121312314621561021132 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-string-nr DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l CLEANFILES = scanner.c scanner.h parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = test-string-nr all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-string-nr/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-string-nr/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-string-nr/Makefile.am0000644000175000017500000000300512300734270021114 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l CLEANFILES = scanner.c scanner.h parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = test-string-nr scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-ccl/0002755000175000017500000000000012314621666015713 5ustar srivastasrivastaflex-2.5.39/tests/test-ccl/scanner.l0000644000175000017500000000741212060131401017500 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* A template scanner file to build "scanner.c". */ #include #include #include "config.h" /*#include "parser.h" */ #define err_abort() do{printf("ERROR: flex line %d. input line %d.\n", __LINE__, yylineno); abort();} while(0) #define a_ok() do{printf("OK: flex line %d. input line %d.\n", __LINE__, yylineno); return 1;}while(0) %} %option 8bit outfile="scanner.c" prefix="test" %option nounput nomain noyywrap %option warn %% ^"^alpha:"[[:^alpha:]]+@alpha@\n printf("OK: %s", yytext); ++yylineno; return 1; ^"^digit:"[[:^digit:]]+@digit@\n printf("OK: %s", yytext); ++yylineno; return 1; ^"^alnum:"[[:^alnum:]]+@alnum@\n printf("OK: %s", yytext); ++yylineno; return 1; ^"^upper:"[[:^upper:]]+@upper@\n printf("OK: %s", yytext); ++yylineno; return 1; ^"^lower:"[[:^lower:]]+@lower@\n printf("OK: %s", yytext); ++yylineno; return 1; ^"^space:"[[:^space:]]+@space@\n printf("OK: %s", yytext); ++yylineno; return 1; ^"^blank:"[[:^blank:]]+@blank@\n printf("OK: %s", yytext); ++yylineno; return 1; ^"^punct:"[[:^punct:]]+@punct@\n printf("OK: %s", yytext); ++yylineno; return 1; ^"^cntrl:"[[:^cntrl:]]+@cntrl@\n printf("OK: %s", yytext); ++yylineno; return 1; ^"^xdigit:"[[:^xdigit:]]+@xdigit@\n printf("OK: %s", yytext); ++yylineno; return 1; ^"a-d:"[[:alpha:]]{-}[[:digit:]]+@a-d@\n printf("OK: %s", yytext); ++yylineno; return 1; ^"l-xyz:"([[:lower:]]{-}[xyz])+@l-xyz@\n printf("OK: %s", yytext); ++yylineno; return 1; ^"abcd-bc:"([abcd]{-}[bc])+@abcd-bc@\n printf("OK: %s", yytext); ++yylineno; return 1; ^"abcde-b-c:"([abcde]{-}[b]{-}[c])+@abcde-b-c@\n printf("OK: %s", yytext); ++yylineno; return 1; ^"^XY-^XYZ:"([^XY]{-}[^XYZ])+@^XY-^XYZ@\n printf("OK: %s", yytext); ++yylineno; return 1; ^"a+d:"([[:alpha:]]{+}[[:digit:]])+"@a+d@"\n a_ok(); ^"a-u+Q:"([[:alpha:]]{-}[[:upper:]]{+}[Q])+"@a-u+Q@"\n a_ok(); ^"ia:"(?i:a)+@ia@\n printf("OK: %s", yytext); ++yylineno; return 1; ^"iabc:"(?i:abc)+@iabc@\n printf("OK: %s", yytext); ++yylineno; return 1; ^"ia-c:"(?i:[a-c]+)@ia-c@\n printf("OK: %s", yytext); ++yylineno; return 1; /* We don't want this one to match. */ ^"check-a:"(?i:(?-i:A))@\n err_abort(); ^"check-a:"(?i:(?-i:(?i:A)))@\n printf("OK: %s", yytext); ++yylineno; return 1; /* We don't want this one to match. */ ^"dot-all-1:"(?-s:XXX.*)@dot-all-1@\n err_abort(); ^"dot-all-1:"(?s:XXX.*)@dot-all-1@\n a_ok(); ^"x1:"(?x: a | b )+@x1@\n a_ok(); ^"x2:"(?x: a | (?# Comment ) b )+@x2@\n a_ok(); .|\n { err_abort(); } %% int main(void); int main () { yyin = stdin; yyout = stdout; while (yylex()) ; printf("TEST RETURNING OK.\n"); return 0; } flex-2.5.39/tests/test-ccl/test.input0000644000175000017500000000244512060131401017733 0ustar srivastasrivasta^alpha:0123456789 ~!@#$%^&*(){}[]':;"<>,./?\+=_-`@alpha@ ^digit:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ~!@#$%^&*(){}[]':;"<>,./?\+=_-`@digit@ ^alnum:~!@#$%^&*(){}[]':;"<>,./?\+=_-`@alnum@ ^upper:abcdefghijklmnopqrstuvwxyz0123456789 ~!@#$%^&*(){}[]':;"<>,./?\+=_-`@upper@ ^lower:ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEF ~!@#$%^&*(){}[]':;"<>,./?\+=_-`@lower@ ^space:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEF~!@#$%^&*(){}[]':;"<>,./?\+=_-`@space@ ^blank:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEF~!@#$%^&*(){}[]':;"<>,./?\+=_-`@blank@ ^punct:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEF Z@punct@ ^cntrl:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEF~!@#$%^&*(){}[]':;"<>,./?\+=_-`@cntrl@ ^xdigit:ghijklmnopqrstuvwxyzGHIJKLMNOPQRSTUVWXYZ ~!@#$%^&*(){}[]':;"<>,./?\+=_-`@xdigit@ a-d:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@a-d@ l-xyz:abcdefghijklmnopqrstuvw@l-xyz@ abcd-bc:aaaaddddaaaa@abcd-bc@ abcde-b-c:aaaaddddeeee@abcde-b-c@ ^XY-^XYZ:ZZZZZZZZZZZ@^XY-^XYZ@ a+d:abc0123xyz789@a+d@ a-u+Q:abcQQQQxyz@a-u+Q@ ia:AaAa@ia@ iabc:ABCabcAbCaBc@iabc@ ia-c:ABCabcAbCaBc@ia-c@ check-a:a@ dot-all-1:XXX junk junk junk @dot-all-1@ x1:abaabb@x1@ x2:abaabb@x2@ flex-2.5.39/tests/test-ccl/Makefile.in0000644000175000017500000003103712314621561017754 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-ccl DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c scanner.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(builddir) -I$(top_srcdir) -I$(top_builddir) testname = test-ccl all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-ccl/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-ccl/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-ccl/Makefile.am0000644000175000017500000000270112300734270017734 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex builddir = @builddir@ EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c scanner.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(builddir) -I$(top_srcdir) -I$(top_builddir) testname = test-ccl scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-noansi-r/0002755000175000017500000000000012314621667016701 5ustar srivastasrivastaflex-2.5.39/tests/test-noansi-r/scanner.l0000644000175000017500000000361312060131401020464 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ /* A reentrant scanner. This file will not compile under flex version <= 2.5.4. Sample Input: # this is a comment foo = true bar = "string value" integer = 43 */ %{ #include "config.h" %} %option prefix="test" outfile="scanner.c" %option nounput noyywrap noyylineno warn nodefault %option reentrant %option noansi-definitions noansi-prototypes IDENT [[:alnum:]_-] WS [[:blank:]] %% ^{IDENT}+{WS}*={WS}*(true|false){WS}*\r?\n { return 100;} ^{IDENT}+{WS}*={WS}*\"[^\"\n\r]*\"{WS}*\r?\n { return 101;} ^{IDENT}+{WS}*={WS}*[[:digit:]]+{WS}*\r?\n { return 102;} ^{WS}*#.*\r?\n { } ^{WS}*\r?\n { } .|\n { fprintf(stderr,"Invalid line.\n"); exit(-1);} %% int main(void); int main () { yyscan_t lexer; yylex_init( &lexer ); yyset_out ( stdout,lexer); yyset_in ( stdin, lexer); while( yylex(lexer) ) { } yylex_destroy( lexer ); printf("TEST RETURNING OK.\n"); return 0; } flex-2.5.39/tests/test-noansi-r/test.input0000644000175000017500000000007112060131401020711 0ustar srivastasrivasta# this is a comment foo = "bar" num = 43 setting = false flex-2.5.39/tests/test-noansi-r/Makefile.in0000644000175000017500000003125212314621561020740 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-noansi-r DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #YFLAGS = --defines --output=parser.c testname = test-noansi-r all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-noansi-r/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-noansi-r/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-noansi-r/Makefile.am0000644000175000017500000000304712300734270020725 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #YFLAGS = --defines --output=parser.c testname = test-noansi-r scanner.c: $(srcdir)/scanner.l $(FLEX) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-bison-yylval/0002755000175000017500000000000012314621666017602 5ustar srivastasrivastaflex-2.5.39/tests/test-bison-yylval/scanner.l0000644000175000017500000000435312060131401021370 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* The scanner expects to link to bison yylval . */ #include #include #include "parser.h" #include "config.h" static char* STRDUP(char* s1); enum yesno_t { no=0, yes=1 }; #define YY_EXTRA_TYPE enum yesno_t %} %option 8bit outfile="scanner.c" prefix="test" %option reentrant bison-bridge %option noyywrap nomain nounput noyy_top_state noyywrap nodefault warn %option prefix="test" header="scanner.h" %option stack %x IN_TAG %x DISCARD_THRU_GT %% #define YY_USER_INIT yyextra = no; #define NEED_TAG_NAME yyextra { "str = STRDUP(yytext); return TEXT;} } { ">" { yy_pop_state( yyscanner ); return GT; } [[:alpha:]][[:alnum:]]* { if( NEED_TAG_NAME == yes){ NEED_TAG_NAME=no; yylval->str = STRDUP(yytext); return TAGNAME; } } .|\r|\n { } } { [^>]{1,512} { } ">" { yy_pop_state(yyscanner);} } %% static char* STRDUP(char* s1) { char* s2 = (char*)malloc(strlen(s1)+1); sprintf(s2,"%s",s1); return s2; } flex-2.5.39/tests/test-bison-yylval/main.c0000644000175000017500000000237212060131411020652 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ #include "parser.h" #include "scanner.h" int main ( int argc, char** argv ) { yyscan_t scanner; /*yydebug =1;*/ testlex_init ( &scanner ); testset_in(stdin,scanner); testparse ( scanner ); testlex_destroy ( scanner ); return 0; } /* vim:set tabstop=8 softtabstop=4 shiftwidth=4: */ flex-2.5.39/tests/test-bison-yylval/parser.y0000644000175000017500000000365412060131411021254 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ /* Accepts html-like input. How to compile: bison --defines --output-file="parser.c" --name-prefix="test" parser.y */ %parse-param { void* scanner } %{ #include #include #include #include "config.h" #define YYERROR_VERBOSE 1 #define YYLEX_PARAM scanner /* A dummy function. A check against seg-faults in yylval->str. */ int process_text(char* s) { int total =0; while(*s) { total += (int) *s; ++s; } return total; } %} %pure_parser %union { long unused; char * str; } %token TAGNAME TEXT %token LT %token GT %token LTSLASH " This is a test flex-2.5.39/tests/test-bison-yylval/Makefile.in0000644000175000017500000003150112314621560021636 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-bison-yylval DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ #LDFLAGS = $(top_srcdir)/libfl.a YFLAGS = --defines --output=parser.c --name-prefix="test" abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l parser.y test.input main.c CLEANFILES = scanner.c scanner.h parser.c parser.h $(testname)$(EXEEXT) $(OBJS) OUTPUT OBJS = parser.o scanner.o main.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) -I$(builddir) testname = test-bison-yylval all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-bison-yylval/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-bison-yylval/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $< scanner.h: scanner.c scanner.o: parser.h parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< parser.h: parser.c main.o: scanner.h parser.h $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-bison-yylval/Makefile.am0000644000175000017500000000333312300734270021625 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex builddir = @builddir@ EXTRA_DIST = scanner.l parser.y test.input main.c CLEANFILES = scanner.c scanner.h parser.c parser.h $(testname)$(EXEEXT) $(OBJS) OUTPUT OBJS = parser.o scanner.o main.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) -I$(builddir) #LDFLAGS = $(top_srcdir)/libfl.a YFLAGS = --defines --output=parser.c --name-prefix="test" testname = test-bison-yylval scanner.c: $(srcdir)/scanner.l $(FLEX) $< scanner.h: scanner.c scanner.o: parser.h parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< parser.h: parser.c main.o: scanner.h parser.h $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-lineno-r/0002755000175000017500000000000012314621667016676 5ustar srivastasrivastaflex-2.5.39/tests/test-lineno-r/scanner.l0000644000175000017500000000453212060131401020462 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* A template scanner file to build "scanner.c". Run as: test-lineno-r # report flex's yylineno test-lineno-r 1 # report count_newlines(stdin) */ #include #include #include "config.h" %} %option 8bit outfile="scanner.c" prefix="test" %option nounput nomain noyywrap yylineno reentrant %option warn WORD [[:alpha:]]+ DIGIT [[:digit:]] %% /* The goal here is to test the yylineno processing by: - providing some rules than CAN match newlines and other rules that can NOT match newlines, - matching several newlines in one rule, - directly modifying yylineno. */ "yylineno++" yylineno++; "yylineno--" yylineno--; [[:blank:]]+ {WORD} {DIGIT}+(\n{DIGIT}+)* \n . <> { printf("%d\n", yylineno); yyterminate(); } %% /* returns number of '\n' characters in input, plus one. This is what flex does, essentially. */ static int count_newlines (FILE* in) { int n=1,c; while ((c=fgetc(in)) != EOF) if( c == '\n') n++; return n; } int main ( int argc, char** argv ); int main (argc, argv) int argc; char ** argv; { if( argc > 1 ) printf("%d\n", count_newlines(stdin)); else{ yyscan_t s; yylex_init(&s); yyset_in(stdin,s); yyset_out(stdout,s); yylex(s); yylex_destroy(s); } return 0; } flex-2.5.39/tests/test-lineno-r/test.input0000644000175000017500000000045312060131401020712 0ustar srivastasrivastaThese words are separated by newlines and sometimes spaces too. The next three lines are numbers with only intervening newlines 01123 581321 34 And now for some blank lines.... Finally, we directly modify yylineno, but then change it back afterwards (see scanner.l): yylineno++ yylineno-- flex-2.5.39/tests/test-lineno-r/Makefile.in0000644000175000017500000003115312314621561020735 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-lineno-r DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) testname = test-lineno-r all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-lineno-r/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-lineno-r/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) test `./$(testname)$(EXEEXT) < $(srcdir)/test.input` -eq \ `./$(testname)$(EXEEXT) 1 < $(srcdir)/test.input` || exit 1 .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-lineno-r/Makefile.am0000644000175000017500000000275112300734270020723 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) testname = test-lineno-r scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) test `./$(testname)$(EXEEXT) < $(srcdir)/test.input` -eq \ `./$(testname)$(EXEEXT) 1 < $(srcdir)/test.input` || exit 1 .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-mem-nr/0002755000175000017500000000000012314621667016346 5ustar srivastasrivastaflex-2.5.39/tests/test-mem-nr/scanner.l0000644000175000017500000001070212060131401020126 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* A template scanner file to build "scanner.c". * The whole idea is to cause memory realloc by * 1. pushing a lot on the condition stack, and * 2. eating input greater than YY_BUF_SIZE */ #include #include #include "config.h" /* Insanely small read buffer. This pretty much guarantees at least one realloc. */ #ifdef YY_BUF_SIZE #undef YY_BUF_SIZE #endif #define YY_BUF_SIZE 8 %} %option 8bit outfile="scanner.c" prefix="test" %option nounput nomain noyywrap %option warn stack nodefault %option noyyalloc noyyrealloc noyyfree %x parens %% { "(" { printf("yy_push_state(parens)\n"); yy_push_state(parens); } len=[0-9]+ { printf("About read token where %s\n",yytext); } 0+ { } .|\n { } } { "(" { printf("yy_push_state(parens)\n"); yy_push_state(parens); } ")" { printf("yy_pop_state()\n");yy_pop_state();} [^()\n]+ { } .|\n { } } %% /* total memory allocated */ static size_t total_mem=0; /* track the amount of memory for ptr. */ struct memsz { void* p; size_t sz; }; static struct memsz * ptrs=0; /* Array of pairs. */ static int nptrs=0; /* Number of pairs in array. */ static int arrsz=0; /* Capacity of array. */ static void dump_mem(FILE* fp){ int i; fprintf(fp,"\tptrs[%d] = {", nptrs); for (i=0; i < arrsz; i++) fprintf(fp," {%#lx,%ld},", (long)ptrs[i].p, (long)ptrs[i].sz); fprintf(fp,"}\n"); } void * yyalloc(yy_size_t n) { void * p; int i; total_mem += n; p = (void*)malloc(n); if( nptrs >= arrsz){ /* increase array size by 1 */ arrsz++; ptrs = (struct memsz*)realloc( ptrs, arrsz * sizeof(struct memsz)); ptrs[nptrs].p = 0; ptrs[nptrs].sz = 0; } /* find a null slot */ for(i=0; i < arrsz ; i++) if (ptrs[i].p == 0) { ptrs[i].p = p; ptrs[i].sz = n; } nptrs++; printf("yyflex_alloc(%8ld) total=%8ld return=%#10lx\n",(long)n,(long)total_mem,(long)p); dump_mem(stdout); return p; } void * yyrealloc(void* p, yy_size_t n) { int i; for (i=0; i < arrsz; i++) if ( ptrs[i].p == p){ total_mem -= ptrs[i].sz; total_mem += n; ptrs[i].p = (void*)realloc(p,n); ptrs[i].sz = n; printf("yyflex_realloc(%#10lx,%8ld) total=%8ld return=%8lx\n", (long)p,(long)n,(long)total_mem,(long)ptrs[i].p); dump_mem(stdout); return ptrs[i].p; } fprintf(stderr,"ERROR: yyflex_realloc could not locate pointer %#lx.\n",(long)p); dump_mem(stdout); exit(1); } void yyfree(void* p) { int i; for (i=0; i < arrsz; i++) if ( ptrs[i].p == p){ total_mem -= ptrs[i].sz; free(p); ptrs[i].p = 0; ptrs[i].sz = 0; nptrs--; printf("yyflex_free(%#10lx) total=%8ld\n",(long)p,(long)total_mem); dump_mem(stdout); return; } fprintf(stderr,"ERROR: yyflex_free could not locate pointer %#lx.\n",(long)p); dump_mem(stdout); exit(1); } int main(void); int main () { arrsz = 1; ptrs = (struct memsz*)calloc(1,sizeof(struct memsz)); nptrs = 0; yyin = stdin; yyout = stdout; yylex(); yylex_destroy(); free(ptrs); if ( nptrs > 0 || total_mem > 0){ fprintf(stderr,"Oops. Looks like a memory leak: nptrs=%d, unfreed memory=%ld\n",nptrs,(long)total_mem); exit(1); } printf("TEST RETURNING OK.\n"); return 0; } flex-2.5.39/tests/test-mem-nr/test.input0000644000175000017500000000525012060131401020362 0ustar srivastasrivastaFirst we push a lot on the stack by nesting parenthesis: (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( ((((((((((((((((((((((((((((((((((((((((((( (should be 200 states pushed here) )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) ))))))))))))))))))))))))))))))))))))))))))) Now we match progressively bigger tokens to increase the read buffer: len=1 0 len=2 00 len=4 0000 len=8 00000000 len=16 0000000000000000 len=32 00000000000000000000000000000000 len=64 0000000000000000000000000000000000000000000000000000000000000000 len=128 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 len=256 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 len=512 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 len=1024 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 flex-2.5.39/tests/test-mem-nr/Makefile.in0000644000175000017500000003107612314621561020411 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-mem-nr DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c scanner.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a testname = test-mem-nr all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-mem-nr/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-mem-nr/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-mem-nr/Makefile.am0000644000175000017500000000270112300734270020366 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c scanner.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a testname = test-mem-nr scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-debug-r/0002755000175000017500000000000012314621667016500 5ustar srivastasrivastaflex-2.5.39/tests/test-debug-r/scanner.l0000644000175000017500000000305212060131401020260 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* A template scanner file to build "scanner.c". */ #include #include #include "config.h" %} %option 8bit outfile="scanner.c" prefix="test" %option nounput nomain noyywrap %option warn debug reentrant %% .+ { } \n { } %% int main(void); int main () { yyscan_t lexer; yylex_init( &lexer ); yyset_out ( stdout,lexer); yyset_in ( stdin, lexer); /* Just see if the next line compiles. */ testset_debug (testget_debug(lexer), lexer); while( yylex(lexer) ) { } yylex_destroy( lexer ); printf("TEST RETURNING OK.\n"); return 0; } flex-2.5.39/tests/test-debug-r/test.input0000644000175000017500000000013012060131401020504 0ustar srivastasrivastaAny input will do for this test. We are only testing if it actually runs in debug mode. flex-2.5.39/tests/test-debug-r/Makefile.in0000644000175000017500000003107112314621561020536 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-debug-r DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a testname = test-debug-r all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-debug-r/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-debug-r/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-debug-r/Makefile.am0000644000175000017500000000267112300734270020526 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a testname = test-debug-r scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-string-r/0002755000175000017500000000000012314621667016720 5ustar srivastasrivastaflex-2.5.39/tests/test-string-r/scanner.l0000644000175000017500000000557512060131401020514 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* A template scanner file to build "scanner.c". */ #include #include #include "config.h" #define NUMBER 200 #define WORD 201 %} %option 8bit outfile="scanner.c" prefix="test" %option nounput nomain nodefault noyywrap %option warn reentrant %% [[:space:]]+ { } [[:digit:]]+ { printf("NUMBER "); fflush(stdout);} [[:alpha:]]+ { printf("WORD "); fflush(stdout);} . { fprintf(stderr,"*** Error: Unrecognized character '%c' while scanning.\n", yytext[0]); yyterminate(); } <> { printf("<>\n"); yyterminate();} %% #define INPUT_STRING_1 "1234 foo bar" #define INPUT_STRING_2 "1234 foo bar *@&@&###@^$#&#*" int main(void); int main () { char * buf; int len; YY_BUFFER_STATE state; yyscan_t scanner=NULL; /* Scan a good string. */ printf("Testing: yy_scan_string(%s): ",INPUT_STRING_1); fflush(stdout); yylex_init(&scanner); state = yy_scan_string ( INPUT_STRING_1 ,scanner); yylex(scanner); yy_delete_buffer(state, scanner); yylex_destroy(scanner); /* Scan only the first 12 chars of a string. */ printf("Testing: yy_scan_bytes(%s): ",INPUT_STRING_2); fflush(stdout); yylex_init(&scanner); state = yy_scan_bytes ( INPUT_STRING_2, 12 ,scanner); yylex(scanner); yy_delete_buffer(state,scanner); yylex_destroy(scanner); /* Scan directly from a buffer. We make a copy, since the buffer will be modified by flex.*/ printf("Testing: yy_scan_buffer(%s): ",INPUT_STRING_1); fflush(stdout); len = strlen(INPUT_STRING_1) + 2; buf = (char*)malloc( len ); strcpy( buf, INPUT_STRING_1); buf[ len -2 ] = 0; /* Flex requires two NUL bytes at end of buffer. */ buf[ len -1 ] =0; yylex_init(&scanner); state = yy_scan_buffer( buf, len ,scanner); yylex(scanner); yy_delete_buffer(state,scanner); yylex_destroy(scanner); printf("TEST RETURNING OK.\n"); return 0; } flex-2.5.39/tests/test-string-r/Makefile.in0000644000175000017500000003120612314621561020756 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-string-r DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l CLEANFILES = scanner.c scanner.h parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = test-string-r all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-string-r/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-string-r/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-string-r/Makefile.am0000644000175000017500000000300312300734270020734 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l CLEANFILES = scanner.c scanner.h parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = test-string-r scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-c++-multiple-scanners/0002755000175000017500000000000012314621666021165 5ustar srivastasrivastaflex-2.5.39/tests/test-c++-multiple-scanners/scanner-2.l0000644000175000017500000000260712060131401023112 0ustar srivastasrivasta // This file is part of flex. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // 1. Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // 2. Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // Neither the name of the University nor the names of its contributors // may be used to endorse or promote products derived from this software // without specific prior written permission. // // THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR // IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR // PURPOSE. %{ #include "config.h" %} %option 8bit outfile="scanner-2.cpp" prefix="S2_" %option nounput nomain %option warn stack noyy_top_state %x OFF %x ON %% { on yy_push_state(ON); return 3; off yy_push_state(OFF); return 4; .|\n return 5; } .|\n yy_pop_state(); return 6; .|\n yy_pop_state(); return 7; %% int S2_FlexLexer::yywrap() { std::cout << "NOW WRAPPING." << std::endl; return 1; } flex-2.5.39/tests/test-c++-multiple-scanners/main.cpp0000644000175000017500000000306212060131401022571 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ #include #undef yyFlexLexer #define yyFlexLexer S1_FlexLexer #include #undef yyFlexLexer #define yyFlexLexer S2_FlexLexer #include int main ( int argc, char** argv ) { int S1_ok=1, S2_ok=1; S1_FlexLexer* S1 = new S1_FlexLexer; S2_FlexLexer* S2 = new S2_FlexLexer; // scan simultaneously. while(S1_ok || S2_ok) { if (S1_ok) S1_ok = S1->yylex(); if (S2_ok) S2_ok = S2->yylex(); } printf("TEST RETURNING OK.\n"); delete S1; delete S2; return 0; } /* vim:set tabstop=8 softtabstop=4 shiftwidth=4: */ flex-2.5.39/tests/test-c++-multiple-scanners/test.input0000644000175000017500000000001712060131401023176 0ustar srivastasrivastafoo on bar off flex-2.5.39/tests/test-c++-multiple-scanners/Makefile.in0000644000175000017500000003160712314621560023230 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-c++-multiple-scanners DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner-1.l scanner-2.l main.cpp test.input CLEANFILES = scanner-1.cpp $(testname)$(EXEEXT) OUTPUT $(OBJS) scanner-2.cpp OBJS = scanner-1.o scanner-2.o main.o AM_CXXFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #YFLAGS = --defines --output=parser.c testname = test-c++-multiple-scanners all: all-am .SUFFIXES: .SUFFIXES: .cpp .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-c++-multiple-scanners/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-c++-multiple-scanners/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner-1.cpp: $(srcdir)/scanner-1.l $(FLEX) -+ $(LFLAGS) $< scanner-2.cpp: $(srcdir)/scanner-2.l $(FLEX) -+ $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CXX) $(CXXFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) $(builddir)/$(testname)$(EXEEXT) < $(srcdir)/test.input .cpp.o: $(CXX) -c -o $@ $(AM_CXXFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< main.o: scanner-1.h scanner-2.h scanner-1.h: scanner-1.cpp scanner-2.h: scanner-2.cpp # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-c++-multiple-scanners/scanner-1.l0000644000175000017500000000247212060131401023111 0ustar srivastasrivasta // This file is part of flex. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // 1. Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // 2. Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // Neither the name of the University nor the names of its contributors // may be used to endorse or promote products derived from this software // without specific prior written permission. // // THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR // IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR // PURPOSE. %{ #include "config.h" %} %option 8bit outfile="scanner-1.cpp" prefix="S1_" %option nounput nomain noyywrap %option warn stack noyy_top_state %x ON %x OFF %% { on yy_push_state(ON); return 10; off yy_push_state(OFF); return 11; .|\n return 12; } .|\n yy_pop_state(); return 13; .|\n yy_pop_state(); return 14; %% flex-2.5.39/tests/test-c++-multiple-scanners/Makefile.am0000644000175000017500000000336112300734270023211 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex builddir = @builddir@ EXTRA_DIST = scanner-1.l scanner-2.l main.cpp test.input CLEANFILES = scanner-1.cpp $(testname)$(EXEEXT) OUTPUT $(OBJS) scanner-2.cpp OBJS = scanner-1.o scanner-2.o main.o AM_CXXFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #YFLAGS = --defines --output=parser.c testname = test-c++-multiple-scanners scanner-1.cpp: $(srcdir)/scanner-1.l $(FLEX) -+ $(LFLAGS) $< scanner-2.cpp: $(srcdir)/scanner-2.l $(FLEX) -+ $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CXX) $(CXXFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) $(builddir)/$(testname)$(EXEEXT) < $(srcdir)/test.input .cpp.o: $(CXX) -c -o $@ $(AM_CXXFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< main.o: scanner-1.h scanner-2.h scanner-1.h: scanner-1.cpp scanner-2.h: scanner-2.cpp flex-2.5.39/tests/create-test0000755000175000017500000000105712060131411016322 0ustar srivastasrivasta#!/bin/sh TESTFILES="Makefile.am scanner.l parser.y .cvsignore test.input" if [ ! $# -eq 1 ] ; then echo 1>&2 Usage: $0 test-name exit 1 fi if test -e "$1" ; then echo 1>&2 "$1 exists already" exit 1 fi mkdir $1 if test "$?" -ne 0 ; then echo 1>&2 "mkdir $1 failed" exit 1 fi for i in $TESTFILES ; do cp TEMPLATE/$i $1/$i done echo "$1" >> "$1"/.cvsignore sed -i '/--new-test-here--/i\ tests/'"$1"'/Makefile' ../configure.in sed -i '/^\(DIST_\)\?SUBDIRS/a\ '"$1"' \\' Makefile.am sed -i "s:TEMPLATE:$1:g" "$1"/Makefile.am flex-2.5.39/tests/test-posix/0002755000175000017500000000000012314621666016314 5ustar srivastasrivastaflex-2.5.39/tests/test-posix/scanner.l0000644000175000017500000000377512060131401020111 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* The goal of this test is to verify that we are getting the counter-intuitive * posix behavior of the repeat operator `{}'. * * ab{3} - In traditional flex, this matches "abbb". * In posix, this matches "ababab". */ #include #include #include "config.h" #define NUM_TESTS 1 char * tests[NUM_TESTS] = { "ababab"}; int main(void); int tests_ok[NUM_TESTS] = { 0 }; %} %option 8bit outfile="scanner.c" prefix="test" %option nounput nomain noyywrap %option warn posix-compat %% ab{3} tests_ok[0] = 1; return 0; .|\n return 0; %% int main () { YY_BUFFER_STATE state; int i; yyin = stdin; yyout = stdout; /* Run the tests */ for (i=0; i < NUM_TESTS; i++){ printf("Testing: yy_scan_string(%s): ", tests[i]); state = yy_scan_string(tests[i]); yylex(); yy_delete_buffer(state); printf("... %s\n", tests_ok[i] ? "OK" : "FAILED"); } for (i=0; i < NUM_TESTS; i++) if (!tests_ok[i]) exit(1); printf("TEST RETURNING OK.\n"); return 0; } flex-2.5.39/tests/test-posix/Makefile.in0000644000175000017500000003106712314621561020360 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-posix DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l CLEANFILES = scanner.c scanner.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #LFLAGS = --header="scanner.h" testname = test-posix all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-posix/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-posix/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-posix/Makefile.am0000644000175000017500000000267512300734270020347 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l CLEANFILES = scanner.c scanner.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #LFLAGS = --header="scanner.h" testname = test-posix scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-lineno-trailing/0002755000175000017500000000000012314621667020246 5ustar srivastasrivastaflex-2.5.39/tests/test-lineno-trailing/scanner.l0000644000175000017500000000426012300734270022042 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* A template scanner file to build "scanner.c". Run as: test-lineno-trailing # report flex's yylineno test-lineno-trailing 1 # report count_newlines(stdin) */ #include #include #include "config.h" %} %option 8bit outfile="scanner.c" prefix="test" %option nounput nomain noyywrap yylineno %option warn WORD [[:alpha:]]+ %% /* The goal here is to test the yylineno in the context of trailing-contexts. Using rules that have newlines in look-ahead. */ "Fixed_trailing:"/[\n]"test"[\n] {} "Var_trailing:"{WORD}/[\n] {} "Var_prefix_and_trailing:"{WORD}":"/(\n{WORD})* {} \n {} . {} <> { printf("%d\n", yylineno); yyterminate(); } %% /* returns number of '\n' characters in input, plus one. This is what flex does, essentially. */ static int count_newlines (FILE* in) { int n=1,c; while ((c=fgetc(in)) != EOF) if( c == '\n') n++; return n; } int main ( int, char**); int main ( argc, argv ) int argc; char** argv; { if( argc > 1 ) printf("%d\n", count_newlines(stdin)); else{ yyin = stdin; yyout = stdout; yylex(); } return 0; } flex-2.5.39/tests/test-lineno-trailing/test.input0000644000175000017500000000026312300734270022273 0ustar srivastasrivastaWe are testing rules with trailing contexts containing newlines (see scanner.l): Fixed_trailing: test Var_trailing:word test Var_prefix_and_trailing:word: more text comes here flex-2.5.39/tests/test-lineno-trailing/Makefile.in0000644000175000017500000003120712314621561022305 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-lineno-trailing DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) testname = test-lineno-trailing all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-lineno-trailing/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-lineno-trailing/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) test `./$(testname)$(EXEEXT) < $(srcdir)/test.input` -eq \ `./$(testname)$(EXEEXT) 1 < $(srcdir)/test.input` || exit 1 .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-lineno-trailing/Makefile.am0000644000175000017500000000276012300734270022273 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) testname = test-lineno-trailing scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) test `./$(testname)$(EXEEXT) < $(srcdir)/test.input` -eq \ `./$(testname)$(EXEEXT) 1 < $(srcdir)/test.input` || exit 1 .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-include-by-push/0002755000175000017500000000000012314621667020163 5ustar srivastasrivastaflex-2.5.39/tests/test-include-by-push/scanner.l0000644000175000017500000000444312060131401021750 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* A scanner file to build "scanner.c". Input language is any text. "#include " causes a buffer switch. */ #include #include #include "config.h" %} %option 8bit outfile="scanner.c" prefix="test" %option nounput nomain noyywrap %option warn %x GET_FILENAME %% { ^"#include"[[:blank:]]+"<" { BEGIN(GET_FILENAME); } .|\n { ECHO; } } { [[:alnum:]_.-]+> { /* recurse */ yytext[yyleng-1]='\0'; if((yyin=fopen(yytext,"r"))==NULL) { fprintf(stderr,"*** Error: Could not open include file \"%s\".\n",yytext); yyterminate(); } yypush_buffer_state( yy_create_buffer( yyin, YY_BUF_SIZE )); BEGIN(0); } .|\n { fprintf(stderr,"Invalid input \"%s\".\n", yytext); yyterminate(); } } <> { fclose(yyin); yypop_buffer_state(); if(!YY_CURRENT_BUFFER) yyterminate(); } %% int main(int argc, char** argv); int main ( int argc, char** argv ) { FILE * fp; if( argc != 2 ) { fprintf(stderr,"*** Error: Must specifiy one filename.\n"); exit(-1); } if((fp=fopen(argv[1],"r"))==NULL) { fprintf(stderr,"*** Error: fopen(%s) failed.\n",argv[1]); exit(-1); } yyin = fp; yyout = stdout; yylex(); printf("TEST RETURNING OK.\n"); return 0; } flex-2.5.39/tests/test-include-by-push/test-2.input0000644000175000017500000000011412060131401022330 0ustar srivastasrivastaBeginning of "test-2.input". #include End of "test-2.input". flex-2.5.39/tests/test-include-by-push/test-1.input0000644000175000017500000000011412060131401022327 0ustar srivastasrivastaBeginning of "test-1.input". #include End of "test-1.input". flex-2.5.39/tests/test-include-by-push/Makefile.in0000644000175000017500000003141312314621561022221 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-include-by-push DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test-1.input test-2.input test-3.input CLEANFILES = scanner.c scanner.h parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = test-include-by-push all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-include-by-push/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-include-by-push/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) $(srcdir)/test-1.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-include-by-push/Makefile.am0000644000175000017500000000316312300734270022206 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test-1.input test-2.input test-3.input CLEANFILES = scanner.c scanner.h parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = test-include-by-push scanner.c: $(srcdir)/scanner.l $(FLEX) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) $(srcdir)/test-1.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-include-by-push/test-3.input0000644000175000017500000000006412060131401022335 0ustar srivastasrivastaBeginning of "test-3.input". End of "test-3.input". flex-2.5.39/tests/test-c++-basic/0002755000175000017500000000000012314621666016601 5ustar srivastasrivastaflex-2.5.39/tests/test-c++-basic/scanner.l0000644000175000017500000000242512060131401020365 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ #include "config.h" %} %option 8bit outfile="scanner.cpp" prefix="test" %option nounput nomain noyywrap %option warn c++ %% . { } %% int main(void); int main (void) { yyFlexLexer f; f.switch_streams(&std::cin, &std::cout); f.yylex(); std::cout << "TEST RETURNING OK." << std::endl; return 0; } flex-2.5.39/tests/test-c++-basic/test.input0000644000175000017500000000006612060131401020616 0ustar srivastasrivasta0000 foo 1111 foo 0000 bar 0000 foo 1111 foo 0000 bar flex-2.5.39/tests/test-c++-basic/Makefile.in0000644000175000017500000003111612314621560020637 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-c++-basic DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.cpp scanner.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) LFLAGS = -+ #LDFLAGS = testname = test-c++-basic all: all-am .SUFFIXES: .SUFFIXES: .cpp .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-c++-basic/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-c++-basic/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.cpp: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CXX) $(CXXFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .cpp.o: $(CXX) $(CXXFLAGS) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-c++-basic/Makefile.am0000644000175000017500000000270612300734270020627 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.cpp scanner.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) LFLAGS = -+ #LDFLAGS = testname = test-c++-basic scanner.cpp: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CXX) $(CXXFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .cpp.o: $(CXX) $(CXXFLAGS) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $< flex-2.5.39/tests/test-basic-nr/0002755000175000017500000000000012314621666016650 5ustar srivastasrivastaflex-2.5.39/tests/test-basic-nr/scanner.l0000644000175000017500000000334412300734270020447 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ /* TEST scanner. Basic non-reentrant scanner. Compile with: flex scanner.l Sample Input: # this is a comment foo = true bar = "string value" integer = 43 */ %{ #include "config.h" %} %option prefix="test" outfile="scanner.c" %option nounput noyywrap noyylineno warn nodefault IDENT [[:alnum:]_-] WS [[:blank:]] %% ^{IDENT}+{WS}*={WS}*(true|false){WS}*\r?\n { return 100;} ^{IDENT}+{WS}*={WS}*\"[^\"\n\r]*\"{WS}*\r?\n { return 101;} ^{IDENT}+{WS}*={WS}*[[:digit:]]+{WS}*\r?\n { return 102;} ^{WS}*#.*\r?\n { } ^{WS}*\r?\n { } .|\n { fprintf(stderr,"Invalid line.\n"); exit(-1);} %% int main(void); int main () { yyin = stdin; yyout = stdout; while( yylex() ) { } printf("TEST RETURNING OK.\n"); return 0; } flex-2.5.39/tests/test-basic-nr/test.input0000644000175000017500000000007212300734270020674 0ustar srivastasrivasta# this is a comment foo = "bar" num = 43 setting = false flex-2.5.39/tests/test-basic-nr/Makefile.in0000644000175000017500000003125212314621560020707 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-basic-nr DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #YFLAGS = --defines --output=parser.c testname = test-basic-nr all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-basic-nr/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-basic-nr/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-basic-nr/Makefile.am0000644000175000017500000000304712300734270020675 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #YFLAGS = --defines --output=parser.c testname = test-basic-nr scanner.c: $(srcdir)/scanner.l $(FLEX) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-reject/0002755000175000017500000000000012314621666016426 5ustar srivastasrivastaflex-2.5.39/tests/test-reject/scanner.l0000644000175000017500000000403012060131411020205 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ #include #include #include "config.h" %} %option 8bit prefix="test" %option nounput nomain noyywrap %option warn reject %% . { REJECT; } .|\n ; %% int main ( int argc, char** argv ) { FILE* fp = NULL; void *yyscanner=0; M4_YY_DECL_GUTS_VAR(); #ifdef TEST_IS_REENTRANT yylex_init(&yyscanner); #endif #ifdef TEST_HAS_TABLES_EXTERNAL if((fp = fopen(argv[1],"r"))== NULL) YY_FATAL_ERROR("could not open tables file for reading"); if(yytables_fload(fp M4_YY_CALL_LAST_ARG) < 0) YY_FATAL_ERROR("yytables_fload returned < 0"); if(M4_YY_TABLES_VERIFY) exit(0); #endif if(argc > 2){ if((fp = fopen(argv[2],"r"))== NULL) YY_FATAL_ERROR("could not open input file for reading"); yyin = fp; } while(yylex(M4_YY_CALL_ONLY_ARG) != 0) ; #ifdef TEST_HAS_TABLES_EXTERNAL yytables_destroy(M4_YY_CALL_ONLY_ARG); #endif yylex_destroy(M4_YY_CALL_ONLY_ARG); if(argc < 0) /* silence the compiler */ yyscanner = (void*)fp; return 0; } flex-2.5.39/tests/test-reject/test.input0000644000175000017500000000006612060131401020443 0ustar srivastasrivasta0000 foo 1111 foo 0000 bar 0000 foo 1111 foo 0000 bar flex-2.5.39/tests/test-reject/Makefile.in0000644000175000017500000003356412314621561020476 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-reject DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c $(testname)$(EXEEXT)-* OUTPUT $(OBJS) OBJS = test-reject-nr.o test-reject-r.o test-reject-ver.o \ test-reject-ser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) tests = test-reject-nr$(EXEEXT) test-reject-r$(EXEEXT) \ test-reject-ser$(EXEEXT) test-reject-ver$(EXEEXT) testname = test-reject all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-reject/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-reject/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am test-reject-nr.c: $(srcdir)/scanner.l $(FLEX) -o $@ $(LFLAGS) $< test-reject-ver.c: $(srcdir)/scanner.l $(FLEX) -o $@ --tables-verify --tables-file=`basename $@ .c`.tables $(LFLAGS) $< test-reject-ser.c: $(srcdir)/scanner.l $(FLEX) -o $@ --tables-file=`basename $@ .c`.tables $(LFLAGS) $< test-reject-r.c: $(srcdir)/scanner.l $(FLEX) --reentrant -o $@ $(LFLAGS) $< test-reject-nr$(EXEEXT): test-reject-nr.o $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $< $(LOADLIBES) test-reject-ver$(EXEEXT): test-reject-ver.o $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $< $(LOADLIBES) test-reject-ser$(EXEEXT): test-reject-ser.o $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $< $(LOADLIBES) test-reject-r$(EXEEXT): test-reject-r.o $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $< $(LOADLIBES) $(testname)$(EXEEXT): $(OBJS) test: $(tests) ./$(testname)-nr$(EXEEXT) < $(srcdir)/test.input ./$(testname)-r$(EXEEXT) < $(srcdir)/test.input ./$(testname)-ver$(EXEEXT) $(testname)-ver.tables < $(srcdir)/test.input ./$(testname)-ser$(EXEEXT) $(testname)-ser.tables < $(srcdir)/test.input test-reject-nr.o: test-reject-nr.c $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< test-reject-ver.o: test-reject-ver.c $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) -DTEST_HAS_TABLES_EXTERNAL $(CFLAGS) $< test-reject-ser.o: test-reject-ser.c $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) -DTEST_HAS_TABLES_EXTERNAL $(CFLAGS) $< test-reject-r.o: test-reject-r.c $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) -DTEST_IS_REENTRANT $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-reject/Makefile.am0000644000175000017500000000541012300734270020447 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c $(testname)$(EXEEXT)-* OUTPUT $(OBJS) OBJS = test-reject-nr.o test-reject-r.o test-reject-ver.o \ test-reject-ser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) tests = test-reject-nr$(EXEEXT) test-reject-r$(EXEEXT) \ test-reject-ser$(EXEEXT) test-reject-ver$(EXEEXT) testname = test-reject test-reject-nr.c: $(srcdir)/scanner.l $(FLEX) -o $@ $(LFLAGS) $< test-reject-ver.c: $(srcdir)/scanner.l $(FLEX) -o $@ --tables-verify --tables-file=`basename $@ .c`.tables $(LFLAGS) $< test-reject-ser.c: $(srcdir)/scanner.l $(FLEX) -o $@ --tables-file=`basename $@ .c`.tables $(LFLAGS) $< test-reject-r.c: $(srcdir)/scanner.l $(FLEX) --reentrant -o $@ $(LFLAGS) $< test-reject-nr$(EXEEXT): test-reject-nr.o $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $< $(LOADLIBES) test-reject-ver$(EXEEXT): test-reject-ver.o $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $< $(LOADLIBES) test-reject-ser$(EXEEXT): test-reject-ser.o $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $< $(LOADLIBES) test-reject-r$(EXEEXT): test-reject-r.o $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $< $(LOADLIBES) $(testname)$(EXEEXT): $(OBJS) test: $(tests) ./$(testname)-nr$(EXEEXT) < $(srcdir)/test.input ./$(testname)-r$(EXEEXT) < $(srcdir)/test.input ./$(testname)-ver$(EXEEXT) $(testname)-ver.tables < $(srcdir)/test.input ./$(testname)-ser$(EXEEXT) $(testname)-ser.tables < $(srcdir)/test.input test-reject-nr.o: test-reject-nr.c $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< test-reject-ver.o: test-reject-ver.c $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) -DTEST_HAS_TABLES_EXTERNAL $(CFLAGS) $< test-reject-ser.o: test-reject-ser.c $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) -DTEST_HAS_TABLES_EXTERNAL $(CFLAGS) $< test-reject-r.o: test-reject-r.c $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) -DTEST_IS_REENTRANT $(CFLAGS) $< flex-2.5.39/tests/test-lineno-nr/0002755000175000017500000000000012314621667017054 5ustar srivastasrivastaflex-2.5.39/tests/test-lineno-nr/scanner.l0000644000175000017500000000437012060131401020640 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* A template scanner file to build "scanner.c". Run as: test-lineno-nr # report flex's yylineno test-lineno-nr 1 # report count_newlines(stdin) */ #include #include #include "config.h" %} %option 8bit outfile="scanner.c" prefix="test" %option nounput nomain noyywrap yylineno %option warn WORD [[:alpha:]]+ DIGIT [[:digit:]] %% /* The goal here is to test the yylineno processing by: - providing some rules than CAN match newlines and other rules that can NOT match newlines, - matching several newlines in one rule, - directly modifying yylineno. */ "yylineno++" yylineno++; "yylineno--" yylineno--; [[:blank:]]+ {WORD} {DIGIT}+(\n{DIGIT}+)* \n . <> { printf("%d\n", yylineno); yyterminate(); } %% /* returns number of '\n' characters in input, plus one. This is what flex does, essentially. */ static int count_newlines (FILE* in) { int n=1,c; while ((c=fgetc(in)) != EOF) if( c == '\n') n++; return n; } int main ( int, char**); int main ( argc, argv ) int argc; char** argv; { if( argc > 1 ) printf("%d\n", count_newlines(stdin)); else{ yyin = stdin; yyout = stdout; yylex(); } return 0; } flex-2.5.39/tests/test-lineno-nr/test.input0000644000175000017500000000045312060131401021070 0ustar srivastasrivastaThese words are separated by newlines and sometimes spaces too. The next three lines are numbers with only intervening newlines 01123 581321 34 And now for some blank lines.... Finally, we directly modify yylineno, but then change it back afterwards (see scanner.l): yylineno++ yylineno-- flex-2.5.39/tests/test-lineno-nr/Makefile.in0000644000175000017500000003115712314621561021117 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-lineno-nr DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) testname = test-lineno-nr all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-lineno-nr/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-lineno-nr/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) test `./$(testname)$(EXEEXT) < $(srcdir)/test.input` -eq \ `./$(testname)$(EXEEXT) 1 < $(srcdir)/test.input` || exit 1 .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-lineno-nr/Makefile.am0000644000175000017500000000275212300734270021102 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) testname = test-lineno-nr scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) test `./$(testname)$(EXEEXT) < $(srcdir)/test.input` -eq \ `./$(testname)$(EXEEXT) 1 < $(srcdir)/test.input` || exit 1 .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-include-by-buffer/0002755000175000017500000000000012314621667020455 5ustar srivastasrivastaflex-2.5.39/tests/test-include-by-buffer/scanner.l0000644000175000017500000000510212060131401022233 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* A scanner file to build "scanner.c". Input language is any text. "#include " causes a buffer switch. */ #include #include #include "config.h" %} %option 8bit outfile="scanner.c" prefix="test" %option nounput nomain noyywrap %option warn %x GET_FILENAME %{ #define MAX_INCLUDE_DEPTH 10 YY_BUFFER_STATE include_stack[MAX_INCLUDE_DEPTH]; int include_stack_ptr = 0; %} %% { ^"#include"[[:blank:]]+"<" { BEGIN(GET_FILENAME); } .|\n { ECHO; } } { [[:alnum:]_.-]+> { /* recurse */ yytext[yyleng-1]='\0'; include_stack[include_stack_ptr++] = YY_CURRENT_BUFFER; if((yyin=fopen(yytext,"r"))==NULL) { fprintf(stderr,"*** Error: Could not open include file \"%s\".\n",yytext); yyterminate(); } yy_switch_to_buffer( yy_create_buffer( yyin, YY_BUF_SIZE )); BEGIN(0); } .|\n { fprintf(stderr,"Invalid input \"%s\".\n", yytext); yyterminate(); } } <> { if ( --include_stack_ptr < 0 ) { yyterminate(); } else { fclose(yyin); yy_delete_buffer( YY_CURRENT_BUFFER ); yy_switch_to_buffer( include_stack[include_stack_ptr] ); } } %% int main(int argc, char** argv); int main ( int argc, char** argv ) { FILE * fp; if( argc != 2 ) { fprintf(stderr,"*** Error: Must specifiy one filename.\n"); exit(-1); } if((fp=fopen(argv[1],"r"))==NULL) { fprintf(stderr,"*** Error: fopen(%s) failed.\n",argv[1]); exit(-1); } yyin = fp; yyout = stdout; yylex(); printf("TEST RETURNING OK.\n"); return 0; } flex-2.5.39/tests/test-include-by-buffer/test-2.input0000644000175000017500000000011412060131401022622 0ustar srivastasrivastaBeginning of "test-2.input". #include End of "test-2.input". flex-2.5.39/tests/test-include-by-buffer/test-1.input0000644000175000017500000000011412060131401022621 0ustar srivastasrivastaBeginning of "test-1.input". #include End of "test-1.input". flex-2.5.39/tests/test-include-by-buffer/Makefile.in0000644000175000017500000003142312314621561022514 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-include-by-buffer DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test-1.input test-2.input test-3.input CLEANFILES = scanner.c scanner.h parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = test-include-by-buffer all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-include-by-buffer/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-include-by-buffer/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) $(srcdir)/test-1.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-include-by-buffer/Makefile.am0000644000175000017500000000316512300734270022502 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test-1.input test-2.input test-3.input CLEANFILES = scanner.c scanner.h parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = test-include-by-buffer scanner.c: $(srcdir)/scanner.l $(FLEX) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) $(srcdir)/test-1.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-include-by-buffer/test-3.input0000644000175000017500000000006412060131401022627 0ustar srivastasrivastaBeginning of "test-3.input". End of "test-3.input". flex-2.5.39/tests/test-pthread/0002755000175000017500000000000012314621667016602 5ustar srivastasrivastaflex-2.5.39/tests/test-pthread/scanner.l0000644000175000017500000001340312060131401020363 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* A scanner file to build "scanner.c". Input language is any text made of spaces, newlines, and alphanumerics. We create N_THREADS number of threads. Each thread has it's own scanner. Each thread selects one of the files specified in ARGV, scans it, then closes it. This is repeated N_SCANS numebr of times for each thread. The idea is to press the scanner to break under threads. If we see "Scanner Jammed", then we know */ #include #include #include #ifdef HAVE_PTHREAD_H #include #endif /* A naive test for segfaults when accessing yytext. */ static int process_text(char* s, yyscan_t scanner); %} %option 8bit outfile="scanner.c" prefix="test" %option nounput nomain nodefault %option yywrap %option reentrant %option warn /* Arbitrary states.*/ %x STATE_1 %x STATE_2 %% #define NUMBER 200 #define WORD 201 [[:digit:]]+ { BEGIN(STATE_1); process_text(yytext,yyscanner); return NUMBER; } [[:alpha:]]+ { BEGIN(STATE_2); process_text(yytext,yyscanner); return WORD; } [[:alpha:]]+ { BEGIN(0); process_text(yytext,yyscanner); return WORD; } [[:digit:]]+ { BEGIN(0); process_text(yytext,yyscanner); return NUMBER; } [[:alpha:]]+ { BEGIN(0); process_text(yytext,yyscanner); return WORD; } [[:digit:]]+ { BEGIN(0); process_text(yytext,yyscanner); return NUMBER; } " "|\t|\r|\n { process_text(yytext,yyscanner); } [^[:alnum:][:space:]\t\r\n] { /*fprintf(stderr,"*** Error: bad input char '%c'.\n", yytext[0]); */ yyterminate(); } [[:space:]\r\n]+ { } %% int yywrap( yyscan_t scanner) { return 1; } static int process_text(char* s, yyscan_t scanner) { return (int)(*s) + (int) *(s + yyget_leng(scanner)-1); } int main(int ARGC, char *ARGV[]); #ifndef HAVE_LIBPTHREAD int main (int ARGC, char *ARGV[]) { printf( "TEST ABORTED because pthread library not available \n" "-- This is expected on some systems. It is not a flex error.\n" ); return 0; } #else #define N_THREADS 4 #define N_SCANS 20 #define INPUT_FILE "test.input" /* Each thread selects the next file to scan in round-robin fashion. If there are less files than threads, some threads may block. */ static pthread_mutex_t next_lock = PTHREAD_MUTEX_INITIALIZER; static pthread_mutex_t go_ahead = PTHREAD_MUTEX_INITIALIZER; static int n_files, next_file; static pthread_mutex_t *file_locks; static char **filenames; void * thread_func ( void* arg ) { int i; /* Wait for go-ahead. */ pthread_mutex_lock( &go_ahead); pthread_mutex_unlock(&go_ahead); for( i =0 ; i < N_SCANS ; i++ ) { int main(int ARGC, char *ARGV[]); int next; yyscan_t scanner; FILE * fp; pthread_mutex_lock ( &next_lock ); next = (next_file++) % n_files; pthread_mutex_unlock ( &next_lock ); pthread_mutex_lock ( &file_locks[ next ] ); yylex_init( &scanner ); /*printf("Scanning file %s #%d\n",filenames[next],i); fflush(stdout); */ if((fp = fopen(filenames[next],"r"))==NULL) { perror("fopen"); return NULL; } yyset_in(fp,scanner); while( yylex( scanner) != 0) { } fclose(fp); yylex_destroy(scanner); pthread_mutex_unlock ( &file_locks[ next ] ); } return NULL; } int main (int ARGC, char *ARGV[]) { int i; pthread_t threads[N_THREADS]; if( ARGC < 2 ) { fprintf(stderr,"*** Error: No filenames specified.\n"); exit(-1); } /* Allocate and initialize the locks. One for each filename in ARGV. */ file_locks = (pthread_mutex_t*)malloc( (ARGC-1) * sizeof(pthread_mutex_t)); for( i = 0; i < ARGC-1; i++) pthread_mutex_init( &file_locks[i], NULL ); n_files = ARGC -1; filenames = ARGV + 1; next_file = 0; /* prevent threads from starting until all threads have been created. */ pthread_mutex_lock(&go_ahead); /* Create N threads then wait for them. */ for(i =0; i < N_THREADS ; i++ ) { if( pthread_create( &threads[i], NULL, thread_func, NULL) != 0) { fprintf(stderr, "*** Error: pthread_create failed.\n"); exit(-1); } printf("Created thread %d.\n",i); fflush(stdout); } /* Tell threads to begin. */ pthread_mutex_unlock(&go_ahead); for(i =0; i < N_THREADS ; i++ ) { pthread_join ( threads[i], NULL ); printf("Thread %d done.\n", i ); fflush(stdout); } for( i = 0; i < ARGC-1; i++) pthread_mutex_destroy( &file_locks[i] ); pthread_mutex_destroy( &next_lock ); pthread_mutex_destroy( &go_ahead ); free( file_locks ); printf("TEST RETURNING OK.\n"); return 0; } #endif /* HAVE_LIBPTHREAD */ flex-2.5.39/tests/test-pthread/test-5.input0000644000175000017500000021030312060131401020755 0ustar srivastasrivastaMany lines of numbers and words 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar flex-2.5.39/tests/test-pthread/test-2.input0000644000175000017500000021030312060131401020752 0ustar srivastasrivastaMany lines of numbers and words 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar flex-2.5.39/tests/test-pthread/test-1.input0000644000175000017500000021030312060131401020751 0ustar srivastasrivastaMany lines of numbers and words 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar flex-2.5.39/tests/test-pthread/Makefile.in0000644000175000017500000003127212314621561020643 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-pthread DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = -lpthread LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test-1.input test-2.input test-3.input test-4.input test-5.input CLEANFILES = scanner.c scanner.h parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = test-pthread all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-pthread/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-pthread/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LIBS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname) $(srcdir)/test-*.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-pthread/test-4.input0000644000175000017500000021030312060131401020754 0ustar srivastasrivastaMany lines of numbers and words 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar flex-2.5.39/tests/test-pthread/Makefile.am0000644000175000017500000000311012300734270020615 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test-1.input test-2.input test-3.input test-4.input test-5.input CLEANFILES = scanner.c scanner.h parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) LIBS = -lpthread #LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = test-pthread scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LIBS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname) $(srcdir)/test-*.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-pthread/test-3.input0000644000175000017500000021030312060131401020753 0ustar srivastasrivastaMany lines of numbers and words 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar 0000 foo 1111 foo 0000 bar 2222 foo bar 0000 foo 1111 foo 0000 bar 2222 foo bar foo 2444 foo blah 1234 2444 111 1111 bar foo 2444 foo blah 1234 2444 111 1111 bar flex-2.5.39/tests/test-multiple-scanners-r/0002755000175000017500000000000012314621666021056 5ustar srivastasrivastaflex-2.5.39/tests/test-multiple-scanners-r/scanner-2.l0000644000175000017500000000276612060131401023011 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* A template scanner file to build "scanner-2.c" and "scanner-2.h". */ #include #include #include "config.h" %} %option header="scanner-2.h" %option 8bit outfile="scanner-2.c" prefix="S2_" %option nounput nomain noyywrap %option warn stack reentrant noyy_top_state %option tables-file="scanner-2.tables" %x OFF %x ON %% { on yy_push_state(ON, yyscanner); return 3; off yy_push_state(OFF, yyscanner); return 4; .|\n return 5; } .|\n yy_pop_state(yyscanner); return 6; .|\n yy_pop_state(yyscanner); return 7; %% flex-2.5.39/tests/test-multiple-scanners-r/main.c0000644000175000017500000000460212060131401022123 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ #include "scanner-1.h" #include "scanner-2.h" int main ( int argc, char** argv ) { int S1_ok=1, S2_ok=1; FILE * fp; YY_BUFFER_STATE buff1, buff2; yyscan_t scan1, scan2; S1_lex_init(&scan1); S2_lex_init(&scan2); if((fp = fopen("scanner-1.tables","r")) == 0){ fprintf(stderr,"Could not open scanner-1.tables.\n"); exit(1); } if(S1_tables_fload(fp,scan1) != 0){ fprintf(stderr,"Could not load scanner-1.tables.\n"); exit(1); } fclose(fp); if((fp = fopen("scanner-2.tables","r")) == 0){ fprintf(stderr,"Could not open scanner-2.tables.\n"); exit(1); } if(S2_tables_fload(fp,scan2) != 0){ fprintf(stderr,"Could not load scanner-2.tables.\n"); exit(1); } fclose(fp); S1_set_out(stdout,scan1); S2_set_out(S1_get_out(scan1),scan2); buff1 = S1__scan_string("foo on bar off", scan1); buff2 = S2__scan_string("on blah blah off foo on bar off", scan2); /* scan simultaneously. */ while(S1_ok || S2_ok) { if (S1_ok) S1_ok = S1_lex(scan1); if (S2_ok) S2_ok = S2_lex(scan2); } S1__delete_buffer(buff1, scan1); S2__delete_buffer(buff2, scan2); S1_tables_destroy(scan1); S2_tables_destroy(scan2); S1_lex_destroy(scan1); S2_lex_destroy(scan2); printf("TEST RETURNING OK.\n"); return 0; } /* vim:set tabstop=8 softtabstop=4 shiftwidth=4: */ flex-2.5.39/tests/test-multiple-scanners-r/Makefile.in0000644000175000017500000003170512314621561023121 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-multiple-scanners-r DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner-1.l scanner-2.l main.c CLEANFILES = scanner-1.c scanner-1.h $(testname)$(EXEEXT) OUTPUT\ $(OBJS) scanner-2.c scanner-2.h scanner-1.tables \ scanner-2.tables OBJS = scanner-1.o scanner-2.o main.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) -I$(builddir) #LDFLAGS = $(top_srcdir)/libfl.a #YFLAGS = --defines --output=parser.c testname = test-multiple-scanners-r all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-multiple-scanners-r/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-multiple-scanners-r/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner-1.c: $(srcdir)/scanner-1.l $(FLEX) $(LFLAGS) --header=scanner-1.h $< scanner-2.c: $(srcdir)/scanner-2.l $(FLEX) $(LFLAGS) --header=scanner-2.h $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< main.o: scanner-1.h scanner-2.h scanner-1.h: scanner-1.c scanner-2.h: scanner-2.c # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-multiple-scanners-r/scanner-1.l0000644000175000017500000000277412060131401023007 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* A template scanner file to build "scanner-1.c" and "scanner-1.h". */ #include #include #include "config.h" %} %option header="scanner-1.h" %option 8bit outfile="scanner-1.c" prefix="S1_" %option nounput nomain noyywrap noyy_top_state %option warn stack reentrant %option tables-file="scanner-1.tables" %x ON %x OFF %% { on yy_push_state(ON, yyscanner); return 10; off yy_push_state(OFF, yyscanner); return 11; .|\n return 12; } .|\n yy_pop_state(yyscanner); return 13; .|\n yy_pop_state(yyscanner); return 14; %% flex-2.5.39/tests/test-multiple-scanners-r/Makefile.am0000644000175000017500000000346712300734270023111 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex builddir = @builddir@ EXTRA_DIST = scanner-1.l scanner-2.l main.c CLEANFILES = scanner-1.c scanner-1.h $(testname)$(EXEEXT) OUTPUT\ $(OBJS) scanner-2.c scanner-2.h scanner-1.tables \ scanner-2.tables OBJS = scanner-1.o scanner-2.o main.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) -I$(builddir) #LDFLAGS = $(top_srcdir)/libfl.a #YFLAGS = --defines --output=parser.c testname = test-multiple-scanners-r scanner-1.c: $(srcdir)/scanner-1.l $(FLEX) $(LFLAGS) --header=scanner-1.h $< scanner-2.c: $(srcdir)/scanner-2.l $(FLEX) $(LFLAGS) --header=scanner-2.h $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< main.o: scanner-1.h scanner-2.h scanner-1.h: scanner-1.c scanner-2.h: scanner-2.c flex-2.5.39/tests/test-array-nr/0002755000175000017500000000000012314621667016706 5ustar srivastasrivastaflex-2.5.39/tests/test-array-nr/scanner.l0000644000175000017500000000252312060131401020470 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* A template scanner file to build "scanner.c". */ #include #include #include "config.h" /*#include "parser.h" */ %} %option 8bit outfile="scanner.c" prefix="test" %option nounput nomain noyywrap %option warn array %% .|\n { } %% int main (void); int main () { yyin = stdin; yyout = stdout; yylex(); printf("TEST RETURNING OK.\n"); return 0; } flex-2.5.39/tests/test-array-nr/test.input0000644000175000017500000000006612060131401020722 0ustar srivastasrivasta0000 foo 1111 foo 0000 bar 0000 foo 1111 foo 0000 bar flex-2.5.39/tests/test-array-nr/Makefile.in0000644000175000017500000003125212314621560020744 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-array-nr DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #YFLAGS = --defines --output=parser.c testname = test-array-nr all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-array-nr/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-array-nr/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-array-nr/Makefile.am0000644000175000017500000000304712300734270020732 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #YFLAGS = --defines --output=parser.c testname = test-array-nr scanner.c: $(srcdir)/scanner.l $(FLEX) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-bison-nr/0002755000175000017500000000000012314621666016701 5ustar srivastasrivastaflex-2.5.39/tests/test-bison-nr/scanner.l0000644000175000017500000000336712060131401020473 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* The scanner expects to link to bison yylval . */ #include #include #include "parser.h" #include "config.h" static char* STRDUP(char* s1); #define YY_EXTRA_TYPE int %} %option 8bit outfile="scanner.c" prefix="test" %option bison-locations yylineno %option nomain nounput noyy_top_state noyywrap nodefault warn %option prefix="test" header="scanner.h" yylineno %% ^[[:digit:]]+ { yylval->lineno = yylineno; yylloc->first_line = (int)strtol(yytext,NULL,10); return LINENO; } ":" { return COLON; } " " { return SPACE; } "=" { return EQUAL; } [[:alnum:]_]+ { yylval->str = STRDUP(yytext); return IDENT;} \r|\n { } . { yyterminate();} %% static char* STRDUP(char* s1) { char* s2 = (char*)malloc(strlen(s1)+1); sprintf(s2,"%s",s1); return s2; } flex-2.5.39/tests/test-bison-nr/main.c0000644000175000017500000000225712060131401017752 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ #include "parser.h" #include "scanner.h" extern int testparse(void); int main ( int argc, char** argv ) { /*yydebug =1;*/ testin = stdin; testparse ( ); return 0; } /* vim:set tabstop=8 softtabstop=4 shiftwidth=4: */ flex-2.5.39/tests/test-bison-nr/parser.y0000644000175000017500000000421612060131401020345 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ /* How to compile: bison --defines --output-file="parser.c" --name-prefix="test" parser.y */ %{ #include #include #include #include "config.h" #define YYERROR_VERBOSE 1 /* #define YYPARSE_PARAM scanner */ /* #define YYLEX_PARAM scanner */ int yyerror(char* msg); extern int testget_lineno(void); /* A dummy function. A check against seg-faults in yylval->str. */ int process_text(char* s) { int total =0; while(*s) { total += (int) *s; ++s; } return total; } %} %pure_parser %union { int lineno; char * str; } %token IDENT %token LINENO %token EQUAL "=" %token COLON ":" %token SPACE " " %% file: line | file line ; line: LINENO COLON SPACE IDENT EQUAL IDENT { process_text($4); process_text($6); /* Check lineno. */ if( $1 != @1.first_line || $1 != testget_lineno()) { yyerror("Parse failed: Line numbers do not match."); YYABORT; } /* Recreate the line to stdout. */ printf ( "%04d: %s=%s\n", @1.first_line, $4, $6); } ; %% int yyerror(char* msg) { fprintf(stderr,"%s\n",msg); return 0; } flex-2.5.39/tests/test-bison-nr/test.input0000644000175000017500000000014012060131401020707 0ustar srivastasrivasta0001: FIRSTNAME=firstname 0002: MIDDLENAME=middle 0003: LASTNAME=lastname 0004: ADDRESS=address flex-2.5.39/tests/test-bison-nr/Makefile.in0000644000175000017500000003146112314621560020742 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-bison-nr DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ #LDFLAGS = $(top_srcdir)/libfl.a YFLAGS = --defines --output=parser.c --name-prefix="test" abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l parser.y test.input main.c CLEANFILES = scanner.c scanner.h parser.c parser.h $(testname)$(EXEEXT) $(OBJS) OUTPUT OBJS = scanner.o parser.o main.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) -I$(builddir) testname = test-bison-nr all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-bison-nr/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-bison-nr/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $< scanner.h: scanner.c scanner.o: parser.h parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< parser.h: parser.c main.o: scanner.h parser.h $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-bison-nr/Makefile.am0000644000175000017500000000332712300734270020727 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex builddir = @builddir@ EXTRA_DIST = scanner.l parser.y test.input main.c CLEANFILES = scanner.c scanner.h parser.c parser.h $(testname)$(EXEEXT) $(OBJS) OUTPUT OBJS = scanner.o parser.o main.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) -I$(builddir) #LDFLAGS = $(top_srcdir)/libfl.a YFLAGS = --defines --output=parser.c --name-prefix="test" testname = test-bison-nr scanner.c: $(srcdir)/scanner.l $(FLEX) $< scanner.h: scanner.c scanner.o: parser.h parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< parser.h: parser.c main.o: scanner.h parser.h $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/Makefile.in0000644000175000017500000005272612314621560016245 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests DIST_COMMON = README $(dist_noinst_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SCRIPTS = $(dist_noinst_SCRIPTS) SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = \ README dist_noinst_SCRIPTS = \ create-test DIST_SUBDIRS = \ test-concatenated-options \ test-c++-yywrap \ test-extended \ test-ccl \ test-quotes \ test-rescan-r \ test-rescan-nr \ test-basic-nr \ test-basic-r \ test-bison-yylloc \ test-bison-yylval \ test-bison-nr \ test-multiple-scanners-nr \ test-multiple-scanners-r \ test-header-nr \ test-header-r \ test-reject \ test-c++-multiple-scanners \ test-c++-basic \ test-posixly-correct \ test-posix \ test-mem-r \ test-mem-nr \ test-debug-nr \ test-debug-r \ test-lineno-r \ test-lineno-nr \ test-lineno-trailing \ test-linedir-r \ TEMPLATE \ test-top \ test-array-nr \ test-array-r \ test-c-cpp-nr \ test-c-cpp-r \ test-include-by-buffer \ test-include-by-push \ test-include-by-reentrant \ test-prefix-nr \ test-prefix-r \ test-pthread \ test-string-nr \ test-string-r \ test-yyextra \ test-alloc-extra \ test-noansi-nr \ test-noansi-r \ test-table-opts SUBDIRS = \ test-concatenated-options \ test-c++-yywrap \ test-extended \ test-ccl \ test-quotes \ test-rescan-r \ test-rescan-nr \ test-basic-nr \ test-basic-r \ test-bison-yylloc \ test-bison-yylval \ test-bison-nr \ test-multiple-scanners-nr \ test-multiple-scanners-r \ test-header-nr \ test-header-r \ test-reject \ test-c++-multiple-scanners \ test-c++-basic \ test-posixly-correct \ test-posix \ test-mem-r \ test-mem-nr \ test-debug-nr \ test-debug-r \ test-lineno-r \ test-lineno-nr \ test-lineno-trailing \ test-linedir-r \ test-array-nr \ test-array-r \ test-c-cpp-nr \ test-c-cpp-r \ test-include-by-buffer \ test-include-by-push \ test-include-by-reentrant \ test-prefix-nr \ test-prefix-r \ test-pthread \ test-string-nr \ test-string-r \ test-yyextra \ test-alloc-extra \ test-noansi-nr \ test-noansi-r \ test-top \ test-table-opts all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-local check: check-recursive all-am: Makefile $(SCRIPTS) installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) check-am \ ctags-recursive install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am check-local clean clean-generic \ clean-libtool ctags ctags-recursive distclean \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-recursive uninstall uninstall-am # clean up before running the test suite so we dont test old builds of test code check-local: clean NOK=;\ NFAIL=;\ for dir in $(SUBDIRS) ; do \ echo Executing test "$$dir" ; \ ( cd "$$dir" && $(MAKE) test > OUTPUT 2>&1 ) ; \ case $$? in \ 0 ) echo Test "$$dir" succeeded.; \ NOK=0$$NOK;\ ;; \ * ) echo Test "$$dir" FAILED. See "$$dir"/OUTPUT for details. ; \ NFAIL=0$$NFAIL; \ ;; \ esac; \ done ; \ echo Results: ; \ echo Tests succeeded: `echo @ECHO_N@ "$$NOK@ECHO_C@"|wc -c`; \ echo Tests FAILED: `echo @ECHO_N@ "$$NFAIL@ECHO_C@"|wc -c` ; \ test "$$NFAIL" = "" # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-quotes/0002755000175000017500000000000012314621666016472 5ustar srivastasrivastaflex-2.5.39/tests/test-quotes/scanner.l0000644000175000017500000000600612060131401020255 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ /* The point of this test is to be sure our M4 madness does not * interfere with user code. I particular, we are looking * for instances of M4 quotes, [[ and ]], in here to make it through the flex * machinery unscathed. */ /* sect 1 [ 1 ] TEST_XXX */ /* sect 1 [[ 2 ]] TEST_XXX */ /* sect 1 [[[ 3 ]]] TEST_XXX */ /* sect 1 [[[[ 4 ]]]] TEST_XXX */ /* sect 1 ]] unmatched [[ TEST_XXX */ %{ /* A template scanner file to build "scanner.c". */ #include #include #include "config.h" /*#include "parser.h" */ /* sect 1 block [ 1 ] TEST_XXX */ /* sect 1 block [[ 2 ]] TEST_XXX */ /* sect 1 block [[[ 3 ]]] TEST_XXX */ /* sect 1 block [[[[ 4 ]]]] TEST_XXX */ /* sect 1 block ]] unmatched [[ TEST_XXX */ static int a[1] = {0}; static int b[1] = {0}; static int c[1] = {0}; static int foo (int i){ return a[b[c[i]]]; /* sect 1 code TEST_XXX */ } %} %option 8bit outfile="scanner.c" prefix="test" %option nounput nomain noyywrap %option warn %% a /* action comment [ 1 ] */ ; b /* action comment [[ 2 ]] */ ; c /* action comment [[[ 3 ]]] */ ; d /* action comment [[[[ 4 ]]]] */ ; e /* action comment ]] unmatched [[ */ ; f return 1+foo(a[b[c[0]]]); .|\n { /* action block [ 1 ] TEST_XXX */ /* action block [[ 2 ]] TEST_XXX */ /* action block [[[ 3 ]]] TEST_XXX */ /* action block [[[[ 4 ]]]] TEST_XXX */ /* action block ]] unmatched [[ TEST_XXX */ return 1+foo(a[b[c[0]]]); // TEST_XXX } %% /* sect 3 [ 1 ] TEST_XXX */ /* sect 3 [[ 2 ]] TEST_XXX */ /* sect 3 [[[ 3 ]]] TEST_XXX */ /* sect 3 [[[[ 4 ]]]] TEST_XXX */ /* sect 3 ]] unmatched [[ TEST_XXX */ static int bar (int i){ return c[b[a[i]]]; /* sect 3 code TEST_XXX */ } int main(void); int main () { yyin = stdin; yyout = stdout; while (yylex()) ; printf("TEST RETURNING OK.\n"); return bar(0); } flex-2.5.39/tests/test-quotes/test.input0000644000175000017500000000006612060131401020507 0ustar srivastasrivasta0000 foo 1111 foo 0000 bar 0000 foo 1111 foo 0000 bar flex-2.5.39/tests/test-quotes/Makefile.in0000644000175000017500000003127312314621561020535 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-quotes DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = l.out c.out scanner.c scanner.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(builddir) -I$(top_srcdir) -I$(top_builddir) testname = test-quotes all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-quotes/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-quotes/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) grep TEST_XXX < $(srcdir)/scanner.l | sed 's/^ *//' > l.out grep TEST_XXX < scanner.c | sed 's/^ *//' > c.out cmp -s l.out c.out ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-quotes/Makefile.am0000644000175000017500000000312412300734270020513 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex builddir = @builddir@ EXTRA_DIST = scanner.l test.input CLEANFILES = l.out c.out scanner.c scanner.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(builddir) -I$(top_srcdir) -I$(top_builddir) testname = test-quotes scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) grep TEST_XXX < $(srcdir)/scanner.l | sed 's/^ *//' > l.out grep TEST_XXX < scanner.c | sed 's/^ *//' > c.out cmp -s l.out c.out ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-top/0002755000175000017500000000000012314621667015755 5ustar srivastasrivastaflex-2.5.39/tests/test-top/scanner.l0000644000175000017500000000253412060131401017541 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* Build "scanner.c". The scanner is not important. This test is really about compilation. See "main.c". */ #include #include #include "config.h" #ifndef DEFINE_ME #error "DEFINE_ME undefined!" #endif %} %top{ #define DEFINE_ME 1 } %option reentrant %option 8bit outfile="scanner.c" prefix="test" %option nounput nomain noyywrap %option warn %% .|\n { } %% flex-2.5.39/tests/test-top/main.c0000644000175000017500000000353612060131401017026 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ #include "scanner.h" /* The scanner itself is not important here. * We simply try to use all the functions that are exported in the * header, to see if we get any compiler warnings. */ int main ( int argc, char** argv ) { yyscan_t scanner; FILE *fp; char * extra = "EXTRA"; testlex_init(&scanner); testset_in(stdin,scanner); testset_out(stdout,scanner); testset_extra(extra,scanner); fp = testget_in(scanner); fp = testget_out(scanner); while(testlex(scanner)) { char * text; int line; line = testget_lineno(scanner); text = testget_text(scanner); if( (char*)testget_extra(scanner) != extra) break; if ( !text || line < 0) continue; } testlex_destroy(scanner); printf("TEST RETURNING OK.\n"); return 0; } /* vim:set tabstop=8 softtabstop=4 shiftwidth=4: */ flex-2.5.39/tests/test-top/test.input0000644000175000017500000000007512060131401017771 0ustar srivastasrivastaAny input is ok for this scanner. We only care if it links. flex-2.5.39/tests/test-top/Makefile.in0000644000175000017500000003135712314621561020022 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-top DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input main.c CLEANFILES = scanner.c scanner.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o main.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) -I$(builddir) #LDFLAGS = $(top_srcdir)/libfl.a LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = test-top all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-top/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-top/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< scanner.h: scanner.c main.o: scanner.h # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-top/Makefile.am0000644000175000017500000000322212300734270017774 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex builddir = @builddir@ EXTRA_DIST = scanner.l test.input main.c CLEANFILES = scanner.c scanner.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o main.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) -I$(builddir) #LDFLAGS = $(top_srcdir)/libfl.a LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = test-top scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< scanner.h: scanner.c main.o: scanner.h flex-2.5.39/tests/test-basic-r/0002755000175000017500000000000012314621666016472 5ustar srivastasrivastaflex-2.5.39/tests/test-basic-r/scanner.l0000644000175000017500000000353612060131401020262 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ /* A reentrant scanner. This file will not compile under flex version <= 2.5.4. Sample Input: # this is a comment foo = true bar = "string value" integer = 43 */ %{ #include "config.h" %} %option prefix="test" outfile="scanner.c" %option nounput noyywrap noyylineno warn nodefault %option reentrant IDENT [[:alnum:]_-] WS [[:blank:]] %% ^{IDENT}+{WS}*={WS}*(true|false){WS}*\r?\n { return 100;} ^{IDENT}+{WS}*={WS}*\"[^\"\n\r]*\"{WS}*\r?\n { return 101;} ^{IDENT}+{WS}*={WS}*[[:digit:]]+{WS}*\r?\n { return 102;} ^{WS}*#.*\r?\n { } ^{WS}*\r?\n { } .|\n { fprintf(stderr,"Invalid line.\n"); exit(-1);} %% int main(void); int main () { yyscan_t lexer; yylex_init( &lexer ); yyset_out ( stdout,lexer); yyset_in ( stdin, lexer); while( yylex(lexer) ) { } yylex_destroy( lexer ); printf("TEST RETURNING OK.\n"); return 0; } flex-2.5.39/tests/test-basic-r/test.input0000644000175000017500000000007112060131401020503 0ustar srivastasrivasta# this is a comment foo = "bar" num = 43 setting = false flex-2.5.39/tests/test-basic-r/Makefile.in0000644000175000017500000003124612314621560020534 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-basic-r DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #YFLAGS = --defines --output=parser.c testname = test-basic-r all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-basic-r/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-basic-r/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-basic-r/Makefile.am0000644000175000017500000000304612300734270020516 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #YFLAGS = --defines --output=parser.c testname = test-basic-r scanner.c: $(srcdir)/scanner.l $(FLEX) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-c++-yywrap/0002755000175000017500000000000012314621666017053 5ustar srivastasrivastaflex-2.5.39/tests/test-c++-yywrap/scanner.l0000644000175000017500000000335012060131401020635 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ #include "config.h" #include %} %option 8bit outfile="scanner.cpp" prefix="test" %option nounput nomain %option warn c++ %% . { } %% #define MAX_FILES 10 char *files[MAX_FILES] = { 0 }; int filecounter = 0; int testFlexLexer::yywrap() { if (filecounter-- > 0) { std::cout << "NOW WRAPPING TO READ " << files[filecounter] << std::endl; std::ifstream *ifs = new std::ifstream(files[filecounter]); switch_streams(ifs); return 0; } return 1; } int main (int argc, char *argv[]) { for (int i = 1; i < argc && i <= MAX_FILES; i++) { files[i-1] = argv[i]; filecounter++; } testFlexLexer* f = new testFlexLexer; f->yywrap(); f->yylex(); std::cout << "TEST RETURNING OK." << std::endl; return 0; } flex-2.5.39/tests/test-c++-yywrap/test.input0000644000175000017500000000006612060131401021070 0ustar srivastasrivasta0000 foo 1111 foo 0000 bar 0000 foo 1111 foo 0000 bar flex-2.5.39/tests/test-c++-yywrap/Makefile.in0000644000175000017500000003115512314621560021114 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-c++-yywrap DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.cpp scanner.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) LFLAGS = -+ #LDFLAGS = testname = test-c++-yywrap all: all-am .SUFFIXES: .SUFFIXES: .cpp .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-c++-yywrap/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-c++-yywrap/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.cpp: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CXX) $(CXXFLAGS) -o $@ $(LDFLAGS) $(OBJS) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) $(srcdir)/test.input $(srcdir)/test.input $(srcdir)/test.input .cpp.o: $(CXX) $(CXXFLAGS) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-c++-yywrap/Makefile.am0000644000175000017500000000274212300734270021101 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.cpp scanner.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) LFLAGS = -+ #LDFLAGS = testname = test-c++-yywrap scanner.cpp: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CXX) $(CXXFLAGS) -o $@ $(LDFLAGS) $(OBJS) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) $(srcdir)/test.input $(srcdir)/test.input $(srcdir)/test.input .cpp.o: $(CXX) $(CXXFLAGS) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $< flex-2.5.39/tests/test-alloc-extra/0002755000175000017500000000000012314621667017366 5ustar srivastasrivastaflex-2.5.39/tests/test-alloc-extra/scanner.l0000644000175000017500000000553112060131401021152 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* A file to build "scanner.c". */ /* This tests that we can use "yyextra". We buffer all input into a growable array, then print it. We run diff on the input and output. */ #include #include #include "config.h" /* We'll store the entire input in this buffer, growing as necessary. */ struct Check { char foo; char *bar; char qux; }; /* Save char into junk array at next position. */ static void check_extra ( yyscan_t scanner ); /* Special yyalloc */ void *yyalloc ( size_t size, yyscan_t scanner ); %} %option 8bit outfile="scanner.c" prefix="test" %option nounput nomain noyywrap nodefault %option warn %option extra-type="struct Check *" %option reentrant %option noyyalloc %% .|\r|\n { check_extra (yyscanner); } %% int main(void); int main () { yyscan_t scanner; struct Check check; check.foo = 'a'; check.bar = NULL; check.qux = 'z'; testlex_init_extra(&check, &scanner); testset_in(stdin, scanner); testset_out(stdout, scanner); /* Test to confirm that yyalloc was called from * yylex_init_extra with the yyextra argument. */ check_extra(scanner); testlex(scanner); testlex_destroy(scanner); return 0; } void *yyalloc(size_t size, yyscan_t scanner) { struct Check *check; check = testget_extra(scanner); if (!check->bar) check->bar = "Hello World"; check_extra(scanner); return malloc(size); } /* Save char into junk array at next position. */ static void check_extra(yyscan_t scanner) { struct Check *check; check = testget_extra(scanner); if (check->foo != 'a') { fprintf(stderr, "foo is not 'a'\n"); exit(1); } if (strcmp(check->bar, "Hello World") != 0) { fprintf(stderr, "bar is not Hello World\n"); exit(1); } if (check->qux != 'z') { fprintf(stderr, "qux is not 'z'\n"); exit(1); } } flex-2.5.39/tests/test-alloc-extra/test.input0000644000175000017500000011123512060131401021403 0ustar srivastasrivasta THE UNITED STATES CONSTITUTION _________________________________________________________________ (See Note 1) We the People of the United States, in Order to form a more perfect Union, establish Justice, insure domestic Tranquility, provide for the common defence, promote the general Welfare, and secure the Blessings of Liberty to ourselves and our Posterity, do ordain and establish this Constitution for the United States of America. Article. I. Section 1. All legislative Powers herein granted shall be vested in a Congress of the United States, which shall consist of a Senate and House of Representatives. Section. 2. Clause 1: The House of Representatives shall be composed of Members chosen every second Year by the People of the several States, and the Electors in each State shall have the Qualifications requisite for Electors of the most numerous Branch of the State Legislature. Clause 2: No Person shall be a Representative who shall not have attained to the Age of twenty five Years, and been seven Years a Citizen of the United States, and who shall not, when elected, be an Inhabitant of that State in which he shall be chosen. Clause 3: Representatives and direct Taxes shall be apportioned among the several States which may be included within this Union, according to their respective Numbers, which shall be determined by adding to the whole Number of free Persons, including those bound to Service for a Term of Years, and excluding Indians not taxed, three fifths of all other Persons. (See Note 2) The actual Enumeration shall be made within three Years after the first Meeting of the Congress of the United States, and within every subsequent Term of ten Years, in such Manner as they shall by Law direct. The Number of Representatives shall not exceed one for every thirty Thousand, but each State shall have at Least one Representative; and until such enumeration shall be made, the State of New Hampshire shall be entitled to chuse three, Massachusetts eight, Rhode-Island and Providence Plantations one, Connecticut five, New-York six, New Jersey four, Pennsylvania eight, Delaware one, Maryland six, Virginia ten, North Carolina five, South Carolina five, and Georgia three. Clause 4: When vacancies happen in the Representation from any State, the Executive Authority thereof shall issue Writs of Election to fill such Vacancies. Clause 5: The House of Representatives shall chuse their Speaker and other Officers; and shall have the sole Power of Impeachment. Section. 3. Clause 1: The Senate of the United States shall be composed of two Senators from each State, chosen by the Legislature thereof, (See Note 3) for six Years; and each Senator shall have one Vote. Clause 2: Immediately after they shall be assembled in Consequence of the first Election, they shall be divided as equally as may be into three Classes. The Seats of the Senators of the first Class shall be vacated at the Expiration of the second Year, of the second Class at the Expiration of the fourth Year, and of the third Class at the Expiration of the sixth Year, so that one third may be chosen every second Year; and if Vacancies happen by Resignation, or otherwise, during the Recess of the Legislature of any State, the Executive thereof may make temporary Appointments until the next Meeting of the Legislature, which shall then fill such Vacancies. (See Note 4) Clause 3: No Person shall be a Senator who shall not have attained to the Age of thirty Years, and been nine Years a Citizen of the United States, and who shall not, when elected, be an Inhabitant of that State for which he shall be chosen. Clause 4: The Vice President of the United States shall be President of the Senate, but shall have no Vote, unless they be equally divided. Clause 5: The Senate shall chuse their other Officers, and also a President pro tempore, in the Absence of the Vice President, or when he shall exercise the Office of President of the United States. Clause 6: The Senate shall have the sole Power to try all Impeachments. When sitting for that Purpose, they shall be on Oath or Affirmation. When the President of the United States is tried, the Chief Justice shall preside: And no Person shall be convicted without the Concurrence of two thirds of the Members present. Clause 7: Judgment in Cases of Impeachment shall not extend further than to removal from Office, and disqualification to hold and enjoy any Office of honor, Trust or Profit under the United States: but the Party convicted shall nevertheless be liable and subject to Indictment, Trial, Judgment and Punishment, according to Law. Section. 4. Clause 1: The Times, Places and Manner of holding Elections for Senators and Representatives, shall be prescribed in each State by the Legislature thereof; but the Congress may at any time by Law make or alter such Regulations, except as to the Places of chusing Senators. Clause 2: The Congress shall assemble at least once in every Year, and such Meeting shall be on the first Monday in December, (See Note 5) unless they shall by Law appoint a different Day. Section. 5. Clause 1: Each House shall be the Judge of the Elections, Returns and Qualifications of its own Members, and a Majority of each shall constitute a Quorum to do Business; but a smaller Number may adjourn from day to day, and may be authorized to compel the Attendance of absent Members, in such Manner, and under such Penalties as each House may provide. Clause 2: Each House may determine the Rules of its Proceedings, punish its Members for disorderly Behaviour, and, with the Concurrence of two thirds, expel a Member. Clause 3: Each House shall keep a Journal of its Proceedings, and from time to time publish the same, excepting such Parts as may in their Judgment require Secrecy; and the Yeas and Nays of the Members of either House on any question shall, at the Desire of one fifth of those Present, be entered on the Journal. Clause 4: Neither House, during the Session of Congress, shall, without the Consent of the other, adjourn for more than three days, nor to any other Place than that in which the two Houses shall be sitting. Section. 6. Clause 1: The Senators and Representatives shall receive a Compensation for their Services, to be ascertained by Law, and paid out of the Treasury of the United States. (See Note 6) They shall in all Cases, except Treason, Felony and Breach of the Peace, beprivileged from Arrest during their Attendance at the Session of their respective Houses, and in going to and returning from the same; and for any Speech or Debate in either House, they shall not be questioned in any other Place. Clause 2: No Senator or Representative shall, during the Time for which he was elected, be appointed to any civil Office under the Authority of the United States, which shall have been created, or the Emoluments whereof shall have been encreased during such time; and no Person holding any Office under the United States, shall be a Member of either House during his Continuance in Office. Section. 7. Clause 1: All Bills for raising Revenue shall originate in the House of Representatives; but the Senate may propose or concur with Amendments as on other Bills. Clause 2: Every Bill which shall have passed the House of Representatives and the Senate, shall, before it become a Law, be presented to the President of the United States; If he approve he shall sign it, but if not he shall return it, with his Objections to that House in which it shall have originated, who shall enter the Objections at large on their Journal, and proceed to reconsider it. If after such Reconsideration two thirds of that House shall agree to pass the Bill, it shall be sent, together with the Objections, to the other House, by which it shall likewise be reconsidered, and if approved by two thirds of that House, it shall become a Law. But in all such Cases the Votes of both Houses shall be determined by yeas and Nays, and the Names of the Persons voting for and against the Bill shall be entered on the Journal of each House respectively. If any Bill shall not be returned by the President within ten Days (Sundays excepted) after it shall have been presented to him, the Same shall be a Law, in like Manner as if he had signed it, unless the Congress by their Adjournment prevent its Return, in which Case it shall not be a Law. Clause 3: Every Order, Resolution, or Vote to which the Concurrence of the Senate and House of Representatives may be necessary (except on a question of Adjournment) shall be presented to the President of the United States; and before the Same shall take Effect, shall be approved by him, or being disapproved by him, shall be repassed by two thirds of the Senate and House of Representatives, according to the Rules and Limitations prescribed in the Case of a Bill. Section. 8. Clause 1: The Congress shall have Power To lay and collect Taxes, Duties, Imposts and Excises, to pay the Debts and provide for the common Defence and general Welfare of the United States; but all Duties, Imposts and Excises shall be uniform throughout the United States; Clause 2: To borrow Money on the credit of the United States; Clause 3: To regulate Commerce with foreign Nations, and among the several States, and with the Indian Tribes; Clause 4: To establish an uniform Rule of Naturalization, and uniform Laws on the subject of Bankruptcies throughout the United States; Clause 5: To coin Money, regulate the Value thereof, and of foreign Coin, and fix the Standard of Weights and Measures; Clause 6: To provide for the Punishment of counterfeiting the Securities and current Coin of the United States; Clause 7: To establish Post Offices and post Roads; Clause 8: To promote the Progress of Science and useful Arts, by securing for limited Times to Authors and Inventors the exclusive Right to their respective Writings and Discoveries; Clause 9: To constitute Tribunals inferior to the supreme Court; Clause 10: To define and punish Piracies and Felonies committed on the high Seas, and Offences against the Law of Nations; Clause 11: To declare War, grant Letters of Marque and Reprisal, and make Rules concerning Captures on Land and Water; Clause 12: To raise and support Armies, but no Appropriation of Money to that Use shall be for a longer Term than two Years; Clause 13: To provide and maintain a Navy; Clause 14: To make Rules for the Government and Regulation of the land and naval Forces; Clause 15: To provide for calling forth the Militia to execute the Laws of the Union, suppress Insurrections and repel Invasions; Clause 16: To provide for organizing, arming, and disciplining, the Militia, and for governing such Part of them as may be employed in the Service of the United States, reserving to the States respectively, the Appointment of the Officers, and the Authority of training the Militia according to the discipline prescribed by Congress; Clause 17: To exercise exclusive Legislation in all Cases whatsoever, over such District (not exceeding ten Miles square) as may, byCession of particular States, and the Acceptance of Congress, become the Seat of the Government of the United States, and to exercise like Authority over all Places purchased by the Consent of the Legislature of the State in which the Same shall be, for the Erection of Forts, Magazines, Arsenals, dock-Yards, and other needful Buildings;--And Clause 18: To make all Laws which shall be necessary and proper for carrying into Execution the foregoing Powers, and all other Powers vested by this Constitution in the Government of the United States, or in any Department or Officer thereof. Section. 9. Clause 1: The Migration or Importation of such Persons as any of the States now existing shall think proper to admit, shall not be prohibited by the Congress prior to the Year one thousand eight hundred and eight, but a Tax or duty may be imposed on such Importation, not exceeding ten dollars for each Person. Clause 2: The Privilege of the Writ of Habeas Corpus shall not be suspended, unless when in Cases of Rebellion or Invasion the public Safety may require it. Clause 3: No Bill of Attainder or ex post facto Law shall be passed. Clause 4: No Capitation, or other direct, Tax shall be laid, unless in Proportion to the Census or Enumeration herein before directed to be taken. (See Note 7) Clause 5: No Tax or Duty shall be laid on Articles exported from any State. Clause 6: No Preference shall be given by any Regulation of Commerce or Revenue to the Ports of one State over those of another: nor shall Vessels bound to, or from, one State, be obliged to enter, clear, or pay Duties in another. Clause 7: No Money shall be drawn from the Treasury, but in Consequence of Appropriations made by Law; and a regular Statement and Account of the Receipts and Expenditures of all public Money shall be published from time to time. Clause 8: No Title of Nobility shall be granted by the United States: And no Person holding any Office of Profit or Trust under them, shall, without the Consent of the Congress, accept of any present, Emolument, Office, or Title, of any kind whatever, from any King, Prince, or foreign State. Section. 10. Clause 1: No State shall enter into any Treaty, Alliance, or Confederation; grant Letters of Marque and Reprisal; coin Money; emit Bills of Credit; make any Thing but gold and silver Coin a Tender in Payment of Debts; pass any Bill of Attainder, ex post facto Law, or Law impairing the Obligation of Contracts, or grant any Title of Nobility. Clause 2: No State shall, without the Consent of the Congress, lay any Imposts or Duties on Imports or Exports, except what may be absolutely necessary for executing it's inspection Laws: and the net Produce of all Duties and Imposts, laid by any State on Imports or Exports, shall be for the Use of the Treasury of the United States; and all such Laws shall be subject to the Revision and Controul of the Congress. Clause 3: No State shall, without the Consent of Congress, lay any Duty of Tonnage, keep Troops, or Ships of War in time of Peace, enter into any Agreement or Compact with another State, or with a foreign Power, or engage in War, unless actually invaded, or in such imminent Danger as will not admit of delay. Article. II. Section. 1. Clause 1: The executive Power shall be vested in a President of the United States of America. He shall hold his Office during the Term of four Years, and, together with the Vice President, chosen for the same Term, be elected, as follows Clause 2: Each State shall appoint, in such Manner as the Legislature thereof may direct, a Number of Electors, equal to the whole Number of Senators and Representatives to which the State may be entitled in the Congress: but no Senator or Representative, or Person holding an Office of Trust or Profit under the United States, shall be appointed an Elector. Clause 3: The Electors shall meet in their respective States, and vote by Ballot for two Persons, of whom one at least shall not be an Inhabitant of the same State with themselves. And they shall make a List of all the Persons voted for, and of the Number of Votes for each; which List they shall sign and certify, and transmit sealed to the Seat of the Government of the United States, directed to the President of the Senate. The President of the Senate shall, in the Presence of the Senate and House of Representatives, open all the Certificates, and the Votes shall then be counted. The Person having the greatest Number of Votes shall be the President, if such Number be a Majority of the whole Number of Electors appointed; and if there be more than one who have such Majority, and have an equal Number of Votes, then the House of Representatives shall immediately chuse by Ballot one of them for President; and if no Person have a Majority, then from the five highest on the List the said House shall in like Manner chuse the President. But in chusing the President, the Votes shall be taken by States, the Representation from each State having one Vote; A quorum for this Purpose shall consist of a Member or Members from two thirds of the States, and a Majority of all the States shall be necessary to a Choice. In every Case, after the Choice of the President, the Person having the greatest Number of Votes of the Electors shall be the Vice President. But if there should remain two or more who have equal Votes, the Senate shall chuse from them by Ballot the Vice President. (See Note 8) Clause 4: The Congress may determine the Time of chusing the Electors, and the Day on which they shall give their Votes; which Day shall be the same throughout the United States. Clause 5: No Person except a natural born Citizen, or a Citizen of the United States, at the time of the Adoption of this Constitution, shall be eligible to the Office of President; neither shall any Person be eligible to that Office who shall not have attained to the Age of thirty five Years, and been fourteen Years a Resident within the United States. Clause 6: In Case of the Removal of the President from Office, or of his Death, Resignation, or Inability to discharge the Powers and Duties of the said Office, (See Note 9) the Same shall devolve on the VicePresident, and the Congress may by Law provide for the Case of Removal, Death, Resignation or Inability, both of the President and Vice President, declaring what Officer shall then act as President, and such Officer shall act accordingly, until the Disability be removed, or a President shall be elected. Clause 7: The President shall, at stated Times, receive for his Services, a Compensation, which shall neither be encreased nor diminished during the Period for which he shall have been elected, and he shall not receive within that Period any other Emolument from the United States, or any of them. Clause 8: Before he enter on the Execution of his Office, he shall take the following Oath or Affirmation:--"I do solemnly swear (or affirm) that I will faithfully execute the Office of President of the United States, and will to the best of my Ability, preserve, protect and defend the Constitution of the United States." Section. 2. Clause 1: The President shall be Commander in Chief of the Army and Navy of the United States, and of the Militia of the several States, when called into the actual Service of the United States; he may require the Opinion, in writing, of the principal Officer in each of the executive Departments, upon any Subject relating to the Duties of their respective Offices, and he shall have Power to grant Reprieves and Pardons for Offences against the United States, except in Cases of Impeachment. Clause 2: He shall have Power, by and with the Advice and Consent of the Senate, to make Treaties, provided two thirds of the Senators present concur; and he shall nominate, and by and with the Advice and Consent of the Senate, shall appoint Ambassadors, other public Ministers and Consuls, Judges of the supreme Court, and all other Officers of the United States, whose Appointments are not herein otherwise provided for, and which shall be established by Law: but the Congress may by Law vest the Appointment of such inferior Officers, as they think proper, in the President alone, in the Courts of Law, or in the Heads of Departments. Clause 3: The President shall have Power to fill up all Vacancies that may happen during the Recess of the Senate, by granting Commissions which shall expire at the End of their next Session. Section. 3. He shall from time to time give to the Congress Information of the State of the Union, and recommend to their Consideration such Measures as he shall judge necessary and expedient; he may, on extraordinary Occasions, convene both Houses, or either of them, and in Case of Disagreement between them, with Respect to the Time of Adjournment, he may adjourn them to such Time as he shall think proper; he shall receive Ambassadors and other public Ministers; he shall take Care that the Laws be faithfully executed, and shall Commission all the Officers of the United States. Section. 4. The President, Vice President and all civil Officers of the United States, shall be removed from Office on Impeachment for, and Conviction of, Treason, Bribery, or other high Crimes and Misdemeanors. Article. III. Section. 1. The judicial Power of the United States, shall be vested in one supreme Court, and in such inferior Courts as the Congress may from time to time ordain and establish. The Judges, both of the supreme and inferior Courts, shall hold their Offices during good Behaviour, and shall, at stated Times, receive for their Services, a Compensation, which shall not be diminished during their Continuance in Office. Section. 2. Clause 1: The judicial Power shall extend to all Cases, in Law and Equity, arising under this Constitution, the Laws of the United States, and Treaties made, or which shall be made, under their Authority;--to all Cases affecting Ambassadors, other public Ministers and Consuls;--to all Cases of admiralty and maritime Jurisdiction;--to Controversies to which the United States shall be a Party;--to Controversies between two or more States;--between a State and Citizens of another State; (See Note 10)--between Citizens of different States, --between Citizens of the same State claiming Lands under Grants of different States, and between a State, or the Citizens thereof, and foreign States, Citizens or Subjects. Clause 2: In all Cases affecting Ambassadors, other public Ministers and Consuls, and those in which a State shall be Party, the supreme Court shall have original Jurisdiction. In all the other Cases before mentioned, the supreme Court shall have appellate Jurisdiction, both as to Law and Fact, with such Exceptions, and under such Regulations as the Congress shall make. Clause 3: The Trial of all Crimes, except in Cases of Impeachment, shall be by Jury; and such Trial shall be held in the State where the said Crimes shall have been committed; but when not committed within any State, the Trial shall be at such Place or Places as the Congress may by Law have directed. Section. 3. Clause 1: Treason against the United States, shall consist only in levying War against them, or in adhering to their Enemies, giving them Aid and Comfort. No Person shall be convicted of Treason unless on the Testimony of two Witnesses to the same overt Act, or on Confession in open Court. Clause 2: The Congress shall have Power to declare the Punishment of Treason, but no Attainder of Treason shall work Corruption of Blood, or Forfeiture except during the Life of the Person attainted. Article. IV. Section. 1. Full Faith and Credit shall be given in each State to the public Acts, Records, and judicial Proceedings of every other State. And the Congress may by general Laws prescribe the Manner in which such Acts, Records and Proceedings shall be proved, and the Effect thereof. Section. 2. Clause 1: The Citizens of each State shall be entitled to all Privileges and Immunities of Citizens in the several States. Clause 2: A Person charged in any State with Treason, Felony, or other Crime, who shall flee from Justice, and be found in another State, shall on Demand of the executive Authority of the State from which he fled, be delivered up, to be removed to the State having Jurisdiction of the Crime. Clause 3: No Person held to Service or Labour in one State, under the Laws thereof, escaping into another, shall, in Consequence of any Law or Regulation therein, be discharged from such Service or Labour, but shall be delivered up on Claim of the Party to whom such Service or Labour may be due. (See Note 11) Section. 3. Clause 1: New States may be admitted by the Congress into this Union; but no new State shall be formed or erected within the Jurisdiction of any other State; nor any State be formed by the Junction of two or more States, or Parts of States, without the Consent of the Legislatures of the States concerned as well as of the Congress. Clause 2: The Congress shall have Power to dispose of and make all needful Rules and Regulations respecting the Territory or other Property belonging to the United States; and nothing in this Constitution shall be so construed as to Prejudice any Claims of the United States, or of any particular State. Section. 4. The United States shall guarantee to every State in this Union a Republican Form of Government, and shall protect each of them against Invasion; and on Application of the Legislature, or of the Executive (when the Legislature cannot be convened) against domestic Violence. Article. V. The Congress, whenever two thirds of both Houses shall deem it necessary, shall propose [1]Amendments to this Constitution, or, on the Application of the Legislatures of two thirds of the several States, shall call a Convention for proposing Amendments, which, in either Case, shall be valid to all Intents and Purposes, as Part of this Constitution, when ratified by the Legislatures of three fourths of the several States, or by Conventions in three fourths thereof, as the one or the other Mode of Ratification may be proposed by the Congress; Provided that no Amendment which may be made prior to the Year One thousand eight hundred and eight shall in any Manner affect the first and fourth Clauses in the Ninth Section of the first Article; and that no State, without its Consent, shall be deprived of its equal Suffrage in the Senate. Article. VI. Clause 1: All Debts contracted and Engagements entered into, before the Adoption of this Constitution, shall be as valid against the United States under this Constitution, as under the Confederation. Clause 2: This Constitution, and the Laws of the United States which shall be made in Pursuance thereof; and all Treaties made, or which shall be made, under the Authority of the United States, shall be the supreme Law of the Land; and the Judges in every State shall be bound thereby, any Thing in the Constitution or Laws of any State to the Contrary notwithstanding. Clause 3: The Senators and Representatives before mentioned, and the Members of the several State Legislatures, and all executive and judicial Officers, both of the United States and of the several States, shall be bound by Oath or Affirmation, to support this Constitution; but no religious Test shall ever be required as a Qualification to any Office or public Trust under the United States. Article. VII. The Ratification of the Conventions of nine States, shall be sufficient for the Establishment of this Constitution between the States so ratifying the Same. done in Convention by the Unanimous Consent of the States present the Seventeenth Day of September in the Year of our Lord one thousand seven hundred and Eighty seven and of the Independence of the United States of America the Twelfth In witness whereof We have hereunto subscribed our Names, GO WASHINGTON--Presidt. and deputy from Virginia [Signed also by the deputies of twelve States.] Delaware Geo: Read Gunning Bedford jun John Dickinson Richard Bassett Jaco: Broom Maryland James MCHenry Dan of ST ThoS. Jenifer DanL Carroll. Virginia John Blair-- James Madison Jr. North Carolina WM Blount RichD. Dobbs Spaight. Hu Williamson South Carolina J. Rutledge Charles 1ACotesworth Pinckney Charles Pinckney Pierce Butler. Georgia William Few Abr Baldwin New Hampshire John Langdon Nicholas Gilman Massachusetts Nathaniel Gorham Rufus King Connecticut WM. SamL. Johnson Roger Sherman New York Alexander Hamilton New Jersey Wil: Livingston David Brearley. WM. Paterson. Jona: Dayton Pennsylvania B Franklin Thomas Mifflin RobT Morris Geo. Clymer ThoS. FitzSimons Jared Ingersoll James Wilson. Gouv Morris Attest William Jackson Secretary NOTES Note 1: This text of the Constitution follows the engrossed copy signed by Gen. Washington and the deputies from 12 States. The small superior figures preceding the paragraphs designate Clauses, and were not in the original and have no reference to footnotes. The Constitution was adopted by a convention of the States on September 17, 1787, and was subsequently ratified by the several States, on the following dates: Delaware, December 7, 1787; Pennsylvania, December 12, 1787; New Jersey, December 18, 1787; Georgia, January 2, 1788; Connecticut, January 9, 1788; Massachusetts, February 6, 1788; Maryland, April 28, 1788; South Carolina, May 23, 1788; New Hampshire, June 21, 1788. Ratification was completed on June 21, 1788. The Constitution was subsequently ratified by Virginia, June 25, 1788; New York, July 26, 1788; North Carolina, November 21, 1789; Rhode Island, May 29, 1790; and Vermont, January 10, 1791. In May 1785, a committee of Congress made a report recommending an alteration in the Articles of Confederation, but no action was taken on it, and it was left to the State Legislatures to proceed in the matter. In January 1786, the Legislature of Virginia passed a resolution providing for the appointment of five commissioners, who, or any three of them, should meet such commissioners as might be appointed in the other States of the Union, at a time and place to be agreed upon, to take into consideration the trade of the United States; to consider how far a uniform system in their commercial regulations may be necessary to their common interest and their permanent harmony; and to report to the several States such an act, relative to this great object, as, when ratified by them, will enable the United States in Congress effectually to provide for the same. The Virginia commissioners, after some correspondence, fixed the first Monday in September as the time, and the city of Annapolis as the place for the meeting, but only four other States were represented, viz: Delaware, New York, New Jersey, and Pennsylvania; the commissioners appointed by Massachusetts, New Hampshire, North Carolina, and Rhode Island failed to attend. Under the circumstances of so partial a representation, the commissioners present agreed upon a report, (drawn by Mr. Hamilton, of New York,) expressing their unanimous conviction that it might essentially tend to advance the interests of the Union if the States by which they were respectively delegated would concur, and use their endeavors to procure the concurrence of the other States, in the appointment of commissioners to meet at Philadelphia on the Second Monday of May following, to take into consideration the situation of the United States; to devise such further provisions as should appear to them necessary to render the Constitution of the Federal Government adequate to the exigencies of the Union; and to report such an act for that purpose to the United States in Congress assembled as, when agreed to by them and afterwards confirmed by the Legislatures of every State, would effectually provide for the same. Congress, on the 21st of February, 1787, adopted a resolution in favor of a convention, and the Legislatures of those States which had not already done so (with the exception of Rhode Island) promptly appointed delegates. On the 25th of May, seven States having convened, George Washington, of Virginia, was unanimously elected President, and the consideration of the proposed constitution was commenced. On the 17th of September, 1787, the Constitution as engrossed and agreed upon was signed by all the members present, except Mr. Gerry of Massachusetts, and Messrs. Mason and Randolph, of Virginia. The president of the convention transmitted it to Congress, with a resolution stating how the proposed Federal Government should be put in operation, and an explanatory letter. Congress, on the 28th of September, 1787, directed the Constitution so framed, with the resolutions and letter concerning the same, to "be transmitted to the several Legislatures in order to be submitted to a convention of delegates chosen in each State by the people thereof, in conformity to the resolves of the convention." On the 4th of March, 1789, the day which had been fixed for commencing the operations of Government under the new Constitution, it had been ratified by the conventions chosen in each State to consider it, as follows: Delaware, December 7, 1787; Pennsylvania, December 12, 1787; New Jersey, December 18, 1787; Georgia, January 2, 1788; Connecticut, January 9, 1788; Massachusetts, February 6, 1788; Maryland, April 28, 1788; South Carolina, May 23, 1788; New Hampshire, June 21, 1788; Virginia, June 25, 1788; and New York, July 26, 1788. The President informed Congress, on the 28th of January, 1790, that North Carolina had ratified the Constitution November 21, 1789; and he informed Congress on the 1st of June, 1790, that Rhode Island had ratified the Constitution May 29, 1790. Vermont, in convention, ratified the Constitution January 10, 1791, and was, by an act of Congress approved February 18, 1791, "received and admitted into this Union as a new and entire member of the United States." Note 2: The part of this Clause relating to the mode of apportionment of representatives among the several States has been affected by Section 2 of amendment XIV, and as to taxes on incomes without apportionment by amendment XVI. Note 3: This Clause has been affected by Clause 1 of amendment XVII. Note 4: This Clause has been affected by Clause 2 of amendment XVIII. Note 5: This Clause has been affected by amendment XX. Note 6: This Clause has been affected by amendment XXVII. Note 7: This Clause has been affected by amendment XVI. Note 8: This Clause has been superseded by amendment XII. Note 9: This Clause has been affected by amendment XXV. Note 10: This Clause has been affected by amendment XI. Note 11: This Clause has been affected by amendment XIII. Note 12: The first ten amendments to the Constitution of the United States (and two others, one of which failed of ratification and the other which later became the 27th amendment) were proposed to the legislatures of the several States by the First Congress on September 25, 1789. The first ten amendments were ratified by the following States, and the notifications of ratification by the Governors thereof were successively communicated by the President to Congress: New Jersey, November 20, 1789; Maryland, December 19, 1789; North Carolina, December 22, 1789; South Carolina, January 19, 1790; New Hampshire, January 25, 1790; Delaware, January 28, 1790; New York, February 24, 1790; Pennsylvania, March 10, 1790; Rhode Island, June 7, 1790; Vermont, November 3, 1791; and Virginia, December 15, 1791. Ratification was completed on December 15, 1791. The amendments were subsequently ratified by the legislatures of Massachusetts, March 2, 1939; Georgia, March 18, 1939; and Connecticut, April 19, 1939. Note 13: Only the 13th, 14th, 15th, and 16th articles of amendment had numbers assigned to them at the time of ratification. Note 14: This sentence has been superseded by section 3 of amendment XX. Note 15: See amendment XIX and section 1 of amendment XXVI. Note 16: Repealed by section 1 of amendment XXI. References 1. http://www.house.gov/Constitution/Amend.html flex-2.5.39/tests/test-alloc-extra/Makefile.in0000644000175000017500000003135112314621560021424 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-alloc-extra DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c scanner.h parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = test-alloc-extra all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-alloc-extra/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-alloc-extra/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-alloc-extra/Makefile.am0000644000175000017500000000313512300734270021410 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c scanner.h parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = test-alloc-extra scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-yyextra/0002755000175000017500000000000012314621667016660 5ustar srivastasrivastaflex-2.5.39/tests/test-yyextra/scanner.l0000644000175000017500000000620112060131401020437 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* A file to build "scanner.c". */ /* This tests that we can use "yyextra". We buffer all input into a growable array, then print it. We run diff on the input and output. */ #include #include #include "config.h" /* We'll store the entire input in this buffer, growing as necessary. */ struct Buffer { int curr_len; int max_len; int grow_len; char * data; }; #define YY_EXTRA_TYPE struct Buffer * /* Save char into junk array at next position. */ static void append_char (char c, yyscan_t scanner ); %} %option 8bit outfile="scanner.c" prefix="test" %option nounput nomain noyywrap nodefault %option warn %option reentrant %% .|\r|\n { append_char (yytext[0],yyscanner); } %% int main(void); int main () { yyscan_t scanner; struct Buffer * buf; int i; buf = (struct Buffer*) malloc(sizeof(struct Buffer)); buf->curr_len =0; buf->max_len = 4; buf->grow_len = 100; buf->data = (char*)malloc(buf->max_len); testlex_init(&scanner); testset_in( stdin, scanner); testset_out( stdout, scanner); testset_extra( buf, scanner ); testlex(scanner); buf = testget_extra(scanner); for(i=0; i < buf->curr_len; i++) fputc( buf->data[i], stdout ); free( buf->data); free( buf); testlex_destroy(scanner); return 0; } /* Save char into junk array at next position. */ static void append_char (char c, yyscan_t scanner ) { struct Buffer *buf, *new_buf; buf = testget_extra(scanner); /* Grow buffer if necessary. */ if( buf->curr_len >= buf->max_len ) { new_buf = (struct Buffer*) malloc(sizeof(struct Buffer)); new_buf->max_len = buf->max_len + buf->grow_len; new_buf->grow_len = buf->grow_len; new_buf->data = (char*)malloc(new_buf->max_len); for( new_buf->curr_len = 0; new_buf->curr_len < buf->curr_len; new_buf->curr_len++ ) { new_buf->data[ new_buf->curr_len] = buf->data [ new_buf->curr_len]; } free( buf->data ); free( buf ); buf = new_buf; testset_extra( buf, scanner ); } buf->data[ buf->curr_len++ ] = c; } flex-2.5.39/tests/test-yyextra/test.input0000644000175000017500000011123512060131401020675 0ustar srivastasrivasta THE UNITED STATES CONSTITUTION _________________________________________________________________ (See Note 1) We the People of the United States, in Order to form a more perfect Union, establish Justice, insure domestic Tranquility, provide for the common defence, promote the general Welfare, and secure the Blessings of Liberty to ourselves and our Posterity, do ordain and establish this Constitution for the United States of America. Article. I. Section 1. All legislative Powers herein granted shall be vested in a Congress of the United States, which shall consist of a Senate and House of Representatives. Section. 2. Clause 1: The House of Representatives shall be composed of Members chosen every second Year by the People of the several States, and the Electors in each State shall have the Qualifications requisite for Electors of the most numerous Branch of the State Legislature. Clause 2: No Person shall be a Representative who shall not have attained to the Age of twenty five Years, and been seven Years a Citizen of the United States, and who shall not, when elected, be an Inhabitant of that State in which he shall be chosen. Clause 3: Representatives and direct Taxes shall be apportioned among the several States which may be included within this Union, according to their respective Numbers, which shall be determined by adding to the whole Number of free Persons, including those bound to Service for a Term of Years, and excluding Indians not taxed, three fifths of all other Persons. (See Note 2) The actual Enumeration shall be made within three Years after the first Meeting of the Congress of the United States, and within every subsequent Term of ten Years, in such Manner as they shall by Law direct. The Number of Representatives shall not exceed one for every thirty Thousand, but each State shall have at Least one Representative; and until such enumeration shall be made, the State of New Hampshire shall be entitled to chuse three, Massachusetts eight, Rhode-Island and Providence Plantations one, Connecticut five, New-York six, New Jersey four, Pennsylvania eight, Delaware one, Maryland six, Virginia ten, North Carolina five, South Carolina five, and Georgia three. Clause 4: When vacancies happen in the Representation from any State, the Executive Authority thereof shall issue Writs of Election to fill such Vacancies. Clause 5: The House of Representatives shall chuse their Speaker and other Officers; and shall have the sole Power of Impeachment. Section. 3. Clause 1: The Senate of the United States shall be composed of two Senators from each State, chosen by the Legislature thereof, (See Note 3) for six Years; and each Senator shall have one Vote. Clause 2: Immediately after they shall be assembled in Consequence of the first Election, they shall be divided as equally as may be into three Classes. The Seats of the Senators of the first Class shall be vacated at the Expiration of the second Year, of the second Class at the Expiration of the fourth Year, and of the third Class at the Expiration of the sixth Year, so that one third may be chosen every second Year; and if Vacancies happen by Resignation, or otherwise, during the Recess of the Legislature of any State, the Executive thereof may make temporary Appointments until the next Meeting of the Legislature, which shall then fill such Vacancies. (See Note 4) Clause 3: No Person shall be a Senator who shall not have attained to the Age of thirty Years, and been nine Years a Citizen of the United States, and who shall not, when elected, be an Inhabitant of that State for which he shall be chosen. Clause 4: The Vice President of the United States shall be President of the Senate, but shall have no Vote, unless they be equally divided. Clause 5: The Senate shall chuse their other Officers, and also a President pro tempore, in the Absence of the Vice President, or when he shall exercise the Office of President of the United States. Clause 6: The Senate shall have the sole Power to try all Impeachments. When sitting for that Purpose, they shall be on Oath or Affirmation. When the President of the United States is tried, the Chief Justice shall preside: And no Person shall be convicted without the Concurrence of two thirds of the Members present. Clause 7: Judgment in Cases of Impeachment shall not extend further than to removal from Office, and disqualification to hold and enjoy any Office of honor, Trust or Profit under the United States: but the Party convicted shall nevertheless be liable and subject to Indictment, Trial, Judgment and Punishment, according to Law. Section. 4. Clause 1: The Times, Places and Manner of holding Elections for Senators and Representatives, shall be prescribed in each State by the Legislature thereof; but the Congress may at any time by Law make or alter such Regulations, except as to the Places of chusing Senators. Clause 2: The Congress shall assemble at least once in every Year, and such Meeting shall be on the first Monday in December, (See Note 5) unless they shall by Law appoint a different Day. Section. 5. Clause 1: Each House shall be the Judge of the Elections, Returns and Qualifications of its own Members, and a Majority of each shall constitute a Quorum to do Business; but a smaller Number may adjourn from day to day, and may be authorized to compel the Attendance of absent Members, in such Manner, and under such Penalties as each House may provide. Clause 2: Each House may determine the Rules of its Proceedings, punish its Members for disorderly Behaviour, and, with the Concurrence of two thirds, expel a Member. Clause 3: Each House shall keep a Journal of its Proceedings, and from time to time publish the same, excepting such Parts as may in their Judgment require Secrecy; and the Yeas and Nays of the Members of either House on any question shall, at the Desire of one fifth of those Present, be entered on the Journal. Clause 4: Neither House, during the Session of Congress, shall, without the Consent of the other, adjourn for more than three days, nor to any other Place than that in which the two Houses shall be sitting. Section. 6. Clause 1: The Senators and Representatives shall receive a Compensation for their Services, to be ascertained by Law, and paid out of the Treasury of the United States. (See Note 6) They shall in all Cases, except Treason, Felony and Breach of the Peace, beprivileged from Arrest during their Attendance at the Session of their respective Houses, and in going to and returning from the same; and for any Speech or Debate in either House, they shall not be questioned in any other Place. Clause 2: No Senator or Representative shall, during the Time for which he was elected, be appointed to any civil Office under the Authority of the United States, which shall have been created, or the Emoluments whereof shall have been encreased during such time; and no Person holding any Office under the United States, shall be a Member of either House during his Continuance in Office. Section. 7. Clause 1: All Bills for raising Revenue shall originate in the House of Representatives; but the Senate may propose or concur with Amendments as on other Bills. Clause 2: Every Bill which shall have passed the House of Representatives and the Senate, shall, before it become a Law, be presented to the President of the United States; If he approve he shall sign it, but if not he shall return it, with his Objections to that House in which it shall have originated, who shall enter the Objections at large on their Journal, and proceed to reconsider it. If after such Reconsideration two thirds of that House shall agree to pass the Bill, it shall be sent, together with the Objections, to the other House, by which it shall likewise be reconsidered, and if approved by two thirds of that House, it shall become a Law. But in all such Cases the Votes of both Houses shall be determined by yeas and Nays, and the Names of the Persons voting for and against the Bill shall be entered on the Journal of each House respectively. If any Bill shall not be returned by the President within ten Days (Sundays excepted) after it shall have been presented to him, the Same shall be a Law, in like Manner as if he had signed it, unless the Congress by their Adjournment prevent its Return, in which Case it shall not be a Law. Clause 3: Every Order, Resolution, or Vote to which the Concurrence of the Senate and House of Representatives may be necessary (except on a question of Adjournment) shall be presented to the President of the United States; and before the Same shall take Effect, shall be approved by him, or being disapproved by him, shall be repassed by two thirds of the Senate and House of Representatives, according to the Rules and Limitations prescribed in the Case of a Bill. Section. 8. Clause 1: The Congress shall have Power To lay and collect Taxes, Duties, Imposts and Excises, to pay the Debts and provide for the common Defence and general Welfare of the United States; but all Duties, Imposts and Excises shall be uniform throughout the United States; Clause 2: To borrow Money on the credit of the United States; Clause 3: To regulate Commerce with foreign Nations, and among the several States, and with the Indian Tribes; Clause 4: To establish an uniform Rule of Naturalization, and uniform Laws on the subject of Bankruptcies throughout the United States; Clause 5: To coin Money, regulate the Value thereof, and of foreign Coin, and fix the Standard of Weights and Measures; Clause 6: To provide for the Punishment of counterfeiting the Securities and current Coin of the United States; Clause 7: To establish Post Offices and post Roads; Clause 8: To promote the Progress of Science and useful Arts, by securing for limited Times to Authors and Inventors the exclusive Right to their respective Writings and Discoveries; Clause 9: To constitute Tribunals inferior to the supreme Court; Clause 10: To define and punish Piracies and Felonies committed on the high Seas, and Offences against the Law of Nations; Clause 11: To declare War, grant Letters of Marque and Reprisal, and make Rules concerning Captures on Land and Water; Clause 12: To raise and support Armies, but no Appropriation of Money to that Use shall be for a longer Term than two Years; Clause 13: To provide and maintain a Navy; Clause 14: To make Rules for the Government and Regulation of the land and naval Forces; Clause 15: To provide for calling forth the Militia to execute the Laws of the Union, suppress Insurrections and repel Invasions; Clause 16: To provide for organizing, arming, and disciplining, the Militia, and for governing such Part of them as may be employed in the Service of the United States, reserving to the States respectively, the Appointment of the Officers, and the Authority of training the Militia according to the discipline prescribed by Congress; Clause 17: To exercise exclusive Legislation in all Cases whatsoever, over such District (not exceeding ten Miles square) as may, byCession of particular States, and the Acceptance of Congress, become the Seat of the Government of the United States, and to exercise like Authority over all Places purchased by the Consent of the Legislature of the State in which the Same shall be, for the Erection of Forts, Magazines, Arsenals, dock-Yards, and other needful Buildings;--And Clause 18: To make all Laws which shall be necessary and proper for carrying into Execution the foregoing Powers, and all other Powers vested by this Constitution in the Government of the United States, or in any Department or Officer thereof. Section. 9. Clause 1: The Migration or Importation of such Persons as any of the States now existing shall think proper to admit, shall not be prohibited by the Congress prior to the Year one thousand eight hundred and eight, but a Tax or duty may be imposed on such Importation, not exceeding ten dollars for each Person. Clause 2: The Privilege of the Writ of Habeas Corpus shall not be suspended, unless when in Cases of Rebellion or Invasion the public Safety may require it. Clause 3: No Bill of Attainder or ex post facto Law shall be passed. Clause 4: No Capitation, or other direct, Tax shall be laid, unless in Proportion to the Census or Enumeration herein before directed to be taken. (See Note 7) Clause 5: No Tax or Duty shall be laid on Articles exported from any State. Clause 6: No Preference shall be given by any Regulation of Commerce or Revenue to the Ports of one State over those of another: nor shall Vessels bound to, or from, one State, be obliged to enter, clear, or pay Duties in another. Clause 7: No Money shall be drawn from the Treasury, but in Consequence of Appropriations made by Law; and a regular Statement and Account of the Receipts and Expenditures of all public Money shall be published from time to time. Clause 8: No Title of Nobility shall be granted by the United States: And no Person holding any Office of Profit or Trust under them, shall, without the Consent of the Congress, accept of any present, Emolument, Office, or Title, of any kind whatever, from any King, Prince, or foreign State. Section. 10. Clause 1: No State shall enter into any Treaty, Alliance, or Confederation; grant Letters of Marque and Reprisal; coin Money; emit Bills of Credit; make any Thing but gold and silver Coin a Tender in Payment of Debts; pass any Bill of Attainder, ex post facto Law, or Law impairing the Obligation of Contracts, or grant any Title of Nobility. Clause 2: No State shall, without the Consent of the Congress, lay any Imposts or Duties on Imports or Exports, except what may be absolutely necessary for executing it's inspection Laws: and the net Produce of all Duties and Imposts, laid by any State on Imports or Exports, shall be for the Use of the Treasury of the United States; and all such Laws shall be subject to the Revision and Controul of the Congress. Clause 3: No State shall, without the Consent of Congress, lay any Duty of Tonnage, keep Troops, or Ships of War in time of Peace, enter into any Agreement or Compact with another State, or with a foreign Power, or engage in War, unless actually invaded, or in such imminent Danger as will not admit of delay. Article. II. Section. 1. Clause 1: The executive Power shall be vested in a President of the United States of America. He shall hold his Office during the Term of four Years, and, together with the Vice President, chosen for the same Term, be elected, as follows Clause 2: Each State shall appoint, in such Manner as the Legislature thereof may direct, a Number of Electors, equal to the whole Number of Senators and Representatives to which the State may be entitled in the Congress: but no Senator or Representative, or Person holding an Office of Trust or Profit under the United States, shall be appointed an Elector. Clause 3: The Electors shall meet in their respective States, and vote by Ballot for two Persons, of whom one at least shall not be an Inhabitant of the same State with themselves. And they shall make a List of all the Persons voted for, and of the Number of Votes for each; which List they shall sign and certify, and transmit sealed to the Seat of the Government of the United States, directed to the President of the Senate. The President of the Senate shall, in the Presence of the Senate and House of Representatives, open all the Certificates, and the Votes shall then be counted. The Person having the greatest Number of Votes shall be the President, if such Number be a Majority of the whole Number of Electors appointed; and if there be more than one who have such Majority, and have an equal Number of Votes, then the House of Representatives shall immediately chuse by Ballot one of them for President; and if no Person have a Majority, then from the five highest on the List the said House shall in like Manner chuse the President. But in chusing the President, the Votes shall be taken by States, the Representation from each State having one Vote; A quorum for this Purpose shall consist of a Member or Members from two thirds of the States, and a Majority of all the States shall be necessary to a Choice. In every Case, after the Choice of the President, the Person having the greatest Number of Votes of the Electors shall be the Vice President. But if there should remain two or more who have equal Votes, the Senate shall chuse from them by Ballot the Vice President. (See Note 8) Clause 4: The Congress may determine the Time of chusing the Electors, and the Day on which they shall give their Votes; which Day shall be the same throughout the United States. Clause 5: No Person except a natural born Citizen, or a Citizen of the United States, at the time of the Adoption of this Constitution, shall be eligible to the Office of President; neither shall any Person be eligible to that Office who shall not have attained to the Age of thirty five Years, and been fourteen Years a Resident within the United States. Clause 6: In Case of the Removal of the President from Office, or of his Death, Resignation, or Inability to discharge the Powers and Duties of the said Office, (See Note 9) the Same shall devolve on the VicePresident, and the Congress may by Law provide for the Case of Removal, Death, Resignation or Inability, both of the President and Vice President, declaring what Officer shall then act as President, and such Officer shall act accordingly, until the Disability be removed, or a President shall be elected. Clause 7: The President shall, at stated Times, receive for his Services, a Compensation, which shall neither be encreased nor diminished during the Period for which he shall have been elected, and he shall not receive within that Period any other Emolument from the United States, or any of them. Clause 8: Before he enter on the Execution of his Office, he shall take the following Oath or Affirmation:--"I do solemnly swear (or affirm) that I will faithfully execute the Office of President of the United States, and will to the best of my Ability, preserve, protect and defend the Constitution of the United States." Section. 2. Clause 1: The President shall be Commander in Chief of the Army and Navy of the United States, and of the Militia of the several States, when called into the actual Service of the United States; he may require the Opinion, in writing, of the principal Officer in each of the executive Departments, upon any Subject relating to the Duties of their respective Offices, and he shall have Power to grant Reprieves and Pardons for Offences against the United States, except in Cases of Impeachment. Clause 2: He shall have Power, by and with the Advice and Consent of the Senate, to make Treaties, provided two thirds of the Senators present concur; and he shall nominate, and by and with the Advice and Consent of the Senate, shall appoint Ambassadors, other public Ministers and Consuls, Judges of the supreme Court, and all other Officers of the United States, whose Appointments are not herein otherwise provided for, and which shall be established by Law: but the Congress may by Law vest the Appointment of such inferior Officers, as they think proper, in the President alone, in the Courts of Law, or in the Heads of Departments. Clause 3: The President shall have Power to fill up all Vacancies that may happen during the Recess of the Senate, by granting Commissions which shall expire at the End of their next Session. Section. 3. He shall from time to time give to the Congress Information of the State of the Union, and recommend to their Consideration such Measures as he shall judge necessary and expedient; he may, on extraordinary Occasions, convene both Houses, or either of them, and in Case of Disagreement between them, with Respect to the Time of Adjournment, he may adjourn them to such Time as he shall think proper; he shall receive Ambassadors and other public Ministers; he shall take Care that the Laws be faithfully executed, and shall Commission all the Officers of the United States. Section. 4. The President, Vice President and all civil Officers of the United States, shall be removed from Office on Impeachment for, and Conviction of, Treason, Bribery, or other high Crimes and Misdemeanors. Article. III. Section. 1. The judicial Power of the United States, shall be vested in one supreme Court, and in such inferior Courts as the Congress may from time to time ordain and establish. The Judges, both of the supreme and inferior Courts, shall hold their Offices during good Behaviour, and shall, at stated Times, receive for their Services, a Compensation, which shall not be diminished during their Continuance in Office. Section. 2. Clause 1: The judicial Power shall extend to all Cases, in Law and Equity, arising under this Constitution, the Laws of the United States, and Treaties made, or which shall be made, under their Authority;--to all Cases affecting Ambassadors, other public Ministers and Consuls;--to all Cases of admiralty and maritime Jurisdiction;--to Controversies to which the United States shall be a Party;--to Controversies between two or more States;--between a State and Citizens of another State; (See Note 10)--between Citizens of different States, --between Citizens of the same State claiming Lands under Grants of different States, and between a State, or the Citizens thereof, and foreign States, Citizens or Subjects. Clause 2: In all Cases affecting Ambassadors, other public Ministers and Consuls, and those in which a State shall be Party, the supreme Court shall have original Jurisdiction. In all the other Cases before mentioned, the supreme Court shall have appellate Jurisdiction, both as to Law and Fact, with such Exceptions, and under such Regulations as the Congress shall make. Clause 3: The Trial of all Crimes, except in Cases of Impeachment, shall be by Jury; and such Trial shall be held in the State where the said Crimes shall have been committed; but when not committed within any State, the Trial shall be at such Place or Places as the Congress may by Law have directed. Section. 3. Clause 1: Treason against the United States, shall consist only in levying War against them, or in adhering to their Enemies, giving them Aid and Comfort. No Person shall be convicted of Treason unless on the Testimony of two Witnesses to the same overt Act, or on Confession in open Court. Clause 2: The Congress shall have Power to declare the Punishment of Treason, but no Attainder of Treason shall work Corruption of Blood, or Forfeiture except during the Life of the Person attainted. Article. IV. Section. 1. Full Faith and Credit shall be given in each State to the public Acts, Records, and judicial Proceedings of every other State. And the Congress may by general Laws prescribe the Manner in which such Acts, Records and Proceedings shall be proved, and the Effect thereof. Section. 2. Clause 1: The Citizens of each State shall be entitled to all Privileges and Immunities of Citizens in the several States. Clause 2: A Person charged in any State with Treason, Felony, or other Crime, who shall flee from Justice, and be found in another State, shall on Demand of the executive Authority of the State from which he fled, be delivered up, to be removed to the State having Jurisdiction of the Crime. Clause 3: No Person held to Service or Labour in one State, under the Laws thereof, escaping into another, shall, in Consequence of any Law or Regulation therein, be discharged from such Service or Labour, but shall be delivered up on Claim of the Party to whom such Service or Labour may be due. (See Note 11) Section. 3. Clause 1: New States may be admitted by the Congress into this Union; but no new State shall be formed or erected within the Jurisdiction of any other State; nor any State be formed by the Junction of two or more States, or Parts of States, without the Consent of the Legislatures of the States concerned as well as of the Congress. Clause 2: The Congress shall have Power to dispose of and make all needful Rules and Regulations respecting the Territory or other Property belonging to the United States; and nothing in this Constitution shall be so construed as to Prejudice any Claims of the United States, or of any particular State. Section. 4. The United States shall guarantee to every State in this Union a Republican Form of Government, and shall protect each of them against Invasion; and on Application of the Legislature, or of the Executive (when the Legislature cannot be convened) against domestic Violence. Article. V. The Congress, whenever two thirds of both Houses shall deem it necessary, shall propose [1]Amendments to this Constitution, or, on the Application of the Legislatures of two thirds of the several States, shall call a Convention for proposing Amendments, which, in either Case, shall be valid to all Intents and Purposes, as Part of this Constitution, when ratified by the Legislatures of three fourths of the several States, or by Conventions in three fourths thereof, as the one or the other Mode of Ratification may be proposed by the Congress; Provided that no Amendment which may be made prior to the Year One thousand eight hundred and eight shall in any Manner affect the first and fourth Clauses in the Ninth Section of the first Article; and that no State, without its Consent, shall be deprived of its equal Suffrage in the Senate. Article. VI. Clause 1: All Debts contracted and Engagements entered into, before the Adoption of this Constitution, shall be as valid against the United States under this Constitution, as under the Confederation. Clause 2: This Constitution, and the Laws of the United States which shall be made in Pursuance thereof; and all Treaties made, or which shall be made, under the Authority of the United States, shall be the supreme Law of the Land; and the Judges in every State shall be bound thereby, any Thing in the Constitution or Laws of any State to the Contrary notwithstanding. Clause 3: The Senators and Representatives before mentioned, and the Members of the several State Legislatures, and all executive and judicial Officers, both of the United States and of the several States, shall be bound by Oath or Affirmation, to support this Constitution; but no religious Test shall ever be required as a Qualification to any Office or public Trust under the United States. Article. VII. The Ratification of the Conventions of nine States, shall be sufficient for the Establishment of this Constitution between the States so ratifying the Same. done in Convention by the Unanimous Consent of the States present the Seventeenth Day of September in the Year of our Lord one thousand seven hundred and Eighty seven and of the Independence of the United States of America the Twelfth In witness whereof We have hereunto subscribed our Names, GO WASHINGTON--Presidt. and deputy from Virginia [Signed also by the deputies of twelve States.] Delaware Geo: Read Gunning Bedford jun John Dickinson Richard Bassett Jaco: Broom Maryland James MCHenry Dan of ST ThoS. Jenifer DanL Carroll. Virginia John Blair-- James Madison Jr. North Carolina WM Blount RichD. Dobbs Spaight. Hu Williamson South Carolina J. Rutledge Charles 1ACotesworth Pinckney Charles Pinckney Pierce Butler. Georgia William Few Abr Baldwin New Hampshire John Langdon Nicholas Gilman Massachusetts Nathaniel Gorham Rufus King Connecticut WM. SamL. Johnson Roger Sherman New York Alexander Hamilton New Jersey Wil: Livingston David Brearley. WM. Paterson. Jona: Dayton Pennsylvania B Franklin Thomas Mifflin RobT Morris Geo. Clymer ThoS. FitzSimons Jared Ingersoll James Wilson. Gouv Morris Attest William Jackson Secretary NOTES Note 1: This text of the Constitution follows the engrossed copy signed by Gen. Washington and the deputies from 12 States. The small superior figures preceding the paragraphs designate Clauses, and were not in the original and have no reference to footnotes. The Constitution was adopted by a convention of the States on September 17, 1787, and was subsequently ratified by the several States, on the following dates: Delaware, December 7, 1787; Pennsylvania, December 12, 1787; New Jersey, December 18, 1787; Georgia, January 2, 1788; Connecticut, January 9, 1788; Massachusetts, February 6, 1788; Maryland, April 28, 1788; South Carolina, May 23, 1788; New Hampshire, June 21, 1788. Ratification was completed on June 21, 1788. The Constitution was subsequently ratified by Virginia, June 25, 1788; New York, July 26, 1788; North Carolina, November 21, 1789; Rhode Island, May 29, 1790; and Vermont, January 10, 1791. In May 1785, a committee of Congress made a report recommending an alteration in the Articles of Confederation, but no action was taken on it, and it was left to the State Legislatures to proceed in the matter. In January 1786, the Legislature of Virginia passed a resolution providing for the appointment of five commissioners, who, or any three of them, should meet such commissioners as might be appointed in the other States of the Union, at a time and place to be agreed upon, to take into consideration the trade of the United States; to consider how far a uniform system in their commercial regulations may be necessary to their common interest and their permanent harmony; and to report to the several States such an act, relative to this great object, as, when ratified by them, will enable the United States in Congress effectually to provide for the same. The Virginia commissioners, after some correspondence, fixed the first Monday in September as the time, and the city of Annapolis as the place for the meeting, but only four other States were represented, viz: Delaware, New York, New Jersey, and Pennsylvania; the commissioners appointed by Massachusetts, New Hampshire, North Carolina, and Rhode Island failed to attend. Under the circumstances of so partial a representation, the commissioners present agreed upon a report, (drawn by Mr. Hamilton, of New York,) expressing their unanimous conviction that it might essentially tend to advance the interests of the Union if the States by which they were respectively delegated would concur, and use their endeavors to procure the concurrence of the other States, in the appointment of commissioners to meet at Philadelphia on the Second Monday of May following, to take into consideration the situation of the United States; to devise such further provisions as should appear to them necessary to render the Constitution of the Federal Government adequate to the exigencies of the Union; and to report such an act for that purpose to the United States in Congress assembled as, when agreed to by them and afterwards confirmed by the Legislatures of every State, would effectually provide for the same. Congress, on the 21st of February, 1787, adopted a resolution in favor of a convention, and the Legislatures of those States which had not already done so (with the exception of Rhode Island) promptly appointed delegates. On the 25th of May, seven States having convened, George Washington, of Virginia, was unanimously elected President, and the consideration of the proposed constitution was commenced. On the 17th of September, 1787, the Constitution as engrossed and agreed upon was signed by all the members present, except Mr. Gerry of Massachusetts, and Messrs. Mason and Randolph, of Virginia. The president of the convention transmitted it to Congress, with a resolution stating how the proposed Federal Government should be put in operation, and an explanatory letter. Congress, on the 28th of September, 1787, directed the Constitution so framed, with the resolutions and letter concerning the same, to "be transmitted to the several Legislatures in order to be submitted to a convention of delegates chosen in each State by the people thereof, in conformity to the resolves of the convention." On the 4th of March, 1789, the day which had been fixed for commencing the operations of Government under the new Constitution, it had been ratified by the conventions chosen in each State to consider it, as follows: Delaware, December 7, 1787; Pennsylvania, December 12, 1787; New Jersey, December 18, 1787; Georgia, January 2, 1788; Connecticut, January 9, 1788; Massachusetts, February 6, 1788; Maryland, April 28, 1788; South Carolina, May 23, 1788; New Hampshire, June 21, 1788; Virginia, June 25, 1788; and New York, July 26, 1788. The President informed Congress, on the 28th of January, 1790, that North Carolina had ratified the Constitution November 21, 1789; and he informed Congress on the 1st of June, 1790, that Rhode Island had ratified the Constitution May 29, 1790. Vermont, in convention, ratified the Constitution January 10, 1791, and was, by an act of Congress approved February 18, 1791, "received and admitted into this Union as a new and entire member of the United States." Note 2: The part of this Clause relating to the mode of apportionment of representatives among the several States has been affected by Section 2 of amendment XIV, and as to taxes on incomes without apportionment by amendment XVI. Note 3: This Clause has been affected by Clause 1 of amendment XVII. Note 4: This Clause has been affected by Clause 2 of amendment XVIII. Note 5: This Clause has been affected by amendment XX. Note 6: This Clause has been affected by amendment XXVII. Note 7: This Clause has been affected by amendment XVI. Note 8: This Clause has been superseded by amendment XII. Note 9: This Clause has been affected by amendment XXV. Note 10: This Clause has been affected by amendment XI. Note 11: This Clause has been affected by amendment XIII. Note 12: The first ten amendments to the Constitution of the United States (and two others, one of which failed of ratification and the other which later became the 27th amendment) were proposed to the legislatures of the several States by the First Congress on September 25, 1789. The first ten amendments were ratified by the following States, and the notifications of ratification by the Governors thereof were successively communicated by the President to Congress: New Jersey, November 20, 1789; Maryland, December 19, 1789; North Carolina, December 22, 1789; South Carolina, January 19, 1790; New Hampshire, January 25, 1790; Delaware, January 28, 1790; New York, February 24, 1790; Pennsylvania, March 10, 1790; Rhode Island, June 7, 1790; Vermont, November 3, 1791; and Virginia, December 15, 1791. Ratification was completed on December 15, 1791. The amendments were subsequently ratified by the legislatures of Massachusetts, March 2, 1939; Georgia, March 18, 1939; and Connecticut, April 19, 1939. Note 13: Only the 13th, 14th, 15th, and 16th articles of amendment had numbers assigned to them at the time of ratification. Note 14: This sentence has been superseded by section 3 of amendment XX. Note 15: See amendment XIX and section 1 of amendment XXVI. Note 16: Repealed by section 1 of amendment XXI. References 1. http://www.house.gov/Constitution/Amend.html flex-2.5.39/tests/test-yyextra/Makefile.in0000644000175000017500000003133112314621561020715 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-yyextra DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c scanner.h parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = test-yyextra all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-yyextra/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-yyextra/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-yyextra/Makefile.am0000644000175000017500000000313112300734270020676 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c scanner.h parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = test-yyextra scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/Makefile.am0000644000175000017500000000651112300734270016221 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. EXTRA_DIST = \ README dist_noinst_SCRIPTS = \ create-test DIST_SUBDIRS = \ test-concatenated-options \ test-c++-yywrap \ test-extended \ test-ccl \ test-quotes \ test-rescan-r \ test-rescan-nr \ test-basic-nr \ test-basic-r \ test-bison-yylloc \ test-bison-yylval \ test-bison-nr \ test-multiple-scanners-nr \ test-multiple-scanners-r \ test-header-nr \ test-header-r \ test-reject \ test-c++-multiple-scanners \ test-c++-basic \ test-posixly-correct \ test-posix \ test-mem-r \ test-mem-nr \ test-debug-nr \ test-debug-r \ test-lineno-r \ test-lineno-nr \ test-lineno-trailing \ test-linedir-r \ TEMPLATE \ test-top \ test-array-nr \ test-array-r \ test-c-cpp-nr \ test-c-cpp-r \ test-include-by-buffer \ test-include-by-push \ test-include-by-reentrant \ test-prefix-nr \ test-prefix-r \ test-pthread \ test-string-nr \ test-string-r \ test-yyextra \ test-alloc-extra \ test-noansi-nr \ test-noansi-r \ test-table-opts SUBDIRS = \ test-concatenated-options \ test-c++-yywrap \ test-extended \ test-ccl \ test-quotes \ test-rescan-r \ test-rescan-nr \ test-basic-nr \ test-basic-r \ test-bison-yylloc \ test-bison-yylval \ test-bison-nr \ test-multiple-scanners-nr \ test-multiple-scanners-r \ test-header-nr \ test-header-r \ test-reject \ test-c++-multiple-scanners \ test-c++-basic \ test-posixly-correct \ test-posix \ test-mem-r \ test-mem-nr \ test-debug-nr \ test-debug-r \ test-lineno-r \ test-lineno-nr \ test-lineno-trailing \ test-linedir-r \ test-array-nr \ test-array-r \ test-c-cpp-nr \ test-c-cpp-r \ test-include-by-buffer \ test-include-by-push \ test-include-by-reentrant \ test-prefix-nr \ test-prefix-r \ test-pthread \ test-string-nr \ test-string-r \ test-yyextra \ test-alloc-extra \ test-noansi-nr \ test-noansi-r \ test-top \ test-table-opts # clean up before running the test suite so we dont test old builds of test code check-local: clean NOK=;\ NFAIL=;\ for dir in $(SUBDIRS) ; do \ echo Executing test "$$dir" ; \ ( cd "$$dir" && $(MAKE) test > OUTPUT 2>&1 ) ; \ case $$? in \ 0 ) echo Test "$$dir" succeeded.; \ NOK=0$$NOK;\ ;; \ * ) echo Test "$$dir" FAILED. See "$$dir"/OUTPUT for details. ; \ NFAIL=0$$NFAIL; \ ;; \ esac; \ done ; \ echo Results: ; \ echo Tests succeeded: `echo @ECHO_N@ "$$NOK@ECHO_C@"|wc -c`; \ echo Tests FAILED: `echo @ECHO_N@ "$$NFAIL@ECHO_C@"|wc -c` ; \ test "$$NFAIL" = "" flex-2.5.39/tests/test-c-cpp-nr/0002755000175000017500000000000012314621667016572 5ustar srivastasrivastaflex-2.5.39/tests/test-c-cpp-nr/scanner.l0000644000175000017500000000272312060131401020356 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* A template scanner file to build "scanner.c". The scanner is not really important -- we only care if it compiles under a c++ compiler, and runs. */ #include #include #include "config.h" /*#include "parser.h" */ %} %option 8bit outfile="scanner.cpp" prefix="test" %option nounput nomain noyywrap %option warn %% . { } %% int main(void); int main () { yyin = stdin; yyout = stdout; yylex(); yylex_destroy(); printf("TEST RETURNING OK.\n"); return 0; } flex-2.5.39/tests/test-c-cpp-nr/test.input0000644000175000017500000000006612060131401020606 0ustar srivastasrivasta0000 foo 1111 foo 0000 bar 0000 foo 1111 foo 0000 bar flex-2.5.39/tests/test-c-cpp-nr/Makefile.in0000644000175000017500000003114612314621560020632 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-c-cpp-nr DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.cpp $(testname)$(EXEEXT) $(OBJS) OUTPUT OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #YFLAGS = --defines --output=parser.c testname = test-c-cpp-nr all: all-am .SUFFIXES: .SUFFIXES: .cpp .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-c-cpp-nr/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-c-cpp-nr/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.cpp: $(srcdir)/scanner.l $(FLEX) $< $(testname)$(EXEEXT): $(OBJS) $(CXX) $(CXXFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .cpp.o: $(CXX) $(CXXFLAGS) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-c-cpp-nr/Makefile.am0000644000175000017500000000274112300734270020616 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.cpp $(testname)$(EXEEXT) $(OBJS) OUTPUT OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #YFLAGS = --defines --output=parser.c testname = test-c-cpp-nr scanner.cpp: $(srcdir)/scanner.l $(FLEX) $< $(testname)$(EXEEXT): $(OBJS) $(CXX) $(CXXFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .cpp.o: $(CXX) $(CXXFLAGS) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $< flex-2.5.39/tests/test-mem-r/0002755000175000017500000000000012314621666016167 5ustar srivastasrivastaflex-2.5.39/tests/test-mem-r/scanner.l0000644000175000017500000001116312060131401017752 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* A template scanner file to build "scanner.c". * The whole idea is to cause memory realloc by * 1. pushing a lot on the condition stack, and * 2. eating input greater than YY_BUF_SIZE */ #include #include #include "config.h" /* Insanely small read buffer. This pretty much guarantees at least one realloc. */ #ifdef YY_BUF_SIZE #undef YY_BUF_SIZE #endif #define YY_BUF_SIZE 8 %} %option 8bit outfile="scanner.c" prefix="test" %option nounput nomain noyywrap %option warn stack nodefault reentrant %option noyyalloc noyyrealloc noyyfree %x parens %% { "(" { printf("yy_push_state(parens)\n"); yy_push_state(parens,yyscanner); } len=[0-9]+ { printf("About read token where %s\n",yytext); } 0+ { } .|\n { } } { "(" { printf("yy_push_state(parens)\n"); yy_push_state(parens,yyscanner); } ")" { printf("yy_pop_state()\n");yy_pop_state(yyscanner);} [^()\n]+ { } .|\n { } } %% /* total memory allocated */ static size_t total_mem=0; /* track the amount of memory for ptr. */ struct memsz { void* p; size_t sz; }; static struct memsz * ptrs=0; /* Array of pairs. */ static int nptrs=0; /* Number of pairs in array. */ static int arrsz=0; /* Capacity of array. */ static void dump_mem(FILE* fp){ int i; fprintf(fp,"\tptrs[%d] = {", nptrs); for (i=0; i < arrsz; i++) fprintf(fp," {%#lx,%ld},", (long)ptrs[i].p, (long)ptrs[i].sz); fprintf(fp,"}\n"); } void * yyalloc(yy_size_t n , void* yyscanner) { void * p; int i; total_mem += n; p = (void*)malloc(n); if( nptrs >= arrsz){ /* increase array size by 1 */ arrsz++; ptrs = (struct memsz*)realloc( ptrs, arrsz * sizeof(struct memsz)); ptrs[nptrs].p = 0; ptrs[nptrs].sz = 0; } /* find a null slot */ for(i=0; i < arrsz ; i++) if (ptrs[i].p == 0) { ptrs[i].p = p; ptrs[i].sz = n; } nptrs++; printf("yyflex_alloc(%8ld) total=%8ld return=%#10lx\n",(long)n,(long)total_mem,(long)p); dump_mem(stdout); return p; } void * yyrealloc(void* p, yy_size_t n , void* yyscanner) { int i; for (i=0; i < arrsz; i++) if ( ptrs[i].p == p){ total_mem -= ptrs[i].sz; total_mem += n; ptrs[i].p = (void*)realloc(p,n); ptrs[i].sz = n; printf("yyflex_realloc(%#10lx,%8ld) total=%8ld return=%8lx\n", (long)p,(long)n,(long)total_mem,(long)ptrs[i].p); dump_mem(stdout); return ptrs[i].p; } fprintf(stderr,"ERROR: yyflex_realloc could not locate pointer %#lx.\n",(long)p); dump_mem(stdout); exit(1); } void yyfree(void* p , void* yyscanner) { int i; for (i=0; i < arrsz; i++) if ( ptrs[i].p == p){ total_mem -= ptrs[i].sz; free(p); ptrs[i].p = 0; ptrs[i].sz = 0; nptrs--; printf("yyflex_free(%#10lx) total=%8ld\n",(long)p,(long)total_mem); dump_mem(stdout); return; } fprintf(stderr,"ERROR: yyflex_free could not locate pointer %#lx.\n",(long)p); dump_mem(stdout); exit(1); } int main(void); int main () { yyscan_t scanner; arrsz = 1; ptrs = (struct memsz*)calloc(1,sizeof(struct memsz)); nptrs = 0; yylex_init(&scanner); yyset_in(stdin,scanner); yyset_out(stdout,scanner); yylex(scanner); yylex_destroy(scanner); free(ptrs); if ( nptrs > 0 || total_mem > 0){ fprintf(stderr,"Oops. Looks like a memory leak: nptrs=%d, unfreed memory=%ld\n",nptrs,(long)total_mem); exit(1); } printf("TEST RETURNING OK.\n"); return 0; } flex-2.5.39/tests/test-mem-r/test.input0000644000175000017500000000525012060131401020204 0ustar srivastasrivastaFirst we push a lot on the stack by nesting parenthesis: (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( ((((((((((((((((((((((((((((((((((((((((((( (should be 200 states pushed here) )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) ))))))))))))))))))))))))))))))))))))))))))) Now we match progressively bigger tokens to increase the read buffer: len=1 0 len=2 00 len=4 0000 len=8 00000000 len=16 0000000000000000 len=32 00000000000000000000000000000000 len=64 0000000000000000000000000000000000000000000000000000000000000000 len=128 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 len=256 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 len=512 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 len=1024 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 flex-2.5.39/tests/test-mem-r/Makefile.in0000644000175000017500000003107212314621561020227 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-mem-r DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c scanner.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a testname = test-mem-r all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-mem-r/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-mem-r/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-mem-r/Makefile.am0000644000175000017500000000270012300734270020207 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c scanner.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a testname = test-mem-r scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-table-opts/0002755000175000017500000000000012314621667017225 5ustar srivastasrivastaflex-2.5.39/tests/test-table-opts/scanner.l0000644000175000017500000000413712060131411021013 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* A template scanner file to build "scanner.c". */ #include #include #include "config.h" %} %option 8bit %option nounput nomain noyywrap %option warn yylineno %% foo|bar ; [[:digit:]]+ ; [[:blank:]]+ ; .|\n ; %% int main ( int argc, char** argv ) { FILE* fp = NULL; void *yyscanner=0; M4_YY_DECL_GUTS_VAR(); #ifdef TEST_IS_REENTRANT yylex_init(&yyscanner); #endif #ifdef TEST_HAS_TABLES_EXTERNAL if((fp = fopen(argv[1],"r"))== NULL) YY_FATAL_ERROR("could not open tables file for reading"); if(yytables_fload(fp M4_YY_CALL_LAST_ARG) < 0) YY_FATAL_ERROR("yytables_fload returned < 0"); if(M4_YY_TABLES_VERIFY) exit(0); #endif if(argc > 2){ if((fp = fopen(argv[2],"r"))== NULL) YY_FATAL_ERROR("could not open input file for reading"); yyin = fp; } while(yylex(M4_YY_CALL_ONLY_ARG) != 0) ; #ifdef TEST_HAS_TABLES_EXTERNAL yytables_destroy(M4_YY_CALL_ONLY_ARG); #endif yylex_destroy(M4_YY_CALL_ONLY_ARG); if(argc < 0) /* silence the compiler */ yyscanner = (void*)fp; return 0; } flex-2.5.39/tests/test-table-opts/test.input0000644000175000017500000000010412060131401021232 0ustar srivastasrivasta0000 foo 1111 foo 0000 bar foobar 0000 foo 1111 foo 0000 bar foobar flex-2.5.39/tests/test-table-opts/Makefile.in0000644000175000017500000004032612314621561021266 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. # ------------------------------------------------ # This test is really a set of tests, one for # each compression flag. -Ca, -Cem, etc.. # 'test-opt' builds non-serialized scanners with various table options. # 'test-ver' verifies that the serialized tables match the in-code tables. # 'test-ser' deserializes the tables at runtime. # 'test-mul' checks that we can store multiple tables in a single file. # ------------------------------------------------ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-table-opts DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex testname := test-table-opts allopts := -Ca -Ce -Cf -CF -Cm -Cem -Cae -Caef -CaeF -Cam -Caem # the test names themselves opttests := $(foreach opt,$(allopts), test-opt-nr$(opt) test-opt-r$(opt)) sertests := $(foreach opt,$(allopts), test-ser-nr$(opt) test-ser-r$(opt)) vertests := $(foreach opt,$(allopts), test-ver-nr$(opt) test-ver-r$(opt)) alltests := $(opttests) $(vertests) $(sertests) test-mul # the executables to build optexe := $(addsuffix $(EXEEXT),$(opttests)) verexe := $(addsuffix $(EXEEXT),$(vertests)) serexe := $(addsuffix $(EXEEXT),$(sertests)) allexe := $(optexe) $(verexe) $(serexe) # the .c files optsrc := $(addsuffix .c,$(opttests)) versrc := $(addsuffix .c,$(vertests)) sersrc := $(addsuffix .c,$(sertests)) allsrc := $(optsrc) $(versrc) $(sersrc) # the .o files optobj := $(addsuffix .o,$(opttests)) verobj := $(addsuffix .o,$(vertests)) serobj := $(addsuffix .o,$(sertests)) allobj := $(optobj) $(verobj) $(serobj) # the .tables files sertables := $(addsuffix .tables,$(sertests)) alltables := $(addsuffix .tables,$(alltests)) EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c OUTPUT $(allobj) $(allsrc) $(alltables) \ all-ser.tables $(allexe) AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-table-opts/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-table-opts/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am test: test-opt test-ser test-ver test-mul test-opt-r%.c: $(srcdir)/scanner.l $(FLEX) -L -P $(subst -,_,$(basename $(@F))) --reentrant $* -o $@ $< test-opt-nr%.c: $(srcdir)/scanner.l $(FLEX) -L -P $(subst -,_,$(basename $(@F))) $* -o $@ $< test-ser-r%.c: $(srcdir)/scanner.l $(FLEX) -L -P $(subst -,_,$(basename $(@F))) -R --tables-file="test-ser-r$*.tables" $* -o $@ $< test-ser-nr%.c: $(srcdir)/scanner.l $(FLEX) -L -P $(subst -,_,$(basename $(@F))) --tables-file="test-ser-nr$*.tables" $* -o $@ $< test-ver-r%.c: $(srcdir)/scanner.l $(FLEX) -L -P $(subst -,_,$(basename $(@F))) -R --tables-file="test-ver-r$*.tables" --tables-verify $* -o $@ $< test-ver-nr%.c: $(srcdir)/scanner.l $(FLEX) -L -P $(subst -,_,$(basename $(@F))) --tables-file="test-ver-nr$*.tables" --tables-verify $* -o $@ $< test-opt%$(EXEEXT): test-opt%.o $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $< $(LOADLIBES) test-ser%$(EXEEXT): test-ser%.o $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $< $(LOADLIBES) test-ver%$(EXEEXT): test-ver%.o $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $< $(LOADLIBES) test-opt: $(optexe) for t in $(optexe) ; do \ ./$$t `basename $$t $(EXEEXT)`.tables < $(srcdir)/test.input \ || { echo $t FAILED ; exit 1 ; } ; \ done test-ver: $(verexe) for t in $(verexe) ; do \ ./$$t `basename $$t $(EXEEXT)`.tables < $(srcdir)/test.input \ || { echo $t FAILED ; exit 1 ; } ; \ done test-ser: $(serexe) for t in $(serexe) ; do \ ./$$t `basename $$t $(EXEEXT)`.tables < $(srcdir)/test.input \ || { echo $t FAILED ; exit 1 ; } ; \ done test-mul: $(serexe) $(RM) all-ser.tables cat $(sertables) > all-ser.tables for t in $(serexe) ; do \ ./$$t all-ser.tables < $(srcdir)/test.input || { echo $$t FAILED; exit 1; } ; \ done test-opt-nr-%.o: test-opt-nr-%.c ; $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< test-ser-nr-%.o: test-ser-nr-%.c ; $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) -DTEST_HAS_TABLES_EXTERNAL $(CFLAGS) $< test-ver-nr-%.o: test-ver-nr-%.c ; $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) -DTEST_HAS_TABLES_EXTERNAL $(CFLAGS) $< test-opt-r-%.o: test-opt-r-%.c ; $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) -DTEST_IS_REENTRANT $(CFLAGS) $< test-ser-r-%.o: test-ser-r-%.c ; $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) -DTEST_HAS_TABLES_EXTERNAL -DTEST_IS_REENTRANT $(CFLAGS) $< test-ver-r-%.o: test-ver-r-%.c ; $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) -DTEST_HAS_TABLES_EXTERNAL -DTEST_IS_REENTRANT $(CFLAGS) $< .PHONY: test test-opt test-ser test-ver test-mul .SECONDARY: $(allobj) $(allsrc) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-table-opts/Makefile.am0000644000175000017500000001214412300734270021247 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. # ------------------------------------------------ # This test is really a set of tests, one for # each compression flag. -Ca, -Cem, etc.. # 'test-opt' builds non-serialized scanners with various table options. # 'test-ver' verifies that the serialized tables match the in-code tables. # 'test-ser' deserializes the tables at runtime. # 'test-mul' checks that we can store multiple tables in a single file. # ------------------------------------------------ FLEX = $(top_builddir)/flex testname := test-table-opts allopts := -Ca -Ce -Cf -CF -Cm -Cem -Cae -Caef -CaeF -Cam -Caem # the test names themselves opttests := $(foreach opt,$(allopts), test-opt-nr$(opt) test-opt-r$(opt)) sertests := $(foreach opt,$(allopts), test-ser-nr$(opt) test-ser-r$(opt)) vertests := $(foreach opt,$(allopts), test-ver-nr$(opt) test-ver-r$(opt)) alltests := $(opttests) $(vertests) $(sertests) test-mul # the executables to build optexe := $(addsuffix $(EXEEXT),$(opttests)) verexe := $(addsuffix $(EXEEXT),$(vertests)) serexe := $(addsuffix $(EXEEXT),$(sertests)) allexe := $(optexe) $(verexe) $(serexe) # the .c files optsrc := $(addsuffix .c,$(opttests)) versrc := $(addsuffix .c,$(vertests)) sersrc := $(addsuffix .c,$(sertests)) allsrc := $(optsrc) $(versrc) $(sersrc) # the .o files optobj := $(addsuffix .o,$(opttests)) verobj := $(addsuffix .o,$(vertests)) serobj := $(addsuffix .o,$(sertests)) allobj := $(optobj) $(verobj) $(serobj) # the .tables files sertables := $(addsuffix .tables,$(sertests)) alltables := $(addsuffix .tables,$(alltests)) EXTRA_DIST = scanner.l test.input CLEANFILES = scanner.c OUTPUT $(allobj) $(allsrc) $(alltables) \ all-ser.tables $(allexe) AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) test: test-opt test-ser test-ver test-mul test-opt-r%.c: $(srcdir)/scanner.l $(FLEX) -L -P $(subst -,_,$(basename $(@F))) --reentrant $* -o $@ $< test-opt-nr%.c: $(srcdir)/scanner.l $(FLEX) -L -P $(subst -,_,$(basename $(@F))) $* -o $@ $< test-ser-r%.c: $(srcdir)/scanner.l $(FLEX) -L -P $(subst -,_,$(basename $(@F))) -R --tables-file="test-ser-r$*.tables" $* -o $@ $< test-ser-nr%.c: $(srcdir)/scanner.l $(FLEX) -L -P $(subst -,_,$(basename $(@F))) --tables-file="test-ser-nr$*.tables" $* -o $@ $< test-ver-r%.c: $(srcdir)/scanner.l $(FLEX) -L -P $(subst -,_,$(basename $(@F))) -R --tables-file="test-ver-r$*.tables" --tables-verify $* -o $@ $< test-ver-nr%.c: $(srcdir)/scanner.l $(FLEX) -L -P $(subst -,_,$(basename $(@F))) --tables-file="test-ver-nr$*.tables" --tables-verify $* -o $@ $< test-opt%$(EXEEXT): test-opt%.o $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $< $(LOADLIBES) test-ser%$(EXEEXT): test-ser%.o $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $< $(LOADLIBES) test-ver%$(EXEEXT): test-ver%.o $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $< $(LOADLIBES) test-opt: $(optexe) for t in $(optexe) ; do \ ./$$t `basename $$t $(EXEEXT)`.tables < $(srcdir)/test.input \ || { echo $t FAILED ; exit 1 ; } ; \ done test-ver: $(verexe) for t in $(verexe) ; do \ ./$$t `basename $$t $(EXEEXT)`.tables < $(srcdir)/test.input \ || { echo $t FAILED ; exit 1 ; } ; \ done test-ser: $(serexe) for t in $(serexe) ; do \ ./$$t `basename $$t $(EXEEXT)`.tables < $(srcdir)/test.input \ || { echo $t FAILED ; exit 1 ; } ; \ done test-mul: $(serexe) $(RM) all-ser.tables cat $(sertables) > all-ser.tables for t in $(serexe) ; do \ ./$$t all-ser.tables < $(srcdir)/test.input || { echo $$t FAILED; exit 1; } ; \ done test-opt-nr-%.o: test-opt-nr-%.c ; $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< test-ser-nr-%.o: test-ser-nr-%.c ; $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) -DTEST_HAS_TABLES_EXTERNAL $(CFLAGS) $< test-ver-nr-%.o: test-ver-nr-%.c ; $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) -DTEST_HAS_TABLES_EXTERNAL $(CFLAGS) $< test-opt-r-%.o: test-opt-r-%.c ; $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) -DTEST_IS_REENTRANT $(CFLAGS) $< test-ser-r-%.o: test-ser-r-%.c ; $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) -DTEST_HAS_TABLES_EXTERNAL -DTEST_IS_REENTRANT $(CFLAGS) $< test-ver-r-%.o: test-ver-r-%.c ; $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) -DTEST_HAS_TABLES_EXTERNAL -DTEST_IS_REENTRANT $(CFLAGS) $< .PHONY: test test-opt test-ser test-ver test-mul .SECONDARY: $(allobj) $(allsrc) flex-2.5.39/tests/test-posixly-correct/0002755000175000017500000000000012314621666020320 5ustar srivastasrivastaflex-2.5.39/tests/test-posixly-correct/scanner.l0000644000175000017500000000376012060131401022107 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* The goal of this test is to verify that we are getting the counter-intuitive * posix behavior of the repeat operator `{}'. * * ab{3} - In traditional flex, this matches "abbb". * In posix, this matches "ababab". */ #include #include #include "config.h" #define NUM_TESTS 1 char * tests[NUM_TESTS] = { "ababab"}; int main(void); int tests_ok[NUM_TESTS] = { 0 }; %} %option 8bit outfile="scanner.c" prefix="test" %option nounput nomain noyywrap %option warn %% ab{3} tests_ok[0] = 1; return 0; .|\n return 0; %% int main () { YY_BUFFER_STATE state; int i; yyin = stdin; yyout = stdout; /* Run the tests */ for (i=0; i < NUM_TESTS; i++){ printf("Testing: yy_scan_string(%s): ", tests[i]); state = yy_scan_string(tests[i]); yylex(); yy_delete_buffer(state); printf("... %s\n", tests_ok[i] ? "OK" : "FAILED"); } for (i=0; i < NUM_TESTS; i++) if (!tests_ok[i]) exit(1); printf("TEST RETURNING OK.\n"); return 0; } flex-2.5.39/tests/test-posixly-correct/Makefile.in0000644000175000017500000003116212314621561022360 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-posixly-correct DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l CLEANFILES = scanner.c scanner.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #LFLAGS = --header="scanner.h" testname = test-posixly-correct all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-posixly-correct/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-posixly-correct/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l POSIXLY_CORRECT=1 $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-posixly-correct/Makefile.am0000644000175000017500000000273212300734270022345 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l CLEANFILES = scanner.c scanner.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #LFLAGS = --header="scanner.h" testname = test-posixly-correct scanner.c: $(srcdir)/scanner.l POSIXLY_CORRECT=1 $(FLEX) $(LFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-bison-yylloc/0002755000175000017500000000000012314621666017575 5ustar srivastasrivastaflex-2.5.39/tests/test-bison-yylloc/scanner.l0000644000175000017500000000345712060131401021367 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* The scanner expects to link to bison yylval . */ #include #include #include "parser.h" #include "config.h" static char* STRDUP(char* s1); #define YY_EXTRA_TYPE int %} %option 8bit outfile="scanner.c" prefix="test" %option reentrant bison-bridge bison-locations yylineno %option nomain nounput noyy_top_state noyywrap nodefault warn %option prefix="test" header="scanner.h" %% if ( !yyextra) yyextra = 1; ^[[:digit:]]+ { yylval->lineno = yyextra++; yylloc->first_line = (int)strtol(yytext,NULL,10); return LINENO; } ":" { return COLON; } " " { return SPACE; } "=" { return EQUAL; } [[:alnum:]_]+ { yylval->str = STRDUP(yytext); return IDENT;} \r|\n { } . { yyterminate();} %% static char* STRDUP(char* s1) { char* s2 = (char*)malloc(strlen(s1)+1); sprintf(s2,"%s",s1); return s2; } flex-2.5.39/tests/test-bison-yylloc/main.c0000644000175000017500000000237312060131411020646 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ #include "parser.h" #include "scanner.h" int main ( int argc, char** argv ) { yyscan_t scanner; /*yydebug =1;*/ testlex_init ( &scanner ); testset_in(stdin,scanner); testparse ( scanner ); testlex_destroy ( scanner ); return 0; } /* vim:set tabstop=8 softtabstop=4 shiftwidth=4: */ flex-2.5.39/tests/test-bison-yylloc/parser.y0000644000175000017500000000420312060131411021236 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %parse-param { void* scanner } /* How to compile: bison --defines --output-file="parser.c" --name-prefix="test" parser.y */ %{ #include #include #include #include "config.h" #define YYERROR_VERBOSE 1 #define YYLEX_PARAM scanner extern int testget_lineno(void*); /* A dummy function. A check against seg-faults in yylval->str. */ int process_text(char* s) { int total =0; while(*s) { total += (int) *s; ++s; } return total; } %} %pure_parser %union { int lineno; char * str; } %token IDENT %token LINENO %token EQUAL "=" %token COLON ":" %token SPACE " " %% file: line | file line ; line: LINENO COLON SPACE IDENT EQUAL IDENT { process_text($4); process_text($6); /* Check lineno. */ if( $1 != @1.first_line || $1 != testget_lineno(scanner)) { yyerror("Parse failed: Line numbers do not match."); YYABORT; } /* Recreate the line to stdout. */ printf ( "%04d: %s=%s\n", @1.first_line, $4, $6); } ; %% int yyerror(void* scanner, char* msg) { fprintf(stderr,"%s\n",msg); return 0; } flex-2.5.39/tests/test-bison-yylloc/test.input0000644000175000017500000000014012060131401021603 0ustar srivastasrivasta0001: FIRSTNAME=firstname 0002: MIDDLENAME=middle 0003: LASTNAME=lastname 0004: ADDRESS=address flex-2.5.39/tests/test-bison-yylloc/Makefile.in0000644000175000017500000003150112314621560021631 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-bison-yylloc DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ #LDFLAGS = $(top_srcdir)/libfl.a YFLAGS = --defines --output=parser.c --name-prefix="test" abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l parser.y test.input main.c CLEANFILES = scanner.c scanner.h parser.c parser.h $(testname)$(EXEEXT) $(OBJS) OUTPUT OBJS = scanner.o parser.o main.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) -I$(builddir) testname = test-bison-yylloc all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-bison-yylloc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-bison-yylloc/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $< scanner.h: scanner.c scanner.o: parser.h parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< parser.h: parser.c main.o: scanner.h parser.h $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-bison-yylloc/Makefile.am0000644000175000017500000000333312300734270021620 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex builddir = @builddir@ EXTRA_DIST = scanner.l parser.y test.input main.c CLEANFILES = scanner.c scanner.h parser.c parser.h $(testname)$(EXEEXT) $(OBJS) OUTPUT OBJS = scanner.o parser.o main.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) -I$(builddir) #LDFLAGS = $(top_srcdir)/libfl.a YFLAGS = --defines --output=parser.c --name-prefix="test" testname = test-bison-yylloc scanner.c: $(srcdir)/scanner.l $(FLEX) $< scanner.h: scanner.c scanner.o: parser.h parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< parser.h: parser.c main.o: scanner.h parser.h $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-linedir-r/0002755000175000017500000000000012314621667017040 5ustar srivastasrivastaflex-2.5.39/tests/test-linedir-r/scanner.l0000644000175000017500000000242112060131401020617 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* Build "scanner.c". The scanner is not important. This test is really about getting the line directives correct. */ #include #include #include "config.h" %} %option reentrant %option 8bit outfile="scanner.c" prefix="test" %option nounput nomain noyywrap %option warn %% .|\n { } %% flex-2.5.39/tests/test-linedir-r/check-lines.awk0000644000175000017500000000016712060131401021707 0ustar srivastasrivasta{ if( /#line/ && $1 != ($3 - 1)) { printf "Line directive mismatch at line %d: %s\n", NR, $0; exit 1; } } flex-2.5.39/tests/test-linedir-r/main.c0000644000175000017500000000322312060131401020102 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ #include "scanner.h" int main ( int argc, char** argv ) { yyscan_t scanner; FILE *fp; char * extra = "EXTRA"; testlex_init(&scanner); testset_in(stdin,scanner); testset_out(stdout,scanner); testset_extra(extra,scanner); fp = testget_in(scanner); fp = testget_out(scanner); while(testlex(scanner)) { char * text; int line; line = testget_lineno(scanner); text = testget_text(scanner); if( (char*)testget_extra(scanner) != extra) break; if ( !text || line < 0) continue; } testlex_destroy(scanner); return 0; } /* vim:set tabstop=8 softtabstop=4 shiftwidth=4: */ flex-2.5.39/tests/test-linedir-r/test.input0000644000175000017500000000007512060131401021054 0ustar srivastasrivastaAny input is ok for this scanner. We only care if it links. flex-2.5.39/tests/test-linedir-r/Makefile.in0000644000175000017500000003170712314621561021104 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-linedir-r DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test.input main.c check-lines.awk CLEANFILES = scanner.c scanner.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o main.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) -I$(builddir) #LDFLAGS = $(top_srcdir)/libfl.a LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = test-linedir-r all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-linedir-r/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-linedir-r/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input cat -n scanner.c | grep '#line' | grep scanner.c | $(AWK) -f $(srcdir)/check-lines.awk cat -n scanner.h | grep '#line' | grep scanner.h | $(AWK) -f $(srcdir)/check-lines.awk .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< scanner.h: scanner.c main.o: scanner.h # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-linedir-r/Makefile.am0000644000175000017500000000353012300734270021061 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex builddir = @builddir@ EXTRA_DIST = scanner.l test.input main.c check-lines.awk CLEANFILES = scanner.c scanner.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o main.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) -I$(builddir) #LDFLAGS = $(top_srcdir)/libfl.a LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = test-linedir-r scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input cat -n scanner.c | grep '#line' | grep scanner.c | $(AWK) -f $(srcdir)/check-lines.awk cat -n scanner.h | grep '#line' | grep scanner.h | $(AWK) -f $(srcdir)/check-lines.awk .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< scanner.h: scanner.c main.o: scanner.h flex-2.5.39/tests/TEMPLATE/0002755000175000017500000000000012314621667015411 5ustar srivastasrivastaflex-2.5.39/tests/TEMPLATE/scanner.l0000644000175000017500000000252212060131401017172 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* A template scanner file to build "scanner.c". */ #include #include #include "config.h" /*#include "parser.h" */ %} %option 8bit outfile="scanner.c" prefix="test" %option nounput nomain noyywrap %option warn %% . { } %% int main(void); int main () { yyin = stdin; yyout = stdout; yylex(); printf("TEST RETURNING OK.\n"); return 0; } flex-2.5.39/tests/TEMPLATE/parser.y0000644000175000017500000000306412060131401017054 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ /* A dummy template parser to build "parser.c" and "parser.h". How to compile: bison --defines --output-file="parser.c" --name-prefix="test" parser.y */ %{ #include #include #include "config.h" #define YYERROR_VERBOSE 1 /* For debugging. */ /* #define YYPARSE_PARAM scanner */ /* For pure bison parser. */ /* #define YYLEX_PARAM scanner */ /* For reentrant flex. */ int yyerror(char* msg); extern int testlex(); %} %% rule: ; %% int yyerror(char* msg) { fprintf(stderr,"%s\n",msg); return 0; } /* int main ( int argc, char** argv ) { yyparse (); return 0; } */ flex-2.5.39/tests/TEMPLATE/test.input0000644000175000017500000000006612060131401017425 0ustar srivastasrivasta0000 foo 1111 foo 0000 bar 0000 foo 1111 foo 0000 bar flex-2.5.39/tests/TEMPLATE/Makefile.in0000644000175000017500000003134012314621560017445 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/TEMPLATE DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l parser.y test.input CLEANFILES = scanner.c scanner.h parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(builddir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = TEMPLATE all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/TEMPLATE/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/TEMPLATE/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/TEMPLATE/Makefile.am0000644000175000017500000000320212300734270017426 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex builddir = @builddir@ EXTRA_DIST = scanner.l parser.y test.input CLEANFILES = scanner.c scanner.h parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(builddir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = TEMPLATE scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname)$(EXEEXT) < $(srcdir)/test.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-include-by-reentrant/0002755000175000017500000000000012314621667021206 5ustar srivastasrivastaflex-2.5.39/tests/test-include-by-reentrant/scanner.l0000644000175000017500000000473012060131401022772 0ustar srivastasrivasta/* * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ %{ /* A scanner file to build "scanner.c". Input language is any text. "#include " causes a new scanner to be created. */ #include #include #include "config.h" %} %option 8bit outfile="scanner.c" prefix="test" %option nounput nomain noyywrap %option reentrant %option warn %x GET_FILENAME %% { ^"#include"[[:blank:]]+"<" { BEGIN(GET_FILENAME); } .|\n { ECHO; } } { [[:alnum:]_.-]+> { /* recurse */ yyscan_t scanner; FILE * fp; yytext[yyleng-1]='\0'; if((fp=fopen(yytext,"r"))==NULL) { fprintf(stderr,"*** Error: Could not open include file \"%s\".\n", yytext); yyterminate(); } yylex_init(&scanner); yyset_in( fp, scanner); yyset_out( stdout, scanner); yylex(scanner); yylex_destroy(scanner); BEGIN(0); } .|\n { fprintf(stderr,"Invalid input \"%s\".\n", yytext); yyterminate(); } } <> { fclose(yyin); yyterminate();} %% int main (int argc, char** argv); int main ( argc, argv ) int argc; char ** argv; { FILE * fp; yyscan_t scanner; if( argc != 2 ) { fprintf(stderr,"*** Error: Must specifiy one filename.\n"); exit(-1); } if((fp=fopen(argv[1],"r"))==NULL) { fprintf(stderr,"*** Error: fopen(%s) failed.\n",argv[1]); exit(-1); } yylex_init(&scanner); yyset_in( fp, scanner); yyset_out( stdout, scanner); yylex(scanner); yylex_destroy(scanner); printf("TEST RETURNING OK.\n"); return 0; } flex-2.5.39/tests/test-include-by-reentrant/test-2.input0000644000175000017500000000011412060131401023353 0ustar srivastasrivastaBeginning of "test-2.input". #include End of "test-2.input". flex-2.5.39/tests/test-include-by-reentrant/test-1.input0000644000175000017500000000011412060131401023352 0ustar srivastasrivastaBeginning of "test-1.input". #include End of "test-1.input". flex-2.5.39/tests/test-include-by-reentrant/Makefile.in0000644000175000017500000003144012314621561023244 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-include-by-reentrant DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test-1.input test-2.input test-3.input CLEANFILES = scanner.c scanner.h parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = test-include-by-reentrant all: all-am .SUFFIXES: .SUFFIXES: .c .o $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-include-by-reentrant/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-include-by-reentrant/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname) $(srcdir)/test-1.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-include-by-reentrant/Makefile.am0000644000175000017500000000317112300734270023230 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex EXTRA_DIST = scanner.l test-1.input test-2.input test-3.input CLEANFILES = scanner.c scanner.h parser.c parser.h $(testname)$(EXEEXT) OUTPUT $(OBJS) OBJS = scanner.o # parser.o AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_builddir) #LDFLAGS = $(top_srcdir)/libfl.a #LFLAGS = --header="scanner.h" #YFLAGS = --defines --output=parser.c testname = test-include-by-reentrant scanner.c: $(srcdir)/scanner.l $(FLEX) $(LFLAGS) $< parser.c: $(srcdir)/parser.y $(BISON) $(YFLAGS) $< $(testname)$(EXEEXT): $(OBJS) $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LOADLIBES) test: $(testname)$(EXEEXT) ./$(testname) $(srcdir)/test-1.input .c.o: $(CC) -c -o $@ $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) $< flex-2.5.39/tests/test-include-by-reentrant/test-3.input0000644000175000017500000000006412060131401023360 0ustar srivastasrivastaBeginning of "test-3.input". End of "test-3.input". flex-2.5.39/tests/README0000644000175000017500000000611412060131401015032 0ustar srivastasrivastaThis file describes the flex test suite. * WHO SHOULD USE THE TEST SUITE? The test suite is intended to be used by flex developers, i.e., anyone hacking the flex distribution. If you are simply installing flex, then you can ignore this directory and its contents. * STRUCTURE OF THE TEST SUITE The test suite consists of several directories, each containing a scanner known to work with the most recent version of flex. In general, after you modify your copy of the flex distribution, you should re-run the test suite. Some of the tests may require certain tools to be available (e.g., bison, diff). If any test returns an error or generates an error message, then your modifications *may* have broken a feature of flex. At a minimum, you'll want to investigate the failure and determine if it's truly significant. * HOW TO RUN THE TEST SUITE To build and execute all tests from the top level of the flex source tree: $ make check To build and execute a single test: $ cd tests/ # from the top level of the flex tree. $ cd test-pthread-nr # for example $ make test * HOW TO ADD A NEW TEST TO THE TEST SUITE **- RUN the script `create-test` found in this directory with a single argument of the name of the test you want to create. If it fails with a message about a non-existent file `config.status', then run the configure script in the top-level directory and everything will be fine. If it fails to work for you other than this, report it as a bug. ** Modify the files in the newly created directory so that they test whatever feature of flex you are interested in. ** On success, your test should return zero. ** On error, your test should return 1 (one) and print a message to stderr, which will have been redirected to the file named, "OUTPUT", in your test's directory. ** If your test is skipped (e.g., because bison was not found), then the test should return 2 (two). See "test-bison-nr/Makefile.am" for an example. ** You must modify the last few lines of the top-level configure.in by adding the Makefile for your test directory. (This step is done automatically by `create-test`.) ** You must add the name of your test to the SUBDIRS variable in tests/Makefile.am. (This is also done automatically for you by `create-test'.) ** Add a description of your new test to the end of the file `descriptions'. Remember to keep the description as brief as possible, preferably to one line. ** You will have to run the autogen.sh script in the top-level directory as well as run the configure script in that directory. (Note that running config.status may prove easier or quicker.) ** The easiest way for you to submit your new test to the flex maintainers is by generating a patch. The flex maintainers only need to have the Makefile.am, the flex input file, the test input file (if there is one) and any other files necessary to compile the test. You do not need to submit files generated by autoconf, automake, configure etc. It would be helpful to include the file .cvsignore which you will find in your test directory if you used the `create-test' script. flex-2.5.39/tests/test-concatenated-options/0002755000175000017500000000000012314621666021273 5ustar srivastasrivastaflex-2.5.39/tests/test-concatenated-options/Makefile.in0000644000175000017500000003072112314621561023333 0ustar srivastasrivasta# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests/test-concatenated-options DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HELP2MAN = @HELP2MAN@ INDENT = @INDENT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ M4 = @M4@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_VERSION_INFO = @SHARED_VERSION_INFO@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ YACC = @YACC@ YFLAGS = @YFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FLEX = $(top_builddir)/flex$(EXEEXT) CLEANFILES = OUTPUT all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test-concatenated-options/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/test-concatenated-options/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am # The test below just wants to know if flex can process multiple # concatenated options. The -c and -n options both do nothing, so we # group them together to see if flex will still function. We write the # output to /dev/null since we don't really care what flex produces, # just that it runs successfully. test: echo %% | $(FLEX) -cn -o /dev/null # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/tests/test-concatenated-options/Makefile.am0000644000175000017500000000247012060131401023305 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. FLEX = $(top_builddir)/flex$(EXEEXT) CLEANFILES = OUTPUT # The test below just wants to know if flex can process multiple # concatenated options. The -c and -n options both do nothing, so we # group them together to see if flex will still function. We write the # output to /dev/null since we don't really care what flex produces, # just that it runs successfully. test: echo %% | $(FLEX) -cn -o /dev/null flex-2.5.39/config.rpath0000755000175000017500000004401212314075472015340 0ustar srivastasrivasta#! /bin/sh # Output a system dependent set of variables, describing how to set the # run time search path of shared libraries in an executable. # # Copyright 1996-2010 Free Software Foundation, Inc. # Taken from GNU libtool, 2001 # Originally by Gordon Matzigkeit , 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # The first argument passed to this file is the canonical host specification, # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld # should be set by the caller. # # The set of defined variables is at the end of this script. # Known limitations: # - On IRIX 6.5 with CC="cc", the run time search patch must not be longer # than 256 bytes, otherwise the compiler driver will dump core. The only # known workaround is to choose shorter directory names for the build # directory and/or the installation directory. # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a shrext=.so host="$1" host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` # Code taken from libtool.m4's _LT_CC_BASENAME. for cc_temp in $CC""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` # Code taken from libtool.m4's _LT_COMPILER_PIC. wl= if test "$GCC" = yes; then wl='-Wl,' else case "$host_os" in aix*) wl='-Wl,' ;; darwin*) case $cc_basename in xlc*) wl='-Wl,' ;; esac ;; mingw* | cygwin* | pw32* | os2* | cegcc*) ;; hpux9* | hpux10* | hpux11*) wl='-Wl,' ;; irix5* | irix6* | nonstopux*) wl='-Wl,' ;; newsos6) ;; linux* | k*bsd*-gnu) case $cc_basename in ecc*) wl='-Wl,' ;; icc* | ifort*) wl='-Wl,' ;; lf95*) wl='-Wl,' ;; pgcc | pgf77 | pgf90) wl='-Wl,' ;; ccc*) wl='-Wl,' ;; como) wl='-lopt=' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) wl='-Wl,' ;; esac ;; esac ;; osf3* | osf4* | osf5*) wl='-Wl,' ;; rdos*) ;; solaris*) wl='-Wl,' ;; sunos4*) wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3*) wl='-Wl,' ;; sysv4*MP*) ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) wl='-Wl,' ;; unicos*) wl='-Wl,' ;; uts4*) ;; esac fi # Code taken from libtool.m4's _LT_LINKER_SHLIBS. hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no case "$host_os" in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. # Unlike libtool, we use -rpath here, not --rpath, since the documented # option of GNU ld is called -rpath, not --rpath. hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' case "$host_os" in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no fi ;; amigaos*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we cannot use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then : else ld_shlibs=no fi ;; interix[3-9]*) hardcode_direct=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; gnu* | linux* | k*bsd*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; netbsd*) ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' else ld_shlibs=no fi ;; esac ;; sunos4*) hardcode_direct=yes ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then hardcode_libdir_flag_spec= fi else case "$host_os" in aix3*) # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac fi hardcode_direct=yes hardcode_libdir_separator=':' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac fi # Begin _LT_AC_SYS_LIBPATH_AIX. echo 'int main () { return 0; }' > conftest.c ${CC} ${LDFLAGS} conftest.c -o conftest aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` fi if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib" fi rm -f conftest.c conftest # End _LT_AC_SYS_LIBPATH_AIX. if test "$aix_use_runtimelinking" = yes; then hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' else hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" fi fi ;; amigaos*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; bsdi[45]*) ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' libext=lib ;; darwin* | rhapsody*) hardcode_direct=no if test "$GCC" = yes ; then : else case $cc_basename in xlc*) ;; *) ld_shlibs=no ;; esac fi ;; dgux*) hardcode_libdir_flag_spec='-L$libdir' ;; freebsd1*) ld_shlibs=no ;; freebsd2.2*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; freebsd2*) hardcode_direct=yes hardcode_minus_L=yes ;; freebsd* | dragonfly*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; hpux9*) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; hpux10*) if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no ;; *) hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; netbsd*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; newsos6) hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then hardcode_libdir_flag_spec='${wl}-rpath,$libdir' else case "$host_os" in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) hardcode_libdir_flag_spec='-R$libdir' ;; *) hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; osf3*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) if test "$GCC" = yes; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else # Both cc and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; solaris*) hardcode_libdir_flag_spec='-R$libdir' ;; sunos4*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes ;; sysv4) case $host_vendor in sni) hardcode_direct=yes # is this really true??? ;; siemens) hardcode_direct=no ;; motorola) hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac ;; sysv4.3*) ;; sysv4*MP*) if test -d /usr/nec; then ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) ;; sysv5* | sco3.2v5* | sco5v6*) hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator=':' ;; uts4*) hardcode_libdir_flag_spec='-L$libdir' ;; *) ld_shlibs=no ;; esac fi # Check dynamic linker characteristics # Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER. # Unlike libtool.m4, here we don't care about _all_ names of the library, but # only about the one the linker finds when passed -lNAME. This is the last # element of library_names_spec in libtool.m4, or possibly two of them if the # linker has special search rules. library_names_spec= # the last element of library_names_spec in libtool.m4 libname_spec='lib$name' case "$host_os" in aix3*) library_names_spec='$libname.a' ;; aix[4-9]*) library_names_spec='$libname$shrext' ;; amigaos*) library_names_spec='$libname.a' ;; beos*) library_names_spec='$libname$shrext' ;; bsdi[45]*) library_names_spec='$libname$shrext' ;; cygwin* | mingw* | pw32* | cegcc*) shrext=.dll library_names_spec='$libname.dll.a $libname.lib' ;; darwin* | rhapsody*) shrext=.dylib library_names_spec='$libname$shrext' ;; dgux*) library_names_spec='$libname$shrext' ;; freebsd1*) ;; freebsd* | dragonfly*) case "$host_os" in freebsd[123]*) library_names_spec='$libname$shrext$versuffix' ;; *) library_names_spec='$libname$shrext' ;; esac ;; gnu*) library_names_spec='$libname$shrext' ;; hpux9* | hpux10* | hpux11*) case $host_cpu in ia64*) shrext=.so ;; hppa*64*) shrext=.sl ;; *) shrext=.sl ;; esac library_names_spec='$libname$shrext' ;; interix[3-9]*) library_names_spec='$libname$shrext' ;; irix5* | irix6* | nonstopux*) library_names_spec='$libname$shrext' case "$host_os" in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; *) libsuff= shlibsuff= ;; esac ;; esac ;; linux*oldld* | linux*aout* | linux*coff*) ;; linux* | k*bsd*-gnu) library_names_spec='$libname$shrext' ;; knetbsd*-gnu) library_names_spec='$libname$shrext' ;; netbsd*) library_names_spec='$libname$shrext' ;; newsos6) library_names_spec='$libname$shrext' ;; nto-qnx*) library_names_spec='$libname$shrext' ;; openbsd*) library_names_spec='$libname$shrext$versuffix' ;; os2*) libname_spec='$name' shrext=.dll library_names_spec='$libname.a' ;; osf3* | osf4* | osf5*) library_names_spec='$libname$shrext' ;; rdos*) ;; solaris*) library_names_spec='$libname$shrext' ;; sunos4*) library_names_spec='$libname$shrext$versuffix' ;; sysv4 | sysv4.3*) library_names_spec='$libname$shrext' ;; sysv4*MP*) library_names_spec='$libname$shrext' ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) library_names_spec='$libname$shrext' ;; uts4*) library_names_spec='$libname$shrext' ;; esac sed_quote_subst='s/\(["`$\\]\)/\\\1/g' escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` shlibext=`echo "$shrext" | sed -e 's,^\.,,'` escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <filter_func = NULL; f->extra = NULL; f->next = NULL; f->argc = 0; if (chain != NULL) { /* append f to end of chain */ while (chain->next) chain = chain->next; chain->next = f; } /* allocate argv, and populate it with the argument list. */ max_args = 8; f->argv = (const char **) flex_alloc (sizeof (char *) * (max_args + 1)); if (!f->argv) flexerror (_("flex_alloc failed (f->argv) in filter_create_ext")); f->argv[f->argc++] = cmd; va_start (ap, cmd); while ((s = va_arg (ap, const char *)) != NULL) { if (f->argc >= max_args) { max_args += 8; f->argv = (const char **) flex_realloc (f->argv, sizeof (char *) * (max_args + 1)); } f->argv[f->argc++] = s; } f->argv[f->argc] = NULL; va_end (ap); return f; } /* Allocate and initialize an internal filter. * @param chain the current chain or NULL for new chain * @param filter_func The function that will perform the filtering. * filter_func should return 0 if successful, and -1 * if an error occurs -- or it can simply exit(). * @param extra optional user-defined data to pass to the filter. * @return newest filter in chain */ struct filter *filter_create_int (struct filter *chain, int (*filter_func) (struct filter *), void *extra) { struct filter *f; /* allocate and initialize new filter */ f = (struct filter *) flex_alloc (sizeof (struct filter)); if (!f) flexerror (_("flex_alloc failed in filter_create_int")); memset (f, 0, sizeof (*f)); f->next = NULL; f->argc = 0; f->argv = NULL; f->filter_func = filter_func; f->extra = extra; if (chain != NULL) { /* append f to end of chain */ while (chain->next) chain = chain->next; chain->next = f; } return f; } /** Fork and exec entire filter chain. * @param chain The head of the chain. * @return true on success. */ bool filter_apply_chain (struct filter * chain) { int pid, pipes[2]; int r; const int readsz = 512; char *buf; /* Tricky recursion, since we want to begin the chain * at the END. Why? Because we need all the forked processes * to be children of the main flex process. */ if (chain) filter_apply_chain (chain->next); else return true; /* Now we are the right-most unprocessed link in the chain. */ fflush (stdout); fflush (stderr); if (pipe (pipes) == -1) flexerror (_("pipe failed")); if ((pid = fork ()) == -1) flexerror (_("fork failed")); if (pid == 0) { /* child */ /* We need stdin (the FILE* stdin) to connect to this new pipe. * There is no portable way to set stdin to a new file descriptor, * as stdin is not an lvalue on some systems (BSD). * So we dup the new pipe onto the stdin descriptor and use a no-op fseek * to sync the stream. This is a Hail Mary situation. It seems to work. */ close (pipes[1]); clearerr(stdin); if (dup2 (pipes[0], fileno (stdin)) == -1) flexfatal (_("dup2(pipes[0],0)")); close (pipes[0]); fseek (stdin, 0, SEEK_CUR); /* run as a filter, either internally or by exec */ if (chain->filter_func) { int r; if ((r = chain->filter_func (chain)) == -1) flexfatal (_("filter_func failed")); exit (0); } else { execvp (chain->argv[0], (char **const) (chain->argv)); lerrsf_fatal ( _("exec of %s failed"), chain->argv[0]); } exit (1); } /* Parent */ close (pipes[0]); if (dup2 (pipes[1], fileno (stdout)) == -1) flexfatal (_("dup2(pipes[1],1)")); close (pipes[1]); fseek (stdout, 0, SEEK_CUR); return true; } /** Truncate the chain to max_len number of filters. * @param chain the current chain. * @param max_len the maximum length of the chain. * @return the resulting length of the chain. */ int filter_truncate (struct filter *chain, int max_len) { int len = 1; if (!chain) return 0; while (chain->next && len < max_len) { chain = chain->next; ++len; } chain->next = NULL; return len; } /** Splits the chain in order to write to a header file. * Similar in spirit to the 'tee' program. * The header file name is in extra. * @return 0 (zero) on success, and -1 on failure. */ int filter_tee_header (struct filter *chain) { /* This function reads from stdin and writes to both the C file and the * header file at the same time. */ const int readsz = 512; char *buf; int to_cfd = -1; FILE *to_c = NULL, *to_h = NULL; bool write_header; write_header = (chain->extra != NULL); /* Store a copy of the stdout pipe, which is already piped to C file * through the running chain. Then create a new pipe to the H file as * stdout, and fork the rest of the chain again. */ if ((to_cfd = dup (1)) == -1) flexfatal (_("dup(1) failed")); to_c = fdopen (to_cfd, "w"); if (write_header) { if (freopen ((char *) chain->extra, "w", stdout) == NULL) flexfatal (_("freopen(headerfilename) failed")); filter_apply_chain (chain->next); to_h = stdout; } /* Now to_c is a pipe to the C branch, and to_h is a pipe to the H branch. */ if (write_header) { fputs (check_4_gnu_m4, to_h); fputs ("m4_changecom`'m4_dnl\n", to_h); fputs ("m4_changequote`'m4_dnl\n", to_h); fputs ("m4_changequote([[,]])[[]]m4_dnl\n", to_h); fputs ("m4_define([[M4_YY_NOOP]])[[]]m4_dnl\n", to_h); fputs ("m4_define( [[M4_YY_IN_HEADER]],[[]])m4_dnl\n", to_h); fprintf (to_h, "#ifndef %sHEADER_H\n", prefix); fprintf (to_h, "#define %sHEADER_H 1\n", prefix); fprintf (to_h, "#define %sIN_HEADER 1\n\n", prefix); fprintf (to_h, "m4_define( [[M4_YY_OUTFILE_NAME]],[[%s]])m4_dnl\n", headerfilename ? headerfilename : ""); } fputs (check_4_gnu_m4, to_c); fputs ("m4_changecom`'m4_dnl\n", to_c); fputs ("m4_changequote`'m4_dnl\n", to_c); fputs ("m4_changequote([[,]])[[]]m4_dnl\n", to_c); fputs ("m4_define([[M4_YY_NOOP]])[[]]m4_dnl\n", to_c); fprintf (to_c, "m4_define( [[M4_YY_OUTFILE_NAME]],[[%s]])m4_dnl\n", outfilename ? outfilename : ""); buf = (char *) flex_alloc (readsz); if (!buf) flexerror (_("flex_alloc failed in filter_tee_header")); while (fgets (buf, readsz, stdin)) { fputs (buf, to_c); if (write_header) fputs (buf, to_h); } if (write_header) { fprintf (to_h, "\n"); /* write a fake line number. It will get fixed by the linedir filter. */ fprintf (to_h, "#line 4000 \"M4_YY_OUTFILE_NAME\"\n"); fprintf (to_h, "#undef %sIN_HEADER\n", prefix); fprintf (to_h, "#endif /* %sHEADER_H */\n", prefix); fputs ("m4_undefine( [[M4_YY_IN_HEADER]])m4_dnl\n", to_h); fflush (to_h); if (ferror (to_h)) lerrsf (_("error writing output file %s"), (char *) chain->extra); else if (fclose (to_h)) lerrsf (_("error closing output file %s"), (char *) chain->extra); } fflush (to_c); if (ferror (to_c)) lerrsf (_("error writing output file %s"), outfilename ? outfilename : ""); else if (fclose (to_c)) lerrsf (_("error closing output file %s"), outfilename ? outfilename : ""); while (wait (0) > 0) ; exit (0); return 0; } /** Adjust the line numbers in the #line directives of the generated scanner. * After the m4 expansion, the line numbers are incorrect since the m4 macros * can add or remove lines. This only adjusts line numbers for generated code, * not user code. This also happens to be a good place to squeeze multiple * blank lines into a single blank line. */ int filter_fix_linedirs (struct filter *chain) { char *buf; const int readsz = 512; int lineno = 1; bool in_gen = true; /* in generated code */ bool last_was_blank = false; if (!chain) return 0; buf = (char *) flex_alloc (readsz); if (!buf) flexerror (_("flex_alloc failed in filter_fix_linedirs")); while (fgets (buf, readsz, stdin)) { regmatch_t m[10]; /* Check for #line directive. */ if (buf[0] == '#' && regexec (®ex_linedir, buf, 3, m, 0) == 0) { int num; char *fname; /* extract the line number and filename */ num = regmatch_strtol (&m[1], buf, NULL, 0); fname = regmatch_dup (&m[2], buf); if (strcmp (fname, outfilename ? outfilename : "") == 0 || strcmp (fname, headerfilename ? headerfilename : "") == 0) { char *s1, *s2; char filename[MAXLINE]; s1 = fname; s2 = filename; while ((s2 - filename) < (MAXLINE - 1) && *s1) { /* Escape the backslash */ if (*s1 == '\\') *s2++ = '\\'; /* Escape the double quote */ if (*s1 == '\"') *s2++ = '\\'; /* Copy the character as usual */ *s2++ = *s1++; } *s2 = '\0'; /* Adjust the line directives. */ in_gen = true; snprintf (buf, readsz, "#line %d \"%s\"\n", lineno + 1, filename); } else { /* it's a #line directive for code we didn't write */ in_gen = false; } free (fname); last_was_blank = false; } /* squeeze blank lines from generated code */ else if (in_gen && regexec (®ex_blank_line, buf, 0, NULL, 0) == 0) { if (last_was_blank) continue; else last_was_blank = true; } else { /* it's a line of normal, non-empty code. */ last_was_blank = false; } fputs (buf, stdout); lineno++; } fflush (stdout); if (ferror (stdout)) lerrsf (_("error writing output file %s"), outfilename ? outfilename : ""); else if (fclose (stdout)) lerrsf (_("error closing output file %s"), outfilename ? outfilename : ""); return 0; } /* vim:set expandtab cindent tabstop=4 softtabstop=4 shiftwidth=4 textwidth=0: */ flex-2.5.39/NEWS0000644000175000017500000003676012314620547013541 0ustar srivastasrivastaThis is the file NEWS for the flex package. It records user -visible changes between releases of flex. See the file COPYING for copying conditions. * flex version 2.5.39 ** no user visible changes in this release * version 2.5.38 released 2014-02-14 ** internationalization *** add sr translation from the translation project *** update da, es, ko, nl, pt_BR, ro, ru, sv, tr, vi, zh_CN translations from the translation project *** rename zh_tw to its proper zh_TW name * version 2.5.37 released 2012-08-03 ** Import flex into git. See git://flex.git.sourceforge.net/gitroot/flex/flex. ** Fix make install target to not fail when the flex++ program is already installed ** New translations from the translation project: de, fi, pl, vi * version 2.5.36 released 2012-07-20 ** various portability fixes that quiet compiler warnings on 64-bit hosts ** various manual fixes, including correcting the name of a %option and updating some simple examples to use ANSI C syntax ** various bug fixes that prevent certain error conditions from persisting when they should not persist ** improvements to the test suite so it behaves better when linking compiled files ** new translations from the translation project: ca, da, es, fi, fr, ga, ko, pt_br, ro, ru, sv, tr, zh_cn ** the flex distribution is now built with automake 1.10.1 and automake 2.61 * version 2.5.35 released 2008-02-26 ** fixed bug that prevented flex from accepting certain comments in the scanner file (resolves bugs #1849809 and #1849805) ** fix bug that prevented headers for all functions from being generated (resolves bug #1628314) ** change yy_size_t to be size_t (resolves bug #1849812) ** new de, nl, pl, pt_br, vi translations from the translation project * version 2.5.34 released 2007-12-12 ** introduce yylex_init_extra; see the manual for details ** introduce %option extra-type="your_type *" (resolves bug #1744505) ** The flex program now parses multiple short concatenated options (resolves bug #1619820). Thanks to Petr Machata of Red Hat on this issue. ** better checking after yyalloc/yyrealloc (resolves bug #1595967) ** flex now provides for a libfl_pic.a compiled with position independent code. Particularly useful when including a flex scanner in a shared library and with more recent versions of gcc. Thanks to the Debian project for the idea. ** SourceForge feature request #1658379: Expose YY_BUF_SIZE in the header file. ** flex better escapes filenames with special characters in them (resolves bug #1623600) ** a memory leak was plugged(resolves bug #1601111) ** pattern language expanded; see the manual for details on the below highlights *** pattern options added to specify patterns as case-insensitive or case-sensitive *** pattern options to specify whether the "." character should match the newline character *** pattern options added to allow ignoring of whitespace in patterns *** POSIX character classes may be negated in patterns *** patterns may now use set difference, union operators ** the manual now contains an appendix listing various common patterns which may be useful when writing scanners ** some memory leaks were removed from the C++ scanner (but the C++ scanner is still experimental and may change radically without notice) ** c++ scanners can now use yywrap ** added new unit test for c++ and yywrap ** portability fixes to some unit tests ** flex man page and flex manual in pdf now distributed in the flex distribution ** new ca, vi, ga, nl translations from the translation project ** flex no longer comes with an rpm spec file ** flex development now happens with automake 1.9.6 * version 2.5.33 released 2006-2-20 ** all flex resources are now to be found from the website at http://flex.sourceforge.net/ ** there was no release 2.5.32 published ** numerous bug and security fixes ** new nl, vi, sv, ro, po, ga, ca, fr, tr translations from the translation project ** upgrade to use gettext 0.12 (this now makes the "pdf" and "ps" targets in the build system able to be run successfully) * version 2.5.31 released 2003-4-1 ** remove --enable-maintainer-mode configure option; none of the Makefiles were using it and it can be unduely confusing * version 2.5.30 released 2003-4-1 ** yylineno is per-buffer in reentrant scanners ** added %top directive for placing code at the top of the generated scanner; see manual for details ** flex now uses m4 to generate scanners; while this means that scanners are more readable, it means that flex requires m4 to be installed; see manual for details * version 2.5.29 released 2003-3-5 ** Automatic stack management for multiple input buffers in C and C++ scanners ** moved the flex documentation to a new doc/ subdirectory ** cleanups to the yy namespace * version 2.5.28 released 2003-2-12 ** flex is now hosted at sourceforge ** Fixed trailing slash bug in YY_INPUT macro def ** Flex now warns if always-interactive is specified with fast or full * version 2.5.27 released 2003-1-21 ** flex now works with recent bison versions ** new pt_br translation from the translation project * version 2.5.26 released 2003-1-14 ** Fixed table deserialization bug on big-endian archs. Patch sent from Bryce Nichols ** yyleng has proper declarations now; this caused flex to generate unusable scanners for some programs ** the flex distribution now includes a spec file suitable for use with rpm ** some more c++ fixes ** new es translation from the translation project ** slight tweeks to the flex_int*_t types ** flex now warns about pattern ranges that might be ambiguous when generating a case-insensitive scanner * version 2.5.25 released 2002-12-2 ** flex now uses flex_int*_t types. For C99 systems, they are just the int*_t types; for non-C99 systems, we just make some typedefs ** new pt_br translation from the translation project * version 2.5.24 released 2002-11-25 * more portability fixes ** the manual continues to be updated and edited, but it's still got a ways to go ** it is possible to have multiple c++ scanners in the same program again ** new turkish translation from the translation project * version 2.5.23 released 2002-10-21 ** more portability fixes ** the manual includes a title page and a table-of-contents when printed ** the test suite can be run with "make check" from the top-level directory ** configure now accepts the --enable-maintainer-mode option ** gettext functionality is now only available externally ** the constant FLEX_BETA is defined if flex is a beta release ** the script create-test was not included in the distribution and it should have been * version 2.5.22 released 2002-10-10 ** more portability fixes around how we get ahold of the integral types; there is a constant FLEX_NEED_INTEGRAL_TYPE_DEFINITIONS which you should define if you don't have the header file (after you complain to your C vendor for not providing a reasonable C environment) ** more test suite cleanups; in particular, the test suite should run correctly when build from a different directory ** upgraded automake to 1.7 and consequently autoconf to 2.54; this means, among other things, that there is some support for formatting the manual in postscript and pdf in the distributed Makefile.in (and therefore in the Makefile built by configure) ** the flex.1 manpage is generated by help2man; (this has been true for quite a while but was not listed here) ** flex now includes three defined constants to indicate which version of flex generated a scanner (YY_FLEX_{MAJOR,MINOR,SUBMINOR}_VERSION) ** flex tries its best to output only the relevant portions of the skeleton when generating a scanner, thus avoiding as much conditional compilation as possible * version 2.5.21 released 2002-9-17 ** one of the tests in the test suite broke the dist target * version 2.5.20 released 2002-9-16 ** A flex scanner has the ability to save the DFA tables to a file, and load them at runtime when needed; see the manual for details ** Added %option bison-bridge (--bison-bridge) ** Removed %option reentrant-bison/--reentrant-bison/-Rb ** yylineno is present in all scanners; Modified nasty performance penalty warning with yylineno in documentation ** test-table-opts is now run last in the test suite because it's so fat ** flex can, to some extent, diagnose where internal problems occur ** new translations from the translation project: fr, ca, de, ru, sv **Flex generates C99 defs now; see YY_TRADITIONAL_FUNC_DEFS in the manual if that's not a good thing for you * version 2.5.19 released 2002-9-5 ** prevent segfault on input lines which are longer than the allocated space (problem report from Manoj Srivastava ) ** Changed option 'header' to 'header-file' * version 2.5.18 released 2002-9-4 ** portability fixes for integer constants and in the way the test suite reports its results ** the test for bison was reporting bison missing when it was, in fact, found ** if we don't find GNU indent, we're more careful when we're not finding it * version 2.5.17 released 2002-8-29 ** more portability fixes ** updated config.sub and config.guess ** flex is indented by GNU indent (this was done earlier but not explicitly documented) * version 2.5.16 released 2002-8-28 ** c++ scanners compile again ** there is now an indent target in the top-level Makefile; configure checks for GNU indent which is required for proper operation of the indent target ** some more portability fixes were made ** %options and invocation sections of manual merged ** a c++ test was added to the test suite ** we're trying to clean up more files in the test suite's make clean targets * version 2.5.15 released 2002-8-21 ** reject-state buffer is now dynamically allocated and REJECT buffer variables are reentrant-safe ** manual now discusses memory usage ** skeleton now processed by m4 before mkskel.sh; (this only matters if you want to change the skeleton or if you're doing flex development) ** zh_cn translation added from translation project ** a bug that caused a segfault has now been fixed ** the test suite now respects the usual CFLAGS, etc. variables ** removed some warnings which some tests trigggered with the -s option ** the flex-generated header file now tries to be smarter about conditionally including start conditions ** tables code omitted from generated scanner when not used * version 2.5.14 released 2002-8-15 ** the tests using the reentrant c scanner as c++ were reworked slightly to be sure that the c++ was enforced ** de translation now included in the distribution ** various portability fixes regarding nls support, c++ include headers, etc. * version 2.5.13 released 2002-8-15 ** the header file output with %option header is now much smaller ** Fixed type mismatch in printf in scanner skeleton ** yylex_init now reports errors * version 2.5.12 released 2002-8-8 ** updated gettext support to 0.11.5 ** new fr translation from the translation project ** bison is no longer needed to build flex; If you are building flex from a release (i.e., not from a cvs snapshot), then you don't need to have a pre-built lex around either (unless you modify scan.l, of course); (This has been true for some time, but was not mentioned here.) * version 2.5.11 released 2002-7-31 ** Fixed bug where yyless did not consider yylineno ** the yylineno performance hit is now gone ** fixed some typos in the manual and we now include texinfo.tex in the distribution ** traditional prototypes output for C scanners, controlled by a preprocessor symbol; see documentation for details * version 2.5.10 released 2002-7-24 ** yy_globals renamed to yyscanner and yy_globals_t renamed to yy_guts_t ** added dist-bzip2 option to Makefile.am so we now produce a bzip2'd archive in addition to the standard gzip archive * version 2.5.9 ** new tests in test suite: test-mem-{nr,r}, test-posix, test-posixly-correct, test-debug-{nr,r} ** made changes to work with gcc-3.2 development code ** ability to choose which memory functions are used in flex ** new yylex_destroy() function for the non-reentrant scanner ** new handling of POSIXLY_CORRECT environment variable ** the test suite now has its copyrights explicitly described ** new ca, de, fr, ru, sv, tr translations * version 2.5.8 ** a new --posix option generates scanners with posix-style abc{1,3} compatible parsing, see manual for the screwy details * version 2.5.7 ** configure.in now includes a call to AC_PREREQ to enforce the requirement for autoconf at least 2.50 (This only effects you if you're doing flex development.) ** configure now uses autoconf's versioning information and configure --help reports the bug-reporting address for flex ** test suite now only reports success versus failure; reporting skipped is problematic under the current setup ** compilation with --disable-nls now works ** flex can now be built in a separate directory * version 2.5.6 ** gettext support added (from gettext 0.11) *** translations for ca, da, de, es, fr, ko, ru, sv, tr included ** distribution now built under automake 1.6 and autoconf 2.53 ** command-line option parsing happens differently now: *** Added long option parsing *** Options -n and -c, previously deprecated, now simply do nothing *** Options are now parsed left to right ** added a number of new options *** All positive %options are now accessible from the command line *** Added option -D, to define a preprocessor symbol *** Added option --header=FILE to specify a C .h file to generate *** added option --yywrap to call yywrap on EOF *** added option --yylineno to track line count in yylineno *** --yyclass=NAME name of C++ class when generating c++ scanners *** for long option names which are associated with existing short options, see accompanying documentation *** new %option nounistd or command-line --nounistd added to prevent flex from generating #include on systems that don't have that include file ** Support for reentrant C scanners has been added *** Updated the manual with the new reentrant API *** Two new options %option reentrant (-R) and %option reentrant-bison (-Rb) *** All globals optionally placed into struct yyglobals_t *** All access to globals replaced by macro invocations *** All functions optionally take one additional argument, yy_globals *** New style for invoking reentrant scanner: yylex_init(void** scanner ); yylex( scanner ); yylex_destroy( scanner ); *** Added get/set functions for members of struct yy_globals_t e.g., yyget_text, yyget_leng, etc *** Prefix substitution added for new functions *** Macro shortcuts to the lengthy get/set functions provided for use in actions, e.g., yytext, yyleng, etc *** Arbitrary, user-defined data, "yyextra", may be added to scanner ** %option nomain no longer implies %option yywrap But the inverse is still true ** Developer test suite added *** TESTS/ directory has been added. Users can 'make test' in the TESTS directory to execute the test suite ** Support for bison variables yylval and yylloc added ** automake support for the build process ** manual is now in texinfo/info format *** flex.1 removed from distribution ** flex no longer generates C-language scanners with C++-style comments ** flex now generates scanners in c++ which are compatible with recent c++ compilers ** flex input scanner now recognizes '\r' as an EOL character See the file ONEWS for changes in earlier releases. Local Variables: mode: text mode: outline-minor end: flex-2.5.39/tables.h0000644000175000017500000000554212314546064014460 0ustar srivastasrivasta/* tables.h - tables serialization code * * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * This code is derived from software contributed to Berkeley by * Vern Paxson. * * The United States Government has rights in this work pursuant * to contract no. DE-AC03-76SF00098 between the United States * Department of Energy and the University of California. * * This file is part of flex. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE. */ #ifndef TABLES_H #define TABLES_H #ifdef __cplusplus /* *INDENT-OFF* */ extern "C" { /* *INDENT-ON* */ #endif /* Tables serialization API declarations. */ #include "tables_shared.h" struct yytbl_writer { FILE *out; flex_uint32_t total_written; /**< bytes written so far */ fpos_t th_ssize_pos; /**< position of th_ssize */ }; /* These are used by main.c, gen.c, etc. * tablesext - if true, create external tables * tablesfilename - filename for external tables * tablesname - name that goes in serialized data, e.g., "yytables" * tableswr - writer for external tables * tablesverify - true if tables-verify option specified * gentables - true if we should spit out the normal C tables */ extern bool tablesext, tablesverify,gentables; extern char *tablesfilename, *tablesname; extern struct yytbl_writer tableswr; int yytbl_writer_init (struct yytbl_writer *, FILE *); int yytbl_hdr_init (struct yytbl_hdr *th, const char *version_str, const char *name); int yytbl_data_init (struct yytbl_data *tbl, enum yytbl_id id); int yytbl_data_destroy (struct yytbl_data *td); int yytbl_hdr_fwrite (struct yytbl_writer *wr, const struct yytbl_hdr *th); int yytbl_data_fwrite (struct yytbl_writer *wr, struct yytbl_data *td); void yytbl_data_compress (struct yytbl_data *tbl); struct yytbl_data *mkftbl (void); #ifdef __cplusplus /* *INDENT-OFF* */ } /* *INDENT-ON* */ #endif #endif /* vim:set expandtab cindent tabstop=4 softtabstop=4 shiftwidth=4 textwidth=0: */ flex-2.5.39/FlexLexer.h0000644000175000017500000001411112314546064015074 0ustar srivastasrivasta// -*-C++-*- // FlexLexer.h -- define interfaces for lexical analyzer classes generated // by flex // Copyright (c) 1993 The Regents of the University of California. // All rights reserved. // // This code is derived from software contributed to Berkeley by // Kent Williams and Tom Epperly. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // 1. Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // 2. Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // Neither the name of the University nor the names of its contributors // may be used to endorse or promote products derived from this software // without specific prior written permission. // THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR // IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR // PURPOSE. // This file defines FlexLexer, an abstract class which specifies the // external interface provided to flex C++ lexer objects, and yyFlexLexer, // which defines a particular lexer class. // // If you want to create multiple lexer classes, you use the -P flag // to rename each yyFlexLexer to some other xxFlexLexer. You then // include in your other sources once per lexer class: // // #undef yyFlexLexer // #define yyFlexLexer xxFlexLexer // #include // // #undef yyFlexLexer // #define yyFlexLexer zzFlexLexer // #include // ... #ifndef __FLEX_LEXER_H // Never included before - need to define base class. #define __FLEX_LEXER_H #include # ifndef FLEX_STD # define FLEX_STD std:: # endif extern "C++" { struct yy_buffer_state; typedef int yy_state_type; class FlexLexer { public: virtual ~FlexLexer() { } const char* YYText() const { return yytext; } int YYLeng() const { return yyleng; } virtual void yy_switch_to_buffer( struct yy_buffer_state* new_buffer ) = 0; virtual struct yy_buffer_state* yy_create_buffer( FLEX_STD istream* s, int size ) = 0; virtual void yy_delete_buffer( struct yy_buffer_state* b ) = 0; virtual void yyrestart( FLEX_STD istream* s ) = 0; virtual int yylex() = 0; // Call yylex with new input/output sources. int yylex( FLEX_STD istream* new_in, FLEX_STD ostream* new_out = 0 ) { switch_streams( new_in, new_out ); return yylex(); } // Switch to new input/output streams. A nil stream pointer // indicates "keep the current one". virtual void switch_streams( FLEX_STD istream* new_in = 0, FLEX_STD ostream* new_out = 0 ) = 0; int lineno() const { return yylineno; } int debug() const { return yy_flex_debug; } void set_debug( int flag ) { yy_flex_debug = flag; } protected: char* yytext; int yyleng; int yylineno; // only maintained if you use %option yylineno int yy_flex_debug; // only has effect with -d or "%option debug" }; } #endif // FLEXLEXER_H #if defined(yyFlexLexer) || ! defined(yyFlexLexerOnce) // Either this is the first time through (yyFlexLexerOnce not defined), // or this is a repeated include to define a different flavor of // yyFlexLexer, as discussed in the flex manual. #define yyFlexLexerOnce extern "C++" { class yyFlexLexer : public FlexLexer { public: // arg_yyin and arg_yyout default to the cin and cout, but we // only make that assignment when initializing in yylex(). yyFlexLexer( FLEX_STD istream* arg_yyin = 0, FLEX_STD ostream* arg_yyout = 0 ); virtual ~yyFlexLexer(); void yy_switch_to_buffer( struct yy_buffer_state* new_buffer ); struct yy_buffer_state* yy_create_buffer( FLEX_STD istream* s, int size ); void yy_delete_buffer( struct yy_buffer_state* b ); void yyrestart( FLEX_STD istream* s ); void yypush_buffer_state( struct yy_buffer_state* new_buffer ); void yypop_buffer_state(); virtual int yylex(); virtual void switch_streams( FLEX_STD istream* new_in, FLEX_STD ostream* new_out = 0 ); virtual int yywrap(); protected: virtual int LexerInput( char* buf, int max_size ); virtual void LexerOutput( const char* buf, int size ); virtual void LexerError( const char* msg ); void yyunput( int c, char* buf_ptr ); int yyinput(); void yy_load_buffer_state(); void yy_init_buffer( struct yy_buffer_state* b, FLEX_STD istream* s ); void yy_flush_buffer( struct yy_buffer_state* b ); int yy_start_stack_ptr; int yy_start_stack_depth; int* yy_start_stack; void yy_push_state( int new_state ); void yy_pop_state(); int yy_top_state(); yy_state_type yy_get_previous_state(); yy_state_type yy_try_NUL_trans( yy_state_type current_state ); int yy_get_next_buffer(); FLEX_STD istream* yyin; // input source for default LexerInput FLEX_STD ostream* yyout; // output sink for default LexerOutput // yy_hold_char holds the character lost when yytext is formed. char yy_hold_char; // Number of characters read into yy_ch_buf. int yy_n_chars; // Points to current character in buffer. char* yy_c_buf_p; int yy_init; // whether we need to initialize int yy_start; // start state number // Flag which is used to allow yywrap()'s to do buffer switches // instead of setting up a fresh yyin. A bit of a hack ... int yy_did_buffer_switch_on_eof; size_t yy_buffer_stack_top; /**< index of top of stack. */ size_t yy_buffer_stack_max; /**< capacity of stack. */ struct yy_buffer_state ** yy_buffer_stack; /**< Stack as an array. */ void yyensure_buffer_stack(void); // The following are not always needed, but may be depending // on use of certain flex features (like REJECT or yymore()). yy_state_type yy_last_accepting_state; char* yy_last_accepting_cpos; yy_state_type* yy_state_buf; yy_state_type* yy_state_ptr; char* yy_full_match; int* yy_full_state; int yy_full_lp; int yy_lp; int yy_looking_for_trail_begin; int yy_more_flag; int yy_more_len; int yy_more_offset; int yy_prev_more_offset; }; } #endif // yyFlexLexer || ! yyFlexLexerOnce flex-2.5.39/parse.h0000644000175000017500000001000312314105755014302 0ustar srivastasrivasta/* A Bison parser, made by GNU Bison 2.5. */ /* Bison interface for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { CHAR = 258, NUMBER = 259, SECTEND = 260, SCDECL = 261, XSCDECL = 262, NAME = 263, PREVCCL = 264, EOF_OP = 265, OPTION_OP = 266, OPT_OUTFILE = 267, OPT_PREFIX = 268, OPT_YYCLASS = 269, OPT_HEADER = 270, OPT_EXTRA_TYPE = 271, OPT_TABLES = 272, CCE_ALNUM = 273, CCE_ALPHA = 274, CCE_BLANK = 275, CCE_CNTRL = 276, CCE_DIGIT = 277, CCE_GRAPH = 278, CCE_LOWER = 279, CCE_PRINT = 280, CCE_PUNCT = 281, CCE_SPACE = 282, CCE_UPPER = 283, CCE_XDIGIT = 284, CCE_NEG_ALNUM = 285, CCE_NEG_ALPHA = 286, CCE_NEG_BLANK = 287, CCE_NEG_CNTRL = 288, CCE_NEG_DIGIT = 289, CCE_NEG_GRAPH = 290, CCE_NEG_LOWER = 291, CCE_NEG_PRINT = 292, CCE_NEG_PUNCT = 293, CCE_NEG_SPACE = 294, CCE_NEG_UPPER = 295, CCE_NEG_XDIGIT = 296, CCL_OP_UNION = 297, CCL_OP_DIFF = 298, BEGIN_REPEAT_POSIX = 299, END_REPEAT_POSIX = 300, BEGIN_REPEAT_FLEX = 301, END_REPEAT_FLEX = 302 }; #endif /* Tokens. */ #define CHAR 258 #define NUMBER 259 #define SECTEND 260 #define SCDECL 261 #define XSCDECL 262 #define NAME 263 #define PREVCCL 264 #define EOF_OP 265 #define OPTION_OP 266 #define OPT_OUTFILE 267 #define OPT_PREFIX 268 #define OPT_YYCLASS 269 #define OPT_HEADER 270 #define OPT_EXTRA_TYPE 271 #define OPT_TABLES 272 #define CCE_ALNUM 273 #define CCE_ALPHA 274 #define CCE_BLANK 275 #define CCE_CNTRL 276 #define CCE_DIGIT 277 #define CCE_GRAPH 278 #define CCE_LOWER 279 #define CCE_PRINT 280 #define CCE_PUNCT 281 #define CCE_SPACE 282 #define CCE_UPPER 283 #define CCE_XDIGIT 284 #define CCE_NEG_ALNUM 285 #define CCE_NEG_ALPHA 286 #define CCE_NEG_BLANK 287 #define CCE_NEG_CNTRL 288 #define CCE_NEG_DIGIT 289 #define CCE_NEG_GRAPH 290 #define CCE_NEG_LOWER 291 #define CCE_NEG_PRINT 292 #define CCE_NEG_PUNCT 293 #define CCE_NEG_SPACE 294 #define CCE_NEG_UPPER 295 #define CCE_NEG_XDIGIT 296 #define CCL_OP_UNION 297 #define CCL_OP_DIFF 298 #define BEGIN_REPEAT_POSIX 299 #define END_REPEAT_POSIX 300 #define BEGIN_REPEAT_FLEX 301 #define END_REPEAT_FLEX 302 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef int YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif extern YYSTYPE yylval; flex-2.5.39/misc.c0000644000175000017500000005201712314546064014133 0ustar srivastasrivasta/* misc - miscellaneous flex routines */ /* Copyright (c) 1990 The Regents of the University of California. */ /* All rights reserved. */ /* This code is derived from software contributed to Berkeley by */ /* Vern Paxson. */ /* The United States Government has rights in this work pursuant */ /* to contract no. DE-AC03-76SF00098 between the United States */ /* Department of Energy and the University of California. */ /* This file is part of flex. */ /* Redistribution and use in source and binary forms, with or without */ /* modification, are permitted provided that the following conditions */ /* are met: */ /* 1. Redistributions of source code must retain the above copyright */ /* notice, this list of conditions and the following disclaimer. */ /* 2. Redistributions in binary form must reproduce the above copyright */ /* notice, this list of conditions and the following disclaimer in the */ /* documentation and/or other materials provided with the distribution. */ /* Neither the name of the University nor the names of its contributors */ /* may be used to endorse or promote products derived from this software */ /* without specific prior written permission. */ /* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR */ /* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED */ /* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */ /* PURPOSE. */ #include "flexdef.h" #include "tables.h" #define CMD_IF_TABLES_SER "%if-tables-serialization" #define CMD_TABLES_YYDMAP "%tables-yydmap" #define CMD_DEFINE_YYTABLES "%define-yytables" #define CMD_IF_CPP_ONLY "%if-c++-only" #define CMD_IF_C_ONLY "%if-c-only" #define CMD_IF_C_OR_CPP "%if-c-or-c++" #define CMD_NOT_FOR_HEADER "%not-for-header" #define CMD_OK_FOR_HEADER "%ok-for-header" #define CMD_PUSH "%push" #define CMD_POP "%pop" #define CMD_IF_REENTRANT "%if-reentrant" #define CMD_IF_NOT_REENTRANT "%if-not-reentrant" #define CMD_IF_BISON_BRIDGE "%if-bison-bridge" #define CMD_IF_NOT_BISON_BRIDGE "%if-not-bison-bridge" #define CMD_ENDIF "%endif" /* we allow the skeleton to push and pop. */ struct sko_state { bool dc; /**< do_copy */ }; static struct sko_state *sko_stack=0; static int sko_len=0,sko_sz=0; static void sko_push(bool dc) { if(!sko_stack){ sko_sz = 1; sko_stack = (struct sko_state*)flex_alloc(sizeof(struct sko_state)*sko_sz); if (!sko_stack) flexfatal(_("allocation of sko_stack failed")); sko_len = 0; } if(sko_len >= sko_sz){ sko_sz *= 2; sko_stack = (struct sko_state*)flex_realloc(sko_stack,sizeof(struct sko_state)*sko_sz); } /* initialize to zero and push */ sko_stack[sko_len].dc = dc; sko_len++; } static void sko_peek(bool *dc) { if(sko_len <= 0) flex_die("peek attempt when sko stack is empty"); if(dc) *dc = sko_stack[sko_len-1].dc; } static void sko_pop(bool* dc) { sko_peek(dc); sko_len--; if(sko_len < 0) flex_die("popped too many times in skeleton."); } /* Append "#define defname value\n" to the running buffer. */ void action_define (defname, value) const char *defname; int value; { char buf[MAXLINE]; char *cpy; if ((int) strlen (defname) > MAXLINE / 2) { format_pinpoint_message (_ ("name \"%s\" ridiculously long"), defname); return; } snprintf (buf, sizeof(buf), "#define %s %d\n", defname, value); add_action (buf); /* track #defines so we can undef them when we're done. */ cpy = copy_string (defname); buf_append (&defs_buf, &cpy, 1); } /** Append "m4_define([[defname]],[[value]])m4_dnl\n" to the running buffer. * @param defname The macro name. * @param value The macro value, can be NULL, which is the same as the empty string. */ void action_m4_define (const char *defname, const char * value) { char buf[MAXLINE]; flexfatal ("DO NOT USE THIS FUNCTION!"); if ((int) strlen (defname) > MAXLINE / 2) { format_pinpoint_message (_ ("name \"%s\" ridiculously long"), defname); return; } snprintf (buf, sizeof(buf), "m4_define([[%s]],[[%s]])m4_dnl\n", defname, value?value:""); add_action (buf); } /* Append "new_text" to the running buffer. */ void add_action (new_text) const char *new_text; { int len = strlen (new_text); while (len + action_index >= action_size - 10 /* slop */ ) { int new_size = action_size * 2; if (new_size <= 0) /* Increase just a little, to try to avoid overflow * on 16-bit machines. */ action_size += action_size / 8; else action_size = new_size; action_array = reallocate_character_array (action_array, action_size); } strcpy (&action_array[action_index], new_text); action_index += len; } /* allocate_array - allocate memory for an integer array of the given size */ void *allocate_array (size, element_size) int size; size_t element_size; { register void *mem; size_t num_bytes = element_size * size; mem = flex_alloc (num_bytes); if (!mem) flexfatal (_ ("memory allocation failed in allocate_array()")); return mem; } /* all_lower - true if a string is all lower-case */ int all_lower (str) register char *str; { while (*str) { if (!isascii ((Char) * str) || !islower ((Char) * str)) return 0; ++str; } return 1; } /* all_upper - true if a string is all upper-case */ int all_upper (str) register char *str; { while (*str) { if (!isascii ((Char) * str) || !isupper ((Char) * str)) return 0; ++str; } return 1; } /* intcmp - compares two integers for use by qsort. */ int intcmp (const void *a, const void *b) { return *(const int *) a - *(const int *) b; } /* check_char - checks a character to make sure it's within the range * we're expecting. If not, generates fatal error message * and exits. */ void check_char (c) int c; { if (c >= CSIZE) lerrsf (_("bad character '%s' detected in check_char()"), readable_form (c)); if (c >= csize) lerrsf (_ ("scanner requires -8 flag to use the character %s"), readable_form (c)); } /* clower - replace upper-case letter to lower-case */ Char clower (c) register int c; { return (Char) ((isascii (c) && isupper (c)) ? tolower (c) : c); } /* copy_string - returns a dynamically allocated copy of a string */ char *copy_string (str) register const char *str; { register const char *c1; register char *c2; char *copy; unsigned int size; /* find length */ for (c1 = str; *c1; ++c1) ; size = (c1 - str + 1) * sizeof (char); copy = (char *) flex_alloc (size); if (copy == NULL) flexfatal (_("dynamic memory failure in copy_string()")); for (c2 = copy; (*c2++ = *str++) != 0;) ; return copy; } /* copy_unsigned_string - * returns a dynamically allocated copy of a (potentially) unsigned string */ Char *copy_unsigned_string (str) register Char *str; { register Char *c; Char *copy; /* find length */ for (c = str; *c; ++c) ; copy = allocate_Character_array (c - str + 1); for (c = copy; (*c++ = *str++) != 0;) ; return copy; } /* cclcmp - compares two characters for use by qsort with '\0' sorting last. */ int cclcmp (const void *a, const void *b) { if (!*(const Char *) a) return 1; else if (!*(const Char *) b) return - 1; else return *(const Char *) a - *(const Char *) b; } /* dataend - finish up a block of data declarations */ void dataend () { /* short circuit any output */ if (gentables) { if (datapos > 0) dataflush (); /* add terminator for initialization; { for vi */ outn (" } ;\n"); } dataline = 0; datapos = 0; } /* dataflush - flush generated data statements */ void dataflush () { /* short circuit any output */ if (!gentables) return; outc ('\n'); if (++dataline >= NUMDATALINES) { /* Put out a blank line so that the table is grouped into * large blocks that enable the user to find elements easily. */ outc ('\n'); dataline = 0; } /* Reset the number of characters written on the current line. */ datapos = 0; } /* flexerror - report an error message and terminate */ void flexerror (msg) const char *msg; { fprintf (stderr, "%s: %s\n", program_name, msg); flexend (1); } /* flexfatal - report a fatal error message and terminate */ void flexfatal (msg) const char *msg; { fprintf (stderr, _("%s: fatal internal error, %s\n"), program_name, msg); FLEX_EXIT (1); } /* htoi - convert a hexadecimal digit string to an integer value */ int htoi (str) Char str[]; { unsigned int result; (void) sscanf ((char *) str, "%x", &result); return result; } /* lerrif - report an error message formatted with one integer argument */ void lerrif (msg, arg) const char *msg; int arg; { char errmsg[MAXLINE]; snprintf (errmsg, sizeof(errmsg), msg, arg); flexerror (errmsg); } /* lerrsf - report an error message formatted with one string argument */ void lerrsf (msg, arg) const char *msg, arg[]; { char errmsg[MAXLINE]; snprintf (errmsg, sizeof(errmsg)-1, msg, arg); errmsg[sizeof(errmsg)-1] = 0; /* ensure NULL termination */ flexerror (errmsg); } /* lerrsf_fatal - as lerrsf, but call flexfatal */ void lerrsf_fatal (msg, arg) const char *msg, arg[]; { char errmsg[MAXLINE]; snprintf (errmsg, sizeof(errmsg)-1, msg, arg); errmsg[sizeof(errmsg)-1] = 0; /* ensure NULL termination */ flexfatal (errmsg); } /* line_directive_out - spit out a "#line" statement */ void line_directive_out (output_file, do_infile) FILE *output_file; int do_infile; { char directive[MAXLINE], filename[MAXLINE]; char *s1, *s2, *s3; static const char *line_fmt = "#line %d \"%s\"\n"; if (!gen_line_dirs) return; s1 = do_infile ? infilename : "M4_YY_OUTFILE_NAME"; if (do_infile && !s1) s1 = ""; s2 = filename; s3 = &filename[sizeof (filename) - 2]; while (s2 < s3 && *s1) { if (*s1 == '\\') /* Escape the '\' */ *s2++ = '\\'; *s2++ = *s1++; } *s2 = '\0'; if (do_infile) snprintf (directive, sizeof(directive), line_fmt, linenum, filename); else { snprintf (directive, sizeof(directive), line_fmt, 0, filename); } /* If output_file is nil then we should put the directive in * the accumulated actions. */ if (output_file) { fputs (directive, output_file); } else add_action (directive); } /* mark_defs1 - mark the current position in the action array as * representing where the user's section 1 definitions end * and the prolog begins */ void mark_defs1 () { defs1_offset = 0; action_array[action_index++] = '\0'; action_offset = prolog_offset = action_index; action_array[action_index] = '\0'; } /* mark_prolog - mark the current position in the action array as * representing the end of the action prolog */ void mark_prolog () { action_array[action_index++] = '\0'; action_offset = action_index; action_array[action_index] = '\0'; } /* mk2data - generate a data statement for a two-dimensional array * * Generates a data statement initializing the current 2-D array to "value". */ void mk2data (value) int value; { /* short circuit any output */ if (!gentables) return; if (datapos >= NUMDATAITEMS) { outc (','); dataflush (); } if (datapos == 0) /* Indent. */ out (" "); else outc (','); ++datapos; out_dec ("%5d", value); } /* mkdata - generate a data statement * * Generates a data statement initializing the current array element to * "value". */ void mkdata (value) int value; { /* short circuit any output */ if (!gentables) return; if (datapos >= NUMDATAITEMS) { outc (','); dataflush (); } if (datapos == 0) /* Indent. */ out (" "); else outc (','); ++datapos; out_dec ("%5d", value); } /* myctoi - return the integer represented by a string of digits */ int myctoi (array) const char *array; { int val = 0; (void) sscanf (array, "%d", &val); return val; } /* myesc - return character corresponding to escape sequence */ Char myesc (array) Char array[]; { Char c, esc_char; switch (array[1]) { case 'b': return '\b'; case 'f': return '\f'; case 'n': return '\n'; case 'r': return '\r'; case 't': return '\t'; #if defined (__STDC__) case 'a': return '\a'; case 'v': return '\v'; #else case 'a': return '\007'; case 'v': return '\013'; #endif case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': { /* \ */ int sptr = 1; while (isascii (array[sptr]) && isdigit (array[sptr])) /* Don't increment inside loop control * because if isdigit() is a macro it might * expand into multiple increments ... */ ++sptr; c = array[sptr]; array[sptr] = '\0'; esc_char = otoi (array + 1); array[sptr] = c; return esc_char; } case 'x': { /* \x */ int sptr = 2; while (isascii (array[sptr]) && isxdigit (array[sptr])) /* Don't increment inside loop control * because if isdigit() is a macro it might * expand into multiple increments ... */ ++sptr; c = array[sptr]; array[sptr] = '\0'; esc_char = htoi (array + 2); array[sptr] = c; return esc_char; } default: return array[1]; } } /* otoi - convert an octal digit string to an integer value */ int otoi (str) Char str[]; { unsigned int result; (void) sscanf ((char *) str, "%o", &result); return result; } /* out - various flavors of outputing a (possibly formatted) string for the * generated scanner, keeping track of the line count. */ void out (str) const char *str; { fputs (str, stdout); } void out_dec (fmt, n) const char *fmt; int n; { fprintf (stdout, fmt, n); } void out_dec2 (fmt, n1, n2) const char *fmt; int n1, n2; { fprintf (stdout, fmt, n1, n2); } void out_hex (fmt, x) const char *fmt; unsigned int x; { fprintf (stdout, fmt, x); } void out_str (fmt, str) const char *fmt, str[]; { fprintf (stdout,fmt, str); } void out_str3 (fmt, s1, s2, s3) const char *fmt, s1[], s2[], s3[]; { fprintf (stdout,fmt, s1, s2, s3); } void out_str_dec (fmt, str, n) const char *fmt, str[]; int n; { fprintf (stdout,fmt, str, n); } void outc (c) int c; { fputc (c, stdout); } void outn (str) const char *str; { fputs (str,stdout); fputc('\n',stdout); } /** Print "m4_define( [[def]], [[val]])m4_dnl\n". * @param def The m4 symbol to define. * @param val The definition; may be NULL. * @return buf */ void out_m4_define (const char* def, const char* val) { const char * fmt = "m4_define( [[%s]], [[%s]])m4_dnl\n"; fprintf(stdout, fmt, def, val?val:""); } /* readable_form - return the the human-readable form of a character * * The returned string is in static storage. */ char *readable_form (c) register int c; { static char rform[10]; if ((c >= 0 && c < 32) || c >= 127) { switch (c) { case '\b': return "\\b"; case '\f': return "\\f"; case '\n': return "\\n"; case '\r': return "\\r"; case '\t': return "\\t"; #if defined (__STDC__) case '\a': return "\\a"; case '\v': return "\\v"; #endif default: snprintf (rform, sizeof(rform), "\\%.3o", (unsigned int) c); return rform; } } else if (c == ' ') return "' '"; else { rform[0] = c; rform[1] = '\0'; return rform; } } /* reallocate_array - increase the size of a dynamic array */ void *reallocate_array (array, size, element_size) void *array; int size; size_t element_size; { register void *new_array; size_t num_bytes = element_size * size; new_array = flex_realloc (array, num_bytes); if (!new_array) flexfatal (_("attempt to increase array size failed")); return new_array; } /* skelout - write out one section of the skeleton file * * Description * Copies skelfile or skel array to stdout until a line beginning with * "%%" or EOF is found. */ void skelout () { char buf_storage[MAXLINE]; char *buf = buf_storage; bool do_copy = true; /* "reset" the state by clearing the buffer and pushing a '1' */ if(sko_len > 0) sko_peek(&do_copy); sko_len = 0; sko_push(do_copy=true); /* Loop pulling lines either from the skelfile, if we're using * one, or from the skel[] array. */ while (skelfile ? (fgets (buf, MAXLINE, skelfile) != NULL) : ((buf = (char *) skel[skel_ind++]) != 0)) { if (skelfile) chomp (buf); /* copy from skel array */ if (buf[0] == '%') { /* control line */ /* print the control line as a comment. */ if (ddebug && buf[1] != '#') { if (buf[strlen (buf) - 1] == '\\') out_str ("/* %s */\\\n", buf); else out_str ("/* %s */\n", buf); } /* We've been accused of using cryptic markers in the skel. * So we'll use emacs-style-hyphenated-commands. * We might consider a hash if this if-else-if-else * chain gets too large. */ #define cmd_match(s) (strncmp(buf,(s),strlen(s))==0) if (buf[1] == '%') { /* %% is a break point for skelout() */ return; } else if (cmd_match (CMD_PUSH)){ sko_push(do_copy); if(ddebug){ out_str("/*(state = (%s) */",do_copy?"true":"false"); } out_str("%s\n", buf[strlen (buf) - 1] =='\\' ? "\\" : ""); } else if (cmd_match (CMD_POP)){ sko_pop(&do_copy); if(ddebug){ out_str("/*(state = (%s) */",do_copy?"true":"false"); } out_str("%s\n", buf[strlen (buf) - 1] =='\\' ? "\\" : ""); } else if (cmd_match (CMD_IF_REENTRANT)){ sko_push(do_copy); do_copy = reentrant && do_copy; } else if (cmd_match (CMD_IF_NOT_REENTRANT)){ sko_push(do_copy); do_copy = !reentrant && do_copy; } else if (cmd_match(CMD_IF_BISON_BRIDGE)){ sko_push(do_copy); do_copy = bison_bridge_lval && do_copy; } else if (cmd_match(CMD_IF_NOT_BISON_BRIDGE)){ sko_push(do_copy); do_copy = !bison_bridge_lval && do_copy; } else if (cmd_match (CMD_ENDIF)){ sko_pop(&do_copy); } else if (cmd_match (CMD_IF_TABLES_SER)) { do_copy = do_copy && tablesext; } else if (cmd_match (CMD_TABLES_YYDMAP)) { if (tablesext && yydmap_buf.elts) outn ((char *) (yydmap_buf.elts)); } else if (cmd_match (CMD_DEFINE_YYTABLES)) { out_str("#define YYTABLES_NAME \"%s\"\n", tablesname?tablesname:"yytables"); } else if (cmd_match (CMD_IF_CPP_ONLY)) { /* only for C++ */ sko_push(do_copy); do_copy = C_plus_plus; } else if (cmd_match (CMD_IF_C_ONLY)) { /* %- only for C */ sko_push(do_copy); do_copy = !C_plus_plus; } else if (cmd_match (CMD_IF_C_OR_CPP)) { /* %* for C and C++ */ sko_push(do_copy); do_copy = true; } else if (cmd_match (CMD_NOT_FOR_HEADER)) { /* %c begin linkage-only (non-header) code. */ OUT_BEGIN_CODE (); } else if (cmd_match (CMD_OK_FOR_HEADER)) { /* %e end linkage-only code. */ OUT_END_CODE (); } else if (buf[1] == '#') { /* %# a comment in the skel. ignore. */ } else { flexfatal (_("bad line in skeleton file")); } } else if (do_copy) outn (buf); } /* end while */ } /* transition_struct_out - output a yy_trans_info structure * * outputs the yy_trans_info structure with the two elements, element_v and * element_n. Formats the output with spaces and carriage returns. */ void transition_struct_out (element_v, element_n) int element_v, element_n; { /* short circuit any output */ if (!gentables) return; out_dec2 (" {%4d,%4d },", element_v, element_n); datapos += TRANS_STRUCT_PRINT_LENGTH; if (datapos >= 79 - TRANS_STRUCT_PRINT_LENGTH) { outc ('\n'); if (++dataline % 10 == 0) outc ('\n'); datapos = 0; } } /* The following is only needed when building flex's parser using certain * broken versions of bison. */ void *yy_flex_xmalloc (size) int size; { void *result = flex_alloc ((size_t) size); if (!result) flexfatal (_ ("memory allocation failed in yy_flex_xmalloc()")); return result; } /* zero_out - set a region of memory to 0 * * Sets region_ptr[0] through region_ptr[size_in_bytes - 1] to zero. */ void zero_out (region_ptr, size_in_bytes) char *region_ptr; size_t size_in_bytes; { register char *rp, *rp_end; rp = region_ptr; rp_end = region_ptr + size_in_bytes; while (rp < rp_end) *rp++ = 0; } /* Remove all '\n' and '\r' characters, if any, from the end of str. * str can be any null-terminated string, or NULL. * returns str. */ char *chomp (str) char *str; { char *p = str; if (!str || !*str) /* s is null or empty string */ return str; /* find end of string minus one */ while (*p) ++p; --p; /* eat newlines */ while (p >= str && (*p == '\r' || *p == '\n')) *p-- = 0; return str; } flex-2.5.39/TODO0000644000175000017500000000300312300734270013504 0ustar srivastasrivasta* the manual: ** do an end-to-end proofread of the manual (this is under way, but is going slowly) ** pretty up the dvi output; overflows, etc. ** faq *** clean up the faqs section. The information is good; the texinfo could use some touching up. *** index the faq entries *** mention that it's possible to use a variable to scan matching brackets, nested comments etc. *** include something about lexing/parsing fortran ** create a section on flex design, features, etc. * getext ** make sure all flex modules use gettext translation facilities *subdirectories ** in examples/manual, integrate the Makefile.examples into the Makefile.am * test suite ** integrate the test suite into automake's framework (note that the test suite can be run from the top level directory with "make check". Still, we want to get it completely under automake's control.) ** make test suite more complete * generic coding ** move as much skeleton code as possible out of gen.c and into flex.skl ** figure out whether we want to add the capability to have auto-generated backout rules ** token-type and token buffer support ** check if we still need to #undef macros at the end of a header ** merge yylineno into support for location tracking ** bug where yylineno is not decremented on REJECT ** bug where yylineno is counted in trailing context * C++ ** have a separate skeleton for c++ ** revisit the C++ API. We get requests to make it more complete. Local Variables: Mode: text mode: outline-minor End: flex-2.5.39/.indent.pro0000644000175000017500000000065612060131401015076 0ustar srivastasrivasta--blank-lines-after-declarations --blank-lines-after-procedures -br /* open braces on same line */ -nce /* start else on new line */ -nbc /* vars on same line */ -di8 /* line up var decl at col 8 */ -brs /* struct brace on same line */ -i8 /* indent 4 */ -lp /* line up parens */ -ts8 /* tab stop */ -bbo /* break before && || */ -hnl /* honor newlines */ --space-special-semicolon --line-length75 --dont-break-procedure-type flex-2.5.39/po/0002755000175000017500000000000012314621666013451 5ustar srivastasrivastaflex-2.5.39/po/sr.gmo0000644000175000017500000006606012314621665014606 0ustar srivastasrivastaT 7  AOh/'.> S"_#  *3'[z!C$)C%]"#FOn`"&0,+] $" )/Y4y5E/*.Z&(+"6>!u".Lg #' Kl : #(#$ $26$#i$+$$&$$ % %:%Y%*q%C%3%0&%E&k&%&&+&&" '-'G'Y'n'','3'/( 2(@((\((((+(( )'')O)m)))))**<*'N*v*$*2* * +,%+-R+ + +++!+&+,!*, L,Z,0q,!, ,,, -% -F3-z----"-..6.<H.-..[0 1( 10I12z1P1H1*G2Vr2/22L3O[33B3@ 4GM4U4(45O/55F6OO6(6G6A7CR7#7%7&7r8?z88899G9P:TY::;:3:!%;9G;A;C;3<[;<T<r<o_=d=_4>v>c ?Do?C?n?Yg@B@.A.3A,bA.A1A5A2&B0YB1B2B6B1&C5XC0CBCJDNMD"DD&lWRW"W& XP0XQXAX4YAJY%YY)Y:Y'2ZZZZ~Zh4[h[J\=Q\M\&\D]I]/h]]],]2]1,^B^^L^G^*6_La_Q_&`]'`i`G`,7aIda/aHaH'bJpbHbDcJIcJc$cAd2FdOydXdH"e&keUeVe%?fef,zf.f:f?g*Qg6|g(g:g\hHthh"h'hiW+i{i%iE%j,kj+j;j%k&k!:k\kCk%ZC9F"1]dB!)Um:&aT -+@Hoiz[8D}fn2;YOlc<NR=(_r^P *`J,06M Lx{' ?bIe~V/A GwWjQp3t7y4S v>Kq\|sg5hXEu.k#$ ********** beginning dump of nfa with start state %d DFA Dump: Equivalence Classes: Meta-Equivalence Classes: jam-transitions: EOF %d (%d saved) hash collisions, %d DFAs equal %d backing-up (non-accepting) states %d empty table entries %d epsilon states, %d double epsilon states %d protos created %d rules %d sets of reallocations needed %d state/nextstate pairs created %d table entries %d templates created, %d uses %d total table entries needed %d/%d (peak %d) nxt-chk entries created %d/%d (peak %d) template nxt-chk entries created %d/%d DFA states (%d words) %d/%d NFA states %d/%d base-def entries created %d/%d character classes needed %d/%d words of storage, %d reused %d/%d equivalence classes created %d/%d meta-equivalence classes created %d/%d start conditions %d/%d unique/duplicate transitions Beginning-of-line patterns used Compressed tables always back-up No backing up no character classes scanner options: - and may be the actual source of other reported performance penalties associated rule line numbers: out-transitions: %%option yylineno entails a performance penalty ONLY on rules that can match newline characters %array incompatible with -+ option%d backing up (non-accepting) states. %option yyclass only meaningful for C++ scanners%option yylineno cannot be used with REJECT%s %s %s version %s usage statistics: %s: fatal internal error, %s ********** end of dump *Something Weird* - tok: %d val: %d -Cf and -CF are mutually exclusive-Cf/-CF and -Cm don't make sense together-Cf/-CF and -I are incompatible-Cf/-CF are incompatible with lex-compatibility mode-I (interactive) entails a minor performance penalty -l AT&T lex compatibility option entails a large performance penalty -s option given but default rule can be matchedAllocation of buffer for line directive failedAllocation of buffer for m4 def failedAllocation of buffer for m4 undef failedAllocation of buffer to print string failedCan't use -+ with -CF optionCan't use -+ with -l optionCan't use --reentrant or --bison-bridge with -l optionCan't use -f or -F with -l optionCompressed tables always back up. Could not write ecstblCould not write eoltblCould not write ftblCould not write ssltblCould not write yyacc_tblCould not write yyacclist_tblCould not write yybase_tblCould not write yychk_tblCould not write yydef_tblCould not write yymeta_tblCould not write yynultrans_tblCould not write yynxt_tblCould not write yynxt_tbl[][]Definition name too long Definition value for {%s} too long EOF encountered inside an actionEOF encountered inside patternEnd Marker Generates programs that perform pattern-matching on text. Table Compression: -Ca, --align trade off larger tables for better memory alignment -Ce, --ecs construct equivalence classes -Cf do not compress tables; use -f representation -CF do not compress tables; use -F representation -Cm, --meta-ecs construct meta-equivalence classes -Cr, --read use read() instead of stdio for scanner input -f, --full generate fast, large scanner. Same as -Cfr -F, --fast use alternate table representation. Same as -CFr -Cem default compression (same as --ecs --meta-ecs) Debugging: -d, --debug enable debug mode in scanner -b, --backup write backing-up information to %s -p, --perf-report write performance report to stderr -s, --nodefault suppress default rule to ECHO unmatched text -T, --trace %s should run in trace mode -w, --nowarn do not generate warnings -v, --verbose write summary of scanner statistics to stdout Files: -o, --outfile=FILE specify output filename -S, --skel=FILE specify skeleton file -t, --stdout write scanner on stdout instead of %s --yyclass=NAME name of C++ class --header-file=FILE create a C header file in addition to the scanner --tables-file[=FILE] write tables to FILE Scanner behavior: -7, --7bit generate 7-bit scanner -8, --8bit generate 8-bit scanner -B, --batch generate batch scanner (opposite of -I) -i, --case-insensitive ignore case in patterns -l, --lex-compat maximal compatibility with original lex -X, --posix-compat maximal compatibility with POSIX lex -I, --interactive generate interactive scanner (opposite of -B) --yylineno track line count in yylineno Generated code: -+, --c++ generate C++ scanner class -Dmacro[=defn] #define macro defn (default defn is '1') -L, --noline suppress #line directives in scanner -P, --prefix=STRING use STRING as prefix instead of "yy" -R, --reentrant generate a reentrant C scanner --bison-bridge scanner for bison pure parser. --bison-locations include yylloc support. --stdinit initialize yyin/yyout to stdin/stdout --noansi-definitions old-style function definitions --noansi-prototypes empty parameter list in prototypes --nounistd do not include --noFUNCTION do not generate a particular FUNCTION Miscellaneous: -c do-nothing POSIX option -n do-nothing POSIX option -? -h, --help produce this help message -V, --version report %s version Input line too long Internal error. flexopts are malformed. No backing up. Option line too long Options -+ and --reentrant are mutually exclusive.REJECT cannot be used with -f or -FREJECT entails a large performance penalty State #%d is non-accepting - Try `%s --help' for more information. Unknown error=(%d) Unmatched '{'Unrecognized option `%s' Usage: %s [OPTIONS] [FILE]... Usage: %s [OPTIONS]... Variable trailing context rule at line %d Variable trailing context rules entail a large performance penalty [:^lower:] is ambiguous in case insensitive scanner[:^upper:] ambiguous in case insensitive scannerallocation of macro definition failedallocation of sko_stack failedattempt to increase array size failedbad : %sbad character '%s' detected in check_char()bad character classbad character class expression: %sbad character inside {}'sbad character: %sbad iteration valuesbad line in skeleton filebad start condition listbad state type in mark_beginning_as_normal()bad transition character detected in sympartition()bison bridge not supported for the C++ scanner.can't open %scan't open skeleton file %sconsistency check failed in epsclosure()could not create %scould not create backing-up info file %scould not create unique end-of-buffer statecould not write tables headerdangerous trailing contextdynamic memory failure in copy_string()empty machine in dupmachine()error closing backup file %serror closing output file %serror closing skeleton file %serror creating header file %serror deleting output file %serror writing backup file %serror writing output file %sfatal parse errorfound too many transitions in mkxtion()incomplete name definitioninput error reading skeleton file %sinput rules are too complicated (>= %d NFA states)iteration value must be positivemalformed '%top' directivememory allocation failed in allocate_array()memory allocation failed in yy_flex_xmalloc()missing quotemissing }name "%s" ridiculously longname defined twicenegative range in character classoption `%s' doesn't allow an argument option `%s' is ambiguous option `%s' requires an argument premature EOFrule cannot be matchedscanner requires -8 flag to use the character %sstart condition %s declared twicestate # %4d state # %d accepts: state # %d accepts: [%d] state # %d: symbol table memory allocation failedthe character range [%c-%c] is ambiguous in a case-insensitive scannertoo many rules (> %d)!trailing context used twiceundefined definition {%s}unknown -C option '%c'unknown error processing section 1unrecognized %%option: %sunrecognized '%' directiveunrecognized rulevariable trailing context rules cannot be used with -f or -Fyymore() entails a minor performance penalty Project-Id-Version: flex-2.5.37 Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net POT-Creation-Date: 2014-03-26 15:00-0400 PO-Revision-Date: 2013-10-30 18:20+0200 Last-Translator: Мирослав Николић Language-Team: Serbian <(nothing)> Language: sr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); ********** започињем испис нфа-а са почетним стањем %d ДФА испис: Разреди једнакости: Разреди мета-једнакости: јам-прелази: крај датотеке %d (сачуваних %d) сукоба хеша, %d једнак ДФА-су %d стварам резерве (не-прихватам) стања %d празна уноса табеле %d стања ипсилона, %d стања двоструког ипсилона направљених узорака — %d %d правила потребна су %d скупа поновног додељивања %d пара стања/следећег_стања је направљено %d уноса табеле направљених шаблона - %d, користим %d потребна су укупно %d уноса табеле направљено је %d/%d (врх %d) „nxt-chk“ уноса направљено је %d/%d (врх %d)шаблона „nxt-chk“ уноса %d/%d ДФА стања (%d речи) %d/%d НФА стања направљено је %d/%d уноса основне одреднице %d/%d разредима знака беху потребне %d/%d речи складишта, %d поново коришћених направљено је %d/%d разреда једнакости направљено је %d/%d разреда мета-једнакости %d/%d услови покретања %d/%d јединствена/удвостручена прелаза Коришћени су шаблони почетка-реда Сжете табеле увек стварају резерву Не правим резерву нема разреда знака опције прегледача: - и може бити стваран извор других извешених ограничења учинка бројеви реда придруженог правила: ван-прелаза:%%опција „yylineno“ изазива смањење учинка САМО на правилима која могу да поклопе знакове новог реда %aниз није сагласан са опцијом -+%d стварам резерве (не-прихватам) стања. %oпција „yyclass“ има смисла само за Ц++ скенере%oпција „yylineno“ не може да се користи са „REJECT“%s %s Статистика коришћења %s издања%s: %s: кобна унутрашња грешка, %s ********** крај исписа *Нешто је чудно* — ток: %d вред: %d „-Cf“ и „-CF“ се међусобно искључују„-Cf/-CF“ и „-Cm“ немају смисла заједно„-Cf/-CF“ и „-I“ су несагласне„-Cf/-CF“ су несагласни са режимом лекс-сагласности-I (међудејствено) изазива мање смањење учинка -l опција сагласности АТ&Т лекса изазива велико смањење учинка дата је опција „-s“ али основно правило може бити поклопљеноНије успело додељивање међумеморије за одредницу редаНије успело додељивање међумеморије за одредницу м4Није успело додељивање међумеморије за поништавање одреднице м4Није успело додељивање међумеморије нисци исписивањаНе могу да користим -+ са опцијом „-CF“Не могу да користим -+ са опцијом „-l“Не могу да користим „--reentrant“ или „--bison-bridge“ са опцијом „-l“Не могу да користим „-f“ или „-F“ са опцијом „-l“Сжете табеле увек стварају резерву. Не могу да запишем „ecstbl“Не могу да запишем „eoltbl“Не могу да запишем „ftbl“Не могу да запишем „ssltbl“Не могу да запишем „yyacc_tbl“Не могу да запишем „yyacclist_tbl“Не могу да запишем „yybase_tbl“Не могу да запишем „ychk_tbl“Не могу да запишем „yydef_tbl“Не могу да запишем „yymeta_tbl“Не могу да запишем „yynultrans_tbl“Не могу да запишем „yynxt_tbl“Не могу да запишем „yynxt_tbl[][]“Назив одреднице је предуг Вредност одреднице за {%s} је предуга наишао сам на крај датотеке унутар радњенаишао сам на крај датотеке унутар шаблонаЗавршни означавач Стварајте програме који обављају поклапање према шаблону у тексту. Сабијање табеле: -Ca, --align обрађује веће табеле зарад бољег поравнања меморије -Ce, --ecs изграђује разреде једнакости -Cf не сажима табеле; користи „-f“ representation” представљање -CF не сажима табеле; користи „-F“ representation” представљање -Cm, --meta-ecs изграђује разреде мета-једнакости -Cr, --read користи „read()уместо стндардног уи за улаз скенера -f, --full ствара брзи, велики скенер. Исто као „-Cfr“ -F, --fast користи заменско представљање табеле. Исто као „-CFr“ -Cem задато сажимање (исто као „--ecs --meta-ecs“) Прочишћавање: -d, --debug укључује режим прочишћавања у скенеру -b, --backup записује податке о стварању резерве у „%s“ -p, --perf-report записује извештај о учинку стандардну грешку -s, --nodefault потискује задато правило у „ECHO“ непоклопљени текст -T, --trace %s треба да ради у режиму праћења -w, --nowarn не ствара упозорења -v, --verbose записује сажетак статистике скенера на стандардни излаз Датотеке: -o, --outfile=ДАТОТЕКА наводи излазни назив датотеке -S, --skel=ДАТОТЕКА наводи датотеку окоснице -t, --stdout записује скенер на стандардни излазуместо на „%s“ --yyclass=НАЗИВ назив Ц++ разреда --header-file=ДАТОТЕКА ствара датотеку Ц заглавља као додатак скенеру --tables-file[=ДАТОТЕКА] записује табеле у ДАТОТЕКУ Понашање скенера: -7, --7bit ствара 7-битни скенер -8, --8bit ствара 8-битни скенер -B, --batch ствара скенер скупа (супротно од „-I“) -i, --case-insensitive занемарује величину слова у шаблонима -l, --lex-compat највећа сагласност са изворним лексом -X, --posix-compat највећа сагласност са лексом ПОСИКС-а -I, --interactive ствара међудејствени скенер (супротно од „-B“) --yylineno прати број реда у „yylineno“ Створени код: -+, --c++ ствара Ц++ разред скенера -Dmacro[=одредница] #одређује макро „одредницу“ (основна је 1) -L, --noline потискује одреднице #реда у скенеру -P, --prefix=НИСКА користи НИСКУкао префикс уместо „yy“ -R, --reentrant ствара поновно улазни Ц скенер --bison-bridge скенер за чисто бизонов обрађивач. --bison-locations укључујеподршку „yylloc“ support” --stdinit започиње „yyin/yyout“ на стндулаз/стндизлаз --noansi-definitions одреднице функције старог стила --noansi-prototypes празан списак параметарау узорцима --nounistd не укључује [unistd.h] --noФУНКЦИЈА не ствара нарочиту ФУНКЦИЈУ Разно: -c не ПОСИКС-ира опцију -n не ПОСИКС-ира опцију -? -h, --help исписује ову помоћ -V, --version извештава о издању %s-а Улазни ред је предуг Унутрашња грешка. „flexopts“ је лоше обликован. Не правим резерву. Ред опције је предуг Опције -+ и „--reentrant“ се међусобно искључују.„REJECT“ не може да се користи са „-f“ или „-F“„REJECT“ изазива веће смањење учинка Стање #%d је не-прихватљиво — Пробајте „%s --help“ за више података. Непозната грешка=(%d) Неупарена „{“Непозната опција „%s“ Употреба: %s [ОПЦИЈЕ] [ДАТОТЕКА]... Употреба: %s [ОПЦИЈЕ]... Променљиво правило пратећег контекста на %d. реду Променљива правила пратећег контекса изазивају веће смањење учинка [:^lower:] је нејасно у скенеру неосетљивом на величину слова[:^upper:] је нејасно у скенеру неосетљивом на величину слованије успело додељивање одреднице макроаније успело додељивање „sko_stack“-аније успео покушај повећања величине низалош [почетни услов]: %sлош знак „%s“ је откривен у „check_char()“лош разред знакалош израз разреда знака: %sлош знак унутар {}лош знак: %sлоша вредност опетовањалош ред у датотеци окосницелош списак почетног условалоша врста стања у „mark_beginning_as_normal()“откривен је лош знак прелаза у „sympartition()“бизонов мост није подржан за Ц++ скенер.не могу да отворим „%s“Не могу да отворим датотеку окоснице „%s“провера доследности није успела у „epsclosure()“не могу да направим %sне могу да направим резерву датотеке података „%s“не могу да направим јединствено стање краја међумеморијене могу да запшем бестаблично заглављеопасан пратећи контекстнеуспех динамичке меморије у „copy_string()“празна машина у „dupmachine()“грешка затварања датотеке резерве „%s“грешка затварања излазне датотеке „%s“грешка затварања датотеке окоснице „%s“грешка стварања датотеке заглавља „%s“грешка брисања излазне датотеке „%s“грешка записивања датотеке резерве „%s“грешка записивања излазне датотеке „%s“кобна грешка обрадепронађох превише прелаза у „mkxtion()“непотпуна одредница називагрешка улаза читања датотеке окоснице „%s“улазна правила су превише сложена (>= %d НФА стања)вредност опетовања мора бити позитивналоша одредница „%top“није успело додељивање меморије у „allocate_array()“није успело додељивање меморије у „yy_flex_xmalloc()“недостају наводницинедостаје }назив „%s“ је смешно дугназив је одређен два путанегативан опсег у разреду знакаопција „%s“ не дозвољава аргумент опција „%s“ је нејасна опција „%s“ захтева аргумент прерани крај датотекеправило не може бити поклопљеноскенер захтева -8 обележја да би користио знак „%s“почетни услов „%s“ је објављен два путастање # %4dстање # %d прихвата: стање # %d прихвата: [%d] стање # %d: није успело додељивање меморије табеле симболаопсег знака [%c-%c] је нејасан у скенеру неосетљивом на величину словапревише правила (> %d)!пратећи контекст је коришћен два путанеодређена одредница {%s}непозната опција -C „%c“непозната грешка обраде одељка 1непозната %%опција: %sнепозната непознато правилопроменљива правила пратећег контекста не могу бити коришћена са „-f“ или „-F“„yymore()“ изазива мање смањење учинка flex-2.5.39/po/pl.gmo0000644000175000017500000005236412314621665014577 0ustar srivastasrivastaT 7  AOh/'.> S"_#  *3'[z!C$)C%]"#FOn`"&0,+] $" )/Y4y5E/*.Z&(+"6>!u".Lg #' Kl : #(#$ $26$#i$+$$&$$ % %:%Y%*q%C%3%0&%E&k&%&&+&&" '-'G'Y'n'','3'/( 2(@((\((((+(( )'')O)m)))))**<*'N*v*$*2* * +,%+-R+ + +++!+&+,!*, L,Z,0q,!, ,,, -% -F3-z----"-..6.<H.-..:?0z00008001G1;g11 1$1(12$22*W272D223'13GY3'3,33"4!84+Z4444:4 45]55&5/535,6K6$R6"w66!6"6"67<<72y7A7879'86a888;8 9+98H9#9*999::2:N:n:::: :;;=;'Y;;;;d ;1H,MHzHH0H%H'H&I$FIkIIIII2IGJO^JOJ:J(9K3bKK(KK!KL-L=LVL"tL-L.L7L,M$BM2gMM7M0M!N;N1ZNN8N+N(O,7O*dO5O(OO( P6P.SP9P"P!P4Q56QlQ|QQQ Q#Q R'RDRUR(pR.R RRR S5SSGSS!SSS, T8TSToTET)T%ZC9F"1]dB!)Um:&aT -+@Hoiz[8D}fn2;YOlc<NR=(_r^P *`J,06M Lx{' ?bIe~V/A GwWjQp3t7y4S v>Kq\|sg5hXEu.k#$ ********** beginning dump of nfa with start state %d DFA Dump: Equivalence Classes: Meta-Equivalence Classes: jam-transitions: EOF %d (%d saved) hash collisions, %d DFAs equal %d backing-up (non-accepting) states %d empty table entries %d epsilon states, %d double epsilon states %d protos created %d rules %d sets of reallocations needed %d state/nextstate pairs created %d table entries %d templates created, %d uses %d total table entries needed %d/%d (peak %d) nxt-chk entries created %d/%d (peak %d) template nxt-chk entries created %d/%d DFA states (%d words) %d/%d NFA states %d/%d base-def entries created %d/%d character classes needed %d/%d words of storage, %d reused %d/%d equivalence classes created %d/%d meta-equivalence classes created %d/%d start conditions %d/%d unique/duplicate transitions Beginning-of-line patterns used Compressed tables always back-up No backing up no character classes scanner options: - and may be the actual source of other reported performance penalties associated rule line numbers: out-transitions: %%option yylineno entails a performance penalty ONLY on rules that can match newline characters %array incompatible with -+ option%d backing up (non-accepting) states. %option yyclass only meaningful for C++ scanners%option yylineno cannot be used with REJECT%s %s %s version %s usage statistics: %s: fatal internal error, %s ********** end of dump *Something Weird* - tok: %d val: %d -Cf and -CF are mutually exclusive-Cf/-CF and -Cm don't make sense together-Cf/-CF and -I are incompatible-Cf/-CF are incompatible with lex-compatibility mode-I (interactive) entails a minor performance penalty -l AT&T lex compatibility option entails a large performance penalty -s option given but default rule can be matchedAllocation of buffer for line directive failedAllocation of buffer for m4 def failedAllocation of buffer for m4 undef failedAllocation of buffer to print string failedCan't use -+ with -CF optionCan't use -+ with -l optionCan't use --reentrant or --bison-bridge with -l optionCan't use -f or -F with -l optionCompressed tables always back up. Could not write ecstblCould not write eoltblCould not write ftblCould not write ssltblCould not write yyacc_tblCould not write yyacclist_tblCould not write yybase_tblCould not write yychk_tblCould not write yydef_tblCould not write yymeta_tblCould not write yynultrans_tblCould not write yynxt_tblCould not write yynxt_tbl[][]Definition name too long Definition value for {%s} too long EOF encountered inside an actionEOF encountered inside patternEnd Marker Generates programs that perform pattern-matching on text. Table Compression: -Ca, --align trade off larger tables for better memory alignment -Ce, --ecs construct equivalence classes -Cf do not compress tables; use -f representation -CF do not compress tables; use -F representation -Cm, --meta-ecs construct meta-equivalence classes -Cr, --read use read() instead of stdio for scanner input -f, --full generate fast, large scanner. Same as -Cfr -F, --fast use alternate table representation. Same as -CFr -Cem default compression (same as --ecs --meta-ecs) Debugging: -d, --debug enable debug mode in scanner -b, --backup write backing-up information to %s -p, --perf-report write performance report to stderr -s, --nodefault suppress default rule to ECHO unmatched text -T, --trace %s should run in trace mode -w, --nowarn do not generate warnings -v, --verbose write summary of scanner statistics to stdout Files: -o, --outfile=FILE specify output filename -S, --skel=FILE specify skeleton file -t, --stdout write scanner on stdout instead of %s --yyclass=NAME name of C++ class --header-file=FILE create a C header file in addition to the scanner --tables-file[=FILE] write tables to FILE Scanner behavior: -7, --7bit generate 7-bit scanner -8, --8bit generate 8-bit scanner -B, --batch generate batch scanner (opposite of -I) -i, --case-insensitive ignore case in patterns -l, --lex-compat maximal compatibility with original lex -X, --posix-compat maximal compatibility with POSIX lex -I, --interactive generate interactive scanner (opposite of -B) --yylineno track line count in yylineno Generated code: -+, --c++ generate C++ scanner class -Dmacro[=defn] #define macro defn (default defn is '1') -L, --noline suppress #line directives in scanner -P, --prefix=STRING use STRING as prefix instead of "yy" -R, --reentrant generate a reentrant C scanner --bison-bridge scanner for bison pure parser. --bison-locations include yylloc support. --stdinit initialize yyin/yyout to stdin/stdout --noansi-definitions old-style function definitions --noansi-prototypes empty parameter list in prototypes --nounistd do not include --noFUNCTION do not generate a particular FUNCTION Miscellaneous: -c do-nothing POSIX option -n do-nothing POSIX option -? -h, --help produce this help message -V, --version report %s version Input line too long Internal error. flexopts are malformed. No backing up. Option line too long Options -+ and --reentrant are mutually exclusive.REJECT cannot be used with -f or -FREJECT entails a large performance penalty State #%d is non-accepting - Try `%s --help' for more information. Unknown error=(%d) Unmatched '{'Unrecognized option `%s' Usage: %s [OPTIONS] [FILE]... Usage: %s [OPTIONS]... Variable trailing context rule at line %d Variable trailing context rules entail a large performance penalty [:^lower:] is ambiguous in case insensitive scanner[:^upper:] ambiguous in case insensitive scannerallocation of macro definition failedallocation of sko_stack failedattempt to increase array size failedbad : %sbad character '%s' detected in check_char()bad character classbad character class expression: %sbad character inside {}'sbad character: %sbad iteration valuesbad line in skeleton filebad start condition listbad state type in mark_beginning_as_normal()bad transition character detected in sympartition()bison bridge not supported for the C++ scanner.can't open %scan't open skeleton file %sconsistency check failed in epsclosure()could not create %scould not create backing-up info file %scould not create unique end-of-buffer statecould not write tables headerdangerous trailing contextdynamic memory failure in copy_string()empty machine in dupmachine()error closing backup file %serror closing output file %serror closing skeleton file %serror creating header file %serror deleting output file %serror writing backup file %serror writing output file %sfatal parse errorfound too many transitions in mkxtion()incomplete name definitioninput error reading skeleton file %sinput rules are too complicated (>= %d NFA states)iteration value must be positivemalformed '%top' directivememory allocation failed in allocate_array()memory allocation failed in yy_flex_xmalloc()missing quotemissing }name "%s" ridiculously longname defined twicenegative range in character classoption `%s' doesn't allow an argument option `%s' is ambiguous option `%s' requires an argument premature EOFrule cannot be matchedscanner requires -8 flag to use the character %sstart condition %s declared twicestate # %4d state # %d accepts: state # %d accepts: [%d] state # %d: symbol table memory allocation failedthe character range [%c-%c] is ambiguous in a case-insensitive scannertoo many rules (> %d)!trailing context used twiceundefined definition {%s}unknown -C option '%c'unknown error processing section 1unrecognized %%option: %sunrecognized '%' directiveunrecognized rulevariable trailing context rules cannot be used with -f or -Fyymore() entails a minor performance penalty Project-Id-Version: flex 2.5.36 Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net POT-Creation-Date: 2014-03-26 15:00-0400 PO-Revision-Date: 2012-08-02 18:15+0200 Last-Translator: Jakub Bogusz Language-Team: Polish Language: pl MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-2 Content-Transfer-Encoding: 8bit ********** pocztek zrzutu NFA ze stanem pocztkowym %d Zrzut DFA: Klasy rwnowanoci: Klasy meta-rwnowanoci: przejcia-zaptlajce: EOF %d (%d zachowanych) kolizji haszy, %d jednakowych DFA %d zapamitywanych stanw (nie akceptujcych) %d pustych elementw tablicy %d stanw epsilonowych, %d stanw podwjnie epsilonowych %d utworzonych prototypw %d regu %d potrzebnych zbiorw realokacji %d utworzonych par stan/nastpny-stan %d elementw tablicy %d utworzonych szablonw, %d uy %d potrzebnych ogem elementw tablicy %d/%d (maksymalnie %d) utworzonych elementw nxt-chk %d/%d (maksymalnie %d) utworzonych szablonowych elementw nxt-chk %d/%d stanw DFA (%d sw) %d/%d stanw NFA %d/%d utworzonych elementw base-def %d/%d klas znakw potrzebuje %d/%d sw pamici, %d ponownie uytych %d/%d utworzonych klas rwnowanoci %d/%d utworzonych klas meta-rwnowanoci %d/%d warunkw pocztkowych %d/%d przej unikalny/duplikat Uytych wzorcw pocztek-linii Skompresowane tablice zawsze zapamituj Bez zapamitywania bez klas znakw opcje skanera: - i moe by przyczyn innych zgaszanych strat wydajnoci numery linii powizanych regu: przejcia-wyjciowe: %%option yylineno powoduje straty wydajnoci TYLKO dla regu dopasowujcych znak koca linii %array jest niekompatybilne z opcj -+%d zapamitywanych stanw (nie akceptujcych). %option yyclass ma znaczenie tylko dla skanerw C++%option yylineno nie moe by uyte z REJECT%s %s %s w wersji %s - statystyka uycia: %s: krytyczny bd wewntrzny: %s ********** koniec zrzutu *Co dziwnego* - tok: %d val: %d -Cf i -CF wykluczaj si wzajemnie-Cf/-CF i -Cm razem nie maj sensu-Cf/-CF i -I s niekompatybilne-Cf/-CF s niekompatybilne z trybem kompatybilnoci z leksem-I (interaktywny) powoduje ma strat wydajnoci opcja -l zgodnoci z leksem AT&T powoduje du strat wydajnoci podano opcj -s, ale domylna regua moe by dopasowanaPrzydzielenie bufora dla dyrektywy linii nie powiodo siPrzydzielenie bufora dla polecenia m4 def powiodo siPrzydzielenie bufora dla polecenia m4 undef powiodo siPrzydzielenie bufora do wypisania acucha nie powiodo siNie mona uy -+ z opcj -CFNie mona uy -+ z opcj -lNie mona uy --reentrant ani --bison-bridge z opcj -lNie mona uy -f ani -F z opcj -lSkompresowane tablice zawsze zapamituj. Nie mona zapisa ecstblNie mona zapisa eoltblNie mona zapisa ftblNie mona zapisa ssltblNie mona zapisa yyacc_tblNie mona zapisa yyacclist_tblNie mona zapisa yybase_tblNie mona zapisa yychk_tblNie mona zapisa yydef_tblNie mona zapisa yymeta_tblNie mona zapisa yynultrans_tblNie mona zapisa yynxt_tblNie mona zapisa yynxt_tbl[][]Nazwa definizji zbyt duga Definicja wartoci dla {%s} zbyt duga EOF napotkany wewntrz akcjiEOF napotkany wewntrz wzorcaZnacznik koca Generowanie programw wykonujcych na tekcie dopasowywanie wzorcw. Komprecja tablic: -Ca, --align uycie wikszych tablic dla lepszego wyrwnania pamici -Ce, --ecs konstruowanie klas rwnowanoci -Cf nie kompresowanie tablic; uycie reprezentacji -f -CF nie kompresowanie tablic; uycie reprezentacji -F -Cm, --meta-ecs konstruowanie klas meta-rwnowanoci -Cr, --read uycie read() zamiast stdio dla wejcia skanera -f, --full wygenerowanie szybkiego, wielkiego skanera. To samo co -Cfr -F, --fast uycie alternatywnej reprezentacji tablic. To samo co -CFr -Cem domylne kompresowanie (to samo co --ecs --meta-ecs) Diagnostyka: -d, --debug wczenie trybu diagnostycznego (debug) w skanerze -b, --backup zapisanie informacji o zapamitywaniu do %s -p, --perf-report wypisanie raportu o wydajnoci na stderr -s, --nodefault pominicie domylnej reguy ECHO dla niedopasowanego tekstu -T, --trace %s powinien dziaa w trybie ledzenia -w, --nowarn nie generowanie ostrzee -v, --verbose wypisanie podsumowania statystyk skanera na stdout Pliki: -o, --outfile=PLIK podanie nazwy pliku wyjciowego -S, --skel=PLIK podanie pliku szablonu -t, --stdout zapis wyjcia skanera na stdout zamiast %s --yyclass=NAZWA nazwa klasy C++ --header-file=PLIK utworzenie pliku nagwkowego C oprcz skanera --tables-file[=PLIK] zapisanie tablic do PLIKU Zachowanie skanera: -7, --7bit wygenerowanie skanera 7-bitowego -8, --8bit wygenerowanie skanera 8-bitowego -B, --batch wygenerowanie skanera wsadowego (przeciwiestwo -I) -i, --case-insensitive ignorowanie wielkoci liter we wzorcach -l, --lex-compat maksymalna kompatybilno z oryginalnym leksem -X, --posix-compat maksymalna kompatybilno z leksem POSIX -I, --interactive wygenerowanie skanera interaktywnego (przeciw. -B) --yylineno ledzenie liczby linii w yylineno Generowany kod: -+, --c++ wygenerowanie klasy skanera w C++ -Dmakro[=defn] #define makro defn (domylne defn to '1') -L, --noline pominicie dyrektyw #line w skanerze -P, --prefix=ACUCH uycie jako prefiksu ACUCHA zamiast "yy" -R, --reentrant wygenerowanie wielobienego skanera w C --bison-bridge skaner dla czystego analizatora w bisonie --bison-locations dodanie obsugi yylloc --stdinit zainicjowanie yyin/yyout na stdin/stdout --noansi-definitions definicje funkcji w starym stylu --noansi-prototypes puste listy parametrw w prototypach --nounistd nie doczanie --noFUNKCJA nie generowanie podanej FUNKCJI Rne: -c nic nie robica opcja POSIX -n nic nie robica opcja POSIX -? -h, --help wywietlenie tego pomocnego opisu -V, --version podanie wersji programu %s Linia wejciowa zbyt duga Bd wewntrzny. le sformuowane flexopts. Bez zapamitywania. Linia opcji zbyt duga Opcje -+ i --reentrant wykluczaj si wzajemnie.REJECT nie moe by uyte z -f ani -FREJECT powoduje du strat wydajnoci Stan #%d jest nieakceptujcy - `%s --help' poda wicej informacji. Nieznany bd=(%d) Niesparowany '{'Nierozpoznana opcja `%s' Skadnia: %s [OPCJE] [PLIK]... Skadnia: %s [OPCJE]... Regua ze zmiennym kocowym kontekstem w linii %d Reguy ze zmiennym kocowym kontekstem powoduj du strat wydajnoci [:^lower:] jest niejednoznaczne w przypadku skanera ignorujcego wielko liter[:^upper:] jest niejednoznaczne w przypadku skanera ignorujcego wielko literprzydzielenie pamici dla definicji makra nie powiodo siprzydzielenie sko_stack nie powiodo siprba zwikszenia rozmiaru tablicy nie powioda sibdny : %sbdny znak '%s' usunity w check_char()bdna klasa znakwbdne wyraenie klasy znakw: %sbdny znak wewntrz {}bdny znak: %sbdne wartoci iteracjibdna linia w pliku szablonubdna lista warunkw pocztkowychbdny typ stanu w mark_beginning_as_normal()wykryto bdny znak przejcia w sympartition()pomost dla bisona nie jest obsugiwany dla skanera C++.nie mona otworzy %snie mona otworzy pliku szablonu %skontrola spjnoci nie powioda si w epsclosure()nie mona utworzy %snie mona utworzy pliku informacji o zapamitywaniu %snie mona utworzy unikalnego stanu koca buforanie mona zapisa nagwka tablicniebezpieczny kontekst kocowyniepowodzenie dynamicznej pamici w copy_string()pusty automat w dupmachine()bd podczas zamykania pliku raportu z zapamitywania %sbd podczas zamykania pliku wyjciowego %sbd podczas zamykania pliku szablonu %sbd podczas tworzenia pliku nagwkowego %sbd podczas usuwania pliku wyjciowego %sbd podczas zapisu pliku raportu z zapamitywania %sbd podczas zapisu pliku wyjciowego %skrytyczny bd analizy skadniznaleziono zbyt duo przej w mkxtion()niekompletna definicja nazwybd wejcia podczas odczytu pliku szablonu %sreguy wejciowe s zbyt skomplikowane (>= %d stanw NFA)warto iteracji musi by dodatniale sformuowana dyrektywa '%top'nie udao si przydzieli pamici w allocate_array()nie udao si przydzieli pamici w yy_flex_xmalloc()brak cudzysowubrak }nazwa "%s" jest miesznie duganazwa zdefiniowana dwukrotnieujemny przedzia w klasie znakwopcja `%s' nie przyjmuje argumentu opcja `%s' jest niejednoznaczna opcja `%s' wymaga argumentu przedwczesny EOFnie mona dopasowa reguyskaner wymaga flagi -8 aby uy znaku %swarunek pocztkowy %s zadeklarowany dwukrotniestan # %4d stan # %d akceptuje: stan # %d akceptuje: [%d] stan # %d: nie udao si przydzieli pamici dla tablicy symboliprzedzia znakw [%c-%c] jest niejednoznaczny w skanerze ignorujcym wielko literzbyt duo regu (> %d)!kocowy kontekst uyty dwukrotnieniezdefiniowana definicja {%s}nieznana opcja -C '%c'nieznany bd podczas przetwarzania sekcji 1nierozpoznane %%option: %snierozpoznana dyrektywa '%'nierozpoznana reguareguy ze zmiennym kocowym kontekstem nie mog by uyte z -f ani -Fyymore() powoduje ma strat wydajnoci flex-2.5.39/po/en@boldquot.gmo0000644000175000017500000005055612314621665016441 0ustar srivastasrivastaT 7  AOh/'.> S"_#  *3'[z!C$)C%]"#FOn`"&0,+] $" )/Y4y5E/*.Z&(+"6>!u".Lg #' Kl : #(#$ $26$#i$+$$&$$ % %:%Y%*q%C%3%0&%E&k&%&&+&&" '-'G'Y'n'','3'/( 2(@((\((((+(( )'')O)m)))))**<*'N*v*$*2* * +,%+-R+ + +++!+&+,!*, L,Z,0q,!, ,,, -% -F3-z----"-..6.<H.-..740 l0z000/0'0 1.:1i1 ~1"1#11 1 2*'23R222!2C2$3)D3n3%3"3#3344F34z44`4" 5&050W5+55 555$6"76)Z664656E7/U7.7&7(7+808M86i8!8"8889(9?9Y9w99999::8:#R: v:: :F : F(FGFWF2mF#F+FF2GAGUG%oGGG*GCG3;H0oH%HH%H I7%I]I"qIIIIII,J35J/iJ JJ(JJ(K+)KUKsK'KKKKL-LKLiLLL'LL$L2M PM&qM,M-M M N' N3N!FN2hN%N-N NN0O!EO gOtOO O%OFOP4PPP"jP"PP&PP<Q-@Q%ZC9F"1]dB!)Um:&aT -+@Hoiz[8D}fn2;YOlc<NR=(_r^P *`J,06M Lx{' ?bIe~V/A GwWjQp3t7y4S v>Kq\|sg5hXEu.k#$ ********** beginning dump of nfa with start state %d DFA Dump: Equivalence Classes: Meta-Equivalence Classes: jam-transitions: EOF %d (%d saved) hash collisions, %d DFAs equal %d backing-up (non-accepting) states %d empty table entries %d epsilon states, %d double epsilon states %d protos created %d rules %d sets of reallocations needed %d state/nextstate pairs created %d table entries %d templates created, %d uses %d total table entries needed %d/%d (peak %d) nxt-chk entries created %d/%d (peak %d) template nxt-chk entries created %d/%d DFA states (%d words) %d/%d NFA states %d/%d base-def entries created %d/%d character classes needed %d/%d words of storage, %d reused %d/%d equivalence classes created %d/%d meta-equivalence classes created %d/%d start conditions %d/%d unique/duplicate transitions Beginning-of-line patterns used Compressed tables always back-up No backing up no character classes scanner options: - and may be the actual source of other reported performance penalties associated rule line numbers: out-transitions: %%option yylineno entails a performance penalty ONLY on rules that can match newline characters %array incompatible with -+ option%d backing up (non-accepting) states. %option yyclass only meaningful for C++ scanners%option yylineno cannot be used with REJECT%s %s %s version %s usage statistics: %s: fatal internal error, %s ********** end of dump *Something Weird* - tok: %d val: %d -Cf and -CF are mutually exclusive-Cf/-CF and -Cm don't make sense together-Cf/-CF and -I are incompatible-Cf/-CF are incompatible with lex-compatibility mode-I (interactive) entails a minor performance penalty -l AT&T lex compatibility option entails a large performance penalty -s option given but default rule can be matchedAllocation of buffer for line directive failedAllocation of buffer for m4 def failedAllocation of buffer for m4 undef failedAllocation of buffer to print string failedCan't use -+ with -CF optionCan't use -+ with -l optionCan't use --reentrant or --bison-bridge with -l optionCan't use -f or -F with -l optionCompressed tables always back up. Could not write ecstblCould not write eoltblCould not write ftblCould not write ssltblCould not write yyacc_tblCould not write yyacclist_tblCould not write yybase_tblCould not write yychk_tblCould not write yydef_tblCould not write yymeta_tblCould not write yynultrans_tblCould not write yynxt_tblCould not write yynxt_tbl[][]Definition name too long Definition value for {%s} too long EOF encountered inside an actionEOF encountered inside patternEnd Marker Generates programs that perform pattern-matching on text. Table Compression: -Ca, --align trade off larger tables for better memory alignment -Ce, --ecs construct equivalence classes -Cf do not compress tables; use -f representation -CF do not compress tables; use -F representation -Cm, --meta-ecs construct meta-equivalence classes -Cr, --read use read() instead of stdio for scanner input -f, --full generate fast, large scanner. Same as -Cfr -F, --fast use alternate table representation. Same as -CFr -Cem default compression (same as --ecs --meta-ecs) Debugging: -d, --debug enable debug mode in scanner -b, --backup write backing-up information to %s -p, --perf-report write performance report to stderr -s, --nodefault suppress default rule to ECHO unmatched text -T, --trace %s should run in trace mode -w, --nowarn do not generate warnings -v, --verbose write summary of scanner statistics to stdout Files: -o, --outfile=FILE specify output filename -S, --skel=FILE specify skeleton file -t, --stdout write scanner on stdout instead of %s --yyclass=NAME name of C++ class --header-file=FILE create a C header file in addition to the scanner --tables-file[=FILE] write tables to FILE Scanner behavior: -7, --7bit generate 7-bit scanner -8, --8bit generate 8-bit scanner -B, --batch generate batch scanner (opposite of -I) -i, --case-insensitive ignore case in patterns -l, --lex-compat maximal compatibility with original lex -X, --posix-compat maximal compatibility with POSIX lex -I, --interactive generate interactive scanner (opposite of -B) --yylineno track line count in yylineno Generated code: -+, --c++ generate C++ scanner class -Dmacro[=defn] #define macro defn (default defn is '1') -L, --noline suppress #line directives in scanner -P, --prefix=STRING use STRING as prefix instead of "yy" -R, --reentrant generate a reentrant C scanner --bison-bridge scanner for bison pure parser. --bison-locations include yylloc support. --stdinit initialize yyin/yyout to stdin/stdout --noansi-definitions old-style function definitions --noansi-prototypes empty parameter list in prototypes --nounistd do not include --noFUNCTION do not generate a particular FUNCTION Miscellaneous: -c do-nothing POSIX option -n do-nothing POSIX option -? -h, --help produce this help message -V, --version report %s version Input line too long Internal error. flexopts are malformed. No backing up. Option line too long Options -+ and --reentrant are mutually exclusive.REJECT cannot be used with -f or -FREJECT entails a large performance penalty State #%d is non-accepting - Try `%s --help' for more information. Unknown error=(%d) Unmatched '{'Unrecognized option `%s' Usage: %s [OPTIONS] [FILE]... Usage: %s [OPTIONS]... Variable trailing context rule at line %d Variable trailing context rules entail a large performance penalty [:^lower:] is ambiguous in case insensitive scanner[:^upper:] ambiguous in case insensitive scannerallocation of macro definition failedallocation of sko_stack failedattempt to increase array size failedbad : %sbad character '%s' detected in check_char()bad character classbad character class expression: %sbad character inside {}'sbad character: %sbad iteration valuesbad line in skeleton filebad start condition listbad state type in mark_beginning_as_normal()bad transition character detected in sympartition()bison bridge not supported for the C++ scanner.can't open %scan't open skeleton file %sconsistency check failed in epsclosure()could not create %scould not create backing-up info file %scould not create unique end-of-buffer statecould not write tables headerdangerous trailing contextdynamic memory failure in copy_string()empty machine in dupmachine()error closing backup file %serror closing output file %serror closing skeleton file %serror creating header file %serror deleting output file %serror writing backup file %serror writing output file %sfatal parse errorfound too many transitions in mkxtion()incomplete name definitioninput error reading skeleton file %sinput rules are too complicated (>= %d NFA states)iteration value must be positivemalformed '%top' directivememory allocation failed in allocate_array()memory allocation failed in yy_flex_xmalloc()missing quotemissing }name "%s" ridiculously longname defined twicenegative range in character classoption `%s' doesn't allow an argument option `%s' is ambiguous option `%s' requires an argument premature EOFrule cannot be matchedscanner requires -8 flag to use the character %sstart condition %s declared twicestate # %4d state # %d accepts: state # %d accepts: [%d] state # %d: symbol table memory allocation failedthe character range [%c-%c] is ambiguous in a case-insensitive scannertoo many rules (> %d)!trailing context used twiceundefined definition {%s}unknown -C option '%c'unknown error processing section 1unrecognized %%option: %sunrecognized '%' directiveunrecognized rulevariable trailing context rules cannot be used with -f or -Fyymore() entails a minor performance penalty Project-Id-Version: flex 2.5.39 Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net POT-Creation-Date: 2014-03-26 15:00-0400 PO-Revision-Date: 2014-03-26 15:00-0400 Last-Translator: Automatically generated Language-Team: none Language: en@boldquot MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); ********** beginning dump of nfa with start state %d DFA Dump: Equivalence Classes: Meta-Equivalence Classes: jam-transitions: EOF %d (%d saved) hash collisions, %d DFAs equal %d backing-up (non-accepting) states %d empty table entries %d epsilon states, %d double epsilon states %d protos created %d rules %d sets of reallocations needed %d state/nextstate pairs created %d table entries %d templates created, %d uses %d total table entries needed %d/%d (peak %d) nxt-chk entries created %d/%d (peak %d) template nxt-chk entries created %d/%d DFA states (%d words) %d/%d NFA states %d/%d base-def entries created %d/%d character classes needed %d/%d words of storage, %d reused %d/%d equivalence classes created %d/%d meta-equivalence classes created %d/%d start conditions %d/%d unique/duplicate transitions Beginning-of-line patterns used Compressed tables always back-up No backing up no character classes scanner options: - and may be the actual source of other reported performance penalties associated rule line numbers: out-transitions: %%option yylineno entails a performance penalty ONLY on rules that can match newline characters %array incompatible with -+ option%d backing up (non-accepting) states. %option yyclass only meaningful for C++ scanners%option yylineno cannot be used with REJECT%s %s %s version %s usage statistics: %s: fatal internal error, %s ********** end of dump *Something Weird* - tok: %d val: %d -Cf and -CF are mutually exclusive-Cf/-CF and -Cm don't make sense together-Cf/-CF and -I are incompatible-Cf/-CF are incompatible with lex-compatibility mode-I (interactive) entails a minor performance penalty -l AT&T lex compatibility option entails a large performance penalty -s option given but default rule can be matchedAllocation of buffer for line directive failedAllocation of buffer for m4 def failedAllocation of buffer for m4 undef failedAllocation of buffer to print string failedCan't use -+ with -CF optionCan't use -+ with -l optionCan't use --reentrant or --bison-bridge with -l optionCan't use -f or -F with -l optionCompressed tables always back up. Could not write ecstblCould not write eoltblCould not write ftblCould not write ssltblCould not write yyacc_tblCould not write yyacclist_tblCould not write yybase_tblCould not write yychk_tblCould not write yydef_tblCould not write yymeta_tblCould not write yynultrans_tblCould not write yynxt_tblCould not write yynxt_tbl[][]Definition name too long Definition value for {%s} too long EOF encountered inside an actionEOF encountered inside patternEnd Marker Generates programs that perform pattern-matching on text. Table Compression: -Ca, --align trade off larger tables for better memory alignment -Ce, --ecs construct equivalence classes -Cf do not compress tables; use -f representation -CF do not compress tables; use -F representation -Cm, --meta-ecs construct meta-equivalence classes -Cr, --read use read() instead of stdio for scanner input -f, --full generate fast, large scanner. Same as -Cfr -F, --fast use alternate table representation. Same as -CFr -Cem default compression (same as --ecs --meta-ecs) Debugging: -d, --debug enable debug mode in scanner -b, --backup write backing-up information to %s -p, --perf-report write performance report to stderr -s, --nodefault suppress default rule to ECHO unmatched text -T, --trace %s should run in trace mode -w, --nowarn do not generate warnings -v, --verbose write summary of scanner statistics to stdout Files: -o, --outfile=FILE specify output filename -S, --skel=FILE specify skeleton file -t, --stdout write scanner on stdout instead of %s --yyclass=NAME name of C++ class --header-file=FILE create a C header file in addition to the scanner --tables-file[=FILE] write tables to FILE Scanner behavior: -7, --7bit generate 7-bit scanner -8, --8bit generate 8-bit scanner -B, --batch generate batch scanner (opposite of -I) -i, --case-insensitive ignore case in patterns -l, --lex-compat maximal compatibility with original lex -X, --posix-compat maximal compatibility with POSIX lex -I, --interactive generate interactive scanner (opposite of -B) --yylineno track line count in yylineno Generated code: -+, --c++ generate C++ scanner class -Dmacro[=defn] #define macro defn (default defn is '1') -L, --noline suppress #line directives in scanner -P, --prefix=STRING use STRING as prefix instead of “yy” -R, --reentrant generate a reentrant C scanner --bison-bridge scanner for bison pure parser. --bison-locations include yylloc support. --stdinit initialize yyin/yyout to stdin/stdout --noansi-definitions old-style function definitions --noansi-prototypes empty parameter list in prototypes --nounistd do not include --noFUNCTION do not generate a particular FUNCTION Miscellaneous: -c do-nothing POSIX option -n do-nothing POSIX option -? -h, --help produce this help message -V, --version report %s version Input line too long Internal error. flexopts are malformed. No backing up. Option line too long Options -+ and --reentrant are mutually exclusive.REJECT cannot be used with -f or -FREJECT entails a large performance penalty State #%d is non-accepting - Try ‘%s --help’ for more information. Unknown error=(%d) Unmatched ‘{’Unrecognized option ‘%s’ Usage: %s [OPTIONS] [FILE]... Usage: %s [OPTIONS]... Variable trailing context rule at line %d Variable trailing context rules entail a large performance penalty [:^lower:] is ambiguous in case insensitive scanner[:^upper:] ambiguous in case insensitive scannerallocation of macro definition failedallocation of sko_stack failedattempt to increase array size failedbad : %sbad character ‘%s’ detected in check_char()bad character classbad character class expression: %sbad character inside {}'sbad character: %sbad iteration valuesbad line in skeleton filebad start condition listbad state type in mark_beginning_as_normal()bad transition character detected in sympartition()bison bridge not supported for the C++ scanner.can't open %scan't open skeleton file %sconsistency check failed in epsclosure()could not create %scould not create backing-up info file %scould not create unique end-of-buffer statecould not write tables headerdangerous trailing contextdynamic memory failure in copy_string()empty machine in dupmachine()error closing backup file %serror closing output file %serror closing skeleton file %serror creating header file %serror deleting output file %serror writing backup file %serror writing output file %sfatal parse errorfound too many transitions in mkxtion()incomplete name definitioninput error reading skeleton file %sinput rules are too complicated (>= %d NFA states)iteration value must be positivemalformed ‘%top’ directivememory allocation failed in allocate_array()memory allocation failed in yy_flex_xmalloc()missing quotemissing }name “%s” ridiculously longname defined twicenegative range in character classoption ‘%s’ doesn't allow an argument option ‘%s’ is ambiguous option ‘%s’ requires an argument premature EOFrule cannot be matchedscanner requires -8 flag to use the character %sstart condition %s declared twicestate # %4d state # %d accepts: state # %d accepts: [%d] state # %d: symbol table memory allocation failedthe character range [%c-%c] is ambiguous in a case-insensitive scannertoo many rules (> %d)!trailing context used twiceundefined definition {%s}unknown -C option ‘%c’unknown error processing section 1unrecognized %%option: %sunrecognized ‘%’ directiveunrecognized rulevariable trailing context rules cannot be used with -f or -Fyymore() entails a minor performance penalty flex-2.5.39/po/quot.sed0000644000175000017500000000023112300730750015116 0ustar srivastasrivastas/"\([^"]*\)"/“\1”/g s/`\([^`']*\)'/‘\1’/g s/ '\([^`']*\)' / ‘\1’ /g s/ '\([^`']*\)'$/ ‘\1’/g s/^'\([^`']*\)' /‘\1’ /g s/“”/""/g flex-2.5.39/po/da.gmo0000644000175000017500000004772712314621665014557 0ustar srivastasrivasta  H 7I    / ' 5.O~ "#  *<3g!C$4)Y%"# 3FH`""&E0l+ $'"L)o45E$/j6! ",Of}0Kj  : )"(>"g"2w"#"+""&#?# S#a#{##*#C#3!$0U$%$$+$$"%)%C%U%j%%,%3%/% .&<&(X&&(&+&&''#'K'i''''''(8('J(r($(2( (),!)-N) |) )))!)&) *!&* H*V*0m*!* *** *% +F/+v++++"++,2,<D,-,u,;%.a.s...3.7.+/4C/x/ /-////$050-U05000'0A1#X1)|11%1$1- 282U2j2>2"22W2$J35o363234%4 <4]4'z4#4%4$4552G5Lz505(5'!6DI6)6.667707I7e77777 7868$V8#{88 8bD(yDD3D-D- E#NE'rEE EEEE6EP/F3F3F+FG'2GZG!mGGGGG!G2H-FH-tHHH/HI0I-IIwII(II)I!J$@J&eJJ,J JJ%K>K%[K8K!KK5K6-LdLyLLLL&LMMl= m&|[i+*"ePEG~ Y ********** beginning dump of nfa with start state %d DFA Dump: Equivalence Classes: Meta-Equivalence Classes: jam-transitions: EOF %d (%d saved) hash collisions, %d DFAs equal %d backing-up (non-accepting) states %d empty table entries %d epsilon states, %d double epsilon states %d protos created %d rules %d sets of reallocations needed %d state/nextstate pairs created %d table entries %d templates created, %d uses %d total table entries needed %d/%d (peak %d) nxt-chk entries created %d/%d (peak %d) template nxt-chk entries created %d/%d DFA states (%d words) %d/%d NFA states %d/%d base-def entries created %d/%d character classes needed %d/%d words of storage, %d reused %d/%d equivalence classes created %d/%d meta-equivalence classes created %d/%d start conditions %d/%d unique/duplicate transitions Beginning-of-line patterns used Compressed tables always back-up No backing up no character classes scanner options: - and may be the actual source of other reported performance penalties associated rule line numbers: out-transitions: %%option yylineno entails a performance penalty ONLY on rules that can match newline characters %array incompatible with -+ option%d backing up (non-accepting) states. %option yyclass only meaningful for C++ scanners%option yylineno cannot be used with REJECT%s %s %s version %s usage statistics: %s: fatal internal error, %s ********** end of dump *Something Weird* - tok: %d val: %d -Cf and -CF are mutually exclusive-Cf/-CF and -Cm don't make sense together-Cf/-CF and -I are incompatible-Cf/-CF are incompatible with lex-compatibility mode-I (interactive) entails a minor performance penalty -l AT&T lex compatibility option entails a large performance penalty -s option given but default rule can be matchedCan't use -+ with -CF optionCan't use -+ with -l optionCan't use --reentrant or --bison-bridge with -l optionCan't use -f or -F with -l optionCompressed tables always back up. Could not write ecstblCould not write eoltblCould not write ftblCould not write ssltblCould not write yyacc_tblCould not write yyacclist_tblCould not write yybase_tblCould not write yychk_tblCould not write yydef_tblCould not write yymeta_tblCould not write yynultrans_tblCould not write yynxt_tblCould not write yynxt_tbl[][]EOF encountered inside an actionEOF encountered inside patternEnd Marker Generates programs that perform pattern-matching on text. Table Compression: -Ca, --align trade off larger tables for better memory alignment -Ce, --ecs construct equivalence classes -Cf do not compress tables; use -f representation -CF do not compress tables; use -F representation -Cm, --meta-ecs construct meta-equivalence classes -Cr, --read use read() instead of stdio for scanner input -f, --full generate fast, large scanner. Same as -Cfr -F, --fast use alternate table representation. Same as -CFr -Cem default compression (same as --ecs --meta-ecs) Debugging: -d, --debug enable debug mode in scanner -b, --backup write backing-up information to %s -p, --perf-report write performance report to stderr -s, --nodefault suppress default rule to ECHO unmatched text -T, --trace %s should run in trace mode -w, --nowarn do not generate warnings -v, --verbose write summary of scanner statistics to stdout Files: -o, --outfile=FILE specify output filename -S, --skel=FILE specify skeleton file -t, --stdout write scanner on stdout instead of %s --yyclass=NAME name of C++ class --header-file=FILE create a C header file in addition to the scanner --tables-file[=FILE] write tables to FILE Scanner behavior: -7, --7bit generate 7-bit scanner -8, --8bit generate 8-bit scanner -B, --batch generate batch scanner (opposite of -I) -i, --case-insensitive ignore case in patterns -l, --lex-compat maximal compatibility with original lex -X, --posix-compat maximal compatibility with POSIX lex -I, --interactive generate interactive scanner (opposite of -B) --yylineno track line count in yylineno Generated code: -+, --c++ generate C++ scanner class -Dmacro[=defn] #define macro defn (default defn is '1') -L, --noline suppress #line directives in scanner -P, --prefix=STRING use STRING as prefix instead of "yy" -R, --reentrant generate a reentrant C scanner --bison-bridge scanner for bison pure parser. --bison-locations include yylloc support. --stdinit initialize yyin/yyout to stdin/stdout --noansi-definitions old-style function definitions --noansi-prototypes empty parameter list in prototypes --nounistd do not include --noFUNCTION do not generate a particular FUNCTION Miscellaneous: -c do-nothing POSIX option -n do-nothing POSIX option -? -h, --help produce this help message -V, --version report %s version Input line too long Internal error. flexopts are malformed. No backing up. Options -+ and --reentrant are mutually exclusive.REJECT cannot be used with -f or -FREJECT entails a large performance penalty State #%d is non-accepting - Try `%s --help' for more information. Unknown error=(%d) Unmatched '{'Unrecognized option `%s' Usage: %s [OPTIONS] [FILE]... Usage: %s [OPTIONS]... Variable trailing context rule at line %d Variable trailing context rules entail a large performance penalty [:^lower:] is ambiguous in case insensitive scanner[:^upper:] ambiguous in case insensitive scannerattempt to increase array size failedbad : %sbad character '%s' detected in check_char()bad character classbad character class expression: %sbad character inside {}'sbad character: %sbad iteration valuesbad line in skeleton filebad start condition listbad state type in mark_beginning_as_normal()bad transition character detected in sympartition()bison bridge not supported for the C++ scanner.can't open %scan't open skeleton file %sconsistency check failed in epsclosure()could not create %scould not create backing-up info file %scould not create unique end-of-buffer statecould not write tables headerdangerous trailing contextdynamic memory failure in copy_string()empty machine in dupmachine()error closing backup file %serror closing output file %serror closing skeleton file %serror creating header file %serror deleting output file %serror writing backup file %serror writing output file %sfatal parse errorfound too many transitions in mkxtion()incomplete name definitioninput error reading skeleton file %sinput rules are too complicated (>= %d NFA states)iteration value must be positivemalformed '%top' directivememory allocation failed in allocate_array()memory allocation failed in yy_flex_xmalloc()missing quotemissing }name "%s" ridiculously longname defined twicenegative range in character classoption `%s' doesn't allow an argument option `%s' is ambiguous option `%s' requires an argument premature EOFrule cannot be matchedscanner requires -8 flag to use the character %sstart condition %s declared twicestate # %4d state # %d accepts: state # %d accepts: [%d] state # %d: symbol table memory allocation failedthe character range [%c-%c] is ambiguous in a case-insensitive scannertoo many rules (> %d)!trailing context used twiceundefined definition {%s}unknown -C option '%c'unknown error processing section 1unrecognized %%option: %sunrecognized '%' directiveunrecognized rulevariable trailing context rules cannot be used with -f or -Fyymore() entails a minor performance penalty Project-Id-Version: flex-2.5.35 Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net POT-Creation-Date: 2014-03-26 15:00-0400 PO-Revision-Date: 2011-01-11 09:12+0100 Last-Translator: Keld Simonsen Language-Team: Danish Language: da MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8-bit ********** begynder udskrift af nfa med starttilstand %d DFA-udskrift: kvivalensklasser: Meta-kvivalensklasser: stopovergange: filslut %d (%d gemte) hash-kollisioner, %d DFA'er er ens %d sikkerhedskopierer (ikke-accepterende) tilstande. %d tomme tabelposter %d epsilontilstande, %d dobbelte epsilontilstande %d prototyper oprettede %d regler %d opstninger med omallokeringer krvedes %d par med tilstand/nste-tilstand oprettede %d tabelposter %d skabloner oprettede, %d forml %d totale tabelposter krves %d/%d (max %d) nste/test-poster oprettede %d/%d (max %d) skablon-nste/test-poster oprettede %d/%d DFA-tilstand (%d ord) %d/%d NFA-tilstand %d/%d base/standard-poster oprettede %d/%d tegnklasser behvede %d/%d ord for gemning, %d genbrugte %d/%d kvivalensklasser oprettet %d/%d meta-kvivalensklasser oprettede %d/%d startbetingelse %d/%d unikke/duplikerede overgange Begyndelse-af-linje-mnster brugt Komprimerede tabeller bakker altid tilbake Ingen sikkerhedskopiering ingen tegnklasser fortolkningsflag: - og kan vre den egentlige rsag til andre rapporter om dette linjenummer for associeret regel: ud-overgange: %%option yylineno medfrer et prstationstab KUN p regler der kan matche nylinje-tegn -+ kan ikke bruges sammen med %array%d sikkerhedskopierer (ikke-accepterende) tilstande. %option yyclass er kun meningsfyldt for C++-fortolkere%option yylineno kan ikke bruges sammen med REJECT%s %s Statistik over brugaf %s version %s: %s: uoprettelig intern fejl, %s ********** slut p udskrift *Noget mrkeligt* - tegn: %d vrdi: %d -Cf og -CF er gensidigt udelukkende-Cf/-CF og -Cm kan ikke bruges sammen-Cf/-CF og -I kan ikke bruges sammen-Cf/-CF kan ikke bruges i lex-kompatibilitetstilstand-I (interaktiv) medfrer et mindre prstationstab flaget -l for opfrsel som AT&T's lex medfrer et vsentligt prstationstab flaget -s angivet, men standardreglen kan flges-+ kan ikke bruges sammen med flaget -CF-+ kan ikke bruges sammen med flaget -lKan ikke bruge --reentrant eller --bison-bridge sammen med flaget -l-f eller -F kan ikke bruges sammen med -lKomprimerete tabeller backer alltid tillbaka. Kunne ikke skrive esctblKunne ikke skrive eoltblKunne ikke skrive ftblKunne ikke skrive ssltblKunne ikke skrive yyacc_tblKunne ikke skrive yyacclist_tblkunne ikke oprette yybase_tblKunne ikke skrive yychk_tblKunne ikke oprette yydef_tblKunne ikke skrive yymeta_tblKunne ikke skrive yynultrans_tblKunne ikke skrive yynxt_tblKunne ikke skrive yynxt_tbl[][]filslutning mdt inden i en handlingfilslutning mdt inden i et mnsterSlutmarkering Genererer programmer som udfrer mnstergenkendelse p tekst. Tabel-kompression: (normalt -Cem) -Ca, --align brug bedre hukommelses-tilpasning i stedet for mindre tabeller -Ce, --ecs konstrur kvivalensklasser -Cf komprimr ikke tabeller; brug -f reprsentation -CF komprimr ikke tabeller; brug -F reprsentation -Cm, --meta-ecs konstrur meta-kvivalensklasser -Cr, --read brug read() i stedet for stdio til skanner-inddata -f, --full generr hurtig, stor skanner. Det samme som -Cfr -F, --fast brug alternativ tabelreprsentation. Det samme som -CFr -Cem standard kompression (det samme som --ecs --meta-ecs) Fejlsgning: -d, --debug aktivr fejlsgnings-tilstand i skanneren -b, --backup skriv sikkerhedskopi-information til %s -p, --perf-report skriv ydelses-rapport p stdfejl -s, --nodefault undertryk normal regel om at udskrive tekst der ikke passede -T, --trace %s br kre i sporings-tilstand -w, --nowarn generr ikke advarsler -v, --verbose skriv sammendrag af skanner-statistik til stdud Filer: -o, --outfile=FILE angiv uddata-filnavn -S, --skel=FILE angiv skelet-fil -t, --stdout skriv skanner p stdud i stedet for p %s --yyclass=NAVN navn p C++-klasse --header=FIL opret en C header-fil sammen med skanneren --tables-file[=FIL] skriv tabeller til FIL Skannerens opfrsel: -7, --7bit generr 7-bit-skanner -8, --8bit generr 8-bit-skanner -B, --batch generr batch-skanner (modsat -I) -i, --case-insensitive ignorr forskel p sm og store bogstaver i mnstre -l, --lex-compat maksimal kompatibilitet med oprindelig lex -X, --posix-compat maksimal kompatibilitet med POSIX lex -I, --interactive generr interaktiv skanner (modsat -B) --yylineno notr linjenummer i yylineno Genereret kode: -+, --c++ generr C++ skanner-klasse -Dmacro[=defn] #define macro defn (forvalgt defn er '1') -L, --noline undertryk #line-direktiver i skanner -P, --prefix=STRENG brug STRENG som begyndelse i stedet for 'yy' -R, --reentrant generr en reentrant C-skanner --bison-bridge skanner for ren Bison-fortolker. --bison-locations med yylloc understttelse. --stdinit initialisr yyin/yyout til stdind/stdud --noansi-definitions definitioner af funktioner i gammel stl --noansi-prototypes tom parameterliste i prototyper --nounistd udelad --noFUNKTION generr ikke en bestemt FUNKTION Forskelligt: -c POSIX-flag der ikke udfres -n POSIX-flag der ikke udfres -? -h, --help udskriv denne hjlpebesked -V, --version udskriv %s version For lang inddatalinje Intern fejl. flexopts er fejlbehftede. Ingen sikkerhedskopiering. Flagene -+ og --reentrant er gensidigt udelukkende.REJECT kan ikke bruges sammen med -f eller -FREJECT medfrer et vsentligt prstationstab Tilstand %d er ikke-accepterende - Prv '%s --help' for mere information. Ukendt fejl=(%d) Ensomt '{'Ukendt flag: '%s' Brug: %s [FLAG] [FIL]... Brug: %s [FLAG]... Regel for variabel efterflgende kontekst p linje %d Regler for variabel efterflgende kontekst medfrer et vsentlig prstationstab [:^lower:] er flertydigt i en versaluflsom skanner[:^upper:] er flertydigt i en versaluflsom skannerforsg p at ge arraystrrelse mislykkedesforkert : %sforkert tegn '%s' fundet i check_char()forkert tegnklasseforkert udtryk for tegnklasse: %sforkert tegn imellem {}forkert tegn: %sfejlagtige iterationsvrdierforkert linje i skeletfilenforkert liste af startbetingelserforkert tilstandstype i mark_beginning_as_normal()forkert overgangstegn fundet i sympartition()bisonbro understttes ikke for C++-skanneren.kan ikke bne %skan ikke bne skabelonfilen %skonsistenskontrollen mislykkedes i epsclosure()kunne ikke oprette %skunne ikke oprette sikkerhedskopi af info-fil %skunne ikke oprette en unik buffersluttilstandkunne ikke skrive tabellhovedfarlig efterflgende kontekstdynamisk hukommelsesfejl i copy_string()tom maskine i dupmachine()fejl ved lukning af sikerhedskopifilen %sfejl ved lukning af udfilen %sfejl ved lukning af skabelonfilen %sfejl ved oprettelsen af headerfilen %sfejl ved sletning af udfilen %sfejl ved skrivning af sikkerhedskopifilen %sfejl ved skrivning af udfilen %suoprettelig fejl ved analysenfandt for mange overgange i mkxtion()ufuldstndig navnedefinitionfejl ved lsning af skabelonsfilen %sinddatareglerne er for komplicerede (>= %d NFA-tilstand)iterationsvrdi skal vre positivfejlagtigt '%top'-direktivhukommelsestildelingen mislykkedes i allocate_array()hukommelsestildelingen mislykkedes i yy_flex_xmalloc()citationstegn savnes} savnesnavnet '%s' er latterligt langtnavnet defineret to gangenegativt interval i tegnklasseflaget '%s' tager ikke noget argument flaget '%s' er flertydig flaget '%s' krver et argument for tidlig filslutreglen kan ikke matchesskanneren krver flaget -8 for at kunne bruge tegnet %sstartbetingelse %s deklareret to gangetilstand %4d tilstand %d accepterer: tilstand %d accepterer: [%d] tilstand %d: hukommelsestildeling for symboltabel mislykkedestegnintervallet [%c-%c] er flertydigt i en versaluflsom skannerfor mange regler (> %d)!efterflgende kontekst brugt to gangeudefinieret definition {%s}ukendt flag til -C '%c'ukendt fejl ved tolkning af sektion 1ukendt %%option: %sukendt '%'-direktivukendt regelregler for variabel efterflgende kontekst kan ikke bruges sammen med -f eller -Fyymore() medfrer et mindre prstationstab flex-2.5.39/po/insert-header.sin0000644000175000017500000000124012300730747016705 0ustar srivastasrivasta# Sed script that inserts the file called HEADER before the header entry. # # At each occurrence of a line starting with "msgid ", we execute the following # commands. At the first occurrence, insert the file. At the following # occurrences, do nothing. The distinction between the first and the following # occurrences is achieved by looking at the hold space. /^msgid /{ x # Test if the hold space is empty. s/m/m/ ta # Yes it was empty. First occurrence. Read the file. r HEADER # Output the file's contents by reading the next line. But don't lose the # current line while doing this. g N bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } flex-2.5.39/po/pl.po0000644000175000017500000006244412314621665014433 0ustar srivastasrivasta# Polish translation for flex. # Copyright (C) 2007, 2012 The Flex Project (msgids) # This file is distributed under the same license as the flex package. # # Jakub Bogusz , 2003-2012. msgid "" msgstr "" "Project-Id-Version: flex 2.5.36\n" "Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2014-03-26 15:00-0400\n" "PO-Revision-Date: 2012-08-02 18:15+0200\n" "Last-Translator: Jakub Bogusz \n" "Language-Team: Polish \n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-2\n" "Content-Transfer-Encoding: 8bit\n" #: buf.c:78 msgid "Allocation of buffer to print string failed" msgstr "Przydzielenie bufora do wypisania acucha nie powiodo si" #: buf.c:100 msgid "Allocation of buffer for line directive failed" msgstr "Przydzielenie bufora dla dyrektywy linii nie powiodo si" #: buf.c:177 msgid "Allocation of buffer for m4 def failed" msgstr "Przydzielenie bufora dla polecenia m4 def powiodo si" #: buf.c:197 msgid "Allocation of buffer for m4 undef failed" msgstr "Przydzielenie bufora dla polecenia m4 undef powiodo si" #: dfa.c:61 #, c-format msgid "State #%d is non-accepting -\n" msgstr "Stan #%d jest nieakceptujcy -\n" #: dfa.c:124 msgid "dangerous trailing context" msgstr "niebezpieczny kontekst kocowy" #: dfa.c:166 #, c-format msgid " associated rule line numbers:" msgstr " numery linii powizanych regu:" #: dfa.c:202 #, c-format msgid " out-transitions: " msgstr " przejcia-wyjciowe: " #: dfa.c:210 #, c-format msgid "" "\n" " jam-transitions: EOF " msgstr "" "\n" " przejcia-zaptlajce: EOF " #: dfa.c:341 msgid "consistency check failed in epsclosure()" msgstr "kontrola spjnoci nie powioda si w epsclosure()" #: dfa.c:429 msgid "" "\n" "\n" "DFA Dump:\n" "\n" msgstr "" "\n" "\n" "Zrzut DFA:\n" "\n" #: dfa.c:604 msgid "could not create unique end-of-buffer state" msgstr "nie mona utworzy unikalnego stanu koca bufora" #: dfa.c:625 #, c-format msgid "state # %d:\n" msgstr "stan # %d:\n" #: dfa.c:785 msgid "Could not write yynxt_tbl[][]" msgstr "Nie mona zapisa yynxt_tbl[][]" #: dfa.c:1049 msgid "bad transition character detected in sympartition()" msgstr "wykryto bdny znak przejcia w sympartition()" #: gen.c:478 msgid "" "\n" "\n" "Equivalence Classes:\n" "\n" msgstr "" "\n" "\n" "Klasy rwnowanoci:\n" "\n" #: gen.c:662 gen.c:691 gen.c:1215 #, c-format msgid "state # %d accepts: [%d]\n" msgstr "stan # %d akceptuje: [%d]\n" #: gen.c:1110 #, c-format msgid "state # %d accepts: " msgstr "stan # %d akceptuje: " #: gen.c:1157 msgid "Could not write yyacclist_tbl" msgstr "Nie mona zapisa yyacclist_tbl" #: gen.c:1233 msgid "Could not write yyacc_tbl" msgstr "Nie mona zapisa yyacc_tbl" #: gen.c:1248 gen.c:1633 gen.c:1656 msgid "Could not write ecstbl" msgstr "Nie mona zapisa ecstbl" #: gen.c:1271 msgid "" "\n" "\n" "Meta-Equivalence Classes:\n" msgstr "" "\n" "\n" "Klasy meta-rwnowanoci:\n" #: gen.c:1293 msgid "Could not write yymeta_tbl" msgstr "Nie mona zapisa yymeta_tbl" #: gen.c:1354 msgid "Could not write yybase_tbl" msgstr "Nie mona zapisa yybase_tbl" #: gen.c:1388 msgid "Could not write yydef_tbl" msgstr "Nie mona zapisa yydef_tbl" #: gen.c:1428 msgid "Could not write yynxt_tbl" msgstr "Nie mona zapisa yynxt_tbl" #: gen.c:1464 msgid "Could not write yychk_tbl" msgstr "Nie mona zapisa yychk_tbl" #: gen.c:1618 gen.c:1647 msgid "Could not write ftbl" msgstr "Nie mona zapisa ftbl" #: gen.c:1624 msgid "Could not write ssltbl" msgstr "Nie mona zapisa ssltbl" #: gen.c:1675 msgid "Could not write eoltbl" msgstr "Nie mona zapisa eoltbl" #: gen.c:1735 msgid "Could not write yynultrans_tbl" msgstr "Nie mona zapisa yynultrans_tbl" #: main.c:191 msgid "rule cannot be matched" msgstr "nie mona dopasowa reguy" #: main.c:196 msgid "-s option given but default rule can be matched" msgstr "podano opcj -s, ale domylna regua moe by dopasowana" #: main.c:236 msgid "Can't use -+ with -l option" msgstr "Nie mona uy -+ z opcj -l" #: main.c:239 msgid "Can't use -f or -F with -l option" msgstr "Nie mona uy -f ani -F z opcj -l" #: main.c:243 msgid "Can't use --reentrant or --bison-bridge with -l option" msgstr "Nie mona uy --reentrant ani --bison-bridge z opcj -l" #: main.c:275 msgid "-Cf/-CF and -Cm don't make sense together" msgstr "-Cf/-CF i -Cm razem nie maj sensu" #: main.c:278 msgid "-Cf/-CF and -I are incompatible" msgstr "-Cf/-CF i -I s niekompatybilne" #: main.c:282 msgid "-Cf/-CF are incompatible with lex-compatibility mode" msgstr "-Cf/-CF s niekompatybilne z trybem kompatybilnoci z leksem" #: main.c:287 msgid "-Cf and -CF are mutually exclusive" msgstr "-Cf i -CF wykluczaj si wzajemnie" #: main.c:291 msgid "Can't use -+ with -CF option" msgstr "Nie mona uy -+ z opcj -CF" #: main.c:294 #, c-format msgid "%array incompatible with -+ option" msgstr "%array jest niekompatybilne z opcj -+" #: main.c:299 msgid "Options -+ and --reentrant are mutually exclusive." msgstr "Opcje -+ i --reentrant wykluczaj si wzajemnie." #: main.c:302 msgid "bison bridge not supported for the C++ scanner." msgstr "pomost dla bisona nie jest obsugiwany dla skanera C++." #: main.c:357 main.c:403 #, c-format msgid "could not create %s" msgstr "nie mona utworzy %s" #: main.c:416 msgid "could not write tables header" msgstr "nie mona zapisa nagwka tablic" #: main.c:420 #, c-format msgid "can't open skeleton file %s" msgstr "nie mona otworzy pliku szablonu %s" #: main.c:456 msgid "allocation of macro definition failed" msgstr "przydzielenie pamici dla definicji makra nie powiodo si" #: main.c:504 #, c-format msgid "input error reading skeleton file %s" msgstr "bd wejcia podczas odczytu pliku szablonu %s" #: main.c:508 #, c-format msgid "error closing skeleton file %s" msgstr "bd podczas zamykania pliku szablonu %s" #: main.c:693 #, c-format msgid "error creating header file %s" msgstr "bd podczas tworzenia pliku nagwkowego %s" #: main.c:701 #, c-format msgid "error writing output file %s" msgstr "bd podczas zapisu pliku wyjciowego %s" #: main.c:705 #, c-format msgid "error closing output file %s" msgstr "bd podczas zamykania pliku wyjciowego %s" #: main.c:709 #, c-format msgid "error deleting output file %s" msgstr "bd podczas usuwania pliku wyjciowego %s" #: main.c:716 #, c-format msgid "No backing up.\n" msgstr "Bez zapamitywania.\n" #: main.c:720 #, c-format msgid "%d backing up (non-accepting) states.\n" msgstr "%d zapamitywanych stanw (nie akceptujcych).\n" #: main.c:724 #, c-format msgid "Compressed tables always back up.\n" msgstr "Skompresowane tablice zawsze zapamituj.\n" #: main.c:727 #, c-format msgid "error writing backup file %s" msgstr "bd podczas zapisu pliku raportu z zapamitywania %s" #: main.c:731 #, c-format msgid "error closing backup file %s" msgstr "bd podczas zamykania pliku raportu z zapamitywania %s" #: main.c:736 #, c-format msgid "%s version %s usage statistics:\n" msgstr "%s w wersji %s - statystyka uycia:\n" #: main.c:739 #, c-format msgid " scanner options: -" msgstr " opcje skanera: -" #: main.c:818 #, c-format msgid " %d/%d NFA states\n" msgstr " %d/%d stanw NFA\n" #: main.c:820 #, c-format msgid " %d/%d DFA states (%d words)\n" msgstr " %d/%d stanw DFA (%d sw)\n" #: main.c:822 #, c-format msgid " %d rules\n" msgstr " %d regu\n" #: main.c:827 #, c-format msgid " No backing up\n" msgstr " Bez zapamitywania\n" #: main.c:831 #, c-format msgid " %d backing-up (non-accepting) states\n" msgstr " %d zapamitywanych stanw (nie akceptujcych)\n" #: main.c:836 #, c-format msgid " Compressed tables always back-up\n" msgstr " Skompresowane tablice zawsze zapamituj\n" #: main.c:840 #, c-format msgid " Beginning-of-line patterns used\n" msgstr " Uytych wzorcw pocztek-linii\n" #: main.c:842 #, c-format msgid " %d/%d start conditions\n" msgstr " %d/%d warunkw pocztkowych\n" #: main.c:846 #, c-format msgid " %d epsilon states, %d double epsilon states\n" msgstr " %d stanw epsilonowych, %d stanw podwjnie epsilonowych\n" #: main.c:850 #, c-format msgid " no character classes\n" msgstr " bez klas znakw\n" #: main.c:854 #, c-format msgid " %d/%d character classes needed %d/%d words of storage, %d reused\n" msgstr "" " %d/%d klas znakw potrzebuje %d/%d sw pamici, %d ponownie uytych\n" #: main.c:859 #, c-format msgid " %d state/nextstate pairs created\n" msgstr " %d utworzonych par stan/nastpny-stan\n" #: main.c:862 #, c-format msgid " %d/%d unique/duplicate transitions\n" msgstr " %d/%d przej unikalny/duplikat\n" #: main.c:867 #, c-format msgid " %d table entries\n" msgstr " %d elementw tablicy\n" #: main.c:875 #, c-format msgid " %d/%d base-def entries created\n" msgstr " %d/%d utworzonych elementw base-def\n" #: main.c:879 #, c-format msgid " %d/%d (peak %d) nxt-chk entries created\n" msgstr " %d/%d (maksymalnie %d) utworzonych elementw nxt-chk\n" #: main.c:883 #, c-format msgid " %d/%d (peak %d) template nxt-chk entries created\n" msgstr " %d/%d (maksymalnie %d) utworzonych szablonowych elementw nxt-chk\n" #: main.c:887 #, c-format msgid " %d empty table entries\n" msgstr " %d pustych elementw tablicy\n" #: main.c:889 #, c-format msgid " %d protos created\n" msgstr " %d utworzonych prototypw\n" #: main.c:892 #, c-format msgid " %d templates created, %d uses\n" msgstr " %d utworzonych szablonw, %d uy\n" #: main.c:900 #, c-format msgid " %d/%d equivalence classes created\n" msgstr " %d/%d utworzonych klas rwnowanoci\n" #: main.c:908 #, c-format msgid " %d/%d meta-equivalence classes created\n" msgstr " %d/%d utworzonych klas meta-rwnowanoci\n" #: main.c:914 #, c-format msgid " %d (%d saved) hash collisions, %d DFAs equal\n" msgstr " %d (%d zachowanych) kolizji haszy, %d jednakowych DFA\n" #: main.c:916 #, c-format msgid " %d sets of reallocations needed\n" msgstr " %d potrzebnych zbiorw realokacji\n" #: main.c:918 #, c-format msgid " %d total table entries needed\n" msgstr " %d potrzebnych ogem elementw tablicy\n" #: main.c:995 #, c-format msgid "Internal error. flexopts are malformed.\n" msgstr "Bd wewntrzny. le sformuowane flexopts.\n" #: main.c:1005 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "`%s --help' poda wicej informacji.\n" #: main.c:1062 #, c-format msgid "unknown -C option '%c'" msgstr "nieznana opcja -C '%c'" #: main.c:1191 #, c-format msgid "%s %s\n" msgstr "%s %s\n" #: main.c:1466 msgid "fatal parse error" msgstr "krytyczny bd analizy skadni" #: main.c:1498 #, c-format msgid "could not create backing-up info file %s" msgstr "nie mona utworzy pliku informacji o zapamitywaniu %s" #: main.c:1519 #, c-format msgid "-l AT&T lex compatibility option entails a large performance penalty\n" msgstr "opcja -l zgodnoci z leksem AT&T powoduje du strat wydajnoci\n" #: main.c:1522 #, c-format msgid " and may be the actual source of other reported performance penalties\n" msgstr " i moe by przyczyn innych zgaszanych strat wydajnoci\n" #: main.c:1528 #, c-format msgid "" "%%option yylineno entails a performance penalty ONLY on rules that can match " "newline characters\n" msgstr "" "%%option yylineno powoduje straty wydajnoci TYLKO dla regu dopasowujcych " "znak koca linii\n" #: main.c:1535 #, c-format msgid "-I (interactive) entails a minor performance penalty\n" msgstr "-I (interaktywny) powoduje ma strat wydajnoci\n" #: main.c:1540 #, c-format msgid "yymore() entails a minor performance penalty\n" msgstr "yymore() powoduje ma strat wydajnoci\n" #: main.c:1546 #, c-format msgid "REJECT entails a large performance penalty\n" msgstr "REJECT powoduje du strat wydajnoci\n" #: main.c:1551 #, c-format msgid "Variable trailing context rules entail a large performance penalty\n" msgstr "" "Reguy ze zmiennym kocowym kontekstem powoduj du strat wydajnoci\n" #: main.c:1563 msgid "REJECT cannot be used with -f or -F" msgstr "REJECT nie moe by uyte z -f ani -F" #: main.c:1566 #, c-format msgid "%option yylineno cannot be used with REJECT" msgstr "%option yylineno nie moe by uyte z REJECT" #: main.c:1569 msgid "variable trailing context rules cannot be used with -f or -F" msgstr "reguy ze zmiennym kocowym kontekstem nie mog by uyte z -f ani -F" #: main.c:1692 #, c-format msgid "%option yyclass only meaningful for C++ scanners" msgstr "%option yyclass ma znaczenie tylko dla skanerw C++" #: main.c:1799 #, c-format msgid "Usage: %s [OPTIONS] [FILE]...\n" msgstr "Skadnia: %s [OPCJE] [PLIK]...\n" #: main.c:1802 #, c-format msgid "" "Generates programs that perform pattern-matching on text.\n" "\n" "Table Compression:\n" " -Ca, --align trade off larger tables for better memory alignment\n" " -Ce, --ecs construct equivalence classes\n" " -Cf do not compress tables; use -f representation\n" " -CF do not compress tables; use -F representation\n" " -Cm, --meta-ecs construct meta-equivalence classes\n" " -Cr, --read use read() instead of stdio for scanner input\n" " -f, --full generate fast, large scanner. Same as -Cfr\n" " -F, --fast use alternate table representation. Same as -CFr\n" " -Cem default compression (same as --ecs --meta-ecs)\n" "\n" "Debugging:\n" " -d, --debug enable debug mode in scanner\n" " -b, --backup write backing-up information to %s\n" " -p, --perf-report write performance report to stderr\n" " -s, --nodefault suppress default rule to ECHO unmatched text\n" " -T, --trace %s should run in trace mode\n" " -w, --nowarn do not generate warnings\n" " -v, --verbose write summary of scanner statistics to stdout\n" "\n" "Files:\n" " -o, --outfile=FILE specify output filename\n" " -S, --skel=FILE specify skeleton file\n" " -t, --stdout write scanner on stdout instead of %s\n" " --yyclass=NAME name of C++ class\n" " --header-file=FILE create a C header file in addition to the " "scanner\n" " --tables-file[=FILE] write tables to FILE\n" "\n" "Scanner behavior:\n" " -7, --7bit generate 7-bit scanner\n" " -8, --8bit generate 8-bit scanner\n" " -B, --batch generate batch scanner (opposite of -I)\n" " -i, --case-insensitive ignore case in patterns\n" " -l, --lex-compat maximal compatibility with original lex\n" " -X, --posix-compat maximal compatibility with POSIX lex\n" " -I, --interactive generate interactive scanner (opposite of -B)\n" " --yylineno track line count in yylineno\n" "\n" "Generated code:\n" " -+, --c++ generate C++ scanner class\n" " -Dmacro[=defn] #define macro defn (default defn is '1')\n" " -L, --noline suppress #line directives in scanner\n" " -P, --prefix=STRING use STRING as prefix instead of \"yy\"\n" " -R, --reentrant generate a reentrant C scanner\n" " --bison-bridge scanner for bison pure parser.\n" " --bison-locations include yylloc support.\n" " --stdinit initialize yyin/yyout to stdin/stdout\n" " --noansi-definitions old-style function definitions\n" " --noansi-prototypes empty parameter list in prototypes\n" " --nounistd do not include \n" " --noFUNCTION do not generate a particular FUNCTION\n" "\n" "Miscellaneous:\n" " -c do-nothing POSIX option\n" " -n do-nothing POSIX option\n" " -?\n" " -h, --help produce this help message\n" " -V, --version report %s version\n" msgstr "" "Generowanie programw wykonujcych na tekcie dopasowywanie wzorcw.\n" "\n" "Komprecja tablic:\n" " -Ca, --align uycie wikszych tablic dla lepszego wyrwnania pamici\n" " -Ce, --ecs konstruowanie klas rwnowanoci\n" " -Cf nie kompresowanie tablic; uycie reprezentacji -f\n" " -CF nie kompresowanie tablic; uycie reprezentacji -F\n" " -Cm, --meta-ecs konstruowanie klas meta-rwnowanoci\n" " -Cr, --read uycie read() zamiast stdio dla wejcia skanera\n" " -f, --full wygenerowanie szybkiego, wielkiego skanera. To samo co -" "Cfr\n" " -F, --fast uycie alternatywnej reprezentacji tablic. To samo co -" "CFr\n" " -Cem domylne kompresowanie (to samo co --ecs --meta-ecs)\n" "\n" "Diagnostyka:\n" " -d, --debug wczenie trybu diagnostycznego (debug) w " "skanerze\n" " -b, --backup zapisanie informacji o zapamitywaniu do %s\n" " -p, --perf-report wypisanie raportu o wydajnoci na stderr\n" " -s, --nodefault pominicie domylnej reguy ECHO dla " "niedopasowanego\n" " tekstu\n" " -T, --trace %s powinien dziaa w trybie ledzenia\n" " -w, --nowarn nie generowanie ostrzee\n" " -v, --verbose wypisanie podsumowania statystyk skanera na " "stdout\n" "\n" "Pliki:\n" " -o, --outfile=PLIK podanie nazwy pliku wyjciowego\n" " -S, --skel=PLIK podanie pliku szablonu\n" " -t, --stdout zapis wyjcia skanera na stdout zamiast %s\n" " --yyclass=NAZWA nazwa klasy C++\n" " --header-file=PLIK utworzenie pliku nagwkowego C oprcz skanera\n" " --tables-file[=PLIK] zapisanie tablic do PLIKU\n" "\n" "Zachowanie skanera:\n" " -7, --7bit wygenerowanie skanera 7-bitowego\n" " -8, --8bit wygenerowanie skanera 8-bitowego\n" " -B, --batch wygenerowanie skanera wsadowego (przeciwiestwo -" "I)\n" " -i, --case-insensitive ignorowanie wielkoci liter we wzorcach\n" " -l, --lex-compat maksymalna kompatybilno z oryginalnym leksem\n" " -X, --posix-compat maksymalna kompatybilno z leksem POSIX\n" " -I, --interactive wygenerowanie skanera interaktywnego (przeciw. -" "B)\n" " --yylineno ledzenie liczby linii w yylineno\n" "\n" "Generowany kod:\n" " -+, --c++ wygenerowanie klasy skanera w C++\n" " -Dmakro[=defn] #define makro defn (domylne defn to '1')\n" " -L, --noline pominicie dyrektyw #line w skanerze\n" " -P, --prefix=ACUCH uycie jako prefiksu ACUCHA zamiast \"yy\"\n" " -R, --reentrant wygenerowanie wielobienego skanera w C\n" " --bison-bridge skaner dla czystego analizatora w bisonie\n" " --bison-locations dodanie obsugi yylloc\n" " --stdinit zainicjowanie yyin/yyout na stdin/stdout\n" " --noansi-definitions definicje funkcji w starym stylu\n" " --noansi-prototypes puste listy parametrw w prototypach\n" " --nounistd nie doczanie \n" " --noFUNKCJA nie generowanie podanej FUNKCJI\n" "\n" "Rne:\n" " -c nic nie robica opcja POSIX\n" " -n nic nie robica opcja POSIX\n" " -?\n" " -h, --help wywietlenie tego pomocnego opisu\n" " -V, --version podanie wersji programu %s\n" #: misc.c:65 msgid "allocation of sko_stack failed" msgstr "przydzielenie sko_stack nie powiodo si" #: misc.c:102 misc.c:128 #, c-format msgid "name \"%s\" ridiculously long" msgstr "nazwa \"%s\" jest miesznie duga" #: misc.c:177 msgid "memory allocation failed in allocate_array()" msgstr "nie udao si przydzieli pamici w allocate_array()" #: misc.c:230 #, c-format msgid "bad character '%s' detected in check_char()" msgstr "bdny znak '%s' usunity w check_char()" #: misc.c:235 #, c-format msgid "scanner requires -8 flag to use the character %s" msgstr "skaner wymaga flagi -8 aby uy znaku %s" #: misc.c:268 msgid "dynamic memory failure in copy_string()" msgstr "niepowodzenie dynamicznej pamici w copy_string()" #: misc.c:367 #, c-format msgid "%s: fatal internal error, %s\n" msgstr "%s: krytyczny bd wewntrzny: %s\n" #: misc.c:803 msgid "attempt to increase array size failed" msgstr "prba zwikszenia rozmiaru tablicy nie powioda si" #: misc.c:930 msgid "bad line in skeleton file" msgstr "bdna linia w pliku szablonu" #: misc.c:979 msgid "memory allocation failed in yy_flex_xmalloc()" msgstr "nie udao si przydzieli pamici w yy_flex_xmalloc()" #: nfa.c:104 #, c-format msgid "" "\n" "\n" "********** beginning dump of nfa with start state %d\n" msgstr "" "\n" "\n" "********** pocztek zrzutu NFA ze stanem pocztkowym %d\n" #: nfa.c:115 #, c-format msgid "state # %4d\t" msgstr "stan # %4d\t" #: nfa.c:130 #, c-format msgid "********** end of dump\n" msgstr "********** koniec zrzutu\n" #: nfa.c:174 msgid "empty machine in dupmachine()" msgstr "pusty automat w dupmachine()" #: nfa.c:240 #, c-format msgid "Variable trailing context rule at line %d\n" msgstr "Regua ze zmiennym kocowym kontekstem w linii %d\n" #: nfa.c:364 msgid "bad state type in mark_beginning_as_normal()" msgstr "bdny typ stanu w mark_beginning_as_normal()" #: nfa.c:609 #, c-format msgid "input rules are too complicated (>= %d NFA states)" msgstr "reguy wejciowe s zbyt skomplikowane (>= %d stanw NFA)" #: nfa.c:688 msgid "found too many transitions in mkxtion()" msgstr "znaleziono zbyt duo przej w mkxtion()" #: nfa.c:714 #, c-format msgid "too many rules (> %d)!" msgstr "zbyt duo regu (> %d)!" #: parse.y:159 msgid "unknown error processing section 1" msgstr "nieznany bd podczas przetwarzania sekcji 1" #: parse.y:184 parse.y:351 msgid "bad start condition list" msgstr "bdna lista warunkw pocztkowych" #: parse.y:315 msgid "unrecognized rule" msgstr "nierozpoznana regua" #: parse.y:434 parse.y:447 parse.y:516 msgid "trailing context used twice" msgstr "kocowy kontekst uyty dwukrotnie" #: parse.y:552 parse.y:562 parse.y:635 parse.y:645 msgid "bad iteration values" msgstr "bdne wartoci iteracji" #: parse.y:580 parse.y:598 parse.y:663 parse.y:681 msgid "iteration value must be positive" msgstr "warto iteracji musi by dodatnia" #: parse.y:804 parse.y:814 #, c-format msgid "the character range [%c-%c] is ambiguous in a case-insensitive scanner" msgstr "" "przedzia znakw [%c-%c] jest niejednoznaczny w skanerze ignorujcym " "wielko liter" #: parse.y:819 msgid "negative range in character class" msgstr "ujemny przedzia w klasie znakw" #: parse.y:916 msgid "[:^lower:] is ambiguous in case insensitive scanner" msgstr "" "[:^lower:] jest niejednoznaczne w przypadku skanera ignorujcego wielko " "liter" #: parse.y:922 msgid "[:^upper:] ambiguous in case insensitive scanner" msgstr "" "[:^upper:] jest niejednoznaczne w przypadku skanera ignorujcego wielko " "liter" #: scan.l:75 scan.l:618 scan.l:676 msgid "Input line too long\n" msgstr "Linia wejciowa zbyt duga\n" #: scan.l:161 #, c-format msgid "malformed '%top' directive" msgstr "le sformuowana dyrektywa '%top'" #: scan.l:183 #, no-c-format msgid "unrecognized '%' directive" msgstr "nierozpoznana dyrektywa '%'" #: scan.l:192 msgid "Definition name too long\n" msgstr "Nazwa definizji zbyt duga\n" #: scan.l:284 msgid "Unmatched '{'" msgstr "Niesparowany '{'" #: scan.l:300 #, c-format msgid "Definition value for {%s} too long\n" msgstr "Definicja wartoci dla {%s} zbyt duga\n" #: scan.l:317 msgid "incomplete name definition" msgstr "niekompletna definicja nazwy" #: scan.l:443 msgid "Option line too long\n" msgstr "Linia opcji zbyt duga\n" #: scan.l:451 #, c-format msgid "unrecognized %%option: %s" msgstr "nierozpoznane %%option: %s" #: scan.l:633 scan.l:800 msgid "bad character class" msgstr "bdna klasa znakw" #: scan.l:683 #, c-format msgid "undefined definition {%s}" msgstr "niezdefiniowana definicja {%s}" #: scan.l:755 #, c-format msgid "bad : %s" msgstr "bdny : %s" #: scan.l:768 msgid "missing quote" msgstr "brak cudzysowu" #: scan.l:834 #, c-format msgid "bad character class expression: %s" msgstr "bdne wyraenie klasy znakw: %s" #: scan.l:856 msgid "bad character inside {}'s" msgstr "bdny znak wewntrz {}" #: scan.l:862 msgid "missing }" msgstr "brak }" #: scan.l:940 msgid "EOF encountered inside an action" msgstr "EOF napotkany wewntrz akcji" #: scan.l:945 msgid "EOF encountered inside pattern" msgstr "EOF napotkany wewntrz wzorca" #: scan.l:967 #, c-format msgid "bad character: %s" msgstr "bdny znak: %s" #: scan.l:996 #, c-format msgid "can't open %s" msgstr "nie mona otworzy %s" #: scanopt.c:291 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Skadnia: %s [OPCJE]...\n" #: scanopt.c:564 #, c-format msgid "option `%s' doesn't allow an argument\n" msgstr "opcja `%s' nie przyjmuje argumentu\n" #: scanopt.c:569 #, c-format msgid "option `%s' requires an argument\n" msgstr "opcja `%s' wymaga argumentu\n" #: scanopt.c:573 #, c-format msgid "option `%s' is ambiguous\n" msgstr "opcja `%s' jest niejednoznaczna\n" #: scanopt.c:577 #, c-format msgid "Unrecognized option `%s'\n" msgstr "Nierozpoznana opcja `%s'\n" #: scanopt.c:581 #, c-format msgid "Unknown error=(%d)\n" msgstr "Nieznany bd=(%d)\n" #: sym.c:100 msgid "symbol table memory allocation failed" msgstr "nie udao si przydzieli pamici dla tablicy symboli" #: sym.c:202 msgid "name defined twice" msgstr "nazwa zdefiniowana dwukrotnie" #: sym.c:253 #, c-format msgid "start condition %s declared twice" msgstr "warunek pocztkowy %s zadeklarowany dwukrotnie" #: yylex.c:56 msgid "premature EOF" msgstr "przedwczesny EOF" #: yylex.c:198 #, c-format msgid "End Marker\n" msgstr "Znacznik koca\n" #: yylex.c:204 #, c-format msgid "*Something Weird* - tok: %d val: %d\n" msgstr "*Co dziwnego* - tok: %d val: %d\n" flex-2.5.39/po/fr.gmo0000644000175000017500000005451612314621665014574 0ustar srivastasrivastaT 7  AOh/'.> S"_#  *3'[z!C$)C%]"#FOn`"&0,+] $" )/Y4y5E/*.Z&(+"6>!u".Lg #' Kl : #(#$ $26$#i$+$$&$$ % %:%Y%*q%C%3%0&%E&k&%&&+&&" '-'G'Y'n'','3'/( 2(@((\((((+(( )'')O)m)))))**<*'N*v*$*2* * +,%+-R+ + +++!+&+,!*, L,Z,0q,!, ,,, -% -F3-z----"-..6.<H.-..Cd000"01@1-_1#10111/ 2'<2d2$242-28 3C3b3%v3Q3*304J4)i4(4244 5%#5@I5,555$h6)66636"75)7 _77(7&7:7#%8YI8C8g8DO989-9197-:.e:-:X::;1V;;;;;;"<8<X<w<<#<<"<=,:=7g=7== =JBKCKUK;qK/K6K LN5LLLL)LL5M[QM<M<M+'N SN7tN%N9N O2+O-^OOO&O'O4P>GP:PP)P7Q:Q=RQ3Q*Q"Q/RBR/aR+R)R,R+S.@S*oSS)SS'S@$T*eT$T2T3TU/U'CUkU-U-U!U+U+V"EVIhV,VVV W,W5>WUtWW$WX%X.EXtXXXWX4Y%ZC9F"1]dB!)Um:&aT -+@Hoiz[8D}fn2;YOlc<NR=(_r^P *`J,06M Lx{' ?bIe~V/A GwWjQp3t7y4S v>Kq\|sg5hXEu.k#$ ********** beginning dump of nfa with start state %d DFA Dump: Equivalence Classes: Meta-Equivalence Classes: jam-transitions: EOF %d (%d saved) hash collisions, %d DFAs equal %d backing-up (non-accepting) states %d empty table entries %d epsilon states, %d double epsilon states %d protos created %d rules %d sets of reallocations needed %d state/nextstate pairs created %d table entries %d templates created, %d uses %d total table entries needed %d/%d (peak %d) nxt-chk entries created %d/%d (peak %d) template nxt-chk entries created %d/%d DFA states (%d words) %d/%d NFA states %d/%d base-def entries created %d/%d character classes needed %d/%d words of storage, %d reused %d/%d equivalence classes created %d/%d meta-equivalence classes created %d/%d start conditions %d/%d unique/duplicate transitions Beginning-of-line patterns used Compressed tables always back-up No backing up no character classes scanner options: - and may be the actual source of other reported performance penalties associated rule line numbers: out-transitions: %%option yylineno entails a performance penalty ONLY on rules that can match newline characters %array incompatible with -+ option%d backing up (non-accepting) states. %option yyclass only meaningful for C++ scanners%option yylineno cannot be used with REJECT%s %s %s version %s usage statistics: %s: fatal internal error, %s ********** end of dump *Something Weird* - tok: %d val: %d -Cf and -CF are mutually exclusive-Cf/-CF and -Cm don't make sense together-Cf/-CF and -I are incompatible-Cf/-CF are incompatible with lex-compatibility mode-I (interactive) entails a minor performance penalty -l AT&T lex compatibility option entails a large performance penalty -s option given but default rule can be matchedAllocation of buffer for line directive failedAllocation of buffer for m4 def failedAllocation of buffer for m4 undef failedAllocation of buffer to print string failedCan't use -+ with -CF optionCan't use -+ with -l optionCan't use --reentrant or --bison-bridge with -l optionCan't use -f or -F with -l optionCompressed tables always back up. Could not write ecstblCould not write eoltblCould not write ftblCould not write ssltblCould not write yyacc_tblCould not write yyacclist_tblCould not write yybase_tblCould not write yychk_tblCould not write yydef_tblCould not write yymeta_tblCould not write yynultrans_tblCould not write yynxt_tblCould not write yynxt_tbl[][]Definition name too long Definition value for {%s} too long EOF encountered inside an actionEOF encountered inside patternEnd Marker Generates programs that perform pattern-matching on text. Table Compression: -Ca, --align trade off larger tables for better memory alignment -Ce, --ecs construct equivalence classes -Cf do not compress tables; use -f representation -CF do not compress tables; use -F representation -Cm, --meta-ecs construct meta-equivalence classes -Cr, --read use read() instead of stdio for scanner input -f, --full generate fast, large scanner. Same as -Cfr -F, --fast use alternate table representation. Same as -CFr -Cem default compression (same as --ecs --meta-ecs) Debugging: -d, --debug enable debug mode in scanner -b, --backup write backing-up information to %s -p, --perf-report write performance report to stderr -s, --nodefault suppress default rule to ECHO unmatched text -T, --trace %s should run in trace mode -w, --nowarn do not generate warnings -v, --verbose write summary of scanner statistics to stdout Files: -o, --outfile=FILE specify output filename -S, --skel=FILE specify skeleton file -t, --stdout write scanner on stdout instead of %s --yyclass=NAME name of C++ class --header-file=FILE create a C header file in addition to the scanner --tables-file[=FILE] write tables to FILE Scanner behavior: -7, --7bit generate 7-bit scanner -8, --8bit generate 8-bit scanner -B, --batch generate batch scanner (opposite of -I) -i, --case-insensitive ignore case in patterns -l, --lex-compat maximal compatibility with original lex -X, --posix-compat maximal compatibility with POSIX lex -I, --interactive generate interactive scanner (opposite of -B) --yylineno track line count in yylineno Generated code: -+, --c++ generate C++ scanner class -Dmacro[=defn] #define macro defn (default defn is '1') -L, --noline suppress #line directives in scanner -P, --prefix=STRING use STRING as prefix instead of "yy" -R, --reentrant generate a reentrant C scanner --bison-bridge scanner for bison pure parser. --bison-locations include yylloc support. --stdinit initialize yyin/yyout to stdin/stdout --noansi-definitions old-style function definitions --noansi-prototypes empty parameter list in prototypes --nounistd do not include --noFUNCTION do not generate a particular FUNCTION Miscellaneous: -c do-nothing POSIX option -n do-nothing POSIX option -? -h, --help produce this help message -V, --version report %s version Input line too long Internal error. flexopts are malformed. No backing up. Option line too long Options -+ and --reentrant are mutually exclusive.REJECT cannot be used with -f or -FREJECT entails a large performance penalty State #%d is non-accepting - Try `%s --help' for more information. Unknown error=(%d) Unmatched '{'Unrecognized option `%s' Usage: %s [OPTIONS] [FILE]... Usage: %s [OPTIONS]... Variable trailing context rule at line %d Variable trailing context rules entail a large performance penalty [:^lower:] is ambiguous in case insensitive scanner[:^upper:] ambiguous in case insensitive scannerallocation of macro definition failedallocation of sko_stack failedattempt to increase array size failedbad : %sbad character '%s' detected in check_char()bad character classbad character class expression: %sbad character inside {}'sbad character: %sbad iteration valuesbad line in skeleton filebad start condition listbad state type in mark_beginning_as_normal()bad transition character detected in sympartition()bison bridge not supported for the C++ scanner.can't open %scan't open skeleton file %sconsistency check failed in epsclosure()could not create %scould not create backing-up info file %scould not create unique end-of-buffer statecould not write tables headerdangerous trailing contextdynamic memory failure in copy_string()empty machine in dupmachine()error closing backup file %serror closing output file %serror closing skeleton file %serror creating header file %serror deleting output file %serror writing backup file %serror writing output file %sfatal parse errorfound too many transitions in mkxtion()incomplete name definitioninput error reading skeleton file %sinput rules are too complicated (>= %d NFA states)iteration value must be positivemalformed '%top' directivememory allocation failed in allocate_array()memory allocation failed in yy_flex_xmalloc()missing quotemissing }name "%s" ridiculously longname defined twicenegative range in character classoption `%s' doesn't allow an argument option `%s' is ambiguous option `%s' requires an argument premature EOFrule cannot be matchedscanner requires -8 flag to use the character %sstart condition %s declared twicestate # %4d state # %d accepts: state # %d accepts: [%d] state # %d: symbol table memory allocation failedthe character range [%c-%c] is ambiguous in a case-insensitive scannertoo many rules (> %d)!trailing context used twiceundefined definition {%s}unknown -C option '%c'unknown error processing section 1unrecognized %%option: %sunrecognized '%' directiveunrecognized rulevariable trailing context rules cannot be used with -f or -Fyymore() entails a minor performance penalty Project-Id-Version: flex 2.5.37 Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net POT-Creation-Date: 2014-03-26 15:00-0400 PO-Revision-Date: 2012-09-19 21:01-0400 Last-Translator: David Prévot Language-Team: French Language: fr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); X-Generator: Lokalize 1.4 ********** début du vidage de nfa avec %d pour état de départ Vidage de l'AFD : Classes d'équivalence : Classes de métaéquivalence : transitions-bouchon : EOF %d (%d sauvés) collisions durant dispersion, %d AFD égaux %d états d'archivage (si non acceptants) %d entrées vides dans la table %d états epsilon, %d états double epsilon %d prototypes produits %d règles %d ensembles de réallocations nécessaires %d paires state/nextstate produites %d entrées dans la table %d modèles produits, %d usages %d entrées nécessaires dans la table, au total %d/%d (max. %d) entrées nxt-chk produites %d/%d (max. %d) entrées de modèle nxt-chk produites %d/%d états AFD (%d mots) %d/%d états NFA %d/%d entrées base-def produites %d/%d classes de caractères nécessaires %d/%d mots-mémoire, %d recyclés %d/%d classes d'équivalence produites %d/%d classes de métaéquivalence produites %d/%d conditions de départ %d/%d transitions uniques/dupliquées Modèles utilisés en début de ligne Les tables comprimées sont toujours archivées Pas d'archivage pas de classes de caractères options de l'analyseur lexical : - et peuvent être cause d'autres vices de performance observés numéros de ligne associés à la règle : transitions de sortie : %%option yylineno n'entraîne une importante perte de performance QUE sur les règles pouvant correspondre avec le caractère de changement de ligne %array incompatible avec l'option -+%d états d'archivage (non acceptants). %option yyclass n'a de sens qu'avec les analyseurs C++%option yylineno ne peut être utilisé avec REJECT%s %s « %s » version %s, statistiques d'utilisation : %s : erreur interne fatale, %s ********** fin du vidage *Très bizarre* — tok : %d val : %d -Cf et -CF sont mutuellement exclusifs-Cf ou -CF et -Cm ne peuvent pas être indiquées ensemble-Cf ou -CF et -I sont incompatiblesles options -Cf ou -CF ne sont pas compatibles avec le mode de compatibilité « lex »l'option -I (interactif) entraîne une faible perte de performance L'option -l de compatibilité avec le « lex » d'AT&T entraîne une importante perte de performance l'option -s est donnée mais la règle par défaut peut correspondreÉchec d'allocation de tampon pour la directive de ligneÉchec d'allocation de tampon pour m4 définiÉchec d'allocation de tampon pour m4 non définiÉchec d'allocation de tampon pour afficher une chaîneL'option -+ ne peut pas être combinée à -CFL'option -+ ne peut pas être combinée à -lLes options --reentrant ou --bison-bridge ne peuvent pas être combinées à l'option -lLes options -f et -F ne peuvent pas être combinées à -lLes tables comprimées sont toujours archivées. Impossible d'écrire ecstblImpossible d'écrire eoltblImpossible d'écrire ftblImpossible d'écrire ssltblImpossible d'écrire yyacc_tblImpossible d'écrire yyacclist_tblImpossible d'écrire yybase_tblImpossible d'écrire yychk_tblImpossible d'écrire yydef_tblImpossible d'écrire yymeta_tblImpossible d'écrire yynultrnas_tblImpossible d'écrire yynxt_tblImpossible d'écrire yynxt_tbl[][]Nom de définition trop long Valeur de définition trop longue pour {%s} Fin de fichier rencontrée à l'intérieur d'une actionFin de fichier rencontrée à l'intérieur d'un modèleMarqueur de fin Génération de programmes qui réalisent des correspondances de motif de texte. Compression de table : -Ca, --align négocier grandes tables pour un meilleur alignement mémoire -Ce, --ecs construire des équivalences de classes -Cf ne pas compresser les tables ; utiliser la représentation -f -CF ne pas compresser les tables ; utiliser la représentation -F -Cm, --meta-ecs construire des métaéquivalences de classes -Cr, --read utiliser read() au lieu de stdio pour le scanner d'entrée -f, --full générer rapidement, un grand scanner. Identique à -Cfr -F, --fast utiliser une table alternative de représentation. Comme -CFr -Cem compression par défaut (identique à --ecs --meta-ecs) Mise au point (mode débogage) : -d, --debug activer le mode débogage du scanner -b, --backup archiver les informations vers %s -p, --perf-report produire un rapport de performance sur stderr -s, --nodefault supprimer les règles par défaut pour le texte non correspondant par ECHO -T, --trace %s devrait s'exécuter en mode trace -w, --nowarn ne pas générer d'avertissements -v, --verbose produire des statistiques du scanner sur stdout Fichiers : -o, --outfile=FICHIER indiquer un nom de fichier de sortie -S, --skel=FICHIER indiquer le fichier du squelette -t, --stdout produire le scanner sur stdout au lieu de %s --yyclass=NOM nom de la classe C++ --header-file=FICHIER créer le fichier d'en-tête C en plus du scanner --tables-file[=FICHIER] écrire les tables dans le FICHIER Comportement du scanner : -7, --7bit générer un scanner de 7 bits -8, --8bit générer un scanner de 8 bits -B, --batch générer un scanner par lot (contraire de -I) -i, --case-insensitive ignorer la casse dans les patrons -l, --lex-compat établir une compatibilité maximale avec lex d'origine -X, --posix-compat établir une compatibilité maximale avec lex de POSIX -I, --interactive générer un scanner interactif (contraire de -B) --yylineno suivre le compte de lignes dans yylineno Code généré : -+, --c++ générer la classe C++ du scanner -Dmacro[=def] définition macro #define (« 1 » par défaut) -L, --noline supprimer les directives #line dans le scanner -P, --prefix=CHAÎNE utiliser la CHAÎNE comme préfixe au lieu de « yy » -R, --reentrant générer un scanner C en code rentrant --bison-bridge scanner pour l'analyseur pur bison --bison-locations inclure la prise en charge de yylloc. --stdinit initialiser yyin/yyout à stdin/stdout --nounistd ne pas inclure --noFONCTION ne pas générer une FONCTION particulière Divers : -c ne pas traiter une option POSIX -n ne pas traiter une option POSIX -? -h, --help afficher l'aide-mémoire -V, --version afficher la version %s du logiciel ligne d'entrée trop longue Erreur interne. Les options « flexopts » sont mal composées. Pas d'archivage. Ligne d'option trop longue Les options +- et --reentrant sont mutuellement exclusives.REJECT ne peut pas être utilisé avec -f ou -FREJECT entraîne une importante baisse de performance L'état nº %d n'accepte pas - Exécutez « %s --help » pour obtenir des renseignements complémentaires. Erreur inconnue=(%d) « { » non appariéOption « %s » non reconnue Utilisation : %s [OPTIONS] [FICHIER]... Utilisation : %s [OPTIONS]... Règle de contexte traîné variable à la ligne %d Les règles de contexte traîné variable entraînent une importante baisse de performance [:^lower:] est ambigu pour un scanner insensible à la casse[:^upper:] est ambigu pour un scanner insensible à la casseéchec d'allocation de définition de macroéchec d'allocation de sko_stackéchec de la tentative d'augmenter la taille du tableaumauvaise  : %smauvais caractère « %s » détecté dans check_char()mauvaise classe de caractèresmauvaise expression de classe de caractères : %smauvais caractère entre accolades « {} »mauvais caractère : %svaleurs d'itération erronéemauvaise ligne dans le fichier canevasmauvaise liste de conditions de départmauvais type d'état dans mark_beginning_as_normal()mauvais caractère de transition détecté dans sympartition()bridge bison n'est pas pris en charge pour l'analyseur C++impossible d'ouvrir %simpossible d'ouvrir le fichier canevas %sle contrôle de cohérence a échoué dans epsclosure()impossible de créer %simpossible de créer le fichier d'informations d'archivage %simpossible de créer un seul état de fin de tamponimpossible d'écrire les tables d'en-têtele contexte traîné est dangereuxéchec de mémoire dynamique dans copy_string()machine vide dans dupmachine()erreur de fermeture du fichier de sauvegarde %serreur de fermeture du fichier de sortie %serreur de fermeture du fichier canevas %serreur de création du fichier d'en-tête %serreur d'effacement du fichier de sortie %serreur d'écriture du fichier de sauvegarde %serreur d'écriture du fichier de sortie %serreur de lecture fataleil y a trop de transitions dans mkxtion()définition de nom incomplèteerreur de lecture du fichier canevas %sles règles d'entrée sont trop compliquées (>= %d états NFA)la valeur d'itération doit être positivedirective « %top » mal composéeéchec d'allocation mémoire dans allocate_array()échec d'allocation mémoire dans yy_flex_xmalloc()guillemet manquant« } » manquantele nom « %s » est ridiculement longnom défini deux foisplage négative dans la classe de caractèresl'option « %s » ne permet pas d'argument l'option « %s » est ambiguë l'option « %s » nécessite un argument fin de fichier inattenduela règle ne peut pas correspondrel'analyseur nécessite l'option -8 pour pouvoir utiliser le caractère %scondition de départ %s déclarée deux foisétat nº %4d l'état nº %d accepte : l'état nº %d accepte : [%d] état nº %d : échec d'allocation mémoire de la table des symbolesl'étendue de caractères [%c-%c] est ambiguë pour un scanner insensible à la cassetrop de règles (> %d).contexte traîné utilisé deux foisdéfinition {%s} non définiel'option -C « %c » inconnueerreur inconnue de traitement à la section 1%%option non reconnue : %sdirective « % » inconnuerègle non reconnueles règles de contexte traîné variable ne peuvent pas être utilisées avec -f ou -Fyymore() entraîne une faible baisse de performance flex-2.5.39/po/flex.pot0000644000175000017500000003735012314621664015137 0ustar srivastasrivasta# SOME DESCRIPTIVE TITLE. # This file is put in the public domain. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: flex 2.5.39\n" "Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2014-03-26 15:00-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: buf.c:78 msgid "Allocation of buffer to print string failed" msgstr "" #: buf.c:100 msgid "Allocation of buffer for line directive failed" msgstr "" #: buf.c:177 msgid "Allocation of buffer for m4 def failed" msgstr "" #: buf.c:197 msgid "Allocation of buffer for m4 undef failed" msgstr "" #: dfa.c:61 #, c-format msgid "State #%d is non-accepting -\n" msgstr "" #: dfa.c:124 msgid "dangerous trailing context" msgstr "" #: dfa.c:166 #, c-format msgid " associated rule line numbers:" msgstr "" #: dfa.c:202 #, c-format msgid " out-transitions: " msgstr "" #: dfa.c:210 #, c-format msgid "" "\n" " jam-transitions: EOF " msgstr "" #: dfa.c:341 msgid "consistency check failed in epsclosure()" msgstr "" #: dfa.c:429 msgid "" "\n" "\n" "DFA Dump:\n" "\n" msgstr "" #: dfa.c:604 msgid "could not create unique end-of-buffer state" msgstr "" #: dfa.c:625 #, c-format msgid "state # %d:\n" msgstr "" #: dfa.c:785 msgid "Could not write yynxt_tbl[][]" msgstr "" #: dfa.c:1049 msgid "bad transition character detected in sympartition()" msgstr "" #: gen.c:478 msgid "" "\n" "\n" "Equivalence Classes:\n" "\n" msgstr "" #: gen.c:662 gen.c:691 gen.c:1215 #, c-format msgid "state # %d accepts: [%d]\n" msgstr "" #: gen.c:1110 #, c-format msgid "state # %d accepts: " msgstr "" #: gen.c:1157 msgid "Could not write yyacclist_tbl" msgstr "" #: gen.c:1233 msgid "Could not write yyacc_tbl" msgstr "" #: gen.c:1248 gen.c:1633 gen.c:1656 msgid "Could not write ecstbl" msgstr "" #: gen.c:1271 msgid "" "\n" "\n" "Meta-Equivalence Classes:\n" msgstr "" #: gen.c:1293 msgid "Could not write yymeta_tbl" msgstr "" #: gen.c:1354 msgid "Could not write yybase_tbl" msgstr "" #: gen.c:1388 msgid "Could not write yydef_tbl" msgstr "" #: gen.c:1428 msgid "Could not write yynxt_tbl" msgstr "" #: gen.c:1464 msgid "Could not write yychk_tbl" msgstr "" #: gen.c:1618 gen.c:1647 msgid "Could not write ftbl" msgstr "" #: gen.c:1624 msgid "Could not write ssltbl" msgstr "" #: gen.c:1675 msgid "Could not write eoltbl" msgstr "" #: gen.c:1735 msgid "Could not write yynultrans_tbl" msgstr "" #: main.c:191 msgid "rule cannot be matched" msgstr "" #: main.c:196 msgid "-s option given but default rule can be matched" msgstr "" #: main.c:236 msgid "Can't use -+ with -l option" msgstr "" #: main.c:239 msgid "Can't use -f or -F with -l option" msgstr "" #: main.c:243 msgid "Can't use --reentrant or --bison-bridge with -l option" msgstr "" #: main.c:275 msgid "-Cf/-CF and -Cm don't make sense together" msgstr "" #: main.c:278 msgid "-Cf/-CF and -I are incompatible" msgstr "" #: main.c:282 msgid "-Cf/-CF are incompatible with lex-compatibility mode" msgstr "" #: main.c:287 msgid "-Cf and -CF are mutually exclusive" msgstr "" #: main.c:291 msgid "Can't use -+ with -CF option" msgstr "" #: main.c:294 #, c-format msgid "%array incompatible with -+ option" msgstr "" #: main.c:299 msgid "Options -+ and --reentrant are mutually exclusive." msgstr "" #: main.c:302 msgid "bison bridge not supported for the C++ scanner." msgstr "" #: main.c:357 main.c:403 #, c-format msgid "could not create %s" msgstr "" #: main.c:416 msgid "could not write tables header" msgstr "" #: main.c:420 #, c-format msgid "can't open skeleton file %s" msgstr "" #: main.c:456 msgid "allocation of macro definition failed" msgstr "" #: main.c:504 #, c-format msgid "input error reading skeleton file %s" msgstr "" #: main.c:508 #, c-format msgid "error closing skeleton file %s" msgstr "" #: main.c:693 #, c-format msgid "error creating header file %s" msgstr "" #: main.c:701 #, c-format msgid "error writing output file %s" msgstr "" #: main.c:705 #, c-format msgid "error closing output file %s" msgstr "" #: main.c:709 #, c-format msgid "error deleting output file %s" msgstr "" #: main.c:716 #, c-format msgid "No backing up.\n" msgstr "" #: main.c:720 #, c-format msgid "%d backing up (non-accepting) states.\n" msgstr "" #: main.c:724 #, c-format msgid "Compressed tables always back up.\n" msgstr "" #: main.c:727 #, c-format msgid "error writing backup file %s" msgstr "" #: main.c:731 #, c-format msgid "error closing backup file %s" msgstr "" #: main.c:736 #, c-format msgid "%s version %s usage statistics:\n" msgstr "" #: main.c:739 #, c-format msgid " scanner options: -" msgstr "" #: main.c:818 #, c-format msgid " %d/%d NFA states\n" msgstr "" #: main.c:820 #, c-format msgid " %d/%d DFA states (%d words)\n" msgstr "" #: main.c:822 #, c-format msgid " %d rules\n" msgstr "" #: main.c:827 #, c-format msgid " No backing up\n" msgstr "" #: main.c:831 #, c-format msgid " %d backing-up (non-accepting) states\n" msgstr "" #: main.c:836 #, c-format msgid " Compressed tables always back-up\n" msgstr "" #: main.c:840 #, c-format msgid " Beginning-of-line patterns used\n" msgstr "" #: main.c:842 #, c-format msgid " %d/%d start conditions\n" msgstr "" #: main.c:846 #, c-format msgid " %d epsilon states, %d double epsilon states\n" msgstr "" #: main.c:850 #, c-format msgid " no character classes\n" msgstr "" #: main.c:854 #, c-format msgid " %d/%d character classes needed %d/%d words of storage, %d reused\n" msgstr "" #: main.c:859 #, c-format msgid " %d state/nextstate pairs created\n" msgstr "" #: main.c:862 #, c-format msgid " %d/%d unique/duplicate transitions\n" msgstr "" #: main.c:867 #, c-format msgid " %d table entries\n" msgstr "" #: main.c:875 #, c-format msgid " %d/%d base-def entries created\n" msgstr "" #: main.c:879 #, c-format msgid " %d/%d (peak %d) nxt-chk entries created\n" msgstr "" #: main.c:883 #, c-format msgid " %d/%d (peak %d) template nxt-chk entries created\n" msgstr "" #: main.c:887 #, c-format msgid " %d empty table entries\n" msgstr "" #: main.c:889 #, c-format msgid " %d protos created\n" msgstr "" #: main.c:892 #, c-format msgid " %d templates created, %d uses\n" msgstr "" #: main.c:900 #, c-format msgid " %d/%d equivalence classes created\n" msgstr "" #: main.c:908 #, c-format msgid " %d/%d meta-equivalence classes created\n" msgstr "" #: main.c:914 #, c-format msgid " %d (%d saved) hash collisions, %d DFAs equal\n" msgstr "" #: main.c:916 #, c-format msgid " %d sets of reallocations needed\n" msgstr "" #: main.c:918 #, c-format msgid " %d total table entries needed\n" msgstr "" #: main.c:995 #, c-format msgid "Internal error. flexopts are malformed.\n" msgstr "" #: main.c:1005 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "" #: main.c:1062 #, c-format msgid "unknown -C option '%c'" msgstr "" #: main.c:1191 #, c-format msgid "%s %s\n" msgstr "" #: main.c:1466 msgid "fatal parse error" msgstr "" #: main.c:1498 #, c-format msgid "could not create backing-up info file %s" msgstr "" #: main.c:1519 #, c-format msgid "-l AT&T lex compatibility option entails a large performance penalty\n" msgstr "" #: main.c:1522 #, c-format msgid " and may be the actual source of other reported performance penalties\n" msgstr "" #: main.c:1528 #, c-format msgid "" "%%option yylineno entails a performance penalty ONLY on rules that can match " "newline characters\n" msgstr "" #: main.c:1535 #, c-format msgid "-I (interactive) entails a minor performance penalty\n" msgstr "" #: main.c:1540 #, c-format msgid "yymore() entails a minor performance penalty\n" msgstr "" #: main.c:1546 #, c-format msgid "REJECT entails a large performance penalty\n" msgstr "" #: main.c:1551 #, c-format msgid "Variable trailing context rules entail a large performance penalty\n" msgstr "" #: main.c:1563 msgid "REJECT cannot be used with -f or -F" msgstr "" #: main.c:1566 #, c-format msgid "%option yylineno cannot be used with REJECT" msgstr "" #: main.c:1569 msgid "variable trailing context rules cannot be used with -f or -F" msgstr "" #: main.c:1692 #, c-format msgid "%option yyclass only meaningful for C++ scanners" msgstr "" #: main.c:1799 #, c-format msgid "Usage: %s [OPTIONS] [FILE]...\n" msgstr "" #: main.c:1802 #, c-format msgid "" "Generates programs that perform pattern-matching on text.\n" "\n" "Table Compression:\n" " -Ca, --align trade off larger tables for better memory alignment\n" " -Ce, --ecs construct equivalence classes\n" " -Cf do not compress tables; use -f representation\n" " -CF do not compress tables; use -F representation\n" " -Cm, --meta-ecs construct meta-equivalence classes\n" " -Cr, --read use read() instead of stdio for scanner input\n" " -f, --full generate fast, large scanner. Same as -Cfr\n" " -F, --fast use alternate table representation. Same as -CFr\n" " -Cem default compression (same as --ecs --meta-ecs)\n" "\n" "Debugging:\n" " -d, --debug enable debug mode in scanner\n" " -b, --backup write backing-up information to %s\n" " -p, --perf-report write performance report to stderr\n" " -s, --nodefault suppress default rule to ECHO unmatched text\n" " -T, --trace %s should run in trace mode\n" " -w, --nowarn do not generate warnings\n" " -v, --verbose write summary of scanner statistics to stdout\n" "\n" "Files:\n" " -o, --outfile=FILE specify output filename\n" " -S, --skel=FILE specify skeleton file\n" " -t, --stdout write scanner on stdout instead of %s\n" " --yyclass=NAME name of C++ class\n" " --header-file=FILE create a C header file in addition to the " "scanner\n" " --tables-file[=FILE] write tables to FILE\n" "\n" "Scanner behavior:\n" " -7, --7bit generate 7-bit scanner\n" " -8, --8bit generate 8-bit scanner\n" " -B, --batch generate batch scanner (opposite of -I)\n" " -i, --case-insensitive ignore case in patterns\n" " -l, --lex-compat maximal compatibility with original lex\n" " -X, --posix-compat maximal compatibility with POSIX lex\n" " -I, --interactive generate interactive scanner (opposite of -B)\n" " --yylineno track line count in yylineno\n" "\n" "Generated code:\n" " -+, --c++ generate C++ scanner class\n" " -Dmacro[=defn] #define macro defn (default defn is '1')\n" " -L, --noline suppress #line directives in scanner\n" " -P, --prefix=STRING use STRING as prefix instead of \"yy\"\n" " -R, --reentrant generate a reentrant C scanner\n" " --bison-bridge scanner for bison pure parser.\n" " --bison-locations include yylloc support.\n" " --stdinit initialize yyin/yyout to stdin/stdout\n" " --noansi-definitions old-style function definitions\n" " --noansi-prototypes empty parameter list in prototypes\n" " --nounistd do not include \n" " --noFUNCTION do not generate a particular FUNCTION\n" "\n" "Miscellaneous:\n" " -c do-nothing POSIX option\n" " -n do-nothing POSIX option\n" " -?\n" " -h, --help produce this help message\n" " -V, --version report %s version\n" msgstr "" #: misc.c:65 msgid "allocation of sko_stack failed" msgstr "" #: misc.c:102 misc.c:128 #, c-format msgid "name \"%s\" ridiculously long" msgstr "" #: misc.c:177 msgid "memory allocation failed in allocate_array()" msgstr "" #: misc.c:230 #, c-format msgid "bad character '%s' detected in check_char()" msgstr "" #: misc.c:235 #, c-format msgid "scanner requires -8 flag to use the character %s" msgstr "" #: misc.c:268 msgid "dynamic memory failure in copy_string()" msgstr "" #: misc.c:367 #, c-format msgid "%s: fatal internal error, %s\n" msgstr "" #: misc.c:803 msgid "attempt to increase array size failed" msgstr "" #: misc.c:930 msgid "bad line in skeleton file" msgstr "" #: misc.c:979 msgid "memory allocation failed in yy_flex_xmalloc()" msgstr "" #: nfa.c:104 #, c-format msgid "" "\n" "\n" "********** beginning dump of nfa with start state %d\n" msgstr "" #: nfa.c:115 #, c-format msgid "state # %4d\t" msgstr "" #: nfa.c:130 #, c-format msgid "********** end of dump\n" msgstr "" #: nfa.c:174 msgid "empty machine in dupmachine()" msgstr "" #: nfa.c:240 #, c-format msgid "Variable trailing context rule at line %d\n" msgstr "" #: nfa.c:364 msgid "bad state type in mark_beginning_as_normal()" msgstr "" #: nfa.c:609 #, c-format msgid "input rules are too complicated (>= %d NFA states)" msgstr "" #: nfa.c:688 msgid "found too many transitions in mkxtion()" msgstr "" #: nfa.c:714 #, c-format msgid "too many rules (> %d)!" msgstr "" #: parse.y:159 msgid "unknown error processing section 1" msgstr "" #: parse.y:184 parse.y:351 msgid "bad start condition list" msgstr "" #: parse.y:315 msgid "unrecognized rule" msgstr "" #: parse.y:434 parse.y:447 parse.y:516 msgid "trailing context used twice" msgstr "" #: parse.y:552 parse.y:562 parse.y:635 parse.y:645 msgid "bad iteration values" msgstr "" #: parse.y:580 parse.y:598 parse.y:663 parse.y:681 msgid "iteration value must be positive" msgstr "" #: parse.y:804 parse.y:814 #, c-format msgid "the character range [%c-%c] is ambiguous in a case-insensitive scanner" msgstr "" #: parse.y:819 msgid "negative range in character class" msgstr "" #: parse.y:916 msgid "[:^lower:] is ambiguous in case insensitive scanner" msgstr "" #: parse.y:922 msgid "[:^upper:] ambiguous in case insensitive scanner" msgstr "" #: scan.l:75 scan.l:618 scan.l:676 msgid "Input line too long\n" msgstr "" #: scan.l:161 #, c-format msgid "malformed '%top' directive" msgstr "" #: scan.l:183 #, no-c-format msgid "unrecognized '%' directive" msgstr "" #: scan.l:192 msgid "Definition name too long\n" msgstr "" #: scan.l:284 msgid "Unmatched '{'" msgstr "" #: scan.l:300 #, c-format msgid "Definition value for {%s} too long\n" msgstr "" #: scan.l:317 msgid "incomplete name definition" msgstr "" #: scan.l:443 msgid "Option line too long\n" msgstr "" #: scan.l:451 #, c-format msgid "unrecognized %%option: %s" msgstr "" #: scan.l:633 scan.l:800 msgid "bad character class" msgstr "" #: scan.l:683 #, c-format msgid "undefined definition {%s}" msgstr "" #: scan.l:755 #, c-format msgid "bad : %s" msgstr "" #: scan.l:768 msgid "missing quote" msgstr "" #: scan.l:834 #, c-format msgid "bad character class expression: %s" msgstr "" #: scan.l:856 msgid "bad character inside {}'s" msgstr "" #: scan.l:862 msgid "missing }" msgstr "" #: scan.l:940 msgid "EOF encountered inside an action" msgstr "" #: scan.l:945 msgid "EOF encountered inside pattern" msgstr "" #: scan.l:967 #, c-format msgid "bad character: %s" msgstr "" #: scan.l:996 #, c-format msgid "can't open %s" msgstr "" #: scanopt.c:291 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "" #: scanopt.c:564 #, c-format msgid "option `%s' doesn't allow an argument\n" msgstr "" #: scanopt.c:569 #, c-format msgid "option `%s' requires an argument\n" msgstr "" #: scanopt.c:573 #, c-format msgid "option `%s' is ambiguous\n" msgstr "" #: scanopt.c:577 #, c-format msgid "Unrecognized option `%s'\n" msgstr "" #: scanopt.c:581 #, c-format msgid "Unknown error=(%d)\n" msgstr "" #: sym.c:100 msgid "symbol table memory allocation failed" msgstr "" #: sym.c:202 msgid "name defined twice" msgstr "" #: sym.c:253 #, c-format msgid "start condition %s declared twice" msgstr "" #: yylex.c:56 msgid "premature EOF" msgstr "" #: yylex.c:198 #, c-format msgid "End Marker\n" msgstr "" #: yylex.c:204 #, c-format msgid "*Something Weird* - tok: %d val: %d\n" msgstr "" flex-2.5.39/po/hr.gmo0000644000175000017500000000657412314621665014577 0ustar srivastasrivasta'T5`a$h & 'A`x 1Om   &*!D f%t  / 7 V d  1    # < U o  &  * -$ +R *~ '   ( - @ L 'e #  2  - J g !   #& $ '"%%s %s *Something Weird* - tok: %d val: %d Definition name too long End Marker Input line too long Option line too long Try `%s --help' for more information. Unknown error=(%d) Unmatched '{'Unrecognized option `%s' Usage: %s [OPTIONS] [FILE]... Usage: %s [OPTIONS]... bad character classbad character inside {}'sbad character: %sbad iteration valuesbad line in skeleton filecan't open %serror closing output file %serror closing skeleton file %serror creating header file %serror deleting output file %serror writing output file %sfatal parse errorincomplete name definitioniteration value must be positivemissing quotemissing }name defined twiceoption `%s' doesn't allow an argument option `%s' is ambiguous option `%s' requires an argument premature EOFsymbol table memory allocation failedtoo many rules (> %d)!undefined definition {%s}unknown -C option '%c'unrecognized ruleProject-Id-Version: flex 2.5.37 Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net POT-Creation-Date: 2014-03-26 15:00-0400 PO-Revision-Date: 2012-10-05 16:48+0200 Last-Translator: Tomislav Krznar Language-Team: Croatian Language: hr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); X-Generator: Lokalize 1.4 %s %s *Nešto je čudno* - simbol: %d vrijednost: %d Ime definicije je predugačko Oznaka kraja Ulazni redak je predugačak Redak opcija je predugačak Pokušajte „%s --help” za više informacija. Nepoznata greška=(%d) Neuparena „{”Neprepoznata opcija „%s” Uporaba: %s [OPCIJE] [DATOTEKA]... Uporaba: %s [OPCIJE]... neispravan razred znakovaneispravan znak unutar {}neispravan znak: %sneispravne vrijednosti iteracijeneispravan redak u datoteci predloškane mogu otvoriti %sgreška pri zatvaranju izlazne datoteke %sgreška pri zatvaranju datoteke predloška %sgreška pri stvaranju datoteke zaglavlja %sgreška pri uklanjanju izlazne datoteke %sgreška pri pisanju izlazne datoteke %sfatalna greška analizenepotpuna definicija imenavrijednost iteracije mora biti pozitivnanedostaje navodniknedostaje }ime je dvaput definiranoopcija „%s” ne dozvoljava argument opcija „%s” je višeznačna opcija „%s” zahtijeva argument preuranjen EOFalokacija memorije za tablicu simbola nije uspjelapreviše pravila (> %d)!nedefinirana definicija {%s}nepoznata -C opcija „%c”neprepoznato praviloflex-2.5.39/po/de.gmo0000644000175000017500000005373112314621665014553 0ustar srivastasrivastaT 7  AOh/'.> S"_#  *3'[z!C$)C%]"#FOn`"&0,+] $" )/Y4y5E/*.Z&(+"6>!u".Lg #' Kl : #(#$ $26$#i$+$$&$$ % %:%Y%*q%C%3%0&%E&k&%&&+&&" '-'G'Y'n'','3'/( 2(@((\((((+(( )'')O)m)))))**<*'N*v*$*2* * +,%+-R+ + +++!+&+,!*, L,Z,0q,!, ,,, -% -F3-z----"-..6.<H.-..:F000007041N14l11 1+1-12(52+^222;2#23)43I^3$3)33*4<43[4444K45<5sO5-5251$6@V66%6 66$77&7>^727C7>8NS8=888.90H9?y9;9:9T0:H:1:;;<;X; v;$;!; ; ;! <%B< h<$<<&<&<'=== M=I.IJ'JH=JFJ3J'K>)KhKKK$KK8KT/LOLOL*$M$OM4tMM5MM&N$?NdN|N N N5N8O9HOO#O1OO?P=GP%PP1PP*Q+GQ+sQ)Q)Q)Q*RHR*]R R-R7R$S$4S6YS7SS S"ST"*T&MTtT&TTTHT#,UPU_UyUU5U_U=V#UVyV#V2VV W+W`@W7W%ZC9F"1]dB!)Um:&aT -+@Hoiz[8D}fn2;YOlc<NR=(_r^P *`J,06M Lx{' ?bIe~V/A GwWjQp3t7y4S v>Kq\|sg5hXEu.k#$ ********** beginning dump of nfa with start state %d DFA Dump: Equivalence Classes: Meta-Equivalence Classes: jam-transitions: EOF %d (%d saved) hash collisions, %d DFAs equal %d backing-up (non-accepting) states %d empty table entries %d epsilon states, %d double epsilon states %d protos created %d rules %d sets of reallocations needed %d state/nextstate pairs created %d table entries %d templates created, %d uses %d total table entries needed %d/%d (peak %d) nxt-chk entries created %d/%d (peak %d) template nxt-chk entries created %d/%d DFA states (%d words) %d/%d NFA states %d/%d base-def entries created %d/%d character classes needed %d/%d words of storage, %d reused %d/%d equivalence classes created %d/%d meta-equivalence classes created %d/%d start conditions %d/%d unique/duplicate transitions Beginning-of-line patterns used Compressed tables always back-up No backing up no character classes scanner options: - and may be the actual source of other reported performance penalties associated rule line numbers: out-transitions: %%option yylineno entails a performance penalty ONLY on rules that can match newline characters %array incompatible with -+ option%d backing up (non-accepting) states. %option yyclass only meaningful for C++ scanners%option yylineno cannot be used with REJECT%s %s %s version %s usage statistics: %s: fatal internal error, %s ********** end of dump *Something Weird* - tok: %d val: %d -Cf and -CF are mutually exclusive-Cf/-CF and -Cm don't make sense together-Cf/-CF and -I are incompatible-Cf/-CF are incompatible with lex-compatibility mode-I (interactive) entails a minor performance penalty -l AT&T lex compatibility option entails a large performance penalty -s option given but default rule can be matchedAllocation of buffer for line directive failedAllocation of buffer for m4 def failedAllocation of buffer for m4 undef failedAllocation of buffer to print string failedCan't use -+ with -CF optionCan't use -+ with -l optionCan't use --reentrant or --bison-bridge with -l optionCan't use -f or -F with -l optionCompressed tables always back up. Could not write ecstblCould not write eoltblCould not write ftblCould not write ssltblCould not write yyacc_tblCould not write yyacclist_tblCould not write yybase_tblCould not write yychk_tblCould not write yydef_tblCould not write yymeta_tblCould not write yynultrans_tblCould not write yynxt_tblCould not write yynxt_tbl[][]Definition name too long Definition value for {%s} too long EOF encountered inside an actionEOF encountered inside patternEnd Marker Generates programs that perform pattern-matching on text. Table Compression: -Ca, --align trade off larger tables for better memory alignment -Ce, --ecs construct equivalence classes -Cf do not compress tables; use -f representation -CF do not compress tables; use -F representation -Cm, --meta-ecs construct meta-equivalence classes -Cr, --read use read() instead of stdio for scanner input -f, --full generate fast, large scanner. Same as -Cfr -F, --fast use alternate table representation. Same as -CFr -Cem default compression (same as --ecs --meta-ecs) Debugging: -d, --debug enable debug mode in scanner -b, --backup write backing-up information to %s -p, --perf-report write performance report to stderr -s, --nodefault suppress default rule to ECHO unmatched text -T, --trace %s should run in trace mode -w, --nowarn do not generate warnings -v, --verbose write summary of scanner statistics to stdout Files: -o, --outfile=FILE specify output filename -S, --skel=FILE specify skeleton file -t, --stdout write scanner on stdout instead of %s --yyclass=NAME name of C++ class --header-file=FILE create a C header file in addition to the scanner --tables-file[=FILE] write tables to FILE Scanner behavior: -7, --7bit generate 7-bit scanner -8, --8bit generate 8-bit scanner -B, --batch generate batch scanner (opposite of -I) -i, --case-insensitive ignore case in patterns -l, --lex-compat maximal compatibility with original lex -X, --posix-compat maximal compatibility with POSIX lex -I, --interactive generate interactive scanner (opposite of -B) --yylineno track line count in yylineno Generated code: -+, --c++ generate C++ scanner class -Dmacro[=defn] #define macro defn (default defn is '1') -L, --noline suppress #line directives in scanner -P, --prefix=STRING use STRING as prefix instead of "yy" -R, --reentrant generate a reentrant C scanner --bison-bridge scanner for bison pure parser. --bison-locations include yylloc support. --stdinit initialize yyin/yyout to stdin/stdout --noansi-definitions old-style function definitions --noansi-prototypes empty parameter list in prototypes --nounistd do not include --noFUNCTION do not generate a particular FUNCTION Miscellaneous: -c do-nothing POSIX option -n do-nothing POSIX option -? -h, --help produce this help message -V, --version report %s version Input line too long Internal error. flexopts are malformed. No backing up. Option line too long Options -+ and --reentrant are mutually exclusive.REJECT cannot be used with -f or -FREJECT entails a large performance penalty State #%d is non-accepting - Try `%s --help' for more information. Unknown error=(%d) Unmatched '{'Unrecognized option `%s' Usage: %s [OPTIONS] [FILE]... Usage: %s [OPTIONS]... Variable trailing context rule at line %d Variable trailing context rules entail a large performance penalty [:^lower:] is ambiguous in case insensitive scanner[:^upper:] ambiguous in case insensitive scannerallocation of macro definition failedallocation of sko_stack failedattempt to increase array size failedbad : %sbad character '%s' detected in check_char()bad character classbad character class expression: %sbad character inside {}'sbad character: %sbad iteration valuesbad line in skeleton filebad start condition listbad state type in mark_beginning_as_normal()bad transition character detected in sympartition()bison bridge not supported for the C++ scanner.can't open %scan't open skeleton file %sconsistency check failed in epsclosure()could not create %scould not create backing-up info file %scould not create unique end-of-buffer statecould not write tables headerdangerous trailing contextdynamic memory failure in copy_string()empty machine in dupmachine()error closing backup file %serror closing output file %serror closing skeleton file %serror creating header file %serror deleting output file %serror writing backup file %serror writing output file %sfatal parse errorfound too many transitions in mkxtion()incomplete name definitioninput error reading skeleton file %sinput rules are too complicated (>= %d NFA states)iteration value must be positivemalformed '%top' directivememory allocation failed in allocate_array()memory allocation failed in yy_flex_xmalloc()missing quotemissing }name "%s" ridiculously longname defined twicenegative range in character classoption `%s' doesn't allow an argument option `%s' is ambiguous option `%s' requires an argument premature EOFrule cannot be matchedscanner requires -8 flag to use the character %sstart condition %s declared twicestate # %4d state # %d accepts: state # %d accepts: [%d] state # %d: symbol table memory allocation failedthe character range [%c-%c] is ambiguous in a case-insensitive scannertoo many rules (> %d)!trailing context used twiceundefined definition {%s}unknown -C option '%c'unknown error processing section 1unrecognized %%option: %sunrecognized '%' directiveunrecognized rulevariable trailing context rules cannot be used with -f or -Fyymore() entails a minor performance penalty Project-Id-Version: flex 2.5.36 Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net POT-Creation-Date: 2014-03-26 15:00-0400 PO-Revision-Date: 2012-08-03 13:42+0200 Last-Translator: Michael Piefel Language-Team: German Language: de MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ********** beginne Ausgabe von NFA mit Startzustand %d DFA-Ausgabe: Äquivalenz-Klassen: Meta-Äquivalenz-Klassen: Hemm-Übergänge: EOF %d (%d gespeichert) Hash-Kollisionen, %d DFAs gleich %d Zustände mit Backing-up (nicht akzeptierend). %d leere Tabelleneinträge %d Epsilon-Zustände, %d Doppel-Epsilon-Zustände %d Protos erzeugt %d Regeln %d Sätze von Neuallozierungen benötigt %d Zustand/Nächster-Zustand-Paare erzeugt %d Tabelleneinträge %d Schablonen erzeugt, %d Benutzungen %d Tabelleneinträge insgesamt benötigt %d/%d (max. %d) Einträge „nxt-chk“ erzeugt %d/%d (max. %d) Einträge „template nxt-chk“ erzeugt %d/%d DFA-Zustände (%d Wörter) %d/%d NFA-Zustände %d/%d Einträge „base-def“ erzeugt %d/%d Zeichenklassen brauchten %d/%d Speicherwörter, %d wiederbenutzt %d/%d Äquivalenz-Klassen erzeugt %d/%d Meta-Äquivalenz-Klassen erzeugt %d/%d Startbedingungen %d/%d einzigartige/doppelte Übergänge Zeilenanfang-Muster benutzt Komprimierte Tabellen benutzen immer Backing-up. Kein Backing-up. keine Zeichenklassen Scanner-Optionen: - und ist möglicherweise die wirkliche Quelle anderer gemeldeter Einbußen verbundene Regelzeilennummern Aus-Übergänge: %%option yylineno führt zu Geschwindigkeitseinbußen NUR für Regeln, die auf einen Zeilenvorschub passen können „%array“ inkompatibel mit „-+“-Option%d Zustände mit Backing-up (nicht akzeptierend). %option yyclass ist nur bei C++-Scannern sinnvoll%option yylineno kann nicht mit REJECT zusammen verwendet werden%s %s %s Version %s Benutzungsstatistiken: %s: fataler interner Fehler, %s ********** end der Ausgabe *Etwas Seltsames* - tok: %d val: %d „-Cf“ und „-CF“ schließen sich gegenseitig aus„-Cf“/„-CF“ und „-Cm“ sind zusammen nicht sinnvoll„-Cf“/„-CF“ und „-I“ sind inkompatibel„-Cf“/„-CF“ sind inkompatibel mit lex-Kompatibilitätsmodus-I (interaktiv) führt zu kleineren Geschwindigkeitseinbußen -l AT&T-lex-Kompatibilitätsmodus führt zu großen Geschwindigkeitseinbußen „-s“-Option gegeben, aber Vorgabe-Regel kann nicht passenAnlegen des Puffers für Zeilen-Direktive fehlgeschlagenAnlegen des Puffers für m4 def fehlgeschlagenAnlegen des Puffers für m4 undef fehlgeschlagenAnlegen des Puffers zur Ausgabe der Zeichenkette fehlgeschlagenKann nicht „-+“ zusammen mit „-CF“-Option verwendenKann nicht „-+“ zusammen mit „-l“-Option verwendenKann nicht „--reentrant“ oder „--bison-bridge“ mit „-l“-Option verwendenKann nicht „-f“ oder „-F“ zusammen mit „-l“-Option verwendenKomprimierte Tabellen benutzen immer Backing-up. Konnte ecstbl nicht schreibenKonnte eoltbl nicht schreibenKonnte ftbl nicht schreibenKonnte ssltbl nicht schreibenKonnte yyacc_tbl nicht schreibenKonnte yyacclist_tbl nicht schreibenKonnte yybase_tbl nicht schreibenKonnte yychk_tbl nicht schreibenKonnte yydef_tbl nicht schreibenKonnte yymeta_tbl nicht schreibenKonnte yynultrans_tbl nicht schreibenKonnte yynxt_tbl nicht schreibenKonnte yynxt_tbl[][] nicht schreibenDefinitionsname zu lang Definitionswert für {%s} ist zu lang EOF innerhalb einer Aktion angetroffenEOF innerhalb eines Musters angetroffenEndemarkierung Generiert Programme, die Mustererkennung in Texten durchführen. Tabellen-Komprimierung: -Ca, --align erzeuge größere Tabellen, aber bessere Speicherausrichtung -Ce, --ecs konstruiere Äquivalenz-Klassen -Cf komprimiere Tabellen nicht; benutze „-f“-Repräsentation -CF komprimiere Tabellen nicht; benutze „-F“-Repräsentation -Cm, --meta-ecs konstruiere Meta-Äquivalenz-Klassen -Cr, --read benutze read() anstelle von stdio für Scannereingabe -f, --full generiere schnellen, großen Scanner. Genau wie -Cfr -F, --fast benutze alternative Tabellenrepräsentation. Genau wie -CFr -Cem Voreinstellung (genau wie --ecs --meta-ecs) Fehlersuche: -d, --debug Fehlersuch-(Debug-)Modus im Scanner aktivieren -b, --backup schreibe Backing-up-Information in %s -p, --perf-report schreibe Performanzbericht auf stderr -s, --nodefault unterdücke Standardregel ECHO für nicht passenden Text -T, --trace %s sollte im Trace-Modus laufen -w, --nowarn generiere keine Warnungen -v, --verbose schreibe Zusammenfassung der Scannerstatistiken auf stdout Dateien: -o, --outfile=DATEI Ausgabe-Dateiname -S, --skel=DATEI Skelettdatei -t, --stdout gib Scanner auf stdout anstelle von %s aus --yyclass=NAME Name der C++-Klasse --header-file=DATEI erstelle eine C-Headerdatei zusätzlich zum Scanner --tables-file[=DATEI] schreibe Tabellen in DATEI Scannerverhalten: -7, --7bit generiere 7-bit-Scanner -8, --8bit generiere 8-bit-Scanner -B, --batch generiere Dateiscanner (Gegenteil von -I) -i, --case-insensitive ignoriere Groß-/Kleinschreibung in Mustern -l, --lex-compat maximale Kompatibilität mit originalem lex -X, --posix-compat maximala Kompatibilität mit lex aus POSIX -I, --interactive generiere interaktiven Scanner (Gegenteil von -B) --yylineno verfolge Zeilenzähler in yylineno Generierter Code: -+, --c++ generiere C++-Scannerklasse -Dmacro[=defn] #definiere Makro (Standard-Defn ist „1“) -L, --noline unterdrücke #line-Direktiven im Scanner -P, --prefix=STRING benutze STRING als Präfix anstelle von „yy“ -R, --reentrant generiere einen reentranten C-Scanner --bison-bridge Scanner für reentranten Bison-Parser (Bison-Deklaration „%%pure_parser“) --bison-locations yylloc-Unterstützung aktivieren --stdinit initialisiere yyin/yyout mit stdin/stdout --noansi-definitions Funktionsdefinitionen alten Stils --noansi-prototypes leere Parameterlisten in Prototypen --nounistd nicht mit einbinden --noFUNKTION generiere eine bestimmte FUNKTION nicht Verschiedenes: -c keine Wirkung (aus POSIX) -n keine Wirkung (aus POSIX) -? -h, --help produziere diese Hilfenachricht -V, --version melde %s-Version Eingabezeile zu lang Interner Fehler. flexopts sind missgestaltet. Kein Backing-up. Optionszeile zu lang Optionen „-+“ und „--reentrant“ schließen sich gegenseitig aus.REJECT kann nicht mit „-f“ oder „-F“ zusammen verwendet werdenREJECT führt zu großen Geschwindigkeitseinbußen Zustand #%d ist nicht-akzeptierend – Versuchen Sie es mit „%s --help“ für mehr Informationen. Unbekannter Fehler=(%d) Unbalancierte „{“nicht erkannte Option „%s“ Aufruf: %s [OPTIONEN...] [DATEI...] Aufruf: %s [OPTIONEN...] Regel mit veränderlichem folgenden Kontext in Zeile %d Regeln mit variablem folgenden Kontext führen zu großen Geschwindigkeitseinbußen [:^lower:] ist in Scannern ohne Beachtung von Groß-/Kleinschreibung mehrdeutig[:^upper:] ist in Scannern ohne Beachtung von Groß-/Kleinschreibung mehrdeutigAnlegen der Makrodefinition fehlgeschlagenAnlegen des sko_stack fehlgeschlagenVersuch, die Feldgröße zu erhöhen, fehlgeschlagenungültige : %sungültiges Zeichen „%s“ in check_char() entdecktungültige Zeichenklasseungültiger Zeichenklassenausdruck: %sungültiges Zeichen innerhalb von {}ungültiges Zeichen: %sungültige Iterationswerteungültige Zeile in Skelettdateiungültige Startbedingungs-Listeungültiger Zustandstyp in mark_beginning_as_normal()ungültiges Übergangszeichen in sympartition() entdecktBrücke zu Bison für den C++-Scanner nicht unterstützt.kann %s nicht öffnenkann Skelett-Datei %s nicht öffnenKonsistenzprüfung fehlgeschlagen in epsclosure()konnte %s nicht erzeugenkonnte Datei %s mit Informationen zum Backing-up nicht erzeugenkonnte keinen einzigartigen Ende-des-Puffers-Zustand erzeugenkonnte Tabellenköpfe nicht schreibengefährlicher folgender KontextFehler beim dynamischen Speicher in copy_string()leere Maschine in dupmachine()Fehler beim Schließen der Backup-Datei %sFehler beim Schließen der Ausgabe-Datei %sFehler beim Schließen der Skelett-Datei %sFehler beim Erstellen der Header-Datei %sFehler beim Löschen der Ausgabe-Datei %sFehler beim Schreiben der Backup-Datei %sFehler beim Schreiben der Ausgabe-Datei %sfataler Parse-Fehlerzu viele Übergänge in mkxtion() gefundenunvollständige NamensdefinitionEingabefehler beim Lesen der Skelett-Datei %sEingaberegeln sind zu kompliziert (>= %d NFA-Zustände)Iterationswerte müssen positiv seinfalsch geformte „%top“-DirektiveSpeicheranforderung in allocate_array() fehlgeschlagenSpeicheranforderung in yy_flex_xmalloc() fehlgeschlagenfehlendes Anführungszeichenfehlende }name „%s“ ist lächerlich langName zweimal definiertnegativer Bereich in ZeichenklasseOption „%s“ erlaubt kein Argument Option „%s“ ist mehrdeutig Option „%s“ verlangt ein Argument vorzeitiges EOFRegel kann nicht passenScanner erfordert Option „-8“, um das Zeichen %s benutzen zu könnenStartbedingung %s zweimal definiertZustand # %4d Zustand # %d akzeptiert: Zustand # %d akzeptiert: [%d] Zustand # %d: Speicheranforderung für Symboltabelle fehlgeschlagender Zeichenbereich [%c-%c] ist in Scannern ohne Beachtung von Groß-/Kleinschreibung mehrdeutigzu viele Regeln (> %d)!folgender Kontext doppelt verwendetundefinierte Definitione {%s}unbekannte „-C“-Option „%c“unbekannter Fehler beim Bearbeiten von Abschnitt 1nicht erkannte %%option: %snicht erkannte „%“-Direktivenicht erkannte RegelRegeln mit variablem folgenden Kontext können nicht mit „-f“ oder „-F“ verwendet werdenyymore() führt zu kleineren Geschwindigkeitseinbußen flex-2.5.39/po/ko.po0000644000175000017500000006172612314621665014433 0ustar srivastasrivasta# flex-2.5.2 Korean po file # Copyright (C) 1996 The Flex Project # Choi Jun Ho , 1997. # msgid "" msgstr "" "Project-Id-Version: flex 2.5.2\n" "Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2014-03-26 15:00-0400\n" "PO-Revision-Date: 1997-02-05 20:30\n" "Last-Translator: Choi Jun Ho \n" "Language-Team: Korean \n" "Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=EUC-KR\n" "Content-Transfer-Encoding: 8-bit\n" #: buf.c:78 msgid "Allocation of buffer to print string failed" msgstr "" #: buf.c:100 msgid "Allocation of buffer for line directive failed" msgstr "" #: buf.c:177 msgid "Allocation of buffer for m4 def failed" msgstr "" #: buf.c:197 msgid "Allocation of buffer for m4 undef failed" msgstr "" #: dfa.c:61 #, c-format msgid "State #%d is non-accepting -\n" msgstr "¹ȣ %d ޾Ƶ ʴ -Դϴ\n" #: dfa.c:124 msgid "dangerous trailing context" msgstr " " #: dfa.c:166 #, c-format msgid " associated rule line numbers:" msgstr " Ģ ȣ:" #: dfa.c:202 #, c-format msgid " out-transitions: " msgstr " : " #: dfa.c:210 #, c-format msgid "" "\n" " jam-transitions: EOF " msgstr "" "\n" " -: EOF " #: dfa.c:341 msgid "consistency check failed in epsclosure()" msgstr "epsclosure() ϰ ˻簡 ߽ϴ" #: dfa.c:429 msgid "" "\n" "\n" "DFA Dump:\n" "\n" msgstr "" "\n" "\n" "DFA :\n" "\n" #: dfa.c:604 msgid "could not create unique end-of-buffer state" msgstr " (end-of-buffer)¸ ϴ" #: dfa.c:625 #, c-format msgid "state # %d:\n" msgstr "¹ȣ %d:\n" #: dfa.c:785 msgid "Could not write yynxt_tbl[][]" msgstr "" #: dfa.c:1049 msgid "bad transition character detected in sympartition()" msgstr "sympartition() ߸ ڸ ãҽϴ" #: gen.c:478 msgid "" "\n" "\n" "Equivalence Classes:\n" "\n" msgstr "" "\n" "\n" "ġ:\n" "\n" #: gen.c:662 gen.c:691 gen.c:1215 #, c-format msgid "state # %d accepts: [%d]\n" msgstr "¹ȣ %d [%d] ޾ƵԴϴ\n" #: gen.c:1110 #, c-format msgid "state # %d accepts: " msgstr "¹ȣ %d ޾ƵԴϴ: " #: gen.c:1157 msgid "Could not write yyacclist_tbl" msgstr "" #: gen.c:1233 msgid "Could not write yyacc_tbl" msgstr "" #: gen.c:1248 gen.c:1633 gen.c:1656 #, fuzzy msgid "Could not write ecstbl" msgstr "%s ϴ" #: gen.c:1271 msgid "" "\n" "\n" "Meta-Equivalence Classes:\n" msgstr "" "\n" "\n" "Ÿ-ġ:\n" #: gen.c:1293 msgid "Could not write yymeta_tbl" msgstr "" #: gen.c:1354 #, fuzzy msgid "Could not write yybase_tbl" msgstr "%s ϴ" #: gen.c:1388 msgid "Could not write yydef_tbl" msgstr "" #: gen.c:1428 msgid "Could not write yynxt_tbl" msgstr "" #: gen.c:1464 msgid "Could not write yychk_tbl" msgstr "" #: gen.c:1618 gen.c:1647 #, fuzzy msgid "Could not write ftbl" msgstr "%s ϴ" #: gen.c:1624 #, fuzzy msgid "Could not write ssltbl" msgstr "%s ϴ" #: gen.c:1675 #, fuzzy msgid "Could not write eoltbl" msgstr "%s ϴ" #: gen.c:1735 msgid "Could not write yynultrans_tbl" msgstr "" #: main.c:191 msgid "rule cannot be matched" msgstr "´ Ģ ã ϴ" #: main.c:196 msgid "-s option given but default rule can be matched" msgstr "-s ɼ ־ ⺻ Ģ ֽϴ" #: main.c:236 msgid "Can't use -+ with -l option" msgstr "-lɼǿ -+ɼ ϴ" #: main.c:239 msgid "Can't use -f or -F with -l option" msgstr "-lɼǿ -f -Fɼ ϴ" #: main.c:243 #, fuzzy msgid "Can't use --reentrant or --bison-bridge with -l option" msgstr "-lɼǿ -f -Fɼ ϴ" #: main.c:275 msgid "-Cf/-CF and -Cm don't make sense together" msgstr "-Cf/-CF -Cm ǹ̰ ϴ" #: main.c:278 msgid "-Cf/-CF and -I are incompatible" msgstr "-Cf/-CF -I ϴ" #: main.c:282 msgid "-Cf/-CF are incompatible with lex-compatibility mode" msgstr "-Cf/-CF lexȣȯ ʹ ϴ" #: main.c:287 msgid "-Cf and -CF are mutually exclusive" msgstr "-Cf -CF ϴ" #: main.c:291 msgid "Can't use -+ with -CF option" msgstr "-CFɼǿ -+ɼ ϴ" #: main.c:294 #, c-format msgid "%array incompatible with -+ option" msgstr "%array -+ɼǰ ϴ" #: main.c:299 #, fuzzy msgid "Options -+ and --reentrant are mutually exclusive." msgstr "-Cf -CF ϴ" #: main.c:302 msgid "bison bridge not supported for the C++ scanner." msgstr "" #: main.c:357 main.c:403 #, c-format msgid "could not create %s" msgstr "%s ϴ" #: main.c:416 #, fuzzy msgid "could not write tables header" msgstr "%s ϴ" #: main.c:420 #, c-format msgid "can't open skeleton file %s" msgstr "̷ %s ϴ" #: main.c:456 msgid "allocation of macro definition failed" msgstr "" #: main.c:504 #, c-format msgid "input error reading skeleton file %s" msgstr "̷ %s д ߻߽ϴ" #: main.c:508 #, c-format msgid "error closing skeleton file %s" msgstr "̷ %s ݴµ ߻߽ϴ" #: main.c:693 #, fuzzy, c-format msgid "error creating header file %s" msgstr " %s µ ߻߽ϴ" #: main.c:701 #, c-format msgid "error writing output file %s" msgstr " %s ߻߽ϴ" #: main.c:705 #, c-format msgid "error closing output file %s" msgstr " %s ݴµ ߻߽ϴ" #: main.c:709 #, c-format msgid "error deleting output file %s" msgstr " %s ߻߽ϴ" #: main.c:716 #, c-format msgid "No backing up.\n" msgstr "ǵ ϴ.\n" #: main.c:720 #, c-format msgid "%d backing up (non-accepting) states.\n" msgstr "%d ǵ(޾Ƶ ʴ) .\n" #: main.c:724 #, c-format msgid "Compressed tables always back up.\n" msgstr " ̺ ׻ մϴ.\n" #: main.c:727 #, c-format msgid "error writing backup file %s" msgstr " %s µ ߻߽ϴ" #: main.c:731 #, c-format msgid "error closing backup file %s" msgstr " %s ݴµ ߻߽ϴ" #: main.c:736 #, c-format msgid "%s version %s usage statistics:\n" msgstr "%s %s :\n" #: main.c:739 #, c-format msgid " scanner options: -" msgstr " ij ɼ: -" #: main.c:818 #, c-format msgid " %d/%d NFA states\n" msgstr " %d/%d NFA \n" #: main.c:820 #, c-format msgid " %d/%d DFA states (%d words)\n" msgstr " %d/%d DFA (%d ܾ)\n" #: main.c:822 #, c-format msgid " %d rules\n" msgstr " %d Ģ\n" #: main.c:827 #, c-format msgid " No backing up\n" msgstr " ǵ ϴ\n" #: main.c:831 #, c-format msgid " %d backing-up (non-accepting) states\n" msgstr " %d ǵ(޾Ƶ ʴ) \n" #: main.c:836 #, c-format msgid " Compressed tables always back-up\n" msgstr " ̺ ׻ մϴ\n" #: main.c:840 #, c-format msgid " Beginning-of-line patterns used\n" msgstr " (beginning-of-line) Ͽϴ\n" #: main.c:842 #, c-format msgid " %d/%d start conditions\n" msgstr " %d/%d \n" #: main.c:846 #, c-format msgid " %d epsilon states, %d double epsilon states\n" msgstr " %d Ƿ , %d Ƿ \n" #: main.c:850 #, c-format msgid " no character classes\n" msgstr " ڷ ϴ\n" #: main.c:854 #, c-format msgid " %d/%d character classes needed %d/%d words of storage, %d reused\n" msgstr "" " %d/%d տ %d/%d ڰ ʿ߰, %d Ǿ" ".\n" #: main.c:859 #, c-format msgid " %d state/nextstate pairs created\n" msgstr " %d / ϴ\n" #: main.c:862 #, c-format msgid " %d/%d unique/duplicate transitions\n" msgstr " %d/%d /ߺǴ \n" #: main.c:867 #, c-format msgid " %d table entries\n" msgstr " %d ̺ Ʈ\n" #: main.c:875 #, c-format msgid " %d/%d base-def entries created\n" msgstr " %d/%d base-def Ʈ ϴ\n" #: main.c:879 #, c-format msgid " %d/%d (peak %d) nxt-chk entries created\n" msgstr " %d/%d (ִ %d) nxt-chk Ʈ ϴ\n" #: main.c:883 #, c-format msgid " %d/%d (peak %d) template nxt-chk entries created\n" msgstr " %d/%d (ִ %d) øƮ nxt-chk Ʈ ϴ\n" #: main.c:887 #, c-format msgid " %d empty table entries\n" msgstr " %d ̺ Ʈ\n" #: main.c:889 #, c-format msgid " %d protos created\n" msgstr " %d ϴ\n" #: main.c:892 #, c-format msgid " %d templates created, %d uses\n" msgstr " %d øƮ , %d ϴ\n" #: main.c:900 #, c-format msgid " %d/%d equivalence classes created\n" msgstr " %d/%d ġ ϴ\n" #: main.c:908 #, c-format msgid " %d/%d meta-equivalence classes created\n" msgstr " %d/%d Ÿ ġ ϴ\n" #: main.c:914 #, c-format msgid " %d (%d saved) hash collisions, %d DFAs equal\n" msgstr " %d(%d ) ؽ 浹 %d DFA ó˴ϴ\n" #: main.c:916 #, c-format msgid " %d sets of reallocations needed\n" msgstr " %d Ҵ ʿմϴ\n" #: main.c:918 #, c-format msgid " %d total table entries needed\n" msgstr " %d ̺ Ʈ ʿմϴ\n" #: main.c:995 #, c-format msgid "Internal error. flexopts are malformed.\n" msgstr "" #: main.c:1005 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "" #: main.c:1062 #, c-format msgid "unknown -C option '%c'" msgstr " -C ɼ '%c'" #: main.c:1191 #, fuzzy, c-format msgid "%s %s\n" msgstr "%s %s\n" #: main.c:1466 msgid "fatal parse error" msgstr "ġ Ľ " #: main.c:1498 #, c-format msgid "could not create backing-up info file %s" msgstr "ǵ %s ϴ" #: main.c:1519 #, c-format msgid "-l AT&T lex compatibility option entails a large performance penalty\n" msgstr "-l AT&T lex ȣȯ ɼ ū ϸ ŵϴ\n" #: main.c:1522 #, c-format msgid " and may be the actual source of other reported performance penalties\n" msgstr " ׸ Ƹ ٸ Դϴ\n" #: main.c:1528 #, fuzzy, c-format msgid "" "%%option yylineno entails a performance penalty ONLY on rules that can match " "newline characters\n" msgstr "%%option yylineno ū ϸ ŵϴ\n" #: main.c:1535 #, c-format msgid "-I (interactive) entails a minor performance penalty\n" msgstr "-I (ȭ) ұԸ ϸ ŵϴ\n" #: main.c:1540 #, c-format msgid "yymore() entails a minor performance penalty\n" msgstr "yymore() ұԸ ϸ ŵϴ\n" #: main.c:1546 #, c-format msgid "REJECT entails a large performance penalty\n" msgstr "REJECT ū ϸ ŵϴ\n" #: main.c:1551 #, c-format msgid "Variable trailing context rules entail a large performance penalty\n" msgstr " Ģ ū ϸ ŵϴ\n" #: main.c:1563 msgid "REJECT cannot be used with -f or -F" msgstr "REJECT -f -Fɼǰ ϴ" #: main.c:1566 #, fuzzy, c-format msgid "%option yylineno cannot be used with REJECT" msgstr "%option yylineno -f -Fɼǰ ϴ" #: main.c:1569 msgid "variable trailing context rules cannot be used with -f or -F" msgstr " Ģ -f -Fɼǰ ϴ" #: main.c:1692 #, c-format msgid "%option yyclass only meaningful for C++ scanners" msgstr "%option yyclass C++ijʿԸ ǹ̰ ֽϴ" #: main.c:1799 #, c-format msgid "Usage: %s [OPTIONS] [FILE]...\n" msgstr "" #: main.c:1802 #, c-format msgid "" "Generates programs that perform pattern-matching on text.\n" "\n" "Table Compression:\n" " -Ca, --align trade off larger tables for better memory alignment\n" " -Ce, --ecs construct equivalence classes\n" " -Cf do not compress tables; use -f representation\n" " -CF do not compress tables; use -F representation\n" " -Cm, --meta-ecs construct meta-equivalence classes\n" " -Cr, --read use read() instead of stdio for scanner input\n" " -f, --full generate fast, large scanner. Same as -Cfr\n" " -F, --fast use alternate table representation. Same as -CFr\n" " -Cem default compression (same as --ecs --meta-ecs)\n" "\n" "Debugging:\n" " -d, --debug enable debug mode in scanner\n" " -b, --backup write backing-up information to %s\n" " -p, --perf-report write performance report to stderr\n" " -s, --nodefault suppress default rule to ECHO unmatched text\n" " -T, --trace %s should run in trace mode\n" " -w, --nowarn do not generate warnings\n" " -v, --verbose write summary of scanner statistics to stdout\n" "\n" "Files:\n" " -o, --outfile=FILE specify output filename\n" " -S, --skel=FILE specify skeleton file\n" " -t, --stdout write scanner on stdout instead of %s\n" " --yyclass=NAME name of C++ class\n" " --header-file=FILE create a C header file in addition to the " "scanner\n" " --tables-file[=FILE] write tables to FILE\n" "\n" "Scanner behavior:\n" " -7, --7bit generate 7-bit scanner\n" " -8, --8bit generate 8-bit scanner\n" " -B, --batch generate batch scanner (opposite of -I)\n" " -i, --case-insensitive ignore case in patterns\n" " -l, --lex-compat maximal compatibility with original lex\n" " -X, --posix-compat maximal compatibility with POSIX lex\n" " -I, --interactive generate interactive scanner (opposite of -B)\n" " --yylineno track line count in yylineno\n" "\n" "Generated code:\n" " -+, --c++ generate C++ scanner class\n" " -Dmacro[=defn] #define macro defn (default defn is '1')\n" " -L, --noline suppress #line directives in scanner\n" " -P, --prefix=STRING use STRING as prefix instead of \"yy\"\n" " -R, --reentrant generate a reentrant C scanner\n" " --bison-bridge scanner for bison pure parser.\n" " --bison-locations include yylloc support.\n" " --stdinit initialize yyin/yyout to stdin/stdout\n" " --noansi-definitions old-style function definitions\n" " --noansi-prototypes empty parameter list in prototypes\n" " --nounistd do not include \n" " --noFUNCTION do not generate a particular FUNCTION\n" "\n" "Miscellaneous:\n" " -c do-nothing POSIX option\n" " -n do-nothing POSIX option\n" " -?\n" " -h, --help produce this help message\n" " -V, --version report %s version\n" msgstr "" #: misc.c:65 msgid "allocation of sko_stack failed" msgstr "" #: misc.c:102 misc.c:128 #, c-format msgid "name \"%s\" ridiculously long" msgstr "̸ \"%s\" ϴ" #: misc.c:177 msgid "memory allocation failed in allocate_array()" msgstr "allocate_array() ޸ Ҵ ߽ϴ" #: misc.c:230 #, c-format msgid "bad character '%s' detected in check_char()" msgstr "check_char() ߸ '%s' ãҽϴ" #: misc.c:235 #, c-format msgid "scanner requires -8 flag to use the character %s" msgstr "ijʿ %s ؼ -8ɼ ʿմϴ" #: misc.c:268 msgid "dynamic memory failure in copy_string()" msgstr "copy_string() ޸ Ҵ ߽ϴ" #: misc.c:367 #, c-format msgid "%s: fatal internal error, %s\n" msgstr "%s: ġ , %s\n" #: misc.c:803 msgid "attempt to increase array size failed" msgstr "迭 ũ⸦ ø õ ߽ϴ" #: misc.c:930 msgid "bad line in skeleton file" msgstr "̷ Ͽ ߸ " #: misc.c:979 msgid "memory allocation failed in yy_flex_xmalloc()" msgstr "yy_flex_xmalloc() ޸ Ҵ ߽ϴ" #: nfa.c:104 #, c-format msgid "" "\n" "\n" "********** beginning dump of nfa with start state %d\n" msgstr "" "\n" "\n" "********** %d nfa \n" #: nfa.c:115 #, c-format msgid "state # %4d\t" msgstr " ȣ %4d\t" #: nfa.c:130 #, c-format msgid "********** end of dump\n" msgstr "********** \n" #: nfa.c:174 msgid "empty machine in dupmachine()" msgstr "dupmachine() ӽ" #: nfa.c:240 #, c-format msgid "Variable trailing context rule at line %d\n" msgstr "%d࿡ Ģ\n" #: nfa.c:364 msgid "bad state type in mark_beginning_as_normal()" msgstr "mark_beginning_as_normal() ߸ " #: nfa.c:609 #, c-format msgid "input rules are too complicated (>= %d NFA states)" msgstr "Է Ģ ʹ մϴ(>= NFA %d)" #: nfa.c:688 msgid "found too many transitions in mkxtion()" msgstr "mkxtion() ̰ ʹ ϴ" #: nfa.c:714 #, c-format msgid "too many rules (> %d)!" msgstr "Ģ ʹ ϴ (> %d)!" #: parse.y:159 msgid "unknown error processing section 1" msgstr "" #: parse.y:184 parse.y:351 #, fuzzy msgid "bad start condition list" msgstr "߸ < >: %s" #: parse.y:315 #, fuzzy msgid "unrecognized rule" msgstr " '%' " #: parse.y:434 parse.y:447 parse.y:516 #, fuzzy msgid "trailing context used twice" msgstr "%d࿡ Ģ\n" #: parse.y:552 parse.y:562 parse.y:635 parse.y:645 msgid "bad iteration values" msgstr "" #: parse.y:580 parse.y:598 parse.y:663 parse.y:681 msgid "iteration value must be positive" msgstr "" #: parse.y:804 parse.y:814 #, c-format msgid "the character range [%c-%c] is ambiguous in a case-insensitive scanner" msgstr "" #: parse.y:819 #, fuzzy msgid "negative range in character class" msgstr " ڷ ϴ\n" #: parse.y:916 #, fuzzy msgid "[:^lower:] is ambiguous in case insensitive scanner" msgstr "\t-i ҹ ijʸ ϴ\n" #: parse.y:922 #, fuzzy msgid "[:^upper:] ambiguous in case insensitive scanner" msgstr "\t-i ҹ ijʸ ϴ\n" #: scan.l:75 scan.l:618 scan.l:676 msgid "Input line too long\n" msgstr "" #: scan.l:161 #, fuzzy, c-format msgid "malformed '%top' directive" msgstr " '%' " #: scan.l:183 #, no-c-format msgid "unrecognized '%' directive" msgstr " '%' " #: scan.l:192 msgid "Definition name too long\n" msgstr "" #: scan.l:284 msgid "Unmatched '{'" msgstr "" #: scan.l:300 #, c-format msgid "Definition value for {%s} too long\n" msgstr "" #: scan.l:317 msgid "incomplete name definition" msgstr "ҿ ̸ " #: scan.l:443 msgid "Option line too long\n" msgstr "" #: scan.l:451 #, c-format msgid "unrecognized %%option: %s" msgstr " %%option: %s" #: scan.l:633 scan.l:800 msgid "bad character class" msgstr "߸ ڷ" #: scan.l:683 #, c-format msgid "undefined definition {%s}" msgstr "ǵ {%s}" #: scan.l:755 #, c-format msgid "bad : %s" msgstr "߸ < >: %s" #: scan.l:768 msgid "missing quote" msgstr "οȣ " #: scan.l:834 #, c-format msgid "bad character class expression: %s" msgstr "߸ : %s" #: scan.l:856 msgid "bad character inside {}'s" msgstr "{} ߸ " #: scan.l:862 msgid "missing }" msgstr "} ϴ" #: scan.l:940 msgid "EOF encountered inside an action" msgstr " ߿ EOF ϴ" #: scan.l:945 #, fuzzy msgid "EOF encountered inside pattern" msgstr " ߿ EOF ϴ" #: scan.l:967 #, c-format msgid "bad character: %s" msgstr "߸ : %s" #: scan.l:996 #, c-format msgid "can't open %s" msgstr "%s ϴ" #: scanopt.c:291 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "" #: scanopt.c:564 #, c-format msgid "option `%s' doesn't allow an argument\n" msgstr "" #: scanopt.c:569 #, c-format msgid "option `%s' requires an argument\n" msgstr "" #: scanopt.c:573 #, c-format msgid "option `%s' is ambiguous\n" msgstr "" #: scanopt.c:577 #, fuzzy, c-format msgid "Unrecognized option `%s'\n" msgstr " %%option: %s" #: scanopt.c:581 #, c-format msgid "Unknown error=(%d)\n" msgstr "" #: sym.c:100 msgid "symbol table memory allocation failed" msgstr "ɺ ̺ ޸ Ҵ ߽ϴ" #: sym.c:202 msgid "name defined twice" msgstr "̸ ι ߽ϴ" #: sym.c:253 #, c-format msgid "start condition %s declared twice" msgstr " %s ι ߽ϴ" #: yylex.c:56 msgid "premature EOF" msgstr "۽ EOF" #: yylex.c:198 #, c-format msgid "End Marker\n" msgstr " ǥ\n" #: yylex.c:204 #, c-format msgid "*Something Weird* - tok: %d val: %d\n" msgstr "* ̻մϴ* - tok: %d val: %d\n" #~ msgid "" #~ "%s: unknown flag '%c'. For usage, try\n" #~ "\t%s --help\n" #~ msgstr "" #~ "%s: ɼ '%c'. \n" #~ "\t%s --help ϼ.\n" #~ msgid "-P flag must be given separately" #~ msgstr "-P ÷״ ־ մϴ" #~ msgid "-o flag must be given separately" #~ msgstr "-o ÷״ ־ մϴ" #~ msgid "-S flag must be given separately" #~ msgstr "-S ÷״ ־ մϴ" #~ msgid "-C flag must be given separately" #~ msgstr "-C ÷״ ־ մϴ" #~ msgid "consistency check failed in symfollowset" #~ msgstr "symfollowset ϰ ˻簡 ߽ϴ" #~ msgid "-Cf/-CF and %option yylineno are incompatible" #~ msgstr "-Cf/-CF %option yylineno ϴ" #~ msgid "" #~ "%s [-bcdfhilnpstvwBFILTV78+? -C[aefFmr] -ooutput -Pprefix -Sskeleton]\n" #~ msgstr "" #~ "%s [-bcdfhilnpstvwBFILTV78+? -C[aefFmr] -o -Pλ -S̷]\n" #~ msgid "\t[--help --version] [file ...]\n" #~ msgstr "\t[--help --version] [ ...]\n" #~ msgid "\t-b generate backing-up information to %s\n" #~ msgstr "\t-b %s ǵ ϴ.\n" #~ msgid "\t-c do-nothing POSIX option\n" #~ msgstr "\t-c ƹ ϵ ʴ POSIXɼ\n" #~ msgid "\t-d turn on debug mode in generated scanner\n" #~ msgstr "\t-d ijʿ ٲߴϴ\n" #~ msgid "\t-f generate fast, large scanner\n" #~ msgstr "\t-f ū ijʸ ϴ\n" #~ msgid "\t-h produce this help message\n" #~ msgstr "\t-h ޽ մϴ\n" #~ msgid "\t-l maximal compatibility with original lex\n" #~ msgstr "\t-l lex ִ ȣȯ մϴ\n" #~ msgid "\t-n do-nothing POSIX option\n" #~ msgstr "\t-n ƹ ϵ ʴ POSIXɼ\n" #~ msgid "\t-p generate performance report to stderr\n" #~ msgstr "\t-p ǥ մϴ\n" #~ msgid "\t-s suppress default rule to ECHO unmatched text\n" #~ msgstr "\t-s ⺻ Ģ 'ECHO ã ' մϴ\n" #~ msgid "\t-t write generated scanner on stdout instead of %s\n" #~ msgstr "\t-t %s ijʸ ǥ ϴ\n" #~ msgid "\t-v write summary of scanner statistics to f\n" #~ msgstr "\t-v ij f ϴ\n" #~ msgid "\t-w do not generate warnings\n" #~ msgstr "\t-w ʽϴ\n" #~ msgid "\t-B generate batch scanner (opposite of -I)\n" #~ msgstr "\t-B ϰó ijʸ ϴ(-I ݴ)\n" #~ msgid "\t-F use alternative fast scanner representation\n" #~ msgstr "\t-F ٸ ij ǥ մϴ\n" #~ msgid "\t-I generate interactive scanner (opposite of -B)\n" #~ msgstr "\t-I ȭ ijʸ ϴ(-B ݴ)\n" #~ msgid "\t-L suppress #line directives in scanner\n" #~ msgstr "\t-L ijʿ #lineڸ ʵ մϴ\n" #~ msgid "\t-T %s should run in trace mode\n" #~ msgstr "\t-T %s 忡 ǵ մϴ\n" #~ msgid "\t-V report %s version\n" #~ msgstr "\t-V %s մϴ\n" #~ msgid "\t-7 generate 7-bit scanner\n" #~ msgstr "\t-7 7Ʈ ijʸ ϴ\n" #~ msgid "\t-8 generate 8-bit scanner\n" #~ msgstr "\t-8 8Ʈ ijʸ ϴ\n" #~ msgid "\t-+ generate C++ scanner class\n" #~ msgstr "\t-+ C++ ij Ŭ ϴ\n" #~ msgid "\t-? produce this help message\n" #~ msgstr "\t-? մϴ\n" #~ msgid "\t-C specify degree of table compression (default is -Cem):\n" #~ msgstr "\t-C ̺ մϴ(⺻ -Cem):\n" #~ msgid "\t\t-Ca trade off larger tables for better memory alignment\n" #~ msgstr "\t\t-Ca ޸ ū ̺ ϴ\n" #~ msgid "\t\t-Ce construct equivalence classes\n" #~ msgstr "\t\t-Ce ġ ϴ\n" #~ msgid "\t\t-Cf do not compress scanner tables; use -f representation\n" #~ msgstr "\t\t-Cf ij ̺ ʽϴ. -fǥ մϴ\n" #~ msgid "\t\t-CF do not compress scanner tables; use -F representation\n" #~ msgstr "\t\t-CF ij ̺ ʽϴ. -Fǥ մϴ\n" #~ msgid "\t\t-Cm construct meta-equivalence classes\n" #~ msgstr "\t\t-Cm Ÿ ġ ϴ\n" #~ msgid "\t\t-Cr use read() instead of stdio for scanner input\n" #~ msgstr "" #~ "\t\t-Cr ij Է stdio̺귯 read()ý մϴ\n" #~ msgid "\t-o specify output filename\n" #~ msgstr "\t-o ̸ մϴ\n" #~ msgid "\t-P specify scanner prefix other than \"yy\"\n" #~ msgstr "\t-P \"yy\"ſ ٸ ij λ縦 մϴ\n" #~ msgid "\t-S specify skeleton file\n" #~ msgstr "\t-S ̷ մϴ\n" #~ msgid "\t--help produce this help message\n" #~ msgstr "\t--help մϴ\n" #~ msgid "\t--version report %s version\n" #~ msgstr "\t--version %s մϴ\n" flex-2.5.39/po/vi.po0000644000175000017500000007023512314621665014433 0ustar srivastasrivasta# Vietnamese translation for Flex. # Bản dịch tiếng Việt dành cho flex. # Copyright (C) 2014 The Flex Project (msgids) # Copyright (C) 2014 Free Software Foundation, Inc. # This file is distributed under the same license as the flex package. # Clytie Siddall , 2005-2008. # Trần Ngọc Quân , 2012-2014. # msgid "" msgstr "" "Project-Id-Version: flex-2.5.38\n" "Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2014-03-26 15:00-0400\n" "PO-Revision-Date: 2014-02-14 08:17+0700\n" "Last-Translator: Trần Ngọc Quân \n" "Language-Team: Vietnamese \n" "Language: vi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 1.5.5\n" "X-Poedit-SourceCharset: utf-8\n" #: buf.c:78 msgid "Allocation of buffer to print string failed" msgstr "Việc phân bổ bộ đệm cho lệnh in chuỗi gặp lỗi" #: buf.c:100 msgid "Allocation of buffer for line directive failed" msgstr "Việc phân bổ bộ đệm cho chỉ thị dòng gặp lỗi" #: buf.c:177 msgid "Allocation of buffer for m4 def failed" msgstr "Việc phân bổ bộ đệm cho “m4 def” gặp lỗi" #: buf.c:197 msgid "Allocation of buffer for m4 undef failed" msgstr "Việc phân bổ bộ đệm cho “m4 undef” gặp lỗi" #: dfa.c:61 #, c-format msgid "State #%d is non-accepting -\n" msgstr "Trạng thái #%d là không chấp nhận -\n" #: dfa.c:124 msgid "dangerous trailing context" msgstr "ngữ cảnh theo sau là nguy hiểm" #: dfa.c:166 #, c-format msgid " associated rule line numbers:" msgstr " số thứ tự dòng quy tắc tương ứng:" #: dfa.c:202 #, c-format msgid " out-transitions: " msgstr " việc chuyển tiếp xuất: " #: dfa.c:210 #, c-format msgid "" "\n" " jam-transitions: EOF " msgstr "" "\n" " chuyển tiếp kẹt: gặp kết thúc tập tin " #: dfa.c:341 msgid "consistency check failed in epsclosure()" msgstr "việc kiểm tra sự thống nhất bị lỗi trong epsclosure()" #: dfa.c:429 msgid "" "\n" "\n" "DFA Dump:\n" "\n" msgstr "" "\n" "\n" "Đổ DFA:\n" "\n" #: dfa.c:604 msgid "could not create unique end-of-buffer state" msgstr "không thể tạo trạng thái kết-thúc-bộ-đệm duy nhất" #: dfa.c:625 #, c-format msgid "state # %d:\n" msgstr "trạng thái# %d:\n" #: dfa.c:785 msgid "Could not write yynxt_tbl[][]" msgstr "Không thể ghi \"yynxt_tbl[][]\"" #: dfa.c:1049 msgid "bad transition character detected in sympartition()" msgstr "phát hiện ký tự chuyển tiếp sai trong sympartition()" #: gen.c:478 msgid "" "\n" "\n" "Equivalence Classes:\n" "\n" msgstr "" "\n" "\n" "Lớp tương đương:\n" "\n" #: gen.c:662 gen.c:691 gen.c:1215 #, c-format msgid "state # %d accepts: [%d]\n" msgstr "trạng thái # %d chấp nhận: [%d]\n" #: gen.c:1110 #, c-format msgid "state # %d accepts: " msgstr "trạng thái # %d chấp nhận: " #: gen.c:1157 msgid "Could not write yyacclist_tbl" msgstr "Không thể ghi \"yyacclist_tbl\"" #: gen.c:1233 msgid "Could not write yyacc_tbl" msgstr "Không thể ghi \"yyacc_tbl\"" #: gen.c:1248 gen.c:1633 gen.c:1656 msgid "Could not write ecstbl" msgstr "Không thể ghi \"ecstbl\"" #: gen.c:1271 msgid "" "\n" "\n" "Meta-Equivalence Classes:\n" msgstr "" "\n" "\n" "Lớp tương-đương-meta:\n" #: gen.c:1293 msgid "Could not write yymeta_tbl" msgstr "Không thể ghi \"yymeta_tbl\"" #: gen.c:1354 msgid "Could not write yybase_tbl" msgstr "Không thể ghi \"yybase_tbl\"" #: gen.c:1388 msgid "Could not write yydef_tbl" msgstr "Không thể ghi \"yydef_tbl\"" #: gen.c:1428 msgid "Could not write yynxt_tbl" msgstr "Không thể ghi \"yynxt_tbl\"" #: gen.c:1464 msgid "Could not write yychk_tbl" msgstr "Không thể ghi \"yychk_tbl\"" #: gen.c:1618 gen.c:1647 msgid "Could not write ftbl" msgstr "Không thể ghi \"ftbl\"" #: gen.c:1624 msgid "Could not write ssltbl" msgstr "Không thể ghi \"ssltbl\"" #: gen.c:1675 msgid "Could not write eoltbl" msgstr "Không thể ghi \"eoltbl\"" #: gen.c:1735 msgid "Could not write yynultrans_tbl" msgstr "Không thể ghi \"yynultrans_tbl\"" #: main.c:191 msgid "rule cannot be matched" msgstr "quy tắc không thể được khớp" #: main.c:196 msgid "-s option given but default rule can be matched" msgstr "đưa ra tùy chọn \"-s\" còn quy tắc mặc định có thể được khớp" #: main.c:236 msgid "Can't use -+ with -l option" msgstr "Không thể dùng ký tự \"-+\" với tùy chọn \"-l\"" #: main.c:239 msgid "Can't use -f or -F with -l option" msgstr "Không thể dùng cờ \"-f\" hoặc \"-F\" với tùy chọn \"-l\"" #: main.c:243 msgid "Can't use --reentrant or --bison-bridge with -l option" msgstr "" "Không thể dùng đối số \"--reentrant\" (điều vào lại) hoặc \"--bison-bridge" "\" (chiếc cầu bison) với tùy chọn \"-l\"" #: main.c:275 msgid "-Cf/-CF and -Cm don't make sense together" msgstr "Hai tùy chọn \"-Cf/-CF\" và \"-Cm\" với nhau thì không có ý nghĩa" #: main.c:278 msgid "-Cf/-CF and -I are incompatible" msgstr "Hai tùy chọn \"-Cf/-CF\" và \"-I\" không tương thích với nhau" #: main.c:282 msgid "-Cf/-CF are incompatible with lex-compatibility mode" msgstr "" "Tùy chọn \"-Cf/-CF\" không tương thích với chế độ \"lex-compatibility" "\" (tương thích với lex)" #: main.c:287 msgid "-Cf and -CF are mutually exclusive" msgstr "Hai tùy chọn \"-Cf\" and \"-CF\" loại từ lẫn nhau" #: main.c:291 msgid "Can't use -+ with -CF option" msgstr "Không thể dùng ký tự \"-+\" với tùy chọn \"-CF\"" #: main.c:294 #, c-format msgid "%array incompatible with -+ option" msgstr "\"%array\" (mảng) không tương thích với tùy chọn \"-+\"" #: main.c:299 msgid "Options -+ and --reentrant are mutually exclusive." msgstr "Hai tùy chọn \"- +\" và \"--reentrant\" xung đột với nhau." #: main.c:302 msgid "bison bridge not supported for the C++ scanner." msgstr "bison bridge (chiếc cầu bison) không được hỗ trợ với bộ quét C++." #: main.c:357 main.c:403 #, c-format msgid "could not create %s" msgstr "không thể tạo %s" #: main.c:416 msgid "could not write tables header" msgstr "không thể ghi phần đầu bảng" #: main.c:420 #, c-format msgid "can't open skeleton file %s" msgstr "không thể mở tập tin khung sườn %s" #: main.c:456 msgid "allocation of macro definition failed" msgstr "việc phân bổ cho định nghĩa macro gặp lỗi" #: main.c:504 #, c-format msgid "input error reading skeleton file %s" msgstr "gặp lỗi nhập vào khi đọc tập tin khung sườn %s" #: main.c:508 #, c-format msgid "error closing skeleton file %s" msgstr "gặp lỗi khi đóng tập tin khung sườn %s" #: main.c:693 #, c-format msgid "error creating header file %s" msgstr "gặp lỗi khi tạo tập tin phần đầu %s" #: main.c:701 #, c-format msgid "error writing output file %s" msgstr "gặp lỗi khi ghi tập tin xuất %s" #: main.c:705 #, c-format msgid "error closing output file %s" msgstr "gặp lỗi khi đóng tập tin xuất %s" #: main.c:709 #, c-format msgid "error deleting output file %s" msgstr "gặp lỗi khi xoá bỏ tập tin xuất %s" #: main.c:716 #, c-format msgid "No backing up.\n" msgstr "Không sao lưu.\n" #: main.c:720 #, c-format msgid "%d backing up (non-accepting) states.\n" msgstr "%d đang sao lưu các trạng thái (kiểu không chấp nhận).\n" #: main.c:724 #, c-format msgid "Compressed tables always back up.\n" msgstr "Bảng đã nén lúc nào cũng sao lưu.\n" #: main.c:727 #, c-format msgid "error writing backup file %s" msgstr "găp lỗi khi ghi tập tin sao lưu %s" #: main.c:731 #, c-format msgid "error closing backup file %s" msgstr "gặp lỗi khi đóng tập tin sao lưu %s" #: main.c:736 #, c-format msgid "%s version %s usage statistics:\n" msgstr "%s phiên bản %s thống kê sử dụng:\n" #: main.c:739 #, c-format msgid " scanner options: -" msgstr " tùy chọn bộ quét: —" #: main.c:818 #, c-format msgid " %d/%d NFA states\n" msgstr " %d/%d trạng thái NFA\n" #: main.c:820 #, c-format msgid " %d/%d DFA states (%d words)\n" msgstr " %d/%d trạng thái DFA (%d từ)\n" #: main.c:822 #, c-format msgid " %d rules\n" msgstr " %d quy tắc\n" #: main.c:827 #, c-format msgid " No backing up\n" msgstr " Không sao lưu\n" #: main.c:831 #, c-format msgid " %d backing-up (non-accepting) states\n" msgstr " %d đang sao lưu các trạng thái (kiểu không chấp nhận)\n" #: main.c:836 #, c-format msgid " Compressed tables always back-up\n" msgstr " Bảng đã nén lúc nào cũng sao lưu\n" #: main.c:840 #, c-format msgid " Beginning-of-line patterns used\n" msgstr " Dùng mẫu kiểu đầu dòng\n" #: main.c:842 #, c-format msgid " %d/%d start conditions\n" msgstr " %d/%d điều kiện bắt đầu\n" #: main.c:846 #, c-format msgid " %d epsilon states, %d double epsilon states\n" msgstr " %d trạng thái épxilông (ε), %d trạng thái épxilông đôi\n" #: main.c:850 #, c-format msgid " no character classes\n" msgstr " không có lớp ký tự\n" #: main.c:854 #, c-format msgid " %d/%d character classes needed %d/%d words of storage, %d reused\n" msgstr " %d/%d lớp ký tự cần %d/%d từ bộ nhớ, %d được dùng lại\n" #: main.c:859 #, c-format msgid " %d state/nextstate pairs created\n" msgstr " %d cặp trạng_thái/trạng_thái_kế đã được tạo\n" #: main.c:862 #, c-format msgid " %d/%d unique/duplicate transitions\n" msgstr " %d/%d việc chuyển tiếp duy nhất/trùng\n" #: main.c:867 #, c-format msgid " %d table entries\n" msgstr " %d mục tin bảng\n" #: main.c:875 #, c-format msgid " %d/%d base-def entries created\n" msgstr " %d/%d mục tin base-def (định nghĩa cơ bản) đã được tạo\n" #: main.c:879 #, c-format msgid " %d/%d (peak %d) nxt-chk entries created\n" msgstr " %d/%d (tối đa %d) mục tin nxt-chk (kiểm tra kế tiếp) đã được tạo\n" #: main.c:883 #, c-format msgid " %d/%d (peak %d) template nxt-chk entries created\n" msgstr "" " %d/%d (tối đa %d) mục tin biểu mẫu nxt-chk (kiểm tra kế tiếp) đã được tạo\n" #: main.c:887 #, c-format msgid " %d empty table entries\n" msgstr " %d mục tin bảng trống\n" #: main.c:889 #, c-format msgid " %d protos created\n" msgstr " %d proto (khai báo nguyên mẫu) đã được tạo\n" #: main.c:892 #, c-format msgid " %d templates created, %d uses\n" msgstr " %d mẫu đã được tạo, %d lần dùng\n" #: main.c:900 #, c-format msgid " %d/%d equivalence classes created\n" msgstr " %d/%d lớp kiểu tương đương đã được tạo\n" #: main.c:908 #, c-format msgid " %d/%d meta-equivalence classes created\n" msgstr " %d/%d lớp tương-đương-meta đã được tạo\n" #: main.c:914 #, c-format msgid " %d (%d saved) hash collisions, %d DFAs equal\n" msgstr " %d (%d được lưu) lần va chạm mã băm, %d DFA bằng nhau\n" #: main.c:916 #, c-format msgid " %d sets of reallocations needed\n" msgstr " cần %d tập hợp tái cấp phát\n" #: main.c:918 #, c-format msgid " %d total table entries needed\n" msgstr " cần tổng %d mục tin bảng\n" #: main.c:995 #, c-format msgid "Internal error. flexopts are malformed.\n" msgstr "Gặp lỗi nội bộ vì những flexopts sai dạng.\n" #: main.c:1005 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Hãy thử lệnh \"%s --help\" (trợ giúp) để xem thêm thông tin.\n" #: main.c:1062 #, c-format msgid "unknown -C option '%c'" msgstr "không hiểu tùy chọn \"-C\" là \"%c\"" #: main.c:1191 #, c-format msgid "%s %s\n" msgstr "%s %s\n" #: main.c:1466 msgid "fatal parse error" msgstr "gặp lỗi phân tích nghiêm trọng" #: main.c:1498 #, c-format msgid "could not create backing-up info file %s" msgstr "không thể tạo tập tin thông tin sao lưu %s" #: main.c:1519 #, c-format msgid "-l AT&T lex compatibility option entails a large performance penalty\n" msgstr "" "Tùy chọn kiểu tương thích lex AT&T \"-l\" làm giảm hiệu suất rất nhiều\n" #: main.c:1522 #, c-format msgid " and may be the actual source of other reported performance penalties\n" msgstr " thì có lẽ thật gây ra trường hợp giảm hiệu suất khác\n" #: main.c:1528 #, c-format msgid "" "%%option yylineno entails a performance penalty ONLY on rules that can match " "newline characters\n" msgstr "" "%%tùy chọn \"yylineno\" giảm hiệu suất CHỈ với quy tắc khớp với ký tự dòng " "mới\n" #: main.c:1535 #, c-format msgid "-I (interactive) entails a minor performance penalty\n" msgstr "Tùy chọn \"-I\" (tương tác) giảm hiệu suất một ít\n" #: main.c:1540 #, c-format msgid "yymore() entails a minor performance penalty\n" msgstr "yymore() giảm hiệu suất một ít\n" #: main.c:1546 #, c-format msgid "REJECT entails a large performance penalty\n" msgstr "REJECT (đẩy ra) làm suy giảm hiệu suất nghiêm trọng\n" #: main.c:1551 #, c-format msgid "Variable trailing context rules entail a large performance penalty\n" msgstr "Quy tắc ngữ cảnh theo sau biến rất giảm hiệu suất\n" #: main.c:1563 msgid "REJECT cannot be used with -f or -F" msgstr "Không cho phép dùng REJECT (đẩy ra) với tùy chọn \"-f\" hay \"-F\"" #: main.c:1566 #, c-format msgid "%option yylineno cannot be used with REJECT" msgstr "" "Không cho phép dùng %option (tùy chọn) \"yylineno\" với REJECT (đẩy ra)" #: main.c:1569 msgid "variable trailing context rules cannot be used with -f or -F" msgstr "" "không cho phép dùng quy tắc ngữ cảnh theo sau biến với tùy chọn \"-f\" hay " "\"-F\"" #: main.c:1692 #, c-format msgid "%option yyclass only meaningful for C++ scanners" msgstr "%option (tùy chọn) \"yyclass\" chỉ có ý nghĩa với bộ quét C++" #: main.c:1799 #, c-format msgid "Usage: %s [OPTIONS] [FILE]...\n" msgstr "Cách dùng: %s [TÙY_CHỌN] [TẬP_TIN]...\n" #: main.c:1802 #, c-format msgid "" "Generates programs that perform pattern-matching on text.\n" "\n" "Table Compression:\n" " -Ca, --align trade off larger tables for better memory alignment\n" " -Ce, --ecs construct equivalence classes\n" " -Cf do not compress tables; use -f representation\n" " -CF do not compress tables; use -F representation\n" " -Cm, --meta-ecs construct meta-equivalence classes\n" " -Cr, --read use read() instead of stdio for scanner input\n" " -f, --full generate fast, large scanner. Same as -Cfr\n" " -F, --fast use alternate table representation. Same as -CFr\n" " -Cem default compression (same as --ecs --meta-ecs)\n" "\n" "Debugging:\n" " -d, --debug enable debug mode in scanner\n" " -b, --backup write backing-up information to %s\n" " -p, --perf-report write performance report to stderr\n" " -s, --nodefault suppress default rule to ECHO unmatched text\n" " -T, --trace %s should run in trace mode\n" " -w, --nowarn do not generate warnings\n" " -v, --verbose write summary of scanner statistics to stdout\n" "\n" "Files:\n" " -o, --outfile=FILE specify output filename\n" " -S, --skel=FILE specify skeleton file\n" " -t, --stdout write scanner on stdout instead of %s\n" " --yyclass=NAME name of C++ class\n" " --header-file=FILE create a C header file in addition to the " "scanner\n" " --tables-file[=FILE] write tables to FILE\n" "\n" "Scanner behavior:\n" " -7, --7bit generate 7-bit scanner\n" " -8, --8bit generate 8-bit scanner\n" " -B, --batch generate batch scanner (opposite of -I)\n" " -i, --case-insensitive ignore case in patterns\n" " -l, --lex-compat maximal compatibility with original lex\n" " -X, --posix-compat maximal compatibility with POSIX lex\n" " -I, --interactive generate interactive scanner (opposite of -B)\n" " --yylineno track line count in yylineno\n" "\n" "Generated code:\n" " -+, --c++ generate C++ scanner class\n" " -Dmacro[=defn] #define macro defn (default defn is '1')\n" " -L, --noline suppress #line directives in scanner\n" " -P, --prefix=STRING use STRING as prefix instead of \"yy\"\n" " -R, --reentrant generate a reentrant C scanner\n" " --bison-bridge scanner for bison pure parser.\n" " --bison-locations include yylloc support.\n" " --stdinit initialize yyin/yyout to stdin/stdout\n" " --noansi-definitions old-style function definitions\n" " --noansi-prototypes empty parameter list in prototypes\n" " --nounistd do not include \n" " --noFUNCTION do not generate a particular FUNCTION\n" "\n" "Miscellaneous:\n" " -c do-nothing POSIX option\n" " -n do-nothing POSIX option\n" " -?\n" " -h, --help produce this help message\n" " -V, --version report %s version\n" msgstr "" "Tạo ra chương trình để thực hiện tiến trình khớp mẫu trên văn bản thường.\n" "\n" "Cách nén bảng:\n" " -Ca, --align thoả hiệp giữa bảng lớn hơn và độ _canh lề_ bộ nhớ khá " "hơn\n" " -Ce, --ecs cấu tạo lớp kiểu tương đương\n" " -Cf không nén bảng; dùng sự tiêu biểu \"-f\"\n" " -CF không nén bảng; dùng sự cách tiêu biểu \"-F\"\n" " -Cm, --meta-ecs cấu tạo lớp kiểu meta tương đương\n" " -Cr, --read dùng chức năng read() thay thế thiết bị nhập/xuất chuẩn " "để nhập bộ quét\n" " -f, --full tạo ra bộ quét nhanh và lớn; bằng -Cfr (_đầy đủ_)\n" " -F, --fast dùng sự tiêu biểu bảng xen kẽ; bằng -CFr (_nhanh_)\n" " -Cem phương pháp nén mặc định; bằng \"--ecs\" \"--meta-ecs" "\")\n" "\n" "Gỡ lỗi:\n" " -d, --debug bật chế độ _gỡ lỗi_ trong bộ quét\n" " -b, --backup ghi thông tin _sao lưu_ vào %s\n" " -p, --perf-report ghi _thông báo hiệu suất_ vào thiết bị lỗi chuẩn\n" " -s, --nodefault thu hồi quy tắc _mặc định_ để ECHO (vọng) đoạn " "chưa khớp\n" " -T, --trace %s nên chạy trong chế độ theo _dấu vết_\n" " -w, --nowarn _không_ tạo ra lời _cảnh báo_\n" " -v, --verbose ghi tóm tắt các thống kê bộ quét vào thiết bị xuất " "chuẩn (_chi tiêt_)\n" "\n" "Tập tin:\n" " -o, --outfile=TẬP_TIN ghi rõ tên _tập tin xuất_\n" " -S, --skel=TẬP_TIN ghi rõ tập tin _khung sườn_\n" " -t, --stdout ghi bộ quét ra _thiết bị xuất chuẩn_ thay thế ra " "%s\n" " --yyclass=TÊN tên của _lớp_ C++\n" " --header-file=TẬP_TIN tạo _tập tin phần đầu_ C thêm vào bộ quét\n" " --tables-file[=TẬP_TIN] ghi các bảng vào TẬP_TIN này\n" "\n" "Ứng xử của bộ quét:\n" " -7, --7bit tạo ra bộ quét kiểu 7-bit\n" " -8, --8bit tạo ra bộ quét kiểu 8-bit\n" " -B, --batch tạo ra bộ quét _bó_ (ngược với \"-I\")\n" " -i, --case-insensitive _không phân biệt HOA/thường_ trong mẫu\n" " -l, --lex-compat độ _tương thích_ tối đa với lex gốc\n" " -X, --posix-compat độ _tương thích_ tối đa với lex _POSIX_\n" " -I, --interactive tạo ra bộ quét _tương tác_ (ngược với \"-B\")\n" " --yylineno theo dõi số đếm số dòng trong yylineno\n" "\n" "Mã đã tạo ra :\n" " -+, --c++ tạo ra hang bộ quét kiểu C++\n" " -Dmacro[=định_nghĩa] _định nghĩa_ cho lệnh #define (mặc định là " "\"1\")\n" " -L, --noline thu hồi các chỉ thị #line trong bộ quét\n" " -P, --prefix=CHUỖI dùng CHUỖI này là _tiền tố_ thay thế \"yy\"\n" " -R, --reentrant tạo ra một bộ quét C kiểu _vào lại_\n" " --bison-bridge bộ quét cho trình phân tách thuần tuý kiểu " "bison.\n" " --bison-locations gồm khả năng hỗ trợ yylloc (_địa điểm_).\n" " --stdinit khởi động yyin/yyout vào thiết bị nhập/xuất " "chuẩn\n" " --noansi-definitions _lời định nghĩa_ chức năng kiểu cũ (_không " "ANSI_)\n" " --noansi-prototypes danh sách tham số trống trong _khai báo nghi " "thức_ (_không ANSI_)\n" " --nounistd _không_ bao gồm \n" " --noCHỨC_NĂNG không tạo ra một CHỨC NĂNG cá biệt\n" "\n" "Lặt vặt:\n" " -c tùy chọn POSIX không làm gì\n" " -n tùy chọn POSIX không làm gì\n" " -?\n" " -h, --help hiển thị _trợ giúp_ này\n" " -V, --version thông báo phiên bản %s\n" #: misc.c:65 msgid "allocation of sko_stack failed" msgstr "việc phân bổ cho sko_stack gặp lỗi" #: misc.c:102 misc.c:128 #, c-format msgid "name \"%s\" ridiculously long" msgstr "tên \"%s\" là dài nhố nhăng" #: misc.c:177 msgid "memory allocation failed in allocate_array()" msgstr "việc phân chia bộ nhớ bị lỗi trong allocate_array() (phân bổ mảng)" #: misc.c:230 #, c-format msgid "bad character '%s' detected in check_char()" msgstr "phát hiện ký tự sai \"%s\" trong check_char() (kiểm tra ký tự)" #: misc.c:235 #, c-format msgid "scanner requires -8 flag to use the character %s" msgstr "bộ quét cần thiết cờ \"-8\" để dùng ký tự %s" #: misc.c:268 msgid "dynamic memory failure in copy_string()" msgstr "bộ nhớ động đã thất bại trong copy_string() (sao chép chuỗi)" #: misc.c:367 #, c-format msgid "%s: fatal internal error, %s\n" msgstr "%s: gặp lỗi nôi bộ nghiêm trọng, %s\n" #: misc.c:803 msgid "attempt to increase array size failed" msgstr "việc thử tăng kích cỡ mảng đã thất bại" #: misc.c:930 msgid "bad line in skeleton file" msgstr "gặp dòng sai trong tập tin khung sườn" #: misc.c:979 msgid "memory allocation failed in yy_flex_xmalloc()" msgstr "việc phân bổ bộ nhớ bị lỗi trong yy_flex_xmalloc()" #: nfa.c:104 #, c-format msgid "" "\n" "\n" "********** beginning dump of nfa with start state %d\n" msgstr "" "\n" "\n" "********** bắt đầu đổ NFA có trạng thái bắt đầu là %d\n" #: nfa.c:115 #, c-format msgid "state # %4d\t" msgstr "trạng thái # %4d\t" #: nfa.c:130 #, c-format msgid "********** end of dump\n" msgstr "********** đổ xong\n" #: nfa.c:174 msgid "empty machine in dupmachine()" msgstr "máy trống trong dupmachine() (nhân đôi máy)" #: nfa.c:240 #, c-format msgid "Variable trailing context rule at line %d\n" msgstr "Gặp quy tắc ngữ cảnh theo sau biến tại dòng %d\n" #: nfa.c:364 msgid "bad state type in mark_beginning_as_normal()" msgstr "" "kiểu trạng thái sai trong mark_beginning_as_normal() (đánh dấu đầu là thường)" #: nfa.c:609 #, c-format msgid "input rules are too complicated (>= %d NFA states)" msgstr "các quy tắc đầu vào là quá phức tạp (≥ %d trạng thái NFA)" #: nfa.c:688 msgid "found too many transitions in mkxtion()" msgstr "gặp quá nhiều chuyển tiếp trong mkxtion()" #: nfa.c:714 #, c-format msgid "too many rules (> %d)!" msgstr "quá nhiều quy tắc (> %d) !" #: parse.y:159 msgid "unknown error processing section 1" msgstr "gặp lỗi không rõ khi xử lý phần 1" #: parse.y:184 parse.y:351 msgid "bad start condition list" msgstr "danh sách điều kiện bắt đầu là sai" #: parse.y:315 msgid "unrecognized rule" msgstr "gặp quy tắc không được thừa nhận" #: parse.y:434 parse.y:447 parse.y:516 msgid "trailing context used twice" msgstr "ngữ cảnh theo sau được dùng hai lần" #: parse.y:552 parse.y:562 parse.y:635 parse.y:645 msgid "bad iteration values" msgstr "gặp giá trị lặp lại sai" #: parse.y:580 parse.y:598 parse.y:663 parse.y:681 msgid "iteration value must be positive" msgstr "giá trị lặp lại phải là số dương" #: parse.y:804 parse.y:814 #, c-format msgid "the character range [%c-%c] is ambiguous in a case-insensitive scanner" msgstr "" "phạm vi ký tự [%c-%c] là chưa rõ ràng trong trường hợp quét bỏ qua chữ HOA/" "thường" #: parse.y:819 msgid "negative range in character class" msgstr "gặp phạm vi âm trong lớp ký tự" #: parse.y:916 msgid "[:^lower:] is ambiguous in case insensitive scanner" msgstr "[:^lower:] là chưa rõ ràng trong trường hợp quét bỏ qua chữ HOA/thường" #: parse.y:922 msgid "[:^upper:] ambiguous in case insensitive scanner" msgstr "[:^upper:] là chưa rõ ràng trong trường hợp quét bỏ qua chữ HOA/thường" #: scan.l:75 scan.l:618 scan.l:676 msgid "Input line too long\n" msgstr "dòng nhập quá dài\n" #: scan.l:161 #, c-format msgid "malformed '%top' directive" msgstr "chỉ thị kiểu \"%top\" (đầu) dạng sai" #: scan.l:183 #, no-c-format msgid "unrecognized '%' directive" msgstr "gặp chỉ thị kiểu \"%\" không được nhận dạng" #: scan.l:192 msgid "Definition name too long\n" msgstr "Tên định nghĩa quá dài\n" #: scan.l:284 msgid "Unmatched '{'" msgstr "Chưa khớp \"{\"" #: scan.l:300 #, c-format msgid "Definition value for {%s} too long\n" msgstr "Giá trị định nghĩa cho {%s} quá dài\n" #: scan.l:317 msgid "incomplete name definition" msgstr "lời đinh nghĩa tên chưa hoàn tất" #: scan.l:443 msgid "Option line too long\n" msgstr "dòng tùy chọn quá dài\n" #: scan.l:451 #, c-format msgid "unrecognized %%option: %s" msgstr "gặp tùy chọn %% không được nhận dạng: %s" #: scan.l:633 scan.l:800 msgid "bad character class" msgstr "lớp ký tự sai" #: scan.l:683 #, c-format msgid "undefined definition {%s}" msgstr "chưa định nghĩa định danh {%s}" #: scan.l:755 #, c-format msgid "bad : %s" msgstr " (điệu kiện bắt đầu) sai: %s" #: scan.l:768 msgid "missing quote" msgstr "thiếu dấu trích dẫn" #: scan.l:834 #, c-format msgid "bad character class expression: %s" msgstr "biểu thức lớp ký tự sai: %s" #: scan.l:856 msgid "bad character inside {}'s" msgstr "có ký tự sai ở trong hai dấu ngoặc móc {}" #: scan.l:862 msgid "missing }" msgstr "thiếu }" #: scan.l:940 msgid "EOF encountered inside an action" msgstr "gặp kết thúc tập tin ở trong một hành động" #: scan.l:945 msgid "EOF encountered inside pattern" msgstr "gặp kết thúc tập tin ở trong mẫu" #: scan.l:967 #, c-format msgid "bad character: %s" msgstr "ký tự sai: %s" #: scan.l:996 #, c-format msgid "can't open %s" msgstr "không thể mở %s" #: scanopt.c:291 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Cách dùng: %s [TÙY_CHỌN]...\n" #: scanopt.c:564 #, c-format msgid "option `%s' doesn't allow an argument\n" msgstr "tùy chọn \"%s\" không cho phép đối số\n" #: scanopt.c:569 #, c-format msgid "option `%s' requires an argument\n" msgstr "tùy chọn \"%s\" cần một đối số\n" #: scanopt.c:573 #, c-format msgid "option `%s' is ambiguous\n" msgstr "tùy chọn \"%s\" chưa rõ ràng\n" #: scanopt.c:577 #, c-format msgid "Unrecognized option `%s'\n" msgstr "Không nhận ra tùy chọn \"%s\"\n" #: scanopt.c:581 #, c-format msgid "Unknown error=(%d)\n" msgstr "Không rõ lỗi=(%d)\n" #: sym.c:100 msgid "symbol table memory allocation failed" msgstr "gặp lỗi khi phân bổ bộ nhớ của bảng ký hiệu" #: sym.c:202 msgid "name defined twice" msgstr "tên đã được định nghĩa hai lần" #: sym.c:253 #, c-format msgid "start condition %s declared twice" msgstr "điều kiện bắt đầu %s đã được khai báo hai lần" #: yylex.c:56 msgid "premature EOF" msgstr "gặp kết thúc tập tin quá sớm" #: yylex.c:198 #, c-format msgid "End Marker\n" msgstr "Dấu kết thúc\n" #: yylex.c:204 #, c-format msgid "*Something Weird* - tok: %d val: %d\n" msgstr "* Điều lạ * — thẻ bài: %d giá trị: %d\n" flex-2.5.39/po/eo.gmo0000644000175000017500000005147312314621665014567 0ustar srivastasrivastaT 7  AOh/'.> S"_#  *3'[z!C$)C%]"#FOn`"&0,+] $" )/Y4y5E/*.Z&(+"6>!u".Lg #' Kl : #(#$ $26$#i$+$$&$$ % %:%Y%*q%C%3%0&%E&k&%&&+&&" '-'G'Y'n'','3'/( 2(@((\((((+(( )'')O)m)))))**<*'N*v*$*2* * +,%+-R+ + +++!+&+,!*, L,Z,0q,!, ,,, -% -F3-z----"-..6.<H.-..4:0o000060+ 1613S11 1'1)12&2)<20f2:222&3B-3)p3-33%3( 4&34Z4l44K4!45n5!5*5,5/616$86"]666'667)75E7Q{7K7-8%G8'm8*8#8"8>9*F9,q999999:0:K:e::::::!; *;#K; o; };.G,FGsGG9G'G1H 7H&XHH HH#HH-HC&I/jI/I II&J /J4PJJ!JJJJ" K/K1OK:K2KK)L..L]L,nL)LLL*L &M)GM&qM(M#M$M* N'5N]N2vNN-N5N##OGO-dO.O OO OO!P(6P_P%P P!P5P- Q 8QEQ[Q vQ'QAQQ" R.RER_R~RRRER0 S%ZC9F"1]dB!)Um:&aT -+@Hoiz[8D}fn2;YOlc<NR=(_r^P *`J,06M Lx{' ?bIe~V/A GwWjQp3t7y4S v>Kq\|sg5hXEu.k#$ ********** beginning dump of nfa with start state %d DFA Dump: Equivalence Classes: Meta-Equivalence Classes: jam-transitions: EOF %d (%d saved) hash collisions, %d DFAs equal %d backing-up (non-accepting) states %d empty table entries %d epsilon states, %d double epsilon states %d protos created %d rules %d sets of reallocations needed %d state/nextstate pairs created %d table entries %d templates created, %d uses %d total table entries needed %d/%d (peak %d) nxt-chk entries created %d/%d (peak %d) template nxt-chk entries created %d/%d DFA states (%d words) %d/%d NFA states %d/%d base-def entries created %d/%d character classes needed %d/%d words of storage, %d reused %d/%d equivalence classes created %d/%d meta-equivalence classes created %d/%d start conditions %d/%d unique/duplicate transitions Beginning-of-line patterns used Compressed tables always back-up No backing up no character classes scanner options: - and may be the actual source of other reported performance penalties associated rule line numbers: out-transitions: %%option yylineno entails a performance penalty ONLY on rules that can match newline characters %array incompatible with -+ option%d backing up (non-accepting) states. %option yyclass only meaningful for C++ scanners%option yylineno cannot be used with REJECT%s %s %s version %s usage statistics: %s: fatal internal error, %s ********** end of dump *Something Weird* - tok: %d val: %d -Cf and -CF are mutually exclusive-Cf/-CF and -Cm don't make sense together-Cf/-CF and -I are incompatible-Cf/-CF are incompatible with lex-compatibility mode-I (interactive) entails a minor performance penalty -l AT&T lex compatibility option entails a large performance penalty -s option given but default rule can be matchedAllocation of buffer for line directive failedAllocation of buffer for m4 def failedAllocation of buffer for m4 undef failedAllocation of buffer to print string failedCan't use -+ with -CF optionCan't use -+ with -l optionCan't use --reentrant or --bison-bridge with -l optionCan't use -f or -F with -l optionCompressed tables always back up. Could not write ecstblCould not write eoltblCould not write ftblCould not write ssltblCould not write yyacc_tblCould not write yyacclist_tblCould not write yybase_tblCould not write yychk_tblCould not write yydef_tblCould not write yymeta_tblCould not write yynultrans_tblCould not write yynxt_tblCould not write yynxt_tbl[][]Definition name too long Definition value for {%s} too long EOF encountered inside an actionEOF encountered inside patternEnd Marker Generates programs that perform pattern-matching on text. Table Compression: -Ca, --align trade off larger tables for better memory alignment -Ce, --ecs construct equivalence classes -Cf do not compress tables; use -f representation -CF do not compress tables; use -F representation -Cm, --meta-ecs construct meta-equivalence classes -Cr, --read use read() instead of stdio for scanner input -f, --full generate fast, large scanner. Same as -Cfr -F, --fast use alternate table representation. Same as -CFr -Cem default compression (same as --ecs --meta-ecs) Debugging: -d, --debug enable debug mode in scanner -b, --backup write backing-up information to %s -p, --perf-report write performance report to stderr -s, --nodefault suppress default rule to ECHO unmatched text -T, --trace %s should run in trace mode -w, --nowarn do not generate warnings -v, --verbose write summary of scanner statistics to stdout Files: -o, --outfile=FILE specify output filename -S, --skel=FILE specify skeleton file -t, --stdout write scanner on stdout instead of %s --yyclass=NAME name of C++ class --header-file=FILE create a C header file in addition to the scanner --tables-file[=FILE] write tables to FILE Scanner behavior: -7, --7bit generate 7-bit scanner -8, --8bit generate 8-bit scanner -B, --batch generate batch scanner (opposite of -I) -i, --case-insensitive ignore case in patterns -l, --lex-compat maximal compatibility with original lex -X, --posix-compat maximal compatibility with POSIX lex -I, --interactive generate interactive scanner (opposite of -B) --yylineno track line count in yylineno Generated code: -+, --c++ generate C++ scanner class -Dmacro[=defn] #define macro defn (default defn is '1') -L, --noline suppress #line directives in scanner -P, --prefix=STRING use STRING as prefix instead of "yy" -R, --reentrant generate a reentrant C scanner --bison-bridge scanner for bison pure parser. --bison-locations include yylloc support. --stdinit initialize yyin/yyout to stdin/stdout --noansi-definitions old-style function definitions --noansi-prototypes empty parameter list in prototypes --nounistd do not include --noFUNCTION do not generate a particular FUNCTION Miscellaneous: -c do-nothing POSIX option -n do-nothing POSIX option -? -h, --help produce this help message -V, --version report %s version Input line too long Internal error. flexopts are malformed. No backing up. Option line too long Options -+ and --reentrant are mutually exclusive.REJECT cannot be used with -f or -FREJECT entails a large performance penalty State #%d is non-accepting - Try `%s --help' for more information. Unknown error=(%d) Unmatched '{'Unrecognized option `%s' Usage: %s [OPTIONS] [FILE]... Usage: %s [OPTIONS]... Variable trailing context rule at line %d Variable trailing context rules entail a large performance penalty [:^lower:] is ambiguous in case insensitive scanner[:^upper:] ambiguous in case insensitive scannerallocation of macro definition failedallocation of sko_stack failedattempt to increase array size failedbad : %sbad character '%s' detected in check_char()bad character classbad character class expression: %sbad character inside {}'sbad character: %sbad iteration valuesbad line in skeleton filebad start condition listbad state type in mark_beginning_as_normal()bad transition character detected in sympartition()bison bridge not supported for the C++ scanner.can't open %scan't open skeleton file %sconsistency check failed in epsclosure()could not create %scould not create backing-up info file %scould not create unique end-of-buffer statecould not write tables headerdangerous trailing contextdynamic memory failure in copy_string()empty machine in dupmachine()error closing backup file %serror closing output file %serror closing skeleton file %serror creating header file %serror deleting output file %serror writing backup file %serror writing output file %sfatal parse errorfound too many transitions in mkxtion()incomplete name definitioninput error reading skeleton file %sinput rules are too complicated (>= %d NFA states)iteration value must be positivemalformed '%top' directivememory allocation failed in allocate_array()memory allocation failed in yy_flex_xmalloc()missing quotemissing }name "%s" ridiculously longname defined twicenegative range in character classoption `%s' doesn't allow an argument option `%s' is ambiguous option `%s' requires an argument premature EOFrule cannot be matchedscanner requires -8 flag to use the character %sstart condition %s declared twicestate # %4d state # %d accepts: state # %d accepts: [%d] state # %d: symbol table memory allocation failedthe character range [%c-%c] is ambiguous in a case-insensitive scannertoo many rules (> %d)!trailing context used twiceundefined definition {%s}unknown -C option '%c'unknown error processing section 1unrecognized %%option: %sunrecognized '%' directiveunrecognized rulevariable trailing context rules cannot be used with -f or -Fyymore() entails a minor performance penalty Project-Id-Version: flex 2.5.37 Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net POT-Creation-Date: 2014-03-26 15:00-0400 PO-Revision-Date: 2012-09-08 07:15-0300 Last-Translator: Felipe Castro Language-Team: Esperanto Language: eo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ********** komenco de ŝuto de nfa kun ekstato %d Nekropsio DFA: Ekvivalentecaj Klasoj: Meta-Ekvivalentecaj Klasoj: ĵam-transigoj: EOF %d (%d konservitaj) haketaj kolizioj, %d DFA egalaj %d savkopianta (ne-akceptantajn) statojn %d malplenaj tabel-enigoj %d epsilonaj statoj, %d duoblaj epsilonaj statoj %d protoj estis kreataj %d reguloj %d aroj de relokigoj estas bezonataj %d stato/sekvstato-paroj estis kreataj %d tabel-enigoj %d ŝablonoj estis kreataj, %d uzoj entute %d tabel-enigoj estas bezonataj %d/%d (pinto %d) enigoj nxt-chk estis kreataj %d/%d (pinto %d) ŝablonaj enigoj nxt-chk estis kreataj %d/%d statoj DFA (%d vortoj) %d/%d statoj NFA %d/%d bazo-def enigoj estis kreataj %d/%d signo-klasoj bezonis %d/%d vortojn da memoro, %d reuzitaj %d/%d ekvivalento-klasoj estis kreataj %d/%d metaekvivalento-klasoj estis kreataj %d/%d komencaj kondiĉoj %d/%d unikaj/duobligitaj transigoj modeloj komenco-de-linio estas uzataj Densigitaj tabeloj ĉiam savkopiite Sen savkopiado neniu signo-klaso skanilaj modifiloj: - kaj povas esti la vera fonto de aliaj raportitaj malaltigoj de rendimento lini-numeroj de asociita regulo: for-transigoj: %%option yylineno alportas malaltigon de rendimento NUR kun reguloj kiuj povas akordiĝi kun novliniaj signoj %array malakordas kun modifilo -+%d savkopiadas (ne-akceptantajn) statojn. %option yyclass nur koheras por skaniloj C++%option yylineno ne povas esti uzata kun REJECT%s %s %s versio %s statistikoj pri usado: %s: neriparebla interna eraro, %s ********** fino de ŝuto *Io Stranga* - ero: %d val: %d -Cf kaj -CF estas reciproke ekskluzivajSensencas -Cf/-CF kaj -Cm kune-Cf/-CF kaj -I malakordas-Cf/-CF malakordas kun lex-akorda reĝimo-I (interage) alportas etan malaltigon de rendimento La modifilo -l AT&T de akordigo al lex alportas grandan malaltigon de rendimento la modifilo -s estis indikata sed la apriora regulo povas esti korespondataRezervo de bufro por linia instrukcio fiaskisRezervo de bufro por 'm4 def' fiaskisRezervo de bufro por 'm4 undef' fiaskisRezervo de bufro por printi ĉenon fiaskisNe eblas uzi -+ kun la modifilo -CFNe eblas uzi -+ kun la modifilo -lNe eblas uzi --reentrant aŭ --bison-bridge kun la modifilo -lNe eblas uzi -f aŭ -F kun la modifilo -lDensigitaj tabeloj ĉiam estas savkopiataj. Ne eblis skribi ecstblNe eblis skribi eoltblNe eblis skribi ftblNe eblis skribi ssltblNe eblis skribi yyacc_tblNe eblis skribi yyacclist_tblNe eblis skribi yybase_tblNe eblis skribi yychk_tblNe eblis skribi yydef_tblNe eblis skribi yymeta_tblNe eblis skribi yynultrans_tblNe eblis skribi yynxt_tblNe eblis skribi yynxt_tbl[][]Nom-difino tro longas Valor-difino por {%s} tro longas EOF estis trovata interne de agoEOF estis trovata interne de modeloFino-markilo Generas programojn kiuj prilaboras modelo-kongruon en tekstoj. Tabela Densigo: -Ca, --align prilaboras pli grandajn tabelojn por pli bone organizi memoron -Ce, --ecs konstrui ekvivalento-klasojn -Cf ne densigi tabelojn; uzi reprezenton -f -CF ne densigi tabelojn; uzi reprezenton -F -Cm, --meta-ecs konstrui metaekvivalento-klasojn -Cr, --read uzi read() anstataŭ 'stdio' kiel enigon al la skanilo -f, --full generi rapidan, grandan skanilon. Same ol -Cfr -F, --fast uzi alternativan tabel-reprezenton. Same ol -CFr -Cem apriora densigo (same ol --ecs --meta-ecs) Rafinado: -d, --debug ebligi rafinigan reĝimon en la skanilo -b, --backup skribi savkopian informon al %s -p, --perf-report skribi raporton pri rendimento al 'stderr' -s, --nodefault demeti aprioran regulon por EĤIGI nekongruan tekston -T, --trace %s devos funkcii sub spura reĝimo -w, --nowarn ne generi avertojn -v, --verbose skribi resumon de la skanilaj statistikoj al 'stdout' Dosieroj: -o, --outfile=DOSIERO indiki eligan dosiernomon -S, --skel=DOSIERO indiki skeletan dosieron -t, --stdout skribi skanilon en 'stdout' anstataŭ %s --yyclass=NOMO nomo de klaso C++ --header-file=DOSIERO krei kapdosieron C krom la skanilo --tables-file[=DOSIERO] skribi tabelojn al DOSIERO Skanila konduto: -7, --7bit generi 7-bit-skanilon -8, --8bit generi 8-bit-skanilon -B, --batch generi aŭtomatan skanilon (male ol -I) -i, --case-insensitive preteratenti usklecon en modeloj -l, --lex-compat maksimuma akordigo kun la originala lex -X, --posix-compat maksimuma akordigo kun la POSIX lex -I, --interactive generi interagan skanilon (male ol -B) --yylineno kontroli lini-nombradon en yylineno Generata kodumaĵo: -+, --c++ generi klason de skanilo C++ -Dmacro[=defn] uzi #define por makroo defn (apriora defn estas '1') -L, --noline demeti instrukciojn #line en la skanilo -P, --prefix=ĈENO uzi ĈENOn kiel prefikson anstataŭ "yy" -R, --reentrant generi reenigan skanilon C --bison-bridge skanilo por nur-bizon analizilo. --bison-locations inkluzivigi subtenon al yylloc. --stdinit ekigi yyin/yyout al stdin/stdout --noansi-definitions malmodern-stilaj difinoj de funkcioj --noansi-prototypes malplena parametro-listo en prototipoj --nounistd ne inkluzivigi --noFUNKCIO ne generi specifan FUNKCIOn Ceteraĵo: -c nenio-faranta modifilo POSIX -n nenio-faranta modifilo POSIX -? -h, --help produkti tiun ĉi help-mesaĝon -V, --version raporti la version de %s Eniga linio tro longas Interna eraro. 'flexopt' estas misformitaj. Sen savkopiado. Linio de modifiloj tro longas Modifiloj -+ kaj --reentrant estas reciproke ekskluzivaj.REJECT ne povas esti uzata kun -f aŭ FREJECT alportas grandan malaltigon de rendimento Stato #%d estas ne-akceptanta - Provu '%s --help' por pli da informo. Nekonata eraro=(%d) Senpara '{'Nerekonita modifilo '%s' Uzado: %s [MODIFILOJ] [DOSIERO]... Uzado: %s [MODIFILOJ]... Variabla vosta kunteksta regulo ĉe linio %d Variabla vosta kunteksto alportas grandan malaltigon de rendimento [:^lower:] estas dusenca en sen-uskleca skanilo[:^upper:] estas dusenca en sen-uskleca skanilorezervo de makroa difino fiaskisrezervo de sko_stack fiaskisprovo pliigi grandon de tabelo fiaskismalĝusta : %smalĝusta signo '%s' estis detektata en check_char()malĝusta signo-klasomalĝusta signo-klasa esprimo: %smalĝusta signo interne de {}malĝusta signo: %smalĝustaj iteraciaj valorojmalĝusta linio en skeleta dosieromalĝusta komenc-kondiĉa listomalĝusta stat-tipo en mark_beginning_as_normal()malĝusta transiga signo estis detektata en sympartition()bison-ponto ne estas subtenata por la skanilo C++.ne eblas malfermi %sne eblas malfermi la skeletan dosieron %skontrolo pri kohereco fiaskis ĉe epsclosure()ne eblis krei %sne eblis krei savkopiad-informan dosieron %sne eblis krei unikan staton de bufro-finone eblis skribi tabel-kapojndanĝera vosta kuntekstofiasko de dinamika memoro en copy_string()malplena maŝino en dupmachine()eraro dum fermo de la savkopia dosiero %seraro dum fermo de la eliga dosiero %seraro dum fermo de la skeleta dosiero %seraro dum kreo de la kap-dosiero %seraro dum forigo de eliga dosiero %seraro dum skribo de la savkopia dosiero %seraro dum skribo de la eliga dosiero %sneriparebla analiz-erarotro multe da transigoj estis trovataj en mkxtion()nekompleta nom-difinoeniga eraro dum lego de la skeleta dosiero %senigaj reguloj estas tro komplikaj (>= %d statoj NFA)iteracia valoro devas esti pozitivamisformita instrukcio '%top'rezervo de memoro fiaskis en allocate_array()rezervo de memoro fiaskis en yy_flex_xmalloc()mankas citilomankas }la nomo "%s" estas ridinde longanomo estis difinata duoblenegativa intervalo en signo-klasola modifilo '%s' ne permesas argumenton la modifilo '%s' estas dusenca la modifilo '%s' postulas argumenton tro frua EOFregulo ne povas esti korespondatala skanilo postulas la flagon -8 por uzi la signon %sla komenca kondiĉo %s estis deklarata duoblestato # %4d stato # %d akceptas: stato # %d akceptas: [%d] stato * %d: rezervo de simbol-tabela memoro fiaskisla signara intervalo [%c-%c] estas dusenca en sen-uskleca skanilotro multe da reguoloj (> %d)!vosta kunteksto estis uzata duoblenedifinita difino {%s}nekonata modifilo -C '%c'Nekonata erar-proceza sekcio 1nerekonita %%modifilo: %snerekonita instrukcio '%'nerekonata regulovariablaj vostaj kuntekstaj reguloj ne povas esti uzataj kun -f aŭ Fyymore() alportas etan malaltigon de rendimento flex-2.5.39/po/fi.gmo0000644000175000017500000005377112314621665014565 0ustar srivastasrivastaT 7  AOh/'.> S"_#  *3'[z!C$)C%]"#FOn`"&0,+] $" )/Y4y5E/*.Z&(+"6>!u".Lg #' Kl : #(#$ $26$#i$+$$&$$ % %:%Y%*q%C%3%0&%E&k&%&&+&&" '-'G'Y'n'','3'/( 2(@((\((((+(( )'')O)m)))))**<*'N*v*$*2* * +,%+-R+ + +++!+&+,!*, L,Z,0q,!, ,,, -% -F3-z----"-..6.<H.-..Yl02001).1qX1*11,2>2Q2%c2#22'2(2*32;3An3:33M 4"Y4'|44*4"4, 5:5R5f5M~5!55t6.u6-6962 7?7 F7g77!7%7-7%89>8?x8G8>92?98r9:9:95!:)W:P:;:+;:;T;p;;;";;<'<F<#f<<!<<.<5=2P= = =IJ:eJJJ8J6K3EKyK)KKK K( L2L.PLJLMLKM*dM!M1MM9NKq\|sg5hXEu.k#$ ********** beginning dump of nfa with start state %d DFA Dump: Equivalence Classes: Meta-Equivalence Classes: jam-transitions: EOF %d (%d saved) hash collisions, %d DFAs equal %d backing-up (non-accepting) states %d empty table entries %d epsilon states, %d double epsilon states %d protos created %d rules %d sets of reallocations needed %d state/nextstate pairs created %d table entries %d templates created, %d uses %d total table entries needed %d/%d (peak %d) nxt-chk entries created %d/%d (peak %d) template nxt-chk entries created %d/%d DFA states (%d words) %d/%d NFA states %d/%d base-def entries created %d/%d character classes needed %d/%d words of storage, %d reused %d/%d equivalence classes created %d/%d meta-equivalence classes created %d/%d start conditions %d/%d unique/duplicate transitions Beginning-of-line patterns used Compressed tables always back-up No backing up no character classes scanner options: - and may be the actual source of other reported performance penalties associated rule line numbers: out-transitions: %%option yylineno entails a performance penalty ONLY on rules that can match newline characters %array incompatible with -+ option%d backing up (non-accepting) states. %option yyclass only meaningful for C++ scanners%option yylineno cannot be used with REJECT%s %s %s version %s usage statistics: %s: fatal internal error, %s ********** end of dump *Something Weird* - tok: %d val: %d -Cf and -CF are mutually exclusive-Cf/-CF and -Cm don't make sense together-Cf/-CF and -I are incompatible-Cf/-CF are incompatible with lex-compatibility mode-I (interactive) entails a minor performance penalty -l AT&T lex compatibility option entails a large performance penalty -s option given but default rule can be matchedAllocation of buffer for line directive failedAllocation of buffer for m4 def failedAllocation of buffer for m4 undef failedAllocation of buffer to print string failedCan't use -+ with -CF optionCan't use -+ with -l optionCan't use --reentrant or --bison-bridge with -l optionCan't use -f or -F with -l optionCompressed tables always back up. Could not write ecstblCould not write eoltblCould not write ftblCould not write ssltblCould not write yyacc_tblCould not write yyacclist_tblCould not write yybase_tblCould not write yychk_tblCould not write yydef_tblCould not write yymeta_tblCould not write yynultrans_tblCould not write yynxt_tblCould not write yynxt_tbl[][]Definition name too long Definition value for {%s} too long EOF encountered inside an actionEOF encountered inside patternEnd Marker Generates programs that perform pattern-matching on text. Table Compression: -Ca, --align trade off larger tables for better memory alignment -Ce, --ecs construct equivalence classes -Cf do not compress tables; use -f representation -CF do not compress tables; use -F representation -Cm, --meta-ecs construct meta-equivalence classes -Cr, --read use read() instead of stdio for scanner input -f, --full generate fast, large scanner. Same as -Cfr -F, --fast use alternate table representation. Same as -CFr -Cem default compression (same as --ecs --meta-ecs) Debugging: -d, --debug enable debug mode in scanner -b, --backup write backing-up information to %s -p, --perf-report write performance report to stderr -s, --nodefault suppress default rule to ECHO unmatched text -T, --trace %s should run in trace mode -w, --nowarn do not generate warnings -v, --verbose write summary of scanner statistics to stdout Files: -o, --outfile=FILE specify output filename -S, --skel=FILE specify skeleton file -t, --stdout write scanner on stdout instead of %s --yyclass=NAME name of C++ class --header-file=FILE create a C header file in addition to the scanner --tables-file[=FILE] write tables to FILE Scanner behavior: -7, --7bit generate 7-bit scanner -8, --8bit generate 8-bit scanner -B, --batch generate batch scanner (opposite of -I) -i, --case-insensitive ignore case in patterns -l, --lex-compat maximal compatibility with original lex -X, --posix-compat maximal compatibility with POSIX lex -I, --interactive generate interactive scanner (opposite of -B) --yylineno track line count in yylineno Generated code: -+, --c++ generate C++ scanner class -Dmacro[=defn] #define macro defn (default defn is '1') -L, --noline suppress #line directives in scanner -P, --prefix=STRING use STRING as prefix instead of "yy" -R, --reentrant generate a reentrant C scanner --bison-bridge scanner for bison pure parser. --bison-locations include yylloc support. --stdinit initialize yyin/yyout to stdin/stdout --noansi-definitions old-style function definitions --noansi-prototypes empty parameter list in prototypes --nounistd do not include --noFUNCTION do not generate a particular FUNCTION Miscellaneous: -c do-nothing POSIX option -n do-nothing POSIX option -? -h, --help produce this help message -V, --version report %s version Input line too long Internal error. flexopts are malformed. No backing up. Option line too long Options -+ and --reentrant are mutually exclusive.REJECT cannot be used with -f or -FREJECT entails a large performance penalty State #%d is non-accepting - Try `%s --help' for more information. Unknown error=(%d) Unmatched '{'Unrecognized option `%s' Usage: %s [OPTIONS] [FILE]... Usage: %s [OPTIONS]... Variable trailing context rule at line %d Variable trailing context rules entail a large performance penalty [:^lower:] is ambiguous in case insensitive scanner[:^upper:] ambiguous in case insensitive scannerallocation of macro definition failedallocation of sko_stack failedattempt to increase array size failedbad : %sbad character '%s' detected in check_char()bad character classbad character class expression: %sbad character inside {}'sbad character: %sbad iteration valuesbad line in skeleton filebad start condition listbad state type in mark_beginning_as_normal()bad transition character detected in sympartition()bison bridge not supported for the C++ scanner.can't open %scan't open skeleton file %sconsistency check failed in epsclosure()could not create %scould not create backing-up info file %scould not create unique end-of-buffer statecould not write tables headerdangerous trailing contextdynamic memory failure in copy_string()empty machine in dupmachine()error closing backup file %serror closing output file %serror closing skeleton file %serror creating header file %serror deleting output file %serror writing backup file %serror writing output file %sfatal parse errorfound too many transitions in mkxtion()incomplete name definitioninput error reading skeleton file %sinput rules are too complicated (>= %d NFA states)iteration value must be positivemalformed '%top' directivememory allocation failed in allocate_array()memory allocation failed in yy_flex_xmalloc()missing quotemissing }name "%s" ridiculously longname defined twicenegative range in character classoption `%s' doesn't allow an argument option `%s' is ambiguous option `%s' requires an argument premature EOFrule cannot be matchedscanner requires -8 flag to use the character %sstart condition %s declared twicestate # %4d state # %d accepts: state # %d accepts: [%d] state # %d: symbol table memory allocation failedthe character range [%c-%c] is ambiguous in a case-insensitive scannertoo many rules (> %d)!trailing context used twiceundefined definition {%s}unknown -C option '%c'unknown error processing section 1unrecognized %%option: %sunrecognized '%' directiveunrecognized rulevariable trailing context rules cannot be used with -f or -Fyymore() entails a minor performance penalty Project-Id-Version: flex 2.5.36 Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net POT-Creation-Date: 2014-03-26 15:00-0400 PO-Revision-Date: 2012-08-02 21:16+0200 Last-Translator: Jorma Karvonen Language-Team: Finnish Language: fi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); ********** Epädeterministisen äärellisen automaatin vedoksen alku aloitustilassa %d Deterministisen äärellisen automaatin vedos: Ekvivalenssiluokat: Meta-ekvivalenssiluokkia: ruuhkasiirtymät: TIEDOSTONLOPPUMERKKI %d (%d tallennettu) hash-törmäykset, yhtäsuuri kuin %d Deterministisen äärellisen automaatin törmäystä %d (ei-hyväksyvää) varmuuskopiotilaa %d tyhjää taulualkiota %d epsilon-tilaa, %d double epsilon-tilaa %d protoa luotu %d sääntöä %d uudelleenvarausjoukkoa tarvittu %d tila/seuraavatila-paria luotu %d-tauluriviä %d mallinetta luotu, %d käytetään %d taulukkoalkiota tarvittu yhteensä %d/%d (huippu %d) nxt-chk-alkiota luotu %d/%d (huippu %d) malline nxt-chk-alkiota luotu %d/%d Deterministisen äärellisen automaatin tilaa (%d sanaa) %d/%d Epädeterministisen äärellisen automaatin tilaa %d/%d base-def-alkiota luotu %d/%d merkkiluokkaa tarvittu %d/%d tallennussanaan, %d käytetty uudelleen %d/%d ekvivalenssiluokkaa luotu %d/%d meta-ekvivalenssiluokkaa luotu %d/%d-käynnistysehtoja %d/%d uniikkia/kaksoiskappelsiirtymää Rivin-alku-malleja käytetään Tiivistetyt taulut varmuuskopioidaan aina Ei varmuuskopiointia ei merkkiluokkia skannerivalitsimet: - ja saattaa olla muiden ilmoitettujen suorituskykysakkojen todellinen lähde yhdistetyt sääntörivinumerot: ulossiirtymät: %%option yylineno tuo mukanaan suorituskykysakon VAIN säännöissä, jotka voivat täsmätä rivinvaihtomerkkeihin %array on yhteensopimaton valitsimen -+ kanssa%d (ei-hyväksyvää) varmuuskopiointitilaa. %option yyclass on merkityksellinen vain C++-skannereille%option yylineno ei voi käyttää REJECT:n kanssa%s %s %s-version %s käyttötilastot: %s: vakava sisäinen virhe, %s ********** vedoksen loppu *Jotain outoa - tok: %d arvo: %d -Cf ja -CF ovat toisensa poissulkevia-Cf/-CF ja -Cm eivät ole järkeviä yhdessä-Cf/-CF ja -I ovat yhteensopimattomia-Cf/-CF ovat yhteensopimattomia lex-yhteensopivuustilassa-I (interaktiivinen) tuo mukanaan pienemmän suorituskykysakon -l AT&T lex-yhteensopivuusvalitsin tuo mukanaan ison suorituskykysakon valitsin -s annettu mutta oletussääntö ei voinut täsmätäPuskurin varaaminen rividirektiiville epäonnistuiPuskurin varaaminen m4 def -määrittelylle epäonnistuiPuskurin varaaminen m4 undef -määrittelylle epäonnistuiPuskurin varaaminen merkkijonon tulostamiseen epäonnistuiEi voi käyttää valitsinta -+ valitsimen -CF kanssaEi voi käyttää -+ valitsimen -l kanssaEi voi käyttää valitsinta --reentrant tai --bison-bridge valitsimen -l kanssaEi voi käyttää valitsinta -f tai -F valitsimen -l kanssaTiivistetyt taulut varmuuskopioidaan aina. Ei voitu kirjoitaa ecstblEi voitu kirjoittaa: eoltblEi voitu kirjoittaa: ftblEi voitu kirjoittaa: ssltblEi voitu kirjoittaa: yyacc_tblEi voitu kirjoittaa: yyacclist_tblEi voitu kirjoittaa: yybase_tblEi voitu kirjoittaa: yychk_tblEi voitu kirjoittaa: yydef_tblEi voitu kirjoittaa: yymeta_tblEi voitu kirjoittaa: yynultrans_tblEi voitu kirjoittaa: yynxt_tblEi voitu kirjoittaa yynxt_tbl[][]Määritysnimi on liian pitkä Määritysarvo kohteelle {%s} on liian pitkä Tiedoston loppumerkki EOF tavattu toiminnon sisälläTiedoston loppumerkki EOF tavattu mallin sisälläLoppumerkki Luo ohjelmia, jotka suorittavat tekstin mallintäsmäystä. Taulutiivistys: -Ca, --align kompromissi laajoissa taulukoissa parempaa muistitasausta varten -Ce, --ecs rakenna ekvivalenssiluokkia -Cf älä tiivistä tauluja; käytä valitsinta -f esittelyyn -CF älä tiivistä tauluja; käytä valitsinta -F esittelyyn -Cm, --meta-ecs rakenna meta-ekvivalenssiluokkia -Cr, --read käytä funktiota read() eikä vakiosyötettä skannerisyötteenä -f, --full tuota nopea, laaja skanneri. Sama kuin -Cfr -F, --fast käytä vaihtoehtoista tauluesittelyä. Sama kuin -CFr -Cem oletustiivistys (sama kuin --ecs --meta-ecs) Virheenjäljitys: -d, --debug ota käyttöön virheenjäljitystila skannerissa -b, --backup kirjoita varmuuskopiotietoja osoitteeseen %s -p, --perf-report kirjoita suorituskykyraportti vakiovirheeseen -s, --nodefault vaimenna oletussääntö ECHO-täsmäämättömään tekstiin -T, --trace %s pitäisi suorittaa jäljitystilassa -w, --nowarn älä tuota varoituksia -v, --verbose kirjoita yhteenveto skanneritilastoista vakiotulosteeseen Tiedostot: -o, --outfile=TIEDOSTO määritä tulostetiedostonimi -S, --skel=TIEDOSTO määritä runkotiedosto -t, --stdout kirjoita skanneri vakiotulosteeseen eikä kohteeseen %s --yyclass=NIMI C++-luokan nimi --header-file=TIEDOSTO tuota C-otsaketiedosto etsijän lisäksi --tables-file[=TIEDOSTO] kirjoita taulut TIEDOSTOon Skannerikäyttäytyminen: -7, --7bit tuota 7-bittinen skanneri -8, --8bit tuota 8-bittinen skanneri -B, --batch tuota eräajoskanneri (päinvastoin kuin -I) -i, --case-insensitive älä välitä kirjainkoosta malleissa -l, --lex-compat maksimiyhteensopivuus alkueräisen lex-ohjelman kanssa -X, --posix-compat maksimiyhteensopivuus POSIX lex-ohjelman kanssa -I, --interactive tuota interaktiivinen skanneri (päinvastoin kuin -B) --yylineno jäljitä rivilukumäärä yylineno-ohjelmassa Generoitu koodi: -+, --c++ tuota C++-skanneriluokka -Dmacro[=defn] #define-makro defn (oletus defn on ”1”) -L, --noline vaimenna #line-direktiviit skannerissa -P, --prefix=MERKKIJONO käytä MERKKIJONO etuliitteenä eikä ”yy” -R, --reentrant tuota vapaakäyntinen C-skanneri --bison-bridge skanneri ”bison pure”-jäsentimelle. --bison-locations sisällytä yylloc-tuki. --stdinit alusta yyin/yyout vakiosyötteeseen/vakiotulosteeseen --noansi-definitions vanhantyyliset funktiomäärittelyt --noansi-prototypes tyhjä parametriluettelo prototyypeissä --nounistd älä sisällytä -tiedostoa --noFUNKTIO älä tuota määriteltyä FUNKTIOta Sekalaiset: -c älä tee mitään POSIX-valitsin -n älä tee mitään POSIX-valitsin -? -h, --help tuota tämä opastesanoma -V, --version ilmoita %s-versio Syöterivi on liian pitkä Sisäinen virhe. flex-valitsimet ovat vääränmuotoisia. Ei varmuuskopiointia. Valitsinrivi on liian pitkä Valitsimen -+ ja --reentrant ovat toisensa poissulkevia.REJECT ei voida käyttää valitsimen -f tai -F kanssaREJECT tuo mukanaan ison suorituskykyrangaistuksen Tila #%d on ei-hyväksyvä - Lisätietoja käskyllä ”%s --help”. Tuntematon virhe=(%d) Pariton ”{”Tunnistamaton valitsin ”%s” Käyttö: %s [VALITSIMET] [TIEDOSTO]... Käyttö: %s [VALITSIMET]... Muuttujajättökontekstisääntö rivillä %d Muuttujajättökontekstisäännöt tuovat mukanaan ison suorityskykysakon [:^lower:] ei ole yksiselitteinen skannerissa, joka ei välitä kirjainkoosta[:^upper:] ei ole yksiselitteinen skannerissa, joka ei välit kirjainkoostaMakromäärityksen varaaminen epäonnistuisko_stack-varaaminen epäonnistuiyritys taulukon koon kasvattamiseksi epäonnistuivirheellinen : %sväärä merkki ”%s” havaittu funktiossa check_char()väärä merkkiluokkaväärä merkkiluokkalauseke: %sväärä merkki aaltosulkeiden {} sisälläväärä merkki: %svääriä iteraatioarvojaväärä rivi kehystiedostossaväärä alkuehtoluetteloväärä tilatyyppi funktiossa mark_beginning_as_normal()väärä siirtymämerkki havaittu funktiossa sympartition()”bison bridge”-menettelyä ei tueta C++-skannerille.ei voi avata %sei voi avata kehystiedostoa %syhtenäisyystarkistus epäonnistui epsclosure()-funktiossaei voitu luoda %sei voitu luoda varmuuskopiotietotiedostoa %sei voitu luoda uniikkia puskurinlopputilaaei voitu kirjoittaa tauluotsakettavaarallinen jättökontekstidynaaminen muistivirhe funktiossa copy_string()tyhjä kone funktiossa dupmachine()virhe suljettaessa varmuuskopiotiedostoa %svirhe suljettaessa tulostetiedostoa %svirhe suljettaessa kehystiedostoa %svirhe luotaessa otsaketiedostoa %svirhe poistettaessa tulostetiedostoa %svirhe kirjoitettaessa varmuuskopiotiedostoa %svirhe kirjoitettaessa tulostetiedostoa %svakava jäsennysvirhelöytyi liian monta siirtymää funktiossa mkxtion()epätäydellinen nimimäärittelysyötevirhe luettaessa kehystiedostoa %ssyötesäännöt ovat liian mutkikkaita (>= %d Epädeterministisen äärellisen automaatin tilaa)iteraatioarvon on oltava positiivinenvääränmuotoinen ”%top”-direktiivimuistinvaraus epäonnistui funktiossa allocate_array()muistinvaraus epäonnistui funktiossa yy_flex_xmalloc()puuttuva lainausmerkkipuuttuva }nimi ”%s” on naurettavan pitkänimi määritelty kahdestinegatiivinen lukualue merkkiluokassavalitsin ”%s” ei salli argumenttia valitsin ”%s” ei ole yksiselitteinen valitsin ”%s” vaatii argumentin ennenaikainen tiedoston loppumerkki EOFsääntö ei voinut täsmätäskanneri vaatiin lipun -8 käytettäväksi merkille %salkuehto %s esitelty kahdestitila numero %4d tila numero %d hyväksyy: tila numero %d hyväksyy: [%d] tila numero %d: symbolitaulun muistinvaraus epäonnistuimerkkialue [%c-%c] ei ole yksiselitteinen skannerissa, joka ei välitä kirjainkoostaliian moni sääntöjä (> %d)!jättökontekstia käytetty kahdestimäärittelemätön määrittely {%s}tuntematon valitsin -C ”%c”tuntematon virhe käsiteltäessä lohkoa 1tunnistamaton %%valitsin: %stunnistamaton ”%”-direktiivitunnistamaton sääntömuuttujajättökontekstisääntöjä ei voida käyttää valitsimen -f tai -F kanssayymore() tuo mukanaan pienemmän suorituskykysakon flex-2.5.39/po/Makefile.in.in0000644000175000017500000003744212300730747016127 0ustar srivastasrivasta# Makefile for PO directory in any package using GNU gettext. # Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper # # This file can be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU General Public # License but which still want to provide support for the GNU gettext # functionality. # Please note that the actual code of GNU gettext is covered by the GNU # General Public License and is *not* in the public domain. # # Origin: gettext-0.18 GETTEXT_MACRO_VERSION = 0.18 PACKAGE = @PACKAGE@ VERSION = @VERSION@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ SHELL = /bin/sh @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ datarootdir = @datarootdir@ datadir = @datadir@ localedir = @localedir@ gettextsrcdir = $(datadir)/gettext/po INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ # We use $(mkdir_p). # In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as # "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, # @install_sh@ does not start with $(SHELL), so we add it. # In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined # either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake # versions, $(mkinstalldirs) and $(install_sh) are unused. mkinstalldirs = $(SHELL) @install_sh@ -d install_sh = $(SHELL) @install_sh@ MKDIR_P = @MKDIR_P@ mkdir_p = @mkdir_p@ GMSGFMT_ = @GMSGFMT@ GMSGFMT_no = @GMSGFMT@ GMSGFMT_yes = @GMSGFMT_015@ GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT)) MSGFMT_ = @MSGFMT@ MSGFMT_no = @MSGFMT@ MSGFMT_yes = @MSGFMT_015@ MSGFMT = $(MSGFMT_$(USE_MSGCTXT)) XGETTEXT_ = @XGETTEXT@ XGETTEXT_no = @XGETTEXT@ XGETTEXT_yes = @XGETTEXT_015@ XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT)) MSGMERGE = msgmerge MSGMERGE_UPDATE = @MSGMERGE@ --update MSGINIT = msginit MSGCONV = msgconv MSGFILTER = msgfilter POFILES = @POFILES@ GMOFILES = @GMOFILES@ UPDATEPOFILES = @UPDATEPOFILES@ DUMMYPOFILES = @DUMMYPOFILES@ DISTFILES.common = Makefile.in.in remove-potcdate.sin \ $(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ $(POFILES) $(GMOFILES) \ $(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) POTFILES = \ CATALOGS = @CATALOGS@ # Makevars gets inserted here. (Don't remove this line!) .SUFFIXES: .SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update .po.mo: @echo "$(MSGFMT) -c -o $@ $<"; \ $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ .po.gmo: @lang=`echo $* | sed -e 's,.*/,,'`; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \ cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo .sin.sed: sed -e '/^#/d' $< > t-$@ mv t-$@ $@ all: check-macro-version all-@USE_NLS@ all-yes: stamp-po all-no: # Ensure that the gettext macros and this Makefile.in.in are in sync. check-macro-version: @test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \ || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \ exit 1; \ } # $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no # internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because # we don't want to bother translators with empty POT files). We assume that # LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. # In this case, stamp-po is a nop (i.e. a phony target). # stamp-po is a timestamp denoting the last time at which the CATALOGS have # been loosely updated. Its purpose is that when a developer or translator # checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, # "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent # invocations of "make" will do nothing. This timestamp would not be necessary # if updating the $(CATALOGS) would always touch them; however, the rule for # $(POFILES) has been designed to not touch files that don't need to be # changed. stamp-po: $(srcdir)/$(DOMAIN).pot test ! -f $(srcdir)/$(DOMAIN).pot || \ test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) @test ! -f $(srcdir)/$(DOMAIN).pot || { \ echo "touch stamp-po" && \ echo timestamp > stamp-poT && \ mv stamp-poT stamp-po; \ } # Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', # otherwise packages like GCC can not be built if only parts of the source # have been downloaded. # This target rebuilds $(DOMAIN).pot; it is an expensive operation. # Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \ package_gnu='GNU '; \ else \ package_gnu=''; \ fi; \ if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ else \ msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ fi; \ case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ --files-from=$(srcdir)/POTFILES.in \ --copyright-holder='$(COPYRIGHT_HOLDER)' \ --msgid-bugs-address="$$msgid_bugs_address" \ ;; \ *) \ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ --files-from=$(srcdir)/POTFILES.in \ --copyright-holder='$(COPYRIGHT_HOLDER)' \ --package-name="$${package_gnu}@PACKAGE@" \ --package-version='@VERSION@' \ --msgid-bugs-address="$$msgid_bugs_address" \ ;; \ esac test ! -f $(DOMAIN).po || { \ if test -f $(srcdir)/$(DOMAIN).pot; then \ sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ else \ rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ else \ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ } # This rule has no dependencies: we don't need to update $(DOMAIN).pot at # every "make" invocation, only create it when it is missing. # Only "make $(DOMAIN).pot-update" or "make dist" will force an update. $(srcdir)/$(DOMAIN).pot: $(MAKE) $(DOMAIN).pot-update # This target rebuilds a PO file if $(DOMAIN).pot has changed. # Note that a PO file is not touched if it doesn't need to be changed. $(POFILES): $(srcdir)/$(DOMAIN).pot @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ if test -f "$(srcdir)/$${lang}.po"; then \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \ cd $(srcdir) \ && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \ *) \ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \ esac; \ }; \ else \ $(MAKE) $${lang}.po-create; \ fi install: install-exec install-data install-exec: install-data: install-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ for file in $(DISTFILES.common) Makevars.template; do \ $(INSTALL_DATA) $(srcdir)/$$file \ $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ for file in Makevars; do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi install-data-no: all install-data-yes: all @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkdir_p) $(DESTDIR)$$dir; \ if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ for file in *; do \ if test -f $$file; then \ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ fi; \ done); \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ else \ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ :; \ else \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ fi; \ fi; \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ fi; \ done; \ done install-strip: install installdirs: installdirs-exec installdirs-data installdirs-exec: installdirs-data: installdirs-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ else \ : ; \ fi installdirs-data-no: installdirs-data-yes: @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkdir_p) $(DESTDIR)$$dir; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ for file in *; do \ if test -f $$file; then \ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ fi; \ done); \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ else \ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ :; \ else \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ fi; \ fi; \ fi; \ done; \ done # Define this as empty until I found a useful application. installcheck: uninstall: uninstall-exec uninstall-data uninstall-exec: uninstall-data: uninstall-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ for file in $(DISTFILES.common) Makevars.template; do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi uninstall-data-no: uninstall-data-yes: catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ done; \ done check: all info dvi ps pdf html tags TAGS ctags CTAGS ID: mostlyclean: rm -f remove-potcdate.sed rm -f stamp-poT rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po rm -fr *.o clean: mostlyclean distclean: clean rm -f Makefile Makefile.in POTFILES *.mo maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." rm -f stamp-po $(GMOFILES) distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) dist distdir: $(MAKE) update-po @$(MAKE) dist2 # This is a separate target because 'update-po' must be executed before. dist2: stamp-po $(DISTFILES) dists="$(DISTFILES)"; \ if test "$(PACKAGE)" = "gettext-tools"; then \ dists="$$dists Makevars.template"; \ fi; \ if test -f $(srcdir)/$(DOMAIN).pot; then \ dists="$$dists $(DOMAIN).pot stamp-po"; \ fi; \ if test -f $(srcdir)/ChangeLog; then \ dists="$$dists ChangeLog"; \ fi; \ for i in 0 1 2 3 4 5 6 7 8 9; do \ if test -f $(srcdir)/ChangeLog.$$i; then \ dists="$$dists ChangeLog.$$i"; \ fi; \ done; \ if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ for file in $$dists; do \ if test -f $$file; then \ cp -p $$file $(distdir) || exit 1; \ else \ cp -p $(srcdir)/$$file $(distdir) || exit 1; \ fi; \ done update-po: Makefile $(MAKE) $(DOMAIN).pot-update test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) $(MAKE) update-gmo # General rule for creating PO files. .nop.po-create: @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ exit 1 # General rule for updating PO files. .nop.po-update: @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ cd $(srcdir); \ if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ *) \ $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ esac; \ }; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "msgmerge for $$lang.po failed!" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ fi $(DUMMYPOFILES): update-gmo: Makefile $(GMOFILES) @: # Recreate Makefile by invoking config.status. Explicitly invoke the shell, # because execution permission bits may not work on the current file system. # Use @SHELL@, which is the shell determined by autoconf for the use by its # scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient. Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ cd $(top_builddir) \ && @SHELL@ ./config.status $(subdir)/$@.in po-directories force: # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: flex-2.5.39/po/zh_TW.po0000644000175000017500000006034112314621665015045 0ustar srivastasrivasta# Traditional Chinese Messages for flex. # Copyright (C) 2002 The Flex Project (msgids) # This file is distributed under the same license as the flex package. # Wang Li , 2002. # Wei-Lun Chao , 2009, 2013. # msgid "" msgstr "" "Project-Id-Version: flex 2.5.37\n" "Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2014-03-26 15:00-0400\n" "PO-Revision-Date: 2013-02-12 23:23+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: buf.c:78 msgid "Allocation of buffer to print string failed" msgstr "給予緩衝區配額以列印字串時失敗" #: buf.c:100 msgid "Allocation of buffer for line directive failed" msgstr "給予緩衝區配額用於列指令時失敗" #: buf.c:177 msgid "Allocation of buffer for m4 def failed" msgstr "給予緩衝區配額用於 m4 def 時失敗" #: buf.c:197 msgid "Allocation of buffer for m4 undef failed" msgstr "給予緩衝區配額用於 m4 undef 時失敗" #: dfa.c:61 #, c-format msgid "State #%d is non-accepting -\n" msgstr "#%d 正處於非存取狀態 -\n" #: dfa.c:124 msgid "dangerous trailing context" msgstr "不安全的末端內文" #: dfa.c:166 #, c-format msgid " associated rule line numbers:" msgstr " 關聯的規則列號:" #: dfa.c:202 #, c-format msgid " out-transitions: " msgstr " 外轉換:" #: dfa.c:210 #, c-format msgid "" "\n" " jam-transitions: EOF " msgstr "" "\n" " 合併轉換:檔案結尾 " #: dfa.c:341 msgid "consistency check failed in epsclosure()" msgstr "epsclosure() 中的一致性檢查失敗" #: dfa.c:429 msgid "" "\n" "\n" "DFA Dump:\n" "\n" msgstr "" "\n" "\n" " DFA 傾印:\n" "\n" #: dfa.c:604 msgid "could not create unique end-of-buffer state" msgstr "無法建立獨一的緩衝區結尾狀態" #: dfa.c:625 #, c-format msgid "state # %d:\n" msgstr "狀態 # %d:\n" #: dfa.c:785 msgid "Could not write yynxt_tbl[][]" msgstr "無法寫入 yynxt_tbl[][]" #: dfa.c:1049 msgid "bad transition character detected in sympartition()" msgstr "在 sympartition() 偵測到不當的轉換字元" #: gen.c:478 msgid "" "\n" "\n" "Equivalence Classes:\n" "\n" msgstr "" "\n" "\n" "等價類別:\n" "\n" #: gen.c:662 gen.c:691 gen.c:1215 #, c-format msgid "state # %d accepts: [%d]\n" msgstr "狀態 # %d 接受:[%d]\n" #: gen.c:1110 #, c-format msgid "state # %d accepts: " msgstr "狀態 # %d 接受:" #: gen.c:1157 msgid "Could not write yyacclist_tbl" msgstr "無法寫入 yyacclist_tbl" #: gen.c:1233 msgid "Could not write yyacc_tbl" msgstr "無法寫入 yyacc_tbl" #: gen.c:1248 gen.c:1633 gen.c:1656 msgid "Could not write ecstbl" msgstr "無法寫入 ecstbl" #: gen.c:1271 msgid "" "\n" "\n" "Meta-Equivalence Classes:\n" msgstr "" "\n" "\n" " 後設等價類別:\n" #: gen.c:1293 msgid "Could not write yymeta_tbl" msgstr "無法寫入 yymeta_tbl" #: gen.c:1354 msgid "Could not write yybase_tbl" msgstr "無法寫入 yybase_tbl" #: gen.c:1388 msgid "Could not write yydef_tbl" msgstr "無法寫入 yydef_tbl" #: gen.c:1428 msgid "Could not write yynxt_tbl" msgstr "無法寫入 yynxt_tbl" #: gen.c:1464 msgid "Could not write yychk_tbl" msgstr "無法寫入 yychk_tbl" #: gen.c:1618 gen.c:1647 msgid "Could not write ftbl" msgstr "無法寫入 ftbl" #: gen.c:1624 msgid "Could not write ssltbl" msgstr "無法寫入 ssltbl" #: gen.c:1675 msgid "Could not write eoltbl" msgstr "無法寫入 eoltbl" #: gen.c:1735 msgid "Could not write yynultrans_tbl" msgstr "無法寫入 yynultrans_tbl" #: main.c:191 msgid "rule cannot be matched" msgstr "規則無法吻合" #: main.c:196 msgid "-s option given but default rule can be matched" msgstr "-s 選項已給定但是可以吻合預設規則" #: main.c:236 msgid "Can't use -+ with -l option" msgstr "無法將 -+ 與 -l 選項共同使用" #: main.c:239 msgid "Can't use -f or -F with -l option" msgstr "無法將 -f 或 -F 與 -l 選項共同使用" #: main.c:243 msgid "Can't use --reentrant or --bison-bridge with -l option" msgstr "無法將 --reentrant 或 --bison-bridge 與 -l 選項共同使用" #: main.c:275 msgid "-Cf/-CF and -Cm don't make sense together" msgstr "-Cf/-CF 和 -Cm 共用時不具任何意義" #: main.c:278 msgid "-Cf/-CF and -I are incompatible" msgstr "-Cf/-CF 和 -I 是不相容的" #: main.c:282 msgid "-Cf/-CF are incompatible with lex-compatibility mode" msgstr "-Cf/-CF 與 lex 相容模式是不相容的" #: main.c:287 msgid "-Cf and -CF are mutually exclusive" msgstr "-Cf 和 -CF 是互斥的" #: main.c:291 msgid "Can't use -+ with -CF option" msgstr "無法將 -+ 與 -CF 選項共同使用" #: main.c:294 #, c-format msgid "%array incompatible with -+ option" msgstr "%array 與 -+ 選項不相容" #: main.c:299 msgid "Options -+ and --reentrant are mutually exclusive." msgstr "選項 -+ 和 --reentrant 是互斥的。" #: main.c:302 msgid "bison bridge not supported for the C++ scanner." msgstr "bison 橋接器不受 C++ 掃描程式支援。" #: main.c:357 main.c:403 #, c-format msgid "could not create %s" msgstr "無法建立 %s" #: main.c:416 msgid "could not write tables header" msgstr "無法寫入表頭" #: main.c:420 #, c-format msgid "can't open skeleton file %s" msgstr "無法開啟架構檔案 %s" #: main.c:456 msgid "allocation of macro definition failed" msgstr "給予巨集定義配額時失敗" #: main.c:504 #, c-format msgid "input error reading skeleton file %s" msgstr "讀取架構檔案 %s 時輸入錯誤" #: main.c:508 #, c-format msgid "error closing skeleton file %s" msgstr "關閉架構檔案 %s 時發生錯誤" #: main.c:693 #, c-format msgid "error creating header file %s" msgstr "建立標頭檔案 %s 時發生錯誤" #: main.c:701 #, c-format msgid "error writing output file %s" msgstr "寫入輸出檔案 %s 時發生錯誤" #: main.c:705 #, c-format msgid "error closing output file %s" msgstr "關閉輸出檔案 %s 時發生錯誤" #: main.c:709 #, c-format msgid "error deleting output file %s" msgstr "刪除輸出檔案 %s 時發生錯誤" #: main.c:716 #, c-format msgid "No backing up.\n" msgstr "沒有備份。\n" #: main.c:720 #, c-format msgid "%d backing up (non-accepting) states.\n" msgstr "%d 備份 (非接受) 狀態。\n" #: main.c:724 #, c-format msgid "Compressed tables always back up.\n" msgstr "壓縮過的表格自動備份。\n" #: main.c:727 #, c-format msgid "error writing backup file %s" msgstr "寫入備份檔案 %s 時發生錯誤" #: main.c:731 #, c-format msgid "error closing backup file %s" msgstr "關閉備份檔案 %s 時發生錯誤" #: main.c:736 #, c-format msgid "%s version %s usage statistics:\n" msgstr "%s 版本 %s 用法統計:\n" #: main.c:739 #, c-format msgid " scanner options: -" msgstr " 掃描程式選項:-" #: main.c:818 #, c-format msgid " %d/%d NFA states\n" msgstr " %d/%d NFA 狀態\n" #: main.c:820 #, c-format msgid " %d/%d DFA states (%d words)\n" msgstr " %d/%d DFA 狀態 (%d 個字詞)\n" #: main.c:822 #, c-format msgid " %d rules\n" msgstr " %d 條規則\n" #: main.c:827 #, c-format msgid " No backing up\n" msgstr " 沒有備份\n" #: main.c:831 #, c-format msgid " %d backing-up (non-accepting) states\n" msgstr " %d 備份 (非接受) 狀態\n" #: main.c:836 #, c-format msgid " Compressed tables always back-up\n" msgstr " 壓縮過的表格自動備份\n" #: main.c:840 #, c-format msgid " Beginning-of-line patterns used\n" msgstr " 列首式樣已使用\n" #: main.c:842 #, c-format msgid " %d/%d start conditions\n" msgstr " %d/%d 起始條件\n" #: main.c:846 #, c-format msgid " %d epsilon states, %d double epsilon states\n" msgstr " %d ε狀態,%d 雙倍ε狀態\n" #: main.c:850 #, c-format msgid " no character classes\n" msgstr " 無字元類別\n" #: main.c:854 #, c-format msgid " %d/%d character classes needed %d/%d words of storage, %d reused\n" msgstr " %d/%d 字元類別所需 %d/%d 字詞的儲存體,%d 重新使用\n" #: main.c:859 #, c-format msgid " %d state/nextstate pairs created\n" msgstr " %d 狀態/下一狀態對已建立\n" #: main.c:862 #, c-format msgid " %d/%d unique/duplicate transitions\n" msgstr " %d/%d 獨一/重複轉換\n" #: main.c:867 #, c-format msgid " %d table entries\n" msgstr " %d 表格項目\n" #: main.c:875 #, c-format msgid " %d/%d base-def entries created\n" msgstr " %d/%d base-def 項目已建立\n" #: main.c:879 #, c-format msgid " %d/%d (peak %d) nxt-chk entries created\n" msgstr " %d/%d (尖峰 %d) nxt-chk 項目已建立\n" #: main.c:883 #, c-format msgid " %d/%d (peak %d) template nxt-chk entries created\n" msgstr " %d/%d (尖峰 %d) 模板 nxt-chk 項目已建立\n" #: main.c:887 #, c-format msgid " %d empty table entries\n" msgstr " %d 清空表格項目\n" #: main.c:889 #, c-format msgid " %d protos created\n" msgstr " %d 原型已建立\n" #: main.c:892 #, c-format msgid " %d templates created, %d uses\n" msgstr " %d 範本已建立,%d 使用\n" #: main.c:900 #, c-format msgid " %d/%d equivalence classes created\n" msgstr " %d/%d 等價類別已建立\n" #: main.c:908 #, c-format msgid " %d/%d meta-equivalence classes created\n" msgstr " %d/%d 後設等價類別已建立\n" #: main.c:914 #, c-format msgid " %d (%d saved) hash collisions, %d DFAs equal\n" msgstr " %d (%d 已儲存) 雜湊碰撞,%d DFAs 相等\n" #: main.c:916 #, c-format msgid " %d sets of reallocations needed\n" msgstr " 需要 %d 組重新配置\n" #: main.c:918 #, c-format msgid " %d total table entries needed\n" msgstr " 總計需要 %d 表格項目\n" #: main.c:995 #, c-format msgid "Internal error. flexopts are malformed.\n" msgstr "內部錯誤。flexopts 功能異常。\n" #: main.c:1005 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "嘗試「%s --help」以獲得更多資訊。\n" #: main.c:1062 #, c-format msgid "unknown -C option '%c'" msgstr "不明 -C 選項「%c」" #: main.c:1191 #, c-format msgid "%s %s\n" msgstr "%s %s\n" #: main.c:1466 msgid "fatal parse error" msgstr "嚴重的解析錯誤" #: main.c:1498 #, c-format msgid "could not create backing-up info file %s" msgstr "無法建立備份資訊檔案 %s" #: main.c:1519 #, c-format msgid "-l AT&T lex compatibility option entails a large performance penalty\n" msgstr "-l AT&T lex 相容性選項會導致大幅效能減退\n" #: main.c:1522 #, c-format msgid " and may be the actual source of other reported performance penalties\n" msgstr " 同時也許是其他回報效能減退的實際來源\n" #: main.c:1528 #, c-format msgid "" "%%option yylineno entails a performance penalty ONLY on rules that can match " "newline characters\n" msgstr "%%option yylineno 導致效能減退,只有當該規則該吻合新列字元時才會\n" #: main.c:1535 #, c-format msgid "-I (interactive) entails a minor performance penalty\n" msgstr "-I (互動式) 導致小幅效能減退\n" #: main.c:1540 #, c-format msgid "yymore() entails a minor performance penalty\n" msgstr "yymore() 導致小幅效能減退\n" #: main.c:1546 #, c-format msgid "REJECT entails a large performance penalty\n" msgstr "REJECT 導致大幅效能減退\n" #: main.c:1551 #, c-format msgid "Variable trailing context rules entail a large performance penalty\n" msgstr "變數末尾內文規則導致大幅效能減退\n" #: main.c:1563 msgid "REJECT cannot be used with -f or -F" msgstr "REJECT 無法與 -f 或 -F 共同使用" #: main.c:1566 #, c-format msgid "%option yylineno cannot be used with REJECT" msgstr "%option yylineno 無法與 REJECT 共同使用" #: main.c:1569 msgid "variable trailing context rules cannot be used with -f or -F" msgstr "變數末尾內文規則無法與 -f 或 -F 共同使用" #: main.c:1692 #, c-format msgid "%option yyclass only meaningful for C++ scanners" msgstr "%option yyclass 只對於 C++ 掃描程式有意義" #: main.c:1799 #, c-format msgid "Usage: %s [OPTIONS] [FILE]...\n" msgstr "用法:%s [選項] [檔案]…\n" #: main.c:1802 #, c-format msgid "" "Generates programs that perform pattern-matching on text.\n" "\n" "Table Compression:\n" " -Ca, --align trade off larger tables for better memory alignment\n" " -Ce, --ecs construct equivalence classes\n" " -Cf do not compress tables; use -f representation\n" " -CF do not compress tables; use -F representation\n" " -Cm, --meta-ecs construct meta-equivalence classes\n" " -Cr, --read use read() instead of stdio for scanner input\n" " -f, --full generate fast, large scanner. Same as -Cfr\n" " -F, --fast use alternate table representation. Same as -CFr\n" " -Cem default compression (same as --ecs --meta-ecs)\n" "\n" "Debugging:\n" " -d, --debug enable debug mode in scanner\n" " -b, --backup write backing-up information to %s\n" " -p, --perf-report write performance report to stderr\n" " -s, --nodefault suppress default rule to ECHO unmatched text\n" " -T, --trace %s should run in trace mode\n" " -w, --nowarn do not generate warnings\n" " -v, --verbose write summary of scanner statistics to stdout\n" "\n" "Files:\n" " -o, --outfile=FILE specify output filename\n" " -S, --skel=FILE specify skeleton file\n" " -t, --stdout write scanner on stdout instead of %s\n" " --yyclass=NAME name of C++ class\n" " --header-file=FILE create a C header file in addition to the " "scanner\n" " --tables-file[=FILE] write tables to FILE\n" "\n" "Scanner behavior:\n" " -7, --7bit generate 7-bit scanner\n" " -8, --8bit generate 8-bit scanner\n" " -B, --batch generate batch scanner (opposite of -I)\n" " -i, --case-insensitive ignore case in patterns\n" " -l, --lex-compat maximal compatibility with original lex\n" " -X, --posix-compat maximal compatibility with POSIX lex\n" " -I, --interactive generate interactive scanner (opposite of -B)\n" " --yylineno track line count in yylineno\n" "\n" "Generated code:\n" " -+, --c++ generate C++ scanner class\n" " -Dmacro[=defn] #define macro defn (default defn is '1')\n" " -L, --noline suppress #line directives in scanner\n" " -P, --prefix=STRING use STRING as prefix instead of \"yy\"\n" " -R, --reentrant generate a reentrant C scanner\n" " --bison-bridge scanner for bison pure parser.\n" " --bison-locations include yylloc support.\n" " --stdinit initialize yyin/yyout to stdin/stdout\n" " --noansi-definitions old-style function definitions\n" " --noansi-prototypes empty parameter list in prototypes\n" " --nounistd do not include \n" " --noFUNCTION do not generate a particular FUNCTION\n" "\n" "Miscellaneous:\n" " -c do-nothing POSIX option\n" " -n do-nothing POSIX option\n" " -?\n" " -h, --help produce this help message\n" " -V, --version report %s version\n" msgstr "" "產生能夠根據文字進行式樣匹配的程式。\n" "\n" "表格壓縮:\n" " -Ca,--align 換掉較大表格以獲取較佳記憶體對位\n" " -Ce,--ecs 建構等價類別\n" " -Cf 不壓縮表格;使用 -f 表示法\n" " -CF 不壓縮表格;使用 -F 表示法\n" " -Cm,--meta-ecs 構造後設等價類別\n" " -Cr,--read 使用 read() 以代替 stdio 用於掃描程式的輸入\n" " -f, --full 產生快速,大型掃描程式。如同 -Cfr\n" " -F, --fast 使用交替表格表示法。如同 -CFr\n" " -Cem 預設壓縮 (如同 --ecs --meta-ecs)\n" "\n" "偵錯:\n" " -d, --debug 在掃描程式中啟用除錯模式\n" " -b, --backup 寫入備份資訊到 %s\n" " -p, --perf-report 將效能報告寫入標準勘誤\n" " -s, --nodefault 抑制預設規則以回應不符合的文字\n" " -T, --trace %s 應該在追蹤模式中運行\n" " -w, --nowarn 不產生警告\n" " -v, --verbose 將概要的掃描程式統計寫入標準輸出\n" "\n" "檔案:\n" " -o, --outfile=檔案 指定輸出檔名\n" " -S, --skel=檔案 指定架構檔案\n" " -t, --stdout 將掃描程式寫入標準輸出以代替 %s\n" " --yyclass=名稱 C++ 類別的名稱\n" " --header-file=檔案 掃描程式之外建立 C 標頭檔\n" " --tables-file[=檔案] 將表格寫入檔案\n" "\n" "掃描程式行為:\n" " -7, --7bit 產生七位元掃描程式\n" " -8, --8bit 產生八位元掃描程式\n" " -B, --batch 產生批次掃描程式 (相對於 -I)\n" " -i, --case-insensitive 忽略式樣中的大小寫\n" " -l, --lex-compat 與原始 lex 最大相容\n" " -X, --posix-compat 與 POSIX lex 最大相容\n" " -I, --interactive 產生互動式掃描程式 (相對於 -B)\n" " --yylineno 在 yylineno 中計數軌列\n" "\n" "產生的編碼:\n" " -+, --c++ 產生 C++ 掃描程式類別\n" " -Dmacro [=defn] #define 巨集 defn (預設 defn 為「1」)\n" " -L, --noline 在掃描程式中抑制 # 列指令\n" " -P, --prefix=字串 使用字串做為前綴以代替「yy」\n" " -R, --reentrant 產生重新進入 C 掃描程式\n" " --bison-bridge 掃描程式用於 bison pure 剖析器。\n" " --bison-locations 包含 yylloc 支援。\n" " --stdinit 初始化 yyin/yyout 到標準輸入/標準輸出\n" " --noansi-definitions 舊式函式定義\n" " --noansi-prototypes 在原型中清空參數清單\n" " --nounistd 不包含 \n" " --noFUNCTION 不產生特定函式\n" "\n" "雜項:\n" " -c do-nothing POSIX 選項\n" " -n do-nothing POSIX 選項\n" " -?\n" " -h, --help 產生這個說明訊息\n" " -V, --version 報告 %s 版本\n" #: misc.c:65 msgid "allocation of sko_stack failed" msgstr "給予 sko_stack 配額時失敗" #: misc.c:102 misc.c:128 #, c-format msgid "name \"%s\" ridiculously long" msgstr "名稱「%s」有荒謬的長度" #: misc.c:177 msgid "memory allocation failed in allocate_array()" msgstr "在 allocatearray() 中記憶體配置失敗" #: misc.c:230 #, c-format msgid "bad character '%s' detected in check_char()" msgstr "在 checkchar() 中偵測到不當的字元「%s」" #: misc.c:235 #, c-format msgid "scanner requires -8 flag to use the character %s" msgstr "掃描程式需要 -8 旗標以使用字元 %s" #: misc.c:268 msgid "dynamic memory failure in copy_string()" msgstr "在 copystring() 中動態記憶體失敗" #: misc.c:367 #, c-format msgid "%s: fatal internal error, %s\n" msgstr "%s:嚴重內部錯誤,%s\n" #: misc.c:803 msgid "attempt to increase array size failed" msgstr "試圖增加陣列大小時失敗" #: misc.c:930 msgid "bad line in skeleton file" msgstr "架構檔案中不當的列" #: misc.c:979 msgid "memory allocation failed in yy_flex_xmalloc()" msgstr "在 yy_flex_xmalloc() 中的記憶體配置失敗" #: nfa.c:104 #, c-format msgid "" "\n" "\n" "********** beginning dump of nfa with start state %d\n" msgstr "" "\n" "\n" "********** 開始輸出起始狀態為 %d 的 NFA\n" #: nfa.c:115 #, c-format msgid "state # %4d\t" msgstr "狀態 # %4d\t" #: nfa.c:130 #, c-format msgid "********** end of dump\n" msgstr "********** 傾印結束\n" #: nfa.c:174 msgid "empty machine in dupmachine()" msgstr "在 dupmachine() 中清空機器" #: nfa.c:240 #, c-format msgid "Variable trailing context rule at line %d\n" msgstr "變數末尾內文規則於列 %d\n" #: nfa.c:364 msgid "bad state type in mark_beginning_as_normal()" msgstr "在 mark_beginning_as_normal() 中有不當的狀態輸入" #: nfa.c:609 #, c-format msgid "input rules are too complicated (>= %d NFA states)" msgstr "輸入規則太複雜 (>= %d NFA 狀態)" #: nfa.c:688 msgid "found too many transitions in mkxtion()" msgstr "在 mkxtion() 中找到太多轉換" #: nfa.c:714 #, c-format msgid "too many rules (> %d)!" msgstr "太多規則 (> %d)!" #: parse.y:159 msgid "unknown error processing section 1" msgstr "不明的錯誤處理區段 1" #: parse.y:184 parse.y:351 msgid "bad start condition list" msgstr "不當的起始條件清單" #: parse.y:315 msgid "unrecognized rule" msgstr "無法辨識的規則" #: parse.y:434 parse.y:447 parse.y:516 msgid "trailing context used twice" msgstr "末尾內文已使用兩次" #: parse.y:552 parse.y:562 parse.y:635 parse.y:645 msgid "bad iteration values" msgstr "不當的迭代值" #: parse.y:580 parse.y:598 parse.y:663 parse.y:681 msgid "iteration value must be positive" msgstr "迭代值必須是正值" #: parse.y:804 parse.y:814 #, c-format msgid "the character range [%c-%c] is ambiguous in a case-insensitive scanner" msgstr "在大小寫不須相符的掃描程式中,字元範圍 [%c-%c] 是模稜兩可的" #: parse.y:819 msgid "negative range in character class" msgstr "在字元類別中有負值範圍" #: parse.y:916 msgid "[:^lower:] is ambiguous in case insensitive scanner" msgstr "在大小寫不須相符的掃描程式中,[:^lower:] 是模稜兩可的" #: parse.y:922 msgid "[:^upper:] ambiguous in case insensitive scanner" msgstr "在大小寫不須相符的掃描程式中,[:^upper:] 是模稜兩可的" #: scan.l:75 scan.l:618 scan.l:676 msgid "Input line too long\n" msgstr "輸入列太長\n" #: scan.l:161 #, c-format msgid "malformed '%top' directive" msgstr "異常的「%top」指令" #: scan.l:183 #, no-c-format msgid "unrecognized '%' directive" msgstr "無法辨識的「%」指令" #: scan.l:192 msgid "Definition name too long\n" msgstr "定義名稱太長\n" #: scan.l:284 msgid "Unmatched '{'" msgstr "不成對的「{」" #: scan.l:300 #, c-format msgid "Definition value for {%s} too long\n" msgstr "{%s} 的定義值太長\n" #: scan.l:317 msgid "incomplete name definition" msgstr "不完整的名稱定義" #: scan.l:443 msgid "Option line too long\n" msgstr "選項列太長\n" #: scan.l:451 #, c-format msgid "unrecognized %%option: %s" msgstr "無法辨識的 %%option:%s" #: scan.l:633 scan.l:800 msgid "bad character class" msgstr "不當的字元類別" #: scan.l:683 #, c-format msgid "undefined definition {%s}" msgstr "未定義的定義 {%s}" #: scan.l:755 #, c-format msgid "bad : %s" msgstr "不當的 <起始條件>:%s" #: scan.l:768 msgid "missing quote" msgstr "缺少引號" #: scan.l:834 #, c-format msgid "bad character class expression: %s" msgstr "不當的字元類別運算式:%s" #: scan.l:856 msgid "bad character inside {}'s" msgstr "不當字元於 {} 內部" #: scan.l:862 msgid "missing }" msgstr "缺少 }" #: scan.l:940 msgid "EOF encountered inside an action" msgstr "在動作之內遇到檔案結束" #: scan.l:945 msgid "EOF encountered inside pattern" msgstr "在式樣之內遇到檔案結束" #: scan.l:967 #, c-format msgid "bad character: %s" msgstr "不當的字元:%s" #: scan.l:996 #, c-format msgid "can't open %s" msgstr "無法開啟 %s" #: scanopt.c:291 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "用法:%s [選項]…\n" #: scanopt.c:564 #, c-format msgid "option `%s' doesn't allow an argument\n" msgstr "選項「%s」不允許任何引數\n" #: scanopt.c:569 #, c-format msgid "option `%s' requires an argument\n" msgstr "選項「%s」需要一個引數\n" #: scanopt.c:573 #, c-format msgid "option `%s' is ambiguous\n" msgstr "選項「%s」是模稜兩可的\n" #: scanopt.c:577 #, c-format msgid "Unrecognized option `%s'\n" msgstr "無法辨識的選項 %s\n" #: scanopt.c:581 #, c-format msgid "Unknown error=(%d)\n" msgstr "不明錯誤=(%d)\n" #: sym.c:100 msgid "symbol table memory allocation failed" msgstr "符號表記憶體配置失敗" #: sym.c:202 msgid "name defined twice" msgstr "名稱定義了兩次" #: sym.c:253 #, c-format msgid "start condition %s declared twice" msgstr "起始條件 %s 宣告了兩次" #: yylex.c:56 msgid "premature EOF" msgstr "過早出現檔案結尾" #: yylex.c:198 #, c-format msgid "End Marker\n" msgstr "結束標誌\n" #: yylex.c:204 #, c-format msgid "*Something Weird* - tok: %d val: %d\n" msgstr "*情況很怪異* - tok:%d val:%d\n" flex-2.5.39/po/hr.po0000644000175000017500000004210212314621665014416 0ustar srivastasrivasta# Translation of flex to Croatian. # Copyright (C) 2012 The Flex Project (msgids) # This file is put in the public domain. # # Tomislav Krznar , 2012. msgid "" msgstr "" "Project-Id-Version: flex 2.5.37\n" "Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2014-03-26 15:00-0400\n" "PO-Revision-Date: 2012-10-05 16:48+0200\n" "Last-Translator: Tomislav Krznar \n" "Language-Team: Croatian \n" "Language: hr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Lokalize 1.4\n" #: buf.c:78 msgid "Allocation of buffer to print string failed" msgstr "" #: buf.c:100 msgid "Allocation of buffer for line directive failed" msgstr "" #: buf.c:177 msgid "Allocation of buffer for m4 def failed" msgstr "" #: buf.c:197 msgid "Allocation of buffer for m4 undef failed" msgstr "" #: dfa.c:61 #, c-format msgid "State #%d is non-accepting -\n" msgstr "" #: dfa.c:124 msgid "dangerous trailing context" msgstr "" #: dfa.c:166 #, c-format msgid " associated rule line numbers:" msgstr "" #: dfa.c:202 #, c-format msgid " out-transitions: " msgstr "" #: dfa.c:210 #, c-format msgid "" "\n" " jam-transitions: EOF " msgstr "" #: dfa.c:341 msgid "consistency check failed in epsclosure()" msgstr "" #: dfa.c:429 msgid "" "\n" "\n" "DFA Dump:\n" "\n" msgstr "" #: dfa.c:604 msgid "could not create unique end-of-buffer state" msgstr "" #: dfa.c:625 #, c-format msgid "state # %d:\n" msgstr "" #: dfa.c:785 msgid "Could not write yynxt_tbl[][]" msgstr "" #: dfa.c:1049 msgid "bad transition character detected in sympartition()" msgstr "" #: gen.c:478 msgid "" "\n" "\n" "Equivalence Classes:\n" "\n" msgstr "" #: gen.c:662 gen.c:691 gen.c:1215 #, c-format msgid "state # %d accepts: [%d]\n" msgstr "" #: gen.c:1110 #, c-format msgid "state # %d accepts: " msgstr "" #: gen.c:1157 msgid "Could not write yyacclist_tbl" msgstr "" #: gen.c:1233 msgid "Could not write yyacc_tbl" msgstr "" #: gen.c:1248 gen.c:1633 gen.c:1656 msgid "Could not write ecstbl" msgstr "" #: gen.c:1271 msgid "" "\n" "\n" "Meta-Equivalence Classes:\n" msgstr "" #: gen.c:1293 msgid "Could not write yymeta_tbl" msgstr "" #: gen.c:1354 msgid "Could not write yybase_tbl" msgstr "" #: gen.c:1388 msgid "Could not write yydef_tbl" msgstr "" #: gen.c:1428 msgid "Could not write yynxt_tbl" msgstr "" #: gen.c:1464 msgid "Could not write yychk_tbl" msgstr "" #: gen.c:1618 gen.c:1647 msgid "Could not write ftbl" msgstr "" #: gen.c:1624 msgid "Could not write ssltbl" msgstr "" #: gen.c:1675 msgid "Could not write eoltbl" msgstr "" #: gen.c:1735 msgid "Could not write yynultrans_tbl" msgstr "" #: main.c:191 msgid "rule cannot be matched" msgstr "" #: main.c:196 msgid "-s option given but default rule can be matched" msgstr "" #: main.c:236 msgid "Can't use -+ with -l option" msgstr "" #: main.c:239 msgid "Can't use -f or -F with -l option" msgstr "" #: main.c:243 msgid "Can't use --reentrant or --bison-bridge with -l option" msgstr "" #: main.c:275 msgid "-Cf/-CF and -Cm don't make sense together" msgstr "" #: main.c:278 msgid "-Cf/-CF and -I are incompatible" msgstr "" #: main.c:282 msgid "-Cf/-CF are incompatible with lex-compatibility mode" msgstr "" #: main.c:287 msgid "-Cf and -CF are mutually exclusive" msgstr "" #: main.c:291 msgid "Can't use -+ with -CF option" msgstr "" #: main.c:294 #, c-format msgid "%array incompatible with -+ option" msgstr "" #: main.c:299 msgid "Options -+ and --reentrant are mutually exclusive." msgstr "" #: main.c:302 msgid "bison bridge not supported for the C++ scanner." msgstr "" #: main.c:357 main.c:403 #, c-format msgid "could not create %s" msgstr "" #: main.c:416 msgid "could not write tables header" msgstr "" #: main.c:420 #, c-format msgid "can't open skeleton file %s" msgstr "" #: main.c:456 msgid "allocation of macro definition failed" msgstr "" #: main.c:504 #, c-format msgid "input error reading skeleton file %s" msgstr "" #: main.c:508 #, c-format msgid "error closing skeleton file %s" msgstr "greška pri zatvaranju datoteke predloška %s" #: main.c:693 #, c-format msgid "error creating header file %s" msgstr "greška pri stvaranju datoteke zaglavlja %s" #: main.c:701 #, c-format msgid "error writing output file %s" msgstr "greška pri pisanju izlazne datoteke %s" #: main.c:705 #, c-format msgid "error closing output file %s" msgstr "greška pri zatvaranju izlazne datoteke %s" #: main.c:709 #, c-format msgid "error deleting output file %s" msgstr "greška pri uklanjanju izlazne datoteke %s" #: main.c:716 #, c-format msgid "No backing up.\n" msgstr "" #: main.c:720 #, c-format msgid "%d backing up (non-accepting) states.\n" msgstr "" #: main.c:724 #, c-format msgid "Compressed tables always back up.\n" msgstr "" #: main.c:727 #, c-format msgid "error writing backup file %s" msgstr "" #: main.c:731 #, c-format msgid "error closing backup file %s" msgstr "" #: main.c:736 #, c-format msgid "%s version %s usage statistics:\n" msgstr "" #: main.c:739 #, c-format msgid " scanner options: -" msgstr "" #: main.c:818 #, c-format msgid " %d/%d NFA states\n" msgstr "" #: main.c:820 #, c-format msgid " %d/%d DFA states (%d words)\n" msgstr "" #: main.c:822 #, c-format msgid " %d rules\n" msgstr "" #: main.c:827 #, c-format msgid " No backing up\n" msgstr "" #: main.c:831 #, c-format msgid " %d backing-up (non-accepting) states\n" msgstr "" #: main.c:836 #, c-format msgid " Compressed tables always back-up\n" msgstr "" #: main.c:840 #, c-format msgid " Beginning-of-line patterns used\n" msgstr "" #: main.c:842 #, c-format msgid " %d/%d start conditions\n" msgstr "" #: main.c:846 #, c-format msgid " %d epsilon states, %d double epsilon states\n" msgstr "" #: main.c:850 #, c-format msgid " no character classes\n" msgstr "" #: main.c:854 #, c-format msgid " %d/%d character classes needed %d/%d words of storage, %d reused\n" msgstr "" #: main.c:859 #, c-format msgid " %d state/nextstate pairs created\n" msgstr "" #: main.c:862 #, c-format msgid " %d/%d unique/duplicate transitions\n" msgstr "" #: main.c:867 #, c-format msgid " %d table entries\n" msgstr "" #: main.c:875 #, c-format msgid " %d/%d base-def entries created\n" msgstr "" #: main.c:879 #, c-format msgid " %d/%d (peak %d) nxt-chk entries created\n" msgstr "" #: main.c:883 #, c-format msgid " %d/%d (peak %d) template nxt-chk entries created\n" msgstr "" #: main.c:887 #, c-format msgid " %d empty table entries\n" msgstr "" #: main.c:889 #, c-format msgid " %d protos created\n" msgstr "" #: main.c:892 #, c-format msgid " %d templates created, %d uses\n" msgstr "" #: main.c:900 #, c-format msgid " %d/%d equivalence classes created\n" msgstr "" #: main.c:908 #, c-format msgid " %d/%d meta-equivalence classes created\n" msgstr "" #: main.c:914 #, c-format msgid " %d (%d saved) hash collisions, %d DFAs equal\n" msgstr "" #: main.c:916 #, c-format msgid " %d sets of reallocations needed\n" msgstr "" #: main.c:918 #, c-format msgid " %d total table entries needed\n" msgstr "" #: main.c:995 #, c-format msgid "Internal error. flexopts are malformed.\n" msgstr "" #: main.c:1005 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Pokušajte „%s --help” za više informacija.\n" #: main.c:1062 #, c-format msgid "unknown -C option '%c'" msgstr "nepoznata -C opcija „%c”" #: main.c:1191 #, c-format msgid "%s %s\n" msgstr "%s %s\n" #: main.c:1466 msgid "fatal parse error" msgstr "fatalna greška analize" #: main.c:1498 #, c-format msgid "could not create backing-up info file %s" msgstr "" #: main.c:1519 #, c-format msgid "-l AT&T lex compatibility option entails a large performance penalty\n" msgstr "" #: main.c:1522 #, c-format msgid " and may be the actual source of other reported performance penalties\n" msgstr "" #: main.c:1528 #, c-format msgid "" "%%option yylineno entails a performance penalty ONLY on rules that can match " "newline characters\n" msgstr "" #: main.c:1535 #, c-format msgid "-I (interactive) entails a minor performance penalty\n" msgstr "" #: main.c:1540 #, c-format msgid "yymore() entails a minor performance penalty\n" msgstr "" #: main.c:1546 #, c-format msgid "REJECT entails a large performance penalty\n" msgstr "" #: main.c:1551 #, c-format msgid "Variable trailing context rules entail a large performance penalty\n" msgstr "" #: main.c:1563 msgid "REJECT cannot be used with -f or -F" msgstr "" #: main.c:1566 #, c-format msgid "%option yylineno cannot be used with REJECT" msgstr "" #: main.c:1569 msgid "variable trailing context rules cannot be used with -f or -F" msgstr "" #: main.c:1692 #, c-format msgid "%option yyclass only meaningful for C++ scanners" msgstr "" #: main.c:1799 #, c-format msgid "Usage: %s [OPTIONS] [FILE]...\n" msgstr "Uporaba: %s [OPCIJE] [DATOTEKA]...\n" #: main.c:1802 #, c-format msgid "" "Generates programs that perform pattern-matching on text.\n" "\n" "Table Compression:\n" " -Ca, --align trade off larger tables for better memory alignment\n" " -Ce, --ecs construct equivalence classes\n" " -Cf do not compress tables; use -f representation\n" " -CF do not compress tables; use -F representation\n" " -Cm, --meta-ecs construct meta-equivalence classes\n" " -Cr, --read use read() instead of stdio for scanner input\n" " -f, --full generate fast, large scanner. Same as -Cfr\n" " -F, --fast use alternate table representation. Same as -CFr\n" " -Cem default compression (same as --ecs --meta-ecs)\n" "\n" "Debugging:\n" " -d, --debug enable debug mode in scanner\n" " -b, --backup write backing-up information to %s\n" " -p, --perf-report write performance report to stderr\n" " -s, --nodefault suppress default rule to ECHO unmatched text\n" " -T, --trace %s should run in trace mode\n" " -w, --nowarn do not generate warnings\n" " -v, --verbose write summary of scanner statistics to stdout\n" "\n" "Files:\n" " -o, --outfile=FILE specify output filename\n" " -S, --skel=FILE specify skeleton file\n" " -t, --stdout write scanner on stdout instead of %s\n" " --yyclass=NAME name of C++ class\n" " --header-file=FILE create a C header file in addition to the " "scanner\n" " --tables-file[=FILE] write tables to FILE\n" "\n" "Scanner behavior:\n" " -7, --7bit generate 7-bit scanner\n" " -8, --8bit generate 8-bit scanner\n" " -B, --batch generate batch scanner (opposite of -I)\n" " -i, --case-insensitive ignore case in patterns\n" " -l, --lex-compat maximal compatibility with original lex\n" " -X, --posix-compat maximal compatibility with POSIX lex\n" " -I, --interactive generate interactive scanner (opposite of -B)\n" " --yylineno track line count in yylineno\n" "\n" "Generated code:\n" " -+, --c++ generate C++ scanner class\n" " -Dmacro[=defn] #define macro defn (default defn is '1')\n" " -L, --noline suppress #line directives in scanner\n" " -P, --prefix=STRING use STRING as prefix instead of \"yy\"\n" " -R, --reentrant generate a reentrant C scanner\n" " --bison-bridge scanner for bison pure parser.\n" " --bison-locations include yylloc support.\n" " --stdinit initialize yyin/yyout to stdin/stdout\n" " --noansi-definitions old-style function definitions\n" " --noansi-prototypes empty parameter list in prototypes\n" " --nounistd do not include \n" " --noFUNCTION do not generate a particular FUNCTION\n" "\n" "Miscellaneous:\n" " -c do-nothing POSIX option\n" " -n do-nothing POSIX option\n" " -?\n" " -h, --help produce this help message\n" " -V, --version report %s version\n" msgstr "" #: misc.c:65 msgid "allocation of sko_stack failed" msgstr "" #: misc.c:102 misc.c:128 #, c-format msgid "name \"%s\" ridiculously long" msgstr "" #: misc.c:177 msgid "memory allocation failed in allocate_array()" msgstr "" #: misc.c:230 #, c-format msgid "bad character '%s' detected in check_char()" msgstr "" #: misc.c:235 #, c-format msgid "scanner requires -8 flag to use the character %s" msgstr "" #: misc.c:268 msgid "dynamic memory failure in copy_string()" msgstr "" #: misc.c:367 #, c-format msgid "%s: fatal internal error, %s\n" msgstr "" #: misc.c:803 msgid "attempt to increase array size failed" msgstr "" #: misc.c:930 msgid "bad line in skeleton file" msgstr "neispravan redak u datoteci predloška" #: misc.c:979 msgid "memory allocation failed in yy_flex_xmalloc()" msgstr "" #: nfa.c:104 #, c-format msgid "" "\n" "\n" "********** beginning dump of nfa with start state %d\n" msgstr "" #: nfa.c:115 #, c-format msgid "state # %4d\t" msgstr "" #: nfa.c:130 #, c-format msgid "********** end of dump\n" msgstr "" #: nfa.c:174 msgid "empty machine in dupmachine()" msgstr "" #: nfa.c:240 #, c-format msgid "Variable trailing context rule at line %d\n" msgstr "" #: nfa.c:364 msgid "bad state type in mark_beginning_as_normal()" msgstr "" #: nfa.c:609 #, c-format msgid "input rules are too complicated (>= %d NFA states)" msgstr "" #: nfa.c:688 msgid "found too many transitions in mkxtion()" msgstr "" #: nfa.c:714 #, c-format msgid "too many rules (> %d)!" msgstr "previše pravila (> %d)!" #: parse.y:159 msgid "unknown error processing section 1" msgstr "" #: parse.y:184 parse.y:351 msgid "bad start condition list" msgstr "" #: parse.y:315 msgid "unrecognized rule" msgstr "neprepoznato pravilo" #: parse.y:434 parse.y:447 parse.y:516 msgid "trailing context used twice" msgstr "" #: parse.y:552 parse.y:562 parse.y:635 parse.y:645 msgid "bad iteration values" msgstr "neispravne vrijednosti iteracije" #: parse.y:580 parse.y:598 parse.y:663 parse.y:681 msgid "iteration value must be positive" msgstr "vrijednost iteracije mora biti pozitivna" #: parse.y:804 parse.y:814 #, c-format msgid "the character range [%c-%c] is ambiguous in a case-insensitive scanner" msgstr "" #: parse.y:819 msgid "negative range in character class" msgstr "" #: parse.y:916 msgid "[:^lower:] is ambiguous in case insensitive scanner" msgstr "" #: parse.y:922 msgid "[:^upper:] ambiguous in case insensitive scanner" msgstr "" #: scan.l:75 scan.l:618 scan.l:676 msgid "Input line too long\n" msgstr "Ulazni redak je predugačak\n" #: scan.l:161 #, c-format msgid "malformed '%top' directive" msgstr "" #: scan.l:183 #, no-c-format msgid "unrecognized '%' directive" msgstr "" #: scan.l:192 msgid "Definition name too long\n" msgstr "Ime definicije je predugačko\n" #: scan.l:284 msgid "Unmatched '{'" msgstr "Neuparena „{”" #: scan.l:300 #, c-format msgid "Definition value for {%s} too long\n" msgstr "" #: scan.l:317 msgid "incomplete name definition" msgstr "nepotpuna definicija imena" #: scan.l:443 msgid "Option line too long\n" msgstr "Redak opcija je predugačak\n" #: scan.l:451 #, c-format msgid "unrecognized %%option: %s" msgstr "" #: scan.l:633 scan.l:800 msgid "bad character class" msgstr "neispravan razred znakova" #: scan.l:683 #, c-format msgid "undefined definition {%s}" msgstr "nedefinirana definicija {%s}" #: scan.l:755 #, c-format msgid "bad : %s" msgstr "" #: scan.l:768 msgid "missing quote" msgstr "nedostaje navodnik" #: scan.l:834 #, c-format msgid "bad character class expression: %s" msgstr "" #: scan.l:856 msgid "bad character inside {}'s" msgstr "neispravan znak unutar {}" #: scan.l:862 msgid "missing }" msgstr "nedostaje }" #: scan.l:940 msgid "EOF encountered inside an action" msgstr "" #: scan.l:945 msgid "EOF encountered inside pattern" msgstr "" #: scan.l:967 #, c-format msgid "bad character: %s" msgstr "neispravan znak: %s" #: scan.l:996 #, c-format msgid "can't open %s" msgstr "ne mogu otvoriti %s" #: scanopt.c:291 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Uporaba: %s [OPCIJE]...\n" #: scanopt.c:564 #, c-format msgid "option `%s' doesn't allow an argument\n" msgstr "opcija „%s” ne dozvoljava argument\n" #: scanopt.c:569 #, c-format msgid "option `%s' requires an argument\n" msgstr "opcija „%s” zahtijeva argument\n" #: scanopt.c:573 #, c-format msgid "option `%s' is ambiguous\n" msgstr "opcija „%s” je višeznačna\n" #: scanopt.c:577 #, c-format msgid "Unrecognized option `%s'\n" msgstr "Neprepoznata opcija „%s”\n" #: scanopt.c:581 #, c-format msgid "Unknown error=(%d)\n" msgstr "Nepoznata greška=(%d)\n" #: sym.c:100 msgid "symbol table memory allocation failed" msgstr "alokacija memorije za tablicu simbola nije uspjela" #: sym.c:202 msgid "name defined twice" msgstr "ime je dvaput definirano" #: sym.c:253 #, c-format msgid "start condition %s declared twice" msgstr "" #: yylex.c:56 msgid "premature EOF" msgstr "preuranjen EOF" #: yylex.c:198 #, c-format msgid "End Marker\n" msgstr "Oznaka kraja\n" #: yylex.c:204 #, c-format msgid "*Something Weird* - tok: %d val: %d\n" msgstr "*Nešto je čudno* - simbol: %d vrijednost: %d\n" flex-2.5.39/po/ga.gmo0000644000175000017500000005157412314621665014555 0ustar srivastasrivasta  H 7I    / ' 5.O~ "#  *<3g!C$4)Y%"# 3FH`""&E0l+ $'"L)o45E$/j6! ",Of}0Kj  : )"(>"g"2w"#"+""&#?# S#a#{##*#C#3!$0U$%$$+$$"%)%C%U%j%%,%3%/% .&<&(X&&(&+&&''#'K'i''''''(8('J(r($(2( (),!)-N) |) )))!)&) *!&* H*V*0m*!* *** *% +F/+v++++"++,2,<D,-,,:1.l.~..%.E.0/O/7m// /#//0"0(B0%k000000L1\1!w11"1$1.1,2?2]29x2,22X2+K3/w3>3(34#4&:4 a4(4-4$4#43"58V5D5Z5//6._6J656-7"=7"`7 7"7%7)7&8%>8%d8&8*8%8)9+,9+X99@ 9E,E%F57F/mF!F'F;F#Gl= m&|[i+*"ePEG~ Y ********** beginning dump of nfa with start state %d DFA Dump: Equivalence Classes: Meta-Equivalence Classes: jam-transitions: EOF %d (%d saved) hash collisions, %d DFAs equal %d backing-up (non-accepting) states %d empty table entries %d epsilon states, %d double epsilon states %d protos created %d rules %d sets of reallocations needed %d state/nextstate pairs created %d table entries %d templates created, %d uses %d total table entries needed %d/%d (peak %d) nxt-chk entries created %d/%d (peak %d) template nxt-chk entries created %d/%d DFA states (%d words) %d/%d NFA states %d/%d base-def entries created %d/%d character classes needed %d/%d words of storage, %d reused %d/%d equivalence classes created %d/%d meta-equivalence classes created %d/%d start conditions %d/%d unique/duplicate transitions Beginning-of-line patterns used Compressed tables always back-up No backing up no character classes scanner options: - and may be the actual source of other reported performance penalties associated rule line numbers: out-transitions: %%option yylineno entails a performance penalty ONLY on rules that can match newline characters %array incompatible with -+ option%d backing up (non-accepting) states. %option yyclass only meaningful for C++ scanners%option yylineno cannot be used with REJECT%s %s %s version %s usage statistics: %s: fatal internal error, %s ********** end of dump *Something Weird* - tok: %d val: %d -Cf and -CF are mutually exclusive-Cf/-CF and -Cm don't make sense together-Cf/-CF and -I are incompatible-Cf/-CF are incompatible with lex-compatibility mode-I (interactive) entails a minor performance penalty -l AT&T lex compatibility option entails a large performance penalty -s option given but default rule can be matchedCan't use -+ with -CF optionCan't use -+ with -l optionCan't use --reentrant or --bison-bridge with -l optionCan't use -f or -F with -l optionCompressed tables always back up. Could not write ecstblCould not write eoltblCould not write ftblCould not write ssltblCould not write yyacc_tblCould not write yyacclist_tblCould not write yybase_tblCould not write yychk_tblCould not write yydef_tblCould not write yymeta_tblCould not write yynultrans_tblCould not write yynxt_tblCould not write yynxt_tbl[][]EOF encountered inside an actionEOF encountered inside patternEnd Marker Generates programs that perform pattern-matching on text. Table Compression: -Ca, --align trade off larger tables for better memory alignment -Ce, --ecs construct equivalence classes -Cf do not compress tables; use -f representation -CF do not compress tables; use -F representation -Cm, --meta-ecs construct meta-equivalence classes -Cr, --read use read() instead of stdio for scanner input -f, --full generate fast, large scanner. Same as -Cfr -F, --fast use alternate table representation. Same as -CFr -Cem default compression (same as --ecs --meta-ecs) Debugging: -d, --debug enable debug mode in scanner -b, --backup write backing-up information to %s -p, --perf-report write performance report to stderr -s, --nodefault suppress default rule to ECHO unmatched text -T, --trace %s should run in trace mode -w, --nowarn do not generate warnings -v, --verbose write summary of scanner statistics to stdout Files: -o, --outfile=FILE specify output filename -S, --skel=FILE specify skeleton file -t, --stdout write scanner on stdout instead of %s --yyclass=NAME name of C++ class --header-file=FILE create a C header file in addition to the scanner --tables-file[=FILE] write tables to FILE Scanner behavior: -7, --7bit generate 7-bit scanner -8, --8bit generate 8-bit scanner -B, --batch generate batch scanner (opposite of -I) -i, --case-insensitive ignore case in patterns -l, --lex-compat maximal compatibility with original lex -X, --posix-compat maximal compatibility with POSIX lex -I, --interactive generate interactive scanner (opposite of -B) --yylineno track line count in yylineno Generated code: -+, --c++ generate C++ scanner class -Dmacro[=defn] #define macro defn (default defn is '1') -L, --noline suppress #line directives in scanner -P, --prefix=STRING use STRING as prefix instead of "yy" -R, --reentrant generate a reentrant C scanner --bison-bridge scanner for bison pure parser. --bison-locations include yylloc support. --stdinit initialize yyin/yyout to stdin/stdout --noansi-definitions old-style function definitions --noansi-prototypes empty parameter list in prototypes --nounistd do not include --noFUNCTION do not generate a particular FUNCTION Miscellaneous: -c do-nothing POSIX option -n do-nothing POSIX option -? -h, --help produce this help message -V, --version report %s version Input line too long Internal error. flexopts are malformed. No backing up. Options -+ and --reentrant are mutually exclusive.REJECT cannot be used with -f or -FREJECT entails a large performance penalty State #%d is non-accepting - Try `%s --help' for more information. Unknown error=(%d) Unmatched '{'Unrecognized option `%s' Usage: %s [OPTIONS] [FILE]... Usage: %s [OPTIONS]... Variable trailing context rule at line %d Variable trailing context rules entail a large performance penalty [:^lower:] is ambiguous in case insensitive scanner[:^upper:] ambiguous in case insensitive scannerattempt to increase array size failedbad : %sbad character '%s' detected in check_char()bad character classbad character class expression: %sbad character inside {}'sbad character: %sbad iteration valuesbad line in skeleton filebad start condition listbad state type in mark_beginning_as_normal()bad transition character detected in sympartition()bison bridge not supported for the C++ scanner.can't open %scan't open skeleton file %sconsistency check failed in epsclosure()could not create %scould not create backing-up info file %scould not create unique end-of-buffer statecould not write tables headerdangerous trailing contextdynamic memory failure in copy_string()empty machine in dupmachine()error closing backup file %serror closing output file %serror closing skeleton file %serror creating header file %serror deleting output file %serror writing backup file %serror writing output file %sfatal parse errorfound too many transitions in mkxtion()incomplete name definitioninput error reading skeleton file %sinput rules are too complicated (>= %d NFA states)iteration value must be positivemalformed '%top' directivememory allocation failed in allocate_array()memory allocation failed in yy_flex_xmalloc()missing quotemissing }name "%s" ridiculously longname defined twicenegative range in character classoption `%s' doesn't allow an argument option `%s' is ambiguous option `%s' requires an argument premature EOFrule cannot be matchedscanner requires -8 flag to use the character %sstart condition %s declared twicestate # %4d state # %d accepts: state # %d accepts: [%d] state # %d: symbol table memory allocation failedthe character range [%c-%c] is ambiguous in a case-insensitive scannertoo many rules (> %d)!trailing context used twiceundefined definition {%s}unknown -C option '%c'unknown error processing section 1unrecognized %%option: %sunrecognized '%' directiveunrecognized rulevariable trailing context rules cannot be used with -f or -Fyymore() entails a minor performance penalty Project-Id-Version: flex 2.5.34 Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net POT-Creation-Date: 2014-03-26 15:00-0400 PO-Revision-Date: 2008-07-23 09:37-0500 Last-Translator: Kevin Scannell Language-Team: Irish Language: ga MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ********** ag tosú dumpála de nfa le staid tosaigh %d Dumpáil DFA: Aicmí Coibhéise: Aicmí Meiteachoibhéise: athruithe plúchta: comhadchríoch %d (%d sábháilte) tuairt haiseála, %d DFA comhionann le chéile %d staid chúlaithe (níl ina staid ghlactha) %d iontráil tábla folamh %d staid eipsealóin, %d staid eipsealóin dúbailte %d fréamhshamhail %d riail tá gá le %d sraith athdháilte %d péire state/nextstate %d iontráil sa tábla %d teimpléad, %d i bhfeidhm tá gá le %d iontráil tábla ar fad %d/%d (buaic %d) iontráil nxt-chk %d/%d (buaic %d) iontráil teimpléid nxt-chk %d/%d staid DFA (%d focal) %d/%d staid NFA %d/%d iontráil base-def tá gá le %d/%d aicme charachtair %d/%d focal stórála, %d athúsáidte %d/%d aicme choibhéise %d/%d aicme mheiteachoibhéise %d/%d coinníoll tosaigh %d/%d athrú sainiúil/dúblach Patrúin úsáidte ag ceann líne Cúlaíonn táblaí comhbhrúite i gcónaí Ná cúlaítear níl aon aicme charachtair roghanna don scanóir: - agus is féidir gur cúis é le fadhbanna luais eile é líne-uimhreacha de na rialacha bainteacha: athruithe amach: is cúis le moilliú mór an %%rogha yylineno, MÁ tá rialacha ann le línte nua iontu níl %array comhoiriúnach leis an rogha -+%d staid chúlaithe (níl ina staid ghlactha). tá an %option yyclass gan bhrí ach amháin le scanóirí C++níl %option yylineno ar fáil le REJECT%s %s %s leagan %s staitistic d'úsáid: %s: earráid inmheánach mharfach, %s ********** i ndeireadh dumpála *Rud Éigin Aisteach* - tok: %d val: %d Is comheisiatach iad na roghanna -Cf agus -CFNíl -Cf/-CF agus -Cm comhoiriúnachNíl -Cf/-CF agus -I comhoiriúnachNíl -Cf/-CF ar fáil sa mhód comhoiriúnachta lexis cúis le moilliú beag an rogha -I (idirghníomhach) is cúis le moilliú mór an rogha -l (comhoiriúnacht le AT&T lex) bhí an rogha -s tugtha ach is féidir an riail réamhshocraithe a chur i gcomhoiriúnachtNíl -+ ar fáil in éineacht leis an rogha -CFNíl -+ ar fáil in éineacht leis an rogha -lNíl --reentrant nó --bison-bridge ar fáil in éineacht leis an rogha -lNíl -f nó -F ar fáil in éineacht leis an rogha -lCúlaíonn táblaí comhbhrúite i gcónaí. Níorbh fhéidir ecstbl a scríobhNíorbh fhéidir eoltbl a scríobhNíorbh fhéidir ftbl a scríobhNíorbh fhéidir ssltbl a scríobhNíorbh fhéidir yyacc_tbl a scríobhNíorbh fhéidir yyacclist_tbl a scríobhNíorbh fhéidir yybase_tbl a scríobhNíorbh fhéidir yychk_tbl a scríobhNíorbh fhéidir yydef_tbl a scríobhNíorbh fhéidir yymeta_tbl a scríobhNíorbh fhéidir yynultrans_tbl a scríobhNíorbh fhéidir yynxt_tbl a scríobhNíorbh fhéidir yynxt_tbl[][] a scríobhBuaileadh comhadchríoch isteach i ngníomhBuaileadh comhadchríoch isteach i bpatrúnComhartha Deiridh Gineann an clár seo cláir eile le haghaidh chomhoiriúnú de phatrúin. Comhfháscadh táblaí: -Ca, --align malartaigh táblaí níos mó d'ailíniú cuimhne níos fearr -Ce, --ecs déan aicmí coibhéise -Cf ná comhbhrúigh táblaí; bain úsáid as léiriú -f -CF ná comhbhrúigh táblaí; bain úsáid as léiriú -F -Cm, --meta-ecs déan aicmí meiteachoibhéise -Cr, --read bain úsáid as read() in ionad stdio d'ionchur -f, --full tóg scanóir atá mear agus mór; ar comhbhrí le -Cfr -F, --fast úsáid léiriú táblaí tánaisteach; ar comhbhrí le -CFr -Cem comhfháscadh réamhshocraithe (== --ecs --meta-ecs) Dífhabhtú: -d, --debug cuir dífhabhtú ar obair -b, --backup scríobh eolas faoin chúlú chuig %s -p, --perf-report scríobh tuairisc fheidhmithe chuig stderr -s, --nodefault ná déan macalla de théacs neamh-chomhoiriúnach -T, --trace ba chóir do %s a rith sa mhód loirg -w, --nowarn ná taispeáin rabhaidh -v, --verbose taispeáin achoimre ar staitistic scanóra chuig stdout Comhaid: -o, --outfile=COMHAD roghnaigh ainm comhaid le haghaidh aschuir -S, --skel=COMHAD roghnaigh creatchomhad -t, --stdout scríobh an scanóir chuig stdout in ionad %s --yyclass=COMHAD ainm de `class' C++ --header-file=COMHAD scríobh comhad ceanntáisc C i dteannta an scanóra --tables-file[=COMHAD] scríobh na táblaí chuig COMHAD Scanóir: -7, --7bit gin scanóir 7-giotán -8, --8bit gin scanóir 8-giotán -B, --batch gin scanóir baisce (i gcodarsnacht le -I) -i, --case-insensitive déan neamhshuim ar cheannlitreacha/litreacha beaga -l, --lex-compat comhoiriúnacht le lex bunúsach, a mhéad is féidir -X, --posix-compat comhoiriúnacht le lex POSIX, a mhéad is féidir -I, --interactive gin scanóir idirghníomhach (i gcodarsnacht le -B) --yylineno coimeád líon na línte i yylineno Generated code: -+, --c++ gin scanóir mar class C++ -Dmacra[=sain] #define macra sain (réamhshocrú: sain='1') -L, --noline ná cuir treoracha #line sa scanóir -P, --prefix=TEAGHRÁN úsáid TEAGHRÁN mar réimír in ionad "yy" -R, --reentrant gin scanóir reentrant C --bison-bridge scanóir do pharsálaí íon bison. --bison-locations ceadaigh an úsáid de yylloc. --stdinit socraigh yyin/yyout mar stdin/stdout faoi seach --noansi-definitions sainmhíniú d'fheidhmeanna ar an sean-nós --noansi-prototypes ceadaigh liosta folamh de pharaiméadair --nounistd ná cuir san áireamh --noFEIDHM ná gin an FHEIDHM seo Miscellaneous: -c rogha POSIX gan feidhm -n rogha POSIX gan feidhm -? -h, --help taispeáin an chabhair seo -V, --version taispeáin leagan %s Tá líne an ionchuir rófhada Earráid inmheánach (flexopts míchumtha). Ná cúlaítear. Is comheisiatach iad na roghanna -+ agus --reentrant.Níl REJECT ar fáil leis na roghanna -f nó -Fis REJECT cúis le moilliú mór Níl an staid #%d ina staid ghlactha - Bain triail as `%s --help' chun tuilleadh eolais a fháil. Earráid anaithnid=(%d) '{' corrRogha anaithnid `%s' Úsáid: %s [ROGHANNA] [COMHAD]... Úsáid: %s [ROGHANNA]... riail maidir le comhthéacs sraoilleach athraitheach ag líne %d is cúis le moilliú na rialacha maidir le comhthéacs sraoilleach athraitheach tá [:^lower:] débhríoch i scanóir a dhéanann neamhshuim ar cheannlitreacha agus litreacha beagatá [:^upper:] débhríoch i scanóir a dhéanann neamhshuim ar cheannlitreacha agus litreacha beagatheip ar mhéadú an eagair neamhbhailí: %saimsíodh carachtar neamhbhailí '%s' i check_char()aicme charachtair neamhbhailíis neamhbhailí an slonn aicme carachtair: %scarachtar neamhbhailí idir {}carachtar neamhbhailí: %sluachanna timthrialla neamhbhailídrochlíne i gcreatchomhadis neamhbhailí liosta na coinníollacha tosaighdrochstaid i mark_beginning_as_normal()carachtar trasdula neamhbhailí i sympartition()níl bison bridge ar fáil don scanóir C++.ní féidir %s a oscailtní féidir creatchomhad %s a oscailttheip ar sheiceáil chomhionannais i epsclosure()níorbh fhéidir %s a chruthúníorbh fhéidir comhad %s a chruthú don eolas faoin chúlúníorbh fhéidir staid shainiúil a chruthú ag deireadh maoláinníorbh fhéidir ceanntásc táblaí a scríobhcomhthéacs sraoilleach baolachtheip ar dháileadh na cuimhne i copy_string()meaisín folamh i dupmachine()earráid agus comhad cúltaca %s á dhúnadhearráid agus aschomhad %s á dhúnadhearráid agus creatchomhaid %s á dhúnadhearráid agus comhad ceanntáisc %s á chruthúearráid agus aschomhaid %s á scriosadhearráid agus comhad cúltaca %s á scríobhearráid agus aschomhaid %s á scríobhearráid pharsála mharfachan iomarca athruithe i mkxtion()is neamhiomlán an sainmhíniú ainmearráid agus creatchomhaid %s á léamhis róchasta na rialacha ionchuir (>= %d staid NFA)ní foláir luach timthrialla deimhneachtreoir '%top' míchumthatheip ar dháileadh na cuimhne i allocate_array()theip ar dháileadh na cuimhne i yy_flex_xmalloc()comhartha athfhriotal ar iarraidh} ar iarraidh.tá an t-ainm "%s" i bhfad Éireann rófhadasainmhíníodh an t-ainm faoi dhóraon diúltach in aicme charachtairní cheadaítear argóint i ndiaidh na rogha `%s' tá an rogha `%s' débhríoch tá argóint de dhíth i ndiaidh na rogha `%s' comhadchríoch gan choinneNí féidir riail chomhoiriúnach a aimsiúní foláir an rogha -8 chun an charachtair %s a úsáidfógraíodh an coinníoll tosaigh %s faoi dhóstaid # %4d glacann staid # %d le: glacann staid # %d le: [%d] staid # %d: theip ar dháileadh na cuimhne don tábla siombalachtá an raon carachtair [%c-%c] débhríoch i scanóir a dhéanann neamhshuim ar cheannlitreacha agus litreacha beagaan iomarca rialacha (> %d)!baineadh úsáid as comhthéacs sraoilleach faoi dhósainmhíniú neamhshainithe {%s}rogha -C anaithnid '%c'earráid anaithnid agus an chéad pháirt á próiseáilrogha %% anaithnid: %streoir '%' anaithnidriail anaithnidníl rialacha maidir le comhthéacs sraoilleach athraitheach ar fáil le -f nó -Fis cúis le moilliú beag an fheidhm yymore() flex-2.5.39/po/nl.po0000644000175000017500000006305612314621665014431 0ustar srivastasrivasta# Dutch translations for the fast parser Flex. # Copyright (C) 2014 The Flex Project (msgids) # This file is distributed under the same license as the flex package. # # Beim schwarzen Schaf... # # Benno Schulenberg , 2005, 2006, 2007, 2008, 2012, 2014. msgid "" msgstr "" "Project-Id-Version: flex-2.5.38\n" "Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2014-03-26 15:00-0400\n" "PO-Revision-Date: 2014-02-13 22:25+0100\n" "Last-Translator: Benno Schulenberg \n" "Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: buf.c:78 msgid "Allocation of buffer to print string failed" msgstr "Geheugenreservering voor stringprintbuffer is mislukt" #: buf.c:100 msgid "Allocation of buffer for line directive failed" msgstr "Geheugenreservering voor line-commandobuffer is mislukt" #: buf.c:177 msgid "Allocation of buffer for m4 def failed" msgstr "Geheugenreservering voor buffer voor m4 def is mislukt" #: buf.c:197 msgid "Allocation of buffer for m4 undef failed" msgstr "Geheugenreservering voor buffer voor m4 undef is mislukt" #: dfa.c:61 #, c-format msgid "State #%d is non-accepting -\n" msgstr "Toestand #%d is niet-accepterend -\n" #: dfa.c:124 msgid "dangerous trailing context" msgstr "gevaarlijke nakomende context" #: dfa.c:166 #, c-format msgid " associated rule line numbers:" msgstr " regelnummers van de betrokken voorschriften:" #: dfa.c:202 #, c-format msgid " out-transitions: " msgstr " uit-transities: " #: dfa.c:210 #, c-format msgid "" "\n" " jam-transitions: EOF " msgstr "" "\n" " vastlopende transities: EOF " #: dfa.c:341 msgid "consistency check failed in epsclosure()" msgstr "consistentiecontrole is mislukt in epsclosure()" #: dfa.c:429 msgid "" "\n" "\n" "DFA Dump:\n" "\n" msgstr "" "\n" "\n" "DFA-dump:\n" "\n" #: dfa.c:604 msgid "could not create unique end-of-buffer state" msgstr "kon geen unieke toestand voor einde-van-buffer aanmaken" #: dfa.c:625 #, c-format msgid "state # %d:\n" msgstr "toestand # %d:\n" #: dfa.c:785 msgid "Could not write yynxt_tbl[][]" msgstr "Kan yynxt_tbl[][] niet schrijven" #: dfa.c:1049 msgid "bad transition character detected in sympartition()" msgstr "onjuist transitieteken in sympartition()" #: gen.c:478 msgid "" "\n" "\n" "Equivalence Classes:\n" "\n" msgstr "" "\n" "\n" "Equivalentieklassen:\n" "\n" #: gen.c:662 gen.c:691 gen.c:1215 #, c-format msgid "state # %d accepts: [%d]\n" msgstr "toestand # %d accepteert: [%d]\n" #: gen.c:1110 #, c-format msgid "state # %d accepts: " msgstr "toestand # %d accepteert: " #: gen.c:1157 msgid "Could not write yyacclist_tbl" msgstr "Kan yyacclist_tbl niet schrijven" #: gen.c:1233 msgid "Could not write yyacc_tbl" msgstr "Kan yyacc_tbl niet schrijven" #: gen.c:1248 gen.c:1633 gen.c:1656 msgid "Could not write ecstbl" msgstr "Kan ecstbl niet schrijven" #: gen.c:1271 msgid "" "\n" "\n" "Meta-Equivalence Classes:\n" msgstr "" "\n" "\n" "Meta-equivalentieklassen:\n" #: gen.c:1293 msgid "Could not write yymeta_tbl" msgstr "Kan yymeta_tbl niet schrijven" #: gen.c:1354 msgid "Could not write yybase_tbl" msgstr "Kan yybase_tbl niet schrijven" #: gen.c:1388 msgid "Could not write yydef_tbl" msgstr "Kan yydef_tbl niet schrijven" #: gen.c:1428 msgid "Could not write yynxt_tbl" msgstr "Kan yynxt_tbl niet schrijven" #: gen.c:1464 msgid "Could not write yychk_tbl" msgstr "Kan yychk_tbl niet schrijven" #: gen.c:1618 gen.c:1647 msgid "Could not write ftbl" msgstr "Kan ftbl niet schrijven" #: gen.c:1624 msgid "Could not write ssltbl" msgstr "Kan ssltbl niet schrijven" #: gen.c:1675 msgid "Could not write eoltbl" msgstr "Kan eoltbl niet schrijven" #: gen.c:1735 msgid "Could not write yynultrans_tbl" msgstr "Kan yynultrans_tbl niet schrijven" #: main.c:191 msgid "rule cannot be matched" msgstr "voorschrift geeft geen overeenkomsten" #: main.c:196 msgid "-s option given but default rule can be matched" msgstr "" "optie '-s' is gegeven, maar het standaardvoorschrift geeft overeenkomsten" #: main.c:236 msgid "Can't use -+ with -l option" msgstr "Optie '-+' gaat niet samen met '-l'" #: main.c:239 msgid "Can't use -f or -F with -l option" msgstr "Optie '-f' of '-F' gaat niet samen met '-l'" #: main.c:243 msgid "Can't use --reentrant or --bison-bridge with -l option" msgstr "Optie '--reentrant' of '--bison-bridge' gaat niet samen met '-l'" #: main.c:275 msgid "-Cf/-CF and -Cm don't make sense together" msgstr "Opties -Cf/-CF en -Cm gaan niet samen" #: main.c:278 msgid "-Cf/-CF and -I are incompatible" msgstr "Opties -Cf/-CF en -I gaan niet samen" #: main.c:282 msgid "-Cf/-CF are incompatible with lex-compatibility mode" msgstr "Optie -Cf of -CF gaat niet samen met lex-compatibiliteitsmodus" #: main.c:287 msgid "-Cf and -CF are mutually exclusive" msgstr "Opties -Cf en -CF sluiten elkaar uit" #: main.c:291 msgid "Can't use -+ with -CF option" msgstr "Optie '-+' gaat niet samen met '-CF'" #: main.c:294 #, c-format msgid "%array incompatible with -+ option" msgstr "Optie '-+' gaat niet samen met %array" #: main.c:299 msgid "Options -+ and --reentrant are mutually exclusive." msgstr "Opties '-+' en '--reentrant' sluiten elkaar uit." #: main.c:302 msgid "bison bridge not supported for the C++ scanner." msgstr "bison bridge wordt niet ondersteund voor de C++-scanner." #: main.c:357 main.c:403 #, c-format msgid "could not create %s" msgstr "kan %s niet aanmaken" #: main.c:416 msgid "could not write tables header" msgstr "kan tabellenkop niet schrijven" #: main.c:420 #, c-format msgid "can't open skeleton file %s" msgstr "kan skeletbestand %s niet openen" #: main.c:456 msgid "allocation of macro definition failed" msgstr "geheugenreservering voor macrodefinitie is mislukt" #: main.c:504 #, c-format msgid "input error reading skeleton file %s" msgstr "invoerfout tijdens lezen van skeletbestand %s" #: main.c:508 #, c-format msgid "error closing skeleton file %s" msgstr "fout tijdens sluiten van skeletbestand %s" #: main.c:693 #, c-format msgid "error creating header file %s" msgstr "fout tijdens aanmaken van headerbestand %s" #: main.c:701 #, c-format msgid "error writing output file %s" msgstr "fout tijdens schrijven van uitvoerbestand %s" #: main.c:705 #, c-format msgid "error closing output file %s" msgstr "fout tijdens sluiten van uitvoerbestand %s" #: main.c:709 #, c-format msgid "error deleting output file %s" msgstr "fout tijdens verwijderen van uitvoerbestand %s" #: main.c:716 #, c-format msgid "No backing up.\n" msgstr "Terugstappen is niet mogelijk.\n" #: main.c:720 #, c-format msgid "%d backing up (non-accepting) states.\n" msgstr "%d terugstappende (niet-accepterende) toestanden.\n" #: main.c:724 #, c-format msgid "Compressed tables always back up.\n" msgstr "Gecomprimeerde tabellen kunnen altijd terugstappen.\n" #: main.c:727 #, c-format msgid "error writing backup file %s" msgstr "fout tijdens schrijven van terugstapbestand %s" #: main.c:731 #, c-format msgid "error closing backup file %s" msgstr "fout tijdens sluiten van terugstapbestand %s" #: main.c:736 #, c-format msgid "%s version %s usage statistics:\n" msgstr "%s versie %s gebruiksstatistieken:\n" #: main.c:739 #, c-format msgid " scanner options: -" msgstr " scanneropties: -" #: main.c:818 #, c-format msgid " %d/%d NFA states\n" msgstr " %d/%d NFA-toestanden\n" #: main.c:820 #, c-format msgid " %d/%d DFA states (%d words)\n" msgstr " %d/%d DFA-toestanden (%d woorden)\n" #: main.c:822 #, c-format msgid " %d rules\n" msgstr " %d voorschriften\n" #: main.c:827 #, c-format msgid " No backing up\n" msgstr " Terugstappen is niet mogelijk\n" #: main.c:831 #, c-format msgid " %d backing-up (non-accepting) states\n" msgstr " %d terugstappende (niet-accepterende) toestanden\n" #: main.c:836 #, c-format msgid " Compressed tables always back-up\n" msgstr " Gecomprimeerde tabellen kunnen altijd terugstappen\n" #: main.c:840 #, c-format msgid " Beginning-of-line patterns used\n" msgstr " Begin-van-regel-patronen gebruikt\n" #: main.c:842 #, c-format msgid " %d/%d start conditions\n" msgstr " %d/%d startvoorwaarden\n" #: main.c:846 #, c-format msgid " %d epsilon states, %d double epsilon states\n" msgstr " %d epsilontoestanden, %d dubbele epsilontoestanden\n" #: main.c:850 #, c-format msgid " no character classes\n" msgstr " geen tekenklassen\n" #: main.c:854 #, c-format msgid " %d/%d character classes needed %d/%d words of storage, %d reused\n" msgstr "" " %d/%d tekenklassen hadden %d/%d opslagwoorden nodig, %d hergebruikt\n" #: main.c:859 #, c-format msgid " %d state/nextstate pairs created\n" msgstr " %d toestand/volgtoestand-paren aangemaakt\n" #: main.c:862 #, c-format msgid " %d/%d unique/duplicate transitions\n" msgstr " %d/%d unieke/dubbele transities\n" #: main.c:867 #, c-format msgid " %d table entries\n" msgstr " %d tabelitems\n" #: main.c:875 #, c-format msgid " %d/%d base-def entries created\n" msgstr " %d/%d base-def-items aangemaakt\n" #: main.c:879 #, c-format msgid " %d/%d (peak %d) nxt-chk entries created\n" msgstr " %d/%d (piek %d) nxt-chk-items aangemaakt\n" #: main.c:883 #, c-format msgid " %d/%d (peak %d) template nxt-chk entries created\n" msgstr " %d/%d (piek %d) sjabloon-nxt-chk-items aangemaakt\n" #: main.c:887 #, c-format msgid " %d empty table entries\n" msgstr " %d lege tabelitems\n" #: main.c:889 #, c-format msgid " %d protos created\n" msgstr " %d prototypes aangemaakt\n" #: main.c:892 #, c-format msgid " %d templates created, %d uses\n" msgstr " %d sjablonen aangemaakt, %d keer gebruikt\n" #: main.c:900 #, c-format msgid " %d/%d equivalence classes created\n" msgstr " %d/%d equivalentieklassen aangemaakt\n" #: main.c:908 #, c-format msgid " %d/%d meta-equivalence classes created\n" msgstr " %d/%d meta-equivalentieklassen aangemaakt\n" #: main.c:914 #, c-format msgid " %d (%d saved) hash collisions, %d DFAs equal\n" msgstr " %d (%d bewaarde) hash-botsingen, %d DFA's gelijk\n" #: main.c:916 #, c-format msgid " %d sets of reallocations needed\n" msgstr " %d sets van herallocaties waren nodig\n" #: main.c:918 #, c-format msgid " %d total table entries needed\n" msgstr " in totaal %d tabelitems nodig\n" #: main.c:995 #, c-format msgid "Internal error. flexopts are malformed.\n" msgstr "*Interne fout*: ongeldige flexopts.\n" #: main.c:1005 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Typ '%s --help' voor meer informatie.\n" #: main.c:1062 #, c-format msgid "unknown -C option '%c'" msgstr "onbekende -C-optie '%c'" #: main.c:1191 #, c-format msgid "%s %s\n" msgstr "%s %s\n" #: main.c:1466 msgid "fatal parse error" msgstr "fatale ontledingsfout" #: main.c:1498 #, c-format msgid "could not create backing-up info file %s" msgstr "kon terugstapbestand %s niet aanmaken" #: main.c:1519 #, c-format msgid "-l AT&T lex compatibility option entails a large performance penalty\n" msgstr "" "de AT&T-lexcompatibiliteitsoptie '-l' betekent een grote " "prestatievermindering\n" #: main.c:1522 #, c-format msgid " and may be the actual source of other reported performance penalties\n" msgstr "" " en zou de eigenlijke bron kunnen zijn van andere gemelde " "prestatieverminderingen\n" #: main.c:1528 #, c-format msgid "" "%%option yylineno entails a performance penalty ONLY on rules that can match " "newline characters\n" msgstr "" "de %%optie yylineno betekent een prestatievermindering, maar ALLEEN voor " "voorschriften die met het regeleindeteken overeen kunnen komen\n" #: main.c:1535 #, c-format msgid "-I (interactive) entails a minor performance penalty\n" msgstr "optie '-I' (interactief) betekent een kleine prestatievermindering\n" #: main.c:1540 #, c-format msgid "yymore() entails a minor performance penalty\n" msgstr "yymore() betekent een kleine prestatievermindering\n" #: main.c:1546 #, c-format msgid "REJECT entails a large performance penalty\n" msgstr "REJECT betekent een grote prestatievermindering\n" #: main.c:1551 #, c-format msgid "Variable trailing context rules entail a large performance penalty\n" msgstr "" "Voorschriften met variabele nakomende context betekenen een grote " "prestatievermindering\n" #: main.c:1563 msgid "REJECT cannot be used with -f or -F" msgstr "REJECT gaat niet samen met -f of -F" #: main.c:1566 #, c-format msgid "%option yylineno cannot be used with REJECT" msgstr "%optie yylineno gaat niet samen met REJECT" #: main.c:1569 msgid "variable trailing context rules cannot be used with -f or -F" msgstr "" "voorschriften met variabele nakomende context gaan niet samen met '-f' of '-" "F'" #: main.c:1692 #, c-format msgid "%option yyclass only meaningful for C++ scanners" msgstr "%optie yyclass heeft alleen betekenis voor C++-scanners" #: main.c:1799 #, c-format msgid "Usage: %s [OPTIONS] [FILE]...\n" msgstr "Gebruik: %s [OPTIE...] [BESTAND...]\n" #: main.c:1802 #, c-format msgid "" "Generates programs that perform pattern-matching on text.\n" "\n" "Table Compression:\n" " -Ca, --align trade off larger tables for better memory alignment\n" " -Ce, --ecs construct equivalence classes\n" " -Cf do not compress tables; use -f representation\n" " -CF do not compress tables; use -F representation\n" " -Cm, --meta-ecs construct meta-equivalence classes\n" " -Cr, --read use read() instead of stdio for scanner input\n" " -f, --full generate fast, large scanner. Same as -Cfr\n" " -F, --fast use alternate table representation. Same as -CFr\n" " -Cem default compression (same as --ecs --meta-ecs)\n" "\n" "Debugging:\n" " -d, --debug enable debug mode in scanner\n" " -b, --backup write backing-up information to %s\n" " -p, --perf-report write performance report to stderr\n" " -s, --nodefault suppress default rule to ECHO unmatched text\n" " -T, --trace %s should run in trace mode\n" " -w, --nowarn do not generate warnings\n" " -v, --verbose write summary of scanner statistics to stdout\n" "\n" "Files:\n" " -o, --outfile=FILE specify output filename\n" " -S, --skel=FILE specify skeleton file\n" " -t, --stdout write scanner on stdout instead of %s\n" " --yyclass=NAME name of C++ class\n" " --header-file=FILE create a C header file in addition to the " "scanner\n" " --tables-file[=FILE] write tables to FILE\n" "\n" "Scanner behavior:\n" " -7, --7bit generate 7-bit scanner\n" " -8, --8bit generate 8-bit scanner\n" " -B, --batch generate batch scanner (opposite of -I)\n" " -i, --case-insensitive ignore case in patterns\n" " -l, --lex-compat maximal compatibility with original lex\n" " -X, --posix-compat maximal compatibility with POSIX lex\n" " -I, --interactive generate interactive scanner (opposite of -B)\n" " --yylineno track line count in yylineno\n" "\n" "Generated code:\n" " -+, --c++ generate C++ scanner class\n" " -Dmacro[=defn] #define macro defn (default defn is '1')\n" " -L, --noline suppress #line directives in scanner\n" " -P, --prefix=STRING use STRING as prefix instead of \"yy\"\n" " -R, --reentrant generate a reentrant C scanner\n" " --bison-bridge scanner for bison pure parser.\n" " --bison-locations include yylloc support.\n" " --stdinit initialize yyin/yyout to stdin/stdout\n" " --noansi-definitions old-style function definitions\n" " --noansi-prototypes empty parameter list in prototypes\n" " --nounistd do not include \n" " --noFUNCTION do not generate a particular FUNCTION\n" "\n" "Miscellaneous:\n" " -c do-nothing POSIX option\n" " -n do-nothing POSIX option\n" " -?\n" " -h, --help produce this help message\n" " -V, --version report %s version\n" msgstr "" "Genereert patroonherkenningsprogramma's.\n" "\n" "Tabelcompressie:\n" " -Ca, --align meer geheugen gebruiken voor beter uitgelijnde tabellen\n" " -Ce, --ecs equivalentieklassen construeren\n" " -Cf tabellen niet comprimeren; de -f-representatie " "gebruiken\n" " -CF tabellen niet comprimeren; de -F-representatie " "gebruiken\n" " -Cm, --meta-ecs meta-equivalentieklassen construeren\n" " -Cr, --read read() gebruiken in plaats van stdio voor scannerinvoer\n" " -f, --full een snelle, grote scanner genereren (zelfde als -Cfr)\n" " -F, --fast alternatieve tabelrepresentatie gebruiken (als -CFr)\n" " -Cem standaardcompressie (zelfde als --ecs --meta-ecs)\n" "\n" "Debuggen:\n" " -d, --debug debugmodus in scanner aanzetten\n" " -b, --backup terugstap-informatie naar %s schrijven\n" " -p, --perf-report prestatierapport naar standaardfoutuitvoer schrijven\n" " -s, --nodefault standaardvoorschrift dat onherkende tekst ECHO-t " "uitzetten\n" " -T, --trace %s uitvoeren in tracemodus\n" " -w, --nowarn geen waarschuwingen geven\n" " -v, --verbose scannerstatistieken naar standaarduitvoer schrijven\n" "\n" "Bestanden:\n" " -o, --outfile=BESTAND dit uitvoerbestand gebruiken\n" " -S, --skel=BESTAND dit skeletbestand gebruiken\n" " -t, --stdout scanner naar standaarduitvoer schrijven, niet naar " "%s\n" " --yyclass=NAAM naam van de C++-klasse\n" " --header-file=BESTAND behalve de scanner ook een C-headerbestand " "maken\n" " --tables-file[=BESTAND] tabellen schrijven (naar dit BESTAND)\n" "\n" "Scannergedrag:\n" " -7, --7bit een 7-bits-scanner genereren\n" " -8, --8bit een 8-bits-scanner genereren\n" " -B, --batch een batch-scanner genereren (tegengestelde van -" "I)\n" " -i, --case-insensitive hoofd-/kleine letters in patronen negeren\n" " -l, --lex-compat maximale compatibiliteit met de originele 'lex'\n" " -X, --posix-compat maximale compatibiliteit met de POSIX 'lex'\n" " -I, --interactive een interactieve scanner genereren\n" " --yylineno het regelaantal bijhouden in yylineno\n" "\n" "Gegenereerde code:\n" " -+, --c++ een C++-scannerklasse genereren\n" " -Dmacro[=defn] #define macro defn (standaard defn is '1')\n" " -L, --noline de #line-commando's in de scanner onderdrukken\n" " -P, --prefix=STRING STRING gebruiken als prefix in plaats van \"yy\"\n" " -R, --reentrant een herintreedbare C-scanner genereren\n" " --bison-bridge een scanner voor zuivere bison-ontleder genereren\n" " --bison-locations ondersteuning voor yylloc opnemen\n" " --stdinit yyin/yyout naar standaardin/uitvoer initialiseren\n" " --noansi-definitions oude-stijl functiedefinities\n" " --noansi-prototypes lege parameterlijst in prototypes\n" " --nounistd niet insluiten\n" " --noFUNCTIE specifieke FUNCTIE niet genereren\n" "\n" "Varia:\n" " -c nietsdoende POSIX-optie\n" " -n nietsdoende POSIX-optie\n" " -?\n" " -h, --help deze hulptekst tonen\n" " -V, --version de versie van %s tonen\n" #: misc.c:65 msgid "allocation of sko_stack failed" msgstr "geheugenreservering voor 'sko_stack' is mislukt" #: misc.c:102 misc.c:128 #, c-format msgid "name \"%s\" ridiculously long" msgstr "naam is belachelijk lang: \"%s\"" #: misc.c:177 msgid "memory allocation failed in allocate_array()" msgstr "geheugenreservering is mislukt in allocate_array()" #: misc.c:230 #, c-format msgid "bad character '%s' detected in check_char()" msgstr "onjuist teken '%s' in check_char()" #: misc.c:235 #, c-format msgid "scanner requires -8 flag to use the character %s" msgstr "scanner heeft de optie '-8' nodig om teken %s te kunnen gebruiken" #: misc.c:268 msgid "dynamic memory failure in copy_string()" msgstr "dynamische geheugenfout in copy_string()" #: misc.c:367 #, c-format msgid "%s: fatal internal error, %s\n" msgstr "%s: **fatale interne programmafout**, %s\n" #: misc.c:803 msgid "attempt to increase array size failed" msgstr "vergroting van array is mislukt" #: misc.c:930 msgid "bad line in skeleton file" msgstr "onjuiste regel in skeletbestand" #: misc.c:979 msgid "memory allocation failed in yy_flex_xmalloc()" msgstr "geheugenreservering is mislukt in yy_flex_xmalloc()" #: nfa.c:104 #, c-format msgid "" "\n" "\n" "********** beginning dump of nfa with start state %d\n" msgstr "" "\n" "\n" "********** begin van dump van NFA met starttoestand %d\n" #: nfa.c:115 #, c-format msgid "state # %4d\t" msgstr "toestand # %4d\t" #: nfa.c:130 #, c-format msgid "********** end of dump\n" msgstr "********** einde van de dump\n" #: nfa.c:174 msgid "empty machine in dupmachine()" msgstr "lege machine in dupmachine()" #: nfa.c:240 #, c-format msgid "Variable trailing context rule at line %d\n" msgstr "Voorschrift met variabele nakomende context op regel %d\n" #: nfa.c:364 msgid "bad state type in mark_beginning_as_normal()" msgstr "onjuist toestandstype in mark_beginning_as_normal()" #: nfa.c:609 #, c-format msgid "input rules are too complicated (>= %d NFA states)" msgstr "invoervoorschriften zijn te ingewikkeld (>= %d NFA-toestanden)" #: nfa.c:688 msgid "found too many transitions in mkxtion()" msgstr "te veel transities gevonden in mkxtion()" #: nfa.c:714 #, c-format msgid "too many rules (> %d)!" msgstr "te veel voorschriften (> %d)!" #: parse.y:159 msgid "unknown error processing section 1" msgstr "onbekende fout tijdens verwerken van sectie 1" #: parse.y:184 parse.y:351 msgid "bad start condition list" msgstr "onjuiste lijst van startvoorwaarden" #: parse.y:315 msgid "unrecognized rule" msgstr "onbekend voorschrift" #: parse.y:434 parse.y:447 parse.y:516 msgid "trailing context used twice" msgstr "nakomende context twee keer gebruikt" #: parse.y:552 parse.y:562 parse.y:635 parse.y:645 msgid "bad iteration values" msgstr "onjuiste iteratiewaarden" #: parse.y:580 parse.y:598 parse.y:663 parse.y:681 msgid "iteration value must be positive" msgstr "iteratiewaarde moet positief zijn" #: parse.y:804 parse.y:814 #, c-format msgid "the character range [%c-%c] is ambiguous in a case-insensitive scanner" msgstr "" "het tekenbereik [%c-%c] is niet eenduidig in een hoofdletterongevoelige " "scanner" #: parse.y:819 msgid "negative range in character class" msgstr "negatief bereik in tekenklasse" #: parse.y:916 msgid "[:^lower:] is ambiguous in case insensitive scanner" msgstr "[:^lower:] is niet eenduidig in een hoofdletterongevoelige scanner" #: parse.y:922 msgid "[:^upper:] ambiguous in case insensitive scanner" msgstr "[:^upper:] is niet eenduidig in een hoofdletterongevoelige scanner" #: scan.l:75 scan.l:618 scan.l:676 msgid "Input line too long\n" msgstr "Invoerregel is te lang\n" #: scan.l:161 #, c-format msgid "malformed '%top' directive" msgstr "verkeerde opbouw van '%top'-commando" #: scan.l:183 #, no-c-format msgid "unrecognized '%' directive" msgstr "onbekend '%'-commando" #: scan.l:192 msgid "Definition name too long\n" msgstr "Definitienaam is te lang\n" #: scan.l:284 msgid "Unmatched '{'" msgstr "Ongepaarde '{'" #: scan.l:300 #, c-format msgid "Definition value for {%s} too long\n" msgstr "Definitiewaarde voor {%s} is te lang\n" #: scan.l:317 msgid "incomplete name definition" msgstr "onvolledige naamsdefinitie" #: scan.l:443 msgid "Option line too long\n" msgstr "Optiesregel is te lang\n" #: scan.l:451 #, c-format msgid "unrecognized %%option: %s" msgstr "onbekende %%option: %s" #: scan.l:633 scan.l:800 msgid "bad character class" msgstr "onjuiste tekenklasse" #: scan.l:683 #, c-format msgid "undefined definition {%s}" msgstr "ongedefinieerde definitie {%s}" #: scan.l:755 #, c-format msgid "bad : %s" msgstr "onjuiste : %s" #: scan.l:768 msgid "missing quote" msgstr "ontbrekend aanhalingsteken" #: scan.l:834 #, c-format msgid "bad character class expression: %s" msgstr "onjuiste expressie '%s' in tekenklasse" #: scan.l:856 msgid "bad character inside {}'s" msgstr "onjuist teken tussen {}'s" #: scan.l:862 msgid "missing }" msgstr "ontbrekende }" #: scan.l:940 msgid "EOF encountered inside an action" msgstr "EOF werd bereikt tijdens een actie" #: scan.l:945 msgid "EOF encountered inside pattern" msgstr "EOF werd bereikt binnen een patroon" #: scan.l:967 #, c-format msgid "bad character: %s" msgstr "onjuist teken: %s" #: scan.l:996 #, c-format msgid "can't open %s" msgstr "kan %s niet openen" #: scanopt.c:291 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Gebruik: %s [OPTIE...]\n" #: scanopt.c:564 #, c-format msgid "option `%s' doesn't allow an argument\n" msgstr "optie '%s' staat geen argument toe\n" #: scanopt.c:569 #, c-format msgid "option `%s' requires an argument\n" msgstr "optie '%s' vereist een argument\n" #: scanopt.c:573 #, c-format msgid "option `%s' is ambiguous\n" msgstr "optie '%s' is niet eenduidig\n" #: scanopt.c:577 #, c-format msgid "Unrecognized option `%s'\n" msgstr "Onbekende optie '%s'\n" #: scanopt.c:581 #, c-format msgid "Unknown error=(%d)\n" msgstr "Onbekende fout=(%d)\n" #: sym.c:100 msgid "symbol table memory allocation failed" msgstr "geheugenreservering voor symbolentabel is mislukt" #: sym.c:202 msgid "name defined twice" msgstr "naam is twee keer gedefinieerd" #: sym.c:253 #, c-format msgid "start condition %s declared twice" msgstr "startvoorwaarde %s is twee keer vermeld" #: yylex.c:56 msgid "premature EOF" msgstr "voortijdig einde van bestand" #: yylex.c:198 #, c-format msgid "End Marker\n" msgstr "Eindmarkering\n" #: yylex.c:204 #, c-format msgid "*Something Weird* - tok: %d val: %d\n" msgstr "*Iets Raars* - token: %d waarde:%d\n" flex-2.5.39/po/vi.gmo0000644000175000017500000005746012314621666014605 0ustar srivastasrivastaT 7  AOh/'.> S"_#  *3'[z!C$)C%]"#FOn`"&0,+] $" )/Y4y5E/*.Z&(+"6>!u".Lg #' Kl : #(#$ $26$#i$+$$&$$ % %:%Y%*q%C%3%0&%E&k&%&&+&&" '-'G'Y'n'','3'/( 2(@((\((((+(( )'')O)m)))))**<*'N*v*$*2* * +,%+-R+ + +++!+&+,!*, L,Z,0q,!, ,,, -% -F3-z----"-..6.<H.-..J0001561El1E11F29^22(2@23/)3#Y3V}3c3$84]4Jx4L4:58K5$515"5,5+6>6[6Iy6/6 6f7>{7D7H7PH88,8.88396G9H~9C9l :?x:X:P;?b;:;<;?<8Z<7<<?R=+==== >$> A>b>>>>!>> ?8?-W?9?+???N8NNN?OIWOAO-OHPZPqP"P-P!P<PB2QWuQWQ6%R+\R6R7RGR?S$RS4wSS S-S. T];T>TST,U,AUCnUU3UCU%@V%fVLV2V, W*9W1dW0W-W(W'X'FX2nX)X=XK Y.UY-YRY?ZEZ `ZjZ+Z(Z.Z![)0[&Z[&[:[@[$\"9\'\\\=\g\>].^]&]'],]6 ^:@^-{^]^(_%ZC9F"1]dB!)Um:&aT -+@Hoiz[8D}fn2;YOlc<NR=(_r^P *`J,06M Lx{' ?bIe~V/A GwWjQp3t7y4S v>Kq\|sg5hXEu.k#$ ********** beginning dump of nfa with start state %d DFA Dump: Equivalence Classes: Meta-Equivalence Classes: jam-transitions: EOF %d (%d saved) hash collisions, %d DFAs equal %d backing-up (non-accepting) states %d empty table entries %d epsilon states, %d double epsilon states %d protos created %d rules %d sets of reallocations needed %d state/nextstate pairs created %d table entries %d templates created, %d uses %d total table entries needed %d/%d (peak %d) nxt-chk entries created %d/%d (peak %d) template nxt-chk entries created %d/%d DFA states (%d words) %d/%d NFA states %d/%d base-def entries created %d/%d character classes needed %d/%d words of storage, %d reused %d/%d equivalence classes created %d/%d meta-equivalence classes created %d/%d start conditions %d/%d unique/duplicate transitions Beginning-of-line patterns used Compressed tables always back-up No backing up no character classes scanner options: - and may be the actual source of other reported performance penalties associated rule line numbers: out-transitions: %%option yylineno entails a performance penalty ONLY on rules that can match newline characters %array incompatible with -+ option%d backing up (non-accepting) states. %option yyclass only meaningful for C++ scanners%option yylineno cannot be used with REJECT%s %s %s version %s usage statistics: %s: fatal internal error, %s ********** end of dump *Something Weird* - tok: %d val: %d -Cf and -CF are mutually exclusive-Cf/-CF and -Cm don't make sense together-Cf/-CF and -I are incompatible-Cf/-CF are incompatible with lex-compatibility mode-I (interactive) entails a minor performance penalty -l AT&T lex compatibility option entails a large performance penalty -s option given but default rule can be matchedAllocation of buffer for line directive failedAllocation of buffer for m4 def failedAllocation of buffer for m4 undef failedAllocation of buffer to print string failedCan't use -+ with -CF optionCan't use -+ with -l optionCan't use --reentrant or --bison-bridge with -l optionCan't use -f or -F with -l optionCompressed tables always back up. Could not write ecstblCould not write eoltblCould not write ftblCould not write ssltblCould not write yyacc_tblCould not write yyacclist_tblCould not write yybase_tblCould not write yychk_tblCould not write yydef_tblCould not write yymeta_tblCould not write yynultrans_tblCould not write yynxt_tblCould not write yynxt_tbl[][]Definition name too long Definition value for {%s} too long EOF encountered inside an actionEOF encountered inside patternEnd Marker Generates programs that perform pattern-matching on text. Table Compression: -Ca, --align trade off larger tables for better memory alignment -Ce, --ecs construct equivalence classes -Cf do not compress tables; use -f representation -CF do not compress tables; use -F representation -Cm, --meta-ecs construct meta-equivalence classes -Cr, --read use read() instead of stdio for scanner input -f, --full generate fast, large scanner. Same as -Cfr -F, --fast use alternate table representation. Same as -CFr -Cem default compression (same as --ecs --meta-ecs) Debugging: -d, --debug enable debug mode in scanner -b, --backup write backing-up information to %s -p, --perf-report write performance report to stderr -s, --nodefault suppress default rule to ECHO unmatched text -T, --trace %s should run in trace mode -w, --nowarn do not generate warnings -v, --verbose write summary of scanner statistics to stdout Files: -o, --outfile=FILE specify output filename -S, --skel=FILE specify skeleton file -t, --stdout write scanner on stdout instead of %s --yyclass=NAME name of C++ class --header-file=FILE create a C header file in addition to the scanner --tables-file[=FILE] write tables to FILE Scanner behavior: -7, --7bit generate 7-bit scanner -8, --8bit generate 8-bit scanner -B, --batch generate batch scanner (opposite of -I) -i, --case-insensitive ignore case in patterns -l, --lex-compat maximal compatibility with original lex -X, --posix-compat maximal compatibility with POSIX lex -I, --interactive generate interactive scanner (opposite of -B) --yylineno track line count in yylineno Generated code: -+, --c++ generate C++ scanner class -Dmacro[=defn] #define macro defn (default defn is '1') -L, --noline suppress #line directives in scanner -P, --prefix=STRING use STRING as prefix instead of "yy" -R, --reentrant generate a reentrant C scanner --bison-bridge scanner for bison pure parser. --bison-locations include yylloc support. --stdinit initialize yyin/yyout to stdin/stdout --noansi-definitions old-style function definitions --noansi-prototypes empty parameter list in prototypes --nounistd do not include --noFUNCTION do not generate a particular FUNCTION Miscellaneous: -c do-nothing POSIX option -n do-nothing POSIX option -? -h, --help produce this help message -V, --version report %s version Input line too long Internal error. flexopts are malformed. No backing up. Option line too long Options -+ and --reentrant are mutually exclusive.REJECT cannot be used with -f or -FREJECT entails a large performance penalty State #%d is non-accepting - Try `%s --help' for more information. Unknown error=(%d) Unmatched '{'Unrecognized option `%s' Usage: %s [OPTIONS] [FILE]... Usage: %s [OPTIONS]... Variable trailing context rule at line %d Variable trailing context rules entail a large performance penalty [:^lower:] is ambiguous in case insensitive scanner[:^upper:] ambiguous in case insensitive scannerallocation of macro definition failedallocation of sko_stack failedattempt to increase array size failedbad : %sbad character '%s' detected in check_char()bad character classbad character class expression: %sbad character inside {}'sbad character: %sbad iteration valuesbad line in skeleton filebad start condition listbad state type in mark_beginning_as_normal()bad transition character detected in sympartition()bison bridge not supported for the C++ scanner.can't open %scan't open skeleton file %sconsistency check failed in epsclosure()could not create %scould not create backing-up info file %scould not create unique end-of-buffer statecould not write tables headerdangerous trailing contextdynamic memory failure in copy_string()empty machine in dupmachine()error closing backup file %serror closing output file %serror closing skeleton file %serror creating header file %serror deleting output file %serror writing backup file %serror writing output file %sfatal parse errorfound too many transitions in mkxtion()incomplete name definitioninput error reading skeleton file %sinput rules are too complicated (>= %d NFA states)iteration value must be positivemalformed '%top' directivememory allocation failed in allocate_array()memory allocation failed in yy_flex_xmalloc()missing quotemissing }name "%s" ridiculously longname defined twicenegative range in character classoption `%s' doesn't allow an argument option `%s' is ambiguous option `%s' requires an argument premature EOFrule cannot be matchedscanner requires -8 flag to use the character %sstart condition %s declared twicestate # %4d state # %d accepts: state # %d accepts: [%d] state # %d: symbol table memory allocation failedthe character range [%c-%c] is ambiguous in a case-insensitive scannertoo many rules (> %d)!trailing context used twiceundefined definition {%s}unknown -C option '%c'unknown error processing section 1unrecognized %%option: %sunrecognized '%' directiveunrecognized rulevariable trailing context rules cannot be used with -f or -Fyymore() entails a minor performance penalty Project-Id-Version: flex-2.5.38 Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net POT-Creation-Date: 2014-03-26 15:00-0400 PO-Revision-Date: 2014-02-14 08:17+0700 Last-Translator: Trần Ngọc Quân Language-Team: Vietnamese Language: vi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: Poedit 1.5.5 X-Poedit-SourceCharset: utf-8 ********** bắt đầu đổ NFA có trạng thái bắt đầu là %d Đổ DFA: Lớp tương đương: Lớp tương-đương-meta: chuyển tiếp kẹt: gặp kết thúc tập tin %d (%d được lưu) lần va chạm mã băm, %d DFA bằng nhau %d đang sao lưu các trạng thái (kiểu không chấp nhận) %d mục tin bảng trống %d trạng thái épxilông (ε), %d trạng thái épxilông đôi %d proto (khai báo nguyên mẫu) đã được tạo %d quy tắc cần %d tập hợp tái cấp phát %d cặp trạng_thái/trạng_thái_kế đã được tạo %d mục tin bảng %d mẫu đã được tạo, %d lần dùng cần tổng %d mục tin bảng %d/%d (tối đa %d) mục tin nxt-chk (kiểm tra kế tiếp) đã được tạo %d/%d (tối đa %d) mục tin biểu mẫu nxt-chk (kiểm tra kế tiếp) đã được tạo %d/%d trạng thái DFA (%d từ) %d/%d trạng thái NFA %d/%d mục tin base-def (định nghĩa cơ bản) đã được tạo %d/%d lớp ký tự cần %d/%d từ bộ nhớ, %d được dùng lại %d/%d lớp kiểu tương đương đã được tạo %d/%d lớp tương-đương-meta đã được tạo %d/%d điều kiện bắt đầu %d/%d việc chuyển tiếp duy nhất/trùng Dùng mẫu kiểu đầu dòng Bảng đã nén lúc nào cũng sao lưu Không sao lưu không có lớp ký tự tùy chọn bộ quét: — thì có lẽ thật gây ra trường hợp giảm hiệu suất khác số thứ tự dòng quy tắc tương ứng: việc chuyển tiếp xuất: %%tùy chọn "yylineno" giảm hiệu suất CHỈ với quy tắc khớp với ký tự dòng mới "%array" (mảng) không tương thích với tùy chọn "-+"%d đang sao lưu các trạng thái (kiểu không chấp nhận). %option (tùy chọn) "yyclass" chỉ có ý nghĩa với bộ quét C++Không cho phép dùng %option (tùy chọn) "yylineno" với REJECT (đẩy ra)%s %s %s phiên bản %s thống kê sử dụng: %s: gặp lỗi nôi bộ nghiêm trọng, %s ********** đổ xong * Điều lạ * — thẻ bài: %d giá trị: %d Hai tùy chọn "-Cf" and "-CF" loại từ lẫn nhauHai tùy chọn "-Cf/-CF" và "-Cm" với nhau thì không có ý nghĩaHai tùy chọn "-Cf/-CF" và "-I" không tương thích với nhauTùy chọn "-Cf/-CF" không tương thích với chế độ "lex-compatibility" (tương thích với lex)Tùy chọn "-I" (tương tác) giảm hiệu suất một ít Tùy chọn kiểu tương thích lex AT&T "-l" làm giảm hiệu suất rất nhiều đưa ra tùy chọn "-s" còn quy tắc mặc định có thể được khớpViệc phân bổ bộ đệm cho chỉ thị dòng gặp lỗiViệc phân bổ bộ đệm cho “m4 def” gặp lỗiViệc phân bổ bộ đệm cho “m4 undef” gặp lỗiViệc phân bổ bộ đệm cho lệnh in chuỗi gặp lỗiKhông thể dùng ký tự "-+" với tùy chọn "-CF"Không thể dùng ký tự "-+" với tùy chọn "-l"Không thể dùng đối số "--reentrant" (điều vào lại) hoặc "--bison-bridge" (chiếc cầu bison) với tùy chọn "-l"Không thể dùng cờ "-f" hoặc "-F" với tùy chọn "-l"Bảng đã nén lúc nào cũng sao lưu. Không thể ghi "ecstbl"Không thể ghi "eoltbl"Không thể ghi "ftbl"Không thể ghi "ssltbl"Không thể ghi "yyacc_tbl"Không thể ghi "yyacclist_tbl"Không thể ghi "yybase_tbl"Không thể ghi "yychk_tbl"Không thể ghi "yydef_tbl"Không thể ghi "yymeta_tbl"Không thể ghi "yynultrans_tbl"Không thể ghi "yynxt_tbl"Không thể ghi "yynxt_tbl[][]"Tên định nghĩa quá dài Giá trị định nghĩa cho {%s} quá dài gặp kết thúc tập tin ở trong một hành độnggặp kết thúc tập tin ở trong mẫuDấu kết thúc Tạo ra chương trình để thực hiện tiến trình khớp mẫu trên văn bản thường. Cách nén bảng: -Ca, --align thoả hiệp giữa bảng lớn hơn và độ _canh lề_ bộ nhớ khá hơn -Ce, --ecs cấu tạo lớp kiểu tương đương -Cf không nén bảng; dùng sự tiêu biểu "-f" -CF không nén bảng; dùng sự cách tiêu biểu "-F" -Cm, --meta-ecs cấu tạo lớp kiểu meta tương đương -Cr, --read dùng chức năng read() thay thế thiết bị nhập/xuất chuẩn để nhập bộ quét -f, --full tạo ra bộ quét nhanh và lớn; bằng -Cfr (_đầy đủ_) -F, --fast dùng sự tiêu biểu bảng xen kẽ; bằng -CFr (_nhanh_) -Cem phương pháp nén mặc định; bằng "--ecs" "--meta-ecs") Gỡ lỗi: -d, --debug bật chế độ _gỡ lỗi_ trong bộ quét -b, --backup ghi thông tin _sao lưu_ vào %s -p, --perf-report ghi _thông báo hiệu suất_ vào thiết bị lỗi chuẩn -s, --nodefault thu hồi quy tắc _mặc định_ để ECHO (vọng) đoạn chưa khớp -T, --trace %s nên chạy trong chế độ theo _dấu vết_ -w, --nowarn _không_ tạo ra lời _cảnh báo_ -v, --verbose ghi tóm tắt các thống kê bộ quét vào thiết bị xuất chuẩn (_chi tiêt_) Tập tin: -o, --outfile=TẬP_TIN ghi rõ tên _tập tin xuất_ -S, --skel=TẬP_TIN ghi rõ tập tin _khung sườn_ -t, --stdout ghi bộ quét ra _thiết bị xuất chuẩn_ thay thế ra %s --yyclass=TÊN tên của _lớp_ C++ --header-file=TẬP_TIN tạo _tập tin phần đầu_ C thêm vào bộ quét --tables-file[=TẬP_TIN] ghi các bảng vào TẬP_TIN này Ứng xử của bộ quét: -7, --7bit tạo ra bộ quét kiểu 7-bit -8, --8bit tạo ra bộ quét kiểu 8-bit -B, --batch tạo ra bộ quét _bó_ (ngược với "-I") -i, --case-insensitive _không phân biệt HOA/thường_ trong mẫu -l, --lex-compat độ _tương thích_ tối đa với lex gốc -X, --posix-compat độ _tương thích_ tối đa với lex _POSIX_ -I, --interactive tạo ra bộ quét _tương tác_ (ngược với "-B") --yylineno theo dõi số đếm số dòng trong yylineno Mã đã tạo ra : -+, --c++ tạo ra hang bộ quét kiểu C++ -Dmacro[=định_nghĩa] _định nghĩa_ cho lệnh #define (mặc định là "1") -L, --noline thu hồi các chỉ thị #line trong bộ quét -P, --prefix=CHUỖI dùng CHUỖI này là _tiền tố_ thay thế "yy" -R, --reentrant tạo ra một bộ quét C kiểu _vào lại_ --bison-bridge bộ quét cho trình phân tách thuần tuý kiểu bison. --bison-locations gồm khả năng hỗ trợ yylloc (_địa điểm_). --stdinit khởi động yyin/yyout vào thiết bị nhập/xuất chuẩn --noansi-definitions _lời định nghĩa_ chức năng kiểu cũ (_không ANSI_) --noansi-prototypes danh sách tham số trống trong _khai báo nghi thức_ (_không ANSI_) --nounistd _không_ bao gồm --noCHỨC_NĂNG không tạo ra một CHỨC NĂNG cá biệt Lặt vặt: -c tùy chọn POSIX không làm gì -n tùy chọn POSIX không làm gì -? -h, --help hiển thị _trợ giúp_ này -V, --version thông báo phiên bản %s dòng nhập quá dài Gặp lỗi nội bộ vì những flexopts sai dạng. Không sao lưu. dòng tùy chọn quá dài Hai tùy chọn "- +" và "--reentrant" xung đột với nhau.Không cho phép dùng REJECT (đẩy ra) với tùy chọn "-f" hay "-F"REJECT (đẩy ra) làm suy giảm hiệu suất nghiêm trọng Trạng thái #%d là không chấp nhận - Hãy thử lệnh "%s --help" (trợ giúp) để xem thêm thông tin. Không rõ lỗi=(%d) Chưa khớp "{"Không nhận ra tùy chọn "%s" Cách dùng: %s [TÙY_CHỌN] [TẬP_TIN]... Cách dùng: %s [TÙY_CHỌN]... Gặp quy tắc ngữ cảnh theo sau biến tại dòng %d Quy tắc ngữ cảnh theo sau biến rất giảm hiệu suất [:^lower:] là chưa rõ ràng trong trường hợp quét bỏ qua chữ HOA/thường[:^upper:] là chưa rõ ràng trong trường hợp quét bỏ qua chữ HOA/thườngviệc phân bổ cho định nghĩa macro gặp lỗiviệc phân bổ cho sko_stack gặp lỗiviệc thử tăng kích cỡ mảng đã thất bại (điệu kiện bắt đầu) sai: %sphát hiện ký tự sai "%s" trong check_char() (kiểm tra ký tự)lớp ký tự saibiểu thức lớp ký tự sai: %scó ký tự sai ở trong hai dấu ngoặc móc {}ký tự sai: %sgặp giá trị lặp lại saigặp dòng sai trong tập tin khung sườndanh sách điều kiện bắt đầu là saikiểu trạng thái sai trong mark_beginning_as_normal() (đánh dấu đầu là thường)phát hiện ký tự chuyển tiếp sai trong sympartition()bison bridge (chiếc cầu bison) không được hỗ trợ với bộ quét C++.không thể mở %skhông thể mở tập tin khung sườn %sviệc kiểm tra sự thống nhất bị lỗi trong epsclosure()không thể tạo %skhông thể tạo tập tin thông tin sao lưu %skhông thể tạo trạng thái kết-thúc-bộ-đệm duy nhấtkhông thể ghi phần đầu bảngngữ cảnh theo sau là nguy hiểmbộ nhớ động đã thất bại trong copy_string() (sao chép chuỗi)máy trống trong dupmachine() (nhân đôi máy)gặp lỗi khi đóng tập tin sao lưu %sgặp lỗi khi đóng tập tin xuất %sgặp lỗi khi đóng tập tin khung sườn %sgặp lỗi khi tạo tập tin phần đầu %sgặp lỗi khi xoá bỏ tập tin xuất %sgăp lỗi khi ghi tập tin sao lưu %sgặp lỗi khi ghi tập tin xuất %sgặp lỗi phân tích nghiêm trọnggặp quá nhiều chuyển tiếp trong mkxtion()lời đinh nghĩa tên chưa hoàn tấtgặp lỗi nhập vào khi đọc tập tin khung sườn %scác quy tắc đầu vào là quá phức tạp (≥ %d trạng thái NFA)giá trị lặp lại phải là số dươngchỉ thị kiểu "%top" (đầu) dạng saiviệc phân chia bộ nhớ bị lỗi trong allocate_array() (phân bổ mảng)việc phân bổ bộ nhớ bị lỗi trong yy_flex_xmalloc()thiếu dấu trích dẫnthiếu }tên "%s" là dài nhố nhăngtên đã được định nghĩa hai lầngặp phạm vi âm trong lớp ký tựtùy chọn "%s" không cho phép đối số tùy chọn "%s" chưa rõ ràng tùy chọn "%s" cần một đối số gặp kết thúc tập tin quá sớmquy tắc không thể được khớpbộ quét cần thiết cờ "-8" để dùng ký tự %sđiều kiện bắt đầu %s đã được khai báo hai lầntrạng thái # %4d trạng thái # %d chấp nhận: trạng thái # %d chấp nhận: [%d] trạng thái# %d: gặp lỗi khi phân bổ bộ nhớ của bảng ký hiệuphạm vi ký tự [%c-%c] là chưa rõ ràng trong trường hợp quét bỏ qua chữ HOA/thườngquá nhiều quy tắc (> %d) !ngữ cảnh theo sau được dùng hai lầnchưa định nghĩa định danh {%s}không hiểu tùy chọn "-C" là "%c"gặp lỗi không rõ khi xử lý phần 1gặp tùy chọn %% không được nhận dạng: %sgặp chỉ thị kiểu "%" không được nhận dạnggặp quy tắc không được thừa nhậnkhông cho phép dùng quy tắc ngữ cảnh theo sau biến với tùy chọn "-f" hay "-F"yymore() giảm hiệu suất một ít flex-2.5.39/po/es.po0000644000175000017500000011704512314621665014425 0ustar srivastasrivasta# Mensajes en espaol para GNU flex. # Copyright (C) 2002 The Flex Project # # Nicols Garca-Pedrajas , 1997. # Gracias a Nicols Fernndez Garca que me ha sugerido algunas ideas. msgid "" msgstr "" "Project-Id-Version: GNU flex 2.5.8\n" "Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2014-03-26 15:00-0400\n" "PO-Revision-Date: 2003-01-02 12:06+0100\n" "Last-Translator: Nicols Garca-Pedrajas \n" "Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8-bit\n" #: buf.c:78 msgid "Allocation of buffer to print string failed" msgstr "" #: buf.c:100 msgid "Allocation of buffer for line directive failed" msgstr "" #: buf.c:177 msgid "Allocation of buffer for m4 def failed" msgstr "" #: buf.c:197 msgid "Allocation of buffer for m4 undef failed" msgstr "" # El estado (?) sv #: dfa.c:61 #, c-format msgid "State #%d is non-accepting -\n" msgstr "El estado #%d es no-aceptar -\n" #: dfa.c:124 msgid "dangerous trailing context" msgstr "contexto posterior peligroso" #: dfa.c:166 #, c-format msgid " associated rule line numbers:" msgstr " nmeros de lnea asociados a la regla:" #: dfa.c:202 #, c-format msgid " out-transitions: " msgstr " fin de transiciones: " #: dfa.c:210 #, c-format msgid "" "\n" " jam-transitions: EOF " msgstr "" "\n" " transiciones de bloqueo: fin de archivo (EOF)" # Teste no lo he odo en mi vida. te suena mal test a secas? # o quiz examen de consistencia? em # Pongo comillas a la funcin em # Con teste me estoy haciendo famoso, cada vez que lo escribo # me lo preguntan. Lo que ocurre es que teste es el trmino que ha # aceptado la Real Academia, por eso creo que debamos usarlo. ng # Bueno, no vamos a ser ms papistas que el Papa, pero que a m me # sigue sonando raro em # pues el verbo es testar, cmo te suena? ng+ # # Sugiero usar prueba o comprobacin. sv #: dfa.c:341 msgid "consistency check failed in epsclosure()" msgstr "el teste de consistencia fall en `epsclosure()'" # Qu tal volcado? em # ok, a m tampoco me gustaba descarga ng #: dfa.c:429 msgid "" "\n" "\n" "DFA Dump:\n" "\n" msgstr "" "\n" "\n" "Volcado AFD:\n" "\n" #: dfa.c:604 msgid "could not create unique end-of-buffer state" msgstr "no se pudo crear un estado nico de final-de-buffer" #: dfa.c:625 #, c-format msgid "state # %d:\n" msgstr "estado # %d:\n" #: dfa.c:785 msgid "Could not write yynxt_tbl[][]" msgstr "" #: dfa.c:1049 msgid "bad transition character detected in sympartition()" msgstr "carcter de transicin errneo detectado en sympartition()" #: gen.c:478 msgid "" "\n" "\n" "Equivalence Classes:\n" "\n" msgstr "" "\n" "\n" "Clases de equivalencia:\n" "\n" #: gen.c:662 gen.c:691 gen.c:1215 #, c-format msgid "state # %d accepts: [%d]\n" msgstr "el estado # %d acepta: [%d]\n" #: gen.c:1110 #, c-format msgid "state # %d accepts: " msgstr "el estado # %d acepta: " #: gen.c:1157 msgid "Could not write yyacclist_tbl" msgstr "" #: gen.c:1233 msgid "Could not write yyacc_tbl" msgstr "" #: gen.c:1248 gen.c:1633 gen.c:1656 #, fuzzy msgid "Could not write ecstbl" msgstr "no se pudo crear %s" # No sera mejor "MetaEquivalencia" o "Meta-Equivalencia"? sv # yo prefiero como est, es el mismo caso de metafsica ng+ #: gen.c:1271 msgid "" "\n" "\n" "Meta-Equivalence Classes:\n" msgstr "" "\n" "\n" "Clases de metaequivalencia:\n" #: gen.c:1293 msgid "Could not write yymeta_tbl" msgstr "" #: gen.c:1354 #, fuzzy msgid "Could not write yybase_tbl" msgstr "no se pudo crear %s" #: gen.c:1388 msgid "Could not write yydef_tbl" msgstr "" #: gen.c:1428 msgid "Could not write yynxt_tbl" msgstr "" #: gen.c:1464 msgid "Could not write yychk_tbl" msgstr "" #: gen.c:1618 gen.c:1647 #, fuzzy msgid "Could not write ftbl" msgstr "no se pudo crear %s" #: gen.c:1624 #, fuzzy msgid "Could not write ssltbl" msgstr "no se pudo crear %s" #: gen.c:1675 #, fuzzy msgid "Could not write eoltbl" msgstr "no se pudo crear %s" #: gen.c:1735 msgid "Could not write yynultrans_tbl" msgstr "" # coincidencia?, es la traduccin habitual em # La traduccin de match no me gusta pero no encuentro otra # Sugerencia: satisface, encaja, es aplicable. sv # match se traduce por emparejar cuando se usa para emparejar una llave # abierta con una cerrada, por ejemplo, pero no cuando se trata de ver # si una regla "matches" o no "matches". # creo que aplicar no qeuda mal ng+ #: main.c:191 msgid "rule cannot be matched" msgstr "la regla no se puede aplicar" # ## re-redacto el mensaje. sv #: main.c:196 msgid "-s option given but default rule can be matched" msgstr "" "se ha especificado la opcin -s pero se puede aplicar la regla por defecto" #: main.c:236 msgid "Can't use -+ with -l option" msgstr "No se puede usar -+ con la opcin -l" #: main.c:239 msgid "Can't use -f or -F with -l option" msgstr "No se pueden usar las opciones -f o -F con la opcin -l" #: main.c:243 #, fuzzy msgid "Can't use --reentrant or --bison-bridge with -l option" msgstr "No se pueden usar las opciones -R o -Rb con la opcin -l" # juntos o juntas? # Creo que est bien as em # ok ng #: main.c:275 msgid "-Cf/-CF and -Cm don't make sense together" msgstr "-Cf/-CF y -Cm no tienen sentido juntos" # no se si poner y e # A m tambien me hubiese pasado, creo que est bien as em # entonces lo dejo ng # Yo creo que en este caso no hace falta porque se leera as: # "menos ce efe o menos ce efe mayscula y menos I son incompatibles". sv #: main.c:278 msgid "-Cf/-CF and -I are incompatible" msgstr "-Cf/-CF e -I son incompatibles" #: main.c:282 msgid "-Cf/-CF are incompatible with lex-compatibility mode" msgstr "-Cf/-CF son incompatibles con el modo de compatibilidad con lex" #: main.c:287 msgid "-Cf and -CF are mutually exclusive" msgstr "-Cf y -CF son mutuamente excluyentes" #: main.c:291 msgid "Can't use -+ with -CF option" msgstr "No se puede usar -+ con la opcin -CF" #: main.c:294 #, c-format msgid "%array incompatible with -+ option" msgstr "%array incompatible con la opcin -+" #: main.c:299 #, fuzzy msgid "Options -+ and --reentrant are mutually exclusive." msgstr "-+ y -R son mutuamente excluyentes" #: main.c:302 msgid "bison bridge not supported for the C++ scanner." msgstr "" #: main.c:357 main.c:403 #, c-format msgid "could not create %s" msgstr "no se pudo crear %s" #: main.c:416 #, fuzzy msgid "could not write tables header" msgstr "no se pudo crear %s" # Lo mismo con skeleton, mscara o modelo em # lo mismo de antes ng # Lo mismo que antes :) em # idem ng+ #: main.c:420 #, c-format msgid "can't open skeleton file %s" msgstr "no se puede abrir el archivo de esquema %s" #: main.c:456 msgid "allocation of macro definition failed" msgstr "" # Skeleton se puede traducir por mscara, o por modelo em # S, lo estuve considerando. Pero el eskeleton file es un fichero que # le indica a flex la forma como tratar el fichero de entrada, y por eso me # perece que se puede poner mejor esquema, en el sentido de esquema de # comportamiento, como en algortmica ng # No me has convencido nada. Esquema es una cosa, y esquema de comportamiento # otra muy distinta. No hay mucha gente que asocie las dos cosas. # Por otro lado, ya que es una cosa que acepta slo a los muy avanzados # usuarios, creo que no hace falta buscar palabras que no significan lo que # son. Todos los que sepan qu es el eskeleton file sabrn lo que es el archivo # de mscara, pero por otro lado lo del archivo de esquema puede confundir # a los profanos en la materia, pensando que se refiere al propio scanner. # No le veo ninguna ventaja a usar esquema, y s dos inconvenientes em # que decida una tercera persona # # ## Cambio "leyendo" por "al leer", como en otras traducciones. sv #: main.c:504 #, c-format msgid "input error reading skeleton file %s" msgstr "error de entrada al leer el archivo de esquema %s" # Otra vez :) em #: main.c:508 #, c-format msgid "error closing skeleton file %s" msgstr "error al cerrar el archivo de esquema %s" # Lo mismo, archivo de seguridad? em #: main.c:693 #, c-format msgid "error creating header file %s" msgstr "error al crear el archivo de cabecera %s" #: main.c:701 #, c-format msgid "error writing output file %s" msgstr "error al escribir el archivo de salida %s" #: main.c:705 #, c-format msgid "error closing output file %s" msgstr "error al cerrar el archivo de salida %s" #: main.c:709 #, c-format msgid "error deleting output file %s" msgstr "error al borrar el archivo de salida %s" # Copia de seguridad? em # Sugerencia: No hay retroceso. sv #: main.c:716 #, c-format msgid "No backing up.\n" msgstr "Sin retroceso.\n" #: main.c:720 #, c-format msgid "%d backing up (non-accepting) states.\n" msgstr "%d estados de retroceso (no-aceptacin).\n" # Esta frase no me convence demasiado. Si tradujsemos de espaol # a ingls lo que hay ahora en espaol dira algo as como: # "Compressed tables are always back up" # (supuesto que back es irregular y su pasado/participio es back y no backed, # que ahora mismo no me acuerdo). sv #: main.c:724 #, c-format msgid "Compressed tables always back up.\n" msgstr "Las tablas comprimidas siempre implican un retraso.\n" # Lo mismo, archivo de seguridad? em #: main.c:727 #, c-format msgid "error writing backup file %s" msgstr "error al escribir el archivo de seguridad %s" # En todas las traducciones que ha aparecido # he sugerido el uso de copia de seguridad em # ok ng #: main.c:731 #, c-format msgid "error closing backup file %s" msgstr "error al cerrar el archivo de copia de seguridad %s" #: main.c:736 #, c-format msgid "%s version %s usage statistics:\n" msgstr "%s versin %s estadsticas de uso:\n" #: main.c:739 #, c-format msgid " scanner options: -" msgstr " opciones del analizador: -" # NFA significa non-deterministic finite automata, as que lo he traducido # por AFN #: main.c:818 #, c-format msgid " %d/%d NFA states\n" msgstr " %d/%d estados AFN\n" # DFA significa deterministic finite autmata, lo he traducido por AFD #: main.c:820 #, c-format msgid " %d/%d DFA states (%d words)\n" msgstr " %d/%d estados AFD {%d palabras}\n" #: main.c:822 #, c-format msgid " %d rules\n" msgstr " %d reglas\n" # Otra vez ;) em # modificado como en la anterior ng #: main.c:827 #, c-format msgid " No backing up\n" msgstr " Sin retroceso\n" #: main.c:831 #, c-format msgid " %d backing-up (non-accepting) states\n" msgstr " %d estados de retroceso (no-aceptacin)\n" # FIXME. # Informar al autor de que esta frase es casi idntica a una anterior, para # que slo haya que traducirla una vez. sv #: main.c:836 #, c-format msgid " Compressed tables always back-up\n" msgstr " Siempre se realiza copia de seguridad de las tablas comprimidas\n" # Lo mismo "se han usado patrones de comienzo de lnea". sv #: main.c:840 #, c-format msgid " Beginning-of-line patterns used\n" msgstr " Usados patrones de comienzo-de-lnea\n" #: main.c:842 #, c-format msgid " %d/%d start conditions\n" msgstr " %d/%d condiciones de activacin\n" # Lo de estados psilon lo entender un usuario avanzado, pero no s si uno # normal. # Yo soy uno normal, y no s lo que es em # en teora de autmatas no deterministas un estado psilon es un estado # en el que se puede realizar una transicin no trivial sin leer nada, # lo de doble psilon no lo he odo nunca. Creo que hay que dejar el trmino # tcnico. ng # Tu mandas, no tengo nada que decir a eso em #: main.c:846 #, c-format msgid " %d epsilon states, %d double epsilon states\n" msgstr " %d estados psilon, %d estados doble psilon\n" #: main.c:850 #, c-format msgid " no character classes\n" msgstr " sin clases de caracteres\n" #: main.c:854 #, c-format msgid " %d/%d character classes needed %d/%d words of storage, %d reused\n" msgstr "" " las clases de caracteres %d/%d necesitaron %d/%d palabras de\n" "almacenamiento, %d reutilizadas\n" # Frases como esta quedan algo sosas. # Qu tal " se han creado %d pares estado/estado-siguiente"? # Bueno, mejor no lo hagas hasta que no se sepa cmo queda al lado # de las otras. sv #: main.c:859 #, c-format msgid " %d state/nextstate pairs created\n" msgstr " %d pares estado/estado-siguiente creados\n" # ## Aado sendas eses, ya que son transiciones. sv #: main.c:862 #, c-format msgid " %d/%d unique/duplicate transitions\n" msgstr " %d/%d transiciones nicas/duplicadas\n" # Entradas 'en' la tabla em # s, mejor ng # Que haba antes? (entradas a la tabla?) # (entradas *de* la tabla me suena mejor) sv. #: main.c:867 #, c-format msgid " %d table entries\n" msgstr " %d entradas en la tabla\n" # ## pongo `comillas' en el base-def. sv #: main.c:875 #, c-format msgid " %d/%d base-def entries created\n" msgstr " %d/%d entradas `base-def' creadas\n" #: main.c:879 #, c-format msgid " %d/%d (peak %d) nxt-chk entries created\n" msgstr " %d/%d (pico %d) entradas nxt-chk creadas\n" #: main.c:883 #, c-format msgid " %d/%d (peak %d) template nxt-chk entries created\n" msgstr " %d/%d (pico %d) entradas de plantilla nxt-chk creadas\n" # entradas a la tabla o entradas de la tabla? sv #: main.c:887 #, c-format msgid " %d empty table entries\n" msgstr " %d entradas en la tabla vacas\n" #: main.c:889 #, c-format msgid " %d protos created\n" msgstr " %d prototipos creados\n" #: main.c:892 #, c-format msgid " %d templates created, %d uses\n" msgstr " %d plantillas creadas, %d usos\n" #: main.c:900 #, c-format msgid " %d/%d equivalence classes created\n" msgstr " %d/%d clases de equivalencia creadas\n" # "se han creado..." sv #: main.c:908 #, c-format msgid " %d/%d meta-equivalence classes created\n" msgstr " %d/%d clases de metaequivalencia creadas\n" # A veces he visto traducir hash (o hashing) por desmenuzamiento, pero no # me gusta # demasiado. De todas formas es un trmino bastante usado sin traducir. # A m hash no me sugiere nada . Piensa en algo mejor, de momento lo dejo # entre comillas em # en cierto modo 'colisiones en la localizacin' sera una idea parecida # quizs se pueda usar ng # Me gusta ms, pero ya te digo, soy un usuario de andar por casa, y sigo # sin entender qu es em # la idea del hash consiste en almacenar un registro (de cualquier tipo) en # un lugar que se puede determinar mediante una transformacin directa de su # clave, por eso si hay dos claves iguales hay una colisin, porque dos # registros van al mismo sitio ng+ #: main.c:914 #, c-format msgid " %d (%d saved) hash collisions, %d DFAs equal\n" msgstr "" " %d (%d almacenadas) colisiones de localizacin ('hash'), %d AFDs iguales\n" #: main.c:916 #, c-format msgid " %d sets of reallocations needed\n" msgstr " se necesitan %d conjuntos de relocalizacin\n" # Lo mismo que en otro sitio: table entries son entradas a la tabla o # de la tabla? sv #: main.c:918 #, c-format msgid " %d total table entries needed\n" msgstr " se necesitan %d entradas totales en la tabla\n" #: main.c:995 #, c-format msgid "Internal error. flexopts are malformed.\n" msgstr "Error interno. flexopts mal formadas.\n" #: main.c:1005 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Pruebe `%s --help' para ms informacin.\n" #: main.c:1062 #, c-format msgid "unknown -C option '%c'" msgstr "opcin -C desconocida '%c'" #: main.c:1191 #, c-format msgid "%s %s\n" msgstr "%s %s\n" # Creo que no existe traduccin de parse, en todo lo referente a compiladores # y autmatas yo siempre lo he visto as. # Existe alguna solucin a 'parse', qu tal # al analizar la sintaxis? em # pero es que el parse es slo una parte del analizador sintctico # aunque desde luego sera mucho ms sencillo de entender el mensaje ng # Habr que plantearlo en el consejo de ancianos de Spanglish, que a veces # resuelven mucho em # ok, cmo se le plantea? ng # Sugerencia: error fatal. sv # con comillas es un trmino medio. Lo de error grave fue una sugerencia # de Enrique, y croe que queda mejor. ng+ #: main.c:1466 msgid "fatal parse error" msgstr "error muy grave en el analizador sintctico" # Esto no tiene sentido. Uso flex a menudo, y no recuerdo haber visto # este mensaje nunca. Pero no me parezca que tenga mucho sentido as # em, a qu se est refiriendo? em # la verdad es que yo tampoco he usado esta opcin, as que he aplicado la # ley de Murphy, cuando todo lo dems falle, lea el manual. El archivo al # que se refiere informa sobre todas las reglas que obligan a un retroceso # del analizador, he rehecho el mensaje para que sea ms claro ng # # Pues si este "backing" se refiere a un retroceso del analizador, los # dems tambin, no? (y no a "copias de seguridad"). sv # # ## Perfecto !, pero ten cuidado con los espacios despues del comienzo de lnea # ## , ejemplo # ## # ## msgstr " bla bla .. \n" # ## "bla bla ..." # ## # ## Eso no es vlido ( solucin, usa emacs po-mode :) ) em # ## ok, ya estoy instalando linux otra vez ng+ #: main.c:1498 #, c-format msgid "could not create backing-up info file %s" msgstr "" "no se pudo crear el archivo de informacin de las reglas\n" "que producen un retroceso del analizador %s" #: main.c:1519 #, c-format msgid "-l AT&T lex compatibility option entails a large performance penalty\n" msgstr "" "-l la opcin de compatibilidad con AT&T lex implica una penalizacin del\n" "rendimiento muy alta\n" #: main.c:1522 #, c-format msgid " and may be the actual source of other reported performance penalties\n" msgstr "" " y puede ser el origen real de otras penalizaciones del rendimiento " "notificadas\n" #: main.c:1528 #, fuzzy, c-format msgid "" "%%option yylineno entails a performance penalty ONLY on rules that can match " "newline characters\n" msgstr "" "la %%opcin yylineno implica una penalizacin del rendimiento muy alta\n" #: main.c:1535 #, c-format msgid "-I (interactive) entails a minor performance penalty\n" msgstr "-I (interactivo) implica una pequea penalizacin del rendimiento\n" #: main.c:1540 #, c-format msgid "yymore() entails a minor performance penalty\n" msgstr "yymore() implica un pequea penalizacin del rendimiento\n" #: main.c:1546 #, c-format msgid "REJECT entails a large performance penalty\n" msgstr "REJECT implica una penalizacin del rendimiento muy alta\n" #: main.c:1551 #, c-format msgid "Variable trailing context rules entail a large performance penalty\n" msgstr "" "La existencia de reglas de contexto posterior variable implica una\n" "penalizacin del rendimiento muy alta\n" #: main.c:1563 msgid "REJECT cannot be used with -f or -F" msgstr "REJECT no se puede usar con -f o -F" #: main.c:1566 #, fuzzy, c-format msgid "%option yylineno cannot be used with REJECT" msgstr "la %opcin yylineno no se puede usar con -f o -F" #: main.c:1569 msgid "variable trailing context rules cannot be used with -f or -F" msgstr "" "las reglas de contexto posterior variable no se pueden usar con -f o -F" #: main.c:1692 #, c-format msgid "%option yyclass only meaningful for C++ scanners" msgstr "la %option yyclass slo tiene sentido para los analizadores en C++" #: main.c:1799 #, c-format msgid "Usage: %s [OPTIONS] [FILE]...\n" msgstr "Uso: %s [OPCIONES] [FICHERO]...\n" #: main.c:1802 #, fuzzy, c-format msgid "" "Generates programs that perform pattern-matching on text.\n" "\n" "Table Compression:\n" " -Ca, --align trade off larger tables for better memory alignment\n" " -Ce, --ecs construct equivalence classes\n" " -Cf do not compress tables; use -f representation\n" " -CF do not compress tables; use -F representation\n" " -Cm, --meta-ecs construct meta-equivalence classes\n" " -Cr, --read use read() instead of stdio for scanner input\n" " -f, --full generate fast, large scanner. Same as -Cfr\n" " -F, --fast use alternate table representation. Same as -CFr\n" " -Cem default compression (same as --ecs --meta-ecs)\n" "\n" "Debugging:\n" " -d, --debug enable debug mode in scanner\n" " -b, --backup write backing-up information to %s\n" " -p, --perf-report write performance report to stderr\n" " -s, --nodefault suppress default rule to ECHO unmatched text\n" " -T, --trace %s should run in trace mode\n" " -w, --nowarn do not generate warnings\n" " -v, --verbose write summary of scanner statistics to stdout\n" "\n" "Files:\n" " -o, --outfile=FILE specify output filename\n" " -S, --skel=FILE specify skeleton file\n" " -t, --stdout write scanner on stdout instead of %s\n" " --yyclass=NAME name of C++ class\n" " --header-file=FILE create a C header file in addition to the " "scanner\n" " --tables-file[=FILE] write tables to FILE\n" "\n" "Scanner behavior:\n" " -7, --7bit generate 7-bit scanner\n" " -8, --8bit generate 8-bit scanner\n" " -B, --batch generate batch scanner (opposite of -I)\n" " -i, --case-insensitive ignore case in patterns\n" " -l, --lex-compat maximal compatibility with original lex\n" " -X, --posix-compat maximal compatibility with POSIX lex\n" " -I, --interactive generate interactive scanner (opposite of -B)\n" " --yylineno track line count in yylineno\n" "\n" "Generated code:\n" " -+, --c++ generate C++ scanner class\n" " -Dmacro[=defn] #define macro defn (default defn is '1')\n" " -L, --noline suppress #line directives in scanner\n" " -P, --prefix=STRING use STRING as prefix instead of \"yy\"\n" " -R, --reentrant generate a reentrant C scanner\n" " --bison-bridge scanner for bison pure parser.\n" " --bison-locations include yylloc support.\n" " --stdinit initialize yyin/yyout to stdin/stdout\n" " --noansi-definitions old-style function definitions\n" " --noansi-prototypes empty parameter list in prototypes\n" " --nounistd do not include \n" " --noFUNCTION do not generate a particular FUNCTION\n" "\n" "Miscellaneous:\n" " -c do-nothing POSIX option\n" " -n do-nothing POSIX option\n" " -?\n" " -h, --help produce this help message\n" " -V, --version report %s version\n" msgstr "" "Genera programas que realizan emparejado de patrones en texto.\n" "\n" "Compresin de tablas: (por defecto es -Cem)\n" " -Ca, --align Renuncia a tablas grandes para mejorar la alineacin en " "memoria\n" " -Ce, --ecs construye clases de equivalencia\n" " -Cf no comprime las tablas; utiliza la representacin -f\n" " -CF no comprime las tablas; utiliza la representacin -F\n" " -Cm, --meta-ecs construye clases de metaequivalencia\n" " -Cr, --read utiliza read() en lugar de stdio para la entrada del " "analizador\n" " -f, --full genera una analizar rpido y grande. Igual que -Cfr\n" " -F, --fast usa la representacin de tablas alternativa. Igual que -" "CFr\n" " -Cem compresin por defecto (igual que --ecs --meta-ecs)\n" "\n" "Depurado:\n" " -d, --debug habilita el modo de depuracin en el analizador\n" " -b, --backup escribe informacin de seguridad en %s\n" " -p, --perf-report escribe un informe de rendimiento en stderr\n" " -s, --nodefault suprime la regla por defecto consistente en un " "ECHO de cualquier carcter sin emparejar\n" " -T, --trace %s debera ejecutarse en modo traza\n" " -w, --nowarn no genera avisos\n" " -v, --verbose escribe un resumen de estadsticas del analizador " "en stdout\n" "\n" "Ficheros:\n" " -o, --outfile=FILE especifica el nombre del fichero de salida\n" " -S, --skel=FILE especifica el fichero de esquema\n" " -t, --stdout escribe el analizador en stdout en lugar de en %s\n" " --yyclass=NAME nombre de la clase de C++\n" " --header=FILE crea un fichero de cabecera de C adems del " "analizador\n" "\n" "Comportamiento del analizador:\n" " -7, --7bit genera un analizador de 7 bits\n" " -8, --8bit genera un analizador de 8 bits\n" " -B, --batch genera un analizador en modo batch (opuesto a -I)\n" " -i, --case-insensitive ignora maysculas y minsculas en los patrones\n" " -l, --lex-compat compatibilidad mxima con lex\n" " -I, --interactive genera un analizador interactivo (opuesto a -B)\n" " --yylineno mantiene informacin del conteo de lneas en " "yylineno\n" "\n" "Cdigo generado:\n" " -+, --c++ genera una clase C++ con el analizador\n" " -Dmacro[=defn] #define macro defn (pro defecto defn es '1')\n" " -L, --noline suprime las directivas #line en el analizador\n" " -P, --prefix=STRING usa STRING como prefijo en lugar de \"yy\"\n" " -R, --reentrant generate un analizador C reentrante\n" " -Rb, --reentrant-bison analizador reentrante para un analizador lxico " "bison puro.\n" " --stdinit inicializa yyin/yyout a stdin/stdout\n" " --noFUNCTION no genera la funcin FUNCTION\n" "\n" "Miscelnea:\n" " -c opcin POSIX do-nothing\n" " -n opcin POSIX do-nothing\n" " -?\n" " -h, --help produce este mensaje de ayuda\n" " -V, --version informa de la versin %s\n" #: misc.c:65 msgid "allocation of sko_stack failed" msgstr "" #: misc.c:102 misc.c:128 #, c-format msgid "name \"%s\" ridiculously long" msgstr "nombre \"%s\" ridculamente grande" # Asignacin de memoria em # est unificado? ng # S, pero creo que slo por m. Normalmente esos mensajes # los d la biblioteca C antes em # ok ng+ #: misc.c:177 msgid "memory allocation failed in allocate_array()" msgstr "fall la asignacin de memoria en `allocate_array()'" #: misc.c:230 #, c-format msgid "bad character '%s' detected in check_char()" msgstr "carcter incorrecto '%s' detectado en `check_char()'" # he aadido el `poder' em # ok ng #: misc.c:235 #, c-format msgid "scanner requires -8 flag to use the character %s" msgstr "el analizador requiere la opcin -8 para poder usar el carcter %s" #: misc.c:268 msgid "dynamic memory failure in copy_string()" msgstr "fallo de la memoria dinmica en copy_string()" # Sugerencia: error fatal. sv #: misc.c:367 #, c-format msgid "%s: fatal internal error, %s\n" msgstr "%s: error interno muy grave, %s\n" #: misc.c:803 msgid "attempt to increase array size failed" msgstr "fall el intento de aumentar el tamao de la matriz" #: misc.c:930 msgid "bad line in skeleton file" msgstr "lnea incorrecta en el archivo de esquema" #: misc.c:979 msgid "memory allocation failed in yy_flex_xmalloc()" msgstr "la reserva de memoria fall en yy_flex_xmalloc()" #: nfa.c:104 #, c-format msgid "" "\n" "\n" "********** beginning dump of nfa with start state %d\n" msgstr "" "\n" "\n" "********** comenzando la descarga del AFN con el estado inicial %d\n" #: nfa.c:115 #, c-format msgid "state # %4d\t" msgstr "estado # %4d\t" # Sugerencia: volcado. sv # ok ng+ #: nfa.c:130 #, c-format msgid "********** end of dump\n" msgstr "********** fin de volcado\n" #: nfa.c:174 msgid "empty machine in dupmachine()" msgstr "mquina vaca en `dupmachine()'" #: nfa.c:240 #, c-format msgid "Variable trailing context rule at line %d\n" msgstr "Regla de contexto posterior variable en la lnea %d\n" #: nfa.c:364 msgid "bad state type in mark_beginning_as_normal()" msgstr "tipo de estado incorrecto en mark_beginning_as_normal()" #: nfa.c:609 #, c-format msgid "input rules are too complicated (>= %d NFA states)" msgstr "las reglas de entrada son demasiado complicadas (>= %d estados AFN)" # Sugerencia: se han encontrado... sv #: nfa.c:688 msgid "found too many transitions in mkxtion()" msgstr "encontradas demasiadas transiciones en mkxtion()" #: nfa.c:714 #, c-format msgid "too many rules (> %d)!" msgstr "demasiadas reglas (> %d)!" #: parse.y:159 msgid "unknown error processing section 1" msgstr "error desconocido en el proceso de la seccin 1" #: parse.y:184 parse.y:351 msgid "bad start condition list" msgstr "lista de condiciones de activacin incorrecta" #: parse.y:315 msgid "unrecognized rule" msgstr "regla no reconocida" #: parse.y:434 parse.y:447 parse.y:516 msgid "trailing context used twice" msgstr "contexto posterior usado dos veces" #: parse.y:552 parse.y:562 parse.y:635 parse.y:645 msgid "bad iteration values" msgstr "valores incorrectos para iteracin" #: parse.y:580 parse.y:598 parse.y:663 parse.y:681 msgid "iteration value must be positive" msgstr "los valores para iteracin deben ser positivos" #: parse.y:804 parse.y:814 #, c-format msgid "the character range [%c-%c] is ambiguous in a case-insensitive scanner" msgstr "" #: parse.y:819 msgid "negative range in character class" msgstr "rango negativo en clase caracteres" #: parse.y:916 #, fuzzy msgid "[:^lower:] is ambiguous in case insensitive scanner" msgstr "" "\t-i genera un analizador que no distingue entre maysculas y minsculas\n" #: parse.y:922 #, fuzzy msgid "[:^upper:] ambiguous in case insensitive scanner" msgstr "" "\t-i genera un analizador que no distingue entre maysculas y minsculas\n" #: scan.l:75 scan.l:618 scan.l:676 msgid "Input line too long\n" msgstr "" #: scan.l:161 #, fuzzy, c-format msgid "malformed '%top' directive" msgstr "directiva '%' no reconocida" #: scan.l:183 #, no-c-format msgid "unrecognized '%' directive" msgstr "directiva '%' no reconocida" #: scan.l:192 msgid "Definition name too long\n" msgstr "" #: scan.l:284 msgid "Unmatched '{'" msgstr "" #: scan.l:300 #, c-format msgid "Definition value for {%s} too long\n" msgstr "" #: scan.l:317 msgid "incomplete name definition" msgstr "definicin de nombre incompleta" #: scan.l:443 msgid "Option line too long\n" msgstr "" #: scan.l:451 #, c-format msgid "unrecognized %%option: %s" msgstr "%%opcin no reconocida: %s" #: scan.l:633 scan.l:800 msgid "bad character class" msgstr "clase de caracteres incorrecta" #: scan.l:683 #, c-format msgid "undefined definition {%s}" msgstr "definicin no definida {%s}" #: scan.l:755 #, c-format msgid "bad : %s" msgstr " incorrecta: %s" # Sugerencia: falta una comilla. sv #: scan.l:768 msgid "missing quote" msgstr "falta comilla" # Corregido el orden de la frase, pona: # incorrecta la expresin ... em # ok, de traducir al final ocurre que acabas hablando al revs, # como en ingls ng #: scan.l:834 #, c-format msgid "bad character class expression: %s" msgstr "expresin de la clase de caracteres incorrecta: %s" #: scan.l:856 msgid "bad character inside {}'s" msgstr "carcter incorrecto dentro de {}'s" # Sugerencia: "falta una }". sv #: scan.l:862 msgid "missing }" msgstr "falta }" #: scan.l:940 msgid "EOF encountered inside an action" msgstr "Fin de archivo (EOF) encontrado dentro de una accin" #: scan.l:945 #, fuzzy msgid "EOF encountered inside pattern" msgstr "Fin de archivo (EOF) encontrado dentro de una accin" #: scan.l:967 #, c-format msgid "bad character: %s" msgstr "carcter incorrecto: %s" #: scan.l:996 #, c-format msgid "can't open %s" msgstr "no se puede abrir %s" #: scanopt.c:291 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Uso: %s [OPCIONES]...\n" #: scanopt.c:564 #, c-format msgid "option `%s' doesn't allow an argument\n" msgstr "la opcin `%s' no permite un argumento\n" #: scanopt.c:569 #, c-format msgid "option `%s' requires an argument\n" msgstr "la opcin `%s' requiere un argumento\n" #: scanopt.c:573 #, c-format msgid "option `%s' is ambiguous\n" msgstr "la opcin `%s' es ambigua\n" #: scanopt.c:577 #, c-format msgid "Unrecognized option `%s'\n" msgstr "Opcin no reconocida `%s'\n" #: scanopt.c:581 #, c-format msgid "Unknown error=(%d)\n" msgstr "Error desconocido=(%d)\n" # Asignacin de memoria em #: sym.c:100 msgid "symbol table memory allocation failed" msgstr "fall la reserva de memoria para la tabla de smbolos" # hay que procurar evitar esto, siempre nos suena mejor # el nombre ha sido definido dos veces, qu te parece? em # mucho mejor, ya lo haba pensado, pero no saba cual era el estilo usual. ng #: sym.c:202 msgid "name defined twice" msgstr "el nombre ha sido definido dos veces" # Aqu lo mismo 'la condicin ... ha sido ..." em #: sym.c:253 #, c-format msgid "start condition %s declared twice" msgstr "la condicin de activacin %s ha sido declarada dos veces" #: yylex.c:56 msgid "premature EOF" msgstr "fin de archivo (EOF) prematuro" #: yylex.c:198 #, c-format msgid "End Marker\n" msgstr "Marcador de fin\n" # sobre lo de tok, me parece que es abreviatura de token. ng # en bison he traducido token por terminal, creo que es bueno unificar. ng #: yylex.c:204 #, c-format msgid "*Something Weird* - tok: %d val: %d\n" msgstr "*Algo extrao* - terminal: %d val: %d\n" # Te he corregido un error de tecleo, y puesto entre comillas # la llamada a la funcin em # ok, lo de las comillas no lo saba ng #~ msgid "consistency check failed in symfollowset" #~ msgstr "fall el test de consistencia en `symfollowset'" #~ msgid "Can't specify header option if writing to stdout." #~ msgstr "" #~ "No se puede especificar una opcin de cabecera si se escribe en stdout" #~ msgid "-Cf/-CF and %option yylineno are incompatible" #~ msgstr "-Cf/-CF y la %opcin yylineno son incompatibles" #~ msgid "unknown -R option '%c'" #~ msgstr "opcin -R desconocida '%c'" # Sugerencia: modificador '%c' desconocido -> opcin '%c' desconocida. sv # ## usage - modo de empleo # ## pongo try - pruebe, como en otras traducciones. sv #~ msgid "" #~ "For usage, try\n" #~ "\t%s --help\n" #~ msgstr "" #~ "Para el uso, pruebe\n" #~ "\t%s --help\n" # especificar en vez de dar em # s, queda mejor ng #~ msgid "-P flag must be given separately" #~ msgstr "la opcin -P se debe especificar separadamente" # especificar, o proporcionar em # especificar para unificar ng # Esa es la norma que estamos usando. em #~ msgid "-o flag must be given separately" #~ msgstr "la opcin -o se debe especificar separadamente" # especificar, o proporcionar em # idem ng #~ msgid "-S flag must be given separately" #~ msgstr "la opcin -S se debe especificar separadamente" # especificar, o proporcionar em #~ msgid "-C flag must be given separately" #~ msgstr "la opcin -C se debe especificar separadamente" # Skeleton otra vez ( recuerdo mscara, o modelos ) em #~ msgid "" #~ "%s [-bcdfhilnpstvwBFILTV78+? -C[aefFmr] -ooutput -Pprefix -Sskeleton]\n" #~ msgstr "" #~ "%s [-bcdfhilnpstvwBFILTV78+? -C[aefFmr] -osalida -Pprefijo -Sesquema]\n" #~ msgid "\t[--help --version] [file ...]\n" #~ msgstr "\t[--help --version] [archivo ...]\n" # seguridad em # idem ng #~ msgid "\t-b generate backing-up information to %s\n" #~ msgstr "\t-b genera la informacin de los retrocesos efectuados a %s\n" # No tiene efecto, en vez de no-hagas-nada em # no s si es lo mismo ng # Es como lo estamos traduciendo en otros casos de opciones # por compatibilidad POSIX pero sin efecto em # ok ng+ #~ msgid "\t-c do-nothing POSIX option\n" #~ msgstr "\t-c opcin POSIX sin efecto\n" #~ msgid "\t-d turn on debug mode in generated scanner\n" #~ msgstr "\t-d activa el modo de depuracin en el analizador generado\n" #~ msgid "\t-f generate fast, large scanner\n" #~ msgstr "\t-f genera un analizador rpido y grande\n" #~ msgid "\t-h produce this help message\n" #~ msgstr "\t-h produce este mensaje de ayuda\n" #~ msgid "\t-l maximal compatibility with original lex\n" #~ msgstr "\t-l compatibilidad mxima con el lex original\n" # lo mismo que arriba em #~ msgid "\t-n do-nothing POSIX option\n" #~ msgstr "\t-n opcin POSIX sin efecto\n" # He cambiado el orden salida de error estndar, pona em #~ msgid "\t-p generate performance report to stderr\n" #~ msgstr "" #~ "\t-p genera el informe de rendimiento en la salida de error estndar " #~ "(stderr)\n" #~ msgid "\t-s suppress default rule to ECHO unmatched text\n" #~ msgstr "" #~ "\t-s suprime la regla por defecto de visualizar (ECHO) el texto no " #~ "emparejado\n" #~ msgid "\t-t write generated scanner on stdout instead of %s\n" #~ msgstr "" #~ "\t-t escribe el analizador generado en la salida estndar (stdout) en\n" #~ "lugar de en %s\n" #~ msgid "\t-v write summary of scanner statistics to f\n" #~ msgstr "\t-v escribe un resumen de las estadsticas del analizador en f\n" #~ msgid "\t-w do not generate warnings\n" #~ msgstr "\t-w no genera avisos\n" # ## cambio opuesta por opuesto. #~ msgid "\t-B generate batch scanner (opposite of -I)\n" #~ msgstr "\t-B genera un analizador no interactivo (opuesto a -I)\n" #~ msgid "\t-F use alternative fast scanner representation\n" #~ msgstr "\t-F utiliza la representacin de analizador rpido alternativa\n" #~ msgid "\t-I generate interactive scanner (opposite of -B)\n" #~ msgstr "\t-I genera analizador interactivo (opuesto a -B)\n" #~ msgid "\t-L suppress #line directives in scanner\n" #~ msgstr "\t-L suprime las directivas #line en el analizador\n" # modo de seguimiento em # est unificado? ng # Ha salido ya alguna vez, pero no s si slo fue en una de mis # traducciones. Dejmoslo para otro em #~ msgid "\t-T %s should run in trace mode\n" #~ msgstr "\t-T %s debera ejecutarse en modo traza\n" #~ msgid "\t-V report %s version\n" #~ msgstr "\t-V informa de la versin de %s\n" #~ msgid "\t-7 generate 7-bit scanner\n" #~ msgstr "\t-7 genera un analizador de 7 bits\n" #~ msgid "\t-8 generate 8-bit scanner\n" #~ msgstr "\t-8 genera un analizador de 8 bits\n" # Un analizador C++, sin ms, o una clase C++ para el analizador em # creo que es as, porque genera dos clases C++ ng # Y?, una pregunta cul es la clase C++?, tal y como lo traduces # parece que existiese una sola clase C++ :), s que el flex te genera # una clase ( dos ), pero no 'la clase' em # creo que no me explicado, mi idea es que como genera 2 clases en C++ # el mensaje sera generate C++ scanner classes, luego si est en singular # creo que se puede referir a que genera un analizador de la clase C++, # pero creo que a lo mejor el original no se preocup de esas sutilezas ng+ # # Pues a m me parece que lo que genera es una clase analizadora en/de C++ # es decir: "C++ (scanner class)" no "(C++ class) scanner" que s sera # un analizador de la clase C++. sv #~ msgid "\t-+ generate C++ scanner class\n" #~ msgstr "\t-+ genera una clase analizadora en C++\n" #~ msgid "\t-? produce this help message\n" #~ msgstr "\t-? produce este mensaje de ayuda\n" #~ msgid "\t-C specify degree of table compression (default is -Cem):\n" #~ msgstr "" #~ "\t-C especifica el grado de compresin de la tabla (por defecto -Cem):\n" #~ msgid "\t\t-Ca trade off larger tables for better memory alignment\n" #~ msgstr "" #~ "\t\t-Ca renuncia a las tables grandes en favor de una mejor\n" #~ "\t\t alineacin de la memoria\n" #~ msgid "\t\t-Ce construct equivalence classes\n" #~ msgstr "\t\t-Ce construye clases de equivalencia\n" #~ msgid "\t\t-Cf do not compress scanner tables; use -f representation\n" #~ msgstr "" #~ "\t\t-Cf no comprime las tablas del analizador, utiliza la representacin " #~ "-f\n" #~ msgid "\t\t-CF do not compress scanner tables; use -F representation\n" #~ msgstr "" #~ "\t\t-CF no comprime las tablas del analizador, utiliza la representacin " #~ "-F\n" #~ msgid "\t\t-Cm construct meta-equivalence classes\n" #~ msgstr "\t\t-cm construye clases de metaequivalencia\n" #~ msgid "\t\t-Cr use read() instead of stdio for scanner input\n" #~ msgstr "" #~ "\t\t-Cr utiliza read() en lugar de la entrada estndar (stdio) como\n" #~ "\t\t entrada al analizador\n" #~ msgid "\t-o specify output filename\n" #~ msgstr "\t-o especifica el nombre del archivo de salida\n" #~ msgid "\t-P specify scanner prefix other than \"yy\"\n" #~ msgstr "\t-P especifica un prefijo del analizador distinto de \"yy\"\n" # De esquema ..., em #~ msgid "\t-S specify skeleton file\n" #~ msgstr "\t-S especifica el archivo de esquema\n" #~ msgid "\t--help produce this help message\n" #~ msgstr "\t--help produce este mensaje de ayuda\n" #~ msgid "\t--version report %s version\n" #~ msgstr "\t--version informa de la versin de %s\n" flex-2.5.39/po/ru.po0000644000175000017500000010111412314621665014432 0ustar srivastasrivasta# Russian translation for flex. # Copyright (C) 2013 The Flex Project (msgids) # This file is distributed under the same license as the flex package. # # Dmitry S. Sivachenko , 1999, 2000, 2001, 2002. # Yuri Kozlov , 2014. msgid "" msgstr "" "Project-Id-Version: flex 2.5.38\n" "Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2014-03-26 15:00-0400\n" "PO-Revision-Date: 2014-02-16 10:00+0400\n" "Last-Translator: Yuri Kozlov \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Lokalize 1.4\n" #: buf.c:78 msgid "Allocation of buffer to print string failed" msgstr "Не удалось выделить буфер для выводимой строки" #: buf.c:100 msgid "Allocation of buffer for line directive failed" msgstr "Не удалось выделить буфер для строковой директивы" #: buf.c:177 msgid "Allocation of buffer for m4 def failed" msgstr "Не удалось выделить буфер для m4 def" #: buf.c:197 msgid "Allocation of buffer for m4 undef failed" msgstr "Не удалось выделить буфер для m4 undef" #: dfa.c:61 #, c-format msgid "State #%d is non-accepting -\n" msgstr "Состояние #%d не допускает -\n" #: dfa.c:124 msgid "dangerous trailing context" msgstr "опасный замыкающий контекст" #: dfa.c:166 #, c-format msgid " associated rule line numbers:" msgstr " номера строк ассоциированного правила:" #: dfa.c:202 #, c-format msgid " out-transitions: " msgstr " out-переходы: " #: dfa.c:210 #, c-format msgid "" "\n" " jam-transitions: EOF " msgstr "" "\n" " jam-переходы: EOF " #: dfa.c:341 msgid "consistency check failed in epsclosure()" msgstr "ошибка при проверке на целостность в epsclosure()" #: dfa.c:429 msgid "" "\n" "\n" "DFA Dump:\n" "\n" msgstr "" "\n" "\n" "Дамп ДКА:\n" "\n" #: dfa.c:604 msgid "could not create unique end-of-buffer state" msgstr "невозможно создать уникальное состояние конца буфера" #: dfa.c:625 #, c-format msgid "state # %d:\n" msgstr "состояние # %d:\n" #: dfa.c:785 msgid "Could not write yynxt_tbl[][]" msgstr "Невозможно записать yynxt_tbl[][]" #: dfa.c:1049 msgid "bad transition character detected in sympartition()" msgstr "обнаружен неверный переходный символ в sympartition()" #: gen.c:478 msgid "" "\n" "\n" "Equivalence Classes:\n" "\n" msgstr "" "\n" "\n" "Классы эквивалентности:\n" "\n" #: gen.c:662 gen.c:691 gen.c:1215 #, c-format msgid "state # %d accepts: [%d]\n" msgstr "состояние # %d допускает: [%d]\n" #: gen.c:1110 #, c-format msgid "state # %d accepts: " msgstr "состояние # %d допускает: " #: gen.c:1157 msgid "Could not write yyacclist_tbl" msgstr "Невозможно записать yyacclist_tbl" #: gen.c:1233 msgid "Could not write yyacc_tbl" msgstr "Невозможно записать yyacc_tbl" #: gen.c:1248 gen.c:1633 gen.c:1656 msgid "Could not write ecstbl" msgstr "Невозможно записать ecstbl" #: gen.c:1271 msgid "" "\n" "\n" "Meta-Equivalence Classes:\n" msgstr "" "\n" "\n" "Мета-эквивалентные Классы:\n" #: gen.c:1293 msgid "Could not write yymeta_tbl" msgstr "Невозможно записать yymeta_tbl" #: gen.c:1354 msgid "Could not write yybase_tbl" msgstr "Невозможно записать yybase_tbl" #: gen.c:1388 msgid "Could not write yydef_tbl" msgstr "Невозможно записать yydef_tbl" #: gen.c:1428 msgid "Could not write yynxt_tbl" msgstr "Невозможно записать yynxt_tbl" #: gen.c:1464 msgid "Could not write yychk_tbl" msgstr "Невозможно записать yychk_tbl" #: gen.c:1618 gen.c:1647 msgid "Could not write ftbl" msgstr "Невозможно записать ftbl" #: gen.c:1624 msgid "Could not write ssltbl" msgstr "Невозможно записать ssltbl" #: gen.c:1675 msgid "Could not write eoltbl" msgstr "Невозможно записать eoltbl" #: gen.c:1735 msgid "Could not write yynultrans_tbl" msgstr "Невозможно записать yynultrans_tbl" #: main.c:191 msgid "rule cannot be matched" msgstr "невозможно применить правило" #: main.c:196 msgid "-s option given but default rule can be matched" msgstr "указан параметр -s, но правило по умолчанию не может быть применено" #: main.c:236 msgid "Can't use -+ with -l option" msgstr "Невозможно использовать -+ с параметром -l" #: main.c:239 msgid "Can't use -f or -F with -l option" msgstr "Невозможно использовать -f или -F с параметром -l" #: main.c:243 msgid "Can't use --reentrant or --bison-bridge with -l option" msgstr "Невозможно использовать --reentrant или --bison-bridge с параметром -l" #: main.c:275 msgid "-Cf/-CF and -Cm don't make sense together" msgstr "Параметры -Cf/-CF и -Cm вместе не имеют смысла" #: main.c:278 msgid "-Cf/-CF and -I are incompatible" msgstr "Параметры -Cf/-CF и -I несовместимы" #: main.c:282 msgid "-Cf/-CF are incompatible with lex-compatibility mode" msgstr "Параметры -Cf/-CF несовместимы с режимом lex-совместимости" #: main.c:287 msgid "-Cf and -CF are mutually exclusive" msgstr "Параметры -Cf и -CF являются взаимоисключающими" #: main.c:291 msgid "Can't use -+ with -CF option" msgstr "Невозможно использовать -+ с параметром -CF" #: main.c:294 #, c-format msgid "%array incompatible with -+ option" msgstr "%array несовместим с параметром -+" #: main.c:299 msgid "Options -+ and --reentrant are mutually exclusive." msgstr "Параметры -+ и --reentrant являются взаимоисключающими." #: main.c:302 msgid "bison bridge not supported for the C++ scanner." msgstr "bison bridge не поддерживается для сканера C++." #: main.c:357 main.c:403 #, c-format msgid "could not create %s" msgstr "невозможно создать %s" #: main.c:416 msgid "could not write tables header" msgstr "Невозможно записать заголовок таблиц" #: main.c:420 #, c-format msgid "can't open skeleton file %s" msgstr "Невозможно открыть файл-каркас %s" #: main.c:456 msgid "allocation of macro definition failed" msgstr "Не удалось разместить определение макроса" #: main.c:504 #, c-format msgid "input error reading skeleton file %s" msgstr "ошибка чтения файла-каркаса %s" #: main.c:508 #, c-format msgid "error closing skeleton file %s" msgstr "ошибка при закрытии файла-каркаса %s" #: main.c:693 #, c-format msgid "error creating header file %s" msgstr "ошибка создания заголовочного файла %s" #: main.c:701 #, c-format msgid "error writing output file %s" msgstr "ошибка записи в выходной файл %s" #: main.c:705 #, c-format msgid "error closing output file %s" msgstr "ошибка закрытия выходного файла %s" #: main.c:709 #, c-format msgid "error deleting output file %s" msgstr "ошибка удаления выходного файла %s" #: main.c:716 #, c-format msgid "No backing up.\n" msgstr "Резервное копирование отключено.\n" #: main.c:720 #, c-format msgid "%d backing up (non-accepting) states.\n" msgstr "резервное копирование %d (недопустимых) состояний.\n" #: main.c:724 #, c-format msgid "Compressed tables always back up.\n" msgstr "Резервное копирование сжатых таблиц выполняется всегда.\n" #: main.c:727 #, c-format msgid "error writing backup file %s" msgstr "ошибка записи резервной копии файла %s" #: main.c:731 #, c-format msgid "error closing backup file %s" msgstr "ошибка закрытия резервной копии файла %s" #: main.c:736 #, c-format msgid "%s version %s usage statistics:\n" msgstr "статистика использования %s версии %s:\n" #: main.c:739 #, c-format msgid " scanner options: -" msgstr " параметры сканера: -" #: main.c:818 #, c-format msgid " %d/%d NFA states\n" msgstr " %d/%d состояний НКА\n" #: main.c:820 #, c-format msgid " %d/%d DFA states (%d words)\n" msgstr " %d/%d состояний ДКА (%d слов)\n" #: main.c:822 #, c-format msgid " %d rules\n" msgstr " %d правил\n" #: main.c:827 #, c-format msgid " No backing up\n" msgstr " Резервное копирование отключено\n" #: main.c:831 #, c-format msgid " %d backing-up (non-accepting) states\n" msgstr " резервное копирование %d (недопустимых) состояний\n" #: main.c:836 #, c-format msgid " Compressed tables always back-up\n" msgstr " Резервное копирование сжатых таблиц выполняется всегда\n" #: main.c:840 #, c-format msgid " Beginning-of-line patterns used\n" msgstr " Используются шаблоны начала строки\n" #: main.c:842 #, c-format msgid " %d/%d start conditions\n" msgstr " %d/%d начальных условий\n" #: main.c:846 #, c-format msgid " %d epsilon states, %d double epsilon states\n" msgstr " %d эпсилон-состояний, %d двойных эпсилон-состояний\n" #: main.c:850 #, c-format msgid " no character classes\n" msgstr " отсутствуют классы символов\n" #: main.c:854 #, c-format msgid " %d/%d character classes needed %d/%d words of storage, %d reused\n" msgstr "" " %d/%d классов символов требуют %d/%d слов для хранения, %d повторно " "использовано\n" #: main.c:859 #, c-format msgid " %d state/nextstate pairs created\n" msgstr " создано %d пар состояние/след_состояние\n" #: main.c:862 #, c-format msgid " %d/%d unique/duplicate transitions\n" msgstr " %d/%d уникальных/повторяющихся переходов\n" #: main.c:867 #, c-format msgid " %d table entries\n" msgstr " %d элементов таблицы\n" #: main.c:875 #, c-format msgid " %d/%d base-def entries created\n" msgstr " создано %d/%d base-def элементов\n" #: main.c:879 #, c-format msgid " %d/%d (peak %d) nxt-chk entries created\n" msgstr " создано %d/%d (пик %d) nxt-chk элементов\n" #: main.c:883 #, c-format msgid " %d/%d (peak %d) template nxt-chk entries created\n" msgstr " создано %d/%d (пик %d) шаблонных nxt-chk элементов\n" #: main.c:887 #, c-format msgid " %d empty table entries\n" msgstr " %d пустых элементов таблицы\n" #: main.c:889 #, c-format msgid " %d protos created\n" msgstr " создано %d прототипов\n" #: main.c:892 #, c-format msgid " %d templates created, %d uses\n" msgstr " создано %d шаблонов, %d используются\n" #: main.c:900 #, c-format msgid " %d/%d equivalence classes created\n" msgstr " созданы классы эквивалентности %d/%d\n" #: main.c:908 #, c-format msgid " %d/%d meta-equivalence classes created\n" msgstr " %d/%d мета-эквивалентных классов создано\n" #: main.c:914 #, c-format msgid " %d (%d saved) hash collisions, %d DFAs equal\n" msgstr " %d (%d записано) коллизий хэш-таблицы, %d эквивалентных ДКА\n" #: main.c:916 #, c-format msgid " %d sets of reallocations needed\n" msgstr " требуется %d наборов повторных размещений\n" #: main.c:918 #, c-format msgid " %d total table entries needed\n" msgstr " всего требуется %d элементов таблицы\n" #: main.c:995 #, c-format msgid "Internal error. flexopts are malformed.\n" msgstr "Внутренняя ошибка. Неправильное значение flexopts.\n" #: main.c:1005 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Попробуйте «%s --help» для получения более подробного описания.\n" #: main.c:1062 #, c-format msgid "unknown -C option '%c'" msgstr "неизвестное значение «%c» для -C" #: main.c:1191 #, c-format msgid "%s %s\n" msgstr "%s %s\n" #: main.c:1466 msgid "fatal parse error" msgstr "фатальная ошибка разбора" #: main.c:1498 #, c-format msgid "could not create backing-up info file %s" msgstr "невозможно создать резервную копию информационного файла %s" #: main.c:1519 #, c-format msgid "-l AT&T lex compatibility option entails a large performance penalty\n" msgstr "" "Параметр -l совместимости с AT&T lex влечёт значительное снижение " "производительности\n" #: main.c:1522 #, c-format msgid " and may be the actual source of other reported performance penalties\n" msgstr "" " и также может быть истинным источником проблем с производительностью\n" #: main.c:1528 #, c-format msgid "" "%%option yylineno entails a performance penalty ONLY on rules that can match " "newline characters\n" msgstr "" "%%option yylineno влечёт значительное снижение производительности ТОЛЬКО для " "правил, которые могут совпадать с символами новой строки\n" #: main.c:1535 #, c-format msgid "-I (interactive) entails a minor performance penalty\n" msgstr "-I (интерактивный) влечёт незначительное снижение производительности\n" #: main.c:1540 #, c-format msgid "yymore() entails a minor performance penalty\n" msgstr "yymore() приводит к небольшому снижению производительности\n" #: main.c:1546 #, c-format msgid "REJECT entails a large performance penalty\n" msgstr "REJECT влечёт значительное снижение производительности\n" #: main.c:1551 #, c-format msgid "Variable trailing context rules entail a large performance penalty\n" msgstr "" "Правила с переменным замыкающим контекстом приводят к значительному снижению " "производительности\n" #: main.c:1563 msgid "REJECT cannot be used with -f or -F" msgstr "REJECT не может быть использован вместе с -f или -F" #: main.c:1566 #, c-format msgid "%option yylineno cannot be used with REJECT" msgstr "%option yylineno не может быть использован с REJECT" #: main.c:1569 msgid "variable trailing context rules cannot be used with -f or -F" msgstr "" "правила с переменным замыкающим контекстом не могут быть использованы с -f " "или -F" #: main.c:1692 #, c-format msgid "%option yyclass only meaningful for C++ scanners" msgstr "%option yyclass имеет смысл только для сканеров C++" #: main.c:1799 #, c-format msgid "Usage: %s [OPTIONS] [FILE]...\n" msgstr "Использование: %s [ПАРАМЕТРЫ] [ФАЙЛ]…\n" #: main.c:1802 #, c-format msgid "" "Generates programs that perform pattern-matching on text.\n" "\n" "Table Compression:\n" " -Ca, --align trade off larger tables for better memory alignment\n" " -Ce, --ecs construct equivalence classes\n" " -Cf do not compress tables; use -f representation\n" " -CF do not compress tables; use -F representation\n" " -Cm, --meta-ecs construct meta-equivalence classes\n" " -Cr, --read use read() instead of stdio for scanner input\n" " -f, --full generate fast, large scanner. Same as -Cfr\n" " -F, --fast use alternate table representation. Same as -CFr\n" " -Cem default compression (same as --ecs --meta-ecs)\n" "\n" "Debugging:\n" " -d, --debug enable debug mode in scanner\n" " -b, --backup write backing-up information to %s\n" " -p, --perf-report write performance report to stderr\n" " -s, --nodefault suppress default rule to ECHO unmatched text\n" " -T, --trace %s should run in trace mode\n" " -w, --nowarn do not generate warnings\n" " -v, --verbose write summary of scanner statistics to stdout\n" "\n" "Files:\n" " -o, --outfile=FILE specify output filename\n" " -S, --skel=FILE specify skeleton file\n" " -t, --stdout write scanner on stdout instead of %s\n" " --yyclass=NAME name of C++ class\n" " --header-file=FILE create a C header file in addition to the " "scanner\n" " --tables-file[=FILE] write tables to FILE\n" "\n" "Scanner behavior:\n" " -7, --7bit generate 7-bit scanner\n" " -8, --8bit generate 8-bit scanner\n" " -B, --batch generate batch scanner (opposite of -I)\n" " -i, --case-insensitive ignore case in patterns\n" " -l, --lex-compat maximal compatibility with original lex\n" " -X, --posix-compat maximal compatibility with POSIX lex\n" " -I, --interactive generate interactive scanner (opposite of -B)\n" " --yylineno track line count in yylineno\n" "\n" "Generated code:\n" " -+, --c++ generate C++ scanner class\n" " -Dmacro[=defn] #define macro defn (default defn is '1')\n" " -L, --noline suppress #line directives in scanner\n" " -P, --prefix=STRING use STRING as prefix instead of \"yy\"\n" " -R, --reentrant generate a reentrant C scanner\n" " --bison-bridge scanner for bison pure parser.\n" " --bison-locations include yylloc support.\n" " --stdinit initialize yyin/yyout to stdin/stdout\n" " --noansi-definitions old-style function definitions\n" " --noansi-prototypes empty parameter list in prototypes\n" " --nounistd do not include \n" " --noFUNCTION do not generate a particular FUNCTION\n" "\n" "Miscellaneous:\n" " -c do-nothing POSIX option\n" " -n do-nothing POSIX option\n" " -?\n" " -h, --help produce this help message\n" " -V, --version report %s version\n" msgstr "" "Генерирует программы, производящие манипуляции с текстом по шаблонам.\n" "\n" "Сжатие таблиц:\n" " -Ca, --align допускать больший размер таблиц для\n" " лучшего выравнивания в памяти\n" " -Ce, --ecs создавать классы эквивалентности\n" " -Cf не сжимать таблицы; использовать -f представление\n" " -CF не сжимать таблицы; использовать -F представление\n" " -Cm, --meta-ecs создавать классы мета-эквивалентности\n" " -Cr, --read использовать read() вместо stdio для\n" " входных данных сканера\n" " -f, --full создать быстрый, большой сканер. То же, что и -Cfr\n" " -F, --fast использовать альтернативное представление таблиц.\n" " То же, что и -CFr\n" " -Cem степень сжатия по умолчанию\n" " (то же что и --ecs --meta-ecs)\n" "\n" "Отладка:\n" " -d, --debug включить режим отладки в сканер\n" " -b, --backup записать резервную копию в %s\n" " -p, --perf-report записать отчёт о производительности в stderr\n" " -s, --nodefault подавлять правило по умолчанию для вывода (ECHO)\n" " текста, который не подошёл ни к одному правилу\n" " -T, --trace %s должен запускаться в режиме трассировки\n" " -w, --nowarn не выдавать предупреждений\n" " -v, --verbose записать суммарную статистику сканера в stdout\n" "\n" "Файлы:\n" " -o, --outfile=ФАЙЛ указать имя выходного файла\n" " -S, --skel=ФАЙЛ указать файл каркаса\n" " -t, --stdout записать сканер в stdout вместо %s\n" " --yyclass=ИМЯ имя класса C++\n" " --header-file=ФАЙЛ создать кроме сканера заголовочный файл C\n" " --tables-file[=ФАЙЛ] записать таблицы в ФАЙЛ\n" "\n" "Поведение сканера:\n" " -7, --7bit создать 7-битный сканер\n" " -8, --8bit создать 8-битный сканер\n" " -B, --batch создать пакетный сканер\n" " (в противоположность к -I)\n" " -i, --case-insensitive игнорировать регистр букв в шаблонах\n" " -l, --lex-compat максимальная совместимость с оригинальным lex\n" " -X, --posix-compat максимальная совместимость с POSIX lex\n" " -I, --interactive создать интерактивный сканер\n" " (в противоположность к -B)\n" " --yylineno отслеживать число строк в yylineno\n" "\n" "Генерируемый код:\n" " -+, --c++ создать класс сканера С++\n" " -Dmacro[=defn] #define macro defn (по умолчанию defn='1')\n" " -L, --noline не создавать директивы #line в сканере\n" " -P, --prefix=СТРОКА использовать СТРОКУ в качестве префикса\n" " вместо «yy»\n" " -R, --reentrant создать реентерабельный сканер на C\n" " --bison-bridge сканер для анализатора только на bison\n" " --bison-locations включить поддержку yylloc\n" " --stdinit инициализировать yyin/yyout в stdin/stdout\n" " --noansi-definitions определения функций в старом стиле\n" " --noansi-prototypes пустой список параметров в прототипах\n" " --nounistd не включать \n" " --noФУНКЦИЯ не генерировать определённую ФУНКЦИЮ\n" "\n" "Разное:\n" " -с ничего не делающий параметр POSIX\n" " -n ничего не делающий параметр POSIX\n" " -?\n" " -h, --help показать эту справку\n" " -V, --version показать версию %s\n" #: misc.c:65 msgid "allocation of sko_stack failed" msgstr "не удалось разместить sko_stack" #: misc.c:102 misc.c:128 #, c-format msgid "name \"%s\" ridiculously long" msgstr "имя «%s» нелепо длинное" #: misc.c:177 msgid "memory allocation failed in allocate_array()" msgstr "ошибка выделения памяти в allocate_array()" #: misc.c:230 #, c-format msgid "bad character '%s' detected in check_char()" msgstr "найден неверный символ «%s» в check_char()" #: misc.c:235 #, c-format msgid "scanner requires -8 flag to use the character %s" msgstr "для использования символа %s сканеру требуется параметр -8" #: misc.c:268 msgid "dynamic memory failure in copy_string()" msgstr "ошибка при работе с динамической памятью в copy_string()" #: misc.c:367 #, c-format msgid "%s: fatal internal error, %s\n" msgstr "%s: фатальная внутренняя ошибка, %s\n" #: misc.c:803 msgid "attempt to increase array size failed" msgstr "ошибка при попытке увеличить размер массива" #: misc.c:930 msgid "bad line in skeleton file" msgstr "неверная строка в файле-каркасе" #: misc.c:979 msgid "memory allocation failed in yy_flex_xmalloc()" msgstr "ошибка при выделении памяти в yy_flex_xmalloc()" #: nfa.c:104 #, c-format msgid "" "\n" "\n" "********** beginning dump of nfa with start state %d\n" msgstr "" "\n" "\n" "******** начало дампа конечного автомата с начальным состоянием %d\n" #: nfa.c:115 #, c-format msgid "state # %4d\t" msgstr "состояние # %4d\t" #: nfa.c:130 #, c-format msgid "********** end of dump\n" msgstr "********* конец дампа\n" #: nfa.c:174 msgid "empty machine in dupmachine()" msgstr "пустой автомат в dupmachine()" #: nfa.c:240 #, c-format msgid "Variable trailing context rule at line %d\n" msgstr "Правило с переменным замыкающим контекстом в строке %d\n" #: nfa.c:364 msgid "bad state type in mark_beginning_as_normal()" msgstr "неверный тип состояния в mark_beginning_as_normal()" #: nfa.c:609 #, c-format msgid "input rules are too complicated (>= %d NFA states)" msgstr "входные правила слишком сложные (>= %d состояний НКА)" #: nfa.c:688 msgid "found too many transitions in mkxtion()" msgstr "найдено слишком много переходов в mkxtion()" #: nfa.c:714 #, c-format msgid "too many rules (> %d)!" msgstr "слишком много правил (> %d)!" #: parse.y:159 msgid "unknown error processing section 1" msgstr "неизвестная ошибка при обработке раздела 1" #: parse.y:184 parse.y:351 msgid "bad start condition list" msgstr "неверный список начальных условий" #: parse.y:315 msgid "unrecognized rule" msgstr "нераспознанное правило" #: parse.y:434 parse.y:447 parse.y:516 msgid "trailing context used twice" msgstr "замыкающий контекст используется дважды" #: parse.y:552 parse.y:562 parse.y:635 parse.y:645 msgid "bad iteration values" msgstr "неверные значения итераций" #: parse.y:580 parse.y:598 parse.y:663 parse.y:681 msgid "iteration value must be positive" msgstr "значение итераций должно быть положительным" #: parse.y:804 parse.y:814 #, c-format msgid "the character range [%c-%c] is ambiguous in a case-insensitive scanner" msgstr "" "использование символьного диапазона [%c-%c] сомнительно в сканере, не " "чувствительном к регистру" #: parse.y:819 msgid "negative range in character class" msgstr "отрицательный диапазон в классе символов" #: parse.y:916 msgid "[:^lower:] is ambiguous in case insensitive scanner" msgstr "" "использование [:^lower:] сомнительно для сканера, не чувствительного к " "регистру" #: parse.y:922 msgid "[:^upper:] ambiguous in case insensitive scanner" msgstr "" "использование [:^upper:] сомнительно для сканера, не чувствительного к " "регистру" #: scan.l:75 scan.l:618 scan.l:676 msgid "Input line too long\n" msgstr "Слишком длинная входная строка\n" #: scan.l:161 #, c-format msgid "malformed '%top' directive" msgstr "нераспознанная директива «%top»" #: scan.l:183 #, no-c-format msgid "unrecognized '%' directive" msgstr "нераспознанная директива «%»" #: scan.l:192 msgid "Definition name too long\n" msgstr "Слишком длинное определение имени\n" #: scan.l:284 msgid "Unmatched '{'" msgstr "Непарная «{»" #: scan.l:300 #, c-format msgid "Definition value for {%s} too long\n" msgstr "Слишком длинное определение значения для {%s}\n" #: scan.l:317 msgid "incomplete name definition" msgstr "неполное определение имени" #: scan.l:443 msgid "Option line too long\n" msgstr "Слишком длинный параметр\n" #: scan.l:451 #, c-format msgid "unrecognized %%option: %s" msgstr "нераспознанный %%option: %s" #: scan.l:633 scan.l:800 msgid "bad character class" msgstr "неверный класс символа" #: scan.l:683 #, c-format msgid "undefined definition {%s}" msgstr "неопределенное определение {%s}" #: scan.l:755 #, c-format msgid "bad : %s" msgstr "неверное <начальное условие>: %s" #: scan.l:768 msgid "missing quote" msgstr "отсутствуют кавычки" #: scan.l:834 #, c-format msgid "bad character class expression: %s" msgstr "неверное выражение класса символа: %s" #: scan.l:856 msgid "bad character inside {}'s" msgstr "неверный символ внутри {}" #: scan.l:862 msgid "missing }" msgstr "отсутствует }" #: scan.l:940 msgid "EOF encountered inside an action" msgstr "встречен EOF внутри действия" #: scan.l:945 msgid "EOF encountered inside pattern" msgstr "встречен EOF внутри шаблона" #: scan.l:967 #, c-format msgid "bad character: %s" msgstr "неверный символ: %s" #: scan.l:996 #, c-format msgid "can't open %s" msgstr "невозможно открыть %s" #: scanopt.c:291 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Использование: %s [ПАРАМЕТРЫ]…\n" #: scanopt.c:564 #, c-format msgid "option `%s' doesn't allow an argument\n" msgstr "параметр «%s» должен использоваться без аргумента\n" #: scanopt.c:569 #, c-format msgid "option `%s' requires an argument\n" msgstr "параметр «%s» должен использоваться с аргументом\n" #: scanopt.c:573 #, c-format msgid "option `%s' is ambiguous\n" msgstr "неоднозначный ключ «%s»\n" #: scanopt.c:577 #, c-format msgid "Unrecognized option `%s'\n" msgstr "Нераспознанный параметр «%s»\n" #: scanopt.c:581 #, c-format msgid "Unknown error=(%d)\n" msgstr "Неизвестная ошибка=(%d)\n" #: sym.c:100 msgid "symbol table memory allocation failed" msgstr "ошибка при выделении памяти для таблицы символов" #: sym.c:202 msgid "name defined twice" msgstr "имя определено дважды" #: sym.c:253 #, c-format msgid "start condition %s declared twice" msgstr "начальное условие %s описано дважды" #: yylex.c:56 msgid "premature EOF" msgstr "неожиданный EOF" #: yylex.c:198 #, c-format msgid "End Marker\n" msgstr "Метка конца\n" #: yylex.c:204 #, c-format msgid "*Something Weird* - tok: %d val: %d\n" msgstr "*Что-то не так* — tok: %d val: %d\n" #~ msgid "consistency check failed in symfollowset" #~ msgstr "ошибка при проверке на целостность в symfollowset" #~ msgid "Can't specify header option if writing to stdout." #~ msgstr "Невозможно указать параметр header при выводе на stdout." #~ msgid "unknown -R option '%c'" #~ msgstr "неизвестный -R ключ '%c'" flex-2.5.39/po/tr.po0000644000175000017500000006253712314621665014450 0ustar srivastasrivasta# Translation of 'flex' messages to Turkish # Copyright (C) 2004 The Flex Project # Deniz Akkus Kanca , 2004. # msgid "" msgstr "" "Project-Id-Version: flex 2.5.31\n" "Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2014-03-26 15:00-0400\n" "PO-Revision-Date: 2004-05-16 18:36+0300\n" "Last-Translator: Deniz Akkus Kanca \n" "Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.0.2\n" #: buf.c:78 msgid "Allocation of buffer to print string failed" msgstr "" #: buf.c:100 msgid "Allocation of buffer for line directive failed" msgstr "" #: buf.c:177 msgid "Allocation of buffer for m4 def failed" msgstr "" #: buf.c:197 msgid "Allocation of buffer for m4 undef failed" msgstr "" #: dfa.c:61 #, c-format msgid "State #%d is non-accepting -\n" msgstr "Durum #%d kabul etmiyor -\n" #: dfa.c:124 msgid "dangerous trailing context" msgstr "izleyen bağlam tehlikeli" #: dfa.c:166 #, c-format msgid " associated rule line numbers:" msgstr " alakalı kural satır numaraları:" #: dfa.c:202 #, c-format msgid " out-transitions: " msgstr " dış-geçişler: " #: dfa.c:210 #, c-format msgid "" "\n" " jam-transitions: EOF " msgstr "" "\n" " sıkışık-geçişler: EOF " #: dfa.c:341 msgid "consistency check failed in epsclosure()" msgstr "epsclosure() içindeki tutarlılık kontrolü başarısız" #: dfa.c:429 msgid "" "\n" "\n" "DFA Dump:\n" "\n" msgstr "" "\n" "\n" "DFA Dökümü:\n" "\n" #: dfa.c:604 msgid "could not create unique end-of-buffer state" msgstr "tekil tampon sonu durumu yaratılamadı" #: dfa.c:625 #, c-format msgid "state # %d:\n" msgstr "durum # %d:\n" #: dfa.c:785 msgid "Could not write yynxt_tbl[][]" msgstr "yynxt_tbl[][] yazılamadı" #: dfa.c:1049 msgid "bad transition character detected in sympartition()" msgstr "sympartition() içinde hatalı geçiş karakterleri saptandı" #: gen.c:478 msgid "" "\n" "\n" "Equivalence Classes:\n" "\n" msgstr "" "\n" "\n" "Denklik Sınıfları:\n" "\n" #: gen.c:662 gen.c:691 gen.c:1215 #, c-format msgid "state # %d accepts: [%d]\n" msgstr "durum # %d kabul eder: [%d]\n" #: gen.c:1110 #, c-format msgid "state # %d accepts: " msgstr "durum # %d kabul eder: " #: gen.c:1157 msgid "Could not write yyacclist_tbl" msgstr "yyacclist_tbl yazılamadı" #: gen.c:1233 msgid "Could not write yyacc_tbl" msgstr "yyacc_tbl yazılamadı" #: gen.c:1248 gen.c:1633 gen.c:1656 msgid "Could not write ecstbl" msgstr "ecstbl yazılamadı" #: gen.c:1271 msgid "" "\n" "\n" "Meta-Equivalence Classes:\n" msgstr "" "\n" "\n" "Ara-Denklik Sınıfları:\n" #: gen.c:1293 msgid "Could not write yymeta_tbl" msgstr "yymeta_tbl yazılamadı" #: gen.c:1354 msgid "Could not write yybase_tbl" msgstr "yybase_tbl yazılamadı" #: gen.c:1388 msgid "Could not write yydef_tbl" msgstr "yydef_tbl yazılamadı" #: gen.c:1428 msgid "Could not write yynxt_tbl" msgstr "yynxt_tbl yazılamadı" #: gen.c:1464 msgid "Could not write yychk_tbl" msgstr "yychk_tbl yazılamadı" #: gen.c:1618 gen.c:1647 msgid "Could not write ftbl" msgstr "ftbl yazılamadı" #: gen.c:1624 msgid "Could not write ssltbl" msgstr "ssltbl yazılamadı" #: gen.c:1675 msgid "Could not write eoltbl" msgstr "eoltbl yazılamadı" #: gen.c:1735 msgid "Could not write yynultrans_tbl" msgstr "yynultrans_tbl yazılamadı" #: main.c:191 msgid "rule cannot be matched" msgstr "kural eşlenemedi" #: main.c:196 msgid "-s option given but default rule can be matched" msgstr "-s seçeneği verilmiş fakat öntanımlı kural eşlenebiliyor" #: main.c:236 msgid "Can't use -+ with -l option" msgstr "-+'yi -l seçeneği ile kullanma" #: main.c:239 msgid "Can't use -f or -F with -l option" msgstr "-f veya -F'yi -l seçeneği ile kullanma" #: main.c:243 msgid "Can't use --reentrant or --bison-bridge with -l option" msgstr "-l seçeneği ile --reentrant veya --bison-bridge bir arada kullanılamaz" #: main.c:275 msgid "-Cf/-CF and -Cm don't make sense together" msgstr "-Cf/-CF ve -Cm birlikte anlam ifade etmiyor" #: main.c:278 msgid "-Cf/-CF and -I are incompatible" msgstr "-Cf/-CF ve -I uyumsuz" #: main.c:282 msgid "-Cf/-CF are incompatible with lex-compatibility mode" msgstr "-Cf/-CF lex-uyumluluk kipi ile uyumsuz" #: main.c:287 msgid "-Cf and -CF are mutually exclusive" msgstr "-Cf ve -CF bir arada kullanılamaz" #: main.c:291 msgid "Can't use -+ with -CF option" msgstr "-+, -CF seçeneği ile kullanılamaz" #: main.c:294 #, c-format msgid "%array incompatible with -+ option" msgstr "%array, -+ seçeneği ile uyumsuz" #: main.c:299 msgid "Options -+ and --reentrant are mutually exclusive." msgstr "-+ ve --reentrant seçenekleri bir arada kullanılamaz" #: main.c:302 msgid "bison bridge not supported for the C++ scanner." msgstr "bison bridge, C++ tarayıcısı için desteklenmiyor." #: main.c:357 main.c:403 #, c-format msgid "could not create %s" msgstr "%s oluşturulamadı" #: main.c:416 msgid "could not write tables header" msgstr "tablo başlığı yazılamadı" #: main.c:420 #, c-format msgid "can't open skeleton file %s" msgstr "iskelet dosyası %s açılamadı" #: main.c:456 msgid "allocation of macro definition failed" msgstr "" #: main.c:504 #, c-format msgid "input error reading skeleton file %s" msgstr "iskelet dosyası %s okunurken girdi hatası" #: main.c:508 #, c-format msgid "error closing skeleton file %s" msgstr "iskelet dosyası %s kapatılırken hata" #: main.c:693 #, c-format msgid "error creating header file %s" msgstr "başlık dosyası %s oluşturulurken hata" #: main.c:701 #, c-format msgid "error writing output file %s" msgstr "çıktı dosyası %s yazılırken hata" #: main.c:705 #, c-format msgid "error closing output file %s" msgstr "çıktı dosyası %s kapatılırken hata" #: main.c:709 #, c-format msgid "error deleting output file %s" msgstr "çıktı dosyası %s silinirken hata" #: main.c:716 #, c-format msgid "No backing up.\n" msgstr "Yedekleme yok.\n" #: main.c:720 #, c-format msgid "%d backing up (non-accepting) states.\n" msgstr "%d yedeklenen (kabul-etmeyen) durumlar.\n" #: main.c:724 #, c-format msgid "Compressed tables always back up.\n" msgstr "Sıkıştırılmış tablolar daima yedeklidir.\n" #: main.c:727 #, c-format msgid "error writing backup file %s" msgstr "yedek dosyası %s yazılırken hata" #: main.c:731 #, c-format msgid "error closing backup file %s" msgstr "yedek dosyası %s kapatılırken hata" #: main.c:736 #, c-format msgid "%s version %s usage statistics:\n" msgstr "%s sürüm %s kullanım istatistikleri:\n" #: main.c:739 #, c-format msgid " scanner options: -" msgstr " tarayıcı seçenekleri: -" #: main.c:818 #, c-format msgid " %d/%d NFA states\n" msgstr " %d/%d NFA durumu\n" #: main.c:820 #, c-format msgid " %d/%d DFA states (%d words)\n" msgstr " %d/%d DFA durumu (%d sözcük)\n" #: main.c:822 #, c-format msgid " %d rules\n" msgstr " %d kural\n" #: main.c:827 #, c-format msgid " No backing up\n" msgstr " Yedekleme yok\n" #: main.c:831 #, c-format msgid " %d backing-up (non-accepting) states\n" msgstr " %d yedeklenmiş (kabul-edilmeyen) durum\n" #: main.c:836 #, c-format msgid " Compressed tables always back-up\n" msgstr " Sıkıştırılmış tablolar daima yedeklenir\n" #: main.c:840 #, c-format msgid " Beginning-of-line patterns used\n" msgstr " Başlangıç-satırı kalıpları kullanıldı\n" #: main.c:842 #, c-format msgid " %d/%d start conditions\n" msgstr " %d/%d başlangıç şartları\n" #: main.c:846 #, c-format msgid " %d epsilon states, %d double epsilon states\n" msgstr " %d epsilon durumu, %d çift epsilon durumu\n" #: main.c:850 #, c-format msgid " no character classes\n" msgstr " karakter sınıfı yok\n" #: main.c:854 #, c-format msgid " %d/%d character classes needed %d/%d words of storage, %d reused\n" msgstr "" " %d/%d ihtiyaç duyulan karakter sınıfı %d/%d depolanan sözcük, %d yeniden " "kullanıldı\n" #: main.c:859 #, c-format msgid " %d state/nextstate pairs created\n" msgstr " %d durumu/sonrakidurum çifti yaratıldı\n" #: main.c:862 #, c-format msgid " %d/%d unique/duplicate transitions\n" msgstr " %d/%d tekil/çift geçişler\n" #: main.c:867 #, c-format msgid " %d table entries\n" msgstr " %d tablo girdileri\n" #: main.c:875 #, c-format msgid " %d/%d base-def entries created\n" msgstr " %d/%d temel-tanım girdileri yaratıldı\n" #: main.c:879 #, c-format msgid " %d/%d (peak %d) nxt-chk entries created\n" msgstr " %d/%d (en yüksek %d) nxt-chk girdileri yaratıldı\n" #: main.c:883 #, c-format msgid " %d/%d (peak %d) template nxt-chk entries created\n" msgstr " %d/%d (en yüksek %d) şablon nxt-chk girdileri yaratıldı\n" #: main.c:887 #, c-format msgid " %d empty table entries\n" msgstr " %d boş tablo girdileri\n" #: main.c:889 #, c-format msgid " %d protos created\n" msgstr " %d prototip yaratıldı\n" #: main.c:892 #, c-format msgid " %d templates created, %d uses\n" msgstr " %d şablon yaratıldı, %d kullanıldı\n" #: main.c:900 #, c-format msgid " %d/%d equivalence classes created\n" msgstr " %d/%d denklik sınıfı yaratıldı\n" #: main.c:908 #, c-format msgid " %d/%d meta-equivalence classes created\n" msgstr " %d/%d ara-denklik sınıfı yaratıldı\n" #: main.c:914 #, c-format msgid " %d (%d saved) hash collisions, %d DFAs equal\n" msgstr " %d (%d kaydedildi) saçılma çarpışması, %d DFA denk\n" #: main.c:916 #, c-format msgid " %d sets of reallocations needed\n" msgstr " %d tekrar ayırım kümesine ihtiyaç var\n" #: main.c:918 #, c-format msgid " %d total table entries needed\n" msgstr " %d toplam tablo girdisine ihtiyaç var\n" #: main.c:995 #, c-format msgid "Internal error. flexopts are malformed.\n" msgstr "İç hata. flexopt'lar bozuk.\n" #: main.c:1005 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Daha fazla bilgi için `%s --help' yazın.\n" #: main.c:1062 #, c-format msgid "unknown -C option '%c'" msgstr "bilinmeyen -C seçeneği '%c'" #: main.c:1191 #, c-format msgid "%s %s\n" msgstr "%s %s\n" #: main.c:1466 msgid "fatal parse error" msgstr "ölümcül ayrıştırma hatası" #: main.c:1498 #, c-format msgid "could not create backing-up info file %s" msgstr "yedekleme bilgi dosyası %s oluşturulamadı" #: main.c:1519 #, c-format msgid "-l AT&T lex compatibility option entails a large performance penalty\n" msgstr "-l AT&T lex uyumluluğu seçeneği önemli ölçüde yavaşlamaya yol açar\n" #: main.c:1522 #, c-format msgid " and may be the actual source of other reported performance penalties\n" msgstr "" " ve belki bildirilen başka performans kayıplarının da kaynağı olabilir\n" #: main.c:1528 #, c-format msgid "" "%%option yylineno entails a performance penalty ONLY on rules that can match " "newline characters\n" msgstr "" "yylineno %%seçeneği YALNIZCA yenisatır karakterlerini de eşleyen satırlarda " "yavaşlar.\n" #: main.c:1535 #, c-format msgid "-I (interactive) entails a minor performance penalty\n" msgstr "-I (etkileşimli) küçük ölçekli bir yavaşlamaya neden olur\n" #: main.c:1540 #, c-format msgid "yymore() entails a minor performance penalty\n" msgstr "yymore() küçük ölçekli bir yavaşlamaya neden olur\n" #: main.c:1546 #, c-format msgid "REJECT entails a large performance penalty\n" msgstr "REJECT büyük ölçekli bir yavaşlamaya neden olur\n" #: main.c:1551 #, c-format msgid "Variable trailing context rules entail a large performance penalty\n" msgstr "" "Değişken izleyen bağlam kuralları, büyük ölçekli yavaşlamaya neden olur\n" #: main.c:1563 msgid "REJECT cannot be used with -f or -F" msgstr "REJECT, -f veya -F ile kullanılamaz" #: main.c:1566 #, c-format msgid "%option yylineno cannot be used with REJECT" msgstr "%option yylineno, REJECT ile birlikte kullanılamaz" #: main.c:1569 msgid "variable trailing context rules cannot be used with -f or -F" msgstr "değişken izleme ortamı kuralları, -f veya -F ile birlikte kullanılamaz" #: main.c:1692 #, c-format msgid "%option yyclass only meaningful for C++ scanners" msgstr "%option yyclass, sadece C++ tarayıcıları için anlamlıdır" #: main.c:1799 #, c-format msgid "Usage: %s [OPTIONS] [FILE]...\n" msgstr "Kullanım: %s [SEÇENEKLER...] [DOSYA...]\n" #: main.c:1802 #, c-format msgid "" "Generates programs that perform pattern-matching on text.\n" "\n" "Table Compression:\n" " -Ca, --align trade off larger tables for better memory alignment\n" " -Ce, --ecs construct equivalence classes\n" " -Cf do not compress tables; use -f representation\n" " -CF do not compress tables; use -F representation\n" " -Cm, --meta-ecs construct meta-equivalence classes\n" " -Cr, --read use read() instead of stdio for scanner input\n" " -f, --full generate fast, large scanner. Same as -Cfr\n" " -F, --fast use alternate table representation. Same as -CFr\n" " -Cem default compression (same as --ecs --meta-ecs)\n" "\n" "Debugging:\n" " -d, --debug enable debug mode in scanner\n" " -b, --backup write backing-up information to %s\n" " -p, --perf-report write performance report to stderr\n" " -s, --nodefault suppress default rule to ECHO unmatched text\n" " -T, --trace %s should run in trace mode\n" " -w, --nowarn do not generate warnings\n" " -v, --verbose write summary of scanner statistics to stdout\n" "\n" "Files:\n" " -o, --outfile=FILE specify output filename\n" " -S, --skel=FILE specify skeleton file\n" " -t, --stdout write scanner on stdout instead of %s\n" " --yyclass=NAME name of C++ class\n" " --header-file=FILE create a C header file in addition to the " "scanner\n" " --tables-file[=FILE] write tables to FILE\n" "\n" "Scanner behavior:\n" " -7, --7bit generate 7-bit scanner\n" " -8, --8bit generate 8-bit scanner\n" " -B, --batch generate batch scanner (opposite of -I)\n" " -i, --case-insensitive ignore case in patterns\n" " -l, --lex-compat maximal compatibility with original lex\n" " -X, --posix-compat maximal compatibility with POSIX lex\n" " -I, --interactive generate interactive scanner (opposite of -B)\n" " --yylineno track line count in yylineno\n" "\n" "Generated code:\n" " -+, --c++ generate C++ scanner class\n" " -Dmacro[=defn] #define macro defn (default defn is '1')\n" " -L, --noline suppress #line directives in scanner\n" " -P, --prefix=STRING use STRING as prefix instead of \"yy\"\n" " -R, --reentrant generate a reentrant C scanner\n" " --bison-bridge scanner for bison pure parser.\n" " --bison-locations include yylloc support.\n" " --stdinit initialize yyin/yyout to stdin/stdout\n" " --noansi-definitions old-style function definitions\n" " --noansi-prototypes empty parameter list in prototypes\n" " --nounistd do not include \n" " --noFUNCTION do not generate a particular FUNCTION\n" "\n" "Miscellaneous:\n" " -c do-nothing POSIX option\n" " -n do-nothing POSIX option\n" " -?\n" " -h, --help produce this help message\n" " -V, --version report %s version\n" msgstr "" "Metin üzerinde kalıp eşleyen yazılımlar oluşturur.\n" "\n" "Tablo Sıkıştırma Seçenekleri:\n" " -Ca, --align daha iyi bellek hizalaması için daha büyük tablolardan\n" " vazgeçer.\n" " -Ce, --ecs eşitlik sınıfları oluşturur\n" " -Cf tabloları sıkıştırmaz; -f gösterimini kullanır\n" " -CF tabloları sıkıştırmaz; -F gösterimini kullanır\n" " -Cm, --meta-ecs üst-eşitlik sınıfları oluşturur\n" " -Cr, --read tarama girdisi için stdio yerine read() kullanır\n" " -f, --full hızlı, büyük tarayıcı oluşturur. -Cfr ile aynı\n" " -F, --fast alternatif tablo gösterimi kullanır. -CFr ile aynı\n" " -Cem ön tanımlı sıkıştırma (--ecs --meta-ecs ile aynı)\n" "\n" "Hata Ayıklama:\n" " -d, --debug tarayıcıda hata ayıklama kipini etkinleştirir\n" " -b, --backup yedekleme bilgisini %s'e yazdırır\n" " -p, --perf-report performans raporunu standart hataya yazdırır\n" " -s, --nodefault eşleşmeyen metni göstermek davranışını durdurur\n" " -T, --trace %s izleme kipinde çalışmalıdır\n" " -w, --nowarn uyarı bildirmez\n" " -v, --verbose tarama istatistiklerini standart çıktıya yazdırır\n" "\n" "Files:\n" " -o, --outfile=DOSYA çıktı dosya adını belirtir\n" " -S, --skel=DOSYA iskelet dosyanın adını belirtir\n" " -t, --stdout tarayıcıyı %s yerine stdout'a yazdırır\n" " --yyclass=İSİM C++ sınıfının ismi\n" " --header-file=DOSYA tarayıcı yanında C başlık dosyası da oluşturur\n" " --tables-file[=DOSYA] tabloları DOSYA'ya yazar\n" "\n" "Tarayıcı davranışı:\n" " -7, --7bit 7-bit tarayıcı oluşturur\n" " -8, --8bit 8-bit tarayıcı oluşturur\n" " -B, --batch etkileşimsiz tarayıcı oluşturur (-I'nın tersi)\n" " -i, --case-insensitive kalıplarda büyük/küçük harf gözetmez\n" " -l, --lex-compat lex ile en fazla uyumluluğu sağlar\n" " -X, --posix-compat POSIX lex ile en fazla uyumluluğu sağlar\n" " -I, --interactive etkileşimli tarayıcı oluşturur (-B'nin tersi)\n" " --yylineno yylineno içinde satır sayısını tutar\n" "\n" "Oluşturulan kod:\n" " -+, --c++ C++ tarayıcı sınıfı oluşturur\n" " -Dmacro[=defn] #define ile makro tanımı (öntanımlı defn, '1')\n" " -L, --noline tarayıcıda #line yönergeleri oluşturmaz\n" " -P, --prefix=STRING \"yy\" yerine STRING'i önek olarak kullanır\n" " -R, --reentrant yeniden girişli C tarayıcısı oluşturur\n" " --bison-bridge saf bison ayrıştırıcısı için tarayıcı.\n" " --bison-locations yylloc desteğini etkinleştirir.\n" " --stdinit yyin/yyout'u stdin/stdout'a tanımlar\n" " --noansi-definitions eski tür işlev tanımları\n" " --noansi-prototypes prototiplerde boş parametre listesi\n" " --nounistd 'yi içermez\n" " --noFUNCTION FUNCTION ismindeki işlevi üretmez\n" "\n" "Muhtelif:\n" " -c hiç bir şey yapmayan POSIX seçeneği\n" " -n hiç bir şey yapmayan POSIX seçeneği\n" " -?\n" " -h, --help bu yardım bilgisini gösterir\n" " -V, --version %s sürümünü bildirir\n" #: misc.c:65 msgid "allocation of sko_stack failed" msgstr "" #: misc.c:102 misc.c:128 #, c-format msgid "name \"%s\" ridiculously long" msgstr "\"%s\" ismi gülünç derecede uzun" #: misc.c:177 msgid "memory allocation failed in allocate_array()" msgstr "allocate_array() içinde bellek ayırımı başarısız" #: misc.c:230 #, c-format msgid "bad character '%s' detected in check_char()" msgstr "check_char() içinde hatalı karakter '%s' saptandı" #: misc.c:235 #, c-format msgid "scanner requires -8 flag to use the character %s" msgstr "tarayıcı %s karakterini kullanmak için -8 bayrağına ihtiyaç duyar" #: misc.c:268 msgid "dynamic memory failure in copy_string()" msgstr "copy_string() içinde dinamik bellek hatası" #: misc.c:367 #, c-format msgid "%s: fatal internal error, %s\n" msgstr "%s: ölümcül iç hata, %s\n" #: misc.c:803 msgid "attempt to increase array size failed" msgstr "dizi boyutunu artırma denemesi başarısız" #: misc.c:930 msgid "bad line in skeleton file" msgstr "iskelet dosya içinde hatalı satır" #: misc.c:979 msgid "memory allocation failed in yy_flex_xmalloc()" msgstr "yy_flex_xmalloc() içinde bellek ayırımı başarısız" #: nfa.c:104 #, c-format msgid "" "\n" "\n" "********** beginning dump of nfa with start state %d\n" msgstr "" "\n" "\n" "********** başlangıç durumu %d olan nfa'nın dökümüne başlanıyor\n" #: nfa.c:115 #, c-format msgid "state # %4d\t" msgstr "durum # %4d\t" #: nfa.c:130 #, c-format msgid "********** end of dump\n" msgstr "********** döküm sonu\n" #: nfa.c:174 msgid "empty machine in dupmachine()" msgstr "dupmachine() içinde boş makine" #: nfa.c:240 #, c-format msgid "Variable trailing context rule at line %d\n" msgstr "%d satırında değişken izleyen bağlam kuralı\n" #: nfa.c:364 msgid "bad state type in mark_beginning_as_normal()" msgstr "mark_beginning_as_normal() içinde hatalı durum türü" #: nfa.c:609 #, c-format msgid "input rules are too complicated (>= %d NFA states)" msgstr "girdi kuralları fazla karışık (>= %d NFA durumu)" #: nfa.c:688 msgid "found too many transitions in mkxtion()" msgstr "mkxtion() içinde çok fazla geçiş bulundu" #: nfa.c:714 #, c-format msgid "too many rules (> %d)!" msgstr "çok fazla kural (> %d)!" #: parse.y:159 msgid "unknown error processing section 1" msgstr "1. bölüm işlenirken bilinmeyen hata oluştu" #: parse.y:184 parse.y:351 msgid "bad start condition list" msgstr "hatalı başlangıç şart listesi" #: parse.y:315 msgid "unrecognized rule" msgstr "bilinmeyen kural" #: parse.y:434 parse.y:447 parse.y:516 msgid "trailing context used twice" msgstr "izleyen bağlam iki defa kullanılmış" #: parse.y:552 parse.y:562 parse.y:635 parse.y:645 msgid "bad iteration values" msgstr "hatalı yineleme değerleri" #: parse.y:580 parse.y:598 parse.y:663 parse.y:681 msgid "iteration value must be positive" msgstr "yineleme değeri pozitif olmalı" #: parse.y:804 parse.y:814 #, c-format msgid "the character range [%c-%c] is ambiguous in a case-insensitive scanner" msgstr "" "[%c-%c] karakter aralığı, büyük/küçük harf farkı gözetmeyen bir tarayıcıda\n" "belirsiz anlamlı" #: parse.y:819 msgid "negative range in character class" msgstr "karakter sınıflarında negatif aralık" #: parse.y:916 #, fuzzy msgid "[:^lower:] is ambiguous in case insensitive scanner" msgstr "" "[%c-%c] karakter aralığı, büyük/küçük harf farkı gözetmeyen bir tarayıcıda\n" "belirsiz anlamlı" #: parse.y:922 #, fuzzy msgid "[:^upper:] ambiguous in case insensitive scanner" msgstr "" "[%c-%c] karakter aralığı, büyük/küçük harf farkı gözetmeyen bir tarayıcıda\n" "belirsiz anlamlı" #: scan.l:75 scan.l:618 scan.l:676 msgid "Input line too long\n" msgstr "Girdi satırı fazla uzun\n" #: scan.l:161 #, c-format msgid "malformed '%top' directive" msgstr "hatalı `%top' yönergesi" #: scan.l:183 #, no-c-format msgid "unrecognized '%' directive" msgstr "'%' yönergesi bilinmiyor" #: scan.l:192 #, fuzzy msgid "Definition name too long\n" msgstr "Girdi satırı fazla uzun\n" #: scan.l:284 msgid "Unmatched '{'" msgstr "'{' eşleşmiyor" #: scan.l:300 #, c-format msgid "Definition value for {%s} too long\n" msgstr "" #: scan.l:317 msgid "incomplete name definition" msgstr "eksik isim tanımlaması" #: scan.l:443 #, fuzzy msgid "Option line too long\n" msgstr "Girdi satırı fazla uzun\n" #: scan.l:451 #, c-format msgid "unrecognized %%option: %s" msgstr "geçersiz %%seçenek: %s" #: scan.l:633 scan.l:800 msgid "bad character class" msgstr "hatalı karakter sınıfı" #: scan.l:683 #, c-format msgid "undefined definition {%s}" msgstr "belirsiz tanım {%s}" #: scan.l:755 #, c-format msgid "bad : %s" msgstr "hatalı : %s" #: scan.l:768 msgid "missing quote" msgstr "eksik çift tırnak" #: scan.l:834 #, c-format msgid "bad character class expression: %s" msgstr "bozuk karakter sınıfı ifadesi: %s" #: scan.l:856 msgid "bad character inside {}'s" msgstr "{}'ler içinde hatalı karakter" #: scan.l:862 msgid "missing }" msgstr "eksik }" #: scan.l:940 msgid "EOF encountered inside an action" msgstr "bir eylem içinde EOF ile karşılaşıldı" #: scan.l:945 #, fuzzy msgid "EOF encountered inside pattern" msgstr "bir eylem içinde EOF ile karşılaşıldı" #: scan.l:967 #, c-format msgid "bad character: %s" msgstr "hatalı karakter: %s" #: scan.l:996 #, c-format msgid "can't open %s" msgstr "%s açılamıyor" #: scanopt.c:291 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Kullanım: %s [SEÇENEKLER...]\n" #: scanopt.c:564 #, c-format msgid "option `%s' doesn't allow an argument\n" msgstr "`%s' seçeneği argüman kullanmaz\n" #: scanopt.c:569 #, c-format msgid "option `%s' requires an argument\n" msgstr "`%s' seçeneği için argüman zorunludur\n" #: scanopt.c:573 #, c-format msgid "option `%s' is ambiguous\n" msgstr "`%s' seçeneği belirsiz\n" #: scanopt.c:577 #, c-format msgid "Unrecognized option `%s'\n" msgstr "Bilinmeyen seçenek: `%s'\n" #: scanopt.c:581 #, c-format msgid "Unknown error=(%d)\n" msgstr "Bilinmeyen hata=(%d)\n" #: sym.c:100 msgid "symbol table memory allocation failed" msgstr "simge tablosu bellek ayırımı başarısız" #: sym.c:202 msgid "name defined twice" msgstr "isim iki defa tanımlandı" #: sym.c:253 #, c-format msgid "start condition %s declared twice" msgstr "başlangıç şartı %s iki defa bildirildi" #: yylex.c:56 msgid "premature EOF" msgstr "erken EOF" #: yylex.c:198 #, c-format msgid "End Marker\n" msgstr "Bitiş İşaretçisi\n" #: yylex.c:204 #, c-format msgid "*Something Weird* - tok: %d val: %d\n" msgstr "*Garip Bir Şey* -andaç: %d değer: %d\n" #~ msgid "consistency check failed in symfollowset" #~ msgstr "symfollowset içindeki tutarlık kontrolü başarısız" flex-2.5.39/po/ca.po0000644000175000017500000010110612314621664014367 0ustar srivastasrivasta# Catalan translation of flex message catalogs. # Copyright © 2002, 2003, 2006, 2008, 2012 The Flex Project (msgids) # This file is distributed under the same licence as the flex package. # Jordi Mallach , 2002, 2003, 2006, 2008, 2012. # msgid "" msgstr "" "Project-Id-Version: flex 2.5.37\n" "Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2014-03-26 15:00-0400\n" "PO-Revision-Date: 2012-12-04 17:36+0100\n" "Last-Translator: Jordi Mallach \n" "Language-Team: Catalan \n" "Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: buf.c:78 msgid "Allocation of buffer to print string failed" msgstr "Ha fallat l'assignació d'un búfer per imprimir la cadena" #: buf.c:100 msgid "Allocation of buffer for line directive failed" msgstr "Ha fallat l'assignació d'un buffer per a la directiva de línia" #: buf.c:177 msgid "Allocation of buffer for m4 def failed" msgstr "Ha fallat l'assignació d'un búfer per la definició m4" #: buf.c:197 msgid "Allocation of buffer for m4 undef failed" msgstr "Ha fallat l'assignació d'un búfer per la indefinició m4" #: dfa.c:61 #, c-format msgid "State #%d is non-accepting -\n" msgstr "L'estat #%d és no-acceptar -\n" #: dfa.c:124 msgid "dangerous trailing context" msgstr "Context posterior perillós" #: dfa.c:166 #, c-format msgid " associated rule line numbers:" msgstr " números de línia associats a la regla:" #: dfa.c:202 #, c-format msgid " out-transitions: " msgstr " fi de transicions: " #: dfa.c:210 #, c-format msgid "" "\n" " jam-transitions: EOF " msgstr "" "\n" " transicions de bloqueig: EOF " #: dfa.c:341 msgid "consistency check failed in epsclosure()" msgstr "la comprovació de consistència ha fallat en epsclosure()" #: dfa.c:429 msgid "" "\n" "\n" "DFA Dump:\n" "\n" msgstr "" "\n" "\n" "Bolcat AFD:\n" "\n" #: dfa.c:604 msgid "could not create unique end-of-buffer state" msgstr "no s'ha pogut crear un estat únic de final-de-búfer" #: dfa.c:625 #, c-format msgid "state # %d:\n" msgstr "estat # %d:\n" #: dfa.c:785 msgid "Could not write yynxt_tbl[][]" msgstr "No s'ha pogut escriure yynxt_tbl[][]" #: dfa.c:1049 msgid "bad transition character detected in sympartition()" msgstr "caràcter de transició incorrecte detectat en sympartition()" #: gen.c:478 msgid "" "\n" "\n" "Equivalence Classes:\n" "\n" msgstr "" "\n" "\n" "Classes d'equivalència:\n" "\n" #: gen.c:662 gen.c:691 gen.c:1215 #, c-format msgid "state # %d accepts: [%d]\n" msgstr "l'estat # %d accepta: [%d]\n" #: gen.c:1110 #, c-format msgid "state # %d accepts: " msgstr "l'estat # %d accepta: " #: gen.c:1157 msgid "Could not write yyacclist_tbl" msgstr "No s'ha pogut escriure yyacclist_tbl" #: gen.c:1233 msgid "Could not write yyacc_tbl" msgstr "No s'ha pogut escriure yyacc_tbl" #: gen.c:1248 gen.c:1633 gen.c:1656 msgid "Could not write ecstbl" msgstr "No s'ha pogut escriure ecstbl" #: gen.c:1271 msgid "" "\n" "\n" "Meta-Equivalence Classes:\n" msgstr "" "\n" "\n" "Classes de metaequivalència:\n" #: gen.c:1293 msgid "Could not write yymeta_tbl" msgstr "No s'ha pogut escriure yymeta_tbl" #: gen.c:1354 msgid "Could not write yybase_tbl" msgstr "No s'ha pogut escriure yybase_tbl" #: gen.c:1388 msgid "Could not write yydef_tbl" msgstr "No s'ha pogut escriure yydef_tbl" #: gen.c:1428 msgid "Could not write yynxt_tbl" msgstr "No s'ha pogut escriure yynxt_tbl" #: gen.c:1464 msgid "Could not write yychk_tbl" msgstr "No s'ha pogut escriure yychk_tbl" #: gen.c:1618 gen.c:1647 msgid "Could not write ftbl" msgstr "No s'ha pogut escriure ftbl" #: gen.c:1624 msgid "Could not write ssltbl" msgstr "No s'ha pogut escriure ssltbl" #: gen.c:1675 msgid "Could not write eoltbl" msgstr "No s'ha pogut escriure eoltbl" #: gen.c:1735 msgid "Could not write yynultrans_tbl" msgstr "No s'ha pogut escriure yynultrans_tbl" #: main.c:191 msgid "rule cannot be matched" msgstr "no es pot satisfer la regla" #: main.c:196 msgid "-s option given but default rule can be matched" msgstr "S'ha especificat l'opció -s però es pot aplicar la regla per defecte" #: main.c:236 msgid "Can't use -+ with -l option" msgstr "No es pot fer servir -+ amb l'opció -l" #: main.c:239 msgid "Can't use -f or -F with -l option" msgstr "No es pot fer servir -f o -F amb l'opció -l" #: main.c:243 msgid "Can't use --reentrant or --bison-bridge with -l option" msgstr "No es pot fer servir --reentrant o --bison-bridge amb l'opció -l" #: main.c:275 msgid "-Cf/-CF and -Cm don't make sense together" msgstr "-Cf/-CF i -Cm no tenen sentit juntes" #: main.c:278 msgid "-Cf/-CF and -I are incompatible" msgstr "-Cf/-CF i -I són incompatibles" #: main.c:282 msgid "-Cf/-CF are incompatible with lex-compatibility mode" msgstr "-Cf/-CF són incompatibles amb el mode de compatibilitat amb lex" #: main.c:287 msgid "-Cf and -CF are mutually exclusive" msgstr "-Cf i -CF són mútuament excloents" #: main.c:291 msgid "Can't use -+ with -CF option" msgstr "No es pot fer servir -+ amb l'opció -CF" #: main.c:294 #, c-format msgid "%array incompatible with -+ option" msgstr "%array és incompatible amb l'opció -+" #: main.c:299 msgid "Options -+ and --reentrant are mutually exclusive." msgstr "Les opcions -+ i --reentrant són mútuament excloents" #: main.c:302 msgid "bison bridge not supported for the C++ scanner." msgstr "No es suporta «bison bridge» per a l'analitzador de C++" #: main.c:357 main.c:403 #, c-format msgid "could not create %s" msgstr "no s'ha pogut crear %s" #: main.c:416 msgid "could not write tables header" msgstr "no s'ha pogut crear la capçalera de les taules" #: main.c:420 #, c-format msgid "can't open skeleton file %s" msgstr "No es pot obrir el fitxer d'esquema %s" #: main.c:456 msgid "allocation of macro definition failed" msgstr "Ha fallat l'assignació de la definició de la macro" #: main.c:504 #, c-format msgid "input error reading skeleton file %s" msgstr "error d'entrada al llegir el fitxer d'esquema %s" #: main.c:508 #, c-format msgid "error closing skeleton file %s" msgstr "s'ha produït un error en tancar el fitxer d'esquema %s" #: main.c:693 #, c-format msgid "error creating header file %s" msgstr "s'ha produït un error en crear el fitxer de capçalera %s" #: main.c:701 #, c-format msgid "error writing output file %s" msgstr "s'ha produït un error en escriure el fitxer d'eixida %s" #: main.c:705 #, c-format msgid "error closing output file %s" msgstr "s'ha produït un error en tancar el fitxer d'eixida %s" #: main.c:709 #, c-format msgid "error deleting output file %s" msgstr "s'ha produït un error en suprimir el fitxer d'eixida %s" #: main.c:716 #, c-format msgid "No backing up.\n" msgstr "No hi ha retrocés.\n" #: main.c:720 #, c-format msgid "%d backing up (non-accepting) states.\n" msgstr "%d estats de retrocés (no-acceptació).\n" #: main.c:724 #, c-format msgid "Compressed tables always back up.\n" msgstr "Les taules comprimides sempre impliquen un retard.\n" #: main.c:727 #, c-format msgid "error writing backup file %s" msgstr "s'ha produït un error en escriure el fitxer de còpia de seguretat %s" #: main.c:731 #, c-format msgid "error closing backup file %s" msgstr "s'ha produït un error en tancar el fitxer de còpia de seguretat %s" #: main.c:736 #, c-format msgid "%s version %s usage statistics:\n" msgstr "estadístiques d'ús de %s versió %s:\n" #: main.c:739 #, c-format msgid " scanner options: -" msgstr " opcions de l'analitzador: -" # NFA == Autómata finit no-determinista. jm #: main.c:818 #, c-format msgid " %d/%d NFA states\n" msgstr " %d/%d estats AFN\n" # DFA == Autómata finit deterministic. jm #: main.c:820 #, c-format msgid " %d/%d DFA states (%d words)\n" msgstr " %d/%d estats AFD (%d paraules)\n" #: main.c:822 #, c-format msgid " %d rules\n" msgstr " %d regles\n" #: main.c:827 #, c-format msgid " No backing up\n" msgstr " Sense retrocés\n" #: main.c:831 #, c-format msgid " %d backing-up (non-accepting) states\n" msgstr " %d estats de retrocés (no-acceptació)\n" # Es refereix a còpia de seguretat, o retrocés? jm #: main.c:836 #, c-format msgid " Compressed tables always back-up\n" msgstr " Sempre es realitza còpia de seguretat de les taules comprimides\n" #: main.c:840 #, c-format msgid " Beginning-of-line patterns used\n" msgstr " Utilitzats patrons de principi-de-línia\n" #: main.c:842 #, c-format msgid " %d/%d start conditions\n" msgstr " %d/%d condicions d'activació\n" #: main.c:846 #, c-format msgid " %d epsilon states, %d double epsilon states\n" msgstr " %d estats èpsilon, %d estats doble èpsilon\n" #: main.c:850 #, c-format msgid " no character classes\n" msgstr " sense classes de caràcter\n" #: main.c:854 #, c-format msgid " %d/%d character classes needed %d/%d words of storage, %d reused\n" msgstr "" " les classes de caràcters %d/%d necessitaren %d/%d paraules de magatzement, " "%d reutilitzades\n" #: main.c:859 #, c-format msgid " %d state/nextstate pairs created\n" msgstr " %d parells estat/estat-següent creats\n" #: main.c:862 #, c-format msgid " %d/%d unique/duplicate transitions\n" msgstr " %d/%d transicions úniques/duplicades\n" #: main.c:867 #, c-format msgid " %d table entries\n" msgstr " %d entrades de la taula\n" #: main.c:875 #, c-format msgid " %d/%d base-def entries created\n" msgstr " %d/%d entrades base-def creades\n" #: main.c:879 #, c-format msgid " %d/%d (peak %d) nxt-chk entries created\n" msgstr " %d/%d (pic %d) entrades nxt-chk creades\n" #: main.c:883 #, c-format msgid " %d/%d (peak %d) template nxt-chk entries created\n" msgstr " %d/%d (pic %d) entrades de plantilla nxt-chk creades\n" #: main.c:887 #, c-format msgid " %d empty table entries\n" msgstr " %d entrades de la tabla buides\n" #: main.c:889 #, c-format msgid " %d protos created\n" msgstr " %d prototips creats\n" #: main.c:892 #, c-format msgid " %d templates created, %d uses\n" msgstr " %d plantilles creades, %d usos\n" #: main.c:900 #, c-format msgid " %d/%d equivalence classes created\n" msgstr " %d/%d classes d'equivalència creades\n" #: main.c:908 #, c-format msgid " %d/%d meta-equivalence classes created\n" msgstr " %d/%d classes de meta-equivalència creades\n" # Hash? jm # segons un company de treballa que estudia a la UOC, allí # les "hashtables" s'anomenen "taules de DISPERSIÓ". En aquest context # no sé que dir-te. ear #: main.c:914 #, c-format msgid " %d (%d saved) hash collisions, %d DFAs equal\n" msgstr " %d (%d desades) col·lisions d'ubicació («hash»), %d AFD iguals\n" #: main.c:916 #, c-format msgid " %d sets of reallocations needed\n" msgstr " es necessiten %d conjunts de relocalització\n" #: main.c:918 #, c-format msgid " %d total table entries needed\n" msgstr " es necessiten %d entrades totals de la taula\n" #: main.c:995 #, c-format msgid "Internal error. flexopts are malformed.\n" msgstr "Error intern. Els flexopts estan malformats.\n" #: main.c:1005 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Proveu «%s --help» per a obtindre més informació.\n" #: main.c:1062 #, c-format msgid "unknown -C option '%c'" msgstr "opció de -C desconeguda «%c»" #: main.c:1191 #, c-format msgid "%s %s\n" msgstr "%s %s\n" # Hmm. No se si açò està be. jm #: main.c:1466 msgid "fatal parse error" msgstr "s'ha produït un error fatal d'anàlisi sintàctic" #: main.c:1498 #, c-format msgid "could not create backing-up info file %s" msgstr "no s'ha pogut crear un fitxer d'informació del retrocés %s" #: main.c:1519 #, c-format msgid "-l AT&T lex compatibility option entails a large performance penalty\n" msgstr "" "-l l'opció de compatibilitat amb AT&T lex implica una penalització del " "rendiment molt gran\n" #: main.c:1522 #, c-format msgid " and may be the actual source of other reported performance penalties\n" msgstr "" " i pot ser l'origen real d'altres penalitzacions del rendiment notificades\n" #: main.c:1528 #, c-format msgid "" "%%option yylineno entails a performance penalty ONLY on rules that can match " "newline characters\n" msgstr "" "l'%%opció yylineno implica una penalització del rendiment NOMÉS en regles " "que poden fer coincidir caràcters de nova línia\n" #: main.c:1535 #, c-format msgid "-I (interactive) entails a minor performance penalty\n" msgstr "-I (interactiu) implica una xicoteta penalització del rendiment\n" #: main.c:1540 #, c-format msgid "yymore() entails a minor performance penalty\n" msgstr "yymore() implica una xicoteta penalització del rendiment\n" #: main.c:1546 #, c-format msgid "REJECT entails a large performance penalty\n" msgstr "REJECT implica una penalització del rendiment molt gran\n" #: main.c:1551 #, c-format msgid "Variable trailing context rules entail a large performance penalty\n" msgstr "" "Les regles de context posterior variable implica una penalització del " "rendiment molt gran\n" #: main.c:1563 msgid "REJECT cannot be used with -f or -F" msgstr "REJECT no es pot fer servir amb -f o -F" #: main.c:1566 #, c-format msgid "%option yylineno cannot be used with REJECT" msgstr "l'%opció yylineno no es pot fer servir amb REJECT" #: main.c:1569 msgid "variable trailing context rules cannot be used with -f or -F" msgstr "" "Les regles de context posterior variable no es poden utilitzar amb -f o -F" #: main.c:1692 #, c-format msgid "%option yyclass only meaningful for C++ scanners" msgstr "l'%opció yyclass només té sentit per a analitzadors de C++" #: main.c:1799 #, c-format msgid "Usage: %s [OPTIONS] [FILE]...\n" msgstr "Forma d'ús: %s [OPCIONS] [FITXER]...\n" # Al grep jo sempre he traduït match com a coincidir. No sé, no m'agrada # molt això de text emparellat. # Encara que coincident tampoc no m'acaba de convéncer. ear # I que faig amb "reentrant" i "parser"? jm #: main.c:1802 #, c-format msgid "" "Generates programs that perform pattern-matching on text.\n" "\n" "Table Compression:\n" " -Ca, --align trade off larger tables for better memory alignment\n" " -Ce, --ecs construct equivalence classes\n" " -Cf do not compress tables; use -f representation\n" " -CF do not compress tables; use -F representation\n" " -Cm, --meta-ecs construct meta-equivalence classes\n" " -Cr, --read use read() instead of stdio for scanner input\n" " -f, --full generate fast, large scanner. Same as -Cfr\n" " -F, --fast use alternate table representation. Same as -CFr\n" " -Cem default compression (same as --ecs --meta-ecs)\n" "\n" "Debugging:\n" " -d, --debug enable debug mode in scanner\n" " -b, --backup write backing-up information to %s\n" " -p, --perf-report write performance report to stderr\n" " -s, --nodefault suppress default rule to ECHO unmatched text\n" " -T, --trace %s should run in trace mode\n" " -w, --nowarn do not generate warnings\n" " -v, --verbose write summary of scanner statistics to stdout\n" "\n" "Files:\n" " -o, --outfile=FILE specify output filename\n" " -S, --skel=FILE specify skeleton file\n" " -t, --stdout write scanner on stdout instead of %s\n" " --yyclass=NAME name of C++ class\n" " --header-file=FILE create a C header file in addition to the " "scanner\n" " --tables-file[=FILE] write tables to FILE\n" "\n" "Scanner behavior:\n" " -7, --7bit generate 7-bit scanner\n" " -8, --8bit generate 8-bit scanner\n" " -B, --batch generate batch scanner (opposite of -I)\n" " -i, --case-insensitive ignore case in patterns\n" " -l, --lex-compat maximal compatibility with original lex\n" " -X, --posix-compat maximal compatibility with POSIX lex\n" " -I, --interactive generate interactive scanner (opposite of -B)\n" " --yylineno track line count in yylineno\n" "\n" "Generated code:\n" " -+, --c++ generate C++ scanner class\n" " -Dmacro[=defn] #define macro defn (default defn is '1')\n" " -L, --noline suppress #line directives in scanner\n" " -P, --prefix=STRING use STRING as prefix instead of \"yy\"\n" " -R, --reentrant generate a reentrant C scanner\n" " --bison-bridge scanner for bison pure parser.\n" " --bison-locations include yylloc support.\n" " --stdinit initialize yyin/yyout to stdin/stdout\n" " --noansi-definitions old-style function definitions\n" " --noansi-prototypes empty parameter list in prototypes\n" " --nounistd do not include \n" " --noFUNCTION do not generate a particular FUNCTION\n" "\n" "Miscellaneous:\n" " -c do-nothing POSIX option\n" " -n do-nothing POSIX option\n" " -?\n" " -h, --help produce this help message\n" " -V, --version report %s version\n" msgstr "" "Genera programes que realitzen emparellaments de patrons en text.\n" "\n" "Compressió de taules:\n" " -Ca, --align renuncia a taules més grans a canvi de una millor " "alineació\n" " -Ce, --ecs construeix classes d'equivalència\n" " -Cf no comprimeixes les taules; utilitza la representació -" "f\n" " -CF no comprimeixes les taules; utilitza la representació -" "F\n" " -Cm, --meta-ecs construeix classes de metaequivalència\n" " -Cr, --read utilitza read() en lloc de stdio com a entrada de " "l'analitzador\n" " -f, --full genera un analitzador ràpid i gran. El mateix que -Cfr\n" " -F, --fast usa una representació alternativa de taules. El mateix " "que -CFr\n" " -Cem compressió per defecte (el mateix que --ecs --meta-ecs)\n" "\n" "Depuració:\n" " -d, --debug activa el mode de depuració en l'analitzador\n" " -b, --backup escriu l'informació dels retrocessos en %s\n" " -p, --perf-report escriu l'informe de rendiment en stderr\n" " -s, --nodefault suprimeix la regla per defecte de visualitzar " "(ECHO) el text no emparellat\n" " -T, --trace %s hauria d'executar-se en mode traça\n" " -w, --nowarn no generes avisos\n" " -v, --verbose escriu un resum de les estadístiques de " "l'analitzador en stdout\n" "\n" "Fitxers:\n" " -o, --outfile=FITXER especifica el fitxer d'eixida\n" " -S, --skel=FITXER especifica el fitxer d'esquema\n" " -t, --stdout escriu l'analitzador en stdout en lloc de %s\n" " --yyclass=NOM nom de la classe C++\n" " --header-file=FITXER crea un fitxer de capçaleres de C a més de " "l'analitzador\n" " --tables-file=[FITXER] escriu les taules en FITXER\n" "\n" "Comportament de l'analitzador:\n" " -7, --7bit genera un analitzador de 7 bits\n" " -8, --8bit genera un analitzador de 8 bits\n" " -B, --batch genera un analitzador no interactiu (el contrari a " "-I)\n" " -i, --case-insensitive Ignora les diferències de majúscules i minúscules " "en els patrons\n" " -l, --lex-compat compatibilitat màxima amb el lex original\n" " -X, --posix-compat compatibilitat màxima amb el lex POSIX\n" " -I, --interactive genera un analitzador interactiu (el contrari a -" "B)\n" " --yylineno traça el compte de línies en yylineno\n" "\n" "Codi generat:\n" " -+, --c++ genera un analitzador de la classe C++\n" " -Dmacro[=defn] #define macro defn (defn és «1» per defecte)\n" " -L, --noline suprimeix les directives #line en l'analitzador\n" " -P, --prefix=CADENA utilitza CADENA com prefix en comptes de «yy»\n" " -R, --reentrant genera un analitzador de C reentrant\n" " --bison-bridge analitzador per a l'analitzador pur de bison\n" " --bison-locations inclou suport per a yylloc\n" " --stdinit inicialitza yyin/yyout a stdin/stdout\n" " --noansi-definitions estil antic de definicions de funcions\n" " --noansi-prototypes llista de paràmetres buida als prototips\n" " --nounistd no inclogues \n" " --noFUNCIÓ no generes una FUNCIÓ en particular\n" "\n" "Miscel·lània:\n" " -c opció POSIX sense efecte\n" " -n opció POSIX sense efecte\n" " -?\n" " -h, --help mostra aquest missatge d'ajuda\n" " -V, --version informa de la versió de %s\n" #: misc.c:65 msgid "allocation of sko_stack failed" msgstr "Ha fallat l'assignació de «sko_stack»" #: misc.c:102 misc.c:128 #, c-format msgid "name \"%s\" ridiculously long" msgstr "el nom «%s» és ridículament llarg" #: misc.c:177 msgid "memory allocation failed in allocate_array()" msgstr "ha fallat l'assignació de memòria en allocate_array()" #: misc.c:230 #, c-format msgid "bad character '%s' detected in check_char()" msgstr "caràcter incorrecte «%s» detectat en check_char()" #: misc.c:235 #, c-format msgid "scanner requires -8 flag to use the character %s" msgstr "l'analitzador requereix l'opció -8 per a fer servir el caràcter %s" #: misc.c:268 msgid "dynamic memory failure in copy_string()" msgstr "errada de la memòria dinàmica en copy_string()" #: misc.c:367 #, c-format msgid "%s: fatal internal error, %s\n" msgstr "%s: error intern fatal, %s\n" #: misc.c:803 msgid "attempt to increase array size failed" msgstr "ha fallat l'intent d'augmentar la mida de la matriu" #: misc.c:930 msgid "bad line in skeleton file" msgstr "línia incorrecta en el fitxer d'esquema" #: misc.c:979 msgid "memory allocation failed in yy_flex_xmalloc()" msgstr "ha fallat l'assignació de memòria en yy_flex_xmalloc()" #: nfa.c:104 #, c-format msgid "" "\n" "\n" "********** beginning dump of nfa with start state %d\n" msgstr "" "\n" "\n" "********** s'està començant el bolcat de l'afn amb l'estat inicial %d\n" #: nfa.c:115 #, c-format msgid "state # %4d\t" msgstr "estat # %4d\t" #: nfa.c:130 #, c-format msgid "********** end of dump\n" msgstr "********** final del bolcat\n" #: nfa.c:174 msgid "empty machine in dupmachine()" msgstr "màquina buida en dupmachine()" #: nfa.c:240 #, c-format msgid "Variable trailing context rule at line %d\n" msgstr "Regla de context posterior variable en la línia %d\n" #: nfa.c:364 msgid "bad state type in mark_beginning_as_normal()" msgstr "tipus d'estat incorrecte en mark_beginning_as_normal()" #: nfa.c:609 #, c-format msgid "input rules are too complicated (>= %d NFA states)" msgstr "les regles d'entrada són massa complicades (>= %d estats AFN)" #: nfa.c:688 msgid "found too many transitions in mkxtion()" msgstr "s'han trobat massa transicions en mkxtion()" #: nfa.c:714 #, c-format msgid "too many rules (> %d)!" msgstr "massa regles (> %d)!" #: parse.y:159 msgid "unknown error processing section 1" msgstr "s'ha produït un error desconegut en processar la secció 1" #: parse.y:184 parse.y:351 msgid "bad start condition list" msgstr "condició de començament incorrecta" #: parse.y:315 msgid "unrecognized rule" msgstr "regla no reconeguda" #: parse.y:434 parse.y:447 parse.y:516 msgid "trailing context used twice" msgstr "s'ha utilitzat el context posterior dos vegades" #: parse.y:552 parse.y:562 parse.y:635 parse.y:645 msgid "bad iteration values" msgstr "valors d'iteració incorrectes" #: parse.y:580 parse.y:598 parse.y:663 parse.y:681 msgid "iteration value must be positive" msgstr "el valor d'iteració ha de ser positiu" #: parse.y:804 parse.y:814 #, c-format msgid "the character range [%c-%c] is ambiguous in a case-insensitive scanner" msgstr "" "el rang de caràcters [%c-%c] és ambigu en un analitzador insensible a les " "majúscules i minúscules" #: parse.y:819 msgid "negative range in character class" msgstr "rang negatiu en classe de caràcter" #: parse.y:916 msgid "[:^lower:] is ambiguous in case insensitive scanner" msgstr "" "[:^lower:] és ambigu en un analitzador insensible a les majúscules i " "minúscules" #: parse.y:922 msgid "[:^upper:] ambiguous in case insensitive scanner" msgstr "" "[:^upper:] és ambigu en un analitzador insensible a les majúscules i " "minúscules" #: scan.l:75 scan.l:618 scan.l:676 msgid "Input line too long\n" msgstr "La línia d'entrada és massa llarga\n" #: scan.l:161 #, c-format msgid "malformed '%top' directive" msgstr "directiva «%top» malformada" #: scan.l:183 #, no-c-format msgid "unrecognized '%' directive" msgstr "directiva «%» no reconeguda" #: scan.l:192 msgid "Definition name too long\n" msgstr "El nom de la definició és massa llarg\n" #: scan.l:284 msgid "Unmatched '{'" msgstr "«|» no emparellat" #: scan.l:300 #, c-format msgid "Definition value for {%s} too long\n" msgstr "El valor de la definició de {%s} és massa llarg\n" #: scan.l:317 msgid "incomplete name definition" msgstr "definició del nom incompleta" #: scan.l:443 msgid "Option line too long\n" msgstr "La línia d'opcions és massa llarga\n" #: scan.l:451 #, c-format msgid "unrecognized %%option: %s" msgstr "%%opció no reconeguda: %s" #: scan.l:633 scan.l:800 msgid "bad character class" msgstr "classe de caràcter incorrecta" #: scan.l:683 #, c-format msgid "undefined definition {%s}" msgstr "definició no definida {%s}" #: scan.l:755 #, c-format msgid "bad : %s" msgstr " incorrecta: %s" #: scan.l:768 msgid "missing quote" msgstr "manca una cometa" #: scan.l:834 #, c-format msgid "bad character class expression: %s" msgstr "expressió de la classe de caràcters incorrecta: %s" #: scan.l:856 msgid "bad character inside {}'s" msgstr "caràcter incorrecte dins de {}" #: scan.l:862 msgid "missing }" msgstr "manca una }" #: scan.l:940 msgid "EOF encountered inside an action" msgstr "s'ha trobat un EOF dins d'una acció" #: scan.l:945 msgid "EOF encountered inside pattern" msgstr "s'ha trobat un EOF dins d'un patró" #: scan.l:967 #, c-format msgid "bad character: %s" msgstr "caràcter incorrecte: %s" #: scan.l:996 #, c-format msgid "can't open %s" msgstr "no es pot obrir %s" #: scanopt.c:291 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Forma d'ús: %s [OPCIONS]...\n" #: scanopt.c:564 #, c-format msgid "option `%s' doesn't allow an argument\n" msgstr "l'opció «%s» no accepta arguments\n" #: scanopt.c:569 #, c-format msgid "option `%s' requires an argument\n" msgstr "l'opció «%s» requereix un argument\n" #: scanopt.c:573 #, c-format msgid "option `%s' is ambiguous\n" msgstr "l'opció «%s» és ambígua\n" #: scanopt.c:577 #, c-format msgid "Unrecognized option `%s'\n" msgstr "Opció no reconeguda «%s»\n" #: scanopt.c:581 #, c-format msgid "Unknown error=(%d)\n" msgstr "Error desconegut=(%d)\n" #: sym.c:100 msgid "symbol table memory allocation failed" msgstr "ha fallat l'assignació de memòria per a la taula de símbols" #: sym.c:202 msgid "name defined twice" msgstr "el nom ha sigut definit dos vegades" #: sym.c:253 #, c-format msgid "start condition %s declared twice" msgstr "la condició d'activació %s ha sigut declarada dos vegades" #: yylex.c:56 msgid "premature EOF" msgstr "EOF prematur" #: yylex.c:198 #, c-format msgid "End Marker\n" msgstr "Marcador de fi\n" #: yylex.c:204 #, c-format msgid "*Something Weird* - tok: %d val: %d\n" msgstr "*Quelcom estrany* - terminal: %d val: %d\n" #~ msgid "consistency check failed in symfollowset" #~ msgstr "Ha fallat la prova de consistència en symfollowset" #~ msgid "Can't specify header option if writing to stdout." #~ msgstr "No es pot especificar l'opció de capçalera si s'escriu a stdout." #~ msgid "unknown -R option '%c'" #~ msgstr "opció de -R desconeguda «%c»" #~ msgid "-Cf/-CF and %option yylineno are incompatible" #~ msgstr "-Cf/-CF i l'%opció yylineno són incompatibles" #~ msgid "" #~ "For usage, try\n" #~ "\t%s --help\n" #~ msgstr "" #~ "Per al mode d'ús, proveu\n" #~ "\t%s --help\n" #~ msgid "-P flag must be given separately" #~ msgstr "la opció -P s'ha d'especificar per separat" #~ msgid "-o flag must be given separately" #~ msgstr "l'opció -o s'ha d'especificar per separat" #~ msgid "-S flag must be given separately" #~ msgstr "l'opció -S s'ha d'especificar per separat" #~ msgid "-C flag must be given separately" #~ msgstr "l'opció -C s'ha de donar per separat" #~ msgid "" #~ "%s [-bcdfhilnpstvwBFILTV78+? -C[aefFmr] -ooutput -Pprefix -Sskeleton]\n" #~ msgstr "" #~ "%s [--bcdfhilnpstvwBFILTV78+? -C[aefFmr] -oeixida -Pprefix -Sesquema]\n" #~ msgid "\t[--help --version] [file ...]\n" #~ msgstr "\t[--help --version] [fitxer ...]\n" #~ msgid "\t-b generate backing-up information to %s\n" #~ msgstr "\t-b genera la informació dels retrocessos efectuats a %s\n" #~ msgid "\t-c do-nothing POSIX option\n" #~ msgstr "\t-c opció POSIX sense efecte\n" #~ msgid "\t-d turn on debug mode in generated scanner\n" #~ msgstr "\t-d activa el mode de depuració en l'analitzador generat\n" #~ msgid "\t-f generate fast, large scanner\n" #~ msgstr "\t-f genera un analitzador ràpid i gran\n" #~ msgid "\t-h produce this help message\n" #~ msgstr "\t-h mostra aquest missatge d'ajuda\n" #~ msgid "\t-i generate case-insensitive scanner\n" #~ msgstr "\t-i genera un analitzador insensible a majúscules i minúscules\n" #~ msgid "\t-l maximal compatibility with original lex\n" #~ msgstr "\t-l compatibilitat màxima amb el lex original\n" #~ msgid "\t-n do-nothing POSIX option\n" #~ msgstr "\t-n opció POSIX sense efecte\n" #~ msgid "\t-p generate performance report to stderr\n" #~ msgstr "\t-p genera l'informe de rendiment en stderr\n" # Al grep jo sempre he traduït match com a coincidir. No sé, no m'agrada # molt això de text emparellat. # Encara que coincident tampoc no m'acaba de convéncer. ear #~ msgid "\t-s suppress default rule to ECHO unmatched text\n" #~ msgstr "" #~ "\t-s suprimeix la regla per defecte de visualitzar (ECHO) el text no " #~ "emparellat\n" #~ msgid "\t-t write generated scanner on stdout instead of %s\n" #~ msgstr "" #~ "\t-t escriu l'analitzador generat en l'eixida estàndard en lloc de %s\n" #~ msgid "\t-v write summary of scanner statistics to f\n" #~ msgstr "\t-v escriu un resum de les estadístiques en f\n" #~ msgid "\t-w do not generate warnings\n" #~ msgstr "\t-w no genera avisos\n" #~ msgid "\t-B generate batch scanner (opposite of -I)\n" #~ msgstr "\t-B genera un analitzador no interactiu (el contrari a -I)\n" #~ msgid "\t-F use alternative fast scanner representation\n" #~ msgstr "\t-F usa la representació alternativa d'analitzador ràpid\n" #~ msgid "\t-I generate interactive scanner (opposite of -B)\n" #~ msgstr "\t-I genera analitzador interactiu (el contrari a -B)\n" #~ msgid "\t-L suppress #line directives in scanner\n" #~ msgstr "\t-L suprimeix les directives #line en l'analitzador\n" #~ msgid "\t-T %s should run in trace mode\n" #~ msgstr "\t-T %s hauria de executarse en mode traça\n" #~ msgid "\t-V report %s version\n" #~ msgstr "\t-V informa de la versió de %s\n" #~ msgid "\t-7 generate 7-bit scanner\n" #~ msgstr "\t-7 genera un analitzador de 7 bits\n" #~ msgid "\t-8 generate 8-bit scanner\n" #~ msgstr "\t-8 genera un analitzador de 8 bits\n" #~ msgid "\t-+ generate C++ scanner class\n" #~ msgstr "\t-+ genera un analitzador de la classe C++\n" #~ msgid "\t-? produce this help message\n" #~ msgstr "\t-? produeix aquest missatge d'ajuda\n" #~ msgid "\t-C specify degree of table compression (default is -Cem):\n" #~ msgstr "" #~ "\t-C especifica el grau de compressió de la taula (per defecte -Cem):\n" #~ msgid "\t\t-Ca trade off larger tables for better memory alignment\n" #~ msgstr "" #~ "\t\t-Ca renuncia a taules més grans a canvi de una millor alineació\n" #~ "\t\t de la memòria\n" #~ msgid "\t\t-Ce construct equivalence classes\n" #~ msgstr "\t\t-Ce construeix classes d'equivalència\n" #~ msgid "\t\t-Cf do not compress scanner tables; use -f representation\n" #~ msgstr "" #~ "\t\t-Cf no comprimeix les taules de l'analitzador; utilitza la " #~ "representació -f\n" #~ msgid "\t\t-CF do not compress scanner tables; use -F representation\n" #~ msgstr "" #~ "\t\t-CF no comprimeix les taules de l'analitzador; utilitza la " #~ "representació -F\n" #~ msgid "\t\t-Cm construct meta-equivalence classes\n" #~ msgstr "\t\t-Cm construeix classes de metaequivalència\n" #~ msgid "\t\t-Cr use read() instead of stdio for scanner input\n" #~ msgstr "" #~ "\t\t-Cr utilitza read() en lloc de stdio com a entrada de l'analitzador\n" #~ msgid "\t-o specify output filename\n" #~ msgstr "\t-o especifica el fitxer d'eixida\n" #~ msgid "\t-P specify scanner prefix other than \"yy\"\n" #~ msgstr "\t-P especifica un prefix de l'analitzador diferent a «yy»\n" #~ msgid "\t-S specify skeleton file\n" #~ msgstr "\t-S especifica el fitxer d'esquema\n" #~ msgid "\t--help produce this help message\n" #~ msgstr "\t--help produeix aquest missatge d'ajuda\n" #~ msgid "\t--version report %s version\n" #~ msgstr "\t--version informa de la versió de %s\n" flex-2.5.39/po/Rules-quot0000644000175000017500000000340012300730747015443 0ustar srivastasrivasta# Special Makefile rules for English message catalogs with quotation marks. DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot .SUFFIXES: .insert-header .po-update-en en@quot.po-create: $(MAKE) en@quot.po-update en@boldquot.po-create: $(MAKE) en@boldquot.po-update en@quot.po-update: en@quot.po-update-en en@boldquot.po-update: en@boldquot.po-update-en .insert-header.po-update-en: @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ ll=`echo $$lang | sed -e 's/@.*//'`; \ LC_ALL=C; export LC_ALL; \ cd $(srcdir); \ if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "creation of $$lang.po failed!" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ fi en@quot.insert-header: insert-header.sin sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header en@boldquot.insert-header: insert-header.sin sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header mostlyclean: mostlyclean-quot mostlyclean-quot: rm -f *.insert-header flex-2.5.39/po/en@boldquot.header0000644000175000017500000000247112300730747017075 0ustar srivastasrivasta# All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # # This catalog furthermore displays the text between the quotation marks in # bold face, assuming the VT100/XTerm escape sequences. # flex-2.5.39/po/sv.po0000644000175000017500000007413412314621665014447 0ustar srivastasrivasta# Swedish messages for flex. # Copyright (C) 2003 The Flex Project # Johan Linde , 1996. # Christian Rose , 2002, 2004. # msgid "" msgstr "" "Project-Id-Version: flex 2.5.31\n" "Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2014-03-26 15:00-0400\n" "PO-Revision-Date: 2004-03-21 22:51+0100\n" "Last-Translator: Christian Rose \n" "Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" #: buf.c:78 msgid "Allocation of buffer to print string failed" msgstr "" #: buf.c:100 msgid "Allocation of buffer for line directive failed" msgstr "" #: buf.c:177 msgid "Allocation of buffer for m4 def failed" msgstr "" #: buf.c:197 msgid "Allocation of buffer for m4 undef failed" msgstr "" #: dfa.c:61 #, c-format msgid "State #%d is non-accepting -\n" msgstr "Tillstnd %d r icke-accepterande -\n" #: dfa.c:124 msgid "dangerous trailing context" msgstr "farligt efterfljande sammanhang" #: dfa.c:166 #, c-format msgid " associated rule line numbers:" msgstr " radnummer fr associerad regel:" #: dfa.c:202 #, c-format msgid " out-transitions: " msgstr " utvergngar: " #: dfa.c:210 #, c-format msgid "" "\n" " jam-transitions: EOF " msgstr "" "\n" " stoppvergngar: filslut " #: dfa.c:341 msgid "consistency check failed in epsclosure()" msgstr "konsekvenskontrollen misslyckades i epsclosure()" #: dfa.c:429 msgid "" "\n" "\n" "DFA Dump:\n" "\n" msgstr "" "\n" "\n" "DFA-utskrift:\n" "\n" #: dfa.c:604 msgid "could not create unique end-of-buffer state" msgstr "kunde inte skapa ett unikt buffertsluttillstnd" #: dfa.c:625 #, c-format msgid "state # %d:\n" msgstr "tillstnd %d:\n" # Det hr r ju helt sjukt. Har buggrapporterat detta att det br # ersttas med %s #: dfa.c:785 msgid "Could not write yynxt_tbl[][]" msgstr "Kunde inte skriva yynxt_tbl[][]" #: dfa.c:1049 msgid "bad transition character detected in sympartition()" msgstr "otilltet vergngstecken funnet i sympartition()" #: gen.c:478 msgid "" "\n" "\n" "Equivalence Classes:\n" "\n" msgstr "" "\n" "\n" "Ekvivalensklasser:\n" "\n" #: gen.c:662 gen.c:691 gen.c:1215 #, c-format msgid "state # %d accepts: [%d]\n" msgstr "tillstnd %d accepterar: [%d]\n" #: gen.c:1110 #, c-format msgid "state # %d accepts: " msgstr "tillstnd %d accepterar: " #: gen.c:1157 msgid "Could not write yyacclist_tbl" msgstr "Kunde inte skriva yyacclist_tbl" #: gen.c:1233 msgid "Could not write yyacc_tbl" msgstr "Kunde inte skriva yyacc_tbl" #: gen.c:1248 gen.c:1633 gen.c:1656 msgid "Could not write ecstbl" msgstr "Kunde inte skriva ecstbl" #: gen.c:1271 msgid "" "\n" "\n" "Meta-Equivalence Classes:\n" msgstr "" "\n" "\n" "Metaekvivalensklasser:\n" #: gen.c:1293 msgid "Could not write yymeta_tbl" msgstr "Kunde inte skriva yymeta_tbl" #: gen.c:1354 msgid "Could not write yybase_tbl" msgstr "Kunde inte skriva yybase_tbl" #: gen.c:1388 msgid "Could not write yydef_tbl" msgstr "Kunde inte skriva yydef_tbl" #: gen.c:1428 msgid "Could not write yynxt_tbl" msgstr "Kunde inte skriva yynxt_tbl" #: gen.c:1464 msgid "Could not write yychk_tbl" msgstr "Kunde inte skriva yychk_tbl" #: gen.c:1618 gen.c:1647 msgid "Could not write ftbl" msgstr "Kunde inte skriva ftbl" #: gen.c:1624 msgid "Could not write ssltbl" msgstr "Kunde inte skriva ssltbl" #: gen.c:1675 msgid "Could not write eoltbl" msgstr "Kunde inte skriva eoltbl" #: gen.c:1735 msgid "Could not write yynultrans_tbl" msgstr "Kunde inte skriva yynultrans_tbl" #: main.c:191 msgid "rule cannot be matched" msgstr "regeln kan inte matchas" #: main.c:196 msgid "-s option given but default rule can be matched" msgstr "flaggan -s angiven men standardregeln kan fljas" #: main.c:236 msgid "Can't use -+ with -l option" msgstr "-+ kan inte anvndas tillsammans med flaggan -l" #: main.c:239 msgid "Can't use -f or -F with -l option" msgstr "-f eller -F kan inte anvndas tillsammans med flaggan -l" #: main.c:243 msgid "Can't use --reentrant or --bison-bridge with -l option" msgstr "" "--reentrant eller --bison-bridge kan inte anvndas tillsammans med flaggan -l" #: main.c:275 msgid "-Cf/-CF and -Cm don't make sense together" msgstr "-Cf/-CF och -Cm kan inte anvndas tillsammans" #: main.c:278 msgid "-Cf/-CF and -I are incompatible" msgstr "-Cf/-CF och -I kan inte anvndas tillsammans" #: main.c:282 msgid "-Cf/-CF are incompatible with lex-compatibility mode" msgstr "-Cf/-CF kan inte anvndas i lex-kompatibilitetslge" #: main.c:287 msgid "-Cf and -CF are mutually exclusive" msgstr "-Cf och -CF r msesidigt uteslutande" #: main.c:291 msgid "Can't use -+ with -CF option" msgstr "-+ kan inte anvndas tillsammans med flaggan -CF" #: main.c:294 #, c-format msgid "%array incompatible with -+ option" msgstr "%array kan inte anvndas tillsammans med flaggan -+" #: main.c:299 msgid "Options -+ and --reentrant are mutually exclusive." msgstr "Flaggorna -+ och --reentrant r msesidigt uteslutande." #: main.c:302 msgid "bison bridge not supported for the C++ scanner." msgstr "bisonbrygga stds inte fr C++-inlsaren." #: main.c:357 main.c:403 #, c-format msgid "could not create %s" msgstr "kunde inte skapa %s" #: main.c:416 msgid "could not write tables header" msgstr "kunde inte skriva tabellhuvud" #: main.c:420 #, c-format msgid "can't open skeleton file %s" msgstr "kan inte ppna mallfilen %s" #: main.c:456 msgid "allocation of macro definition failed" msgstr "" #: main.c:504 #, c-format msgid "input error reading skeleton file %s" msgstr "indatafel vid lsande av mallfilen %s" #: main.c:508 #, c-format msgid "error closing skeleton file %s" msgstr "fel vid stngande av mallfilen %s" #: main.c:693 #, c-format msgid "error creating header file %s" msgstr "fel vid skapande av huvudfilen %s" #: main.c:701 #, c-format msgid "error writing output file %s" msgstr "fel vid skrivande av utfilen %s" #: main.c:705 #, c-format msgid "error closing output file %s" msgstr "fel vid stngande av utfilen %s" #: main.c:709 #, c-format msgid "error deleting output file %s" msgstr "fel vid borttagning av utfilen %s" # "Back up" i det hr sammanhanget handlar om att flexmaskinen backar. #: main.c:716 #, c-format msgid "No backing up.\n" msgstr "Backar inte.\n" #: main.c:720 #, c-format msgid "%d backing up (non-accepting) states.\n" msgstr "%d skerhetskopierande (icke-accepterande) tillstnd.\n" #: main.c:724 #, c-format msgid "Compressed tables always back up.\n" msgstr "Komprimerade tabeller skerhetskopierar alltid.\n" #: main.c:727 #, c-format msgid "error writing backup file %s" msgstr "fel nr skerhetskopian %s skulle skrivas" #: main.c:731 #, c-format msgid "error closing backup file %s" msgstr "fel nr skerhetskopian %s skulle stngas" #: main.c:736 #, c-format msgid "%s version %s usage statistics:\n" msgstr "Statistik ver anvndning av %s version %s:\n" #: main.c:739 #, c-format msgid " scanner options: -" msgstr " inlsarflaggor: -" #: main.c:818 #, c-format msgid " %d/%d NFA states\n" msgstr " %d/%d NFA-tillstnd\n" #: main.c:820 #, c-format msgid " %d/%d DFA states (%d words)\n" msgstr " %d/%d DFA-tillstnd (%d ord)\n" #: main.c:822 #, c-format msgid " %d rules\n" msgstr " %d regler\n" #: main.c:827 #, c-format msgid " No backing up\n" msgstr " Inget skerhetskopierande\n" #: main.c:831 #, c-format msgid " %d backing-up (non-accepting) states\n" msgstr " %d (icke-accepterande) tillstnd fr skerhetskopiering\n" #: main.c:836 #, c-format msgid " Compressed tables always back-up\n" msgstr " Komprimerade tabeller skerhetskopierar alltid\n" #: main.c:840 #, c-format msgid " Beginning-of-line patterns used\n" msgstr " Brjan-av-rad-mnster anvnda\n" #: main.c:842 #, c-format msgid " %d/%d start conditions\n" msgstr " %d/%d startvillkor\n" #: main.c:846 #, c-format msgid " %d epsilon states, %d double epsilon states\n" msgstr " %d epsilontillstnd, %d dubbla epsilontillstnd\n" #: main.c:850 #, c-format msgid " no character classes\n" msgstr " inga teckenklasser\n" #: main.c:854 #, c-format msgid " %d/%d character classes needed %d/%d words of storage, %d reused\n" msgstr " %d/%d teckenklasser behvde %d/%d ord fr lagring, %d teranvnda\n" #: main.c:859 #, c-format msgid " %d state/nextstate pairs created\n" msgstr " %d par med tillstnd/nsta-tillstnd skapade\n" #: main.c:862 #, c-format msgid " %d/%d unique/duplicate transitions\n" msgstr " %d/%d unika/duplicerade vergngar\n" #: main.c:867 #, c-format msgid " %d table entries\n" msgstr " %d tabellposter\n" #: main.c:875 #, c-format msgid " %d/%d base-def entries created\n" msgstr " %d/%d basstandardposter skapade\n" #: main.c:879 #, c-format msgid " %d/%d (peak %d) nxt-chk entries created\n" msgstr " %d/%d (max %d) poster fr nsta kontroll skapade\n" #: main.c:883 #, c-format msgid " %d/%d (peak %d) template nxt-chk entries created\n" msgstr " %d/%d (max %d) mallposter fr nsta kontroll skapade\n" #: main.c:887 #, c-format msgid " %d empty table entries\n" msgstr " %d tomma tabellposter\n" #: main.c:889 #, c-format msgid " %d protos created\n" msgstr " %d prototyper skapade\n" #: main.c:892 #, c-format msgid " %d templates created, %d uses\n" msgstr " %d mallar skapade, %d anvndningar\n" #: main.c:900 #, c-format msgid " %d/%d equivalence classes created\n" msgstr " %d/%d ekvivalensklasser skapade\n" #: main.c:908 #, c-format msgid " %d/%d meta-equivalence classes created\n" msgstr " %d/%d metaekvivalensklasser skapade\n" #: main.c:914 #, c-format msgid " %d (%d saved) hash collisions, %d DFAs equal\n" msgstr " %d (%d sparade) hashkollisioner, %d DFA lika\n" #: main.c:916 #, c-format msgid " %d sets of reallocations needed\n" msgstr " %d uppsttningar med omallokeringar krvdes\n" #: main.c:918 #, c-format msgid " %d total table entries needed\n" msgstr " %d tabellposter krvs totalt\n" #: main.c:995 #, c-format msgid "Internal error. flexopts are malformed.\n" msgstr "Internt fel. flexopts r felaktiga.\n" #: main.c:1005 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Prova \"%s --help\" fr mer information.\n" #: main.c:1062 #, c-format msgid "unknown -C option '%c'" msgstr "oknd flagga till -C \"%c\"" #: main.c:1191 #, c-format msgid "%s %s\n" msgstr "%s %s\n" #: main.c:1466 msgid "fatal parse error" msgstr "allvarligt fel vid tolkningen" #: main.c:1498 #, c-format msgid "could not create backing-up info file %s" msgstr "kunde inte skapa filen %s med skerhetskopieringsinformation" #: main.c:1519 #, c-format msgid "-l AT&T lex compatibility option entails a large performance penalty\n" msgstr "" "flaggan -l fr beteende som AT&T:s lex medfr en vsentlig prestandafrlust\n" #: main.c:1522 #, c-format msgid " and may be the actual source of other reported performance penalties\n" msgstr " och kan vara den egentliga orsaken till andra rapporter om detta\n" #: main.c:1528 #, c-format msgid "" "%%option yylineno entails a performance penalty ONLY on rules that can match " "newline characters\n" msgstr "" "%%option yylineno medfr en prestandafrlust ENDAST p regler som kan matcha " "nyradstecken\n" #: main.c:1535 #, c-format msgid "-I (interactive) entails a minor performance penalty\n" msgstr "-I (interaktiv) medfr en mindre prestandafrlust\n" #: main.c:1540 #, c-format msgid "yymore() entails a minor performance penalty\n" msgstr "yymore() medfr en mindre prestandafrlust\n" #: main.c:1546 #, c-format msgid "REJECT entails a large performance penalty\n" msgstr "REJECT medfr en vsentlig prestandafrlust\n" #: main.c:1551 #, c-format msgid "Variable trailing context rules entail a large performance penalty\n" msgstr "" "Regler fr varierbar efterfljande sammanhang medfr en vsentlig " "prestandafrlust\n" #: main.c:1563 msgid "REJECT cannot be used with -f or -F" msgstr "REJECT kan inte anvndas tillsammans med -f eller -F" #: main.c:1566 #, c-format msgid "%option yylineno cannot be used with REJECT" msgstr "%option yylineno kan inte anvndas tillsammans med REJECT" #: main.c:1569 msgid "variable trailing context rules cannot be used with -f or -F" msgstr "" "regler fr varierbar efterfljande kontext kan inte anvndas\n" "tillsammans med -f eller -F" #: main.c:1692 #, c-format msgid "%option yyclass only meaningful for C++ scanners" msgstr "%option yyclass r bara meningsfull fr C++-inlsare" #: main.c:1799 #, c-format msgid "Usage: %s [OPTIONS] [FILE]...\n" msgstr "Anvndning: %s [FLAGGOR] [FIL]...\n" #: main.c:1802 #, c-format msgid "" "Generates programs that perform pattern-matching on text.\n" "\n" "Table Compression:\n" " -Ca, --align trade off larger tables for better memory alignment\n" " -Ce, --ecs construct equivalence classes\n" " -Cf do not compress tables; use -f representation\n" " -CF do not compress tables; use -F representation\n" " -Cm, --meta-ecs construct meta-equivalence classes\n" " -Cr, --read use read() instead of stdio for scanner input\n" " -f, --full generate fast, large scanner. Same as -Cfr\n" " -F, --fast use alternate table representation. Same as -CFr\n" " -Cem default compression (same as --ecs --meta-ecs)\n" "\n" "Debugging:\n" " -d, --debug enable debug mode in scanner\n" " -b, --backup write backing-up information to %s\n" " -p, --perf-report write performance report to stderr\n" " -s, --nodefault suppress default rule to ECHO unmatched text\n" " -T, --trace %s should run in trace mode\n" " -w, --nowarn do not generate warnings\n" " -v, --verbose write summary of scanner statistics to stdout\n" "\n" "Files:\n" " -o, --outfile=FILE specify output filename\n" " -S, --skel=FILE specify skeleton file\n" " -t, --stdout write scanner on stdout instead of %s\n" " --yyclass=NAME name of C++ class\n" " --header-file=FILE create a C header file in addition to the " "scanner\n" " --tables-file[=FILE] write tables to FILE\n" "\n" "Scanner behavior:\n" " -7, --7bit generate 7-bit scanner\n" " -8, --8bit generate 8-bit scanner\n" " -B, --batch generate batch scanner (opposite of -I)\n" " -i, --case-insensitive ignore case in patterns\n" " -l, --lex-compat maximal compatibility with original lex\n" " -X, --posix-compat maximal compatibility with POSIX lex\n" " -I, --interactive generate interactive scanner (opposite of -B)\n" " --yylineno track line count in yylineno\n" "\n" "Generated code:\n" " -+, --c++ generate C++ scanner class\n" " -Dmacro[=defn] #define macro defn (default defn is '1')\n" " -L, --noline suppress #line directives in scanner\n" " -P, --prefix=STRING use STRING as prefix instead of \"yy\"\n" " -R, --reentrant generate a reentrant C scanner\n" " --bison-bridge scanner for bison pure parser.\n" " --bison-locations include yylloc support.\n" " --stdinit initialize yyin/yyout to stdin/stdout\n" " --noansi-definitions old-style function definitions\n" " --noansi-prototypes empty parameter list in prototypes\n" " --nounistd do not include \n" " --noFUNCTION do not generate a particular FUNCTION\n" "\n" "Miscellaneous:\n" " -c do-nothing POSIX option\n" " -n do-nothing POSIX option\n" " -?\n" " -h, --help produce this help message\n" " -V, --version report %s version\n" msgstr "" "Genererar program som utfr mnstermatchning p text.\n" "\n" "Tabellkomprimering:\n" " -Ca, --align bttre minnesjustering till priset av strre tabeller\n" " -Ce, --ecs konstruera ekvivalensklasser\n" " -Cf komprimera inte tabeller; anvnd -f-representation\n" " -CF komprimera inte tabeller; anvnd -F-representation\n" " -Cm, --meta-ecs konstruera metaekvivalensklasser\n" " -Cr, --read anvnd read() istllet fr stdio fr inlsarindata\n" " -f, --full generera snabb, stor inlsare. Samma som -Cfr\n" " -F, --fast anvnd alternativ tabellrepresentation. Samma som -CFr\n" " -Cem standardkomprimering (samma som --ecs --meta-ecs)\n" "\n" "Felskning:\n" " -d, --debug aktivera felskningslge i inlsare\n" " -b, --backup skriv skerhetskopieringsinformation till %s\n" " -p, --perf-report skriv prestandarapport till standard fel\n" " -s, --nodefault undertryck standardregel att anvnda \"ECHO\" p\n" " omatchad text\n" " -T, --trace %s ska kra i sprningslge\n" " -w, --nowarn generera inte varningar\n" " -v, --verbose skriv sammanfattning av inlsarstatistik till\n" " standard ut\n" "\n" "Filer:\n" " -o, --outfile=FIL ange namn p utfil\n" " -S, --skel=FIL ange mallfil\n" " -t, --stdout skriv inlsare p standard ut istllet fr %s\n" " --yyclass=NAMN namn p C++-klass\n" " --header-file=FIL skapa en C-huvudfil frutom inlsaren\n" " --tables-file[=FIL] skriv tabeller till FIL\n" "\n" "Beteende fr inlsare:\n" " -7, --7bit generera 7-bitarsinlsare\n" " -8, --8bit generera 8-bitarsinlsare\n" " -B, --batch generera batchinlsare (motsats till -I)\n" " -i, --case-insensitive ignorera skiftlge i mnster\n" " -l, --lex-compat maximal kompatibilitet med ursprungliga lex\n" " -X, --posix-compat maximal kompatibilitet med POSIX lex\n" " -I, --interactive generera interaktiv inlsare (motsats till -B)\n" " --yylineno spra radantal i yylineno\n" "\n" "Genererad kod:\n" " -+, --c++ generera C++-inlsarklass\n" " -Dmacro[=defn] definiera makrodefinition (standardefn r \"1\")\n" " -L, --noline undertryck #line-direktiv i inlsaren\n" " -P, --prefix=STRNG anvnd STRNG som prefix istllet fr \"yy\"\n" " -R, --reentrant generera en teranropbar C-inlsare\n" " --bison-bridge inlsare fr ren bisontolk.\n" " --bison-locations inkludera std fr yylloc.\n" " --stdinit initiera yyin/yyout till standard in/ut\n" " --noansi-definitions funktionsdefinitioner i gammal stil\n" " --noansi-prototypes tom parameterlista i prototyper\n" " --nounistd inkludera inte \n" " --noFUNKTION generera inte en speciell FUNKTION\n" "\n" "Diverse:\n" " -c POSIX-flagga som inte gr ngot\n" " -n POSIX-flagga som inte gr ngot\n" " -?\n" " -h, --help visa detta hjlpmeddelande\n" " -V, --version visa versionsinformation fr %s\n" #: misc.c:65 msgid "allocation of sko_stack failed" msgstr "" #: misc.c:102 misc.c:128 #, c-format msgid "name \"%s\" ridiculously long" msgstr "namnet \"%s\" r ljligt lngt" #: misc.c:177 msgid "memory allocation failed in allocate_array()" msgstr "minnesallokeringen misslyckades i allocate_array()" #: misc.c:230 #, c-format msgid "bad character '%s' detected in check_char()" msgstr "otilltet tecken \"%s\" funnet i check_char()" #: misc.c:235 #, c-format msgid "scanner requires -8 flag to use the character %s" msgstr "inlsaren krver flaggan -8 fr att kunna anvnda tecknet %s" #: misc.c:268 msgid "dynamic memory failure in copy_string()" msgstr "dynamiskt minnesfel i copy_string()" #: misc.c:367 #, c-format msgid "%s: fatal internal error, %s\n" msgstr "%s: allvarligt internt fel, %s\n" #: misc.c:803 msgid "attempt to increase array size failed" msgstr "frsk att ka arraystorlek misslyckades" #: misc.c:930 msgid "bad line in skeleton file" msgstr "otillten rad i mallfilen" #: misc.c:979 msgid "memory allocation failed in yy_flex_xmalloc()" msgstr "minnesallokeringen misslyckades i yy_flex_xmalloc()" #: nfa.c:104 #, c-format msgid "" "\n" "\n" "********** beginning dump of nfa with start state %d\n" msgstr "" "\n" "\n" "********** brjan av utskrift av nfa med starttillstnd %d\n" #: nfa.c:115 #, c-format msgid "state # %4d\t" msgstr "tillstnd %4d\t" #: nfa.c:130 #, c-format msgid "********** end of dump\n" msgstr "********** slut p utskrift\n" #: nfa.c:174 msgid "empty machine in dupmachine()" msgstr "tom maskin i dupmachine()" #: nfa.c:240 #, c-format msgid "Variable trailing context rule at line %d\n" msgstr "Regel fr varierbar efterfljande kontext p rad %d\n" #: nfa.c:364 msgid "bad state type in mark_beginning_as_normal()" msgstr "otillten tillstndstyp i mark_beginning_as_normal()" #: nfa.c:609 #, c-format msgid "input rules are too complicated (>= %d NFA states)" msgstr "indatareglerna r fr komplicerade (>= %d NFA-tillstnd)" #: nfa.c:688 msgid "found too many transitions in mkxtion()" msgstr "fann fr mnga vergngar i mkxtion()" #: nfa.c:714 #, c-format msgid "too many rules (> %d)!" msgstr "fr mnga regler (> %d)!" #: parse.y:159 msgid "unknown error processing section 1" msgstr "oknt fel vid tolkning av avsnitt 1" #: parse.y:184 parse.y:351 msgid "bad start condition list" msgstr "felaktig lista med startvillkor" #: parse.y:315 msgid "unrecognized rule" msgstr "oknd regel" #: parse.y:434 parse.y:447 parse.y:516 msgid "trailing context used twice" msgstr "efterfljande kontext anvnds tv gnger" #: parse.y:552 parse.y:562 parse.y:635 parse.y:645 msgid "bad iteration values" msgstr "felaktiga iterationsvrden" #: parse.y:580 parse.y:598 parse.y:663 parse.y:681 msgid "iteration value must be positive" msgstr "iterationsvrde mste vara positivt" #: parse.y:804 parse.y:814 #, c-format msgid "the character range [%c-%c] is ambiguous in a case-insensitive scanner" msgstr "" "teckenintervallet [%c-%c] r tvetydigt i en skiftlgesoknslig inlsare" #: parse.y:819 msgid "negative range in character class" msgstr "negativt intervall i teckenklass" #: parse.y:916 #, fuzzy msgid "[:^lower:] is ambiguous in case insensitive scanner" msgstr "" "teckenintervallet [%c-%c] r tvetydigt i en skiftlgesoknslig inlsare" #: parse.y:922 #, fuzzy msgid "[:^upper:] ambiguous in case insensitive scanner" msgstr "" "teckenintervallet [%c-%c] r tvetydigt i en skiftlgesoknslig inlsare" #: scan.l:75 scan.l:618 scan.l:676 msgid "Input line too long\n" msgstr "Fr lng indatarad\n" #: scan.l:161 #, c-format msgid "malformed '%top' directive" msgstr "felaktigt \"%top\"-direktiv" #: scan.l:183 #, no-c-format msgid "unrecognized '%' directive" msgstr "oknt \"%\"-direktiv" #: scan.l:192 #, fuzzy msgid "Definition name too long\n" msgstr "Fr lng indatarad\n" #: scan.l:284 msgid "Unmatched '{'" msgstr "Ensamt \"{\"" #: scan.l:300 #, c-format msgid "Definition value for {%s} too long\n" msgstr "" #: scan.l:317 msgid "incomplete name definition" msgstr "ofullstndig namndefinition" #: scan.l:443 #, fuzzy msgid "Option line too long\n" msgstr "Fr lng indatarad\n" #: scan.l:451 #, c-format msgid "unrecognized %%option: %s" msgstr "oknd %%option: %s" #: scan.l:633 scan.l:800 msgid "bad character class" msgstr "otillten teckenklass" #: scan.l:683 #, c-format msgid "undefined definition {%s}" msgstr "odefinierad definition {%s}" #: scan.l:755 #, c-format msgid "bad : %s" msgstr "otilltet : %s" #: scan.l:768 msgid "missing quote" msgstr "citationstecken saknas" #: scan.l:834 #, c-format msgid "bad character class expression: %s" msgstr "otilltet uttryck fr teckenklass: %s" #: scan.l:856 msgid "bad character inside {}'s" msgstr "otilltet tecken inom {}" #: scan.l:862 msgid "missing }" msgstr "} saknas" #: scan.l:940 msgid "EOF encountered inside an action" msgstr "filslut ptrffat inuti en handling" #: scan.l:945 #, fuzzy msgid "EOF encountered inside pattern" msgstr "filslut ptrffat inuti en handling" #: scan.l:967 #, c-format msgid "bad character: %s" msgstr "otilltet tecken: %s" #: scan.l:996 #, c-format msgid "can't open %s" msgstr "kan inte ppna %s" #: scanopt.c:291 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Anvndning: %s [FLAGGOR]...\n" #: scanopt.c:564 #, c-format msgid "option `%s' doesn't allow an argument\n" msgstr "flaggan \"%s\" tar inget argument\n" #: scanopt.c:569 #, c-format msgid "option `%s' requires an argument\n" msgstr "flaggan \"%s\" krver ett argument\n" #: scanopt.c:573 #, c-format msgid "option `%s' is ambiguous\n" msgstr "flaggan \"%s\" r tvetydig\n" #: scanopt.c:577 #, c-format msgid "Unrecognized option `%s'\n" msgstr "Oknd flagga \"%s\"\n" #: scanopt.c:581 #, c-format msgid "Unknown error=(%d)\n" msgstr "Oknt fel=(%d)\n" #: sym.c:100 msgid "symbol table memory allocation failed" msgstr "minnesallokering fr symboltabell misslyckades" #: sym.c:202 msgid "name defined twice" msgstr "namnet definierat tv gnger" #: sym.c:253 #, c-format msgid "start condition %s declared twice" msgstr "startvillkoret %s deklarerat tv gnger" #: yylex.c:56 msgid "premature EOF" msgstr "fr tidigt filslut" #: yylex.c:198 #, c-format msgid "End Marker\n" msgstr "Slutmarkering\n" #: yylex.c:204 #, c-format msgid "*Something Weird* - tok: %d val: %d\n" msgstr "*Ngot mrkligt* - tecken: %d vrde: %d\n" #~ msgid "consistency check failed in symfollowset" #~ msgstr "konsekvenskontrollen misslyckades i symfollowset" #~ msgid "Can't specify header option if writing to stdout." #~ msgstr "Kan inte ange huvudflagga d utskrift sker till standard ut." #~ msgid "unknown -R option '%c'" #~ msgstr "oknd flagga till -R \"%c\"" #~ msgid "Could not write %s" #~ msgstr "Kunde inte skriva %s" #~ msgid "-Cf/-CF and %option yylineno are incompatible" #~ msgstr "-Cf/-CF och %option yylineno kan inte anvndas tillsammans" #~ msgid "" #~ "For usage, try\n" #~ "\t%s --help\n" #~ msgstr "" #~ "Prova\n" #~ "\t%s --help\n" #~ "fr anvndning\n" #~ msgid "-P flag must be given separately" #~ msgstr "flaggan -P mste anges separat" #~ msgid "-o flag must be given separately" #~ msgstr "flaggan -o mste anges separat" #~ msgid "-S flag must be given separately" #~ msgstr "flaggan -S mste anges separat" #~ msgid "-C flag must be given separately" #~ msgstr "flaggan -C mste anges separat" #~ msgid "" #~ "%s [-bcdfhilnpstvwBFILTV78+? -C[aefFmr] -ooutput -Pprefix -Sskeleton]\n" #~ msgstr "" #~ "%s [-bcdfhilnpstvwBFILTV78+? -C[aefFmr] -outfil -Pprefix -Smallfil]\n" #~ msgid "\t[--help --version] [file ...]\n" #~ msgstr "\t[--help --version] [fil ...]\n" #~ msgid "\t-b generate backing-up information to %s\n" #~ msgstr "\t-b skriv information om backande till %s\n" #~ msgid "\t-c do-nothing POSIX option\n" #~ msgstr "\t-c POSIX-flaggan gr ingenting\n" #~ msgid "\t-d turn on debug mode in generated scanner\n" #~ msgstr "\t-d stll den skapade inlsaren i felskningslge\n" #~ msgid "\t-f generate fast, large scanner\n" #~ msgstr "\t-f skapa en snabb, stor inlsare\n" #~ msgid "\t-h produce this help message\n" #~ msgstr "\t-h visa denna hjlptext\n" #~ msgid "\t-i generate case-insensitive scanner\n" #~ msgstr "\t-i skapa en skiftlgesoknslig inlsare\n" #~ msgid "\t-l maximal compatibility with original lex\n" #~ msgstr "\t-l maximal kompatibilitet med ursprungliga lex\n" #~ msgid "\t-n do-nothing POSIX option\n" #~ msgstr "\t-n POSIX-flaggan gr ingenting\n" #~ msgid "\t-p generate performance report to stderr\n" #~ msgstr "\t-p skicka rapport om utfrandet till standard fel\n" #~ msgid "\t-s suppress default rule to ECHO unmatched text\n" #~ msgstr "" #~ "\t-s undertryck standardregeln att skriva ut text som ej kunde matchas\n" #~ msgid "\t-t write generated scanner on stdout instead of %s\n" #~ msgstr "" #~ "\t-t skriv den skapade inlsaren till standard ut i stllet fr %s\n" #~ msgid "\t-v write summary of scanner statistics to f\n" #~ msgstr "\t-v skriv en sammanstllning av inlsarstatistik till f\n" #~ msgid "\t-w do not generate warnings\n" #~ msgstr "\t-w visa inga varningar\n" #~ msgid "\t-B generate batch scanner (opposite of -I)\n" #~ msgstr "\t-B skapa en icke interaktiv inlsare (motsatsen till -I)\n" #~ msgid "\t-F use alternative fast scanner representation\n" #~ msgstr "\t-F anvnd en alternativ snabb inlsarrepresentation\n" #~ msgid "\t-I generate interactive scanner (opposite of -B)\n" #~ msgstr "\t-I skapa en interaktiv inlsare (motsatsen till -B)\n" #~ msgid "\t-L suppress #line directives in scanner\n" #~ msgstr "\t-L undertryck #line-direktiv i inlsaren\n" #~ msgid "\t-T %s should run in trace mode\n" #~ msgstr "\t-T %s ska kras i sprningslge\n" #~ msgid "\t-V report %s version\n" #~ msgstr "\t-V visa %s version\n" #~ msgid "\t-7 generate 7-bit scanner\n" #~ msgstr "\t-7 skapa en 7-bitars inlsare\n" #~ msgid "\t-8 generate 8-bit scanner\n" #~ msgstr "\t-8 skapa en 8-bitars inlsare\n" #~ msgid "\t-+ generate C++ scanner class\n" #~ msgstr "\t-+ skapa en C++-inlsarklass\n" #~ msgid "\t-? produce this help message\n" #~ msgstr "\t-? visa denna hjlptext\n" #~ msgid "\t-C specify degree of table compression (default is -Cem):\n" #~ msgstr "\t-C ange graden av tabellkompression (standard -Cem):\n" #~ msgid "\t\t-Ca trade off larger tables for better memory alignment\n" #~ msgstr "" #~ "\t\t-Ca byt ut stora tabeller fr att frbttra minneshanteringen\n" #~ msgid "\t\t-Ce construct equivalence classes\n" #~ msgstr "\t\t-Ce skapa ekvivalensklasser\n" #~ msgid "\t\t-Cf do not compress scanner tables; use -f representation\n" #~ msgstr "" #~ "\t\t-Cf komprimera inte inlsartabellerna; anvnd representationen -f\n" #~ msgid "\t\t-CF do not compress scanner tables; use -F representation\n" #~ msgstr "" #~ "\t\t-CF komprimera inte inlsartabellerna; anvnd representationen -F\n" #~ msgid "\t\t-Cm construct meta-equivalence classes\n" #~ msgstr "\t\t-Cm skapa meta-ekvivalensklasser\n" #~ msgid "\t\t-Cr use read() instead of stdio for scanner input\n" #~ msgstr "" #~ "\t\t-Cr anvnd read() i stllet fr standard in som indata till " #~ "inlsaren\n" #~ msgid "\t-o specify output filename\n" #~ msgstr "\t-o ange namnet p utfilen\n" #~ msgid "\t-P specify scanner prefix other than \"yy\"\n" #~ msgstr "\t-P ange annat scannerprefix n \"yy\"\n" #~ msgid "\t-S specify skeleton file\n" #~ msgstr "\t-S ange mallfil\n" #~ msgid "\t--help produce this help message\n" #~ msgstr "\t--help visa denna hjlptext\n" #~ msgid "\t--version report %s version\n" #~ msgstr "\t--version visa %s version\n" flex-2.5.39/po/pt_BR.gmo0000644000175000017500000005356712314621665015200 0ustar srivastasrivastaT 7  AOh/'.> S"_#  *3'[z!C$)C%]"#FOn`"&0,+] $" )/Y4y5E/*.Z&(+"6>!u".Lg #' Kl : #(#$ $26$#i$+$$&$$ % %:%Y%*q%C%3%0&%E&k&%&&+&&" '-'G'Y'n'','3'/( 2(@((\((((+(( )'')O)m)))))**<*'N*v*$*2* * +,%+-R+ + +++!+&+,!*, L,Z,0q,!, ,,, -% -F3-z----"-..6.<H.-..<000!0&13F1;z11/12 2,(2)U222.2+263"I3l3"3Y3)3.(4W4(w4&48455<5IU5(55v5(Y6:616/67$&7K7g7"7$7'7 7=8BS8c8A84<9)q9+929+9*&:EQ:0:7:";"#; F;"g;%;);&;%<%'<&M<*t<%<)< <+=.<=+k= = =AJ+_JJJ8J'J8"K[K.zKKKK KL1'LNYL7L7L+MDM/cM%M2MM/ N:NZN qN'N)N6N>O/ZOO.O5O PM'P<uP4PP,P)Q(HQ%qQ$Q%Q&Q( R%2RXR oRR!R<R%S4S1OS2S SSSS&T%'TMT!gTT0T8T- U :UHU]U wU4UJUVV;VWV)tVVVVIV;;W%ZC9F"1]dB!)Um:&aT -+@Hoiz[8D}fn2;YOlc<NR=(_r^P *`J,06M Lx{' ?bIe~V/A GwWjQp3t7y4S v>Kq\|sg5hXEu.k#$ ********** beginning dump of nfa with start state %d DFA Dump: Equivalence Classes: Meta-Equivalence Classes: jam-transitions: EOF %d (%d saved) hash collisions, %d DFAs equal %d backing-up (non-accepting) states %d empty table entries %d epsilon states, %d double epsilon states %d protos created %d rules %d sets of reallocations needed %d state/nextstate pairs created %d table entries %d templates created, %d uses %d total table entries needed %d/%d (peak %d) nxt-chk entries created %d/%d (peak %d) template nxt-chk entries created %d/%d DFA states (%d words) %d/%d NFA states %d/%d base-def entries created %d/%d character classes needed %d/%d words of storage, %d reused %d/%d equivalence classes created %d/%d meta-equivalence classes created %d/%d start conditions %d/%d unique/duplicate transitions Beginning-of-line patterns used Compressed tables always back-up No backing up no character classes scanner options: - and may be the actual source of other reported performance penalties associated rule line numbers: out-transitions: %%option yylineno entails a performance penalty ONLY on rules that can match newline characters %array incompatible with -+ option%d backing up (non-accepting) states. %option yyclass only meaningful for C++ scanners%option yylineno cannot be used with REJECT%s %s %s version %s usage statistics: %s: fatal internal error, %s ********** end of dump *Something Weird* - tok: %d val: %d -Cf and -CF are mutually exclusive-Cf/-CF and -Cm don't make sense together-Cf/-CF and -I are incompatible-Cf/-CF are incompatible with lex-compatibility mode-I (interactive) entails a minor performance penalty -l AT&T lex compatibility option entails a large performance penalty -s option given but default rule can be matchedAllocation of buffer for line directive failedAllocation of buffer for m4 def failedAllocation of buffer for m4 undef failedAllocation of buffer to print string failedCan't use -+ with -CF optionCan't use -+ with -l optionCan't use --reentrant or --bison-bridge with -l optionCan't use -f or -F with -l optionCompressed tables always back up. Could not write ecstblCould not write eoltblCould not write ftblCould not write ssltblCould not write yyacc_tblCould not write yyacclist_tblCould not write yybase_tblCould not write yychk_tblCould not write yydef_tblCould not write yymeta_tblCould not write yynultrans_tblCould not write yynxt_tblCould not write yynxt_tbl[][]Definition name too long Definition value for {%s} too long EOF encountered inside an actionEOF encountered inside patternEnd Marker Generates programs that perform pattern-matching on text. Table Compression: -Ca, --align trade off larger tables for better memory alignment -Ce, --ecs construct equivalence classes -Cf do not compress tables; use -f representation -CF do not compress tables; use -F representation -Cm, --meta-ecs construct meta-equivalence classes -Cr, --read use read() instead of stdio for scanner input -f, --full generate fast, large scanner. Same as -Cfr -F, --fast use alternate table representation. Same as -CFr -Cem default compression (same as --ecs --meta-ecs) Debugging: -d, --debug enable debug mode in scanner -b, --backup write backing-up information to %s -p, --perf-report write performance report to stderr -s, --nodefault suppress default rule to ECHO unmatched text -T, --trace %s should run in trace mode -w, --nowarn do not generate warnings -v, --verbose write summary of scanner statistics to stdout Files: -o, --outfile=FILE specify output filename -S, --skel=FILE specify skeleton file -t, --stdout write scanner on stdout instead of %s --yyclass=NAME name of C++ class --header-file=FILE create a C header file in addition to the scanner --tables-file[=FILE] write tables to FILE Scanner behavior: -7, --7bit generate 7-bit scanner -8, --8bit generate 8-bit scanner -B, --batch generate batch scanner (opposite of -I) -i, --case-insensitive ignore case in patterns -l, --lex-compat maximal compatibility with original lex -X, --posix-compat maximal compatibility with POSIX lex -I, --interactive generate interactive scanner (opposite of -B) --yylineno track line count in yylineno Generated code: -+, --c++ generate C++ scanner class -Dmacro[=defn] #define macro defn (default defn is '1') -L, --noline suppress #line directives in scanner -P, --prefix=STRING use STRING as prefix instead of "yy" -R, --reentrant generate a reentrant C scanner --bison-bridge scanner for bison pure parser. --bison-locations include yylloc support. --stdinit initialize yyin/yyout to stdin/stdout --noansi-definitions old-style function definitions --noansi-prototypes empty parameter list in prototypes --nounistd do not include --noFUNCTION do not generate a particular FUNCTION Miscellaneous: -c do-nothing POSIX option -n do-nothing POSIX option -? -h, --help produce this help message -V, --version report %s version Input line too long Internal error. flexopts are malformed. No backing up. Option line too long Options -+ and --reentrant are mutually exclusive.REJECT cannot be used with -f or -FREJECT entails a large performance penalty State #%d is non-accepting - Try `%s --help' for more information. Unknown error=(%d) Unmatched '{'Unrecognized option `%s' Usage: %s [OPTIONS] [FILE]... Usage: %s [OPTIONS]... Variable trailing context rule at line %d Variable trailing context rules entail a large performance penalty [:^lower:] is ambiguous in case insensitive scanner[:^upper:] ambiguous in case insensitive scannerallocation of macro definition failedallocation of sko_stack failedattempt to increase array size failedbad : %sbad character '%s' detected in check_char()bad character classbad character class expression: %sbad character inside {}'sbad character: %sbad iteration valuesbad line in skeleton filebad start condition listbad state type in mark_beginning_as_normal()bad transition character detected in sympartition()bison bridge not supported for the C++ scanner.can't open %scan't open skeleton file %sconsistency check failed in epsclosure()could not create %scould not create backing-up info file %scould not create unique end-of-buffer statecould not write tables headerdangerous trailing contextdynamic memory failure in copy_string()empty machine in dupmachine()error closing backup file %serror closing output file %serror closing skeleton file %serror creating header file %serror deleting output file %serror writing backup file %serror writing output file %sfatal parse errorfound too many transitions in mkxtion()incomplete name definitioninput error reading skeleton file %sinput rules are too complicated (>= %d NFA states)iteration value must be positivemalformed '%top' directivememory allocation failed in allocate_array()memory allocation failed in yy_flex_xmalloc()missing quotemissing }name "%s" ridiculously longname defined twicenegative range in character classoption `%s' doesn't allow an argument option `%s' is ambiguous option `%s' requires an argument premature EOFrule cannot be matchedscanner requires -8 flag to use the character %sstart condition %s declared twicestate # %4d state # %d accepts: state # %d accepts: [%d] state # %d: symbol table memory allocation failedthe character range [%c-%c] is ambiguous in a case-insensitive scannertoo many rules (> %d)!trailing context used twiceundefined definition {%s}unknown -C option '%c'unknown error processing section 1unrecognized %%option: %sunrecognized '%' directiveunrecognized rulevariable trailing context rules cannot be used with -f or -Fyymore() entails a minor performance penalty Project-Id-Version: flex 2.5.37 Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net POT-Creation-Date: 2014-03-26 15:00-0400 PO-Revision-Date: 2013-11-27 08:09-0300 Last-Translator: Rafael Ferreira Language-Team: Brazilian Portuguese Language: pt_BR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Poedit 1.5.7 Plural-Forms: nplurals=2; plural=(n > 1); ********** iniciando despejo de nfa com estado inicial %d Despejo DFA: Classes de Equivalência: Classes de Meta-Equivalência: transições presas: Fim de Arquivo %d (%d salvas) colisões de hash, %d DFAs iguais %d fazendo cópia de segurança de estados (não-aceita) %d entradas vazias na tabela %d estados epsilon, %d estados epsilon duplo %d protos criados %d regras %d conjuntos de realocação necessários %d pares estado/próximoestado criados %d entradas de tabela %d modelos criados, %d usos %d total de entradas de tabela necessárias %d/%d (pico %d) entradas nxt-chk criadas %d/%d (pico %d) modelos de entradas nxt-chk criadas %d/%d estados DFA (%d palavras) %d/%d estados NFA %d/%d entradas base-def criadas %d/%d classes de caracteres precisaram de %d/%d palavras de armazenamento, %d reusadas %d/%d classes de equivalência criadas %d/%d classes de meta-equivalência criadas %d/%d condições de início %d/%d transições únicas/duplicadas Padrões de início-de-linha usados Tabelas compactadas sempre têm cópias de segurança Sem cópia de segurança nenhuma classe de caracteres opções de scanner: - e pode ser a fonte real de outras penalidades de performance reportadas números de linha de regras associadas: transações de saída: %%option yylineno acarreta em uma penalidade na performance APENAS em regras que podem bater caracteres de nova linha %array é incompatível com a opção -+%d fazendo cópia de segurança de estados (não-aceita). %option yyclass só tem sentido para scanners C++%option yylineno não pode ser usada com REJECT%s %s %s versão %s estatísticas de uso: %s: erro interno fatal, %s ********** final do despejo *Algo Estranho* - tok: %d val: %d -Cf e -CF são mutuamente exclusivos-Cf/-CF e -Cm não fazem sentido juntos-Cf/-CF e -I são incompatíveis-Cf/-CF são incompatíveis com o modo de compatibilidade lex-I (interativo) acarreta em uma pequena penalidade na performance a opção de compatibilidade com lex da AT&T "-l" acarreta em uma grande penalidade na performance a opção -s foi fornecida, mas a regra padrão pode ser aplicadaA alocação de buffer para diretiva de linha falhouA alocação de buffer para m4 def falhouA alocação de buffer para m4 undef falhouA alocação de buffer para retornar string falhouNão é possível usar -+ com a opção -CFNão é possível usar -+ com a opção -lNão é possível usar --reentrant ou --bison-bridge com a opção -lNão é possível usar -f ou -F com a opção -lTabelas compactadas sempre têm cópias de segurança. Não foi possível escrever ecstblNão foi possível escrever eoltblNão foi possível escrever ftblNão foi possível escrever ssltblNão foi possível escrever yyacc_tblNão foi possível escrever yyacclist_tblNão foi possível escrever yybase_tblNão foi possível escrever yychk_tblNão foi possível escrever yydef_tblNão foi possível escrever yymeta_tblNão foi possível escrever yynultrans_tblNão foi possível escrever yynxt_tblNão foi possível escrever yynxt_tbl[][]Nome de definição muito longo Valor de definição para {%s} muito longo Fim de Arquivo encontrado dentro de uma açãoFim de Arquivo encontrado dentro do padrãoMarca de Fim Gera programas que realizando correspondência de padrão em texto. Tabela de compressão: -Ca, --align troca tabelas maiores por melhor alinhamento de memória -Ce, --ecs classes de construção de equivalência -Cf não comprime tabelas; use a representação -f -CF não comprime tabelas; use a representação -F -Cm, --meta-ecs construct meta-equivalence classes -Cr, --read use read() em vez da stdio para a entrada do scanner -f, --full gera scanner grande e rápido. O mesmo que -Cfr -F, --fast usa representação de tabela alternativa. O mesmo que -CFr -Cem compressão padrão (mesmo que --ecs --meta-ecs) Depuração: -d, --debug habilita o modo de depuração no scanner -b, --backup gravação de info de cópia segurança para %s -p, --perf-report grava relatório de performance para a stderr -s, --nodefault suprime a regra padrão para ECHO texto não correspondente -T, --trace %s deveria executar em modo de ratro -w, --nowarn não gera avisos -v, --verbose escreve um resumo das estatísticas do scanner para stdout Arquivos: -o, --outfile=ARQUIVO especifica um nome de arquivo de saída -S, --skel=ARQUIVO especifica um arquivo de esqueleto -t, --stdout grava um scanner na saída stdout em vez de %s --yyclass=NOME nome de classe C++ --header-file=ARQUIVO cria um arquivo de cabeçalho C além do scanner --tables-file[=ARQUIVO] escreve as tabelas no ARQUIVO Comportamento do scanner: -7, --7bit gera um scanner 7-bit -8, --8bit gera um scanner 8-bit -B, --batch gera um scanner de lote (oposto de -I) -i, --case-insensitive ignora diferença maiúsculo/minúsculo em padrões -l, --lex-compat compatibilidade máxima com lex original -X, --posix-compat compatibilidade máxima com lex POSIX -I, --interactive gera um scanner interativo (oposto de -B) --yylineno rastreia contagem de linhas em yylineno Código gerado: -+, --c++ gera classe C++ do scanner -Dmacro[=defn] #define macro defn (defn padrão é "1") -L, --noline suprime as diretivas #line em scanner -P, --prefix=TEXTO usa TEXTO como prefixo em vez de "yy" -R, --reentrant gera um scanner C reentrante --bison-bridge scanner para analisador bison puro. --bison-locations inclui suporte a yylloc. --stdinit inicializa yyin/yyout para stdin/stdout --noansi-definitions definições de funções estilo antigo --noansi-prototypes esvazia lista de parâmetros em prototipos --nounistd não inclui --noFUNCTION não gera uma FUNCTION em particular Miscelânea: -c opção POSIX faz-nada -n opção POSIX faz-nada -? -h, --help produz esta mensagem de ajuda -V, --version informa a versão do %s Linha de entrada muito longa Erro interno. flexopts estão malformados. Impossível restaurar. Linha de opção muito longa As opções -+ e --reentrant são mutuamente exclusivas.REJECT não pode ser usado com -f ou -FREJECT acarreta em uma grande penalidade na performance O estado #%d é não-aceita - Tente "%s --help" para maiores informações. Erro desconhecido=(%d) '{' sem fechamentoOpção "%s" desconhecida Uso: %s [OPÇÕES] [ARQUIVO]... Uso: %s [OPÇÕES]... Regra de final de contexto variável na linha %d Variável seguindo regras de contexto implicam em grande perda de performance [:^lower:] é ambígua em um scanner "case-insensitive"[:^upper:] é ambígua em um scanner "case-insensitive"a alocação de definição de macro falhoualocação de sko_stack falhoutentativa de aumentar o tamanho do vetor falhou inválida: %scaractere inválido "%s" detectado em check_char()classe de caractere inválidaexpressão de classe de caractere inválida: %scaracatere inválido entre {}'scaracter inválido: %svalores de iteração inválidoslinha inválida no arquivo de esqueletolista de condições de início inválidaestado de tipo inválido em mark_beginning_as_normal()caractere de transição inválido detectado em sympartition()sem suporte à ponte bison pelo scanner de C++.não foi possível abrir %snão é possível abrir o arquivo esqueleto %sverificação de consistência falhou em epsclosure()não foi possível criar %snão foi possível criar arquivo de cópia de segurança das informações %snão foi possível criar um estado único de final de buffernão foi possível escrever o cabeçalho das tabelastexto final perigosofalha dinâmica de memória em copy_string()máquina vazia em dupmachine()erro ao fechar a cópia de segurança %serro ao fechar o arquivo de saída %serro fechando o arquivo esqueleto %serro ao criar o arquivo cabeçalho %serro ao remover o arquivo de saída %serro ao gravar a cópia de segurança %serro ao gravar o arquivo de saída %serro fatal de análisemuitas transições em mkxtion()definição de nome incompletaerro lendo o arquivo esqueleto %sregras de entrada são muito complicadas (>= %d estados NFA)valor de iteração deve ser positivodiretiva "%top" malformadaalocação de memória falhou em allocate_array()alocação de memória falhou em yy_flex_xmalloc()faltou aspafaltou }nome "%s" ridiculamente longonome definido duas vezesfaixa negativa na classe de caracteresopção "%s" não permite argumentos opção "%s" é ambígua opção "%s" requer um argumento Fim-de-Arquivo prematuroaplicação da regra não gerou nenhum resultadoo scanner precisa da opção -8 para usar o caractere %scondição de início %s declarada duas vezesestado # %4d estado # %d aceita: estado # %d aceita: [%d] estado # %d: alocação da memória da tabela de símbolos falhoua faixa de caracteres [%c-%c] é ambígua em um scanner "case-insensitive"muitas regras (> %d)!contexto final usado duas vezesdefinição indefinida {%s}opção -C "%c" desconhecidaerro desconhecido processando a seção 1%%option não reconhecida: %sdiretiva "%" não reconhecidaregra não reconhecidavariáveis seguindo regras de contexto não podem ser usadas com -f ou -Fyymore() acarreta em uma pequena penalidade na performance flex-2.5.39/po/en@boldquot.po0000644000175000017500000006312212314621665016266 0ustar srivastasrivasta# English translations for flex package. # This file is put in the public domain. # Automatically generated, 2014. # # All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # # This catalog furthermore displays the text between the quotation marks in # bold face, assuming the VT100/XTerm escape sequences. # msgid "" msgstr "" "Project-Id-Version: flex 2.5.39\n" "Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2014-03-26 15:00-0400\n" "PO-Revision-Date: 2014-03-26 15:00-0400\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: en@boldquot\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: buf.c:78 msgid "Allocation of buffer to print string failed" msgstr "Allocation of buffer to print string failed" #: buf.c:100 msgid "Allocation of buffer for line directive failed" msgstr "Allocation of buffer for line directive failed" #: buf.c:177 msgid "Allocation of buffer for m4 def failed" msgstr "Allocation of buffer for m4 def failed" #: buf.c:197 msgid "Allocation of buffer for m4 undef failed" msgstr "Allocation of buffer for m4 undef failed" #: dfa.c:61 #, c-format msgid "State #%d is non-accepting -\n" msgstr "State #%d is non-accepting -\n" #: dfa.c:124 msgid "dangerous trailing context" msgstr "dangerous trailing context" #: dfa.c:166 #, c-format msgid " associated rule line numbers:" msgstr " associated rule line numbers:" #: dfa.c:202 #, c-format msgid " out-transitions: " msgstr " out-transitions: " #: dfa.c:210 #, c-format msgid "" "\n" " jam-transitions: EOF " msgstr "" "\n" " jam-transitions: EOF " #: dfa.c:341 msgid "consistency check failed in epsclosure()" msgstr "consistency check failed in epsclosure()" #: dfa.c:429 msgid "" "\n" "\n" "DFA Dump:\n" "\n" msgstr "" "\n" "\n" "DFA Dump:\n" "\n" #: dfa.c:604 msgid "could not create unique end-of-buffer state" msgstr "could not create unique end-of-buffer state" #: dfa.c:625 #, c-format msgid "state # %d:\n" msgstr "state # %d:\n" #: dfa.c:785 msgid "Could not write yynxt_tbl[][]" msgstr "Could not write yynxt_tbl[][]" #: dfa.c:1049 msgid "bad transition character detected in sympartition()" msgstr "bad transition character detected in sympartition()" #: gen.c:478 msgid "" "\n" "\n" "Equivalence Classes:\n" "\n" msgstr "" "\n" "\n" "Equivalence Classes:\n" "\n" #: gen.c:662 gen.c:691 gen.c:1215 #, c-format msgid "state # %d accepts: [%d]\n" msgstr "state # %d accepts: [%d]\n" #: gen.c:1110 #, c-format msgid "state # %d accepts: " msgstr "state # %d accepts: " #: gen.c:1157 msgid "Could not write yyacclist_tbl" msgstr "Could not write yyacclist_tbl" #: gen.c:1233 msgid "Could not write yyacc_tbl" msgstr "Could not write yyacc_tbl" #: gen.c:1248 gen.c:1633 gen.c:1656 msgid "Could not write ecstbl" msgstr "Could not write ecstbl" #: gen.c:1271 msgid "" "\n" "\n" "Meta-Equivalence Classes:\n" msgstr "" "\n" "\n" "Meta-Equivalence Classes:\n" #: gen.c:1293 msgid "Could not write yymeta_tbl" msgstr "Could not write yymeta_tbl" #: gen.c:1354 msgid "Could not write yybase_tbl" msgstr "Could not write yybase_tbl" #: gen.c:1388 msgid "Could not write yydef_tbl" msgstr "Could not write yydef_tbl" #: gen.c:1428 msgid "Could not write yynxt_tbl" msgstr "Could not write yynxt_tbl" #: gen.c:1464 msgid "Could not write yychk_tbl" msgstr "Could not write yychk_tbl" #: gen.c:1618 gen.c:1647 msgid "Could not write ftbl" msgstr "Could not write ftbl" #: gen.c:1624 msgid "Could not write ssltbl" msgstr "Could not write ssltbl" #: gen.c:1675 msgid "Could not write eoltbl" msgstr "Could not write eoltbl" #: gen.c:1735 msgid "Could not write yynultrans_tbl" msgstr "Could not write yynultrans_tbl" #: main.c:191 msgid "rule cannot be matched" msgstr "rule cannot be matched" #: main.c:196 msgid "-s option given but default rule can be matched" msgstr "-s option given but default rule can be matched" #: main.c:236 msgid "Can't use -+ with -l option" msgstr "Can't use -+ with -l option" #: main.c:239 msgid "Can't use -f or -F with -l option" msgstr "Can't use -f or -F with -l option" #: main.c:243 msgid "Can't use --reentrant or --bison-bridge with -l option" msgstr "Can't use --reentrant or --bison-bridge with -l option" #: main.c:275 msgid "-Cf/-CF and -Cm don't make sense together" msgstr "-Cf/-CF and -Cm don't make sense together" #: main.c:278 msgid "-Cf/-CF and -I are incompatible" msgstr "-Cf/-CF and -I are incompatible" #: main.c:282 msgid "-Cf/-CF are incompatible with lex-compatibility mode" msgstr "-Cf/-CF are incompatible with lex-compatibility mode" #: main.c:287 msgid "-Cf and -CF are mutually exclusive" msgstr "-Cf and -CF are mutually exclusive" #: main.c:291 msgid "Can't use -+ with -CF option" msgstr "Can't use -+ with -CF option" #: main.c:294 #, c-format msgid "%array incompatible with -+ option" msgstr "%array incompatible with -+ option" #: main.c:299 msgid "Options -+ and --reentrant are mutually exclusive." msgstr "Options -+ and --reentrant are mutually exclusive." #: main.c:302 msgid "bison bridge not supported for the C++ scanner." msgstr "bison bridge not supported for the C++ scanner." #: main.c:357 main.c:403 #, c-format msgid "could not create %s" msgstr "could not create %s" #: main.c:416 msgid "could not write tables header" msgstr "could not write tables header" #: main.c:420 #, c-format msgid "can't open skeleton file %s" msgstr "can't open skeleton file %s" #: main.c:456 msgid "allocation of macro definition failed" msgstr "allocation of macro definition failed" #: main.c:504 #, c-format msgid "input error reading skeleton file %s" msgstr "input error reading skeleton file %s" #: main.c:508 #, c-format msgid "error closing skeleton file %s" msgstr "error closing skeleton file %s" #: main.c:693 #, c-format msgid "error creating header file %s" msgstr "error creating header file %s" #: main.c:701 #, c-format msgid "error writing output file %s" msgstr "error writing output file %s" #: main.c:705 #, c-format msgid "error closing output file %s" msgstr "error closing output file %s" #: main.c:709 #, c-format msgid "error deleting output file %s" msgstr "error deleting output file %s" #: main.c:716 #, c-format msgid "No backing up.\n" msgstr "No backing up.\n" #: main.c:720 #, c-format msgid "%d backing up (non-accepting) states.\n" msgstr "%d backing up (non-accepting) states.\n" #: main.c:724 #, c-format msgid "Compressed tables always back up.\n" msgstr "Compressed tables always back up.\n" #: main.c:727 #, c-format msgid "error writing backup file %s" msgstr "error writing backup file %s" #: main.c:731 #, c-format msgid "error closing backup file %s" msgstr "error closing backup file %s" #: main.c:736 #, c-format msgid "%s version %s usage statistics:\n" msgstr "%s version %s usage statistics:\n" #: main.c:739 #, c-format msgid " scanner options: -" msgstr " scanner options: -" #: main.c:818 #, c-format msgid " %d/%d NFA states\n" msgstr " %d/%d NFA states\n" #: main.c:820 #, c-format msgid " %d/%d DFA states (%d words)\n" msgstr " %d/%d DFA states (%d words)\n" #: main.c:822 #, c-format msgid " %d rules\n" msgstr " %d rules\n" #: main.c:827 #, c-format msgid " No backing up\n" msgstr " No backing up\n" #: main.c:831 #, c-format msgid " %d backing-up (non-accepting) states\n" msgstr " %d backing-up (non-accepting) states\n" #: main.c:836 #, c-format msgid " Compressed tables always back-up\n" msgstr " Compressed tables always back-up\n" #: main.c:840 #, c-format msgid " Beginning-of-line patterns used\n" msgstr " Beginning-of-line patterns used\n" #: main.c:842 #, c-format msgid " %d/%d start conditions\n" msgstr " %d/%d start conditions\n" #: main.c:846 #, c-format msgid " %d epsilon states, %d double epsilon states\n" msgstr " %d epsilon states, %d double epsilon states\n" #: main.c:850 #, c-format msgid " no character classes\n" msgstr " no character classes\n" #: main.c:854 #, c-format msgid " %d/%d character classes needed %d/%d words of storage, %d reused\n" msgstr " %d/%d character classes needed %d/%d words of storage, %d reused\n" #: main.c:859 #, c-format msgid " %d state/nextstate pairs created\n" msgstr " %d state/nextstate pairs created\n" #: main.c:862 #, c-format msgid " %d/%d unique/duplicate transitions\n" msgstr " %d/%d unique/duplicate transitions\n" #: main.c:867 #, c-format msgid " %d table entries\n" msgstr " %d table entries\n" #: main.c:875 #, c-format msgid " %d/%d base-def entries created\n" msgstr " %d/%d base-def entries created\n" #: main.c:879 #, c-format msgid " %d/%d (peak %d) nxt-chk entries created\n" msgstr " %d/%d (peak %d) nxt-chk entries created\n" #: main.c:883 #, c-format msgid " %d/%d (peak %d) template nxt-chk entries created\n" msgstr " %d/%d (peak %d) template nxt-chk entries created\n" #: main.c:887 #, c-format msgid " %d empty table entries\n" msgstr " %d empty table entries\n" #: main.c:889 #, c-format msgid " %d protos created\n" msgstr " %d protos created\n" #: main.c:892 #, c-format msgid " %d templates created, %d uses\n" msgstr " %d templates created, %d uses\n" #: main.c:900 #, c-format msgid " %d/%d equivalence classes created\n" msgstr " %d/%d equivalence classes created\n" #: main.c:908 #, c-format msgid " %d/%d meta-equivalence classes created\n" msgstr " %d/%d meta-equivalence classes created\n" #: main.c:914 #, c-format msgid " %d (%d saved) hash collisions, %d DFAs equal\n" msgstr " %d (%d saved) hash collisions, %d DFAs equal\n" #: main.c:916 #, c-format msgid " %d sets of reallocations needed\n" msgstr " %d sets of reallocations needed\n" #: main.c:918 #, c-format msgid " %d total table entries needed\n" msgstr " %d total table entries needed\n" #: main.c:995 #, c-format msgid "Internal error. flexopts are malformed.\n" msgstr "Internal error. flexopts are malformed.\n" #: main.c:1005 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Try ‘%s --help’ for more information.\n" #: main.c:1062 #, c-format msgid "unknown -C option '%c'" msgstr "unknown -C option ‘%c’" #: main.c:1191 #, c-format msgid "%s %s\n" msgstr "%s %s\n" #: main.c:1466 msgid "fatal parse error" msgstr "fatal parse error" #: main.c:1498 #, c-format msgid "could not create backing-up info file %s" msgstr "could not create backing-up info file %s" #: main.c:1519 #, c-format msgid "-l AT&T lex compatibility option entails a large performance penalty\n" msgstr "-l AT&T lex compatibility option entails a large performance penalty\n" #: main.c:1522 #, c-format msgid " and may be the actual source of other reported performance penalties\n" msgstr "" " and may be the actual source of other reported performance penalties\n" #: main.c:1528 #, c-format msgid "" "%%option yylineno entails a performance penalty ONLY on rules that can match " "newline characters\n" msgstr "" "%%option yylineno entails a performance penalty ONLY on rules that can match " "newline characters\n" #: main.c:1535 #, c-format msgid "-I (interactive) entails a minor performance penalty\n" msgstr "-I (interactive) entails a minor performance penalty\n" #: main.c:1540 #, c-format msgid "yymore() entails a minor performance penalty\n" msgstr "yymore() entails a minor performance penalty\n" #: main.c:1546 #, c-format msgid "REJECT entails a large performance penalty\n" msgstr "REJECT entails a large performance penalty\n" #: main.c:1551 #, c-format msgid "Variable trailing context rules entail a large performance penalty\n" msgstr "Variable trailing context rules entail a large performance penalty\n" #: main.c:1563 msgid "REJECT cannot be used with -f or -F" msgstr "REJECT cannot be used with -f or -F" #: main.c:1566 #, c-format msgid "%option yylineno cannot be used with REJECT" msgstr "%option yylineno cannot be used with REJECT" #: main.c:1569 msgid "variable trailing context rules cannot be used with -f or -F" msgstr "variable trailing context rules cannot be used with -f or -F" #: main.c:1692 #, c-format msgid "%option yyclass only meaningful for C++ scanners" msgstr "%option yyclass only meaningful for C++ scanners" #: main.c:1799 #, c-format msgid "Usage: %s [OPTIONS] [FILE]...\n" msgstr "Usage: %s [OPTIONS] [FILE]...\n" #: main.c:1802 #, c-format msgid "" "Generates programs that perform pattern-matching on text.\n" "\n" "Table Compression:\n" " -Ca, --align trade off larger tables for better memory alignment\n" " -Ce, --ecs construct equivalence classes\n" " -Cf do not compress tables; use -f representation\n" " -CF do not compress tables; use -F representation\n" " -Cm, --meta-ecs construct meta-equivalence classes\n" " -Cr, --read use read() instead of stdio for scanner input\n" " -f, --full generate fast, large scanner. Same as -Cfr\n" " -F, --fast use alternate table representation. Same as -CFr\n" " -Cem default compression (same as --ecs --meta-ecs)\n" "\n" "Debugging:\n" " -d, --debug enable debug mode in scanner\n" " -b, --backup write backing-up information to %s\n" " -p, --perf-report write performance report to stderr\n" " -s, --nodefault suppress default rule to ECHO unmatched text\n" " -T, --trace %s should run in trace mode\n" " -w, --nowarn do not generate warnings\n" " -v, --verbose write summary of scanner statistics to stdout\n" "\n" "Files:\n" " -o, --outfile=FILE specify output filename\n" " -S, --skel=FILE specify skeleton file\n" " -t, --stdout write scanner on stdout instead of %s\n" " --yyclass=NAME name of C++ class\n" " --header-file=FILE create a C header file in addition to the " "scanner\n" " --tables-file[=FILE] write tables to FILE\n" "\n" "Scanner behavior:\n" " -7, --7bit generate 7-bit scanner\n" " -8, --8bit generate 8-bit scanner\n" " -B, --batch generate batch scanner (opposite of -I)\n" " -i, --case-insensitive ignore case in patterns\n" " -l, --lex-compat maximal compatibility with original lex\n" " -X, --posix-compat maximal compatibility with POSIX lex\n" " -I, --interactive generate interactive scanner (opposite of -B)\n" " --yylineno track line count in yylineno\n" "\n" "Generated code:\n" " -+, --c++ generate C++ scanner class\n" " -Dmacro[=defn] #define macro defn (default defn is '1')\n" " -L, --noline suppress #line directives in scanner\n" " -P, --prefix=STRING use STRING as prefix instead of \"yy\"\n" " -R, --reentrant generate a reentrant C scanner\n" " --bison-bridge scanner for bison pure parser.\n" " --bison-locations include yylloc support.\n" " --stdinit initialize yyin/yyout to stdin/stdout\n" " --noansi-definitions old-style function definitions\n" " --noansi-prototypes empty parameter list in prototypes\n" " --nounistd do not include \n" " --noFUNCTION do not generate a particular FUNCTION\n" "\n" "Miscellaneous:\n" " -c do-nothing POSIX option\n" " -n do-nothing POSIX option\n" " -?\n" " -h, --help produce this help message\n" " -V, --version report %s version\n" msgstr "" "Generates programs that perform pattern-matching on text.\n" "\n" "Table Compression:\n" " -Ca, --align trade off larger tables for better memory alignment\n" " -Ce, --ecs construct equivalence classes\n" " -Cf do not compress tables; use -f representation\n" " -CF do not compress tables; use -F representation\n" " -Cm, --meta-ecs construct meta-equivalence classes\n" " -Cr, --read use read() instead of stdio for scanner input\n" " -f, --full generate fast, large scanner. Same as -Cfr\n" " -F, --fast use alternate table representation. Same as -CFr\n" " -Cem default compression (same as --ecs --meta-ecs)\n" "\n" "Debugging:\n" " -d, --debug enable debug mode in scanner\n" " -b, --backup write backing-up information to %s\n" " -p, --perf-report write performance report to stderr\n" " -s, --nodefault suppress default rule to ECHO unmatched text\n" " -T, --trace %s should run in trace mode\n" " -w, --nowarn do not generate warnings\n" " -v, --verbose write summary of scanner statistics to stdout\n" "\n" "Files:\n" " -o, --outfile=FILE specify output filename\n" " -S, --skel=FILE specify skeleton file\n" " -t, --stdout write scanner on stdout instead of %s\n" " --yyclass=NAME name of C++ class\n" " --header-file=FILE create a C header file in addition to the " "scanner\n" " --tables-file[=FILE] write tables to FILE\n" "\n" "Scanner behavior:\n" " -7, --7bit generate 7-bit scanner\n" " -8, --8bit generate 8-bit scanner\n" " -B, --batch generate batch scanner (opposite of -I)\n" " -i, --case-insensitive ignore case in patterns\n" " -l, --lex-compat maximal compatibility with original lex\n" " -X, --posix-compat maximal compatibility with POSIX lex\n" " -I, --interactive generate interactive scanner (opposite of -B)\n" " --yylineno track line count in yylineno\n" "\n" "Generated code:\n" " -+, --c++ generate C++ scanner class\n" " -Dmacro[=defn] #define macro defn (default defn is '1')\n" " -L, --noline suppress #line directives in scanner\n" " -P, --prefix=STRING use STRING as prefix instead of “yy”\n" " -R, --reentrant generate a reentrant C scanner\n" " --bison-bridge scanner for bison pure parser.\n" " --bison-locations include yylloc support.\n" " --stdinit initialize yyin/yyout to stdin/stdout\n" " --noansi-definitions old-style function definitions\n" " --noansi-prototypes empty parameter list in prototypes\n" " --nounistd do not include \n" " --noFUNCTION do not generate a particular FUNCTION\n" "\n" "Miscellaneous:\n" " -c do-nothing POSIX option\n" " -n do-nothing POSIX option\n" " -?\n" " -h, --help produce this help message\n" " -V, --version report %s version\n" #: misc.c:65 msgid "allocation of sko_stack failed" msgstr "allocation of sko_stack failed" #: misc.c:102 misc.c:128 #, c-format msgid "name \"%s\" ridiculously long" msgstr "name “%s” ridiculously long" #: misc.c:177 msgid "memory allocation failed in allocate_array()" msgstr "memory allocation failed in allocate_array()" #: misc.c:230 #, c-format msgid "bad character '%s' detected in check_char()" msgstr "bad character ‘%s’ detected in check_char()" #: misc.c:235 #, c-format msgid "scanner requires -8 flag to use the character %s" msgstr "scanner requires -8 flag to use the character %s" #: misc.c:268 msgid "dynamic memory failure in copy_string()" msgstr "dynamic memory failure in copy_string()" #: misc.c:367 #, c-format msgid "%s: fatal internal error, %s\n" msgstr "%s: fatal internal error, %s\n" #: misc.c:803 msgid "attempt to increase array size failed" msgstr "attempt to increase array size failed" #: misc.c:930 msgid "bad line in skeleton file" msgstr "bad line in skeleton file" #: misc.c:979 msgid "memory allocation failed in yy_flex_xmalloc()" msgstr "memory allocation failed in yy_flex_xmalloc()" #: nfa.c:104 #, c-format msgid "" "\n" "\n" "********** beginning dump of nfa with start state %d\n" msgstr "" "\n" "\n" "********** beginning dump of nfa with start state %d\n" #: nfa.c:115 #, c-format msgid "state # %4d\t" msgstr "state # %4d\t" #: nfa.c:130 #, c-format msgid "********** end of dump\n" msgstr "********** end of dump\n" #: nfa.c:174 msgid "empty machine in dupmachine()" msgstr "empty machine in dupmachine()" #: nfa.c:240 #, c-format msgid "Variable trailing context rule at line %d\n" msgstr "Variable trailing context rule at line %d\n" #: nfa.c:364 msgid "bad state type in mark_beginning_as_normal()" msgstr "bad state type in mark_beginning_as_normal()" #: nfa.c:609 #, c-format msgid "input rules are too complicated (>= %d NFA states)" msgstr "input rules are too complicated (>= %d NFA states)" #: nfa.c:688 msgid "found too many transitions in mkxtion()" msgstr "found too many transitions in mkxtion()" #: nfa.c:714 #, c-format msgid "too many rules (> %d)!" msgstr "too many rules (> %d)!" #: parse.y:159 msgid "unknown error processing section 1" msgstr "unknown error processing section 1" #: parse.y:184 parse.y:351 msgid "bad start condition list" msgstr "bad start condition list" #: parse.y:315 msgid "unrecognized rule" msgstr "unrecognized rule" #: parse.y:434 parse.y:447 parse.y:516 msgid "trailing context used twice" msgstr "trailing context used twice" #: parse.y:552 parse.y:562 parse.y:635 parse.y:645 msgid "bad iteration values" msgstr "bad iteration values" #: parse.y:580 parse.y:598 parse.y:663 parse.y:681 msgid "iteration value must be positive" msgstr "iteration value must be positive" #: parse.y:804 parse.y:814 #, c-format msgid "the character range [%c-%c] is ambiguous in a case-insensitive scanner" msgstr "the character range [%c-%c] is ambiguous in a case-insensitive scanner" #: parse.y:819 msgid "negative range in character class" msgstr "negative range in character class" #: parse.y:916 msgid "[:^lower:] is ambiguous in case insensitive scanner" msgstr "[:^lower:] is ambiguous in case insensitive scanner" #: parse.y:922 msgid "[:^upper:] ambiguous in case insensitive scanner" msgstr "[:^upper:] ambiguous in case insensitive scanner" #: scan.l:75 scan.l:618 scan.l:676 msgid "Input line too long\n" msgstr "Input line too long\n" #: scan.l:161 #, c-format msgid "malformed '%top' directive" msgstr "malformed ‘%top’ directive" #: scan.l:183 #, no-c-format msgid "unrecognized '%' directive" msgstr "unrecognized ‘%’ directive" #: scan.l:192 msgid "Definition name too long\n" msgstr "Definition name too long\n" #: scan.l:284 msgid "Unmatched '{'" msgstr "Unmatched ‘{’" #: scan.l:300 #, c-format msgid "Definition value for {%s} too long\n" msgstr "Definition value for {%s} too long\n" #: scan.l:317 msgid "incomplete name definition" msgstr "incomplete name definition" #: scan.l:443 msgid "Option line too long\n" msgstr "Option line too long\n" #: scan.l:451 #, c-format msgid "unrecognized %%option: %s" msgstr "unrecognized %%option: %s" #: scan.l:633 scan.l:800 msgid "bad character class" msgstr "bad character class" #: scan.l:683 #, c-format msgid "undefined definition {%s}" msgstr "undefined definition {%s}" #: scan.l:755 #, c-format msgid "bad : %s" msgstr "bad : %s" #: scan.l:768 msgid "missing quote" msgstr "missing quote" #: scan.l:834 #, c-format msgid "bad character class expression: %s" msgstr "bad character class expression: %s" #: scan.l:856 msgid "bad character inside {}'s" msgstr "bad character inside {}'s" #: scan.l:862 msgid "missing }" msgstr "missing }" #: scan.l:940 msgid "EOF encountered inside an action" msgstr "EOF encountered inside an action" #: scan.l:945 msgid "EOF encountered inside pattern" msgstr "EOF encountered inside pattern" #: scan.l:967 #, c-format msgid "bad character: %s" msgstr "bad character: %s" #: scan.l:996 #, c-format msgid "can't open %s" msgstr "can't open %s" #: scanopt.c:291 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Usage: %s [OPTIONS]...\n" #: scanopt.c:564 #, c-format msgid "option `%s' doesn't allow an argument\n" msgstr "option ‘%s’ doesn't allow an argument\n" #: scanopt.c:569 #, c-format msgid "option `%s' requires an argument\n" msgstr "option ‘%s’ requires an argument\n" #: scanopt.c:573 #, c-format msgid "option `%s' is ambiguous\n" msgstr "option ‘%s’ is ambiguous\n" #: scanopt.c:577 #, c-format msgid "Unrecognized option `%s'\n" msgstr "Unrecognized option ‘%s’\n" #: scanopt.c:581 #, c-format msgid "Unknown error=(%d)\n" msgstr "Unknown error=(%d)\n" #: sym.c:100 msgid "symbol table memory allocation failed" msgstr "symbol table memory allocation failed" #: sym.c:202 msgid "name defined twice" msgstr "name defined twice" #: sym.c:253 #, c-format msgid "start condition %s declared twice" msgstr "start condition %s declared twice" #: yylex.c:56 msgid "premature EOF" msgstr "premature EOF" #: yylex.c:198 #, c-format msgid "End Marker\n" msgstr "End Marker\n" #: yylex.c:204 #, c-format msgid "*Something Weird* - tok: %d val: %d\n" msgstr "*Something Weird* - tok: %d val: %d\n" flex-2.5.39/po/LINGUAS0000644000175000017500000000013412300734270014461 0ustar srivastasrivastaca da de en@quot en@boldquot eo es fi fr ga hr ko nl pl pt_BR ro ru sr sv tr vi zh_CN zh_TW flex-2.5.39/po/en@quot.po0000644000175000017500000006255012314621664015430 0ustar srivastasrivasta# English translations for flex package. # This file is put in the public domain. # Automatically generated, 2014. # # All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # msgid "" msgstr "" "Project-Id-Version: flex 2.5.39\n" "Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2014-03-26 15:00-0400\n" "PO-Revision-Date: 2014-03-26 15:00-0400\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: en@quot\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: buf.c:78 msgid "Allocation of buffer to print string failed" msgstr "Allocation of buffer to print string failed" #: buf.c:100 msgid "Allocation of buffer for line directive failed" msgstr "Allocation of buffer for line directive failed" #: buf.c:177 msgid "Allocation of buffer for m4 def failed" msgstr "Allocation of buffer for m4 def failed" #: buf.c:197 msgid "Allocation of buffer for m4 undef failed" msgstr "Allocation of buffer for m4 undef failed" #: dfa.c:61 #, c-format msgid "State #%d is non-accepting -\n" msgstr "State #%d is non-accepting -\n" #: dfa.c:124 msgid "dangerous trailing context" msgstr "dangerous trailing context" #: dfa.c:166 #, c-format msgid " associated rule line numbers:" msgstr " associated rule line numbers:" #: dfa.c:202 #, c-format msgid " out-transitions: " msgstr " out-transitions: " #: dfa.c:210 #, c-format msgid "" "\n" " jam-transitions: EOF " msgstr "" "\n" " jam-transitions: EOF " #: dfa.c:341 msgid "consistency check failed in epsclosure()" msgstr "consistency check failed in epsclosure()" #: dfa.c:429 msgid "" "\n" "\n" "DFA Dump:\n" "\n" msgstr "" "\n" "\n" "DFA Dump:\n" "\n" #: dfa.c:604 msgid "could not create unique end-of-buffer state" msgstr "could not create unique end-of-buffer state" #: dfa.c:625 #, c-format msgid "state # %d:\n" msgstr "state # %d:\n" #: dfa.c:785 msgid "Could not write yynxt_tbl[][]" msgstr "Could not write yynxt_tbl[][]" #: dfa.c:1049 msgid "bad transition character detected in sympartition()" msgstr "bad transition character detected in sympartition()" #: gen.c:478 msgid "" "\n" "\n" "Equivalence Classes:\n" "\n" msgstr "" "\n" "\n" "Equivalence Classes:\n" "\n" #: gen.c:662 gen.c:691 gen.c:1215 #, c-format msgid "state # %d accepts: [%d]\n" msgstr "state # %d accepts: [%d]\n" #: gen.c:1110 #, c-format msgid "state # %d accepts: " msgstr "state # %d accepts: " #: gen.c:1157 msgid "Could not write yyacclist_tbl" msgstr "Could not write yyacclist_tbl" #: gen.c:1233 msgid "Could not write yyacc_tbl" msgstr "Could not write yyacc_tbl" #: gen.c:1248 gen.c:1633 gen.c:1656 msgid "Could not write ecstbl" msgstr "Could not write ecstbl" #: gen.c:1271 msgid "" "\n" "\n" "Meta-Equivalence Classes:\n" msgstr "" "\n" "\n" "Meta-Equivalence Classes:\n" #: gen.c:1293 msgid "Could not write yymeta_tbl" msgstr "Could not write yymeta_tbl" #: gen.c:1354 msgid "Could not write yybase_tbl" msgstr "Could not write yybase_tbl" #: gen.c:1388 msgid "Could not write yydef_tbl" msgstr "Could not write yydef_tbl" #: gen.c:1428 msgid "Could not write yynxt_tbl" msgstr "Could not write yynxt_tbl" #: gen.c:1464 msgid "Could not write yychk_tbl" msgstr "Could not write yychk_tbl" #: gen.c:1618 gen.c:1647 msgid "Could not write ftbl" msgstr "Could not write ftbl" #: gen.c:1624 msgid "Could not write ssltbl" msgstr "Could not write ssltbl" #: gen.c:1675 msgid "Could not write eoltbl" msgstr "Could not write eoltbl" #: gen.c:1735 msgid "Could not write yynultrans_tbl" msgstr "Could not write yynultrans_tbl" #: main.c:191 msgid "rule cannot be matched" msgstr "rule cannot be matched" #: main.c:196 msgid "-s option given but default rule can be matched" msgstr "-s option given but default rule can be matched" #: main.c:236 msgid "Can't use -+ with -l option" msgstr "Can't use -+ with -l option" #: main.c:239 msgid "Can't use -f or -F with -l option" msgstr "Can't use -f or -F with -l option" #: main.c:243 msgid "Can't use --reentrant or --bison-bridge with -l option" msgstr "Can't use --reentrant or --bison-bridge with -l option" #: main.c:275 msgid "-Cf/-CF and -Cm don't make sense together" msgstr "-Cf/-CF and -Cm don't make sense together" #: main.c:278 msgid "-Cf/-CF and -I are incompatible" msgstr "-Cf/-CF and -I are incompatible" #: main.c:282 msgid "-Cf/-CF are incompatible with lex-compatibility mode" msgstr "-Cf/-CF are incompatible with lex-compatibility mode" #: main.c:287 msgid "-Cf and -CF are mutually exclusive" msgstr "-Cf and -CF are mutually exclusive" #: main.c:291 msgid "Can't use -+ with -CF option" msgstr "Can't use -+ with -CF option" #: main.c:294 #, c-format msgid "%array incompatible with -+ option" msgstr "%array incompatible with -+ option" #: main.c:299 msgid "Options -+ and --reentrant are mutually exclusive." msgstr "Options -+ and --reentrant are mutually exclusive." #: main.c:302 msgid "bison bridge not supported for the C++ scanner." msgstr "bison bridge not supported for the C++ scanner." #: main.c:357 main.c:403 #, c-format msgid "could not create %s" msgstr "could not create %s" #: main.c:416 msgid "could not write tables header" msgstr "could not write tables header" #: main.c:420 #, c-format msgid "can't open skeleton file %s" msgstr "can't open skeleton file %s" #: main.c:456 msgid "allocation of macro definition failed" msgstr "allocation of macro definition failed" #: main.c:504 #, c-format msgid "input error reading skeleton file %s" msgstr "input error reading skeleton file %s" #: main.c:508 #, c-format msgid "error closing skeleton file %s" msgstr "error closing skeleton file %s" #: main.c:693 #, c-format msgid "error creating header file %s" msgstr "error creating header file %s" #: main.c:701 #, c-format msgid "error writing output file %s" msgstr "error writing output file %s" #: main.c:705 #, c-format msgid "error closing output file %s" msgstr "error closing output file %s" #: main.c:709 #, c-format msgid "error deleting output file %s" msgstr "error deleting output file %s" #: main.c:716 #, c-format msgid "No backing up.\n" msgstr "No backing up.\n" #: main.c:720 #, c-format msgid "%d backing up (non-accepting) states.\n" msgstr "%d backing up (non-accepting) states.\n" #: main.c:724 #, c-format msgid "Compressed tables always back up.\n" msgstr "Compressed tables always back up.\n" #: main.c:727 #, c-format msgid "error writing backup file %s" msgstr "error writing backup file %s" #: main.c:731 #, c-format msgid "error closing backup file %s" msgstr "error closing backup file %s" #: main.c:736 #, c-format msgid "%s version %s usage statistics:\n" msgstr "%s version %s usage statistics:\n" #: main.c:739 #, c-format msgid " scanner options: -" msgstr " scanner options: -" #: main.c:818 #, c-format msgid " %d/%d NFA states\n" msgstr " %d/%d NFA states\n" #: main.c:820 #, c-format msgid " %d/%d DFA states (%d words)\n" msgstr " %d/%d DFA states (%d words)\n" #: main.c:822 #, c-format msgid " %d rules\n" msgstr " %d rules\n" #: main.c:827 #, c-format msgid " No backing up\n" msgstr " No backing up\n" #: main.c:831 #, c-format msgid " %d backing-up (non-accepting) states\n" msgstr " %d backing-up (non-accepting) states\n" #: main.c:836 #, c-format msgid " Compressed tables always back-up\n" msgstr " Compressed tables always back-up\n" #: main.c:840 #, c-format msgid " Beginning-of-line patterns used\n" msgstr " Beginning-of-line patterns used\n" #: main.c:842 #, c-format msgid " %d/%d start conditions\n" msgstr " %d/%d start conditions\n" #: main.c:846 #, c-format msgid " %d epsilon states, %d double epsilon states\n" msgstr " %d epsilon states, %d double epsilon states\n" #: main.c:850 #, c-format msgid " no character classes\n" msgstr " no character classes\n" #: main.c:854 #, c-format msgid " %d/%d character classes needed %d/%d words of storage, %d reused\n" msgstr " %d/%d character classes needed %d/%d words of storage, %d reused\n" #: main.c:859 #, c-format msgid " %d state/nextstate pairs created\n" msgstr " %d state/nextstate pairs created\n" #: main.c:862 #, c-format msgid " %d/%d unique/duplicate transitions\n" msgstr " %d/%d unique/duplicate transitions\n" #: main.c:867 #, c-format msgid " %d table entries\n" msgstr " %d table entries\n" #: main.c:875 #, c-format msgid " %d/%d base-def entries created\n" msgstr " %d/%d base-def entries created\n" #: main.c:879 #, c-format msgid " %d/%d (peak %d) nxt-chk entries created\n" msgstr " %d/%d (peak %d) nxt-chk entries created\n" #: main.c:883 #, c-format msgid " %d/%d (peak %d) template nxt-chk entries created\n" msgstr " %d/%d (peak %d) template nxt-chk entries created\n" #: main.c:887 #, c-format msgid " %d empty table entries\n" msgstr " %d empty table entries\n" #: main.c:889 #, c-format msgid " %d protos created\n" msgstr " %d protos created\n" #: main.c:892 #, c-format msgid " %d templates created, %d uses\n" msgstr " %d templates created, %d uses\n" #: main.c:900 #, c-format msgid " %d/%d equivalence classes created\n" msgstr " %d/%d equivalence classes created\n" #: main.c:908 #, c-format msgid " %d/%d meta-equivalence classes created\n" msgstr " %d/%d meta-equivalence classes created\n" #: main.c:914 #, c-format msgid " %d (%d saved) hash collisions, %d DFAs equal\n" msgstr " %d (%d saved) hash collisions, %d DFAs equal\n" #: main.c:916 #, c-format msgid " %d sets of reallocations needed\n" msgstr " %d sets of reallocations needed\n" #: main.c:918 #, c-format msgid " %d total table entries needed\n" msgstr " %d total table entries needed\n" #: main.c:995 #, c-format msgid "Internal error. flexopts are malformed.\n" msgstr "Internal error. flexopts are malformed.\n" #: main.c:1005 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Try ‘%s --help’ for more information.\n" #: main.c:1062 #, c-format msgid "unknown -C option '%c'" msgstr "unknown -C option ‘%c’" #: main.c:1191 #, c-format msgid "%s %s\n" msgstr "%s %s\n" #: main.c:1466 msgid "fatal parse error" msgstr "fatal parse error" #: main.c:1498 #, c-format msgid "could not create backing-up info file %s" msgstr "could not create backing-up info file %s" #: main.c:1519 #, c-format msgid "-l AT&T lex compatibility option entails a large performance penalty\n" msgstr "-l AT&T lex compatibility option entails a large performance penalty\n" #: main.c:1522 #, c-format msgid " and may be the actual source of other reported performance penalties\n" msgstr "" " and may be the actual source of other reported performance penalties\n" #: main.c:1528 #, c-format msgid "" "%%option yylineno entails a performance penalty ONLY on rules that can match " "newline characters\n" msgstr "" "%%option yylineno entails a performance penalty ONLY on rules that can match " "newline characters\n" #: main.c:1535 #, c-format msgid "-I (interactive) entails a minor performance penalty\n" msgstr "-I (interactive) entails a minor performance penalty\n" #: main.c:1540 #, c-format msgid "yymore() entails a minor performance penalty\n" msgstr "yymore() entails a minor performance penalty\n" #: main.c:1546 #, c-format msgid "REJECT entails a large performance penalty\n" msgstr "REJECT entails a large performance penalty\n" #: main.c:1551 #, c-format msgid "Variable trailing context rules entail a large performance penalty\n" msgstr "Variable trailing context rules entail a large performance penalty\n" #: main.c:1563 msgid "REJECT cannot be used with -f or -F" msgstr "REJECT cannot be used with -f or -F" #: main.c:1566 #, c-format msgid "%option yylineno cannot be used with REJECT" msgstr "%option yylineno cannot be used with REJECT" #: main.c:1569 msgid "variable trailing context rules cannot be used with -f or -F" msgstr "variable trailing context rules cannot be used with -f or -F" #: main.c:1692 #, c-format msgid "%option yyclass only meaningful for C++ scanners" msgstr "%option yyclass only meaningful for C++ scanners" #: main.c:1799 #, c-format msgid "Usage: %s [OPTIONS] [FILE]...\n" msgstr "Usage: %s [OPTIONS] [FILE]...\n" #: main.c:1802 #, c-format msgid "" "Generates programs that perform pattern-matching on text.\n" "\n" "Table Compression:\n" " -Ca, --align trade off larger tables for better memory alignment\n" " -Ce, --ecs construct equivalence classes\n" " -Cf do not compress tables; use -f representation\n" " -CF do not compress tables; use -F representation\n" " -Cm, --meta-ecs construct meta-equivalence classes\n" " -Cr, --read use read() instead of stdio for scanner input\n" " -f, --full generate fast, large scanner. Same as -Cfr\n" " -F, --fast use alternate table representation. Same as -CFr\n" " -Cem default compression (same as --ecs --meta-ecs)\n" "\n" "Debugging:\n" " -d, --debug enable debug mode in scanner\n" " -b, --backup write backing-up information to %s\n" " -p, --perf-report write performance report to stderr\n" " -s, --nodefault suppress default rule to ECHO unmatched text\n" " -T, --trace %s should run in trace mode\n" " -w, --nowarn do not generate warnings\n" " -v, --verbose write summary of scanner statistics to stdout\n" "\n" "Files:\n" " -o, --outfile=FILE specify output filename\n" " -S, --skel=FILE specify skeleton file\n" " -t, --stdout write scanner on stdout instead of %s\n" " --yyclass=NAME name of C++ class\n" " --header-file=FILE create a C header file in addition to the " "scanner\n" " --tables-file[=FILE] write tables to FILE\n" "\n" "Scanner behavior:\n" " -7, --7bit generate 7-bit scanner\n" " -8, --8bit generate 8-bit scanner\n" " -B, --batch generate batch scanner (opposite of -I)\n" " -i, --case-insensitive ignore case in patterns\n" " -l, --lex-compat maximal compatibility with original lex\n" " -X, --posix-compat maximal compatibility with POSIX lex\n" " -I, --interactive generate interactive scanner (opposite of -B)\n" " --yylineno track line count in yylineno\n" "\n" "Generated code:\n" " -+, --c++ generate C++ scanner class\n" " -Dmacro[=defn] #define macro defn (default defn is '1')\n" " -L, --noline suppress #line directives in scanner\n" " -P, --prefix=STRING use STRING as prefix instead of \"yy\"\n" " -R, --reentrant generate a reentrant C scanner\n" " --bison-bridge scanner for bison pure parser.\n" " --bison-locations include yylloc support.\n" " --stdinit initialize yyin/yyout to stdin/stdout\n" " --noansi-definitions old-style function definitions\n" " --noansi-prototypes empty parameter list in prototypes\n" " --nounistd do not include \n" " --noFUNCTION do not generate a particular FUNCTION\n" "\n" "Miscellaneous:\n" " -c do-nothing POSIX option\n" " -n do-nothing POSIX option\n" " -?\n" " -h, --help produce this help message\n" " -V, --version report %s version\n" msgstr "" "Generates programs that perform pattern-matching on text.\n" "\n" "Table Compression:\n" " -Ca, --align trade off larger tables for better memory alignment\n" " -Ce, --ecs construct equivalence classes\n" " -Cf do not compress tables; use -f representation\n" " -CF do not compress tables; use -F representation\n" " -Cm, --meta-ecs construct meta-equivalence classes\n" " -Cr, --read use read() instead of stdio for scanner input\n" " -f, --full generate fast, large scanner. Same as -Cfr\n" " -F, --fast use alternate table representation. Same as -CFr\n" " -Cem default compression (same as --ecs --meta-ecs)\n" "\n" "Debugging:\n" " -d, --debug enable debug mode in scanner\n" " -b, --backup write backing-up information to %s\n" " -p, --perf-report write performance report to stderr\n" " -s, --nodefault suppress default rule to ECHO unmatched text\n" " -T, --trace %s should run in trace mode\n" " -w, --nowarn do not generate warnings\n" " -v, --verbose write summary of scanner statistics to stdout\n" "\n" "Files:\n" " -o, --outfile=FILE specify output filename\n" " -S, --skel=FILE specify skeleton file\n" " -t, --stdout write scanner on stdout instead of %s\n" " --yyclass=NAME name of C++ class\n" " --header-file=FILE create a C header file in addition to the " "scanner\n" " --tables-file[=FILE] write tables to FILE\n" "\n" "Scanner behavior:\n" " -7, --7bit generate 7-bit scanner\n" " -8, --8bit generate 8-bit scanner\n" " -B, --batch generate batch scanner (opposite of -I)\n" " -i, --case-insensitive ignore case in patterns\n" " -l, --lex-compat maximal compatibility with original lex\n" " -X, --posix-compat maximal compatibility with POSIX lex\n" " -I, --interactive generate interactive scanner (opposite of -B)\n" " --yylineno track line count in yylineno\n" "\n" "Generated code:\n" " -+, --c++ generate C++ scanner class\n" " -Dmacro[=defn] #define macro defn (default defn is '1')\n" " -L, --noline suppress #line directives in scanner\n" " -P, --prefix=STRING use STRING as prefix instead of “yy”\n" " -R, --reentrant generate a reentrant C scanner\n" " --bison-bridge scanner for bison pure parser.\n" " --bison-locations include yylloc support.\n" " --stdinit initialize yyin/yyout to stdin/stdout\n" " --noansi-definitions old-style function definitions\n" " --noansi-prototypes empty parameter list in prototypes\n" " --nounistd do not include \n" " --noFUNCTION do not generate a particular FUNCTION\n" "\n" "Miscellaneous:\n" " -c do-nothing POSIX option\n" " -n do-nothing POSIX option\n" " -?\n" " -h, --help produce this help message\n" " -V, --version report %s version\n" #: misc.c:65 msgid "allocation of sko_stack failed" msgstr "allocation of sko_stack failed" #: misc.c:102 misc.c:128 #, c-format msgid "name \"%s\" ridiculously long" msgstr "name “%s” ridiculously long" #: misc.c:177 msgid "memory allocation failed in allocate_array()" msgstr "memory allocation failed in allocate_array()" #: misc.c:230 #, c-format msgid "bad character '%s' detected in check_char()" msgstr "bad character ‘%s’ detected in check_char()" #: misc.c:235 #, c-format msgid "scanner requires -8 flag to use the character %s" msgstr "scanner requires -8 flag to use the character %s" #: misc.c:268 msgid "dynamic memory failure in copy_string()" msgstr "dynamic memory failure in copy_string()" #: misc.c:367 #, c-format msgid "%s: fatal internal error, %s\n" msgstr "%s: fatal internal error, %s\n" #: misc.c:803 msgid "attempt to increase array size failed" msgstr "attempt to increase array size failed" #: misc.c:930 msgid "bad line in skeleton file" msgstr "bad line in skeleton file" #: misc.c:979 msgid "memory allocation failed in yy_flex_xmalloc()" msgstr "memory allocation failed in yy_flex_xmalloc()" #: nfa.c:104 #, c-format msgid "" "\n" "\n" "********** beginning dump of nfa with start state %d\n" msgstr "" "\n" "\n" "********** beginning dump of nfa with start state %d\n" #: nfa.c:115 #, c-format msgid "state # %4d\t" msgstr "state # %4d\t" #: nfa.c:130 #, c-format msgid "********** end of dump\n" msgstr "********** end of dump\n" #: nfa.c:174 msgid "empty machine in dupmachine()" msgstr "empty machine in dupmachine()" #: nfa.c:240 #, c-format msgid "Variable trailing context rule at line %d\n" msgstr "Variable trailing context rule at line %d\n" #: nfa.c:364 msgid "bad state type in mark_beginning_as_normal()" msgstr "bad state type in mark_beginning_as_normal()" #: nfa.c:609 #, c-format msgid "input rules are too complicated (>= %d NFA states)" msgstr "input rules are too complicated (>= %d NFA states)" #: nfa.c:688 msgid "found too many transitions in mkxtion()" msgstr "found too many transitions in mkxtion()" #: nfa.c:714 #, c-format msgid "too many rules (> %d)!" msgstr "too many rules (> %d)!" #: parse.y:159 msgid "unknown error processing section 1" msgstr "unknown error processing section 1" #: parse.y:184 parse.y:351 msgid "bad start condition list" msgstr "bad start condition list" #: parse.y:315 msgid "unrecognized rule" msgstr "unrecognized rule" #: parse.y:434 parse.y:447 parse.y:516 msgid "trailing context used twice" msgstr "trailing context used twice" #: parse.y:552 parse.y:562 parse.y:635 parse.y:645 msgid "bad iteration values" msgstr "bad iteration values" #: parse.y:580 parse.y:598 parse.y:663 parse.y:681 msgid "iteration value must be positive" msgstr "iteration value must be positive" #: parse.y:804 parse.y:814 #, c-format msgid "the character range [%c-%c] is ambiguous in a case-insensitive scanner" msgstr "the character range [%c-%c] is ambiguous in a case-insensitive scanner" #: parse.y:819 msgid "negative range in character class" msgstr "negative range in character class" #: parse.y:916 msgid "[:^lower:] is ambiguous in case insensitive scanner" msgstr "[:^lower:] is ambiguous in case insensitive scanner" #: parse.y:922 msgid "[:^upper:] ambiguous in case insensitive scanner" msgstr "[:^upper:] ambiguous in case insensitive scanner" #: scan.l:75 scan.l:618 scan.l:676 msgid "Input line too long\n" msgstr "Input line too long\n" #: scan.l:161 #, c-format msgid "malformed '%top' directive" msgstr "malformed ‘%top’ directive" #: scan.l:183 #, no-c-format msgid "unrecognized '%' directive" msgstr "unrecognized ‘%’ directive" #: scan.l:192 msgid "Definition name too long\n" msgstr "Definition name too long\n" #: scan.l:284 msgid "Unmatched '{'" msgstr "Unmatched ‘{’" #: scan.l:300 #, c-format msgid "Definition value for {%s} too long\n" msgstr "Definition value for {%s} too long\n" #: scan.l:317 msgid "incomplete name definition" msgstr "incomplete name definition" #: scan.l:443 msgid "Option line too long\n" msgstr "Option line too long\n" #: scan.l:451 #, c-format msgid "unrecognized %%option: %s" msgstr "unrecognized %%option: %s" #: scan.l:633 scan.l:800 msgid "bad character class" msgstr "bad character class" #: scan.l:683 #, c-format msgid "undefined definition {%s}" msgstr "undefined definition {%s}" #: scan.l:755 #, c-format msgid "bad : %s" msgstr "bad : %s" #: scan.l:768 msgid "missing quote" msgstr "missing quote" #: scan.l:834 #, c-format msgid "bad character class expression: %s" msgstr "bad character class expression: %s" #: scan.l:856 msgid "bad character inside {}'s" msgstr "bad character inside {}'s" #: scan.l:862 msgid "missing }" msgstr "missing }" #: scan.l:940 msgid "EOF encountered inside an action" msgstr "EOF encountered inside an action" #: scan.l:945 msgid "EOF encountered inside pattern" msgstr "EOF encountered inside pattern" #: scan.l:967 #, c-format msgid "bad character: %s" msgstr "bad character: %s" #: scan.l:996 #, c-format msgid "can't open %s" msgstr "can't open %s" #: scanopt.c:291 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Usage: %s [OPTIONS]...\n" #: scanopt.c:564 #, c-format msgid "option `%s' doesn't allow an argument\n" msgstr "option ‘%s’ doesn't allow an argument\n" #: scanopt.c:569 #, c-format msgid "option `%s' requires an argument\n" msgstr "option ‘%s’ requires an argument\n" #: scanopt.c:573 #, c-format msgid "option `%s' is ambiguous\n" msgstr "option ‘%s’ is ambiguous\n" #: scanopt.c:577 #, c-format msgid "Unrecognized option `%s'\n" msgstr "Unrecognized option ‘%s’\n" #: scanopt.c:581 #, c-format msgid "Unknown error=(%d)\n" msgstr "Unknown error=(%d)\n" #: sym.c:100 msgid "symbol table memory allocation failed" msgstr "symbol table memory allocation failed" #: sym.c:202 msgid "name defined twice" msgstr "name defined twice" #: sym.c:253 #, c-format msgid "start condition %s declared twice" msgstr "start condition %s declared twice" #: yylex.c:56 msgid "premature EOF" msgstr "premature EOF" #: yylex.c:198 #, c-format msgid "End Marker\n" msgstr "End Marker\n" #: yylex.c:204 #, c-format msgid "*Something Weird* - tok: %d val: %d\n" msgstr "*Something Weird* - tok: %d val: %d\n" flex-2.5.39/po/sv.gmo0000644000175000017500000004746712314621666014625 0ustar srivastasrivasta  7 Q _ x  / ' .N c"o#  * 37k!C$))S%m"#F_~`"&0<+m $")?i45E/:j6!"6Mby:T r : !(!"2("#["+""&"" ##,#K#*c#C#%##+$>$"R$u$$$$$,$3%/J% z%%(%%(%+ &6&T&'o&&&&&','J'g'''''$'2' 1(R(,m(-( ( (((!)&1)X)!r) ))0)!) **.* H*%U*F{****+"&+I+c+~+<+-+m+=i-----/.:6.q.2.. ...//B/%U/{/3/7/0'0">0Da0"0&00%1 ,11M1111B1 2*2Z:2326243953o3,v333(3% 4-/4,]43424L40>50o5/5M5860W6666667&7C7_7{7 777#78 (8 D$ D ED7SD4D,D$D'E:E JEUE"hEE4ESE(1FZF+wFF%FFF G(GBG4bG1G)GGH0!HRH<fH/HH H#I6I)PIzI!I!I!I)J*JJJ%hJJ%J8J# K-K2GK3zKKKKK L )LJL!dLLL<L'LM%M?M^M.mMGMM(M&NBN#\NNN NXN+ OK[.)\v@ ] aL7`9^neRp34;?omM(dHlh/F:s%#x5u-CQkPBDrZ,U'$St0c8J Yq<z w~NWgI!1TV6A2_>|i= j&yf+*"bOEG{ X} ********** beginning dump of nfa with start state %d DFA Dump: Equivalence Classes: Meta-Equivalence Classes: jam-transitions: EOF %d (%d saved) hash collisions, %d DFAs equal %d backing-up (non-accepting) states %d empty table entries %d epsilon states, %d double epsilon states %d protos created %d rules %d sets of reallocations needed %d state/nextstate pairs created %d table entries %d templates created, %d uses %d total table entries needed %d/%d (peak %d) nxt-chk entries created %d/%d (peak %d) template nxt-chk entries created %d/%d DFA states (%d words) %d/%d NFA states %d/%d base-def entries created %d/%d character classes needed %d/%d words of storage, %d reused %d/%d equivalence classes created %d/%d meta-equivalence classes created %d/%d start conditions %d/%d unique/duplicate transitions Beginning-of-line patterns used Compressed tables always back-up No backing up no character classes scanner options: - and may be the actual source of other reported performance penalties associated rule line numbers: out-transitions: %%option yylineno entails a performance penalty ONLY on rules that can match newline characters %array incompatible with -+ option%d backing up (non-accepting) states. %option yyclass only meaningful for C++ scanners%option yylineno cannot be used with REJECT%s %s %s version %s usage statistics: %s: fatal internal error, %s ********** end of dump *Something Weird* - tok: %d val: %d -Cf and -CF are mutually exclusive-Cf/-CF and -Cm don't make sense together-Cf/-CF and -I are incompatible-Cf/-CF are incompatible with lex-compatibility mode-I (interactive) entails a minor performance penalty -l AT&T lex compatibility option entails a large performance penalty -s option given but default rule can be matchedCan't use -+ with -CF optionCan't use -+ with -l optionCan't use --reentrant or --bison-bridge with -l optionCan't use -f or -F with -l optionCompressed tables always back up. Could not write ecstblCould not write eoltblCould not write ftblCould not write ssltblCould not write yyacc_tblCould not write yyacclist_tblCould not write yybase_tblCould not write yychk_tblCould not write yydef_tblCould not write yymeta_tblCould not write yynultrans_tblCould not write yynxt_tblCould not write yynxt_tbl[][]EOF encountered inside an actionEnd Marker Generates programs that perform pattern-matching on text. Table Compression: -Ca, --align trade off larger tables for better memory alignment -Ce, --ecs construct equivalence classes -Cf do not compress tables; use -f representation -CF do not compress tables; use -F representation -Cm, --meta-ecs construct meta-equivalence classes -Cr, --read use read() instead of stdio for scanner input -f, --full generate fast, large scanner. Same as -Cfr -F, --fast use alternate table representation. Same as -CFr -Cem default compression (same as --ecs --meta-ecs) Debugging: -d, --debug enable debug mode in scanner -b, --backup write backing-up information to %s -p, --perf-report write performance report to stderr -s, --nodefault suppress default rule to ECHO unmatched text -T, --trace %s should run in trace mode -w, --nowarn do not generate warnings -v, --verbose write summary of scanner statistics to stdout Files: -o, --outfile=FILE specify output filename -S, --skel=FILE specify skeleton file -t, --stdout write scanner on stdout instead of %s --yyclass=NAME name of C++ class --header-file=FILE create a C header file in addition to the scanner --tables-file[=FILE] write tables to FILE Scanner behavior: -7, --7bit generate 7-bit scanner -8, --8bit generate 8-bit scanner -B, --batch generate batch scanner (opposite of -I) -i, --case-insensitive ignore case in patterns -l, --lex-compat maximal compatibility with original lex -X, --posix-compat maximal compatibility with POSIX lex -I, --interactive generate interactive scanner (opposite of -B) --yylineno track line count in yylineno Generated code: -+, --c++ generate C++ scanner class -Dmacro[=defn] #define macro defn (default defn is '1') -L, --noline suppress #line directives in scanner -P, --prefix=STRING use STRING as prefix instead of "yy" -R, --reentrant generate a reentrant C scanner --bison-bridge scanner for bison pure parser. --bison-locations include yylloc support. --stdinit initialize yyin/yyout to stdin/stdout --noansi-definitions old-style function definitions --noansi-prototypes empty parameter list in prototypes --nounistd do not include --noFUNCTION do not generate a particular FUNCTION Miscellaneous: -c do-nothing POSIX option -n do-nothing POSIX option -? -h, --help produce this help message -V, --version report %s version Input line too long Internal error. flexopts are malformed. No backing up. Options -+ and --reentrant are mutually exclusive.REJECT cannot be used with -f or -FREJECT entails a large performance penalty State #%d is non-accepting - Try `%s --help' for more information. Unknown error=(%d) Unmatched '{'Unrecognized option `%s' Usage: %s [OPTIONS] [FILE]... Usage: %s [OPTIONS]... Variable trailing context rule at line %d Variable trailing context rules entail a large performance penalty attempt to increase array size failedbad : %sbad character '%s' detected in check_char()bad character classbad character class expression: %sbad character inside {}'sbad character: %sbad iteration valuesbad line in skeleton filebad start condition listbad state type in mark_beginning_as_normal()bad transition character detected in sympartition()bison bridge not supported for the C++ scanner.can't open %scan't open skeleton file %sconsistency check failed in epsclosure()could not create %scould not create backing-up info file %scould not create unique end-of-buffer statecould not write tables headerdangerous trailing contextdynamic memory failure in copy_string()empty machine in dupmachine()error closing backup file %serror closing output file %serror closing skeleton file %serror creating header file %serror deleting output file %serror writing backup file %serror writing output file %sfatal parse errorfound too many transitions in mkxtion()incomplete name definitioninput error reading skeleton file %sinput rules are too complicated (>= %d NFA states)iteration value must be positivemalformed '%top' directivememory allocation failed in allocate_array()memory allocation failed in yy_flex_xmalloc()missing quotemissing }name "%s" ridiculously longname defined twicenegative range in character classoption `%s' doesn't allow an argument option `%s' is ambiguous option `%s' requires an argument premature EOFrule cannot be matchedscanner requires -8 flag to use the character %sstart condition %s declared twicestate # %4d state # %d accepts: state # %d accepts: [%d] state # %d: symbol table memory allocation failedthe character range [%c-%c] is ambiguous in a case-insensitive scannertoo many rules (> %d)!trailing context used twiceundefined definition {%s}unknown -C option '%c'unknown error processing section 1unrecognized %%option: %sunrecognized '%' directiveunrecognized rulevariable trailing context rules cannot be used with -f or -Fyymore() entails a minor performance penalty Project-Id-Version: flex 2.5.31 Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net POT-Creation-Date: 2014-03-26 15:00-0400 PO-Revision-Date: 2004-03-21 22:51+0100 Last-Translator: Christian Rose Language-Team: Swedish Language: sv MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit ********** brjan av utskrift av nfa med starttillstnd %d DFA-utskrift: Ekvivalensklasser: Metaekvivalensklasser: stoppvergngar: filslut %d (%d sparade) hashkollisioner, %d DFA lika %d (icke-accepterande) tillstnd fr skerhetskopiering %d tomma tabellposter %d epsilontillstnd, %d dubbla epsilontillstnd %d prototyper skapade %d regler %d uppsttningar med omallokeringar krvdes %d par med tillstnd/nsta-tillstnd skapade %d tabellposter %d mallar skapade, %d anvndningar %d tabellposter krvs totalt %d/%d (max %d) poster fr nsta kontroll skapade %d/%d (max %d) mallposter fr nsta kontroll skapade %d/%d DFA-tillstnd (%d ord) %d/%d NFA-tillstnd %d/%d basstandardposter skapade %d/%d teckenklasser behvde %d/%d ord fr lagring, %d teranvnda %d/%d ekvivalensklasser skapade %d/%d metaekvivalensklasser skapade %d/%d startvillkor %d/%d unika/duplicerade vergngar Brjan-av-rad-mnster anvnda Komprimerade tabeller skerhetskopierar alltid Inget skerhetskopierande inga teckenklasser inlsarflaggor: - och kan vara den egentliga orsaken till andra rapporter om detta radnummer fr associerad regel: utvergngar: %%option yylineno medfr en prestandafrlust ENDAST p regler som kan matcha nyradstecken %array kan inte anvndas tillsammans med flaggan -+%d skerhetskopierande (icke-accepterande) tillstnd. %option yyclass r bara meningsfull fr C++-inlsare%option yylineno kan inte anvndas tillsammans med REJECT%s %s Statistik ver anvndning av %s version %s: %s: allvarligt internt fel, %s ********** slut p utskrift *Ngot mrkligt* - tecken: %d vrde: %d -Cf och -CF r msesidigt uteslutande-Cf/-CF och -Cm kan inte anvndas tillsammans-Cf/-CF och -I kan inte anvndas tillsammans-Cf/-CF kan inte anvndas i lex-kompatibilitetslge-I (interaktiv) medfr en mindre prestandafrlust flaggan -l fr beteende som AT&T:s lex medfr en vsentlig prestandafrlust flaggan -s angiven men standardregeln kan fljas-+ kan inte anvndas tillsammans med flaggan -CF-+ kan inte anvndas tillsammans med flaggan -l--reentrant eller --bison-bridge kan inte anvndas tillsammans med flaggan -l-f eller -F kan inte anvndas tillsammans med flaggan -lKomprimerade tabeller skerhetskopierar alltid. Kunde inte skriva ecstblKunde inte skriva eoltblKunde inte skriva ftblKunde inte skriva ssltblKunde inte skriva yyacc_tblKunde inte skriva yyacclist_tblKunde inte skriva yybase_tblKunde inte skriva yychk_tblKunde inte skriva yydef_tblKunde inte skriva yymeta_tblKunde inte skriva yynultrans_tblKunde inte skriva yynxt_tblKunde inte skriva yynxt_tbl[][]filslut ptrffat inuti en handlingSlutmarkering Genererar program som utfr mnstermatchning p text. Tabellkomprimering: -Ca, --align bttre minnesjustering till priset av strre tabeller -Ce, --ecs konstruera ekvivalensklasser -Cf komprimera inte tabeller; anvnd -f-representation -CF komprimera inte tabeller; anvnd -F-representation -Cm, --meta-ecs konstruera metaekvivalensklasser -Cr, --read anvnd read() istllet fr stdio fr inlsarindata -f, --full generera snabb, stor inlsare. Samma som -Cfr -F, --fast anvnd alternativ tabellrepresentation. Samma som -CFr -Cem standardkomprimering (samma som --ecs --meta-ecs) Felskning: -d, --debug aktivera felskningslge i inlsare -b, --backup skriv skerhetskopieringsinformation till %s -p, --perf-report skriv prestandarapport till standard fel -s, --nodefault undertryck standardregel att anvnda "ECHO" p omatchad text -T, --trace %s ska kra i sprningslge -w, --nowarn generera inte varningar -v, --verbose skriv sammanfattning av inlsarstatistik till standard ut Filer: -o, --outfile=FIL ange namn p utfil -S, --skel=FIL ange mallfil -t, --stdout skriv inlsare p standard ut istllet fr %s --yyclass=NAMN namn p C++-klass --header-file=FIL skapa en C-huvudfil frutom inlsaren --tables-file[=FIL] skriv tabeller till FIL Beteende fr inlsare: -7, --7bit generera 7-bitarsinlsare -8, --8bit generera 8-bitarsinlsare -B, --batch generera batchinlsare (motsats till -I) -i, --case-insensitive ignorera skiftlge i mnster -l, --lex-compat maximal kompatibilitet med ursprungliga lex -X, --posix-compat maximal kompatibilitet med POSIX lex -I, --interactive generera interaktiv inlsare (motsats till -B) --yylineno spra radantal i yylineno Genererad kod: -+, --c++ generera C++-inlsarklass -Dmacro[=defn] definiera makrodefinition (standardefn r "1") -L, --noline undertryck #line-direktiv i inlsaren -P, --prefix=STRNG anvnd STRNG som prefix istllet fr "yy" -R, --reentrant generera en teranropbar C-inlsare --bison-bridge inlsare fr ren bisontolk. --bison-locations inkludera std fr yylloc. --stdinit initiera yyin/yyout till standard in/ut --noansi-definitions funktionsdefinitioner i gammal stil --noansi-prototypes tom parameterlista i prototyper --nounistd inkludera inte --noFUNKTION generera inte en speciell FUNKTION Diverse: -c POSIX-flagga som inte gr ngot -n POSIX-flagga som inte gr ngot -? -h, --help visa detta hjlpmeddelande -V, --version visa versionsinformation fr %s Fr lng indatarad Internt fel. flexopts r felaktiga. Backar inte. Flaggorna -+ och --reentrant r msesidigt uteslutande.REJECT kan inte anvndas tillsammans med -f eller -FREJECT medfr en vsentlig prestandafrlust Tillstnd %d r icke-accepterande - Prova "%s --help" fr mer information. Oknt fel=(%d) Ensamt "{"Oknd flagga "%s" Anvndning: %s [FLAGGOR] [FIL]... Anvndning: %s [FLAGGOR]... Regel fr varierbar efterfljande kontext p rad %d Regler fr varierbar efterfljande sammanhang medfr en vsentlig prestandafrlust frsk att ka arraystorlek misslyckadesotilltet : %sotilltet tecken "%s" funnet i check_char()otillten teckenklassotilltet uttryck fr teckenklass: %sotilltet tecken inom {}otilltet tecken: %sfelaktiga iterationsvrdenotillten rad i mallfilenfelaktig lista med startvillkorotillten tillstndstyp i mark_beginning_as_normal()otilltet vergngstecken funnet i sympartition()bisonbrygga stds inte fr C++-inlsaren.kan inte ppna %skan inte ppna mallfilen %skonsekvenskontrollen misslyckades i epsclosure()kunde inte skapa %skunde inte skapa filen %s med skerhetskopieringsinformationkunde inte skapa ett unikt buffertsluttillstndkunde inte skriva tabellhuvudfarligt efterfljande sammanhangdynamiskt minnesfel i copy_string()tom maskin i dupmachine()fel nr skerhetskopian %s skulle stngasfel vid stngande av utfilen %sfel vid stngande av mallfilen %sfel vid skapande av huvudfilen %sfel vid borttagning av utfilen %sfel nr skerhetskopian %s skulle skrivasfel vid skrivande av utfilen %sallvarligt fel vid tolkningenfann fr mnga vergngar i mkxtion()ofullstndig namndefinitionindatafel vid lsande av mallfilen %sindatareglerna r fr komplicerade (>= %d NFA-tillstnd)iterationsvrde mste vara positivtfelaktigt "%top"-direktivminnesallokeringen misslyckades i allocate_array()minnesallokeringen misslyckades i yy_flex_xmalloc()citationstecken saknas} saknasnamnet "%s" r ljligt lngtnamnet definierat tv gngernegativt intervall i teckenklassflaggan "%s" tar inget argument flaggan "%s" r tvetydig flaggan "%s" krver ett argument fr tidigt filslutregeln kan inte matchasinlsaren krver flaggan -8 fr att kunna anvnda tecknet %sstartvillkoret %s deklarerat tv gngertillstnd %4d tillstnd %d accepterar: tillstnd %d accepterar: [%d] tillstnd %d: minnesallokering fr symboltabell misslyckadesteckenintervallet [%c-%c] r tvetydigt i en skiftlgesoknslig inlsarefr mnga regler (> %d)!efterfljande kontext anvnds tv gngerodefinierad definition {%s}oknd flagga till -C "%c"oknt fel vid tolkning av avsnitt 1oknd %%option: %soknt "%"-direktivoknd regelregler fr varierbar efterfljande kontext kan inte anvndas tillsammans med -f eller -Fyymore() medfr en mindre prestandafrlust flex-2.5.39/po/es.gmo0000644000175000017500000003104512314621665014564 0ustar srivastasrivasta4L 7 Q _ x  / '  . N c "o #  * 37 k  ! C $))S%m"#F_~"&0  4R$j")451Eg/!"8 [ |(#+&/Vj*C%*P+j"(,A3n (( +2^'y6Tq'$2 ;,\-  !& G!a 0!  7%Dj" &<8-uE#iz/K*1!\/~ .+/!J/l+7" # $8 _] ' + "!'4!'\!B!!!!P"'b""$")"B"3##:# ^##&#$#&# $?,$Bl$^$J%%Y%$%7%4%4&F&&W&~&#&9&&) '5'M' h''4'i'3?((s(4((2("#)F)"^)))-)7):*L**a*0**d*36+j+-++3+' ,(1,(Z,',,,),+-0.-_-1-C-.-4$.0Y. .. .$.".( /2/&M/t//B/9/ -0;0S0 p05~00"00 1/(1X1s11G191%M&AI[Kr k\)",^uEHh;>QLsj_ Rfmd9} 0BYoXWVNc z G2:x#7yt=i]w`SC<v b|O/45P{J*1TaU$enF@qp'3+D(?g8.~6l!Z- ********** beginning dump of nfa with start state %d DFA Dump: Equivalence Classes: Meta-Equivalence Classes: jam-transitions: EOF %d (%d saved) hash collisions, %d DFAs equal %d backing-up (non-accepting) states %d empty table entries %d epsilon states, %d double epsilon states %d protos created %d rules %d sets of reallocations needed %d state/nextstate pairs created %d table entries %d templates created, %d uses %d total table entries needed %d/%d (peak %d) nxt-chk entries created %d/%d (peak %d) template nxt-chk entries created %d/%d DFA states (%d words) %d/%d NFA states %d/%d base-def entries created %d/%d character classes needed %d/%d words of storage, %d reused %d/%d equivalence classes created %d/%d meta-equivalence classes created %d/%d start conditions %d/%d unique/duplicate transitions Beginning-of-line patterns used Compressed tables always back-up No backing up no character classes scanner options: - and may be the actual source of other reported performance penalties associated rule line numbers: out-transitions: %array incompatible with -+ option%d backing up (non-accepting) states. %option yyclass only meaningful for C++ scanners%s %s %s version %s usage statistics: %s: fatal internal error, %s ********** end of dump *Something Weird* - tok: %d val: %d -Cf and -CF are mutually exclusive-Cf/-CF and -Cm don't make sense together-Cf/-CF and -I are incompatible-Cf/-CF are incompatible with lex-compatibility mode-I (interactive) entails a minor performance penalty -l AT&T lex compatibility option entails a large performance penalty -s option given but default rule can be matchedCan't use -+ with -CF optionCan't use -+ with -l optionCan't use -f or -F with -l optionCompressed tables always back up. EOF encountered inside an actionEnd Marker Internal error. flexopts are malformed. No backing up. REJECT cannot be used with -f or -FREJECT entails a large performance penalty State #%d is non-accepting - Try `%s --help' for more information. Unknown error=(%d) Unrecognized option `%s' Usage: %s [OPTIONS] [FILE]... Usage: %s [OPTIONS]... Variable trailing context rule at line %d Variable trailing context rules entail a large performance penalty attempt to increase array size failedbad : %sbad character '%s' detected in check_char()bad character classbad character class expression: %sbad character inside {}'sbad character: %sbad iteration valuesbad line in skeleton filebad start condition listbad state type in mark_beginning_as_normal()bad transition character detected in sympartition()can't open %scan't open skeleton file %sconsistency check failed in epsclosure()could not create %scould not create backing-up info file %scould not create unique end-of-buffer statedangerous trailing contextdynamic memory failure in copy_string()empty machine in dupmachine()error closing backup file %serror closing output file %serror closing skeleton file %serror creating header file %serror deleting output file %serror writing backup file %serror writing output file %sfatal parse errorfound too many transitions in mkxtion()incomplete name definitioninput error reading skeleton file %sinput rules are too complicated (>= %d NFA states)iteration value must be positivememory allocation failed in allocate_array()memory allocation failed in yy_flex_xmalloc()missing quotemissing }name "%s" ridiculously longname defined twicenegative range in character classoption `%s' doesn't allow an argument option `%s' is ambiguous option `%s' requires an argument premature EOFrule cannot be matchedscanner requires -8 flag to use the character %sstart condition %s declared twicestate # %4d state # %d accepts: state # %d accepts: [%d] state # %d: symbol table memory allocation failedtoo many rules (> %d)!trailing context used twiceundefined definition {%s}unknown -C option '%c'unknown error processing section 1unrecognized %%option: %sunrecognized '%' directiveunrecognized rulevariable trailing context rules cannot be used with -f or -Fyymore() entails a minor performance penalty Project-Id-Version: GNU flex 2.5.8 Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net POT-Creation-Date: 2014-03-26 15:00-0400 PO-Revision-Date: 2003-01-02 12:06+0100 Last-Translator: Nicols Garca-Pedrajas Language-Team: Spanish Language: es MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8-bit ********** comenzando la descarga del AFN con el estado inicial %d Volcado AFD: Clases de equivalencia: Clases de metaequivalencia: transiciones de bloqueo: fin de archivo (EOF) %d (%d almacenadas) colisiones de localizacin ('hash'), %d AFDs iguales %d estados de retroceso (no-aceptacin) %d entradas en la tabla vacas %d estados psilon, %d estados doble psilon %d prototipos creados %d reglas se necesitan %d conjuntos de relocalizacin %d pares estado/estado-siguiente creados %d entradas en la tabla %d plantillas creadas, %d usos se necesitan %d entradas totales en la tabla %d/%d (pico %d) entradas nxt-chk creadas %d/%d (pico %d) entradas de plantilla nxt-chk creadas %d/%d estados AFD {%d palabras} %d/%d estados AFN %d/%d entradas `base-def' creadas las clases de caracteres %d/%d necesitaron %d/%d palabras de almacenamiento, %d reutilizadas %d/%d clases de equivalencia creadas %d/%d clases de metaequivalencia creadas %d/%d condiciones de activacin %d/%d transiciones nicas/duplicadas Usados patrones de comienzo-de-lnea Siempre se realiza copia de seguridad de las tablas comprimidas Sin retroceso sin clases de caracteres opciones del analizador: - y puede ser el origen real de otras penalizaciones del rendimiento notificadas nmeros de lnea asociados a la regla: fin de transiciones: %array incompatible con la opcin -+%d estados de retroceso (no-aceptacin). la %option yyclass slo tiene sentido para los analizadores en C++%s %s %s versin %s estadsticas de uso: %s: error interno muy grave, %s ********** fin de volcado *Algo extrao* - terminal: %d val: %d -Cf y -CF son mutuamente excluyentes-Cf/-CF y -Cm no tienen sentido juntos-Cf/-CF e -I son incompatibles-Cf/-CF son incompatibles con el modo de compatibilidad con lex-I (interactivo) implica una pequea penalizacin del rendimiento -l la opcin de compatibilidad con AT&T lex implica una penalizacin del rendimiento muy alta se ha especificado la opcin -s pero se puede aplicar la regla por defectoNo se puede usar -+ con la opcin -CFNo se puede usar -+ con la opcin -lNo se pueden usar las opciones -f o -F con la opcin -lLas tablas comprimidas siempre implican un retraso. Fin de archivo (EOF) encontrado dentro de una accinMarcador de fin Error interno. flexopts mal formadas. Sin retroceso. REJECT no se puede usar con -f o -FREJECT implica una penalizacin del rendimiento muy alta El estado #%d es no-aceptar - Pruebe `%s --help' para ms informacin. Error desconocido=(%d) Opcin no reconocida `%s' Uso: %s [OPCIONES] [FICHERO]... Uso: %s [OPCIONES]... Regla de contexto posterior variable en la lnea %d La existencia de reglas de contexto posterior variable implica una penalizacin del rendimiento muy alta fall el intento de aumentar el tamao de la matriz incorrecta: %scarcter incorrecto '%s' detectado en `check_char()'clase de caracteres incorrectaexpresin de la clase de caracteres incorrecta: %scarcter incorrecto dentro de {}'scarcter incorrecto: %svalores incorrectos para iteracinlnea incorrecta en el archivo de esquemalista de condiciones de activacin incorrectatipo de estado incorrecto en mark_beginning_as_normal()carcter de transicin errneo detectado en sympartition()no se puede abrir %sno se puede abrir el archivo de esquema %sel teste de consistencia fall en `epsclosure()'no se pudo crear %sno se pudo crear el archivo de informacin de las reglas que producen un retroceso del analizador %sno se pudo crear un estado nico de final-de-buffercontexto posterior peligrosofallo de la memoria dinmica en copy_string()mquina vaca en `dupmachine()'error al cerrar el archivo de copia de seguridad %serror al cerrar el archivo de salida %serror al cerrar el archivo de esquema %serror al crear el archivo de cabecera %serror al borrar el archivo de salida %serror al escribir el archivo de seguridad %serror al escribir el archivo de salida %serror muy grave en el analizador sintcticoencontradas demasiadas transiciones en mkxtion()definicin de nombre incompletaerror de entrada al leer el archivo de esquema %slas reglas de entrada son demasiado complicadas (>= %d estados AFN)los valores para iteracin deben ser positivosfall la asignacin de memoria en `allocate_array()'la reserva de memoria fall en yy_flex_xmalloc()falta comillafalta }nombre "%s" ridculamente grandeel nombre ha sido definido dos vecesrango negativo en clase caracteresla opcin `%s' no permite un argumento la opcin `%s' es ambigua la opcin `%s' requiere un argumento fin de archivo (EOF) prematurola regla no se puede aplicarel analizador requiere la opcin -8 para poder usar el carcter %sla condicin de activacin %s ha sido declarada dos vecesestado # %4d el estado # %d acepta: el estado # %d acepta: [%d] estado # %d: fall la reserva de memoria para la tabla de smbolosdemasiadas reglas (> %d)!contexto posterior usado dos vecesdefinicin no definida {%s}opcin -C desconocida '%c'error desconocido en el proceso de la seccin 1%%opcin no reconocida: %sdirectiva '%' no reconocidaregla no reconocidalas reglas de contexto posterior variable no se pueden usar con -f o -Fyymore() implica un pequea penalizacin del rendimiento flex-2.5.39/po/ko.gmo0000644000175000017500000002416612314621665014574 0ustar srivastasrivastaq, 7    / 'M u .  " # & : [ *| 3   ! C0 $t )  % " #& J [ s F   "&$0K |$")E4e5E/Fc!"  #+%Q*oC%+J"^,3 (6(R{(+''Eb'0$K2p,-  2 ES0j!  %,C]t<-b+w  =&D._", .%'T2|; )!OK$%!3!Rt<%%71]&)"G/j.23&0 'W % "   *!"/!&R!y!/!(!!." 6"D"\"o"","0""! #+-#Y#(o#8##1#$)/$(Y$-$+$)$)%0% C%d%0w%,%/%0& 6&D&S&s& &&6&& '#'"@' c'&q''''''7(*K(b@PO2kR4.Bn#E1m%7/gWci'\9d_&:?Ma>-f)FL 8Y, GA$;[j6DQ^*V<p ` SqJ (]5T=0NIe 3"UloKH+ZhC!X ********** beginning dump of nfa with start state %d DFA Dump: Equivalence Classes: Meta-Equivalence Classes: jam-transitions: EOF %d (%d saved) hash collisions, %d DFAs equal %d backing-up (non-accepting) states %d empty table entries %d epsilon states, %d double epsilon states %d protos created %d rules %d sets of reallocations needed %d state/nextstate pairs created %d table entries %d templates created, %d uses %d total table entries needed %d/%d (peak %d) nxt-chk entries created %d/%d (peak %d) template nxt-chk entries created %d/%d DFA states (%d words) %d/%d NFA states %d/%d base-def entries created %d/%d character classes needed %d/%d words of storage, %d reused %d/%d equivalence classes created %d/%d meta-equivalence classes created %d/%d start conditions %d/%d unique/duplicate transitions Beginning-of-line patterns used Compressed tables always back-up No backing up no character classes scanner options: - and may be the actual source of other reported performance penalties associated rule line numbers: out-transitions: %array incompatible with -+ option%d backing up (non-accepting) states. %option yyclass only meaningful for C++ scanners%s version %s usage statistics: %s: fatal internal error, %s ********** end of dump *Something Weird* - tok: %d val: %d -Cf and -CF are mutually exclusive-Cf/-CF and -Cm don't make sense together-Cf/-CF and -I are incompatible-Cf/-CF are incompatible with lex-compatibility mode-I (interactive) entails a minor performance penalty -l AT&T lex compatibility option entails a large performance penalty -s option given but default rule can be matchedCan't use -+ with -CF optionCan't use -+ with -l optionCan't use -f or -F with -l optionCompressed tables always back up. EOF encountered inside an actionEnd Marker No backing up. REJECT cannot be used with -f or -FREJECT entails a large performance penalty State #%d is non-accepting - Variable trailing context rule at line %d Variable trailing context rules entail a large performance penalty attempt to increase array size failedbad : %sbad character '%s' detected in check_char()bad character classbad character class expression: %sbad character inside {}'sbad character: %sbad line in skeleton filebad state type in mark_beginning_as_normal()bad transition character detected in sympartition()can't open %scan't open skeleton file %sconsistency check failed in epsclosure()could not create %scould not create backing-up info file %scould not create unique end-of-buffer statedangerous trailing contextdynamic memory failure in copy_string()empty machine in dupmachine()error closing backup file %serror closing output file %serror closing skeleton file %serror deleting output file %serror writing backup file %serror writing output file %sfatal parse errorfound too many transitions in mkxtion()incomplete name definitioninput error reading skeleton file %sinput rules are too complicated (>= %d NFA states)memory allocation failed in allocate_array()memory allocation failed in yy_flex_xmalloc()missing quotemissing }name "%s" ridiculously longname defined twicepremature EOFrule cannot be matchedscanner requires -8 flag to use the character %sstart condition %s declared twicestate # %4d state # %d accepts: state # %d accepts: [%d] state # %d: symbol table memory allocation failedtoo many rules (> %d)!undefined definition {%s}unknown -C option '%c'unrecognized %%option: %sunrecognized '%' directivevariable trailing context rules cannot be used with -f or -Fyymore() entails a minor performance penalty Project-Id-Version: flex 2.5.2 Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net POT-Creation-Date: 2014-03-26 15:00-0400 PO-Revision-Date: 1997-02-05 20:30 Last-Translator: Choi Jun Ho Language-Team: Korean Language: ko MIME-Version: 1.0 Content-Type: text/plain; charset=EUC-KR Content-Transfer-Encoding: 8-bit ********** %d nfa DFA : ġ: Ÿ-ġ: -: EOF %d(%d ) ؽ 浹 %d DFA ó˴ϴ %d ǵ(޾Ƶ ʴ) %d ̺ Ʈ %d Ƿ , %d Ƿ %d ϴ %d Ģ %d Ҵ ʿմϴ %d / ϴ %d ̺ Ʈ %d øƮ , %d ϴ %d ̺ Ʈ ʿմϴ %d/%d (ִ %d) nxt-chk Ʈ ϴ %d/%d (ִ %d) øƮ nxt-chk Ʈ ϴ %d/%d DFA (%d ܾ) %d/%d NFA %d/%d base-def Ʈ ϴ %d/%d տ %d/%d ڰ ʿ߰, %d Ǿϴ. %d/%d ġ ϴ %d/%d Ÿ ġ ϴ %d/%d %d/%d /ߺǴ (beginning-of-line) Ͽϴ ̺ ׻ մϴ ǵ ϴ ڷ ϴ ij ɼ: - ׸ Ƹ ٸ Դϴ Ģ ȣ: : %array -+ɼǰ ϴ%d ǵ(޾Ƶ ʴ) . %option yyclass C++ijʿԸ ǹ̰ ֽϴ%s %s : %s: ġ , %s ********** * ̻մϴ* - tok: %d val: %d -Cf -CF ϴ-Cf/-CF -Cm ǹ̰ ϴ-Cf/-CF -I ϴ-Cf/-CF lexȣȯ ʹ ϴ-I (ȭ) ұԸ ϸ ŵϴ -l AT&T lex ȣȯ ɼ ū ϸ ŵϴ -s ɼ ־ ⺻ Ģ ֽϴ-CFɼǿ -+ɼ ϴ-lɼǿ -+ɼ ϴ-lɼǿ -f -Fɼ ϴ ̺ ׻ մϴ. ߿ EOF ϴ ǥ ǵ ϴ. REJECT -f -Fɼǰ ϴREJECT ū ϸ ŵϴ ¹ȣ %d ޾Ƶ ʴ -Դϴ %d࿡ Ģ Ģ ū ϸ ŵϴ 迭 ũ⸦ ø õ ߽ϴ߸ < >: %scheck_char() ߸ '%s' ãҽϴ߸ ڷ߸ : %s{} ߸ ߸ : %s̷ Ͽ ߸ mark_beginning_as_normal() ߸ sympartition() ߸ ڸ ãҽϴ%s ϴ̷ %s ϴepsclosure() ϰ ˻簡 ߽ϴ%s ϴǵ %s ϴ (end-of-buffer)¸ ϴ copy_string() ޸ Ҵ ߽ϴdupmachine() ӽ %s ݴµ ߻߽ϴ %s ݴµ ߻߽ϴ̷ %s ݴµ ߻߽ϴ %s ߻߽ϴ %s µ ߻߽ϴ %s ߻߽ϴġ Ľ mkxtion() ̰ ʹ ϴҿ ̸ ̷ %s д ߻߽ϴԷ Ģ ʹ մϴ(>= NFA %d)allocate_array() ޸ Ҵ ߽ϴyy_flex_xmalloc() ޸ Ҵ ߽ϴοȣ } ϴ̸ "%s" ϴ̸ ι ߽ϴ۽ EOF´ Ģ ã ϴijʿ %s ؼ -8ɼ ʿմϴ %s ι ߽ϴ ȣ %4d ¹ȣ %d ޾ƵԴϴ: ¹ȣ %d [%d] ޾ƵԴϴ ¹ȣ %d: ɺ ̺ ޸ Ҵ ߽ϴĢ ʹ ϴ (> %d)!ǵ {%s} -C ɼ '%c' %%option: %s '%' Ģ -f -Fɼǰ ϴyymore() ұԸ ϸ ŵϴ flex-2.5.39/po/stamp-po0000644000175000017500000000001212314621666015123 0ustar srivastasrivastatimestamp flex-2.5.39/po/sr.po0000644000175000017500000007615312314621665014446 0ustar srivastasrivasta# Serbian translation for flex # Copyright (C) 2013 The Flex Project (msgids) # This file is distributed under the same license as the flex package. # Мирослав Николић , 2013. msgid "" msgstr "" "Project-Id-Version: flex-2.5.37\n" "Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2014-03-26 15:00-0400\n" "PO-Revision-Date: 2013-10-30 18:20+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: buf.c:78 msgid "Allocation of buffer to print string failed" msgstr "Није успело додељивање међумеморије нисци исписивања" #: buf.c:100 msgid "Allocation of buffer for line directive failed" msgstr "Није успело додељивање међумеморије за одредницу реда" #: buf.c:177 msgid "Allocation of buffer for m4 def failed" msgstr "Није успело додељивање међумеморије за одредницу м4" #: buf.c:197 msgid "Allocation of buffer for m4 undef failed" msgstr "Није успело додељивање међумеморије за поништавање одреднице м4" #: dfa.c:61 #, c-format msgid "State #%d is non-accepting -\n" msgstr "Стање #%d је не-прихватљиво —\n" #: dfa.c:124 msgid "dangerous trailing context" msgstr "опасан пратећи контекст" #: dfa.c:166 #, c-format msgid " associated rule line numbers:" msgstr " бројеви реда придруженог правила:" #: dfa.c:202 #, c-format msgid " out-transitions: " msgstr " ван-прелаза:" #: dfa.c:210 #, c-format msgid "" "\n" " jam-transitions: EOF " msgstr "" "\n" " јам-прелази: крај датотеке" #: dfa.c:341 msgid "consistency check failed in epsclosure()" msgstr "провера доследности није успела у „epsclosure()“" #: dfa.c:429 msgid "" "\n" "\n" "DFA Dump:\n" "\n" msgstr "" "\n" "\n" "ДФА испис:\n" "\n" #: dfa.c:604 msgid "could not create unique end-of-buffer state" msgstr "не могу да направим јединствено стање краја међумеморије" #: dfa.c:625 #, c-format msgid "state # %d:\n" msgstr "стање # %d:\n" #: dfa.c:785 msgid "Could not write yynxt_tbl[][]" msgstr "Не могу да запишем „yynxt_tbl[][]“" #: dfa.c:1049 msgid "bad transition character detected in sympartition()" msgstr "откривен је лош знак прелаза у „sympartition()“" #: gen.c:478 msgid "" "\n" "\n" "Equivalence Classes:\n" "\n" msgstr "" "\n" "\n" "Разреди једнакости:\n" "\n" #: gen.c:662 gen.c:691 gen.c:1215 #, c-format msgid "state # %d accepts: [%d]\n" msgstr "стање # %d прихвата: [%d]\n" #: gen.c:1110 #, c-format msgid "state # %d accepts: " msgstr "стање # %d прихвата: " #: gen.c:1157 msgid "Could not write yyacclist_tbl" msgstr "Не могу да запишем „yyacclist_tbl“" #: gen.c:1233 msgid "Could not write yyacc_tbl" msgstr "Не могу да запишем „yyacc_tbl“" #: gen.c:1248 gen.c:1633 gen.c:1656 msgid "Could not write ecstbl" msgstr "Не могу да запишем „ecstbl“" #: gen.c:1271 msgid "" "\n" "\n" "Meta-Equivalence Classes:\n" msgstr "" "\n" "\n" "Разреди мета-једнакости:\n" #: gen.c:1293 msgid "Could not write yymeta_tbl" msgstr "Не могу да запишем „yymeta_tbl“" #: gen.c:1354 msgid "Could not write yybase_tbl" msgstr "Не могу да запишем „yybase_tbl“" #: gen.c:1388 msgid "Could not write yydef_tbl" msgstr "Не могу да запишем „yydef_tbl“" #: gen.c:1428 msgid "Could not write yynxt_tbl" msgstr "Не могу да запишем „yynxt_tbl“" #: gen.c:1464 msgid "Could not write yychk_tbl" msgstr "Не могу да запишем „ychk_tbl“" #: gen.c:1618 gen.c:1647 msgid "Could not write ftbl" msgstr "Не могу да запишем „ftbl“" #: gen.c:1624 msgid "Could not write ssltbl" msgstr "Не могу да запишем „ssltbl“" #: gen.c:1675 msgid "Could not write eoltbl" msgstr "Не могу да запишем „eoltbl“" #: gen.c:1735 msgid "Could not write yynultrans_tbl" msgstr "Не могу да запишем „yynultrans_tbl“" #: main.c:191 msgid "rule cannot be matched" msgstr "правило не може бити поклопљено" #: main.c:196 msgid "-s option given but default rule can be matched" msgstr "дата је опција „-s“ али основно правило може бити поклопљено" #: main.c:236 msgid "Can't use -+ with -l option" msgstr "Не могу да користим -+ са опцијом „-l“" #: main.c:239 msgid "Can't use -f or -F with -l option" msgstr "Не могу да користим „-f“ или „-F“ са опцијом „-l“" #: main.c:243 msgid "Can't use --reentrant or --bison-bridge with -l option" msgstr "Не могу да користим „--reentrant“ или „--bison-bridge“ са опцијом „-l“" #: main.c:275 msgid "-Cf/-CF and -Cm don't make sense together" msgstr "„-Cf/-CF“ и „-Cm“ немају смисла заједно" #: main.c:278 msgid "-Cf/-CF and -I are incompatible" msgstr "„-Cf/-CF“ и „-I“ су несагласне" #: main.c:282 msgid "-Cf/-CF are incompatible with lex-compatibility mode" msgstr "„-Cf/-CF“ су несагласни са режимом лекс-сагласности" #: main.c:287 msgid "-Cf and -CF are mutually exclusive" msgstr "„-Cf“ и „-CF“ се међусобно искључују" #: main.c:291 msgid "Can't use -+ with -CF option" msgstr "Не могу да користим -+ са опцијом „-CF“" #: main.c:294 #, c-format msgid "%array incompatible with -+ option" msgstr "%aниз није сагласан са опцијом -+" #: main.c:299 msgid "Options -+ and --reentrant are mutually exclusive." msgstr "Опције -+ и „--reentrant“ се међусобно искључују." #: main.c:302 msgid "bison bridge not supported for the C++ scanner." msgstr "бизонов мост није подржан за Ц++ скенер." #: main.c:357 main.c:403 #, c-format msgid "could not create %s" msgstr "не могу да направим %s" #: main.c:416 msgid "could not write tables header" msgstr "не могу да запшем бестаблично заглавље" #: main.c:420 #, c-format msgid "can't open skeleton file %s" msgstr "Не могу да отворим датотеку окоснице „%s“" #: main.c:456 msgid "allocation of macro definition failed" msgstr "није успело додељивање одреднице макроа" #: main.c:504 #, c-format msgid "input error reading skeleton file %s" msgstr "грешка улаза читања датотеке окоснице „%s“" #: main.c:508 #, c-format msgid "error closing skeleton file %s" msgstr "грешка затварања датотеке окоснице „%s“" #: main.c:693 #, c-format msgid "error creating header file %s" msgstr "грешка стварања датотеке заглавља „%s“" #: main.c:701 #, c-format msgid "error writing output file %s" msgstr "грешка записивања излазне датотеке „%s“" #: main.c:705 #, c-format msgid "error closing output file %s" msgstr "грешка затварања излазне датотеке „%s“" #: main.c:709 #, c-format msgid "error deleting output file %s" msgstr "грешка брисања излазне датотеке „%s“" #: main.c:716 #, c-format msgid "No backing up.\n" msgstr "Не правим резерву.\n" #: main.c:720 #, c-format msgid "%d backing up (non-accepting) states.\n" msgstr "%d стварам резерве (не-прихватам) стања.\n" #: main.c:724 #, c-format msgid "Compressed tables always back up.\n" msgstr "Сжете табеле увек стварају резерву.\n" #: main.c:727 #, c-format msgid "error writing backup file %s" msgstr "грешка записивања датотеке резерве „%s“" #: main.c:731 #, c-format msgid "error closing backup file %s" msgstr "грешка затварања датотеке резерве „%s“" #: main.c:736 #, c-format msgid "%s version %s usage statistics:\n" msgstr "Статистика коришћења %s издања%s:\n" #: main.c:739 #, c-format msgid " scanner options: -" msgstr " опције прегледача: -" #: main.c:818 #, c-format msgid " %d/%d NFA states\n" msgstr " %d/%d НФА стања\n" #: main.c:820 #, c-format msgid " %d/%d DFA states (%d words)\n" msgstr " %d/%d ДФА стања (%d речи)\n" #: main.c:822 #, c-format msgid " %d rules\n" msgstr " %d правила\n" #: main.c:827 #, c-format msgid " No backing up\n" msgstr " Не правим резерву\n" #: main.c:831 #, c-format msgid " %d backing-up (non-accepting) states\n" msgstr " %d стварам резерве (не-прихватам) стања\n" #: main.c:836 #, c-format msgid " Compressed tables always back-up\n" msgstr " Сжете табеле увек стварају резерву\n" #: main.c:840 #, c-format msgid " Beginning-of-line patterns used\n" msgstr " Коришћени су шаблони почетка-реда\n" #: main.c:842 #, c-format msgid " %d/%d start conditions\n" msgstr " %d/%d услови покретања\n" #: main.c:846 #, c-format msgid " %d epsilon states, %d double epsilon states\n" msgstr " %d стања ипсилона, %d стања двоструког ипсилона\n" #: main.c:850 #, c-format msgid " no character classes\n" msgstr " нема разреда знака\n" #: main.c:854 #, c-format msgid " %d/%d character classes needed %d/%d words of storage, %d reused\n" msgstr "" " %d/%d разредима знака беху потребне %d/%d речи складишта, %d поново " "коришћених\n" #: main.c:859 #, c-format msgid " %d state/nextstate pairs created\n" msgstr " %d пара стања/следећег_стања је направљено\n" #: main.c:862 #, c-format msgid " %d/%d unique/duplicate transitions\n" msgstr " %d/%d јединствена/удвостручена прелаза\n" #: main.c:867 #, c-format msgid " %d table entries\n" msgstr " %d уноса табеле\n" #: main.c:875 #, c-format msgid " %d/%d base-def entries created\n" msgstr " направљено је %d/%d уноса основне одреднице\n" #: main.c:879 #, c-format msgid " %d/%d (peak %d) nxt-chk entries created\n" msgstr " направљено је %d/%d (врх %d) „nxt-chk“ уноса\n" #: main.c:883 #, c-format msgid " %d/%d (peak %d) template nxt-chk entries created\n" msgstr " направљено је %d/%d (врх %d)шаблона „nxt-chk“ уноса\n" #: main.c:887 #, c-format msgid " %d empty table entries\n" msgstr " %d празна уноса табеле\n" #: main.c:889 #, c-format msgid " %d protos created\n" msgstr " направљених узорака — %d\n" #: main.c:892 #, c-format msgid " %d templates created, %d uses\n" msgstr " направљених шаблона - %d, користим %d\n" #: main.c:900 #, c-format msgid " %d/%d equivalence classes created\n" msgstr " направљено је %d/%d разреда једнакости\n" #: main.c:908 #, c-format msgid " %d/%d meta-equivalence classes created\n" msgstr " направљено је %d/%d разреда мета-једнакости\n" #: main.c:914 #, c-format msgid " %d (%d saved) hash collisions, %d DFAs equal\n" msgstr " %d (сачуваних %d) сукоба хеша, %d једнак ДФА-су\n" #: main.c:916 #, c-format msgid " %d sets of reallocations needed\n" msgstr " потребна су %d скупа поновног додељивања\n" #: main.c:918 #, c-format msgid " %d total table entries needed\n" msgstr " потребна су укупно %d уноса табеле\n" #: main.c:995 #, c-format msgid "Internal error. flexopts are malformed.\n" msgstr "Унутрашња грешка. „flexopts“ је лоше обликован.\n" #: main.c:1005 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Пробајте „%s --help“ за више података.\n" #: main.c:1062 #, c-format msgid "unknown -C option '%c'" msgstr "непозната опција -C „%c“" #: main.c:1191 #, c-format msgid "%s %s\n" msgstr "%s %s\n" #: main.c:1466 msgid "fatal parse error" msgstr "кобна грешка обраде" #: main.c:1498 #, c-format msgid "could not create backing-up info file %s" msgstr "не могу да направим резерву датотеке података „%s“" #: main.c:1519 #, c-format msgid "-l AT&T lex compatibility option entails a large performance penalty\n" msgstr "-l опција сагласности АТ&Т лекса изазива велико смањење учинка\n" #: main.c:1522 #, c-format msgid " and may be the actual source of other reported performance penalties\n" msgstr " и може бити стваран извор других извешених ограничења учинка\n" #: main.c:1528 #, c-format msgid "" "%%option yylineno entails a performance penalty ONLY on rules that can match " "newline characters\n" msgstr "" "%%опција „yylineno“ изазива смањење учинка САМО на правилима која могу да " "поклопе знакове новог реда\n" #: main.c:1535 #, c-format msgid "-I (interactive) entails a minor performance penalty\n" msgstr "-I (међудејствено) изазива мање смањење учинка\n" #: main.c:1540 #, c-format msgid "yymore() entails a minor performance penalty\n" msgstr "„yymore()“ изазива мање смањење учинка\n" #: main.c:1546 #, c-format msgid "REJECT entails a large performance penalty\n" msgstr "„REJECT“ изазива веће смањење учинка\n" #: main.c:1551 #, c-format msgid "Variable trailing context rules entail a large performance penalty\n" msgstr "Променљива правила пратећег контекса изазивају веће смањење учинка\n" #: main.c:1563 msgid "REJECT cannot be used with -f or -F" msgstr "„REJECT“ не може да се користи са „-f“ или „-F“" #: main.c:1566 #, c-format msgid "%option yylineno cannot be used with REJECT" msgstr "%oпција „yylineno“ не може да се користи са „REJECT“" #: main.c:1569 msgid "variable trailing context rules cannot be used with -f or -F" msgstr "" "променљива правила пратећег контекста не могу бити коришћена са „-f“ или „-F“" #: main.c:1692 #, c-format msgid "%option yyclass only meaningful for C++ scanners" msgstr "%oпција „yyclass“ има смисла само за Ц++ скенере" #: main.c:1799 #, c-format msgid "Usage: %s [OPTIONS] [FILE]...\n" msgstr "Употреба: %s [ОПЦИЈЕ] [ДАТОТЕКА]...\n" #: main.c:1802 #, c-format msgid "" "Generates programs that perform pattern-matching on text.\n" "\n" "Table Compression:\n" " -Ca, --align trade off larger tables for better memory alignment\n" " -Ce, --ecs construct equivalence classes\n" " -Cf do not compress tables; use -f representation\n" " -CF do not compress tables; use -F representation\n" " -Cm, --meta-ecs construct meta-equivalence classes\n" " -Cr, --read use read() instead of stdio for scanner input\n" " -f, --full generate fast, large scanner. Same as -Cfr\n" " -F, --fast use alternate table representation. Same as -CFr\n" " -Cem default compression (same as --ecs --meta-ecs)\n" "\n" "Debugging:\n" " -d, --debug enable debug mode in scanner\n" " -b, --backup write backing-up information to %s\n" " -p, --perf-report write performance report to stderr\n" " -s, --nodefault suppress default rule to ECHO unmatched text\n" " -T, --trace %s should run in trace mode\n" " -w, --nowarn do not generate warnings\n" " -v, --verbose write summary of scanner statistics to stdout\n" "\n" "Files:\n" " -o, --outfile=FILE specify output filename\n" " -S, --skel=FILE specify skeleton file\n" " -t, --stdout write scanner on stdout instead of %s\n" " --yyclass=NAME name of C++ class\n" " --header-file=FILE create a C header file in addition to the " "scanner\n" " --tables-file[=FILE] write tables to FILE\n" "\n" "Scanner behavior:\n" " -7, --7bit generate 7-bit scanner\n" " -8, --8bit generate 8-bit scanner\n" " -B, --batch generate batch scanner (opposite of -I)\n" " -i, --case-insensitive ignore case in patterns\n" " -l, --lex-compat maximal compatibility with original lex\n" " -X, --posix-compat maximal compatibility with POSIX lex\n" " -I, --interactive generate interactive scanner (opposite of -B)\n" " --yylineno track line count in yylineno\n" "\n" "Generated code:\n" " -+, --c++ generate C++ scanner class\n" " -Dmacro[=defn] #define macro defn (default defn is '1')\n" " -L, --noline suppress #line directives in scanner\n" " -P, --prefix=STRING use STRING as prefix instead of \"yy\"\n" " -R, --reentrant generate a reentrant C scanner\n" " --bison-bridge scanner for bison pure parser.\n" " --bison-locations include yylloc support.\n" " --stdinit initialize yyin/yyout to stdin/stdout\n" " --noansi-definitions old-style function definitions\n" " --noansi-prototypes empty parameter list in prototypes\n" " --nounistd do not include \n" " --noFUNCTION do not generate a particular FUNCTION\n" "\n" "Miscellaneous:\n" " -c do-nothing POSIX option\n" " -n do-nothing POSIX option\n" " -?\n" " -h, --help produce this help message\n" " -V, --version report %s version\n" msgstr "" "Стварајте програме који обављају поклапање према шаблону у тексту.\n" "\n" "Сабијање табеле:\n" " -Ca, --align обрађује веће табеле зарад бољег поравнања " "меморије\n" " -Ce, --ecs изграђује разреде једнакости\n" " -Cf не сажима табеле; користи „-f“ " "representation” представљање\n" " -CF не сажима табеле; користи „-F“ " "representation” представљање\n" " -Cm, --meta-ecs изграђује разреде мета-једнакости\n" " -Cr, --read користи „read()уместо стндардног уи за улаз " "скенера\n" " -f, --full ствара брзи, велики скенер. Исто као „-Cfr“\n" " -F, --fast користи заменско представљање табеле. Исто " "као „-CFr“\n" " -Cem задато сажимање (исто као „--ecs --meta-" "ecs“)\n" "\n" "Прочишћавање:\n" " -d, --debug укључује режим прочишћавања у скенеру\n" " -b, --backup записује податке о стварању резерве у „%s“\n" " -p, --perf-report записује извештај о учинку стандардну грешку\n" " -s, --nodefault потискује задато правило у „ECHO“ " "непоклопљени текст\n" " -T, --trace %s треба да ради у режиму праћења\n" " -w, --nowarn не ствара упозорења\n" " -v, --verbose записује сажетак статистике скенера на " "стандардни излаз\n" "\n" "Датотеке:\n" " -o, --outfile=ДАТОТЕКА наводи излазни назив датотеке\n" " -S, --skel=ДАТОТЕКА наводи датотеку окоснице\n" " -t, --stdout записује скенер на стандардни излазуместо на " "„%s“\n" " --yyclass=НАЗИВ назив Ц++ разреда\n" " --header-file=ДАТОТЕКА ствара датотеку Ц заглавља као додатак " "скенеру\n" " --tables-file[=ДАТОТЕКА] записује табеле у ДАТОТЕКУ\n" "\n" "Понашање скенера:\n" " -7, --7bit ствара 7-битни скенер\n" " -8, --8bit ствара 8-битни скенер\n" " -B, --batch ствара скенер скупа (супротно од „-I“)\n" " -i, --case-insensitive занемарује величину слова у шаблонима\n" " -l, --lex-compat највећа сагласност са изворним лексом\n" " -X, --posix-compat највећа сагласност са лексом ПОСИКС-а\n" " -I, --interactive ствара међудејствени скенер (супротно од „-" "B“)\n" " --yylineno прати број реда у „yylineno“\n" "\n" "Створени код:\n" " -+, --c++ ствара Ц++ разред скенера\n" " -Dmacro[=одредница] #одређује макро „одредницу“ (основна је 1)\n" " -L, --noline потискује одреднице #реда у скенеру\n" " -P, --prefix=НИСКА користи НИСКУкао префикс уместо „yy“\n" " -R, --reentrant ствара поновно улазни Ц скенер\n" " --bison-bridge скенер за чисто бизонов обрађивач.\n" " --bison-locations укључујеподршку „yylloc“ support”\n" " --stdinit започиње „yyin/yyout“ на стндулаз/стндизлаз\n" " --noansi-definitions одреднице функције старог стила\n" " --noansi-prototypes празан списак параметарау узорцима\n" " --nounistd не укључује [unistd.h]\n" " --noФУНКЦИЈА не ствара нарочиту ФУНКЦИЈУ\n" "\n" "Разно:\n" " -c не ПОСИКС-ира опцију\n" " -n не ПОСИКС-ира опцију\n" " -?\n" " -h, --help исписује ову помоћ\n" " -V, --version извештава о издању %s-а\n" #: misc.c:65 msgid "allocation of sko_stack failed" msgstr "није успело додељивање „sko_stack“-а" #: misc.c:102 misc.c:128 #, c-format msgid "name \"%s\" ridiculously long" msgstr "назив „%s“ је смешно дуг" #: misc.c:177 msgid "memory allocation failed in allocate_array()" msgstr "није успело додељивање меморије у „allocate_array()“" #: misc.c:230 #, c-format msgid "bad character '%s' detected in check_char()" msgstr "лош знак „%s“ је откривен у „check_char()“" #: misc.c:235 #, c-format msgid "scanner requires -8 flag to use the character %s" msgstr "скенер захтева -8 обележја да би користио знак „%s“" #: misc.c:268 msgid "dynamic memory failure in copy_string()" msgstr "неуспех динамичке меморије у „copy_string()“" #: misc.c:367 #, c-format msgid "%s: fatal internal error, %s\n" msgstr "%s: кобна унутрашња грешка, %s\n" #: misc.c:803 msgid "attempt to increase array size failed" msgstr "није успео покушај повећања величине низа" #: misc.c:930 msgid "bad line in skeleton file" msgstr "лош ред у датотеци окоснице" #: misc.c:979 msgid "memory allocation failed in yy_flex_xmalloc()" msgstr "није успело додељивање меморије у „yy_flex_xmalloc()“" #: nfa.c:104 #, c-format msgid "" "\n" "\n" "********** beginning dump of nfa with start state %d\n" msgstr "" "\n" "\n" "********** започињем испис нфа-а са почетним стањем %d\n" #: nfa.c:115 #, c-format msgid "state # %4d\t" msgstr "стање # %4d" #: nfa.c:130 #, c-format msgid "********** end of dump\n" msgstr "********** крај исписа\n" #: nfa.c:174 msgid "empty machine in dupmachine()" msgstr "празна машина у „dupmachine()“" #: nfa.c:240 #, c-format msgid "Variable trailing context rule at line %d\n" msgstr "Променљиво правило пратећег контекста на %d. реду\n" #: nfa.c:364 msgid "bad state type in mark_beginning_as_normal()" msgstr "лоша врста стања у „mark_beginning_as_normal()“" #: nfa.c:609 #, c-format msgid "input rules are too complicated (>= %d NFA states)" msgstr "улазна правила су превише сложена (>= %d НФА стања)" #: nfa.c:688 msgid "found too many transitions in mkxtion()" msgstr "пронађох превише прелаза у „mkxtion()“" #: nfa.c:714 #, c-format msgid "too many rules (> %d)!" msgstr "превише правила (> %d)!" #: parse.y:159 msgid "unknown error processing section 1" msgstr "непозната грешка обраде одељка 1" #: parse.y:184 parse.y:351 msgid "bad start condition list" msgstr "лош списак почетног услова" #: parse.y:315 msgid "unrecognized rule" msgstr "непознато правило" #: parse.y:434 parse.y:447 parse.y:516 msgid "trailing context used twice" msgstr "пратећи контекст је коришћен два пута" #: parse.y:552 parse.y:562 parse.y:635 parse.y:645 msgid "bad iteration values" msgstr "лоша вредност опетовања" #: parse.y:580 parse.y:598 parse.y:663 parse.y:681 msgid "iteration value must be positive" msgstr "вредност опетовања мора бити позитивна" #: parse.y:804 parse.y:814 #, c-format msgid "the character range [%c-%c] is ambiguous in a case-insensitive scanner" msgstr "опсег знака [%c-%c] је нејасан у скенеру неосетљивом на величину слова" #: parse.y:819 msgid "negative range in character class" msgstr "негативан опсег у разреду знака" #: parse.y:916 msgid "[:^lower:] is ambiguous in case insensitive scanner" msgstr "[:^lower:] је нејасно у скенеру неосетљивом на величину слова" #: parse.y:922 msgid "[:^upper:] ambiguous in case insensitive scanner" msgstr "[:^upper:] је нејасно у скенеру неосетљивом на величину слова" #: scan.l:75 scan.l:618 scan.l:676 msgid "Input line too long\n" msgstr "Улазни ред је предуг\n" #: scan.l:161 #, c-format msgid "malformed '%top' directive" msgstr "лоша одредница „%top“" #: scan.l:183 #, no-c-format msgid "unrecognized '%' directive" msgstr "непозната " #: scan.l:192 msgid "Definition name too long\n" msgstr "Назив одреднице је предуг\n" #: scan.l:284 msgid "Unmatched '{'" msgstr "Неупарена „{“" #: scan.l:300 #, c-format msgid "Definition value for {%s} too long\n" msgstr "Вредност одреднице за {%s} је предуга\n" #: scan.l:317 msgid "incomplete name definition" msgstr "непотпуна одредница назива" #: scan.l:443 msgid "Option line too long\n" msgstr "Ред опције је предуг\n" #: scan.l:451 #, c-format msgid "unrecognized %%option: %s" msgstr "непозната %%опција: %s" #: scan.l:633 scan.l:800 msgid "bad character class" msgstr "лош разред знака" #: scan.l:683 #, c-format msgid "undefined definition {%s}" msgstr "неодређена одредница {%s}" #: scan.l:755 #, c-format msgid "bad : %s" msgstr "лош [почетни услов]: %s" #: scan.l:768 msgid "missing quote" msgstr "недостају наводници" #: scan.l:834 #, c-format msgid "bad character class expression: %s" msgstr "лош израз разреда знака: %s" #: scan.l:856 msgid "bad character inside {}'s" msgstr "лош знак унутар {}" #: scan.l:862 msgid "missing }" msgstr "недостаје }" #: scan.l:940 msgid "EOF encountered inside an action" msgstr "наишао сам на крај датотеке унутар радње" #: scan.l:945 msgid "EOF encountered inside pattern" msgstr "наишао сам на крај датотеке унутар шаблона" #: scan.l:967 #, c-format msgid "bad character: %s" msgstr "лош знак: %s" #: scan.l:996 #, c-format msgid "can't open %s" msgstr "не могу да отворим „%s“" #: scanopt.c:291 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Употреба: %s [ОПЦИЈЕ]...\n" #: scanopt.c:564 #, c-format msgid "option `%s' doesn't allow an argument\n" msgstr "опција „%s“ не дозвољава аргумент\n" #: scanopt.c:569 #, c-format msgid "option `%s' requires an argument\n" msgstr "опција „%s“ захтева аргумент\n" #: scanopt.c:573 #, c-format msgid "option `%s' is ambiguous\n" msgstr "опција „%s“ је нејасна\n" #: scanopt.c:577 #, c-format msgid "Unrecognized option `%s'\n" msgstr "Непозната опција „%s“\n" #: scanopt.c:581 #, c-format msgid "Unknown error=(%d)\n" msgstr "Непозната грешка=(%d)\n" #: sym.c:100 msgid "symbol table memory allocation failed" msgstr "није успело додељивање меморије табеле симбола" #: sym.c:202 msgid "name defined twice" msgstr "назив је одређен два пута" #: sym.c:253 #, c-format msgid "start condition %s declared twice" msgstr "почетни услов „%s“ је објављен два пута" #: yylex.c:56 msgid "premature EOF" msgstr "прерани крај датотеке" #: yylex.c:198 #, c-format msgid "End Marker\n" msgstr "Завршни означавач\n" #: yylex.c:204 #, c-format msgid "*Something Weird* - tok: %d val: %d\n" msgstr "*Нешто је чудно* — ток: %d вред: %d\n" flex-2.5.39/po/ru.gmo0000644000175000017500000007007012314621665014604 0ustar srivastasrivastaT 7  AOh/'.> S"_#  *3'[z!C$)C%]"#FOn`"&0,+] $" )/Y4y5E/*.Z&(+"6>!u".Lg #' Kl : #(#$ $26$#i$+$$&$$ % %:%Y%*q%C%3%0&%E&k&%&&+&&" '-'G'Y'n'','3'/( 2(@((\((((+(( )'')O)m)))))**<*'N*v*$*2* * +,%+-R+ + +++!+&+,!*, L,Z,0q,!, ,,, -% -F3-z----"-..6.<H.-..u010314d11h1]24}2\2)393OL3J3'3B4ER4>4Q40)5"Z53}55C>6J6*6K6DD7j7?7748&l88I9`9x98d:\:N:JI;;D;=; <.?<Sn<K<9=dH==.>y>\@?=???V@Lr@K@j AUvAiA,6B,cB*B,B/B3C0LC/}C/C0C4D/CD3sD@DRD2;E0nEEE:XWX>MY/Y[YSZclZ1Zo[)r[[5[B[7,\dd\\] ^N^2^Q_8l_A_*_C`-V`!`2`:`?aHTaWaIa&?b<fbPb&bncccEc44d\id+dId>fECf9f.fHf2;g6ng]gRh8Vh@hHh%i?i)Xi(iLi\i+UjZjj6ji.k@kk,k1 lRlZlll.tmKm8m8(nNan)n5n+oKq\|sg5hXEu.k#$ ********** beginning dump of nfa with start state %d DFA Dump: Equivalence Classes: Meta-Equivalence Classes: jam-transitions: EOF %d (%d saved) hash collisions, %d DFAs equal %d backing-up (non-accepting) states %d empty table entries %d epsilon states, %d double epsilon states %d protos created %d rules %d sets of reallocations needed %d state/nextstate pairs created %d table entries %d templates created, %d uses %d total table entries needed %d/%d (peak %d) nxt-chk entries created %d/%d (peak %d) template nxt-chk entries created %d/%d DFA states (%d words) %d/%d NFA states %d/%d base-def entries created %d/%d character classes needed %d/%d words of storage, %d reused %d/%d equivalence classes created %d/%d meta-equivalence classes created %d/%d start conditions %d/%d unique/duplicate transitions Beginning-of-line patterns used Compressed tables always back-up No backing up no character classes scanner options: - and may be the actual source of other reported performance penalties associated rule line numbers: out-transitions: %%option yylineno entails a performance penalty ONLY on rules that can match newline characters %array incompatible with -+ option%d backing up (non-accepting) states. %option yyclass only meaningful for C++ scanners%option yylineno cannot be used with REJECT%s %s %s version %s usage statistics: %s: fatal internal error, %s ********** end of dump *Something Weird* - tok: %d val: %d -Cf and -CF are mutually exclusive-Cf/-CF and -Cm don't make sense together-Cf/-CF and -I are incompatible-Cf/-CF are incompatible with lex-compatibility mode-I (interactive) entails a minor performance penalty -l AT&T lex compatibility option entails a large performance penalty -s option given but default rule can be matchedAllocation of buffer for line directive failedAllocation of buffer for m4 def failedAllocation of buffer for m4 undef failedAllocation of buffer to print string failedCan't use -+ with -CF optionCan't use -+ with -l optionCan't use --reentrant or --bison-bridge with -l optionCan't use -f or -F with -l optionCompressed tables always back up. Could not write ecstblCould not write eoltblCould not write ftblCould not write ssltblCould not write yyacc_tblCould not write yyacclist_tblCould not write yybase_tblCould not write yychk_tblCould not write yydef_tblCould not write yymeta_tblCould not write yynultrans_tblCould not write yynxt_tblCould not write yynxt_tbl[][]Definition name too long Definition value for {%s} too long EOF encountered inside an actionEOF encountered inside patternEnd Marker Generates programs that perform pattern-matching on text. Table Compression: -Ca, --align trade off larger tables for better memory alignment -Ce, --ecs construct equivalence classes -Cf do not compress tables; use -f representation -CF do not compress tables; use -F representation -Cm, --meta-ecs construct meta-equivalence classes -Cr, --read use read() instead of stdio for scanner input -f, --full generate fast, large scanner. Same as -Cfr -F, --fast use alternate table representation. Same as -CFr -Cem default compression (same as --ecs --meta-ecs) Debugging: -d, --debug enable debug mode in scanner -b, --backup write backing-up information to %s -p, --perf-report write performance report to stderr -s, --nodefault suppress default rule to ECHO unmatched text -T, --trace %s should run in trace mode -w, --nowarn do not generate warnings -v, --verbose write summary of scanner statistics to stdout Files: -o, --outfile=FILE specify output filename -S, --skel=FILE specify skeleton file -t, --stdout write scanner on stdout instead of %s --yyclass=NAME name of C++ class --header-file=FILE create a C header file in addition to the scanner --tables-file[=FILE] write tables to FILE Scanner behavior: -7, --7bit generate 7-bit scanner -8, --8bit generate 8-bit scanner -B, --batch generate batch scanner (opposite of -I) -i, --case-insensitive ignore case in patterns -l, --lex-compat maximal compatibility with original lex -X, --posix-compat maximal compatibility with POSIX lex -I, --interactive generate interactive scanner (opposite of -B) --yylineno track line count in yylineno Generated code: -+, --c++ generate C++ scanner class -Dmacro[=defn] #define macro defn (default defn is '1') -L, --noline suppress #line directives in scanner -P, --prefix=STRING use STRING as prefix instead of "yy" -R, --reentrant generate a reentrant C scanner --bison-bridge scanner for bison pure parser. --bison-locations include yylloc support. --stdinit initialize yyin/yyout to stdin/stdout --noansi-definitions old-style function definitions --noansi-prototypes empty parameter list in prototypes --nounistd do not include --noFUNCTION do not generate a particular FUNCTION Miscellaneous: -c do-nothing POSIX option -n do-nothing POSIX option -? -h, --help produce this help message -V, --version report %s version Input line too long Internal error. flexopts are malformed. No backing up. Option line too long Options -+ and --reentrant are mutually exclusive.REJECT cannot be used with -f or -FREJECT entails a large performance penalty State #%d is non-accepting - Try `%s --help' for more information. Unknown error=(%d) Unmatched '{'Unrecognized option `%s' Usage: %s [OPTIONS] [FILE]... Usage: %s [OPTIONS]... Variable trailing context rule at line %d Variable trailing context rules entail a large performance penalty [:^lower:] is ambiguous in case insensitive scanner[:^upper:] ambiguous in case insensitive scannerallocation of macro definition failedallocation of sko_stack failedattempt to increase array size failedbad : %sbad character '%s' detected in check_char()bad character classbad character class expression: %sbad character inside {}'sbad character: %sbad iteration valuesbad line in skeleton filebad start condition listbad state type in mark_beginning_as_normal()bad transition character detected in sympartition()bison bridge not supported for the C++ scanner.can't open %scan't open skeleton file %sconsistency check failed in epsclosure()could not create %scould not create backing-up info file %scould not create unique end-of-buffer statecould not write tables headerdangerous trailing contextdynamic memory failure in copy_string()empty machine in dupmachine()error closing backup file %serror closing output file %serror closing skeleton file %serror creating header file %serror deleting output file %serror writing backup file %serror writing output file %sfatal parse errorfound too many transitions in mkxtion()incomplete name definitioninput error reading skeleton file %sinput rules are too complicated (>= %d NFA states)iteration value must be positivemalformed '%top' directivememory allocation failed in allocate_array()memory allocation failed in yy_flex_xmalloc()missing quotemissing }name "%s" ridiculously longname defined twicenegative range in character classoption `%s' doesn't allow an argument option `%s' is ambiguous option `%s' requires an argument premature EOFrule cannot be matchedscanner requires -8 flag to use the character %sstart condition %s declared twicestate # %4d state # %d accepts: state # %d accepts: [%d] state # %d: symbol table memory allocation failedthe character range [%c-%c] is ambiguous in a case-insensitive scannertoo many rules (> %d)!trailing context used twiceundefined definition {%s}unknown -C option '%c'unknown error processing section 1unrecognized %%option: %sunrecognized '%' directiveunrecognized rulevariable trailing context rules cannot be used with -f or -Fyymore() entails a minor performance penalty Project-Id-Version: flex 2.5.38 Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net POT-Creation-Date: 2014-03-26 15:00-0400 PO-Revision-Date: 2014-02-16 10:00+0400 Last-Translator: Yuri Kozlov Language-Team: Russian Language: ru MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8-bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); X-Generator: Lokalize 1.4 ******** начало дампа конечного автомата с начальным состоянием %d Дамп ДКА: Классы эквивалентности: Мета-эквивалентные Классы: jam-переходы: EOF %d (%d записано) коллизий хэш-таблицы, %d эквивалентных ДКА резервное копирование %d (недопустимых) состояний %d пустых элементов таблицы %d эпсилон-состояний, %d двойных эпсилон-состояний создано %d прототипов %d правил требуется %d наборов повторных размещений создано %d пар состояние/след_состояние %d элементов таблицы создано %d шаблонов, %d используются всего требуется %d элементов таблицы создано %d/%d (пик %d) nxt-chk элементов создано %d/%d (пик %d) шаблонных nxt-chk элементов %d/%d состояний ДКА (%d слов) %d/%d состояний НКА создано %d/%d base-def элементов %d/%d классов символов требуют %d/%d слов для хранения, %d повторно использовано созданы классы эквивалентности %d/%d %d/%d мета-эквивалентных классов создано %d/%d начальных условий %d/%d уникальных/повторяющихся переходов Используются шаблоны начала строки Резервное копирование сжатых таблиц выполняется всегда Резервное копирование отключено отсутствуют классы символов параметры сканера: - и также может быть истинным источником проблем с производительностью номера строк ассоциированного правила: out-переходы: %%option yylineno влечёт значительное снижение производительности ТОЛЬКО для правил, которые могут совпадать с символами новой строки %array несовместим с параметром -+резервное копирование %d (недопустимых) состояний. %option yyclass имеет смысл только для сканеров C++%option yylineno не может быть использован с REJECT%s %s статистика использования %s версии %s: %s: фатальная внутренняя ошибка, %s ********* конец дампа *Что-то не так* — tok: %d val: %d Параметры -Cf и -CF являются взаимоисключающимиПараметры -Cf/-CF и -Cm вместе не имеют смыслаПараметры -Cf/-CF и -I несовместимыПараметры -Cf/-CF несовместимы с режимом lex-совместимости-I (интерактивный) влечёт незначительное снижение производительности Параметр -l совместимости с AT&T lex влечёт значительное снижение производительности указан параметр -s, но правило по умолчанию не может быть примененоНе удалось выделить буфер для строковой директивыНе удалось выделить буфер для m4 defНе удалось выделить буфер для m4 undefНе удалось выделить буфер для выводимой строкиНевозможно использовать -+ с параметром -CFНевозможно использовать -+ с параметром -lНевозможно использовать --reentrant или --bison-bridge с параметром -lНевозможно использовать -f или -F с параметром -lРезервное копирование сжатых таблиц выполняется всегда. Невозможно записать ecstblНевозможно записать eoltblНевозможно записать ftblНевозможно записать ssltblНевозможно записать yyacc_tblНевозможно записать yyacclist_tblНевозможно записать yybase_tblНевозможно записать yychk_tblНевозможно записать yydef_tblНевозможно записать yymeta_tblНевозможно записать yynultrans_tblНевозможно записать yynxt_tblНевозможно записать yynxt_tbl[][]Слишком длинное определение имени Слишком длинное определение значения для {%s} встречен EOF внутри действиявстречен EOF внутри шаблонаМетка конца Генерирует программы, производящие манипуляции с текстом по шаблонам. Сжатие таблиц: -Ca, --align допускать больший размер таблиц для лучшего выравнивания в памяти -Ce, --ecs создавать классы эквивалентности -Cf не сжимать таблицы; использовать -f представление -CF не сжимать таблицы; использовать -F представление -Cm, --meta-ecs создавать классы мета-эквивалентности -Cr, --read использовать read() вместо stdio для входных данных сканера -f, --full создать быстрый, большой сканер. То же, что и -Cfr -F, --fast использовать альтернативное представление таблиц. То же, что и -CFr -Cem степень сжатия по умолчанию (то же что и --ecs --meta-ecs) Отладка: -d, --debug включить режим отладки в сканер -b, --backup записать резервную копию в %s -p, --perf-report записать отчёт о производительности в stderr -s, --nodefault подавлять правило по умолчанию для вывода (ECHO) текста, который не подошёл ни к одному правилу -T, --trace %s должен запускаться в режиме трассировки -w, --nowarn не выдавать предупреждений -v, --verbose записать суммарную статистику сканера в stdout Файлы: -o, --outfile=ФАЙЛ указать имя выходного файла -S, --skel=ФАЙЛ указать файл каркаса -t, --stdout записать сканер в stdout вместо %s --yyclass=ИМЯ имя класса C++ --header-file=ФАЙЛ создать кроме сканера заголовочный файл C --tables-file[=ФАЙЛ] записать таблицы в ФАЙЛ Поведение сканера: -7, --7bit создать 7-битный сканер -8, --8bit создать 8-битный сканер -B, --batch создать пакетный сканер (в противоположность к -I) -i, --case-insensitive игнорировать регистр букв в шаблонах -l, --lex-compat максимальная совместимость с оригинальным lex -X, --posix-compat максимальная совместимость с POSIX lex -I, --interactive создать интерактивный сканер (в противоположность к -B) --yylineno отслеживать число строк в yylineno Генерируемый код: -+, --c++ создать класс сканера С++ -Dmacro[=defn] #define macro defn (по умолчанию defn='1') -L, --noline не создавать директивы #line в сканере -P, --prefix=СТРОКА использовать СТРОКУ в качестве префикса вместо «yy» -R, --reentrant создать реентерабельный сканер на C --bison-bridge сканер для анализатора только на bison --bison-locations включить поддержку yylloc --stdinit инициализировать yyin/yyout в stdin/stdout --noansi-definitions определения функций в старом стиле --noansi-prototypes пустой список параметров в прототипах --nounistd не включать --noФУНКЦИЯ не генерировать определённую ФУНКЦИЮ Разное: -с ничего не делающий параметр POSIX -n ничего не делающий параметр POSIX -? -h, --help показать эту справку -V, --version показать версию %s Слишком длинная входная строка Внутренняя ошибка. Неправильное значение flexopts. Резервное копирование отключено. Слишком длинный параметр Параметры -+ и --reentrant являются взаимоисключающими.REJECT не может быть использован вместе с -f или -FREJECT влечёт значительное снижение производительности Состояние #%d не допускает - Попробуйте «%s --help» для получения более подробного описания. Неизвестная ошибка=(%d) Непарная «{»Нераспознанный параметр «%s» Использование: %s [ПАРАМЕТРЫ] [ФАЙЛ]… Использование: %s [ПАРАМЕТРЫ]… Правило с переменным замыкающим контекстом в строке %d Правила с переменным замыкающим контекстом приводят к значительному снижению производительности использование [:^lower:] сомнительно для сканера, не чувствительного к региструиспользование [:^upper:] сомнительно для сканера, не чувствительного к региструНе удалось разместить определение макросане удалось разместить sko_stackошибка при попытке увеличить размер массиваневерное <начальное условие>: %sнайден неверный символ «%s» в check_char()неверный класс символаневерное выражение класса символа: %sневерный символ внутри {}неверный символ: %sневерные значения итерацийневерная строка в файле-каркасеневерный список начальных условийневерный тип состояния в mark_beginning_as_normal()обнаружен неверный переходный символ в sympartition()bison bridge не поддерживается для сканера C++.невозможно открыть %sНевозможно открыть файл-каркас %sошибка при проверке на целостность в epsclosure()невозможно создать %sневозможно создать резервную копию информационного файла %sневозможно создать уникальное состояние конца буфераНевозможно записать заголовок таблицопасный замыкающий контекстошибка при работе с динамической памятью в copy_string()пустой автомат в dupmachine()ошибка закрытия резервной копии файла %sошибка закрытия выходного файла %sошибка при закрытии файла-каркаса %sошибка создания заголовочного файла %sошибка удаления выходного файла %sошибка записи резервной копии файла %sошибка записи в выходной файл %sфатальная ошибка разборанайдено слишком много переходов в mkxtion()неполное определение имениошибка чтения файла-каркаса %sвходные правила слишком сложные (>= %d состояний НКА)значение итераций должно быть положительнымнераспознанная директива «%top»ошибка выделения памяти в allocate_array()ошибка при выделении памяти в yy_flex_xmalloc()отсутствуют кавычкиотсутствует }имя «%s» нелепо длинноеимя определено дваждыотрицательный диапазон в классе символовпараметр «%s» должен использоваться без аргумента неоднозначный ключ «%s» параметр «%s» должен использоваться с аргументом неожиданный EOFневозможно применить правилодля использования символа %s сканеру требуется параметр -8начальное условие %s описано дваждысостояние # %4d состояние # %d допускает: состояние # %d допускает: [%d] состояние # %d: ошибка при выделении памяти для таблицы символовиспользование символьного диапазона [%c-%c] сомнительно в сканере, не чувствительном к региструслишком много правил (> %d)!замыкающий контекст используется дваждынеопределенное определение {%s}неизвестное значение «%c» для -Cнеизвестная ошибка при обработке раздела 1нераспознанный %%option: %sнераспознанная директива «%»нераспознанное правилоправила с переменным замыкающим контекстом не могут быть использованы с -f или -Fyymore() приводит к небольшому снижению производительности flex-2.5.39/po/fr.po0000644000175000017500000010022112314621665014411 0ustar srivastasrivasta# Messages français pour Flex. # Copyright © 2008, 2012 The Flex Project (msgids) # This file is distributed under the same license as the flex package. # # Dominique Boucher , 1996. # Marc Baudoin , 1996-2002. # Michel Robitaille , 2002-2008. # François-Xavier Coudert , 2008. # David Prévot , 2012. msgid "" msgstr "" "Project-Id-Version: flex 2.5.37\n" "Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2014-03-26 15:00-0400\n" "PO-Revision-Date: 2012-09-19 21:01-0400\n" "Last-Translator: David Prévot \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Lokalize 1.4\n" #: buf.c:78 msgid "Allocation of buffer to print string failed" msgstr "Échec d'allocation de tampon pour afficher une chaîne" #: buf.c:100 msgid "Allocation of buffer for line directive failed" msgstr "Échec d'allocation de tampon pour la directive de ligne" #: buf.c:177 msgid "Allocation of buffer for m4 def failed" msgstr "Échec d'allocation de tampon pour m4 défini" #: buf.c:197 msgid "Allocation of buffer for m4 undef failed" msgstr "Échec d'allocation de tampon pour m4 non défini" #: dfa.c:61 #, c-format msgid "State #%d is non-accepting -\n" msgstr "L'état nº %d n'accepte pas -\n" #: dfa.c:124 msgid "dangerous trailing context" msgstr "le contexte traîné est dangereux" #: dfa.c:166 #, c-format msgid " associated rule line numbers:" msgstr " numéros de ligne associés à la règle :" #: dfa.c:202 #, c-format msgid " out-transitions: " msgstr " transitions de sortie : " #: dfa.c:210 #, c-format msgid "" "\n" " jam-transitions: EOF " msgstr "" "\n" " transitions-bouchon : EOF " #: dfa.c:341 msgid "consistency check failed in epsclosure()" msgstr "le contrôle de cohérence a échoué dans epsclosure()" #: dfa.c:429 msgid "" "\n" "\n" "DFA Dump:\n" "\n" msgstr "" "\n" "\n" "Vidage de l'AFD :\n" "\n" #: dfa.c:604 msgid "could not create unique end-of-buffer state" msgstr "impossible de créer un seul état de fin de tampon" #: dfa.c:625 #, c-format msgid "state # %d:\n" msgstr "état nº %d :\n" #: dfa.c:785 msgid "Could not write yynxt_tbl[][]" msgstr "Impossible d'écrire yynxt_tbl[][]" #: dfa.c:1049 msgid "bad transition character detected in sympartition()" msgstr "mauvais caractère de transition détecté dans sympartition()" #: gen.c:478 msgid "" "\n" "\n" "Equivalence Classes:\n" "\n" msgstr "" "\n" "\n" "Classes d'équivalence :\n" "\n" #: gen.c:662 gen.c:691 gen.c:1215 #, c-format msgid "state # %d accepts: [%d]\n" msgstr "l'état nº %d accepte : [%d]\n" #: gen.c:1110 #, c-format msgid "state # %d accepts: " msgstr "l'état nº %d accepte : " #: gen.c:1157 msgid "Could not write yyacclist_tbl" msgstr "Impossible d'écrire yyacclist_tbl" #: gen.c:1233 msgid "Could not write yyacc_tbl" msgstr "Impossible d'écrire yyacc_tbl" #: gen.c:1248 gen.c:1633 gen.c:1656 msgid "Could not write ecstbl" msgstr "Impossible d'écrire ecstbl" #: gen.c:1271 msgid "" "\n" "\n" "Meta-Equivalence Classes:\n" msgstr "" "\n" "\n" "Classes de métaéquivalence :\n" #: gen.c:1293 msgid "Could not write yymeta_tbl" msgstr "Impossible d'écrire yymeta_tbl" #: gen.c:1354 msgid "Could not write yybase_tbl" msgstr "Impossible d'écrire yybase_tbl" #: gen.c:1388 msgid "Could not write yydef_tbl" msgstr "Impossible d'écrire yydef_tbl" #: gen.c:1428 msgid "Could not write yynxt_tbl" msgstr "Impossible d'écrire yynxt_tbl" #: gen.c:1464 msgid "Could not write yychk_tbl" msgstr "Impossible d'écrire yychk_tbl" #: gen.c:1618 gen.c:1647 msgid "Could not write ftbl" msgstr "Impossible d'écrire ftbl" #: gen.c:1624 msgid "Could not write ssltbl" msgstr "Impossible d'écrire ssltbl" #: gen.c:1675 msgid "Could not write eoltbl" msgstr "Impossible d'écrire eoltbl" #: gen.c:1735 msgid "Could not write yynultrans_tbl" msgstr "Impossible d'écrire yynultrnas_tbl" #: main.c:191 msgid "rule cannot be matched" msgstr "la règle ne peut pas correspondre" #: main.c:196 msgid "-s option given but default rule can be matched" msgstr "l'option -s est donnée mais la règle par défaut peut correspondre" #: main.c:236 msgid "Can't use -+ with -l option" msgstr "L'option -+ ne peut pas être combinée à -l" #: main.c:239 msgid "Can't use -f or -F with -l option" msgstr "Les options -f et -F ne peuvent pas être combinées à -l" #: main.c:243 msgid "Can't use --reentrant or --bison-bridge with -l option" msgstr "" "Les options --reentrant ou --bison-bridge ne peuvent pas être combinées à " "l'option -l" #: main.c:275 msgid "-Cf/-CF and -Cm don't make sense together" msgstr "-Cf ou -CF et -Cm ne peuvent pas être indiquées ensemble" #: main.c:278 msgid "-Cf/-CF and -I are incompatible" msgstr "-Cf ou -CF et -I sont incompatibles" #: main.c:282 msgid "-Cf/-CF are incompatible with lex-compatibility mode" msgstr "" "les options -Cf ou -CF ne sont pas compatibles avec le mode de compatibilité " "« lex »" #: main.c:287 msgid "-Cf and -CF are mutually exclusive" msgstr "-Cf et -CF sont mutuellement exclusifs" #: main.c:291 msgid "Can't use -+ with -CF option" msgstr "L'option -+ ne peut pas être combinée à -CF" #: main.c:294 #, c-format msgid "%array incompatible with -+ option" msgstr "%array incompatible avec l'option -+" #: main.c:299 msgid "Options -+ and --reentrant are mutually exclusive." msgstr "Les options +- et --reentrant sont mutuellement exclusives." #: main.c:302 msgid "bison bridge not supported for the C++ scanner." msgstr "bridge bison n'est pas pris en charge pour l'analyseur C++" #: main.c:357 main.c:403 #, c-format msgid "could not create %s" msgstr "impossible de créer %s" #: main.c:416 msgid "could not write tables header" msgstr "impossible d'écrire les tables d'en-tête" #: main.c:420 #, c-format msgid "can't open skeleton file %s" msgstr "impossible d'ouvrir le fichier canevas %s" #: main.c:456 msgid "allocation of macro definition failed" msgstr "échec d'allocation de définition de macro" #: main.c:504 #, c-format msgid "input error reading skeleton file %s" msgstr "erreur de lecture du fichier canevas %s" #: main.c:508 #, c-format msgid "error closing skeleton file %s" msgstr "erreur de fermeture du fichier canevas %s" #: main.c:693 #, c-format msgid "error creating header file %s" msgstr "erreur de création du fichier d'en-tête %s" #: main.c:701 #, c-format msgid "error writing output file %s" msgstr "erreur d'écriture du fichier de sortie %s" #: main.c:705 #, c-format msgid "error closing output file %s" msgstr "erreur de fermeture du fichier de sortie %s" #: main.c:709 #, c-format msgid "error deleting output file %s" msgstr "erreur d'effacement du fichier de sortie %s" #: main.c:716 #, c-format msgid "No backing up.\n" msgstr "Pas d'archivage.\n" #: main.c:720 #, c-format msgid "%d backing up (non-accepting) states.\n" msgstr "%d états d'archivage (non acceptants).\n" #: main.c:724 #, c-format msgid "Compressed tables always back up.\n" msgstr "Les tables comprimées sont toujours archivées.\n" #: main.c:727 #, c-format msgid "error writing backup file %s" msgstr "erreur d'écriture du fichier de sauvegarde %s" #: main.c:731 #, c-format msgid "error closing backup file %s" msgstr "erreur de fermeture du fichier de sauvegarde %s" #: main.c:736 #, c-format msgid "%s version %s usage statistics:\n" msgstr "« %s » version %s, statistiques d'utilisation :\n" #: main.c:739 #, c-format msgid " scanner options: -" msgstr " options de l'analyseur lexical : -" #: main.c:818 #, c-format msgid " %d/%d NFA states\n" msgstr " %d/%d états NFA\n" #: main.c:820 #, c-format msgid " %d/%d DFA states (%d words)\n" msgstr " %d/%d états AFD (%d mots)\n" #: main.c:822 #, c-format msgid " %d rules\n" msgstr " %d règles\n" #: main.c:827 #, c-format msgid " No backing up\n" msgstr " Pas d'archivage\n" #: main.c:831 #, c-format msgid " %d backing-up (non-accepting) states\n" msgstr " %d états d'archivage (si non acceptants)\n" #: main.c:836 #, c-format msgid " Compressed tables always back-up\n" msgstr " Les tables comprimées sont toujours archivées\n" #: main.c:840 #, c-format msgid " Beginning-of-line patterns used\n" msgstr " Modèles utilisés en début de ligne\n" #: main.c:842 #, c-format msgid " %d/%d start conditions\n" msgstr " %d/%d conditions de départ\n" #: main.c:846 #, c-format msgid " %d epsilon states, %d double epsilon states\n" msgstr " %d états epsilon, %d états double epsilon\n" #: main.c:850 #, c-format msgid " no character classes\n" msgstr " pas de classes de caractères\n" #: main.c:854 #, c-format msgid " %d/%d character classes needed %d/%d words of storage, %d reused\n" msgstr "" " %d/%d classes de caractères nécessaires %d/%d mots-mémoire, %d recyclés\n" #: main.c:859 #, c-format msgid " %d state/nextstate pairs created\n" msgstr " %d paires state/nextstate produites\n" #: main.c:862 #, c-format msgid " %d/%d unique/duplicate transitions\n" msgstr " %d/%d transitions uniques/dupliquées\n" #: main.c:867 #, c-format msgid " %d table entries\n" msgstr " %d entrées dans la table\n" #: main.c:875 #, c-format msgid " %d/%d base-def entries created\n" msgstr " %d/%d entrées base-def produites\n" #: main.c:879 #, c-format msgid " %d/%d (peak %d) nxt-chk entries created\n" msgstr " %d/%d (max. %d) entrées nxt-chk produites\n" #: main.c:883 #, c-format msgid " %d/%d (peak %d) template nxt-chk entries created\n" msgstr " %d/%d (max. %d) entrées de modèle nxt-chk produites\n" #: main.c:887 #, c-format msgid " %d empty table entries\n" msgstr " %d entrées vides dans la table\n" #: main.c:889 #, c-format msgid " %d protos created\n" msgstr " %d prototypes produits\n" #: main.c:892 #, c-format msgid " %d templates created, %d uses\n" msgstr " %d modèles produits, %d usages\n" #: main.c:900 #, c-format msgid " %d/%d equivalence classes created\n" msgstr " %d/%d classes d'équivalence produites\n" #: main.c:908 #, c-format msgid " %d/%d meta-equivalence classes created\n" msgstr " %d/%d classes de métaéquivalence produites\n" #: main.c:914 #, c-format msgid " %d (%d saved) hash collisions, %d DFAs equal\n" msgstr " %d (%d sauvés) collisions durant dispersion, %d AFD égaux\n" #: main.c:916 #, c-format msgid " %d sets of reallocations needed\n" msgstr " %d ensembles de réallocations nécessaires\n" #: main.c:918 #, c-format msgid " %d total table entries needed\n" msgstr " %d entrées nécessaires dans la table, au total\n" #: main.c:995 #, c-format msgid "Internal error. flexopts are malformed.\n" msgstr "Erreur interne. Les options « flexopts » sont mal composées.\n" #: main.c:1005 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "" "Exécutez « %s --help » pour obtenir des renseignements complémentaires.\n" #: main.c:1062 #, c-format msgid "unknown -C option '%c'" msgstr "l'option -C « %c » inconnue" #: main.c:1191 #, c-format msgid "%s %s\n" msgstr "%s %s\n" #: main.c:1466 msgid "fatal parse error" msgstr "erreur de lecture fatale" #: main.c:1498 #, c-format msgid "could not create backing-up info file %s" msgstr "impossible de créer le fichier d'informations d'archivage %s" #: main.c:1519 #, c-format msgid "-l AT&T lex compatibility option entails a large performance penalty\n" msgstr "" "L'option -l de compatibilité avec le « lex » d'AT&T entraîne une importante\n" "perte de performance\n" #: main.c:1522 #, c-format msgid " and may be the actual source of other reported performance penalties\n" msgstr " et peuvent être cause d'autres vices de performance observés\n" #: main.c:1528 #, c-format msgid "" "%%option yylineno entails a performance penalty ONLY on rules that can match " "newline characters\n" msgstr "" "%%option yylineno n'entraîne une importante perte de performance QUE sur\n" "les règles pouvant correspondre avec le caractère de changement de ligne\n" #: main.c:1535 #, c-format msgid "-I (interactive) entails a minor performance penalty\n" msgstr "l'option -I (interactif) entraîne une faible perte de performance\n" #: main.c:1540 #, c-format msgid "yymore() entails a minor performance penalty\n" msgstr "yymore() entraîne une faible baisse de performance\n" #: main.c:1546 #, c-format msgid "REJECT entails a large performance penalty\n" msgstr "REJECT entraîne une importante baisse de performance\n" #: main.c:1551 #, c-format msgid "Variable trailing context rules entail a large performance penalty\n" msgstr "" "Les règles de contexte traîné variable entraînent une importante baisse de\n" "performance\n" #: main.c:1563 msgid "REJECT cannot be used with -f or -F" msgstr "REJECT ne peut pas être utilisé avec -f ou -F" #: main.c:1566 #, c-format msgid "%option yylineno cannot be used with REJECT" msgstr "%option yylineno ne peut être utilisé avec REJECT" #: main.c:1569 msgid "variable trailing context rules cannot be used with -f or -F" msgstr "" "les règles de contexte traîné variable ne peuvent pas être utilisées avec\n" "-f ou -F" #: main.c:1692 #, c-format msgid "%option yyclass only meaningful for C++ scanners" msgstr "%option yyclass n'a de sens qu'avec les analyseurs C++" #: main.c:1799 #, c-format msgid "Usage: %s [OPTIONS] [FILE]...\n" msgstr "Utilisation : %s [OPTIONS] [FICHIER]...\n" #: main.c:1802 #, c-format msgid "" "Generates programs that perform pattern-matching on text.\n" "\n" "Table Compression:\n" " -Ca, --align trade off larger tables for better memory alignment\n" " -Ce, --ecs construct equivalence classes\n" " -Cf do not compress tables; use -f representation\n" " -CF do not compress tables; use -F representation\n" " -Cm, --meta-ecs construct meta-equivalence classes\n" " -Cr, --read use read() instead of stdio for scanner input\n" " -f, --full generate fast, large scanner. Same as -Cfr\n" " -F, --fast use alternate table representation. Same as -CFr\n" " -Cem default compression (same as --ecs --meta-ecs)\n" "\n" "Debugging:\n" " -d, --debug enable debug mode in scanner\n" " -b, --backup write backing-up information to %s\n" " -p, --perf-report write performance report to stderr\n" " -s, --nodefault suppress default rule to ECHO unmatched text\n" " -T, --trace %s should run in trace mode\n" " -w, --nowarn do not generate warnings\n" " -v, --verbose write summary of scanner statistics to stdout\n" "\n" "Files:\n" " -o, --outfile=FILE specify output filename\n" " -S, --skel=FILE specify skeleton file\n" " -t, --stdout write scanner on stdout instead of %s\n" " --yyclass=NAME name of C++ class\n" " --header-file=FILE create a C header file in addition to the " "scanner\n" " --tables-file[=FILE] write tables to FILE\n" "\n" "Scanner behavior:\n" " -7, --7bit generate 7-bit scanner\n" " -8, --8bit generate 8-bit scanner\n" " -B, --batch generate batch scanner (opposite of -I)\n" " -i, --case-insensitive ignore case in patterns\n" " -l, --lex-compat maximal compatibility with original lex\n" " -X, --posix-compat maximal compatibility with POSIX lex\n" " -I, --interactive generate interactive scanner (opposite of -B)\n" " --yylineno track line count in yylineno\n" "\n" "Generated code:\n" " -+, --c++ generate C++ scanner class\n" " -Dmacro[=defn] #define macro defn (default defn is '1')\n" " -L, --noline suppress #line directives in scanner\n" " -P, --prefix=STRING use STRING as prefix instead of \"yy\"\n" " -R, --reentrant generate a reentrant C scanner\n" " --bison-bridge scanner for bison pure parser.\n" " --bison-locations include yylloc support.\n" " --stdinit initialize yyin/yyout to stdin/stdout\n" " --noansi-definitions old-style function definitions\n" " --noansi-prototypes empty parameter list in prototypes\n" " --nounistd do not include \n" " --noFUNCTION do not generate a particular FUNCTION\n" "\n" "Miscellaneous:\n" " -c do-nothing POSIX option\n" " -n do-nothing POSIX option\n" " -?\n" " -h, --help produce this help message\n" " -V, --version report %s version\n" msgstr "" "Génération de programmes qui réalisent des correspondances de motif de " "texte.\n" "\n" "Compression de table :\n" " -Ca, --align négocier grandes tables pour un meilleur alignement " "mémoire\n" " -Ce, --ecs construire des équivalences de classes\n" " -Cf ne pas compresser les tables ; utiliser la " "représentation -f\n" " -CF ne pas compresser les tables ; utiliser la " "représentation -F\n" " -Cm, --meta-ecs construire des métaéquivalences de classes\n" " -Cr, --read utiliser read() au lieu de stdio pour le scanner " "d'entrée\n" " -f, --full générer rapidement, un grand scanner. Identique à -Cfr\n" " -F, --fast utiliser une table alternative de représentation. Comme -" "CFr\n" " -Cem compression par défaut (identique à --ecs --meta-ecs)\n" "\n" "Mise au point (mode débogage) :\n" " -d, --debug activer le mode débogage du scanner\n" " -b, --backup archiver les informations vers %s\n" " -p, --perf-report produire un rapport de performance sur stderr\n" " -s, --nodefault supprimer les règles par défaut pour\n" " le texte non correspondant par ECHO\n" " -T, --trace %s devrait s'exécuter en mode trace\n" " -w, --nowarn ne pas générer d'avertissements\n" " -v, --verbose produire des statistiques du scanner sur " "stdout\n" "\n" "Fichiers :\n" " -o, --outfile=FICHIER indiquer un nom de fichier de sortie\n" " -S, --skel=FICHIER indiquer le fichier du squelette\n" " -t, --stdout produire le scanner sur stdout au lieu de %s\n" " --yyclass=NOM nom de la classe C++\n" " --header-file=FICHIER créer le fichier d'en-tête C en plus du " "scanner\n" " --tables-file[=FICHIER] écrire les tables dans le FICHIER\n" "\n" "Comportement du scanner :\n" " -7, --7bit générer un scanner de 7 bits\n" " -8, --8bit générer un scanner de 8 bits\n" " -B, --batch générer un scanner par lot (contraire de -I)\n" " -i, --case-insensitive ignorer la casse dans les patrons\n" " -l, --lex-compat établir une compatibilité maximale avec lex " "d'origine\n" " -X, --posix-compat établir une compatibilité maximale avec lex de " "POSIX\n" " -I, --interactive générer un scanner interactif (contraire de -B)\n" " --yylineno suivre le compte de lignes dans yylineno\n" "\n" "Code généré :\n" " -+, --c++ générer la classe C++ du scanner\n" " -Dmacro[=def] définition macro #define (« 1 » par défaut)\n" " -L, --noline supprimer les directives #line dans le scanner\n" " -P, --prefix=CHAÎNE utiliser la CHAÎNE comme préfixe au lieu de " "« yy »\n" " -R, --reentrant générer un scanner C en code rentrant\n" " --bison-bridge scanner pour l'analyseur pur bison\n" " --bison-locations inclure la prise en charge de yylloc.\n" " --stdinit initialiser yyin/yyout à stdin/stdout\n" " --nounistd ne pas inclure \n" " --noFONCTION ne pas générer une FONCTION particulière\n" "\n" "Divers :\n" " -c ne pas traiter une option POSIX\n" " -n ne pas traiter une option POSIX\n" " -?\n" " -h, --help afficher l'aide-mémoire\n" " -V, --version afficher la version %s du logiciel\n" #: misc.c:65 msgid "allocation of sko_stack failed" msgstr "échec d'allocation de sko_stack" #: misc.c:102 misc.c:128 #, c-format msgid "name \"%s\" ridiculously long" msgstr "le nom « %s » est ridiculement long" #: misc.c:177 msgid "memory allocation failed in allocate_array()" msgstr "échec d'allocation mémoire dans allocate_array()" #: misc.c:230 #, c-format msgid "bad character '%s' detected in check_char()" msgstr "mauvais caractère « %s » détecté dans check_char()" #: misc.c:235 #, c-format msgid "scanner requires -8 flag to use the character %s" msgstr "" "l'analyseur nécessite l'option -8 pour pouvoir utiliser le caractère %s" #: misc.c:268 msgid "dynamic memory failure in copy_string()" msgstr "échec de mémoire dynamique dans copy_string()" #: misc.c:367 #, c-format msgid "%s: fatal internal error, %s\n" msgstr "%s : erreur interne fatale, %s\n" #: misc.c:803 msgid "attempt to increase array size failed" msgstr "échec de la tentative d'augmenter la taille du tableau" #: misc.c:930 msgid "bad line in skeleton file" msgstr "mauvaise ligne dans le fichier canevas" #: misc.c:979 msgid "memory allocation failed in yy_flex_xmalloc()" msgstr "échec d'allocation mémoire dans yy_flex_xmalloc()" #: nfa.c:104 #, c-format msgid "" "\n" "\n" "********** beginning dump of nfa with start state %d\n" msgstr "" "\n" "\n" "********** début du vidage de nfa avec %d pour état de départ\n" #: nfa.c:115 #, c-format msgid "state # %4d\t" msgstr "état nº %4d\t" #: nfa.c:130 #, c-format msgid "********** end of dump\n" msgstr "********** fin du vidage\n" #: nfa.c:174 msgid "empty machine in dupmachine()" msgstr "machine vide dans dupmachine()" #: nfa.c:240 #, c-format msgid "Variable trailing context rule at line %d\n" msgstr "Règle de contexte traîné variable à la ligne %d\n" #: nfa.c:364 msgid "bad state type in mark_beginning_as_normal()" msgstr "mauvais type d'état dans mark_beginning_as_normal()" #: nfa.c:609 #, c-format msgid "input rules are too complicated (>= %d NFA states)" msgstr "les règles d'entrée sont trop compliquées (>= %d états NFA)" #: nfa.c:688 msgid "found too many transitions in mkxtion()" msgstr "il y a trop de transitions dans mkxtion()" #: nfa.c:714 #, c-format msgid "too many rules (> %d)!" msgstr "trop de règles (> %d)." #: parse.y:159 msgid "unknown error processing section 1" msgstr "erreur inconnue de traitement à la section 1" #: parse.y:184 parse.y:351 msgid "bad start condition list" msgstr "mauvaise liste de conditions de départ" #: parse.y:315 msgid "unrecognized rule" msgstr "règle non reconnue" #: parse.y:434 parse.y:447 parse.y:516 msgid "trailing context used twice" msgstr "contexte traîné utilisé deux fois" #: parse.y:552 parse.y:562 parse.y:635 parse.y:645 msgid "bad iteration values" msgstr "valeurs d'itération erronée" #: parse.y:580 parse.y:598 parse.y:663 parse.y:681 msgid "iteration value must be positive" msgstr "la valeur d'itération doit être positive" #: parse.y:804 parse.y:814 #, c-format msgid "the character range [%c-%c] is ambiguous in a case-insensitive scanner" msgstr "" "l'étendue de caractères [%c-%c] est ambiguë pour un scanner insensible à la " "casse" #: parse.y:819 msgid "negative range in character class" msgstr "plage négative dans la classe de caractères" #: parse.y:916 msgid "[:^lower:] is ambiguous in case insensitive scanner" msgstr "[:^lower:] est ambigu pour un scanner insensible à la casse" #: parse.y:922 msgid "[:^upper:] ambiguous in case insensitive scanner" msgstr "[:^upper:] est ambigu pour un scanner insensible à la casse" #: scan.l:75 scan.l:618 scan.l:676 msgid "Input line too long\n" msgstr "ligne d'entrée trop longue\n" #: scan.l:161 #, c-format msgid "malformed '%top' directive" msgstr "directive « %top » mal composée" #: scan.l:183 #, no-c-format msgid "unrecognized '%' directive" msgstr "directive « % » inconnue" #: scan.l:192 msgid "Definition name too long\n" msgstr "Nom de définition trop long\n" #: scan.l:284 msgid "Unmatched '{'" msgstr "« { » non apparié" #: scan.l:300 #, c-format msgid "Definition value for {%s} too long\n" msgstr "Valeur de définition trop longue pour {%s}\n" #: scan.l:317 msgid "incomplete name definition" msgstr "définition de nom incomplète" #: scan.l:443 msgid "Option line too long\n" msgstr "Ligne d'option trop longue\n" #: scan.l:451 #, c-format msgid "unrecognized %%option: %s" msgstr "%%option non reconnue : %s" #: scan.l:633 scan.l:800 msgid "bad character class" msgstr "mauvaise classe de caractères" #: scan.l:683 #, c-format msgid "undefined definition {%s}" msgstr "définition {%s} non définie" #: scan.l:755 #, c-format msgid "bad : %s" msgstr "mauvaise  : %s" #: scan.l:768 msgid "missing quote" msgstr "guillemet manquant" #: scan.l:834 #, c-format msgid "bad character class expression: %s" msgstr "mauvaise expression de classe de caractères : %s" #: scan.l:856 msgid "bad character inside {}'s" msgstr "mauvais caractère entre accolades « {} »" #: scan.l:862 msgid "missing }" msgstr "« } » manquante" #: scan.l:940 msgid "EOF encountered inside an action" msgstr "Fin de fichier rencontrée à l'intérieur d'une action" #: scan.l:945 msgid "EOF encountered inside pattern" msgstr "Fin de fichier rencontrée à l'intérieur d'un modèle" #: scan.l:967 #, c-format msgid "bad character: %s" msgstr "mauvais caractère : %s" #: scan.l:996 #, c-format msgid "can't open %s" msgstr "impossible d'ouvrir %s" #: scanopt.c:291 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Utilisation : %s [OPTIONS]...\n" #: scanopt.c:564 #, c-format msgid "option `%s' doesn't allow an argument\n" msgstr "l'option « %s » ne permet pas d'argument\n" #: scanopt.c:569 #, c-format msgid "option `%s' requires an argument\n" msgstr "l'option « %s » nécessite un argument\n" #: scanopt.c:573 #, c-format msgid "option `%s' is ambiguous\n" msgstr "l'option « %s » est ambiguë\n" #: scanopt.c:577 #, c-format msgid "Unrecognized option `%s'\n" msgstr "Option « %s » non reconnue\n" #: scanopt.c:581 #, c-format msgid "Unknown error=(%d)\n" msgstr "Erreur inconnue=(%d)\n" #: sym.c:100 msgid "symbol table memory allocation failed" msgstr "échec d'allocation mémoire de la table des symboles" #: sym.c:202 msgid "name defined twice" msgstr "nom défini deux fois" #: sym.c:253 #, c-format msgid "start condition %s declared twice" msgstr "condition de départ %s déclarée deux fois" #: yylex.c:56 msgid "premature EOF" msgstr "fin de fichier inattendue" #: yylex.c:198 #, c-format msgid "End Marker\n" msgstr "Marqueur de fin\n" #: yylex.c:204 #, c-format msgid "*Something Weird* - tok: %d val: %d\n" msgstr "*Très bizarre* — tok : %d val : %d\n" #~ msgid "consistency check failed in symfollowset" #~ msgstr "le contrôle de cohérence a échoué dans symfollowset()" #~ msgid "Can't specify header option if writing to stdout." #~ msgstr "Ne peut spécifier l'option d'en-tête si en écriture sur stdout" #~ msgid "unknown -R option '%c'" #~ msgstr "le paramètre « %c » de l'option -R est inconnu" #~ msgid "-Cf/-CF and %option yylineno are incompatible" #~ msgstr "-Cf/-CF et %option yylineno sont incompatibles" #~ msgid "" #~ "For usage, try\n" #~ "\t%s --help\n" #~ msgstr "" #~ "Pour de l'aide conernant l'usage, faites\n" #~ "\t%s --help\n" #~ msgid "-P flag must be given separately" #~ msgstr "l'option -P doit être utilisée séparément" #~ msgid "-o flag must be given separately" #~ msgstr "l'option -o doit être utilisée séparément" #~ msgid "-S flag must be given separately" #~ msgstr "l'option -S doit être utilisée séparément" #~ msgid "-C flag must be given separately" #~ msgstr "L'option -C doit être utilisée séparément" #~ msgid "" #~ "%s [-bcdfhilnpstvwBFILTV78+? -C[aefFmr] -ooutput -Pprefix -Sskeleton]\n" #~ msgstr "" #~ "%s [-bcdfhilnpstvwBFILTV78+? -C[aefFmr] -osortie -Ppréfixe -Scanevas]\n" #~ msgid "\t[--help --version] [file ...]\n" #~ msgstr "\t[--help --version] [fichier ...]\n" #~ msgid "\t-b generate backing-up information to %s\n" #~ msgstr "\t-b génère des informations de retour arrière dans %s\n" #~ msgid "\t-c do-nothing POSIX option\n" #~ msgstr "\t-c option POSIX pour ne rien faire\n" #~ msgid "\t-d turn on debug mode in generated scanner\n" #~ msgstr "\t-d active le mode de déverminage dans l'analyseur généré\n" #~ msgid "\t-f generate fast, large scanner\n" #~ msgstr "\t-f génère un analyseur rapide et volumineux\n" #~ msgid "\t-h produce this help message\n" #~ msgstr "\t-h affiche ce message d'aide\n" #~ msgid "\t-i generate case-insensitive scanner\n" #~ msgstr "\t-i génère un analyseur insensible à la casse\n" #~ msgid "\t-l maximal compatibility with original lex\n" #~ msgstr "\t-l compatibilité maximale avec le « lex » original\n" #~ msgid "\t-n do-nothing POSIX option\n" #~ msgstr "\t-n option POSIX pour ne rien faire\n" #~ msgid "\t-p generate performance report to stderr\n" #~ msgstr "\t-p affiche un rapport de performance sur stderr\n" #~ msgid "\t-s suppress default rule to ECHO unmatched text\n" #~ msgstr "" #~ "\t-s supprime la règle par défaut qui AFFICHE le texte non reconnu\n" #~ msgid "\t-t write generated scanner on stdout instead of %s\n" #~ msgstr "" #~ "\t-t écrit l'analyseur généré sur la sortie standard au lieu de %s\n" #~ msgid "\t-v write summary of scanner statistics to f\n" #~ msgstr "\t-v écrit un résumé des statistiques de l'analyseur sur f\n" #~ msgid "\t-w do not generate warnings\n" #~ msgstr "\t-w ne génère pas d'avertissements\n" #~ msgid "\t-B generate batch scanner (opposite of -I)\n" #~ msgstr "\t-B génère un analyseur non-interactif (inverse de -I)\n" #~ msgid "\t-F use alternative fast scanner representation\n" #~ msgstr "\t-F produit une représentation plus efficace de l'analyseur\n" #~ msgid "\t-I generate interactive scanner (opposite of -B)\n" #~ msgstr "\t-I génère un analyseur interactif (inverse de -B)\n" #~ msgid "\t-L suppress #line directives in scanner\n" #~ msgstr "\t-L supprime les directives #line dans l'analyseur\n" #~ msgid "\t-T %s should run in trace mode\n" #~ msgstr "\t-T %s devrait fonctionner en mode trace\n" #~ msgid "\t-V report %s version\n" #~ msgstr "\t-V indique la version de « %s »\n" #~ msgid "\t-7 generate 7-bit scanner\n" #~ msgstr "\t-7 génère un analyseur 7 bits\n" #~ msgid "\t-8 generate 8-bit scanner\n" #~ msgstr "\t-8 génère un analyseur 8 bits\n" #~ msgid "\t-+ generate C++ scanner class\n" #~ msgstr "\t-+ génère un analyseur sous forme de classe C++\n" #~ msgid "\t-? produce this help message\n" #~ msgstr "\t-? affiche ce message d'aide\n" #~ msgid "\t-C specify degree of table compression (default is -Cem):\n" #~ msgstr "" #~ "\t-C spécifie le degré de compression des tables (-Cem par défaut) :\n" #~ msgid "\t\t-Ca trade off larger tables for better memory alignment\n" #~ msgstr "" #~ "\t\t-Ca produit des tables plus encombrantes pour un meilleur\n" #~ "alignement en mémoire\n" #~ msgid "\t\t-Ce construct equivalence classes\n" #~ msgstr "\t\t-Ce construit des classes d'équivalence\n" #~ msgid "\t\t-Cf do not compress scanner tables; use -f representation\n" #~ msgstr "" #~ "\t\t-Cf ne comprime pas les tables de l'analyseur ; utilise la " #~ "représentation -f\n" #~ msgid "\t\t-CF do not compress scanner tables; use -F representation\n" #~ msgstr "" #~ "\t\t-CF ne comprime pas les tables de l'analyseur ; utilise la " #~ "représentation -F\n" #~ msgid "\t\t-Cm construct meta-equivalence classes\n" #~ msgstr "\t\t-Cm construit des classes de meta-équivalence\n" #~ msgid "\t\t-Cr use read() instead of stdio for scanner input\n" #~ msgstr "" #~ "\t\t-Cr utilise read() au lieu de stdio pour l'entrée de l'analyseur\n" #~ msgid "\t-o specify output filename\n" #~ msgstr "\t-o spécifie le nom du fichier de sortie\n" #~ msgid "\t-P specify scanner prefix other than \"yy\"\n" #~ msgstr "\t-P spécifie un préfixe d'analyseur autre que \"yy\"\n" #~ msgid "\t-S specify skeleton file\n" #~ msgstr "\t-S spécifie le fichier canevas\n" #~ msgid "\t--help produce this help message\n" #~ msgstr "\t--help affiche ce message d'aide\n" #~ msgid "\t--version report %s version\n" #~ msgstr "\t--version indique la version de « %s »\n" flex-2.5.39/po/en@quot.gmo0000644000175000017500000005041212314621665015567 0ustar srivastasrivastaT 7  AOh/'.> S"_#  *3'[z!C$)C%]"#FOn`"&0,+] $" )/Y4y5E/*.Z&(+"6>!u".Lg #' Kl : #(#$ $26$#i$+$$&$$ % %:%Y%*q%C%3%0&%E&k&%&&+&&" '-'G'Y'n'','3'/( 2(@((\((((+(( )'')O)m)))))**<*'N*v*$*2* * +,%+-R+ + +++!+&+,!*, L,Z,0q,!, ,,, -% -F3-z----"-..6.<H.-.|.700 h0v000/0'01.61e1 z1"1#11 1 2*#23N222!2C2$3)@3j3%3"3#3344F/4v44`4" 5&,50S5+55 555$6"36)V664656E 7/Q7.7&7(7+8,8I86e8!8"8889$9;9U9s999999:4:#N: r:: :> :E(F;FKF2aF#F+FF*G-GAGSGqGG*GCG3H0KH%|HH%HH/I1I"EIhIIIII,I3 J/=J mJ{J(JJ(J+J)KGK'bKKKKKLL=LZLwL'LL$L2L $MEM,dM-M M MMM! N*,NWN%uN NN0N!N O O5O OO%\OFOOOOP"1PTPnPP<P-P%ZC9F"1]dB!)Um:&aT -+@Hoiz[8D}fn2;YOlc<NR=(_r^P *`J,06M Lx{' ?bIe~V/A GwWjQp3t7y4S v>Kq\|sg5hXEu.k#$ ********** beginning dump of nfa with start state %d DFA Dump: Equivalence Classes: Meta-Equivalence Classes: jam-transitions: EOF %d (%d saved) hash collisions, %d DFAs equal %d backing-up (non-accepting) states %d empty table entries %d epsilon states, %d double epsilon states %d protos created %d rules %d sets of reallocations needed %d state/nextstate pairs created %d table entries %d templates created, %d uses %d total table entries needed %d/%d (peak %d) nxt-chk entries created %d/%d (peak %d) template nxt-chk entries created %d/%d DFA states (%d words) %d/%d NFA states %d/%d base-def entries created %d/%d character classes needed %d/%d words of storage, %d reused %d/%d equivalence classes created %d/%d meta-equivalence classes created %d/%d start conditions %d/%d unique/duplicate transitions Beginning-of-line patterns used Compressed tables always back-up No backing up no character classes scanner options: - and may be the actual source of other reported performance penalties associated rule line numbers: out-transitions: %%option yylineno entails a performance penalty ONLY on rules that can match newline characters %array incompatible with -+ option%d backing up (non-accepting) states. %option yyclass only meaningful for C++ scanners%option yylineno cannot be used with REJECT%s %s %s version %s usage statistics: %s: fatal internal error, %s ********** end of dump *Something Weird* - tok: %d val: %d -Cf and -CF are mutually exclusive-Cf/-CF and -Cm don't make sense together-Cf/-CF and -I are incompatible-Cf/-CF are incompatible with lex-compatibility mode-I (interactive) entails a minor performance penalty -l AT&T lex compatibility option entails a large performance penalty -s option given but default rule can be matchedAllocation of buffer for line directive failedAllocation of buffer for m4 def failedAllocation of buffer for m4 undef failedAllocation of buffer to print string failedCan't use -+ with -CF optionCan't use -+ with -l optionCan't use --reentrant or --bison-bridge with -l optionCan't use -f or -F with -l optionCompressed tables always back up. Could not write ecstblCould not write eoltblCould not write ftblCould not write ssltblCould not write yyacc_tblCould not write yyacclist_tblCould not write yybase_tblCould not write yychk_tblCould not write yydef_tblCould not write yymeta_tblCould not write yynultrans_tblCould not write yynxt_tblCould not write yynxt_tbl[][]Definition name too long Definition value for {%s} too long EOF encountered inside an actionEOF encountered inside patternEnd Marker Generates programs that perform pattern-matching on text. Table Compression: -Ca, --align trade off larger tables for better memory alignment -Ce, --ecs construct equivalence classes -Cf do not compress tables; use -f representation -CF do not compress tables; use -F representation -Cm, --meta-ecs construct meta-equivalence classes -Cr, --read use read() instead of stdio for scanner input -f, --full generate fast, large scanner. Same as -Cfr -F, --fast use alternate table representation. Same as -CFr -Cem default compression (same as --ecs --meta-ecs) Debugging: -d, --debug enable debug mode in scanner -b, --backup write backing-up information to %s -p, --perf-report write performance report to stderr -s, --nodefault suppress default rule to ECHO unmatched text -T, --trace %s should run in trace mode -w, --nowarn do not generate warnings -v, --verbose write summary of scanner statistics to stdout Files: -o, --outfile=FILE specify output filename -S, --skel=FILE specify skeleton file -t, --stdout write scanner on stdout instead of %s --yyclass=NAME name of C++ class --header-file=FILE create a C header file in addition to the scanner --tables-file[=FILE] write tables to FILE Scanner behavior: -7, --7bit generate 7-bit scanner -8, --8bit generate 8-bit scanner -B, --batch generate batch scanner (opposite of -I) -i, --case-insensitive ignore case in patterns -l, --lex-compat maximal compatibility with original lex -X, --posix-compat maximal compatibility with POSIX lex -I, --interactive generate interactive scanner (opposite of -B) --yylineno track line count in yylineno Generated code: -+, --c++ generate C++ scanner class -Dmacro[=defn] #define macro defn (default defn is '1') -L, --noline suppress #line directives in scanner -P, --prefix=STRING use STRING as prefix instead of "yy" -R, --reentrant generate a reentrant C scanner --bison-bridge scanner for bison pure parser. --bison-locations include yylloc support. --stdinit initialize yyin/yyout to stdin/stdout --noansi-definitions old-style function definitions --noansi-prototypes empty parameter list in prototypes --nounistd do not include --noFUNCTION do not generate a particular FUNCTION Miscellaneous: -c do-nothing POSIX option -n do-nothing POSIX option -? -h, --help produce this help message -V, --version report %s version Input line too long Internal error. flexopts are malformed. No backing up. Option line too long Options -+ and --reentrant are mutually exclusive.REJECT cannot be used with -f or -FREJECT entails a large performance penalty State #%d is non-accepting - Try `%s --help' for more information. Unknown error=(%d) Unmatched '{'Unrecognized option `%s' Usage: %s [OPTIONS] [FILE]... Usage: %s [OPTIONS]... Variable trailing context rule at line %d Variable trailing context rules entail a large performance penalty [:^lower:] is ambiguous in case insensitive scanner[:^upper:] ambiguous in case insensitive scannerallocation of macro definition failedallocation of sko_stack failedattempt to increase array size failedbad : %sbad character '%s' detected in check_char()bad character classbad character class expression: %sbad character inside {}'sbad character: %sbad iteration valuesbad line in skeleton filebad start condition listbad state type in mark_beginning_as_normal()bad transition character detected in sympartition()bison bridge not supported for the C++ scanner.can't open %scan't open skeleton file %sconsistency check failed in epsclosure()could not create %scould not create backing-up info file %scould not create unique end-of-buffer statecould not write tables headerdangerous trailing contextdynamic memory failure in copy_string()empty machine in dupmachine()error closing backup file %serror closing output file %serror closing skeleton file %serror creating header file %serror deleting output file %serror writing backup file %serror writing output file %sfatal parse errorfound too many transitions in mkxtion()incomplete name definitioninput error reading skeleton file %sinput rules are too complicated (>= %d NFA states)iteration value must be positivemalformed '%top' directivememory allocation failed in allocate_array()memory allocation failed in yy_flex_xmalloc()missing quotemissing }name "%s" ridiculously longname defined twicenegative range in character classoption `%s' doesn't allow an argument option `%s' is ambiguous option `%s' requires an argument premature EOFrule cannot be matchedscanner requires -8 flag to use the character %sstart condition %s declared twicestate # %4d state # %d accepts: state # %d accepts: [%d] state # %d: symbol table memory allocation failedthe character range [%c-%c] is ambiguous in a case-insensitive scannertoo many rules (> %d)!trailing context used twiceundefined definition {%s}unknown -C option '%c'unknown error processing section 1unrecognized %%option: %sunrecognized '%' directiveunrecognized rulevariable trailing context rules cannot be used with -f or -Fyymore() entails a minor performance penalty Project-Id-Version: flex 2.5.39 Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net POT-Creation-Date: 2014-03-26 15:00-0400 PO-Revision-Date: 2014-03-26 15:00-0400 Last-Translator: Automatically generated Language-Team: none Language: en@quot MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); ********** beginning dump of nfa with start state %d DFA Dump: Equivalence Classes: Meta-Equivalence Classes: jam-transitions: EOF %d (%d saved) hash collisions, %d DFAs equal %d backing-up (non-accepting) states %d empty table entries %d epsilon states, %d double epsilon states %d protos created %d rules %d sets of reallocations needed %d state/nextstate pairs created %d table entries %d templates created, %d uses %d total table entries needed %d/%d (peak %d) nxt-chk entries created %d/%d (peak %d) template nxt-chk entries created %d/%d DFA states (%d words) %d/%d NFA states %d/%d base-def entries created %d/%d character classes needed %d/%d words of storage, %d reused %d/%d equivalence classes created %d/%d meta-equivalence classes created %d/%d start conditions %d/%d unique/duplicate transitions Beginning-of-line patterns used Compressed tables always back-up No backing up no character classes scanner options: - and may be the actual source of other reported performance penalties associated rule line numbers: out-transitions: %%option yylineno entails a performance penalty ONLY on rules that can match newline characters %array incompatible with -+ option%d backing up (non-accepting) states. %option yyclass only meaningful for C++ scanners%option yylineno cannot be used with REJECT%s %s %s version %s usage statistics: %s: fatal internal error, %s ********** end of dump *Something Weird* - tok: %d val: %d -Cf and -CF are mutually exclusive-Cf/-CF and -Cm don't make sense together-Cf/-CF and -I are incompatible-Cf/-CF are incompatible with lex-compatibility mode-I (interactive) entails a minor performance penalty -l AT&T lex compatibility option entails a large performance penalty -s option given but default rule can be matchedAllocation of buffer for line directive failedAllocation of buffer for m4 def failedAllocation of buffer for m4 undef failedAllocation of buffer to print string failedCan't use -+ with -CF optionCan't use -+ with -l optionCan't use --reentrant or --bison-bridge with -l optionCan't use -f or -F with -l optionCompressed tables always back up. Could not write ecstblCould not write eoltblCould not write ftblCould not write ssltblCould not write yyacc_tblCould not write yyacclist_tblCould not write yybase_tblCould not write yychk_tblCould not write yydef_tblCould not write yymeta_tblCould not write yynultrans_tblCould not write yynxt_tblCould not write yynxt_tbl[][]Definition name too long Definition value for {%s} too long EOF encountered inside an actionEOF encountered inside patternEnd Marker Generates programs that perform pattern-matching on text. Table Compression: -Ca, --align trade off larger tables for better memory alignment -Ce, --ecs construct equivalence classes -Cf do not compress tables; use -f representation -CF do not compress tables; use -F representation -Cm, --meta-ecs construct meta-equivalence classes -Cr, --read use read() instead of stdio for scanner input -f, --full generate fast, large scanner. Same as -Cfr -F, --fast use alternate table representation. Same as -CFr -Cem default compression (same as --ecs --meta-ecs) Debugging: -d, --debug enable debug mode in scanner -b, --backup write backing-up information to %s -p, --perf-report write performance report to stderr -s, --nodefault suppress default rule to ECHO unmatched text -T, --trace %s should run in trace mode -w, --nowarn do not generate warnings -v, --verbose write summary of scanner statistics to stdout Files: -o, --outfile=FILE specify output filename -S, --skel=FILE specify skeleton file -t, --stdout write scanner on stdout instead of %s --yyclass=NAME name of C++ class --header-file=FILE create a C header file in addition to the scanner --tables-file[=FILE] write tables to FILE Scanner behavior: -7, --7bit generate 7-bit scanner -8, --8bit generate 8-bit scanner -B, --batch generate batch scanner (opposite of -I) -i, --case-insensitive ignore case in patterns -l, --lex-compat maximal compatibility with original lex -X, --posix-compat maximal compatibility with POSIX lex -I, --interactive generate interactive scanner (opposite of -B) --yylineno track line count in yylineno Generated code: -+, --c++ generate C++ scanner class -Dmacro[=defn] #define macro defn (default defn is '1') -L, --noline suppress #line directives in scanner -P, --prefix=STRING use STRING as prefix instead of “yy” -R, --reentrant generate a reentrant C scanner --bison-bridge scanner for bison pure parser. --bison-locations include yylloc support. --stdinit initialize yyin/yyout to stdin/stdout --noansi-definitions old-style function definitions --noansi-prototypes empty parameter list in prototypes --nounistd do not include --noFUNCTION do not generate a particular FUNCTION Miscellaneous: -c do-nothing POSIX option -n do-nothing POSIX option -? -h, --help produce this help message -V, --version report %s version Input line too long Internal error. flexopts are malformed. No backing up. Option line too long Options -+ and --reentrant are mutually exclusive.REJECT cannot be used with -f or -FREJECT entails a large performance penalty State #%d is non-accepting - Try ‘%s --help’ for more information. Unknown error=(%d) Unmatched ‘{’Unrecognized option ‘%s’ Usage: %s [OPTIONS] [FILE]... Usage: %s [OPTIONS]... Variable trailing context rule at line %d Variable trailing context rules entail a large performance penalty [:^lower:] is ambiguous in case insensitive scanner[:^upper:] ambiguous in case insensitive scannerallocation of macro definition failedallocation of sko_stack failedattempt to increase array size failedbad : %sbad character ‘%s’ detected in check_char()bad character classbad character class expression: %sbad character inside {}'sbad character: %sbad iteration valuesbad line in skeleton filebad start condition listbad state type in mark_beginning_as_normal()bad transition character detected in sympartition()bison bridge not supported for the C++ scanner.can't open %scan't open skeleton file %sconsistency check failed in epsclosure()could not create %scould not create backing-up info file %scould not create unique end-of-buffer statecould not write tables headerdangerous trailing contextdynamic memory failure in copy_string()empty machine in dupmachine()error closing backup file %serror closing output file %serror closing skeleton file %serror creating header file %serror deleting output file %serror writing backup file %serror writing output file %sfatal parse errorfound too many transitions in mkxtion()incomplete name definitioninput error reading skeleton file %sinput rules are too complicated (>= %d NFA states)iteration value must be positivemalformed ‘%top’ directivememory allocation failed in allocate_array()memory allocation failed in yy_flex_xmalloc()missing quotemissing }name “%s” ridiculously longname defined twicenegative range in character classoption ‘%s’ doesn't allow an argument option ‘%s’ is ambiguous option ‘%s’ requires an argument premature EOFrule cannot be matchedscanner requires -8 flag to use the character %sstart condition %s declared twicestate # %4d state # %d accepts: state # %d accepts: [%d] state # %d: symbol table memory allocation failedthe character range [%c-%c] is ambiguous in a case-insensitive scannertoo many rules (> %d)!trailing context used twiceundefined definition {%s}unknown -C option ‘%c’unknown error processing section 1unrecognized %%option: %sunrecognized ‘%’ directiveunrecognized rulevariable trailing context rules cannot be used with -f or -Fyymore() entails a minor performance penalty flex-2.5.39/po/da.po0000644000175000017500000006124312314621664014377 0ustar srivastasrivasta# Danish messages for flex. # Copyright (C) 2007 The Flex Project (msgids) # This file is distributed under the same license as the flex package. # Johan Linde , 1996. # Keld Simonsen , 2000-2011. # msgid "" msgstr "" "Project-Id-Version: flex-2.5.35\n" "Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2014-03-26 15:00-0400\n" "PO-Revision-Date: 2011-01-11 09:12+0100\n" "Last-Translator: Keld Simonsen \n" "Language-Team: Danish \n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8-bit\n" #: buf.c:78 msgid "Allocation of buffer to print string failed" msgstr "" #: buf.c:100 msgid "Allocation of buffer for line directive failed" msgstr "" #: buf.c:177 msgid "Allocation of buffer for m4 def failed" msgstr "" #: buf.c:197 msgid "Allocation of buffer for m4 undef failed" msgstr "" #: dfa.c:61 #, c-format msgid "State #%d is non-accepting -\n" msgstr "Tilstand %d er ikke-accepterende -\n" #: dfa.c:124 msgid "dangerous trailing context" msgstr "farlig efterflgende kontekst" #: dfa.c:166 #, c-format msgid " associated rule line numbers:" msgstr " linjenummer for associeret regel:" #: dfa.c:202 #, c-format msgid " out-transitions: " msgstr " ud-overgange: " #: dfa.c:210 #, c-format msgid "" "\n" " jam-transitions: EOF " msgstr "" "\n" " stopovergange: filslut " #: dfa.c:341 msgid "consistency check failed in epsclosure()" msgstr "konsistenskontrollen mislykkedes i epsclosure()" #: dfa.c:429 msgid "" "\n" "\n" "DFA Dump:\n" "\n" msgstr "" "\n" "\n" "DFA-udskrift:\n" "\n" #: dfa.c:604 msgid "could not create unique end-of-buffer state" msgstr "kunne ikke oprette en unik buffersluttilstand" #: dfa.c:625 #, c-format msgid "state # %d:\n" msgstr "tilstand %d:\n" # Dette er ju helt sjukt. Har buggrapporteret dette at det br # erstatas med %s #: dfa.c:785 msgid "Could not write yynxt_tbl[][]" msgstr "Kunne ikke skrive yynxt_tbl[][]" #: dfa.c:1049 msgid "bad transition character detected in sympartition()" msgstr "forkert overgangstegn fundet i sympartition()" #: gen.c:478 msgid "" "\n" "\n" "Equivalence Classes:\n" "\n" msgstr "" "\n" "\n" "kvivalensklasser:\n" "\n" #: gen.c:662 gen.c:691 gen.c:1215 #, c-format msgid "state # %d accepts: [%d]\n" msgstr "tilstand %d accepterer: [%d]\n" #: gen.c:1110 #, c-format msgid "state # %d accepts: " msgstr "tilstand %d accepterer: " #: gen.c:1157 msgid "Could not write yyacclist_tbl" msgstr "Kunne ikke skrive yyacclist_tbl" #: gen.c:1233 msgid "Could not write yyacc_tbl" msgstr "Kunne ikke skrive yyacc_tbl" #: gen.c:1248 gen.c:1633 gen.c:1656 msgid "Could not write ecstbl" msgstr "Kunne ikke skrive esctbl" #: gen.c:1271 msgid "" "\n" "\n" "Meta-Equivalence Classes:\n" msgstr "" "\n" "\n" "Meta-kvivalensklasser:\n" #: gen.c:1293 msgid "Could not write yymeta_tbl" msgstr "Kunne ikke skrive yymeta_tbl" #: gen.c:1354 msgid "Could not write yybase_tbl" msgstr "kunne ikke oprette yybase_tbl" #: gen.c:1388 msgid "Could not write yydef_tbl" msgstr "Kunne ikke oprette yydef_tbl" #: gen.c:1428 msgid "Could not write yynxt_tbl" msgstr "Kunne ikke skrive yynxt_tbl" #: gen.c:1464 msgid "Could not write yychk_tbl" msgstr "Kunne ikke skrive yychk_tbl" #: gen.c:1618 gen.c:1647 msgid "Could not write ftbl" msgstr "Kunne ikke skrive ftbl" #: gen.c:1624 msgid "Could not write ssltbl" msgstr "Kunne ikke skrive ssltbl" #: gen.c:1675 msgid "Could not write eoltbl" msgstr "Kunne ikke skrive eoltbl" #: gen.c:1735 msgid "Could not write yynultrans_tbl" msgstr "Kunne ikke skrive yynultrans_tbl" #: main.c:191 msgid "rule cannot be matched" msgstr "reglen kan ikke matches" #: main.c:196 msgid "-s option given but default rule can be matched" msgstr "flaget -s angivet, men standardreglen kan flges" #: main.c:236 msgid "Can't use -+ with -l option" msgstr "-+ kan ikke bruges sammen med flaget -l" #: main.c:239 msgid "Can't use -f or -F with -l option" msgstr "-f eller -F kan ikke bruges sammen med -l" #: main.c:243 msgid "Can't use --reentrant or --bison-bridge with -l option" msgstr "Kan ikke bruge --reentrant eller --bison-bridge sammen med flaget -l" #: main.c:275 msgid "-Cf/-CF and -Cm don't make sense together" msgstr "-Cf/-CF og -Cm kan ikke bruges sammen" #: main.c:278 msgid "-Cf/-CF and -I are incompatible" msgstr "-Cf/-CF og -I kan ikke bruges sammen" #: main.c:282 msgid "-Cf/-CF are incompatible with lex-compatibility mode" msgstr "-Cf/-CF kan ikke bruges i lex-kompatibilitetstilstand" #: main.c:287 msgid "-Cf and -CF are mutually exclusive" msgstr "-Cf og -CF er gensidigt udelukkende" #: main.c:291 msgid "Can't use -+ with -CF option" msgstr "-+ kan ikke bruges sammen med flaget -CF" #: main.c:294 #, c-format msgid "%array incompatible with -+ option" msgstr "-+ kan ikke bruges sammen med %array" #: main.c:299 msgid "Options -+ and --reentrant are mutually exclusive." msgstr "Flagene -+ og --reentrant er gensidigt udelukkende." #: main.c:302 msgid "bison bridge not supported for the C++ scanner." msgstr "bisonbro understttes ikke for C++-skanneren." #: main.c:357 main.c:403 #, c-format msgid "could not create %s" msgstr "kunne ikke oprette %s" #: main.c:416 msgid "could not write tables header" msgstr "kunne ikke skrive tabellhoved" #: main.c:420 #, c-format msgid "can't open skeleton file %s" msgstr "kan ikke bne skabelonfilen %s" #: main.c:456 msgid "allocation of macro definition failed" msgstr "" #: main.c:504 #, c-format msgid "input error reading skeleton file %s" msgstr "fejl ved lsning af skabelonsfilen %s" #: main.c:508 #, c-format msgid "error closing skeleton file %s" msgstr "fejl ved lukning af skabelonfilen %s" #: main.c:693 #, c-format msgid "error creating header file %s" msgstr "fejl ved oprettelsen af headerfilen %s" #: main.c:701 #, c-format msgid "error writing output file %s" msgstr "fejl ved skrivning af udfilen %s" #: main.c:705 #, c-format msgid "error closing output file %s" msgstr "fejl ved lukning af udfilen %s" #: main.c:709 #, c-format msgid "error deleting output file %s" msgstr "fejl ved sletning af udfilen %s" #: main.c:716 #, c-format msgid "No backing up.\n" msgstr "Ingen sikkerhedskopiering.\n" #: main.c:720 #, c-format msgid "%d backing up (non-accepting) states.\n" msgstr "%d sikkerhedskopierer (ikke-accepterende) tilstande.\n" #: main.c:724 #, c-format msgid "Compressed tables always back up.\n" msgstr "Komprimerete tabeller backer alltid tillbaka.\n" #: main.c:727 #, c-format msgid "error writing backup file %s" msgstr "fejl ved skrivning af sikkerhedskopifilen %s" #: main.c:731 #, c-format msgid "error closing backup file %s" msgstr "fejl ved lukning af sikerhedskopifilen %s" #: main.c:736 #, c-format msgid "%s version %s usage statistics:\n" msgstr "Statistik over brugaf %s version %s:\n" #: main.c:739 #, c-format msgid " scanner options: -" msgstr " fortolkningsflag: -" #: main.c:818 #, c-format msgid " %d/%d NFA states\n" msgstr " %d/%d NFA-tilstand\n" #: main.c:820 #, c-format msgid " %d/%d DFA states (%d words)\n" msgstr " %d/%d DFA-tilstand (%d ord)\n" #: main.c:822 #, c-format msgid " %d rules\n" msgstr " %d regler\n" #: main.c:827 #, c-format msgid " No backing up\n" msgstr " Ingen sikkerhedskopiering\n" #: main.c:831 #, c-format msgid " %d backing-up (non-accepting) states\n" msgstr " %d sikkerhedskopierer (ikke-accepterende) tilstande.\n" #: main.c:836 #, c-format msgid " Compressed tables always back-up\n" msgstr " Komprimerede tabeller bakker altid tilbake\n" #: main.c:840 #, c-format msgid " Beginning-of-line patterns used\n" msgstr " Begyndelse-af-linje-mnster brugt\n" #: main.c:842 #, c-format msgid " %d/%d start conditions\n" msgstr " %d/%d startbetingelse\n" #: main.c:846 #, c-format msgid " %d epsilon states, %d double epsilon states\n" msgstr " %d epsilontilstande, %d dobbelte epsilontilstande\n" #: main.c:850 #, c-format msgid " no character classes\n" msgstr " ingen tegnklasser\n" #: main.c:854 #, c-format msgid " %d/%d character classes needed %d/%d words of storage, %d reused\n" msgstr " %d/%d tegnklasser behvede %d/%d ord for gemning, %d genbrugte\n" #: main.c:859 #, c-format msgid " %d state/nextstate pairs created\n" msgstr " %d par med tilstand/nste-tilstand oprettede\n" #: main.c:862 #, c-format msgid " %d/%d unique/duplicate transitions\n" msgstr " %d/%d unikke/duplikerede overgange\n" #: main.c:867 #, c-format msgid " %d table entries\n" msgstr " %d tabelposter\n" #: main.c:875 #, c-format msgid " %d/%d base-def entries created\n" msgstr " %d/%d base/standard-poster oprettede\n" #: main.c:879 #, c-format msgid " %d/%d (peak %d) nxt-chk entries created\n" msgstr " %d/%d (max %d) nste/test-poster oprettede\n" #: main.c:883 #, c-format msgid " %d/%d (peak %d) template nxt-chk entries created\n" msgstr " %d/%d (max %d) skablon-nste/test-poster oprettede\n" #: main.c:887 #, c-format msgid " %d empty table entries\n" msgstr " %d tomme tabelposter\n" #: main.c:889 #, c-format msgid " %d protos created\n" msgstr " %d prototyper oprettede\n" #: main.c:892 #, c-format msgid " %d templates created, %d uses\n" msgstr " %d skabloner oprettede, %d forml\n" #: main.c:900 #, c-format msgid " %d/%d equivalence classes created\n" msgstr " %d/%d kvivalensklasser oprettet\n" #: main.c:908 #, c-format msgid " %d/%d meta-equivalence classes created\n" msgstr " %d/%d meta-kvivalensklasser oprettede\n" #: main.c:914 #, c-format msgid " %d (%d saved) hash collisions, %d DFAs equal\n" msgstr " %d (%d gemte) hash-kollisioner, %d DFA'er er ens\n" #: main.c:916 #, c-format msgid " %d sets of reallocations needed\n" msgstr " %d opstninger med omallokeringer krvedes\n" #: main.c:918 #, c-format msgid " %d total table entries needed\n" msgstr " %d totale tabelposter krves\n" #: main.c:995 #, c-format msgid "Internal error. flexopts are malformed.\n" msgstr "Intern fejl. flexopts er fejlbehftede.\n" #: main.c:1005 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Prv '%s --help' for mere information.\n" #: main.c:1062 #, c-format msgid "unknown -C option '%c'" msgstr "ukendt flag til -C '%c'" #: main.c:1191 #, c-format msgid "%s %s\n" msgstr "%s %s\n" #: main.c:1466 msgid "fatal parse error" msgstr "uoprettelig fejl ved analysen" #: main.c:1498 #, c-format msgid "could not create backing-up info file %s" msgstr "kunne ikke oprette sikkerhedskopi af info-fil %s" #: main.c:1519 #, c-format msgid "-l AT&T lex compatibility option entails a large performance penalty\n" msgstr "" "flaget -l for opfrsel som AT&T's lex medfrer et vsentligt prstationstab\n" #: main.c:1522 #, c-format msgid " and may be the actual source of other reported performance penalties\n" msgstr " og kan vre den egentlige rsag til andre rapporter om dette\n" #: main.c:1528 #, c-format msgid "" "%%option yylineno entails a performance penalty ONLY on rules that can match " "newline characters\n" msgstr "" "%%option yylineno medfrer et prstationstab KUN p regler der kan matche " "nylinje-tegn\n" #: main.c:1535 #, c-format msgid "-I (interactive) entails a minor performance penalty\n" msgstr "-I (interaktiv) medfrer et mindre prstationstab\n" #: main.c:1540 #, c-format msgid "yymore() entails a minor performance penalty\n" msgstr "yymore() medfrer et mindre prstationstab\n" #: main.c:1546 #, c-format msgid "REJECT entails a large performance penalty\n" msgstr "REJECT medfrer et vsentligt prstationstab\n" #: main.c:1551 #, c-format msgid "Variable trailing context rules entail a large performance penalty\n" msgstr "" "Regler for variabel efterflgende kontekst medfrer et vsentlig " "prstationstab\n" #: main.c:1563 msgid "REJECT cannot be used with -f or -F" msgstr "REJECT kan ikke bruges sammen med -f eller -F" #: main.c:1566 #, c-format msgid "%option yylineno cannot be used with REJECT" msgstr "%option yylineno kan ikke bruges sammen med REJECT" #: main.c:1569 msgid "variable trailing context rules cannot be used with -f or -F" msgstr "" "regler for variabel efterflgende kontekst kan ikke bruges\n" "sammen med -f eller -F" #: main.c:1692 #, c-format msgid "%option yyclass only meaningful for C++ scanners" msgstr "%option yyclass er kun meningsfyldt for C++-fortolkere" #: main.c:1799 #, c-format msgid "Usage: %s [OPTIONS] [FILE]...\n" msgstr "Brug: %s [FLAG] [FIL]...\n" #: main.c:1802 #, c-format msgid "" "Generates programs that perform pattern-matching on text.\n" "\n" "Table Compression:\n" " -Ca, --align trade off larger tables for better memory alignment\n" " -Ce, --ecs construct equivalence classes\n" " -Cf do not compress tables; use -f representation\n" " -CF do not compress tables; use -F representation\n" " -Cm, --meta-ecs construct meta-equivalence classes\n" " -Cr, --read use read() instead of stdio for scanner input\n" " -f, --full generate fast, large scanner. Same as -Cfr\n" " -F, --fast use alternate table representation. Same as -CFr\n" " -Cem default compression (same as --ecs --meta-ecs)\n" "\n" "Debugging:\n" " -d, --debug enable debug mode in scanner\n" " -b, --backup write backing-up information to %s\n" " -p, --perf-report write performance report to stderr\n" " -s, --nodefault suppress default rule to ECHO unmatched text\n" " -T, --trace %s should run in trace mode\n" " -w, --nowarn do not generate warnings\n" " -v, --verbose write summary of scanner statistics to stdout\n" "\n" "Files:\n" " -o, --outfile=FILE specify output filename\n" " -S, --skel=FILE specify skeleton file\n" " -t, --stdout write scanner on stdout instead of %s\n" " --yyclass=NAME name of C++ class\n" " --header-file=FILE create a C header file in addition to the " "scanner\n" " --tables-file[=FILE] write tables to FILE\n" "\n" "Scanner behavior:\n" " -7, --7bit generate 7-bit scanner\n" " -8, --8bit generate 8-bit scanner\n" " -B, --batch generate batch scanner (opposite of -I)\n" " -i, --case-insensitive ignore case in patterns\n" " -l, --lex-compat maximal compatibility with original lex\n" " -X, --posix-compat maximal compatibility with POSIX lex\n" " -I, --interactive generate interactive scanner (opposite of -B)\n" " --yylineno track line count in yylineno\n" "\n" "Generated code:\n" " -+, --c++ generate C++ scanner class\n" " -Dmacro[=defn] #define macro defn (default defn is '1')\n" " -L, --noline suppress #line directives in scanner\n" " -P, --prefix=STRING use STRING as prefix instead of \"yy\"\n" " -R, --reentrant generate a reentrant C scanner\n" " --bison-bridge scanner for bison pure parser.\n" " --bison-locations include yylloc support.\n" " --stdinit initialize yyin/yyout to stdin/stdout\n" " --noansi-definitions old-style function definitions\n" " --noansi-prototypes empty parameter list in prototypes\n" " --nounistd do not include \n" " --noFUNCTION do not generate a particular FUNCTION\n" "\n" "Miscellaneous:\n" " -c do-nothing POSIX option\n" " -n do-nothing POSIX option\n" " -?\n" " -h, --help produce this help message\n" " -V, --version report %s version\n" msgstr "" "Genererer programmer som udfrer mnstergenkendelse p tekst.\n" "\n" "Tabel-kompression: (normalt -Cem)\n" " -Ca, --align brug bedre hukommelses-tilpasning i stedet for mindre " "tabeller\n" " -Ce, --ecs konstrur kvivalensklasser\n" " -Cf komprimr ikke tabeller; brug -f reprsentation\n" " -CF komprimr ikke tabeller; brug -F reprsentation\n" " -Cm, --meta-ecs konstrur meta-kvivalensklasser\n" " -Cr, --read brug read() i stedet for stdio til skanner-inddata\n" " -f, --full generr hurtig, stor skanner. Det samme som -Cfr\n" " -F, --fast brug alternativ tabelreprsentation. Det samme som -CFr\n" " -Cem standard kompression (det samme som --ecs --meta-ecs)\n" "\n" "Fejlsgning:\n" " -d, --debug aktivr fejlsgnings-tilstand i skanneren\n" " -b, --backup skriv sikkerhedskopi-information til %s\n" " -p, --perf-report skriv ydelses-rapport p stdfejl\n" " -s, --nodefault undertryk normal regel om at udskrive tekst der " "ikke passede\n" " -T, --trace %s br kre i sporings-tilstand\n" " -w, --nowarn generr ikke advarsler\n" " -v, --verbose skriv sammendrag af skanner-statistik til stdud\n" "\n" "Filer:\n" " -o, --outfile=FILE angiv uddata-filnavn\n" " -S, --skel=FILE angiv skelet-fil\n" " -t, --stdout skriv skanner p stdud i stedet for p %s\n" " --yyclass=NAVN navn p C++-klasse\n" " --header=FIL opret en C header-fil sammen med skanneren\n" " --tables-file[=FIL] skriv tabeller til FIL\n" "\n" "Skannerens opfrsel:\n" " -7, --7bit generr 7-bit-skanner\n" " -8, --8bit generr 8-bit-skanner\n" " -B, --batch generr batch-skanner (modsat -I)\n" " -i, --case-insensitive ignorr forskel p sm og store bogstaver i " "mnstre\n" " -l, --lex-compat maksimal kompatibilitet med oprindelig lex\n" " -X, --posix-compat maksimal kompatibilitet med POSIX lex\n" " -I, --interactive generr interaktiv skanner (modsat -B)\n" " --yylineno notr linjenummer i yylineno\n" "\n" "Genereret kode:\n" " -+, --c++ generr C++ skanner-klasse\n" " -Dmacro[=defn] #define macro defn (forvalgt defn er '1')\n" " -L, --noline undertryk #line-direktiver i skanner\n" " -P, --prefix=STRENG brug STRENG som begyndelse i stedet for 'yy'\n" " -R, --reentrant generr en reentrant C-skanner\n" " --bison-bridge skanner for ren Bison-fortolker.\n" " --bison-locations med yylloc understttelse.\n" " --stdinit initialisr yyin/yyout til stdind/stdud\n" " --noansi-definitions definitioner af funktioner i gammel stl\n" " --noansi-prototypes tom parameterliste i prototyper\n" " --nounistd udelad \n" " --noFUNKTION generr ikke en bestemt FUNKTION\n" "\n" "Forskelligt:\n" " -c POSIX-flag der ikke udfres\n" " -n POSIX-flag der ikke udfres\n" " -?\n" " -h, --help udskriv denne hjlpebesked\n" " -V, --version udskriv %s version\n" #: misc.c:65 msgid "allocation of sko_stack failed" msgstr "" #: misc.c:102 misc.c:128 #, c-format msgid "name \"%s\" ridiculously long" msgstr "navnet '%s' er latterligt langt" #: misc.c:177 msgid "memory allocation failed in allocate_array()" msgstr "hukommelsestildelingen mislykkedes i allocate_array()" #: misc.c:230 #, c-format msgid "bad character '%s' detected in check_char()" msgstr "forkert tegn '%s' fundet i check_char()" #: misc.c:235 #, c-format msgid "scanner requires -8 flag to use the character %s" msgstr "skanneren krver flaget -8 for at kunne bruge tegnet %s" #: misc.c:268 msgid "dynamic memory failure in copy_string()" msgstr "dynamisk hukommelsesfejl i copy_string()" #: misc.c:367 #, c-format msgid "%s: fatal internal error, %s\n" msgstr "%s: uoprettelig intern fejl, %s\n" #: misc.c:803 msgid "attempt to increase array size failed" msgstr "forsg p at ge arraystrrelse mislykkedes" #: misc.c:930 msgid "bad line in skeleton file" msgstr "forkert linje i skeletfilen" #: misc.c:979 msgid "memory allocation failed in yy_flex_xmalloc()" msgstr "hukommelsestildelingen mislykkedes i yy_flex_xmalloc()" #: nfa.c:104 #, c-format msgid "" "\n" "\n" "********** beginning dump of nfa with start state %d\n" msgstr "" "\n" "\n" "********** begynder udskrift af nfa med starttilstand %d\n" #: nfa.c:115 #, c-format msgid "state # %4d\t" msgstr "tilstand %4d\t" #: nfa.c:130 #, c-format msgid "********** end of dump\n" msgstr "********** slut p udskrift\n" #: nfa.c:174 msgid "empty machine in dupmachine()" msgstr "tom maskine i dupmachine()" #: nfa.c:240 #, c-format msgid "Variable trailing context rule at line %d\n" msgstr "Regel for variabel efterflgende kontekst p linje %d\n" #: nfa.c:364 msgid "bad state type in mark_beginning_as_normal()" msgstr "forkert tilstandstype i mark_beginning_as_normal()" #: nfa.c:609 #, c-format msgid "input rules are too complicated (>= %d NFA states)" msgstr "inddatareglerne er for komplicerede (>= %d NFA-tilstand)" #: nfa.c:688 msgid "found too many transitions in mkxtion()" msgstr "fandt for mange overgange i mkxtion()" #: nfa.c:714 #, c-format msgid "too many rules (> %d)!" msgstr "for mange regler (> %d)!" #: parse.y:159 msgid "unknown error processing section 1" msgstr "ukendt fejl ved tolkning af sektion 1" #: parse.y:184 parse.y:351 msgid "bad start condition list" msgstr "forkert liste af startbetingelser" #: parse.y:315 msgid "unrecognized rule" msgstr "ukendt regel" #: parse.y:434 parse.y:447 parse.y:516 msgid "trailing context used twice" msgstr "efterflgende kontekst brugt to gange" #: parse.y:552 parse.y:562 parse.y:635 parse.y:645 msgid "bad iteration values" msgstr "fejlagtige iterationsvrdier" #: parse.y:580 parse.y:598 parse.y:663 parse.y:681 msgid "iteration value must be positive" msgstr "iterationsvrdi skal vre positiv" #: parse.y:804 parse.y:814 #, c-format msgid "the character range [%c-%c] is ambiguous in a case-insensitive scanner" msgstr "tegnintervallet [%c-%c] er flertydigt i en versaluflsom skanner" #: parse.y:819 msgid "negative range in character class" msgstr "negativt interval i tegnklasse" #: parse.y:916 msgid "[:^lower:] is ambiguous in case insensitive scanner" msgstr "[:^lower:] er flertydigt i en versaluflsom skanner" #: parse.y:922 msgid "[:^upper:] ambiguous in case insensitive scanner" msgstr "[:^upper:] er flertydigt i en versaluflsom skanner" #: scan.l:75 scan.l:618 scan.l:676 msgid "Input line too long\n" msgstr "For lang inddatalinje\n" #: scan.l:161 #, c-format msgid "malformed '%top' directive" msgstr "fejlagtigt '%top'-direktiv" #: scan.l:183 #, no-c-format msgid "unrecognized '%' directive" msgstr "ukendt '%'-direktiv" #: scan.l:192 #, fuzzy msgid "Definition name too long\n" msgstr "For lang inddatalinje\n" #: scan.l:284 msgid "Unmatched '{'" msgstr "Ensomt '{'" #: scan.l:300 #, c-format msgid "Definition value for {%s} too long\n" msgstr "" #: scan.l:317 msgid "incomplete name definition" msgstr "ufuldstndig navnedefinition" #: scan.l:443 #, fuzzy msgid "Option line too long\n" msgstr "For lang inddatalinje\n" #: scan.l:451 #, c-format msgid "unrecognized %%option: %s" msgstr "ukendt %%option: %s" #: scan.l:633 scan.l:800 msgid "bad character class" msgstr "forkert tegnklasse" #: scan.l:683 #, c-format msgid "undefined definition {%s}" msgstr "udefinieret definition {%s}" #: scan.l:755 #, c-format msgid "bad : %s" msgstr "forkert : %s" #: scan.l:768 msgid "missing quote" msgstr "citationstegn savnes" #: scan.l:834 #, c-format msgid "bad character class expression: %s" msgstr "forkert udtryk for tegnklasse: %s" #: scan.l:856 msgid "bad character inside {}'s" msgstr "forkert tegn imellem {}" #: scan.l:862 msgid "missing }" msgstr "} savnes" #: scan.l:940 msgid "EOF encountered inside an action" msgstr "filslutning mdt inden i en handling" #: scan.l:945 msgid "EOF encountered inside pattern" msgstr "filslutning mdt inden i et mnster" #: scan.l:967 #, c-format msgid "bad character: %s" msgstr "forkert tegn: %s" #: scan.l:996 #, c-format msgid "can't open %s" msgstr "kan ikke bne %s" #: scanopt.c:291 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Brug: %s [FLAG]...\n" #: scanopt.c:564 #, c-format msgid "option `%s' doesn't allow an argument\n" msgstr "flaget '%s' tager ikke noget argument\n" #: scanopt.c:569 #, c-format msgid "option `%s' requires an argument\n" msgstr "flaget '%s' krver et argument\n" #: scanopt.c:573 #, c-format msgid "option `%s' is ambiguous\n" msgstr "flaget '%s' er flertydig\n" #: scanopt.c:577 #, c-format msgid "Unrecognized option `%s'\n" msgstr "Ukendt flag: '%s'\n" #: scanopt.c:581 #, c-format msgid "Unknown error=(%d)\n" msgstr "Ukendt fejl=(%d)\n" #: sym.c:100 msgid "symbol table memory allocation failed" msgstr "hukommelsestildeling for symboltabel mislykkedes" #: sym.c:202 msgid "name defined twice" msgstr "navnet defineret to gange" #: sym.c:253 #, c-format msgid "start condition %s declared twice" msgstr "startbetingelse %s deklareret to gange" #: yylex.c:56 msgid "premature EOF" msgstr "for tidlig filslut" #: yylex.c:198 #, c-format msgid "End Marker\n" msgstr "Slutmarkering\n" #: yylex.c:204 #, c-format msgid "*Something Weird* - tok: %d val: %d\n" msgstr "*Noget mrkeligt* - tegn: %d vrdi: %d\n" flex-2.5.39/po/ro.po0000644000175000017500000006277612314621665014450 0ustar srivastasrivasta# Mesajele n limba romn pentru pachetul flex. # Copyright (C) 2003 The Flex Project # Eugen Hoanca , 2003. # msgid "" msgstr "" "Project-Id-Version: flex 2.5.31\n" "Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2014-03-26 15:00-0400\n" "PO-Revision-Date: 2003-11-22 11:07+0200\n" "Last-Translator: Eugen Hoanca \n" "Language-Team: Romanian \n" "Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-2\n" "Content-Transfer-Encoding: 8bit\n" #: buf.c:78 msgid "Allocation of buffer to print string failed" msgstr "" #: buf.c:100 msgid "Allocation of buffer for line directive failed" msgstr "" #: buf.c:177 msgid "Allocation of buffer for m4 def failed" msgstr "" #: buf.c:197 msgid "Allocation of buffer for m4 undef failed" msgstr "" #: dfa.c:61 #, c-format msgid "State #%d is non-accepting -\n" msgstr "Starea #%d este de neacceptat. -\n" #: dfa.c:124 msgid "dangerous trailing context" msgstr "context de sfrit(trailing) periculos" #: dfa.c:166 #, c-format msgid " associated rule line numbers:" msgstr " numerele de linie asociate regulii:" #: dfa.c:202 #, c-format msgid " out-transitions: " msgstr " tranziii exterioare(out): " #: dfa.c:210 #, c-format msgid "" "\n" " jam-transitions: EOF " msgstr "" "\n" " tranziii jam: EOF " #: dfa.c:341 msgid "consistency check failed in epsclosure()" msgstr "verificare de consisten euat n epsclosure()" #: dfa.c:429 msgid "" "\n" "\n" "DFA Dump:\n" "\n" msgstr "" "\n" "\n" "Rezultat(dump) DFA:\n" "\n" #: dfa.c:604 msgid "could not create unique end-of-buffer state" msgstr "nu am putut crea sfrit unic pentru starea buffer-ului" #: dfa.c:625 #, c-format msgid "state # %d:\n" msgstr "stare # %d:\n" #: dfa.c:785 msgid "Could not write yynxt_tbl[][]" msgstr "Nu am putut scrie yynxt_tbl[][]" #: dfa.c:1049 msgid "bad transition character detected in sympartition()" msgstr "caracter greit de tranziie detectat n sympartition()" #: gen.c:478 msgid "" "\n" "\n" "Equivalence Classes:\n" "\n" msgstr "" "\n" "\n" "Clase de Echivalen:\n" "\n" #: gen.c:662 gen.c:691 gen.c:1215 #, c-format msgid "state # %d accepts: [%d]\n" msgstr "starea # %d accept: [%d]\n" #: gen.c:1110 #, c-format msgid "state # %d accepts: " msgstr "starea # %d accept: " #: gen.c:1157 msgid "Could not write yyacclist_tbl" msgstr "Nu am putut scrie yyacclist_tbl" #: gen.c:1233 msgid "Could not write yyacc_tbl" msgstr "Nu am putut scrie yyacc_tbl" #: gen.c:1248 gen.c:1633 gen.c:1656 msgid "Could not write ecstbl" msgstr "Nu am putut scrie ecstbl" #: gen.c:1271 msgid "" "\n" "\n" "Meta-Equivalence Classes:\n" msgstr "" "\n" "\n" "Clase de Meta-Echivalen:\n" #: gen.c:1293 msgid "Could not write yymeta_tbl" msgstr "Nu am putut scrie yymeta_tbl" #: gen.c:1354 msgid "Could not write yybase_tbl" msgstr "Nu am putut scrie yybase_tbl" #: gen.c:1388 msgid "Could not write yydef_tbl" msgstr "Nu am putut scrie yydef_tbl" #: gen.c:1428 msgid "Could not write yynxt_tbl" msgstr "Nu am putut scrie yynxt_tbl" #: gen.c:1464 msgid "Could not write yychk_tbl" msgstr "Nu am putut scrie yychk_tbl" #: gen.c:1618 gen.c:1647 msgid "Could not write ftbl" msgstr "Nu am putut scrie ftbl" #: gen.c:1624 msgid "Could not write ssltbl" msgstr "Nu am putut scrie ssltbl" #: gen.c:1675 msgid "Could not write eoltbl" msgstr "Nu am putut scrie eoltbl" #: gen.c:1735 msgid "Could not write yynultrans_tbl" msgstr "Nu am putut scrie yynultrans_tbl" #: main.c:191 msgid "rule cannot be matched" msgstr "regula nu se potrivete cu nimic" #: main.c:196 msgid "-s option given but default rule can be matched" msgstr "a fost dat opiunea -s dar regula implicit se poate potrivi" #: main.c:236 msgid "Can't use -+ with -l option" msgstr "Nu se poate folosi -+ cu opiunea -l" #: main.c:239 msgid "Can't use -f or -F with -l option" msgstr "Nu se poate folosi -f sau -F cu opiunea -l" #: main.c:243 msgid "Can't use --reentrant or --bison-bridge with -l option" msgstr "Nu se poate folosi --reentrant sau --bison-bridge cu opiunea -l" #: main.c:275 msgid "-Cf/-CF and -Cm don't make sense together" msgstr "-Cf/-CF i -Cm nu au sens folosite mpreun" #: main.c:278 msgid "-Cf/-CF and -I are incompatible" msgstr "-Cf/-CF i -I sunt incompatibile" #: main.c:282 msgid "-Cf/-CF are incompatible with lex-compatibility mode" msgstr "-Cf/-CF sunt incompatibile cu module de compatibilitate lex" #: main.c:287 msgid "-Cf and -CF are mutually exclusive" msgstr "-Cf i -CF se exclud reciproc" #: main.c:291 msgid "Can't use -+ with -CF option" msgstr "Nu se poate folosi -+ cu opiunea -CF" #: main.c:294 #, c-format msgid "%array incompatible with -+ option" msgstr "%array incompatibil cu opiunea -+" #: main.c:299 msgid "Options -+ and --reentrant are mutually exclusive." msgstr "Opiunile -+ and --reentrant se exclud reciproc" #: main.c:302 msgid "bison bridge not supported for the C++ scanner." msgstr "bridge bison nu este suportat pentru scannerul C++." #: main.c:357 main.c:403 #, c-format msgid "could not create %s" msgstr "nu am putut crea %s" #: main.c:416 msgid "could not write tables header" msgstr "Nu am putut scrie capul de tabel" #: main.c:420 #, c-format msgid "can't open skeleton file %s" msgstr "nu am putut deschide fiierul schelet %s" #: main.c:456 msgid "allocation of macro definition failed" msgstr "" #: main.c:504 #, c-format msgid "input error reading skeleton file %s" msgstr "eroare de intrare(input) n timpul citirii fiierului schelet %s" #: main.c:508 #, c-format msgid "error closing skeleton file %s" msgstr "eroare n nchiderea fiierului schelet %s" #: main.c:693 #, c-format msgid "error creating header file %s" msgstr "eroare n crearea fiierului de header %s" #: main.c:701 #, c-format msgid "error writing output file %s" msgstr "eroare n scrierea fiierului de output %s" #: main.c:705 #, c-format msgid "error closing output file %s" msgstr "eroare n nchiderea fiierului de output %s" #: main.c:709 #, c-format msgid "error deleting output file %s" msgstr "eroare n tergerea fiierului de output %s" #: main.c:716 #, c-format msgid "No backing up.\n" msgstr "Nu se revine (backing-up).\n" #: main.c:720 #, c-format msgid "%d backing up (non-accepting) states.\n" msgstr "%d salvare de (inacceptabile) stri.\n" #: main.c:724 #, c-format msgid "Compressed tables always back up.\n" msgstr "Tabelele compresate ntotdeauna au back-up.\n" #: main.c:727 #, c-format msgid "error writing backup file %s" msgstr "eroare n scrierea fiierului de backup %s" #: main.c:731 #, c-format msgid "error closing backup file %s" msgstr "eroare n nchiderea fiierului de backup %s" #: main.c:736 #, c-format msgid "%s version %s usage statistics:\n" msgstr "%s versiunea %s statistici de folosire:\n" #: main.c:739 #, c-format msgid " scanner options: -" msgstr " opiuni de scanner: -" #: main.c:818 #, c-format msgid " %d/%d NFA states\n" msgstr " %d/%d stri NFA\n" #: main.c:820 #, c-format msgid " %d/%d DFA states (%d words)\n" msgstr " %d/%d stri DFA (%d cuvinte)\n" #: main.c:822 #, c-format msgid " %d rules\n" msgstr " %d reguli\n" #: main.c:827 #, c-format msgid " No backing up\n" msgstr " Nu se face backup\n" #: main.c:831 #, c-format msgid " %d backing-up (non-accepting) states\n" msgstr " %d salvare de (inacceptabile) stri\n" #: main.c:836 #, c-format msgid " Compressed tables always back-up\n" msgstr " Tabelele compresate ntotdeauna au back-up\n" #: main.c:840 #, c-format msgid " Beginning-of-line patterns used\n" msgstr " Tipare de nceputuri de linie folosite\n" #: main.c:842 #, c-format msgid " %d/%d start conditions\n" msgstr " %d/%d condiii de start\n" #: main.c:846 #, c-format msgid " %d epsilon states, %d double epsilon states\n" msgstr " %d stri epsilon, %d stri dublu epsilon\n" #: main.c:850 #, c-format msgid " no character classes\n" msgstr " nici o clas de caractere\n" #: main.c:854 #, c-format msgid " %d/%d character classes needed %d/%d words of storage, %d reused\n" msgstr "" " %d/%d clase de caractere necesare %d/%d cuvinte de stocare, %d refolosite\n" #: main.c:859 #, c-format msgid " %d state/nextstate pairs created\n" msgstr " %d perechi de stare/stareurmtoare create\n" #: main.c:862 #, c-format msgid " %d/%d unique/duplicate transitions\n" msgstr " %d/%d tranziii unice/duplicate\n" #: main.c:867 #, c-format msgid " %d table entries\n" msgstr " %d intrri n tabele\n" #: main.c:875 #, c-format msgid " %d/%d base-def entries created\n" msgstr " %d/%d base-def intrri create\n" #: main.c:879 #, c-format msgid " %d/%d (peak %d) nxt-chk entries created\n" msgstr " %d/%d (maxim %d) nxt-chk intrri create\n" #: main.c:883 #, c-format msgid " %d/%d (peak %d) template nxt-chk entries created\n" msgstr " %d/%d (maxim %d) model nxt-chk intrri create\n" #: main.c:887 #, c-format msgid " %d empty table entries\n" msgstr " %d intrri n tabel goale\n" #: main.c:889 #, c-format msgid " %d protos created\n" msgstr " %d prototipuri create\n" #: main.c:892 #, c-format msgid " %d templates created, %d uses\n" msgstr " %d modele create, %d folosiri\n" #: main.c:900 #, c-format msgid " %d/%d equivalence classes created\n" msgstr " %d/%d clase de echivalen create\n" #: main.c:908 #, c-format msgid " %d/%d meta-equivalence classes created\n" msgstr " %d/%d clase de meta-echivalen create\n" #: main.c:914 #, c-format msgid " %d (%d saved) hash collisions, %d DFAs equal\n" msgstr " %d (%d salvate) coliziuni disipate(hash), %d egaluri de DFA-uril\n" #: main.c:916 #, c-format msgid " %d sets of reallocations needed\n" msgstr " %d seturi de realocri necesare\n" #: main.c:918 #, c-format msgid " %d total table entries needed\n" msgstr " %d intrri totale n tabel necesare\n" #: main.c:995 #, c-format msgid "Internal error. flexopts are malformed.\n" msgstr "Eroare intern. Opiunile flex(flexopts) sunt malformate.\n" #: main.c:1005 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "ncercai `%s --help' pentru mai multe informaii.\n" #: main.c:1062 #, c-format msgid "unknown -C option '%c'" msgstr "opiune -C necunoscut `%c'" #: main.c:1191 #, c-format msgid "%s %s\n" msgstr "%s %s\n" #: main.c:1466 msgid "fatal parse error" msgstr "eroare fatal de analiz(parse)" #: main.c:1498 #, c-format msgid "could not create backing-up info file %s" msgstr "nu s-a putut crea fiierul de informaii de back-up %s" #: main.c:1519 #, c-format msgid "-l AT&T lex compatibility option entails a large performance penalty\n" msgstr "" "-l opiunea de compatibilitate AT&T lex determin o scdere drastic a " "performanei\n" #: main.c:1522 #, c-format msgid " and may be the actual source of other reported performance penalties\n" msgstr "i poate fi sursa real a altor scderi de performan raportate\n" #: main.c:1528 #, c-format msgid "" "%%option yylineno entails a performance penalty ONLY on rules that can match " "newline characters\n" msgstr "" "%%opiunea yylineno determin o scdere drastic a performanei DOAR n " "regulile care se potrivesc caracterelor linie_nou(newline)\n" #: main.c:1535 #, c-format msgid "-I (interactive) entails a minor performance penalty\n" msgstr "-I (interactie) determin o scdere minor a performanei\n" #: main.c:1540 #, c-format msgid "yymore() entails a minor performance penalty\n" msgstr "yymore() determin o scdere minor a performanei\n" #: main.c:1546 #, c-format msgid "REJECT entails a large performance penalty\n" msgstr "REJECT determin o scdere drastic a performanei\n" #: main.c:1551 #, c-format msgid "Variable trailing context rules entail a large performance penalty\n" msgstr "" "Contextul de sfrit(trailing) variabil determin o scdere drastic a " "performanei\n" #: main.c:1563 msgid "REJECT cannot be used with -f or -F" msgstr "REJECT nu poate fi folosit cu -f sau -F" #: main.c:1566 #, c-format msgid "%option yylineno cannot be used with REJECT" msgstr "%opiunea yylineno nu poate fi folosit cu REJECT" #: main.c:1569 msgid "variable trailing context rules cannot be used with -f or -F" msgstr "" "contextul de sfrit(trailing) variabil nu poate fi folosit cu -f sau -F" #: main.c:1692 #, c-format msgid "%option yyclass only meaningful for C++ scanners" msgstr "%opunea yyclass este folositoare doar pentru scannerele C++" #: main.c:1799 #, c-format msgid "Usage: %s [OPTIONS] [FILE]...\n" msgstr "Folosire: %s [OPIUNI] [FIIER]...\n" #: main.c:1802 #, c-format msgid "" "Generates programs that perform pattern-matching on text.\n" "\n" "Table Compression:\n" " -Ca, --align trade off larger tables for better memory alignment\n" " -Ce, --ecs construct equivalence classes\n" " -Cf do not compress tables; use -f representation\n" " -CF do not compress tables; use -F representation\n" " -Cm, --meta-ecs construct meta-equivalence classes\n" " -Cr, --read use read() instead of stdio for scanner input\n" " -f, --full generate fast, large scanner. Same as -Cfr\n" " -F, --fast use alternate table representation. Same as -CFr\n" " -Cem default compression (same as --ecs --meta-ecs)\n" "\n" "Debugging:\n" " -d, --debug enable debug mode in scanner\n" " -b, --backup write backing-up information to %s\n" " -p, --perf-report write performance report to stderr\n" " -s, --nodefault suppress default rule to ECHO unmatched text\n" " -T, --trace %s should run in trace mode\n" " -w, --nowarn do not generate warnings\n" " -v, --verbose write summary of scanner statistics to stdout\n" "\n" "Files:\n" " -o, --outfile=FILE specify output filename\n" " -S, --skel=FILE specify skeleton file\n" " -t, --stdout write scanner on stdout instead of %s\n" " --yyclass=NAME name of C++ class\n" " --header-file=FILE create a C header file in addition to the " "scanner\n" " --tables-file[=FILE] write tables to FILE\n" "\n" "Scanner behavior:\n" " -7, --7bit generate 7-bit scanner\n" " -8, --8bit generate 8-bit scanner\n" " -B, --batch generate batch scanner (opposite of -I)\n" " -i, --case-insensitive ignore case in patterns\n" " -l, --lex-compat maximal compatibility with original lex\n" " -X, --posix-compat maximal compatibility with POSIX lex\n" " -I, --interactive generate interactive scanner (opposite of -B)\n" " --yylineno track line count in yylineno\n" "\n" "Generated code:\n" " -+, --c++ generate C++ scanner class\n" " -Dmacro[=defn] #define macro defn (default defn is '1')\n" " -L, --noline suppress #line directives in scanner\n" " -P, --prefix=STRING use STRING as prefix instead of \"yy\"\n" " -R, --reentrant generate a reentrant C scanner\n" " --bison-bridge scanner for bison pure parser.\n" " --bison-locations include yylloc support.\n" " --stdinit initialize yyin/yyout to stdin/stdout\n" " --noansi-definitions old-style function definitions\n" " --noansi-prototypes empty parameter list in prototypes\n" " --nounistd do not include \n" " --noFUNCTION do not generate a particular FUNCTION\n" "\n" "Miscellaneous:\n" " -c do-nothing POSIX option\n" " -n do-nothing POSIX option\n" " -?\n" " -h, --help produce this help message\n" " -V, --version report %s version\n" msgstr "" "Genereaz programe care caut potriviri de tipare pe un text\n" "\n" "Compresie de tabele:\n" " -Ca, --align renun la tabelele mari n favoarea unui aliniament mai " "bun al memoriei\n" " -Ce, --ecs construiete clase de echivalen\n" " -Cf nu compreseaz tabelele; folosete reprezentare -f \n" " -CF nu compreseaz tabelele; folosete reprezentare -F\n" " -Cm, --meta-ecs construiete clase de meta-echivalen\n" " -Cr, --read folosete read() n loc de stdio pentru intrarea de " "scanner\n" " -F, --fast folosete reprezentare alternativ de tabele. Asemntor " "lui -CFr\n" " -f, --full genereaz scannere rapide, mari. Asemntor lui -Cfr\n" " -Cem compresie implicit (asemntor lui --ecs --meta-ecs)\n" "\n" "Debugging:\n" " -d, --debug activeaz modul debug n scanner\n" " -b, --backup scriere de informaii de backup n %s\n" " -p, --perf-report scrie raportul de performan la stderr\n" " -s, --nodefault elimin regula implicit de ECHO text care nu se " "potrivete\n" " -T, --trace %s ar trebui s ruleze n mod trace\n" " -w, --nowarn nu genereaz avertismente\n" " -v, --verbose scrie cuprinsul statisticilor scanner-ului la " "stdout\n" "\n" "Fiiere:\n" " -o, --outfile=FIIER specific numele de fiier de ieire\n" " -S, --skel=FIIER specific fiierul schelet\n" " -t, --stdout scrie scannerul la stdout n loc de %s\n" " --yyclass=NUME numele clasei C++\n" " --header-file=FIIER creaz im fiier de header C pe lngscanner\n" " --tables-file[=FIIER] scrie tabelele n FIIER\n" "\n" "Comportament scanner:\n" " -7, --7bit genereaz scanner pe 7-bii\n" " -8, --8bit genereaz scanner pe 8-bii\n" " -B, --batch genereaz scanner comand(batch) (inversul lui -" "I)\n" " -i, --case-insensitive ignor cazul n tipare\n" " -l, --lex-compat compatibilitate maxim cu lex original\n" " -X, --posix-compat compatibilitate maxim cu lex POSIX\n" " -I, --interactive genereaz scanner interactive (inversul lui -B)\n" " --yylineno urmrete numrtoare liniilor n yylineno\n" "\n" "Cod generat:\n" " -+, --c++ genereaz clas de scanner C++ \n" " -Dmacro[=defn] #define macro defn (implicit defn is '1')\n" " -L, --noline elimin directivele #line din scanner\n" " -P, --prefix=IR folosete IR ca i prefix n loc de \"yy\"\n" " -R, --reentrant genereaz un scanner C circular(reentrant)\n" " --bison-bridge scanner pentru analiz pur bison.\n" " --bison-locations include suport yylloc.\n" " --stdinit iniializeaz yyin/yyout ctre stdin/stdout\n" " --noansi-definitions definire de funcii stil vechi\n" " --noansi-prototypes list de parametri vid n prototipuri\n" " --nounistd nu include \n" " --noFUNCIE nu genera o FUNCIE particular\n" "\n" "Diverse:\n" " -c opiune POSIX care nu face nimic\n" " -n opiune POSIX care nu face nimic\n" " -?\n" " -h, --help produce acest mesaj de ajutor\n" " -V, --version raporteaz versiunea %s\n" #: misc.c:65 msgid "allocation of sko_stack failed" msgstr "" #: misc.c:102 misc.c:128 #, c-format msgid "name \"%s\" ridiculously long" msgstr "numele \"%s\" este ridicol de lung" #: misc.c:177 msgid "memory allocation failed in allocate_array()" msgstr "alocare de memorie euat n allocate_array()" #: misc.c:230 #, c-format msgid "bad character '%s' detected in check_char()" msgstr "caracter greit `%s' detectat n check_char()" #: misc.c:235 #, c-format msgid "scanner requires -8 flag to use the character %s" msgstr "scannerul necesit parametrul(flag) -8 pentru a folosi caracterul %s" #: misc.c:268 msgid "dynamic memory failure in copy_string()" msgstr "eroare de memorie dinamic n copy_string()" #: misc.c:367 #, c-format msgid "%s: fatal internal error, %s\n" msgstr "%s: eroare intern fatal, %s\n" #: misc.c:803 msgid "attempt to increase array size failed" msgstr "ncercare de a mri dimensiunea domeniului euat" #: misc.c:930 msgid "bad line in skeleton file" msgstr "linie greit n fiierul schelet" #: misc.c:979 msgid "memory allocation failed in yy_flex_xmalloc()" msgstr "alocare de memorie euat n yy_flex_xmalloc()" #: nfa.c:104 #, c-format msgid "" "\n" "\n" "********** beginning dump of nfa with start state %d\n" msgstr "" "\n" "\n" "********** nceperea aducerii(dump) nfa cu starea de nceput %d\n" #: nfa.c:115 #, c-format msgid "state # %4d\t" msgstr "stare # %4d\t" #: nfa.c:130 #, c-format msgid "********** end of dump\n" msgstr "********** sfrit de aducere(dump)\n" #: nfa.c:174 msgid "empty machine in dupmachine()" msgstr "main vid n dupmachine()" #: nfa.c:240 #, c-format msgid "Variable trailing context rule at line %d\n" msgstr "Regul de context de sfrit variabil la linia %d\n" #: nfa.c:364 msgid "bad state type in mark_beginning_as_normal()" msgstr "tip de stare greit n mark_beginning_as_normal()" #: nfa.c:609 #, c-format msgid "input rules are too complicated (>= %d NFA states)" msgstr "regulile de intrare(input) sunt prea complicate (>= %d stri NFA)" #: nfa.c:688 msgid "found too many transitions in mkxtion()" msgstr "s-au gsit prea multe tranziii n mkxtion()" #: nfa.c:714 #, c-format msgid "too many rules (> %d)!" msgstr "prea multe reguli (> %d)!" #: parse.y:159 msgid "unknown error processing section 1" msgstr "eroare necunoscut n procesarea seciunii 1" #: parse.y:184 parse.y:351 msgid "bad start condition list" msgstr "list de stri n condiie proast" #: parse.y:315 msgid "unrecognized rule" msgstr "regul necunoscut" #: parse.y:434 parse.y:447 parse.y:516 msgid "trailing context used twice" msgstr "context de sfrit(trailing) utilizat de dou ori" #: parse.y:552 parse.y:562 parse.y:635 parse.y:645 msgid "bad iteration values" msgstr "valori de iteraie greite" #: parse.y:580 parse.y:598 parse.y:663 parse.y:681 msgid "iteration value must be positive" msgstr "valoarea iteraiei trebuie s fie pozitiv" #: parse.y:804 parse.y:814 #, c-format msgid "the character range [%c-%c] is ambiguous in a case-insensitive scanner" msgstr "" "intervalul(range) de caracter [%c %c] este ambiguu ntr-un scanner caz-" "insenzitiv" #: parse.y:819 msgid "negative range in character class" msgstr "domeniu negativ n clasa de caractere" #: parse.y:916 #, fuzzy msgid "[:^lower:] is ambiguous in case insensitive scanner" msgstr "" "intervalul(range) de caracter [%c %c] este ambiguu ntr-un scanner caz-" "insenzitiv" #: parse.y:922 #, fuzzy msgid "[:^upper:] ambiguous in case insensitive scanner" msgstr "" "intervalul(range) de caracter [%c %c] este ambiguu ntr-un scanner caz-" "insenzitiv" #: scan.l:75 scan.l:618 scan.l:676 msgid "Input line too long\n" msgstr "Linie de intrare(input) prea lung\n" #: scan.l:161 #, c-format msgid "malformed '%top' directive" msgstr "directiv '%top' malformat" #: scan.l:183 #, no-c-format msgid "unrecognized '%' directive" msgstr "directiv '%' necunoscut" #: scan.l:192 #, fuzzy msgid "Definition name too long\n" msgstr "Linie de intrare(input) prea lung\n" #: scan.l:284 msgid "Unmatched '{'" msgstr "'{' fr corespondent" #: scan.l:300 #, c-format msgid "Definition value for {%s} too long\n" msgstr "" #: scan.l:317 msgid "incomplete name definition" msgstr "definire de nume incomplet" #: scan.l:443 #, fuzzy msgid "Option line too long\n" msgstr "Linie de intrare(input) prea lung\n" #: scan.l:451 #, c-format msgid "unrecognized %%option: %s" msgstr "%%opiune necunoscut: %s" #: scan.l:633 scan.l:800 msgid "bad character class" msgstr "clas de caractere greit" #: scan.l:683 #, c-format msgid "undefined definition {%s}" msgstr "definiie nedefinit {%s}" #: scan.l:755 #, c-format msgid "bad : %s" msgstr " greit: %s" #: scan.l:768 msgid "missing quote" msgstr "menionare(quote) lips" #: scan.l:834 #, c-format msgid "bad character class expression: %s" msgstr "expresie clas caracter greit: %s" #: scan.l:856 msgid "bad character inside {}'s" msgstr "caracter eronat ntre {}" #: scan.l:862 msgid "missing }" msgstr "lipsete }" #: scan.l:940 msgid "EOF encountered inside an action" msgstr "EOF ntlnit n mijlocul aciunii" #: scan.l:945 #, fuzzy msgid "EOF encountered inside pattern" msgstr "EOF ntlnit n mijlocul aciunii" #: scan.l:967 #, c-format msgid "bad character: %s" msgstr "caracter eronat: %s" #: scan.l:996 #, c-format msgid "can't open %s" msgstr "nu pot deschide %s" #: scanopt.c:291 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Folosire: %s [OPIUNI]...\n" #: scanopt.c:564 #, c-format msgid "option `%s' doesn't allow an argument\n" msgstr "opiunea `%s' nu permite parametri\n" #: scanopt.c:569 #, c-format msgid "option `%s' requires an argument\n" msgstr "opiunea `%s' necesit un parametru\n" #: scanopt.c:573 #, c-format msgid "option `%s' is ambiguous\n" msgstr "opiunea `%s' este ambigu\n" #: scanopt.c:577 #, c-format msgid "Unrecognized option `%s'\n" msgstr "Opiune necunoscut `%s'\n" #: scanopt.c:581 #, c-format msgid "Unknown error=(%d)\n" msgstr "Eroare necunoscut=(%d)\n" #: sym.c:100 msgid "symbol table memory allocation failed" msgstr "alocare de memorie pentru tabela de simboluri euat" #: sym.c:202 msgid "name defined twice" msgstr "nume definit de dou ori" #: sym.c:253 #, c-format msgid "start condition %s declared twice" msgstr "condiie de start %s definit de dou ori" #: yylex.c:56 msgid "premature EOF" msgstr "EOF prematur" #: yylex.c:198 #, c-format msgid "End Marker\n" msgstr "Marcaj de sfrit\n" #: yylex.c:204 #, c-format msgid "*Something Weird* - tok: %d val: %d\n" msgstr "*Ceva Ciudat* - tok: %d val: %d\n" #~ msgid "consistency check failed in symfollowset" #~ msgstr "verificare de consisten euat n symfollowset" #~ msgid "Can't specify header option if writing to stdout." #~ msgstr "Nu se poate specifica opiunea de header dac se scrie la stdout" #~ msgid "unknown -R option '%c'" #~ msgstr "opiune -R necunoscut `%c'" flex-2.5.39/po/nl.gmo0000644000175000017500000005266012314621665014574 0ustar srivastasrivastaT 7  AOh/'.> S"_#  *3'[z!C$)C%]"#FOn`"&0,+] $" )/Y4y5E/*.Z&(+"6>!u".Lg #' Kl : #(#$ $26$#i$+$$&$$ % %:%Y%*q%C%3%0&%E&k&%&&+&&" '-'G'Y'n'','3'/( 2(@((\((((+(( )'')O)m)))))**<*'N*v*$*2* * +,%+-R+ + +++!+&+,!*, L,Z,0q,!, ,,, -% -F3-z----"-..6.<H.-..9p0 00003 13A1u15111(1,2G2,X2 2+242$3,3"D3Fg3'3,34"4$@45e4 444R4-75e5w5%62&67Y6*66#6)67#/7$S7%x7$7>7C8OF8I878698O959$9#9@:+H:4t:::::; ,;M;k;;;!;; <#<%=<"c<#<< <H$HI/I0GI#xI0I#I&IJ-JP!"Q$DQ2iQ3QQ QQR7R#VRzR RR%RAR'>SfSvSSS1SOSCT$aTTT-TTUUN-U3|U%ZC9F"1]dB!)Um:&aT -+@Hoiz[8D}fn2;YOlc<NR=(_r^P *`J,06M Lx{' ?bIe~V/A GwWjQp3t7y4S v>Kq\|sg5hXEu.k#$ ********** beginning dump of nfa with start state %d DFA Dump: Equivalence Classes: Meta-Equivalence Classes: jam-transitions: EOF %d (%d saved) hash collisions, %d DFAs equal %d backing-up (non-accepting) states %d empty table entries %d epsilon states, %d double epsilon states %d protos created %d rules %d sets of reallocations needed %d state/nextstate pairs created %d table entries %d templates created, %d uses %d total table entries needed %d/%d (peak %d) nxt-chk entries created %d/%d (peak %d) template nxt-chk entries created %d/%d DFA states (%d words) %d/%d NFA states %d/%d base-def entries created %d/%d character classes needed %d/%d words of storage, %d reused %d/%d equivalence classes created %d/%d meta-equivalence classes created %d/%d start conditions %d/%d unique/duplicate transitions Beginning-of-line patterns used Compressed tables always back-up No backing up no character classes scanner options: - and may be the actual source of other reported performance penalties associated rule line numbers: out-transitions: %%option yylineno entails a performance penalty ONLY on rules that can match newline characters %array incompatible with -+ option%d backing up (non-accepting) states. %option yyclass only meaningful for C++ scanners%option yylineno cannot be used with REJECT%s %s %s version %s usage statistics: %s: fatal internal error, %s ********** end of dump *Something Weird* - tok: %d val: %d -Cf and -CF are mutually exclusive-Cf/-CF and -Cm don't make sense together-Cf/-CF and -I are incompatible-Cf/-CF are incompatible with lex-compatibility mode-I (interactive) entails a minor performance penalty -l AT&T lex compatibility option entails a large performance penalty -s option given but default rule can be matchedAllocation of buffer for line directive failedAllocation of buffer for m4 def failedAllocation of buffer for m4 undef failedAllocation of buffer to print string failedCan't use -+ with -CF optionCan't use -+ with -l optionCan't use --reentrant or --bison-bridge with -l optionCan't use -f or -F with -l optionCompressed tables always back up. Could not write ecstblCould not write eoltblCould not write ftblCould not write ssltblCould not write yyacc_tblCould not write yyacclist_tblCould not write yybase_tblCould not write yychk_tblCould not write yydef_tblCould not write yymeta_tblCould not write yynultrans_tblCould not write yynxt_tblCould not write yynxt_tbl[][]Definition name too long Definition value for {%s} too long EOF encountered inside an actionEOF encountered inside patternEnd Marker Generates programs that perform pattern-matching on text. Table Compression: -Ca, --align trade off larger tables for better memory alignment -Ce, --ecs construct equivalence classes -Cf do not compress tables; use -f representation -CF do not compress tables; use -F representation -Cm, --meta-ecs construct meta-equivalence classes -Cr, --read use read() instead of stdio for scanner input -f, --full generate fast, large scanner. Same as -Cfr -F, --fast use alternate table representation. Same as -CFr -Cem default compression (same as --ecs --meta-ecs) Debugging: -d, --debug enable debug mode in scanner -b, --backup write backing-up information to %s -p, --perf-report write performance report to stderr -s, --nodefault suppress default rule to ECHO unmatched text -T, --trace %s should run in trace mode -w, --nowarn do not generate warnings -v, --verbose write summary of scanner statistics to stdout Files: -o, --outfile=FILE specify output filename -S, --skel=FILE specify skeleton file -t, --stdout write scanner on stdout instead of %s --yyclass=NAME name of C++ class --header-file=FILE create a C header file in addition to the scanner --tables-file[=FILE] write tables to FILE Scanner behavior: -7, --7bit generate 7-bit scanner -8, --8bit generate 8-bit scanner -B, --batch generate batch scanner (opposite of -I) -i, --case-insensitive ignore case in patterns -l, --lex-compat maximal compatibility with original lex -X, --posix-compat maximal compatibility with POSIX lex -I, --interactive generate interactive scanner (opposite of -B) --yylineno track line count in yylineno Generated code: -+, --c++ generate C++ scanner class -Dmacro[=defn] #define macro defn (default defn is '1') -L, --noline suppress #line directives in scanner -P, --prefix=STRING use STRING as prefix instead of "yy" -R, --reentrant generate a reentrant C scanner --bison-bridge scanner for bison pure parser. --bison-locations include yylloc support. --stdinit initialize yyin/yyout to stdin/stdout --noansi-definitions old-style function definitions --noansi-prototypes empty parameter list in prototypes --nounistd do not include --noFUNCTION do not generate a particular FUNCTION Miscellaneous: -c do-nothing POSIX option -n do-nothing POSIX option -? -h, --help produce this help message -V, --version report %s version Input line too long Internal error. flexopts are malformed. No backing up. Option line too long Options -+ and --reentrant are mutually exclusive.REJECT cannot be used with -f or -FREJECT entails a large performance penalty State #%d is non-accepting - Try `%s --help' for more information. Unknown error=(%d) Unmatched '{'Unrecognized option `%s' Usage: %s [OPTIONS] [FILE]... Usage: %s [OPTIONS]... Variable trailing context rule at line %d Variable trailing context rules entail a large performance penalty [:^lower:] is ambiguous in case insensitive scanner[:^upper:] ambiguous in case insensitive scannerallocation of macro definition failedallocation of sko_stack failedattempt to increase array size failedbad : %sbad character '%s' detected in check_char()bad character classbad character class expression: %sbad character inside {}'sbad character: %sbad iteration valuesbad line in skeleton filebad start condition listbad state type in mark_beginning_as_normal()bad transition character detected in sympartition()bison bridge not supported for the C++ scanner.can't open %scan't open skeleton file %sconsistency check failed in epsclosure()could not create %scould not create backing-up info file %scould not create unique end-of-buffer statecould not write tables headerdangerous trailing contextdynamic memory failure in copy_string()empty machine in dupmachine()error closing backup file %serror closing output file %serror closing skeleton file %serror creating header file %serror deleting output file %serror writing backup file %serror writing output file %sfatal parse errorfound too many transitions in mkxtion()incomplete name definitioninput error reading skeleton file %sinput rules are too complicated (>= %d NFA states)iteration value must be positivemalformed '%top' directivememory allocation failed in allocate_array()memory allocation failed in yy_flex_xmalloc()missing quotemissing }name "%s" ridiculously longname defined twicenegative range in character classoption `%s' doesn't allow an argument option `%s' is ambiguous option `%s' requires an argument premature EOFrule cannot be matchedscanner requires -8 flag to use the character %sstart condition %s declared twicestate # %4d state # %d accepts: state # %d accepts: [%d] state # %d: symbol table memory allocation failedthe character range [%c-%c] is ambiguous in a case-insensitive scannertoo many rules (> %d)!trailing context used twiceundefined definition {%s}unknown -C option '%c'unknown error processing section 1unrecognized %%option: %sunrecognized '%' directiveunrecognized rulevariable trailing context rules cannot be used with -f or -Fyymore() entails a minor performance penalty Project-Id-Version: flex-2.5.38 Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net POT-Creation-Date: 2014-03-26 15:00-0400 PO-Revision-Date: 2014-02-13 22:25+0100 Last-Translator: Benno Schulenberg Language-Team: Dutch Language: nl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Lokalize 1.0 Plural-Forms: nplurals=2; plural=(n != 1); ********** begin van dump van NFA met starttoestand %d DFA-dump: Equivalentieklassen: Meta-equivalentieklassen: vastlopende transities: EOF %d (%d bewaarde) hash-botsingen, %d DFA's gelijk %d terugstappende (niet-accepterende) toestanden %d lege tabelitems %d epsilontoestanden, %d dubbele epsilontoestanden %d prototypes aangemaakt %d voorschriften %d sets van herallocaties waren nodig %d toestand/volgtoestand-paren aangemaakt %d tabelitems %d sjablonen aangemaakt, %d keer gebruikt in totaal %d tabelitems nodig %d/%d (piek %d) nxt-chk-items aangemaakt %d/%d (piek %d) sjabloon-nxt-chk-items aangemaakt %d/%d DFA-toestanden (%d woorden) %d/%d NFA-toestanden %d/%d base-def-items aangemaakt %d/%d tekenklassen hadden %d/%d opslagwoorden nodig, %d hergebruikt %d/%d equivalentieklassen aangemaakt %d/%d meta-equivalentieklassen aangemaakt %d/%d startvoorwaarden %d/%d unieke/dubbele transities Begin-van-regel-patronen gebruikt Gecomprimeerde tabellen kunnen altijd terugstappen Terugstappen is niet mogelijk geen tekenklassen scanneropties: - en zou de eigenlijke bron kunnen zijn van andere gemelde prestatieverminderingen regelnummers van de betrokken voorschriften: uit-transities: de %%optie yylineno betekent een prestatievermindering, maar ALLEEN voor voorschriften die met het regeleindeteken overeen kunnen komen Optie '-+' gaat niet samen met %array%d terugstappende (niet-accepterende) toestanden. %optie yyclass heeft alleen betekenis voor C++-scanners%optie yylineno gaat niet samen met REJECT%s %s %s versie %s gebruiksstatistieken: %s: **fatale interne programmafout**, %s ********** einde van de dump *Iets Raars* - token: %d waarde:%d Opties -Cf en -CF sluiten elkaar uitOpties -Cf/-CF en -Cm gaan niet samenOpties -Cf/-CF en -I gaan niet samenOptie -Cf of -CF gaat niet samen met lex-compatibiliteitsmodusoptie '-I' (interactief) betekent een kleine prestatievermindering de AT&T-lexcompatibiliteitsoptie '-l' betekent een grote prestatievermindering optie '-s' is gegeven, maar het standaardvoorschrift geeft overeenkomstenGeheugenreservering voor line-commandobuffer is misluktGeheugenreservering voor buffer voor m4 def is misluktGeheugenreservering voor buffer voor m4 undef is misluktGeheugenreservering voor stringprintbuffer is misluktOptie '-+' gaat niet samen met '-CF'Optie '-+' gaat niet samen met '-l'Optie '--reentrant' of '--bison-bridge' gaat niet samen met '-l'Optie '-f' of '-F' gaat niet samen met '-l'Gecomprimeerde tabellen kunnen altijd terugstappen. Kan ecstbl niet schrijvenKan eoltbl niet schrijvenKan ftbl niet schrijvenKan ssltbl niet schrijvenKan yyacc_tbl niet schrijvenKan yyacclist_tbl niet schrijvenKan yybase_tbl niet schrijvenKan yychk_tbl niet schrijvenKan yydef_tbl niet schrijvenKan yymeta_tbl niet schrijvenKan yynultrans_tbl niet schrijvenKan yynxt_tbl niet schrijvenKan yynxt_tbl[][] niet schrijvenDefinitienaam is te lang Definitiewaarde voor {%s} is te lang EOF werd bereikt tijdens een actieEOF werd bereikt binnen een patroonEindmarkering Genereert patroonherkenningsprogramma's. Tabelcompressie: -Ca, --align meer geheugen gebruiken voor beter uitgelijnde tabellen -Ce, --ecs equivalentieklassen construeren -Cf tabellen niet comprimeren; de -f-representatie gebruiken -CF tabellen niet comprimeren; de -F-representatie gebruiken -Cm, --meta-ecs meta-equivalentieklassen construeren -Cr, --read read() gebruiken in plaats van stdio voor scannerinvoer -f, --full een snelle, grote scanner genereren (zelfde als -Cfr) -F, --fast alternatieve tabelrepresentatie gebruiken (als -CFr) -Cem standaardcompressie (zelfde als --ecs --meta-ecs) Debuggen: -d, --debug debugmodus in scanner aanzetten -b, --backup terugstap-informatie naar %s schrijven -p, --perf-report prestatierapport naar standaardfoutuitvoer schrijven -s, --nodefault standaardvoorschrift dat onherkende tekst ECHO-t uitzetten -T, --trace %s uitvoeren in tracemodus -w, --nowarn geen waarschuwingen geven -v, --verbose scannerstatistieken naar standaarduitvoer schrijven Bestanden: -o, --outfile=BESTAND dit uitvoerbestand gebruiken -S, --skel=BESTAND dit skeletbestand gebruiken -t, --stdout scanner naar standaarduitvoer schrijven, niet naar %s --yyclass=NAAM naam van de C++-klasse --header-file=BESTAND behalve de scanner ook een C-headerbestand maken --tables-file[=BESTAND] tabellen schrijven (naar dit BESTAND) Scannergedrag: -7, --7bit een 7-bits-scanner genereren -8, --8bit een 8-bits-scanner genereren -B, --batch een batch-scanner genereren (tegengestelde van -I) -i, --case-insensitive hoofd-/kleine letters in patronen negeren -l, --lex-compat maximale compatibiliteit met de originele 'lex' -X, --posix-compat maximale compatibiliteit met de POSIX 'lex' -I, --interactive een interactieve scanner genereren --yylineno het regelaantal bijhouden in yylineno Gegenereerde code: -+, --c++ een C++-scannerklasse genereren -Dmacro[=defn] #define macro defn (standaard defn is '1') -L, --noline de #line-commando's in de scanner onderdrukken -P, --prefix=STRING STRING gebruiken als prefix in plaats van "yy" -R, --reentrant een herintreedbare C-scanner genereren --bison-bridge een scanner voor zuivere bison-ontleder genereren --bison-locations ondersteuning voor yylloc opnemen --stdinit yyin/yyout naar standaardin/uitvoer initialiseren --noansi-definitions oude-stijl functiedefinities --noansi-prototypes lege parameterlijst in prototypes --nounistd niet insluiten --noFUNCTIE specifieke FUNCTIE niet genereren Varia: -c nietsdoende POSIX-optie -n nietsdoende POSIX-optie -? -h, --help deze hulptekst tonen -V, --version de versie van %s tonen Invoerregel is te lang *Interne fout*: ongeldige flexopts. Terugstappen is niet mogelijk. Optiesregel is te lang Opties '-+' en '--reentrant' sluiten elkaar uit.REJECT gaat niet samen met -f of -FREJECT betekent een grote prestatievermindering Toestand #%d is niet-accepterend - Typ '%s --help' voor meer informatie. Onbekende fout=(%d) Ongepaarde '{'Onbekende optie '%s' Gebruik: %s [OPTIE...] [BESTAND...] Gebruik: %s [OPTIE...] Voorschrift met variabele nakomende context op regel %d Voorschriften met variabele nakomende context betekenen een grote prestatievermindering [:^lower:] is niet eenduidig in een hoofdletterongevoelige scanner[:^upper:] is niet eenduidig in een hoofdletterongevoelige scannergeheugenreservering voor macrodefinitie is misluktgeheugenreservering voor 'sko_stack' is misluktvergroting van array is misluktonjuiste : %sonjuist teken '%s' in check_char()onjuiste tekenklasseonjuiste expressie '%s' in tekenklasseonjuist teken tussen {}'sonjuist teken: %sonjuiste iteratiewaardenonjuiste regel in skeletbestandonjuiste lijst van startvoorwaardenonjuist toestandstype in mark_beginning_as_normal()onjuist transitieteken in sympartition()bison bridge wordt niet ondersteund voor de C++-scanner.kan %s niet openenkan skeletbestand %s niet openenconsistentiecontrole is mislukt in epsclosure()kan %s niet aanmakenkon terugstapbestand %s niet aanmakenkon geen unieke toestand voor einde-van-buffer aanmakenkan tabellenkop niet schrijvengevaarlijke nakomende contextdynamische geheugenfout in copy_string()lege machine in dupmachine()fout tijdens sluiten van terugstapbestand %sfout tijdens sluiten van uitvoerbestand %sfout tijdens sluiten van skeletbestand %sfout tijdens aanmaken van headerbestand %sfout tijdens verwijderen van uitvoerbestand %sfout tijdens schrijven van terugstapbestand %sfout tijdens schrijven van uitvoerbestand %sfatale ontledingsfoutte veel transities gevonden in mkxtion()onvolledige naamsdefinitieinvoerfout tijdens lezen van skeletbestand %sinvoervoorschriften zijn te ingewikkeld (>= %d NFA-toestanden)iteratiewaarde moet positief zijnverkeerde opbouw van '%top'-commandogeheugenreservering is mislukt in allocate_array()geheugenreservering is mislukt in yy_flex_xmalloc()ontbrekend aanhalingstekenontbrekende }naam is belachelijk lang: "%s"naam is twee keer gedefinieerdnegatief bereik in tekenklasseoptie '%s' staat geen argument toe optie '%s' is niet eenduidig optie '%s' vereist een argument voortijdig einde van bestandvoorschrift geeft geen overeenkomstenscanner heeft de optie '-8' nodig om teken %s te kunnen gebruikenstartvoorwaarde %s is twee keer vermeldtoestand # %4d toestand # %d accepteert: toestand # %d accepteert: [%d] toestand # %d: geheugenreservering voor symbolentabel is mislukthet tekenbereik [%c-%c] is niet eenduidig in een hoofdletterongevoelige scannerte veel voorschriften (> %d)!nakomende context twee keer gebruiktongedefinieerde definitie {%s}onbekende -C-optie '%c'onbekende fout tijdens verwerken van sectie 1onbekende %%option: %sonbekend '%'-commandoonbekend voorschriftvoorschriften met variabele nakomende context gaan niet samen met '-f' of '-F'yymore() betekent een kleine prestatievermindering flex-2.5.39/po/zh_CN.gmo0000644000175000017500000000760412314621666015163 0ustar srivastasrivasta5Gl7    (I]w%"%7Q3j (+1Nk$--R  &!! - : %G m   "    *       & 8 S g ~      &  " 6 V !b       $5%Pv   %7L_u.) ,3&#0-$ /2 (4  "!%1 +'*5 ********** beginning dump of nfa with start state %d DFA Dump: Equivalence Classes: %d rules scanner options: -%s %s ********** end of dump EOF encountered inside an actionUnknown error=(%d) Unrecognized option `%s' Usage: %s [OPTIONS] [FILE]... Usage: %s [OPTIONS]... attempt to increase array size failedbad : %sbad character classbad character class expression: %sbad character: %sbad line in skeleton filebad start condition listbad transition character detected in sympartition()can't open %scan't open skeleton file %sconsistency check failed in epsclosure()could not create %scould not create unique end-of-buffer stateerror closing backup file %serror closing output file %serror closing skeleton file %serror creating header file %serror deleting output file %serror writing backup file %serror writing output file %sfatal parse errorincomplete name definitioninput error reading skeleton file %smemory allocation failed in yy_flex_xmalloc()missing quotemissing }name defined twiceoption `%s' doesn't allow an argument option `%s' requires an argument rule cannot be matchedstart condition %s declared twicestate # %4d state # %d: symbol table memory allocation failedtoo many rules (> %d)!undefined definition {%s}unknown -C option '%c'unknown error processing section 1unrecognized %%option: %sunrecognized ruleProject-Id-Version: flex 2.5.8 Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net POT-Creation-Date: 2014-03-26 15:00-0400 PO-Revision-Date: 2002-08-18 10:37+0800 Last-Translator: Wang Li Language-Team: Chinese (simplified) Language: zh_CN MIME-Version: 1.0 Content-Type: text/plain; charset=gb2312 Content-Transfer-Encoding: 8bit ********** ʼʼ״̬Ϊ %d NFA DFA ȼࣺ %d ɨѡ-%s %s ********** ڶļδ֪=(%d) δ֪ѡ%s ÷%s [ѡ] [ļ]... ÷%s [ѡ]... ͼСʱʧ <ʼ>%sַַʽ%sַ%sǼļдʼ״̬б sympartition() ⵽ı任ַ޷ %s޷򿪹Ǽļ %sepsclosure() еһԼʧ޷ %s޷ end-of-buffer ״̬رձļ %s رļ %s رչǼļ %s ͷļ %s ɾļ %s д뱸ļ %s дļ %s ĽƶȡǼļ %s ʱ yy_flex_xmalloc() еڴʧ©© }ƶѡ%sܲ ѡ%sҪһ ޷ƥʼ %s ״̬ # %4d ״̬ # %d űڴʧ (> %d)δĶ {%s}δ֪ -C ѡ%cδ֪Ĵ 1ʶ %%ѡ%sʶĹflex-2.5.39/po/eo.po0000644000175000017500000006147412314621665014425 0ustar srivastasrivasta# Esperanto translation # Copyright © 2008 The Flex Project (msgids) # This file is distributed under the same license as the flex package. # Felipe Castro , 2012. # msgid "" msgstr "" "Project-Id-Version: flex 2.5.37\n" "Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2014-03-26 15:00-0400\n" "PO-Revision-Date: 2012-09-08 07:15-0300\n" "Last-Translator: Felipe Castro \n" "Language-Team: Esperanto \n" "Language: eo\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: buf.c:78 msgid "Allocation of buffer to print string failed" msgstr "Rezervo de bufro por printi ĉenon fiaskis" #: buf.c:100 msgid "Allocation of buffer for line directive failed" msgstr "Rezervo de bufro por linia instrukcio fiaskis" #: buf.c:177 msgid "Allocation of buffer for m4 def failed" msgstr "Rezervo de bufro por 'm4 def' fiaskis" #: buf.c:197 msgid "Allocation of buffer for m4 undef failed" msgstr "Rezervo de bufro por 'm4 undef' fiaskis" #: dfa.c:61 #, c-format msgid "State #%d is non-accepting -\n" msgstr "Stato #%d estas ne-akceptanta -\n" #: dfa.c:124 msgid "dangerous trailing context" msgstr "danĝera vosta kunteksto" #: dfa.c:166 #, c-format msgid " associated rule line numbers:" msgstr " lini-numeroj de asociita regulo:" #: dfa.c:202 #, c-format msgid " out-transitions: " msgstr " for-transigoj: " #: dfa.c:210 #, c-format msgid "" "\n" " jam-transitions: EOF " msgstr "" "\n" " ĵam-transigoj: EOF " #: dfa.c:341 msgid "consistency check failed in epsclosure()" msgstr "kontrolo pri kohereco fiaskis ĉe epsclosure()" #: dfa.c:429 msgid "" "\n" "\n" "DFA Dump:\n" "\n" msgstr "" "\n" "\n" "Nekropsio DFA:\n" "\n" #: dfa.c:604 msgid "could not create unique end-of-buffer state" msgstr "ne eblis krei unikan staton de bufro-fino" #: dfa.c:625 #, c-format msgid "state # %d:\n" msgstr "stato * %d:\n" #: dfa.c:785 msgid "Could not write yynxt_tbl[][]" msgstr "Ne eblis skribi yynxt_tbl[][]" #: dfa.c:1049 msgid "bad transition character detected in sympartition()" msgstr "malĝusta transiga signo estis detektata en sympartition()" #: gen.c:478 msgid "" "\n" "\n" "Equivalence Classes:\n" "\n" msgstr "" "\n" "\n" "Ekvivalentecaj Klasoj:\n" "\n" #: gen.c:662 gen.c:691 gen.c:1215 #, c-format msgid "state # %d accepts: [%d]\n" msgstr "stato # %d akceptas: [%d]\n" #: gen.c:1110 #, c-format msgid "state # %d accepts: " msgstr "stato # %d akceptas: " #: gen.c:1157 msgid "Could not write yyacclist_tbl" msgstr "Ne eblis skribi yyacclist_tbl" #: gen.c:1233 msgid "Could not write yyacc_tbl" msgstr "Ne eblis skribi yyacc_tbl" #: gen.c:1248 gen.c:1633 gen.c:1656 msgid "Could not write ecstbl" msgstr "Ne eblis skribi ecstbl" #: gen.c:1271 msgid "" "\n" "\n" "Meta-Equivalence Classes:\n" msgstr "" "\n" "\n" "Meta-Ekvivalentecaj Klasoj:\n" #: gen.c:1293 msgid "Could not write yymeta_tbl" msgstr "Ne eblis skribi yymeta_tbl" #: gen.c:1354 msgid "Could not write yybase_tbl" msgstr "Ne eblis skribi yybase_tbl" #: gen.c:1388 msgid "Could not write yydef_tbl" msgstr "Ne eblis skribi yydef_tbl" #: gen.c:1428 msgid "Could not write yynxt_tbl" msgstr "Ne eblis skribi yynxt_tbl" #: gen.c:1464 msgid "Could not write yychk_tbl" msgstr "Ne eblis skribi yychk_tbl" #: gen.c:1618 gen.c:1647 msgid "Could not write ftbl" msgstr "Ne eblis skribi ftbl" #: gen.c:1624 msgid "Could not write ssltbl" msgstr "Ne eblis skribi ssltbl" #: gen.c:1675 msgid "Could not write eoltbl" msgstr "Ne eblis skribi eoltbl" #: gen.c:1735 msgid "Could not write yynultrans_tbl" msgstr "Ne eblis skribi yynultrans_tbl" #: main.c:191 msgid "rule cannot be matched" msgstr "regulo ne povas esti korespondata" #: main.c:196 msgid "-s option given but default rule can be matched" msgstr "" "la modifilo -s estis indikata sed la apriora regulo povas esti korespondata" #: main.c:236 msgid "Can't use -+ with -l option" msgstr "Ne eblas uzi -+ kun la modifilo -l" #: main.c:239 msgid "Can't use -f or -F with -l option" msgstr "Ne eblas uzi -f aŭ -F kun la modifilo -l" #: main.c:243 msgid "Can't use --reentrant or --bison-bridge with -l option" msgstr "Ne eblas uzi --reentrant aŭ --bison-bridge kun la modifilo -l" #: main.c:275 msgid "-Cf/-CF and -Cm don't make sense together" msgstr "Sensencas -Cf/-CF kaj -Cm kune" #: main.c:278 msgid "-Cf/-CF and -I are incompatible" msgstr "-Cf/-CF kaj -I malakordas" #: main.c:282 msgid "-Cf/-CF are incompatible with lex-compatibility mode" msgstr "-Cf/-CF malakordas kun lex-akorda reĝimo" #: main.c:287 msgid "-Cf and -CF are mutually exclusive" msgstr "-Cf kaj -CF estas reciproke ekskluzivaj" #: main.c:291 msgid "Can't use -+ with -CF option" msgstr "Ne eblas uzi -+ kun la modifilo -CF" #: main.c:294 #, c-format msgid "%array incompatible with -+ option" msgstr "%array malakordas kun modifilo -+" #: main.c:299 msgid "Options -+ and --reentrant are mutually exclusive." msgstr "Modifiloj -+ kaj --reentrant estas reciproke ekskluzivaj." #: main.c:302 msgid "bison bridge not supported for the C++ scanner." msgstr "bison-ponto ne estas subtenata por la skanilo C++." #: main.c:357 main.c:403 #, c-format msgid "could not create %s" msgstr "ne eblis krei %s" #: main.c:416 msgid "could not write tables header" msgstr "ne eblis skribi tabel-kapojn" #: main.c:420 #, c-format msgid "can't open skeleton file %s" msgstr "ne eblas malfermi la skeletan dosieron %s" #: main.c:456 msgid "allocation of macro definition failed" msgstr "rezervo de makroa difino fiaskis" #: main.c:504 #, c-format msgid "input error reading skeleton file %s" msgstr "eniga eraro dum lego de la skeleta dosiero %s" #: main.c:508 #, c-format msgid "error closing skeleton file %s" msgstr "eraro dum fermo de la skeleta dosiero %s" #: main.c:693 #, c-format msgid "error creating header file %s" msgstr "eraro dum kreo de la kap-dosiero %s" #: main.c:701 #, c-format msgid "error writing output file %s" msgstr "eraro dum skribo de la eliga dosiero %s" #: main.c:705 #, c-format msgid "error closing output file %s" msgstr "eraro dum fermo de la eliga dosiero %s" #: main.c:709 #, c-format msgid "error deleting output file %s" msgstr "eraro dum forigo de eliga dosiero %s" #: main.c:716 #, c-format msgid "No backing up.\n" msgstr "Sen savkopiado.\n" #: main.c:720 #, c-format msgid "%d backing up (non-accepting) states.\n" msgstr "%d savkopiadas (ne-akceptantajn) statojn.\n" #: main.c:724 #, c-format msgid "Compressed tables always back up.\n" msgstr "Densigitaj tabeloj ĉiam estas savkopiataj.\n" #: main.c:727 #, c-format msgid "error writing backup file %s" msgstr "eraro dum skribo de la savkopia dosiero %s" #: main.c:731 #, c-format msgid "error closing backup file %s" msgstr "eraro dum fermo de la savkopia dosiero %s" #: main.c:736 #, c-format msgid "%s version %s usage statistics:\n" msgstr "%s versio %s statistikoj pri usado:\n" #: main.c:739 #, c-format msgid " scanner options: -" msgstr " skanilaj modifiloj: -" #: main.c:818 #, c-format msgid " %d/%d NFA states\n" msgstr " %d/%d statoj NFA\n" #: main.c:820 #, c-format msgid " %d/%d DFA states (%d words)\n" msgstr " %d/%d statoj DFA (%d vortoj)\n" #: main.c:822 #, c-format msgid " %d rules\n" msgstr " %d reguloj\n" #: main.c:827 #, c-format msgid " No backing up\n" msgstr " Sen savkopiado\n" #: main.c:831 #, c-format msgid " %d backing-up (non-accepting) states\n" msgstr " %d savkopianta (ne-akceptantajn) statojn\n" #: main.c:836 #, c-format msgid " Compressed tables always back-up\n" msgstr " Densigitaj tabeloj ĉiam savkopiite\n" #: main.c:840 #, c-format msgid " Beginning-of-line patterns used\n" msgstr " modeloj komenco-de-linio estas uzataj\n" #: main.c:842 #, c-format msgid " %d/%d start conditions\n" msgstr " %d/%d komencaj kondiĉoj\n" #: main.c:846 #, c-format msgid " %d epsilon states, %d double epsilon states\n" msgstr " %d epsilonaj statoj, %d duoblaj epsilonaj statoj\n" #: main.c:850 #, c-format msgid " no character classes\n" msgstr " neniu signo-klaso\n" #: main.c:854 #, c-format msgid " %d/%d character classes needed %d/%d words of storage, %d reused\n" msgstr " %d/%d signo-klasoj bezonis %d/%d vortojn da memoro, %d reuzitaj\n" #: main.c:859 #, c-format msgid " %d state/nextstate pairs created\n" msgstr " %d stato/sekvstato-paroj estis kreataj\n" #: main.c:862 #, c-format msgid " %d/%d unique/duplicate transitions\n" msgstr " %d/%d unikaj/duobligitaj transigoj\n" #: main.c:867 #, c-format msgid " %d table entries\n" msgstr " %d tabel-enigoj\n" #: main.c:875 #, c-format msgid " %d/%d base-def entries created\n" msgstr " %d/%d bazo-def enigoj estis kreataj\n" #: main.c:879 #, c-format msgid " %d/%d (peak %d) nxt-chk entries created\n" msgstr " %d/%d (pinto %d) enigoj nxt-chk estis kreataj\n" #: main.c:883 #, c-format msgid " %d/%d (peak %d) template nxt-chk entries created\n" msgstr " %d/%d (pinto %d) ŝablonaj enigoj nxt-chk estis kreataj\n" #: main.c:887 #, c-format msgid " %d empty table entries\n" msgstr " %d malplenaj tabel-enigoj\n" #: main.c:889 #, c-format msgid " %d protos created\n" msgstr " %d protoj estis kreataj\n" #: main.c:892 #, c-format msgid " %d templates created, %d uses\n" msgstr " %d ŝablonoj estis kreataj, %d uzoj\n" #: main.c:900 #, c-format msgid " %d/%d equivalence classes created\n" msgstr " %d/%d ekvivalento-klasoj estis kreataj\n" #: main.c:908 #, c-format msgid " %d/%d meta-equivalence classes created\n" msgstr " %d/%d metaekvivalento-klasoj estis kreataj\n" #: main.c:914 #, c-format msgid " %d (%d saved) hash collisions, %d DFAs equal\n" msgstr " %d (%d konservitaj) haketaj kolizioj, %d DFA egalaj\n" #: main.c:916 #, c-format msgid " %d sets of reallocations needed\n" msgstr " %d aroj de relokigoj estas bezonataj\n" #: main.c:918 #, c-format msgid " %d total table entries needed\n" msgstr " entute %d tabel-enigoj estas bezonataj\n" #: main.c:995 #, c-format msgid "Internal error. flexopts are malformed.\n" msgstr "Interna eraro. 'flexopt' estas misformitaj.\n" #: main.c:1005 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Provu '%s --help' por pli da informo.\n" #: main.c:1062 #, c-format msgid "unknown -C option '%c'" msgstr "nekonata modifilo -C '%c'" #: main.c:1191 #, c-format msgid "%s %s\n" msgstr "%s %s\n" #: main.c:1466 msgid "fatal parse error" msgstr "neriparebla analiz-eraro" #: main.c:1498 #, c-format msgid "could not create backing-up info file %s" msgstr "ne eblis krei savkopiad-informan dosieron %s" #: main.c:1519 #, c-format msgid "-l AT&T lex compatibility option entails a large performance penalty\n" msgstr "" "La modifilo -l AT&T de akordigo al lex alportas grandan malaltigon de " "rendimento\n" #: main.c:1522 #, c-format msgid " and may be the actual source of other reported performance penalties\n" msgstr "" " kaj povas esti la vera fonto de aliaj raportitaj malaltigoj de rendimento\n" #: main.c:1528 #, c-format msgid "" "%%option yylineno entails a performance penalty ONLY on rules that can match " "newline characters\n" msgstr "" "%%option yylineno alportas malaltigon de rendimento NUR kun reguloj kiuj " "povas akordiĝi kun novliniaj signoj\n" #: main.c:1535 #, c-format msgid "-I (interactive) entails a minor performance penalty\n" msgstr "-I (interage) alportas etan malaltigon de rendimento\n" #: main.c:1540 #, c-format msgid "yymore() entails a minor performance penalty\n" msgstr "yymore() alportas etan malaltigon de rendimento\n" #: main.c:1546 #, c-format msgid "REJECT entails a large performance penalty\n" msgstr "REJECT alportas grandan malaltigon de rendimento\n" #: main.c:1551 #, c-format msgid "Variable trailing context rules entail a large performance penalty\n" msgstr "Variabla vosta kunteksto alportas grandan malaltigon de rendimento\n" #: main.c:1563 msgid "REJECT cannot be used with -f or -F" msgstr "REJECT ne povas esti uzata kun -f aŭ F" #: main.c:1566 #, c-format msgid "%option yylineno cannot be used with REJECT" msgstr "%option yylineno ne povas esti uzata kun REJECT" #: main.c:1569 msgid "variable trailing context rules cannot be used with -f or -F" msgstr "variablaj vostaj kuntekstaj reguloj ne povas esti uzataj kun -f aŭ F" #: main.c:1692 #, c-format msgid "%option yyclass only meaningful for C++ scanners" msgstr "%option yyclass nur koheras por skaniloj C++" #: main.c:1799 #, c-format msgid "Usage: %s [OPTIONS] [FILE]...\n" msgstr "Uzado: %s [MODIFILOJ] [DOSIERO]...\n" #: main.c:1802 #, c-format msgid "" "Generates programs that perform pattern-matching on text.\n" "\n" "Table Compression:\n" " -Ca, --align trade off larger tables for better memory alignment\n" " -Ce, --ecs construct equivalence classes\n" " -Cf do not compress tables; use -f representation\n" " -CF do not compress tables; use -F representation\n" " -Cm, --meta-ecs construct meta-equivalence classes\n" " -Cr, --read use read() instead of stdio for scanner input\n" " -f, --full generate fast, large scanner. Same as -Cfr\n" " -F, --fast use alternate table representation. Same as -CFr\n" " -Cem default compression (same as --ecs --meta-ecs)\n" "\n" "Debugging:\n" " -d, --debug enable debug mode in scanner\n" " -b, --backup write backing-up information to %s\n" " -p, --perf-report write performance report to stderr\n" " -s, --nodefault suppress default rule to ECHO unmatched text\n" " -T, --trace %s should run in trace mode\n" " -w, --nowarn do not generate warnings\n" " -v, --verbose write summary of scanner statistics to stdout\n" "\n" "Files:\n" " -o, --outfile=FILE specify output filename\n" " -S, --skel=FILE specify skeleton file\n" " -t, --stdout write scanner on stdout instead of %s\n" " --yyclass=NAME name of C++ class\n" " --header-file=FILE create a C header file in addition to the " "scanner\n" " --tables-file[=FILE] write tables to FILE\n" "\n" "Scanner behavior:\n" " -7, --7bit generate 7-bit scanner\n" " -8, --8bit generate 8-bit scanner\n" " -B, --batch generate batch scanner (opposite of -I)\n" " -i, --case-insensitive ignore case in patterns\n" " -l, --lex-compat maximal compatibility with original lex\n" " -X, --posix-compat maximal compatibility with POSIX lex\n" " -I, --interactive generate interactive scanner (opposite of -B)\n" " --yylineno track line count in yylineno\n" "\n" "Generated code:\n" " -+, --c++ generate C++ scanner class\n" " -Dmacro[=defn] #define macro defn (default defn is '1')\n" " -L, --noline suppress #line directives in scanner\n" " -P, --prefix=STRING use STRING as prefix instead of \"yy\"\n" " -R, --reentrant generate a reentrant C scanner\n" " --bison-bridge scanner for bison pure parser.\n" " --bison-locations include yylloc support.\n" " --stdinit initialize yyin/yyout to stdin/stdout\n" " --noansi-definitions old-style function definitions\n" " --noansi-prototypes empty parameter list in prototypes\n" " --nounistd do not include \n" " --noFUNCTION do not generate a particular FUNCTION\n" "\n" "Miscellaneous:\n" " -c do-nothing POSIX option\n" " -n do-nothing POSIX option\n" " -?\n" " -h, --help produce this help message\n" " -V, --version report %s version\n" msgstr "" "Generas programojn kiuj prilaboras modelo-kongruon en tekstoj.\n" "\n" "Tabela Densigo:\n" " -Ca, --align prilaboras pli grandajn tabelojn por pli bone organizi " "memoron\n" " -Ce, --ecs konstrui ekvivalento-klasojn\n" " -Cf ne densigi tabelojn; uzi reprezenton -f\n" " -CF ne densigi tabelojn; uzi reprezenton -F\n" " -Cm, --meta-ecs konstrui metaekvivalento-klasojn\n" " -Cr, --read uzi read() anstataŭ 'stdio' kiel enigon al la skanilo\n" " -f, --full generi rapidan, grandan skanilon. Same ol -Cfr\n" " -F, --fast uzi alternativan tabel-reprezenton. Same ol -CFr\n" " -Cem apriora densigo (same ol --ecs --meta-ecs)\n" "\n" "Rafinado:\n" " -d, --debug ebligi rafinigan reĝimon en la skanilo\n" " -b, --backup skribi savkopian informon al %s\n" " -p, --perf-report skribi raporton pri rendimento al 'stderr'\n" " -s, --nodefault demeti aprioran regulon por EĤIGI nekongruan " "tekston\n" " -T, --trace %s devos funkcii sub spura reĝimo\n" " -w, --nowarn ne generi avertojn\n" " -v, --verbose skribi resumon de la skanilaj statistikoj al " "'stdout'\n" "\n" "Dosieroj:\n" " -o, --outfile=DOSIERO indiki eligan dosiernomon\n" " -S, --skel=DOSIERO indiki skeletan dosieron\n" " -t, --stdout skribi skanilon en 'stdout' anstataŭ %s\n" " --yyclass=NOMO nomo de klaso C++\n" " --header-file=DOSIERO krei kapdosieron C krom la skanilo\n" " --tables-file[=DOSIERO] skribi tabelojn al DOSIERO\n" "\n" "Skanila konduto:\n" " -7, --7bit generi 7-bit-skanilon\n" " -8, --8bit generi 8-bit-skanilon\n" " -B, --batch generi aŭtomatan skanilon (male ol -I)\n" " -i, --case-insensitive preteratenti usklecon en modeloj\n" " -l, --lex-compat maksimuma akordigo kun la originala lex\n" " -X, --posix-compat maksimuma akordigo kun la POSIX lex\n" " -I, --interactive generi interagan skanilon (male ol -B)\n" " --yylineno kontroli lini-nombradon en yylineno\n" "\n" "Generata kodumaĵo:\n" " -+, --c++ generi klason de skanilo C++\n" " -Dmacro[=defn] uzi #define por makroo defn (apriora defn estas " "'1')\n" " -L, --noline demeti instrukciojn #line en la skanilo\n" " -P, --prefix=ĈENO uzi ĈENOn kiel prefikson anstataŭ \"yy\"\n" " -R, --reentrant generi reenigan skanilon C\n" " --bison-bridge skanilo por nur-bizon analizilo.\n" " --bison-locations inkluzivigi subtenon al yylloc.\n" " --stdinit ekigi yyin/yyout al stdin/stdout\n" " --noansi-definitions malmodern-stilaj difinoj de funkcioj\n" " --noansi-prototypes malplena parametro-listo en prototipoj\n" " --nounistd ne inkluzivigi \n" " --noFUNKCIO ne generi specifan FUNKCIOn\n" "\n" "Ceteraĵo:\n" " -c nenio-faranta modifilo POSIX\n" " -n nenio-faranta modifilo POSIX\n" " -?\n" " -h, --help produkti tiun ĉi help-mesaĝon\n" " -V, --version raporti la version de %s\n" #: misc.c:65 msgid "allocation of sko_stack failed" msgstr "rezervo de sko_stack fiaskis" #: misc.c:102 misc.c:128 #, c-format msgid "name \"%s\" ridiculously long" msgstr "la nomo \"%s\" estas ridinde longa" #: misc.c:177 msgid "memory allocation failed in allocate_array()" msgstr "rezervo de memoro fiaskis en allocate_array()" #: misc.c:230 #, c-format msgid "bad character '%s' detected in check_char()" msgstr "malĝusta signo '%s' estis detektata en check_char()" #: misc.c:235 #, c-format msgid "scanner requires -8 flag to use the character %s" msgstr "la skanilo postulas la flagon -8 por uzi la signon %s" #: misc.c:268 msgid "dynamic memory failure in copy_string()" msgstr "fiasko de dinamika memoro en copy_string()" #: misc.c:367 #, c-format msgid "%s: fatal internal error, %s\n" msgstr "%s: neriparebla interna eraro, %s\n" #: misc.c:803 msgid "attempt to increase array size failed" msgstr "provo pliigi grandon de tabelo fiaskis" #: misc.c:930 msgid "bad line in skeleton file" msgstr "malĝusta linio en skeleta dosiero" #: misc.c:979 msgid "memory allocation failed in yy_flex_xmalloc()" msgstr "rezervo de memoro fiaskis en yy_flex_xmalloc()" #: nfa.c:104 #, c-format msgid "" "\n" "\n" "********** beginning dump of nfa with start state %d\n" msgstr "" "\n" "\n" "********** komenco de ŝuto de nfa kun ekstato %d\n" #: nfa.c:115 #, c-format msgid "state # %4d\t" msgstr "stato # %4d\t" #: nfa.c:130 #, c-format msgid "********** end of dump\n" msgstr "********** fino de ŝuto\n" #: nfa.c:174 msgid "empty machine in dupmachine()" msgstr "malplena maŝino en dupmachine()" #: nfa.c:240 #, c-format msgid "Variable trailing context rule at line %d\n" msgstr "Variabla vosta kunteksta regulo ĉe linio %d\n" #: nfa.c:364 msgid "bad state type in mark_beginning_as_normal()" msgstr "malĝusta stat-tipo en mark_beginning_as_normal()" #: nfa.c:609 #, c-format msgid "input rules are too complicated (>= %d NFA states)" msgstr "enigaj reguloj estas tro komplikaj (>= %d statoj NFA)" #: nfa.c:688 msgid "found too many transitions in mkxtion()" msgstr "tro multe da transigoj estis trovataj en mkxtion()" #: nfa.c:714 #, c-format msgid "too many rules (> %d)!" msgstr "tro multe da reguoloj (> %d)!" #: parse.y:159 msgid "unknown error processing section 1" msgstr "Nekonata erar-proceza sekcio 1" #: parse.y:184 parse.y:351 msgid "bad start condition list" msgstr "malĝusta komenc-kondiĉa listo" #: parse.y:315 msgid "unrecognized rule" msgstr "nerekonata regulo" #: parse.y:434 parse.y:447 parse.y:516 msgid "trailing context used twice" msgstr "vosta kunteksto estis uzata duoble" #: parse.y:552 parse.y:562 parse.y:635 parse.y:645 msgid "bad iteration values" msgstr "malĝustaj iteraciaj valoroj" #: parse.y:580 parse.y:598 parse.y:663 parse.y:681 msgid "iteration value must be positive" msgstr "iteracia valoro devas esti pozitiva" #: parse.y:804 parse.y:814 #, c-format msgid "the character range [%c-%c] is ambiguous in a case-insensitive scanner" msgstr "la signara intervalo [%c-%c] estas dusenca en sen-uskleca skanilo" #: parse.y:819 msgid "negative range in character class" msgstr "negativa intervalo en signo-klaso" #: parse.y:916 msgid "[:^lower:] is ambiguous in case insensitive scanner" msgstr "[:^lower:] estas dusenca en sen-uskleca skanilo" #: parse.y:922 msgid "[:^upper:] ambiguous in case insensitive scanner" msgstr "[:^upper:] estas dusenca en sen-uskleca skanilo" #: scan.l:75 scan.l:618 scan.l:676 msgid "Input line too long\n" msgstr "Eniga linio tro longas\n" #: scan.l:161 #, c-format msgid "malformed '%top' directive" msgstr "misformita instrukcio '%top'" #: scan.l:183 #, no-c-format msgid "unrecognized '%' directive" msgstr "nerekonita instrukcio '%'" #: scan.l:192 msgid "Definition name too long\n" msgstr "Nom-difino tro longas\n" #: scan.l:284 msgid "Unmatched '{'" msgstr "Senpara '{'" #: scan.l:300 #, c-format msgid "Definition value for {%s} too long\n" msgstr "Valor-difino por {%s} tro longas\n" #: scan.l:317 msgid "incomplete name definition" msgstr "nekompleta nom-difino" #: scan.l:443 msgid "Option line too long\n" msgstr "Linio de modifiloj tro longas\n" #: scan.l:451 #, c-format msgid "unrecognized %%option: %s" msgstr "nerekonita %%modifilo: %s" #: scan.l:633 scan.l:800 msgid "bad character class" msgstr "malĝusta signo-klaso" #: scan.l:683 #, c-format msgid "undefined definition {%s}" msgstr "nedifinita difino {%s}" #: scan.l:755 #, c-format msgid "bad : %s" msgstr "malĝusta : %s" #: scan.l:768 msgid "missing quote" msgstr "mankas citilo" #: scan.l:834 #, c-format msgid "bad character class expression: %s" msgstr "malĝusta signo-klasa esprimo: %s" #: scan.l:856 msgid "bad character inside {}'s" msgstr "malĝusta signo interne de {}" #: scan.l:862 msgid "missing }" msgstr "mankas }" #: scan.l:940 msgid "EOF encountered inside an action" msgstr "EOF estis trovata interne de ago" #: scan.l:945 msgid "EOF encountered inside pattern" msgstr "EOF estis trovata interne de modelo" #: scan.l:967 #, c-format msgid "bad character: %s" msgstr "malĝusta signo: %s" #: scan.l:996 #, c-format msgid "can't open %s" msgstr "ne eblas malfermi %s" #: scanopt.c:291 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Uzado: %s [MODIFILOJ]...\n" #: scanopt.c:564 #, c-format msgid "option `%s' doesn't allow an argument\n" msgstr "la modifilo '%s' ne permesas argumenton\n" #: scanopt.c:569 #, c-format msgid "option `%s' requires an argument\n" msgstr "la modifilo '%s' postulas argumenton\n" #: scanopt.c:573 #, c-format msgid "option `%s' is ambiguous\n" msgstr "la modifilo '%s' estas dusenca\n" #: scanopt.c:577 #, c-format msgid "Unrecognized option `%s'\n" msgstr "Nerekonita modifilo '%s'\n" #: scanopt.c:581 #, c-format msgid "Unknown error=(%d)\n" msgstr "Nekonata eraro=(%d)\n" #: sym.c:100 msgid "symbol table memory allocation failed" msgstr "rezervo de simbol-tabela memoro fiaskis" #: sym.c:202 msgid "name defined twice" msgstr "nomo estis difinata duoble" #: sym.c:253 #, c-format msgid "start condition %s declared twice" msgstr "la komenca kondiĉo %s estis deklarata duoble" #: yylex.c:56 msgid "premature EOF" msgstr "tro frua EOF" #: yylex.c:198 #, c-format msgid "End Marker\n" msgstr "Fino-markilo\n" #: yylex.c:204 #, c-format msgid "*Something Weird* - tok: %d val: %d\n" msgstr "*Io Stranga* - ero: %d val: %d\n" flex-2.5.39/po/de.po0000644000175000017500000006477512314621664014420 0ustar srivastasrivasta# German messages for flex # Copyright (C) 2007 The Flex Project (msgids) # This file is distributed under the same license as the flex package. # Michael Piefel , 2002, 2003, 2008, 2012 # msgid "" msgstr "" "Project-Id-Version: flex 2.5.36\n" "Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2014-03-26 15:00-0400\n" "PO-Revision-Date: 2012-08-03 13:42+0200\n" "Last-Translator: Michael Piefel \n" "Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: buf.c:78 msgid "Allocation of buffer to print string failed" msgstr "Anlegen des Puffers zur Ausgabe der Zeichenkette fehlgeschlagen" #: buf.c:100 msgid "Allocation of buffer for line directive failed" msgstr "Anlegen des Puffers für Zeilen-Direktive fehlgeschlagen" #: buf.c:177 msgid "Allocation of buffer for m4 def failed" msgstr "Anlegen des Puffers für m4 def fehlgeschlagen" #: buf.c:197 msgid "Allocation of buffer for m4 undef failed" msgstr "Anlegen des Puffers für m4 undef fehlgeschlagen" #: dfa.c:61 #, c-format msgid "State #%d is non-accepting -\n" msgstr "Zustand #%d ist nicht-akzeptierend –\n" #: dfa.c:124 msgid "dangerous trailing context" msgstr "gefährlicher folgender Kontext" #: dfa.c:166 #, c-format msgid " associated rule line numbers:" msgstr " verbundene Regelzeilennummern" #: dfa.c:202 #, c-format msgid " out-transitions: " msgstr " Aus-Übergänge: " #: dfa.c:210 #, c-format msgid "" "\n" " jam-transitions: EOF " msgstr "" "\n" " Hemm-Übergänge: EOF " #: dfa.c:341 msgid "consistency check failed in epsclosure()" msgstr "Konsistenzprüfung fehlgeschlagen in epsclosure()" #: dfa.c:429 msgid "" "\n" "\n" "DFA Dump:\n" "\n" msgstr "" "\n" "\n" "DFA-Ausgabe:\n" "\n" #: dfa.c:604 msgid "could not create unique end-of-buffer state" msgstr "konnte keinen einzigartigen Ende-des-Puffers-Zustand erzeugen" #: dfa.c:625 #, c-format msgid "state # %d:\n" msgstr "Zustand # %d:\n" #: dfa.c:785 msgid "Could not write yynxt_tbl[][]" msgstr "Konnte yynxt_tbl[][] nicht schreiben" #: dfa.c:1049 msgid "bad transition character detected in sympartition()" msgstr "ungültiges Übergangszeichen in sympartition() entdeckt" #: gen.c:478 msgid "" "\n" "\n" "Equivalence Classes:\n" "\n" msgstr "" "\n" "\n" "Äquivalenz-Klassen:\n" "\n" #: gen.c:662 gen.c:691 gen.c:1215 #, c-format msgid "state # %d accepts: [%d]\n" msgstr "Zustand # %d akzeptiert: [%d]\n" #: gen.c:1110 #, c-format msgid "state # %d accepts: " msgstr "Zustand # %d akzeptiert: " #: gen.c:1157 msgid "Could not write yyacclist_tbl" msgstr "Konnte yyacclist_tbl nicht schreiben" #: gen.c:1233 msgid "Could not write yyacc_tbl" msgstr "Konnte yyacc_tbl nicht schreiben" #: gen.c:1248 gen.c:1633 gen.c:1656 msgid "Could not write ecstbl" msgstr "Konnte ecstbl nicht schreiben" #: gen.c:1271 msgid "" "\n" "\n" "Meta-Equivalence Classes:\n" msgstr "" "\n" "\n" "Meta-Äquivalenz-Klassen:\n" #: gen.c:1293 msgid "Could not write yymeta_tbl" msgstr "Konnte yymeta_tbl nicht schreiben" #: gen.c:1354 msgid "Could not write yybase_tbl" msgstr "Konnte yybase_tbl nicht schreiben" #: gen.c:1388 msgid "Could not write yydef_tbl" msgstr "Konnte yydef_tbl nicht schreiben" #: gen.c:1428 msgid "Could not write yynxt_tbl" msgstr "Konnte yynxt_tbl nicht schreiben" #: gen.c:1464 msgid "Could not write yychk_tbl" msgstr "Konnte yychk_tbl nicht schreiben" #: gen.c:1618 gen.c:1647 msgid "Could not write ftbl" msgstr "Konnte ftbl nicht schreiben" #: gen.c:1624 msgid "Could not write ssltbl" msgstr "Konnte ssltbl nicht schreiben" #: gen.c:1675 msgid "Could not write eoltbl" msgstr "Konnte eoltbl nicht schreiben" #: gen.c:1735 msgid "Could not write yynultrans_tbl" msgstr "Konnte yynultrans_tbl nicht schreiben" #: main.c:191 msgid "rule cannot be matched" msgstr "Regel kann nicht passen" #: main.c:196 msgid "-s option given but default rule can be matched" msgstr "„-s“-Option gegeben, aber Vorgabe-Regel kann nicht passen" #: main.c:236 msgid "Can't use -+ with -l option" msgstr "Kann nicht „-+“ zusammen mit „-l“-Option verwenden" #: main.c:239 msgid "Can't use -f or -F with -l option" msgstr "Kann nicht „-f“ oder „-F“ zusammen mit „-l“-Option verwenden" #: main.c:243 msgid "Can't use --reentrant or --bison-bridge with -l option" msgstr "" "Kann nicht „--reentrant“ oder „--bison-bridge“ mit „-l“-Option verwenden" #: main.c:275 msgid "-Cf/-CF and -Cm don't make sense together" msgstr "„-Cf“/„-CF“ und „-Cm“ sind zusammen nicht sinnvoll" #: main.c:278 msgid "-Cf/-CF and -I are incompatible" msgstr "„-Cf“/„-CF“ und „-I“ sind inkompatibel" #: main.c:282 msgid "-Cf/-CF are incompatible with lex-compatibility mode" msgstr "„-Cf“/„-CF“ sind inkompatibel mit lex-Kompatibilitätsmodus" #: main.c:287 msgid "-Cf and -CF are mutually exclusive" msgstr "„-Cf“ und „-CF“ schließen sich gegenseitig aus" #: main.c:291 msgid "Can't use -+ with -CF option" msgstr "Kann nicht „-+“ zusammen mit „-CF“-Option verwenden" #: main.c:294 #, c-format msgid "%array incompatible with -+ option" msgstr "„%array“ inkompatibel mit „-+“-Option" #: main.c:299 msgid "Options -+ and --reentrant are mutually exclusive." msgstr "Optionen „-+“ und „--reentrant“ schließen sich gegenseitig aus." #: main.c:302 msgid "bison bridge not supported for the C++ scanner." msgstr "Brücke zu Bison für den C++-Scanner nicht unterstützt." #: main.c:357 main.c:403 #, c-format msgid "could not create %s" msgstr "konnte %s nicht erzeugen" #: main.c:416 msgid "could not write tables header" msgstr "konnte Tabellenköpfe nicht schreiben" #: main.c:420 #, c-format msgid "can't open skeleton file %s" msgstr "kann Skelett-Datei %s nicht öffnen" #: main.c:456 msgid "allocation of macro definition failed" msgstr "Anlegen der Makrodefinition fehlgeschlagen" #: main.c:504 #, c-format msgid "input error reading skeleton file %s" msgstr "Eingabefehler beim Lesen der Skelett-Datei %s" #: main.c:508 #, c-format msgid "error closing skeleton file %s" msgstr "Fehler beim Schließen der Skelett-Datei %s" #: main.c:693 #, c-format msgid "error creating header file %s" msgstr "Fehler beim Erstellen der Header-Datei %s" #: main.c:701 #, c-format msgid "error writing output file %s" msgstr "Fehler beim Schreiben der Ausgabe-Datei %s" #: main.c:705 #, c-format msgid "error closing output file %s" msgstr "Fehler beim Schließen der Ausgabe-Datei %s" #: main.c:709 #, c-format msgid "error deleting output file %s" msgstr "Fehler beim Löschen der Ausgabe-Datei %s" #: main.c:716 #, c-format msgid "No backing up.\n" msgstr "Kein Backing-up.\n" #: main.c:720 #, c-format msgid "%d backing up (non-accepting) states.\n" msgstr "%d Zustände mit Backing-up (nicht akzeptierend).\n" #: main.c:724 #, c-format msgid "Compressed tables always back up.\n" msgstr "Komprimierte Tabellen benutzen immer Backing-up.\n" #: main.c:727 #, c-format msgid "error writing backup file %s" msgstr "Fehler beim Schreiben der Backup-Datei %s" #: main.c:731 #, c-format msgid "error closing backup file %s" msgstr "Fehler beim Schließen der Backup-Datei %s" #: main.c:736 #, c-format msgid "%s version %s usage statistics:\n" msgstr "%s Version %s Benutzungsstatistiken:\n" #: main.c:739 #, c-format msgid " scanner options: -" msgstr " Scanner-Optionen: -" #: main.c:818 #, c-format msgid " %d/%d NFA states\n" msgstr " %d/%d NFA-Zustände\n" #: main.c:820 #, c-format msgid " %d/%d DFA states (%d words)\n" msgstr " %d/%d DFA-Zustände (%d Wörter)\n" #: main.c:822 #, c-format msgid " %d rules\n" msgstr " %d Regeln\n" #: main.c:827 #, c-format msgid " No backing up\n" msgstr " Kein Backing-up.\n" #: main.c:831 #, c-format msgid " %d backing-up (non-accepting) states\n" msgstr " %d Zustände mit Backing-up (nicht akzeptierend).\n" #: main.c:836 #, c-format msgid " Compressed tables always back-up\n" msgstr " Komprimierte Tabellen benutzen immer Backing-up.\n" #: main.c:840 #, c-format msgid " Beginning-of-line patterns used\n" msgstr " Zeilenanfang-Muster benutzt\n" #: main.c:842 #, c-format msgid " %d/%d start conditions\n" msgstr " %d/%d Startbedingungen\n" #: main.c:846 #, c-format msgid " %d epsilon states, %d double epsilon states\n" msgstr " %d Epsilon-Zustände, %d Doppel-Epsilon-Zustände\n" #: main.c:850 #, c-format msgid " no character classes\n" msgstr " keine Zeichenklassen\n" #: main.c:854 #, c-format msgid " %d/%d character classes needed %d/%d words of storage, %d reused\n" msgstr "" " %d/%d Zeichenklassen brauchten %d/%d Speicherwörter, %d wiederbenutzt\n" #: main.c:859 #, c-format msgid " %d state/nextstate pairs created\n" msgstr " %d Zustand/Nächster-Zustand-Paare erzeugt\n" #: main.c:862 #, c-format msgid " %d/%d unique/duplicate transitions\n" msgstr " %d/%d einzigartige/doppelte Übergänge\n" #: main.c:867 #, c-format msgid " %d table entries\n" msgstr " %d Tabelleneinträge\n" #: main.c:875 #, c-format msgid " %d/%d base-def entries created\n" msgstr " %d/%d Einträge „base-def“ erzeugt\n" #: main.c:879 #, c-format msgid " %d/%d (peak %d) nxt-chk entries created\n" msgstr " %d/%d (max. %d) Einträge „nxt-chk“ erzeugt\n" #: main.c:883 #, c-format msgid " %d/%d (peak %d) template nxt-chk entries created\n" msgstr " %d/%d (max. %d) Einträge „template nxt-chk“ erzeugt\n" #: main.c:887 #, c-format msgid " %d empty table entries\n" msgstr " %d leere Tabelleneinträge\n" #: main.c:889 #, c-format msgid " %d protos created\n" msgstr " %d Protos erzeugt\n" #: main.c:892 #, c-format msgid " %d templates created, %d uses\n" msgstr " %d Schablonen erzeugt, %d Benutzungen\n" #: main.c:900 #, c-format msgid " %d/%d equivalence classes created\n" msgstr " %d/%d Äquivalenz-Klassen erzeugt\n" #: main.c:908 #, c-format msgid " %d/%d meta-equivalence classes created\n" msgstr " %d/%d Meta-Äquivalenz-Klassen erzeugt\n" #: main.c:914 #, c-format msgid " %d (%d saved) hash collisions, %d DFAs equal\n" msgstr " %d (%d gespeichert) Hash-Kollisionen, %d DFAs gleich\n" #: main.c:916 #, c-format msgid " %d sets of reallocations needed\n" msgstr " %d Sätze von Neuallozierungen benötigt\n" #: main.c:918 #, c-format msgid " %d total table entries needed\n" msgstr " %d Tabelleneinträge insgesamt benötigt\n" #: main.c:995 #, c-format msgid "Internal error. flexopts are malformed.\n" msgstr "Interner Fehler. flexopts sind missgestaltet.\n" #: main.c:1005 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Versuchen Sie es mit „%s --help“ für mehr Informationen.\n" #: main.c:1062 #, c-format msgid "unknown -C option '%c'" msgstr "unbekannte „-C“-Option „%c“" #: main.c:1191 #, c-format msgid "%s %s\n" msgstr "%s %s\n" #: main.c:1466 msgid "fatal parse error" msgstr "fataler Parse-Fehler" #: main.c:1498 #, c-format msgid "could not create backing-up info file %s" msgstr "konnte Datei %s mit Informationen zum Backing-up nicht erzeugen" #: main.c:1519 #, c-format msgid "-l AT&T lex compatibility option entails a large performance penalty\n" msgstr "" "-l AT&T-lex-Kompatibilitätsmodus führt zu großen Geschwindigkeitseinbußen\n" #: main.c:1522 #, c-format msgid " and may be the actual source of other reported performance penalties\n" msgstr "" " und ist möglicherweise die wirkliche Quelle anderer gemeldeter Einbußen\n" #: main.c:1528 #, c-format msgid "" "%%option yylineno entails a performance penalty ONLY on rules that can match " "newline characters\n" msgstr "" "%%option yylineno führt zu Geschwindigkeitseinbußen NUR für Regeln, die auf " "einen Zeilenvorschub passen können\n" #: main.c:1535 #, c-format msgid "-I (interactive) entails a minor performance penalty\n" msgstr "-I (interaktiv) führt zu kleineren Geschwindigkeitseinbußen\n" #: main.c:1540 #, c-format msgid "yymore() entails a minor performance penalty\n" msgstr "yymore() führt zu kleineren Geschwindigkeitseinbußen\n" #: main.c:1546 #, c-format msgid "REJECT entails a large performance penalty\n" msgstr "REJECT führt zu großen Geschwindigkeitseinbußen\n" #: main.c:1551 #, c-format msgid "Variable trailing context rules entail a large performance penalty\n" msgstr "" "Regeln mit variablem folgenden Kontext führen zu großen " "Geschwindigkeitseinbußen\n" #: main.c:1563 msgid "REJECT cannot be used with -f or -F" msgstr "REJECT kann nicht mit „-f“ oder „-F“ zusammen verwendet werden" #: main.c:1566 #, c-format msgid "%option yylineno cannot be used with REJECT" msgstr "%option yylineno kann nicht mit REJECT zusammen verwendet werden" #: main.c:1569 msgid "variable trailing context rules cannot be used with -f or -F" msgstr "" "Regeln mit variablem folgenden Kontext können nicht mit „-f“ oder „-F“ " "verwendet werden" #: main.c:1692 #, c-format msgid "%option yyclass only meaningful for C++ scanners" msgstr "%option yyclass ist nur bei C++-Scannern sinnvoll" #: main.c:1799 #, c-format msgid "Usage: %s [OPTIONS] [FILE]...\n" msgstr "Aufruf: %s [OPTIONEN...] [DATEI...]\n" #: main.c:1802 #, c-format msgid "" "Generates programs that perform pattern-matching on text.\n" "\n" "Table Compression:\n" " -Ca, --align trade off larger tables for better memory alignment\n" " -Ce, --ecs construct equivalence classes\n" " -Cf do not compress tables; use -f representation\n" " -CF do not compress tables; use -F representation\n" " -Cm, --meta-ecs construct meta-equivalence classes\n" " -Cr, --read use read() instead of stdio for scanner input\n" " -f, --full generate fast, large scanner. Same as -Cfr\n" " -F, --fast use alternate table representation. Same as -CFr\n" " -Cem default compression (same as --ecs --meta-ecs)\n" "\n" "Debugging:\n" " -d, --debug enable debug mode in scanner\n" " -b, --backup write backing-up information to %s\n" " -p, --perf-report write performance report to stderr\n" " -s, --nodefault suppress default rule to ECHO unmatched text\n" " -T, --trace %s should run in trace mode\n" " -w, --nowarn do not generate warnings\n" " -v, --verbose write summary of scanner statistics to stdout\n" "\n" "Files:\n" " -o, --outfile=FILE specify output filename\n" " -S, --skel=FILE specify skeleton file\n" " -t, --stdout write scanner on stdout instead of %s\n" " --yyclass=NAME name of C++ class\n" " --header-file=FILE create a C header file in addition to the " "scanner\n" " --tables-file[=FILE] write tables to FILE\n" "\n" "Scanner behavior:\n" " -7, --7bit generate 7-bit scanner\n" " -8, --8bit generate 8-bit scanner\n" " -B, --batch generate batch scanner (opposite of -I)\n" " -i, --case-insensitive ignore case in patterns\n" " -l, --lex-compat maximal compatibility with original lex\n" " -X, --posix-compat maximal compatibility with POSIX lex\n" " -I, --interactive generate interactive scanner (opposite of -B)\n" " --yylineno track line count in yylineno\n" "\n" "Generated code:\n" " -+, --c++ generate C++ scanner class\n" " -Dmacro[=defn] #define macro defn (default defn is '1')\n" " -L, --noline suppress #line directives in scanner\n" " -P, --prefix=STRING use STRING as prefix instead of \"yy\"\n" " -R, --reentrant generate a reentrant C scanner\n" " --bison-bridge scanner for bison pure parser.\n" " --bison-locations include yylloc support.\n" " --stdinit initialize yyin/yyout to stdin/stdout\n" " --noansi-definitions old-style function definitions\n" " --noansi-prototypes empty parameter list in prototypes\n" " --nounistd do not include \n" " --noFUNCTION do not generate a particular FUNCTION\n" "\n" "Miscellaneous:\n" " -c do-nothing POSIX option\n" " -n do-nothing POSIX option\n" " -?\n" " -h, --help produce this help message\n" " -V, --version report %s version\n" msgstr "" "Generiert Programme, die Mustererkennung in Texten durchführen.\n" "\n" "Tabellen-Komprimierung:\n" " -Ca, --align erzeuge größere Tabellen, aber bessere " "Speicherausrichtung\n" " -Ce, --ecs konstruiere Äquivalenz-Klassen\n" " -Cf komprimiere Tabellen nicht; benutze „-f“-Repräsentation\n" " -CF komprimiere Tabellen nicht; benutze „-F“-Repräsentation\n" " -Cm, --meta-ecs konstruiere Meta-Äquivalenz-Klassen\n" " -Cr, --read benutze read() anstelle von stdio für Scannereingabe\n" " -f, --full generiere schnellen, großen Scanner. Genau wie -Cfr\n" " -F, --fast benutze alternative Tabellenrepräsentation. Genau wie -" "CFr\n" " -Cem Voreinstellung (genau wie --ecs --meta-ecs)\n" "\n" "Fehlersuche:\n" " -d, --debug Fehlersuch-(Debug-)Modus im Scanner aktivieren\n" " -b, --backup schreibe Backing-up-Information in %s\n" " -p, --perf-report schreibe Performanzbericht auf stderr\n" " -s, --nodefault unterdücke Standardregel ECHO für nicht passenden " "Text\n" " -T, --trace %s sollte im Trace-Modus laufen\n" " -w, --nowarn generiere keine Warnungen\n" " -v, --verbose schreibe Zusammenfassung der Scannerstatistiken " "auf stdout\n" "\n" "Dateien:\n" " -o, --outfile=DATEI Ausgabe-Dateiname\n" " -S, --skel=DATEI Skelettdatei\n" " -t, --stdout gib Scanner auf stdout anstelle von %s aus\n" " --yyclass=NAME Name der C++-Klasse\n" " --header-file=DATEI erstelle eine C-Headerdatei zusätzlich zum " "Scanner\n" " --tables-file[=DATEI] schreibe Tabellen in DATEI\n" "\n" "Scannerverhalten:\n" " -7, --7bit generiere 7-bit-Scanner\n" " -8, --8bit generiere 8-bit-Scanner\n" " -B, --batch generiere Dateiscanner (Gegenteil von -I)\n" " -i, --case-insensitive ignoriere Groß-/Kleinschreibung in Mustern\n" " -l, --lex-compat maximale Kompatibilität mit originalem lex\n" " -X, --posix-compat maximala Kompatibilität mit lex aus POSIX\n" " -I, --interactive generiere interaktiven Scanner (Gegenteil von -B)\n" " --yylineno verfolge Zeilenzähler in yylineno\n" "\n" "Generierter Code:\n" " -+, --c++ generiere C++-Scannerklasse\n" " -Dmacro[=defn] #definiere Makro (Standard-Defn ist „1“)\n" " -L, --noline unterdrücke #line-Direktiven im Scanner\n" " -P, --prefix=STRING benutze STRING als Präfix anstelle von „yy“\n" " -R, --reentrant generiere einen reentranten C-Scanner\n" " --bison-bridge Scanner für reentranten Bison-Parser\n" " (Bison-Deklaration „%%pure_parser“)\n" " --bison-locations yylloc-Unterstützung aktivieren\n" " --stdinit initialisiere yyin/yyout mit stdin/stdout\n" " --noansi-definitions Funktionsdefinitionen alten Stils\n" " --noansi-prototypes leere Parameterlisten in Prototypen\n" " --nounistd nicht mit einbinden\n" " --noFUNKTION generiere eine bestimmte FUNKTION nicht\n" "\n" "Verschiedenes:\n" " -c keine Wirkung (aus POSIX)\n" " -n keine Wirkung (aus POSIX)\n" " -?\n" " -h, --help produziere diese Hilfenachricht\n" " -V, --version melde %s-Version\n" #: misc.c:65 msgid "allocation of sko_stack failed" msgstr "Anlegen des sko_stack fehlgeschlagen" #: misc.c:102 misc.c:128 #, c-format msgid "name \"%s\" ridiculously long" msgstr "name „%s“ ist lächerlich lang" #: misc.c:177 msgid "memory allocation failed in allocate_array()" msgstr "Speicheranforderung in allocate_array() fehlgeschlagen" #: misc.c:230 #, c-format msgid "bad character '%s' detected in check_char()" msgstr "ungültiges Zeichen „%s“ in check_char() entdeckt" #: misc.c:235 #, c-format msgid "scanner requires -8 flag to use the character %s" msgstr "Scanner erfordert Option „-8“, um das Zeichen %s benutzen zu können" #: misc.c:268 msgid "dynamic memory failure in copy_string()" msgstr "Fehler beim dynamischen Speicher in copy_string()" #: misc.c:367 #, c-format msgid "%s: fatal internal error, %s\n" msgstr "%s: fataler interner Fehler, %s\n" #: misc.c:803 msgid "attempt to increase array size failed" msgstr "Versuch, die Feldgröße zu erhöhen, fehlgeschlagen" #: misc.c:930 msgid "bad line in skeleton file" msgstr "ungültige Zeile in Skelettdatei" #: misc.c:979 msgid "memory allocation failed in yy_flex_xmalloc()" msgstr "Speicheranforderung in yy_flex_xmalloc() fehlgeschlagen" #: nfa.c:104 #, c-format msgid "" "\n" "\n" "********** beginning dump of nfa with start state %d\n" msgstr "" "\n" "\n" "********** beginne Ausgabe von NFA mit Startzustand %d\n" #: nfa.c:115 #, c-format msgid "state # %4d\t" msgstr "Zustand # %4d\t" #: nfa.c:130 #, c-format msgid "********** end of dump\n" msgstr "********** end der Ausgabe\n" #: nfa.c:174 msgid "empty machine in dupmachine()" msgstr "leere Maschine in dupmachine()" #: nfa.c:240 #, c-format msgid "Variable trailing context rule at line %d\n" msgstr "Regel mit veränderlichem folgenden Kontext in Zeile %d\n" #: nfa.c:364 msgid "bad state type in mark_beginning_as_normal()" msgstr "ungültiger Zustandstyp in mark_beginning_as_normal()" #: nfa.c:609 #, c-format msgid "input rules are too complicated (>= %d NFA states)" msgstr "Eingaberegeln sind zu kompliziert (>= %d NFA-Zustände)" #: nfa.c:688 msgid "found too many transitions in mkxtion()" msgstr "zu viele Übergänge in mkxtion() gefunden" #: nfa.c:714 #, c-format msgid "too many rules (> %d)!" msgstr "zu viele Regeln (> %d)!" #: parse.y:159 msgid "unknown error processing section 1" msgstr "unbekannter Fehler beim Bearbeiten von Abschnitt 1" #: parse.y:184 parse.y:351 msgid "bad start condition list" msgstr "ungültige Startbedingungs-Liste" #: parse.y:315 msgid "unrecognized rule" msgstr "nicht erkannte Regel" #: parse.y:434 parse.y:447 parse.y:516 msgid "trailing context used twice" msgstr "folgender Kontext doppelt verwendet" #: parse.y:552 parse.y:562 parse.y:635 parse.y:645 msgid "bad iteration values" msgstr "ungültige Iterationswerte" #: parse.y:580 parse.y:598 parse.y:663 parse.y:681 msgid "iteration value must be positive" msgstr "Iterationswerte müssen positiv sein" #: parse.y:804 parse.y:814 #, c-format msgid "the character range [%c-%c] is ambiguous in a case-insensitive scanner" msgstr "" "der Zeichenbereich [%c-%c] ist in Scannern ohne Beachtung von Groß-/" "Kleinschreibung mehrdeutig" #: parse.y:819 msgid "negative range in character class" msgstr "negativer Bereich in Zeichenklasse" #: parse.y:916 msgid "[:^lower:] is ambiguous in case insensitive scanner" msgstr "" "[:^lower:] ist in Scannern ohne Beachtung von Groß-/Kleinschreibung " "mehrdeutig" #: parse.y:922 msgid "[:^upper:] ambiguous in case insensitive scanner" msgstr "" "[:^upper:] ist in Scannern ohne Beachtung von Groß-/Kleinschreibung " "mehrdeutig" #: scan.l:75 scan.l:618 scan.l:676 msgid "Input line too long\n" msgstr "Eingabezeile zu lang\n" #: scan.l:161 #, c-format msgid "malformed '%top' directive" msgstr "falsch geformte „%top“-Direktive" #: scan.l:183 #, no-c-format msgid "unrecognized '%' directive" msgstr "nicht erkannte „%“-Direktive" #: scan.l:192 msgid "Definition name too long\n" msgstr "Definitionsname zu lang\n" #: scan.l:284 msgid "Unmatched '{'" msgstr "Unbalancierte „{“" #: scan.l:300 #, c-format msgid "Definition value for {%s} too long\n" msgstr "Definitionswert für {%s} ist zu lang\n" #: scan.l:317 msgid "incomplete name definition" msgstr "unvollständige Namensdefinition" #: scan.l:443 msgid "Option line too long\n" msgstr "Optionszeile zu lang\n" #: scan.l:451 #, c-format msgid "unrecognized %%option: %s" msgstr "nicht erkannte %%option: %s" #: scan.l:633 scan.l:800 msgid "bad character class" msgstr "ungültige Zeichenklasse" #: scan.l:683 #, c-format msgid "undefined definition {%s}" msgstr "undefinierte Definitione {%s}" #: scan.l:755 #, c-format msgid "bad : %s" msgstr "ungültige : %s" #: scan.l:768 msgid "missing quote" msgstr "fehlendes Anführungszeichen" #: scan.l:834 #, c-format msgid "bad character class expression: %s" msgstr "ungültiger Zeichenklassenausdruck: %s" #: scan.l:856 msgid "bad character inside {}'s" msgstr "ungültiges Zeichen innerhalb von {}" #: scan.l:862 msgid "missing }" msgstr "fehlende }" #: scan.l:940 msgid "EOF encountered inside an action" msgstr "EOF innerhalb einer Aktion angetroffen" #: scan.l:945 msgid "EOF encountered inside pattern" msgstr "EOF innerhalb eines Musters angetroffen" #: scan.l:967 #, c-format msgid "bad character: %s" msgstr "ungültiges Zeichen: %s" #: scan.l:996 #, c-format msgid "can't open %s" msgstr "kann %s nicht öffnen" #: scanopt.c:291 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Aufruf: %s [OPTIONEN...]\n" #: scanopt.c:564 #, c-format msgid "option `%s' doesn't allow an argument\n" msgstr "Option „%s“ erlaubt kein Argument\n" #: scanopt.c:569 #, c-format msgid "option `%s' requires an argument\n" msgstr "Option „%s“ verlangt ein Argument\n" #: scanopt.c:573 #, c-format msgid "option `%s' is ambiguous\n" msgstr "Option „%s“ ist mehrdeutig\n" #: scanopt.c:577 #, c-format msgid "Unrecognized option `%s'\n" msgstr "nicht erkannte Option „%s“\n" #: scanopt.c:581 #, c-format msgid "Unknown error=(%d)\n" msgstr "Unbekannter Fehler=(%d)\n" #: sym.c:100 msgid "symbol table memory allocation failed" msgstr "Speicheranforderung für Symboltabelle fehlgeschlagen" #: sym.c:202 msgid "name defined twice" msgstr "Name zweimal definiert" #: sym.c:253 #, c-format msgid "start condition %s declared twice" msgstr "Startbedingung %s zweimal definiert" #: yylex.c:56 msgid "premature EOF" msgstr "vorzeitiges EOF" #: yylex.c:198 #, c-format msgid "End Marker\n" msgstr "Endemarkierung\n" #: yylex.c:204 #, c-format msgid "*Something Weird* - tok: %d val: %d\n" msgstr "*Etwas Seltsames* - tok: %d val: %d\n" #~ msgid "consistency check failed in symfollowset" #~ msgstr "Konstistenzüberprüfung in symfollowset fehlgeschlagen" #~ msgid "Can't specify header option if writing to stdout." #~ msgstr "Kann Header-Option nicht benutzen wenn Ausgabe nach stdout geht." #~ msgid "unknown -R option '%c'" #~ msgstr "unbekannte „-R“-Option „%c“" #~ msgid "-Cf/-CF and %option yylineno are incompatible" #~ msgstr "„-Cf“/„-CF“ und „%option yylineno“ sind inkompatibel" flex-2.5.39/po/fi.po0000644000175000017500000006505212314621665014414 0ustar srivastasrivasta# Finnish messages for flex. # Copyright © 2009, 2012 The Flex Project (msgids) # This file is put in the public domain. # This file is distributed under the same license as the flex package. # Jorma Karvonen , 2009, 2012. # msgid "" msgstr "" "Project-Id-Version: flex 2.5.36\n" "Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2014-03-26 15:00-0400\n" "PO-Revision-Date: 2012-08-02 21:16+0200\n" "Last-Translator: Jorma Karvonen \n" "Language-Team: Finnish \n" "Language: fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: buf.c:78 msgid "Allocation of buffer to print string failed" msgstr "Puskurin varaaminen merkkijonon tulostamiseen epäonnistui" #: buf.c:100 msgid "Allocation of buffer for line directive failed" msgstr "Puskurin varaaminen rividirektiiville epäonnistui" #: buf.c:177 msgid "Allocation of buffer for m4 def failed" msgstr "Puskurin varaaminen m4 def -määrittelylle epäonnistui" #: buf.c:197 msgid "Allocation of buffer for m4 undef failed" msgstr "Puskurin varaaminen m4 undef -määrittelylle epäonnistui" #: dfa.c:61 #, c-format msgid "State #%d is non-accepting -\n" msgstr "Tila #%d on ei-hyväksyvä -\n" # Sanastollisessa analyysissä (lexical analysis) esimerkiksi kauttaviivalla ilmoitetaan, että viivan jälkeinen teksti kuuluu "trailing context"-tekstiin #: dfa.c:124 msgid "dangerous trailing context" msgstr "vaarallinen jättökonteksti" #: dfa.c:166 #, c-format msgid " associated rule line numbers:" msgstr " yhdistetyt sääntörivinumerot:" #: dfa.c:202 #, c-format msgid " out-transitions: " msgstr " ulossiirtymät: " #: dfa.c:210 #, c-format msgid "" "\n" " jam-transitions: EOF " msgstr "" "\n" " ruuhkasiirtymät: TIEDOSTONLOPPUMERKKI " #: dfa.c:341 msgid "consistency check failed in epsclosure()" msgstr "yhtenäisyystarkistus epäonnistui epsclosure()-funktiossa" # DFA on akronyymi käsitteelle "deterministic finite automaton" eli deterministinen äärellinen automaatti. #: dfa.c:429 msgid "" "\n" "\n" "DFA Dump:\n" "\n" msgstr "" "\n" "\n" "Deterministisen äärellisen automaatin vedos:\n" "\n" #: dfa.c:604 msgid "could not create unique end-of-buffer state" msgstr "ei voitu luoda uniikkia puskurinlopputilaa" #: dfa.c:625 #, c-format msgid "state # %d:\n" msgstr "tila numero %d:\n" #: dfa.c:785 msgid "Could not write yynxt_tbl[][]" msgstr "Ei voitu kirjoittaa yynxt_tbl[][]" #: dfa.c:1049 msgid "bad transition character detected in sympartition()" msgstr "väärä siirtymämerkki havaittu funktiossa sympartition()" #: gen.c:478 msgid "" "\n" "\n" "Equivalence Classes:\n" "\n" msgstr "" "\n" "\n" "Ekvivalenssiluokat:\n" "\n" #: gen.c:662 gen.c:691 gen.c:1215 #, c-format msgid "state # %d accepts: [%d]\n" msgstr "tila numero %d hyväksyy: [%d]\n" #: gen.c:1110 #, c-format msgid "state # %d accepts: " msgstr "tila numero %d hyväksyy: " #: gen.c:1157 msgid "Could not write yyacclist_tbl" msgstr "Ei voitu kirjoittaa: yyacclist_tbl" #: gen.c:1233 msgid "Could not write yyacc_tbl" msgstr "Ei voitu kirjoittaa: yyacc_tbl" #: gen.c:1248 gen.c:1633 gen.c:1656 msgid "Could not write ecstbl" msgstr "Ei voitu kirjoitaa ecstbl" #: gen.c:1271 msgid "" "\n" "\n" "Meta-Equivalence Classes:\n" msgstr "" "\n" "\n" "Meta-ekvivalenssiluokkia:\n" #: gen.c:1293 msgid "Could not write yymeta_tbl" msgstr "Ei voitu kirjoittaa: yymeta_tbl" #: gen.c:1354 msgid "Could not write yybase_tbl" msgstr "Ei voitu kirjoittaa: yybase_tbl" #: gen.c:1388 msgid "Could not write yydef_tbl" msgstr "Ei voitu kirjoittaa: yydef_tbl" #: gen.c:1428 msgid "Could not write yynxt_tbl" msgstr "Ei voitu kirjoittaa: yynxt_tbl" #: gen.c:1464 msgid "Could not write yychk_tbl" msgstr "Ei voitu kirjoittaa: yychk_tbl" #: gen.c:1618 gen.c:1647 msgid "Could not write ftbl" msgstr "Ei voitu kirjoittaa: ftbl" #: gen.c:1624 msgid "Could not write ssltbl" msgstr "Ei voitu kirjoittaa: ssltbl" #: gen.c:1675 msgid "Could not write eoltbl" msgstr "Ei voitu kirjoittaa: eoltbl" #: gen.c:1735 msgid "Could not write yynultrans_tbl" msgstr "Ei voitu kirjoittaa: yynultrans_tbl" #: main.c:191 msgid "rule cannot be matched" msgstr "sääntö ei voinut täsmätä" #: main.c:196 msgid "-s option given but default rule can be matched" msgstr "valitsin -s annettu mutta oletussääntö ei voinut täsmätä" #: main.c:236 msgid "Can't use -+ with -l option" msgstr "Ei voi käyttää -+ valitsimen -l kanssa" #: main.c:239 msgid "Can't use -f or -F with -l option" msgstr "Ei voi käyttää valitsinta -f tai -F valitsimen -l kanssa" #: main.c:243 msgid "Can't use --reentrant or --bison-bridge with -l option" msgstr "" "Ei voi käyttää valitsinta --reentrant tai --bison-bridge valitsimen -l kanssa" #: main.c:275 msgid "-Cf/-CF and -Cm don't make sense together" msgstr "-Cf/-CF ja -Cm eivät ole järkeviä yhdessä" #: main.c:278 msgid "-Cf/-CF and -I are incompatible" msgstr "-Cf/-CF ja -I ovat yhteensopimattomia" #: main.c:282 msgid "-Cf/-CF are incompatible with lex-compatibility mode" msgstr "-Cf/-CF ovat yhteensopimattomia lex-yhteensopivuustilassa" #: main.c:287 msgid "-Cf and -CF are mutually exclusive" msgstr "-Cf ja -CF ovat toisensa poissulkevia" #: main.c:291 msgid "Can't use -+ with -CF option" msgstr "Ei voi käyttää valitsinta -+ valitsimen -CF kanssa" #: main.c:294 #, c-format msgid "%array incompatible with -+ option" msgstr "%array on yhteensopimaton valitsimen -+ kanssa" #: main.c:299 msgid "Options -+ and --reentrant are mutually exclusive." msgstr "Valitsimen -+ ja --reentrant ovat toisensa poissulkevia." # bison bridge tarkoittaa, että flex käyttää bison-ohjelmaa analyysissä #: main.c:302 msgid "bison bridge not supported for the C++ scanner." msgstr "”bison bridge”-menettelyä ei tueta C++-skannerille." #: main.c:357 main.c:403 #, c-format msgid "could not create %s" msgstr "ei voitu luoda %s" #: main.c:416 msgid "could not write tables header" msgstr "ei voitu kirjoittaa tauluotsaketta" #: main.c:420 #, c-format msgid "can't open skeleton file %s" msgstr "ei voi avata kehystiedostoa %s" #: main.c:456 msgid "allocation of macro definition failed" msgstr "Makromäärityksen varaaminen epäonnistui" #: main.c:504 #, c-format msgid "input error reading skeleton file %s" msgstr "syötevirhe luettaessa kehystiedostoa %s" #: main.c:508 #, c-format msgid "error closing skeleton file %s" msgstr "virhe suljettaessa kehystiedostoa %s" #: main.c:693 #, c-format msgid "error creating header file %s" msgstr "virhe luotaessa otsaketiedostoa %s" #: main.c:701 #, c-format msgid "error writing output file %s" msgstr "virhe kirjoitettaessa tulostetiedostoa %s" #: main.c:705 #, c-format msgid "error closing output file %s" msgstr "virhe suljettaessa tulostetiedostoa %s" #: main.c:709 #, c-format msgid "error deleting output file %s" msgstr "virhe poistettaessa tulostetiedostoa %s" #: main.c:716 #, c-format msgid "No backing up.\n" msgstr "Ei varmuuskopiointia.\n" #: main.c:720 #, c-format msgid "%d backing up (non-accepting) states.\n" msgstr "%d (ei-hyväksyvää) varmuuskopiointitilaa.\n" #: main.c:724 #, c-format msgid "Compressed tables always back up.\n" msgstr "Tiivistetyt taulut varmuuskopioidaan aina.\n" #: main.c:727 #, c-format msgid "error writing backup file %s" msgstr "virhe kirjoitettaessa varmuuskopiotiedostoa %s" #: main.c:731 #, c-format msgid "error closing backup file %s" msgstr "virhe suljettaessa varmuuskopiotiedostoa %s" #: main.c:736 #, c-format msgid "%s version %s usage statistics:\n" msgstr "%s-version %s käyttötilastot:\n" #: main.c:739 #, c-format msgid " scanner options: -" msgstr " skannerivalitsimet: -" # Epädeterministinen äärellinen automaatti, lyh. NFA (engl. non-deterministic finite-state automaton) #: main.c:818 #, c-format msgid " %d/%d NFA states\n" msgstr " %d/%d Epädeterministisen äärellisen automaatin tilaa\n" #: main.c:820 #, c-format msgid " %d/%d DFA states (%d words)\n" msgstr " %d/%d Deterministisen äärellisen automaatin tilaa (%d sanaa)\n" #: main.c:822 #, c-format msgid " %d rules\n" msgstr " %d sääntöä\n" #: main.c:827 #, c-format msgid " No backing up\n" msgstr " Ei varmuuskopiointia\n" #: main.c:831 #, c-format msgid " %d backing-up (non-accepting) states\n" msgstr " %d (ei-hyväksyvää) varmuuskopiotilaa\n" #: main.c:836 #, c-format msgid " Compressed tables always back-up\n" msgstr " Tiivistetyt taulut varmuuskopioidaan aina\n" #: main.c:840 #, c-format msgid " Beginning-of-line patterns used\n" msgstr " Rivin-alku-malleja käytetään\n" #: main.c:842 #, c-format msgid " %d/%d start conditions\n" msgstr " %d/%d-käynnistysehtoja\n" #: main.c:846 #, c-format msgid " %d epsilon states, %d double epsilon states\n" msgstr " %d epsilon-tilaa, %d double epsilon-tilaa\n" #: main.c:850 #, c-format msgid " no character classes\n" msgstr " ei merkkiluokkia\n" #: main.c:854 #, c-format msgid " %d/%d character classes needed %d/%d words of storage, %d reused\n" msgstr "" " %d/%d merkkiluokkaa tarvittu %d/%d tallennussanaan, %d käytetty uudelleen\n" #: main.c:859 #, c-format msgid " %d state/nextstate pairs created\n" msgstr " %d tila/seuraavatila-paria luotu\n" #: main.c:862 #, c-format msgid " %d/%d unique/duplicate transitions\n" msgstr " %d/%d uniikkia/kaksoiskappelsiirtymää\n" #: main.c:867 #, c-format msgid " %d table entries\n" msgstr " %d-tauluriviä\n" #: main.c:875 #, c-format msgid " %d/%d base-def entries created\n" msgstr " %d/%d base-def-alkiota luotu\n" #: main.c:879 #, c-format msgid " %d/%d (peak %d) nxt-chk entries created\n" msgstr " %d/%d (huippu %d) nxt-chk-alkiota luotu\n" #: main.c:883 #, c-format msgid " %d/%d (peak %d) template nxt-chk entries created\n" msgstr " %d/%d (huippu %d) malline nxt-chk-alkiota luotu\n" #: main.c:887 #, c-format msgid " %d empty table entries\n" msgstr " %d tyhjää taulualkiota\n" #: main.c:889 #, c-format msgid " %d protos created\n" msgstr " %d protoa luotu\n" #: main.c:892 #, c-format msgid " %d templates created, %d uses\n" msgstr " %d mallinetta luotu, %d käytetään\n" #: main.c:900 #, c-format msgid " %d/%d equivalence classes created\n" msgstr " %d/%d ekvivalenssiluokkaa luotu\n" #: main.c:908 #, c-format msgid " %d/%d meta-equivalence classes created\n" msgstr " %d/%d meta-ekvivalenssiluokkaa luotu\n" #: main.c:914 #, c-format msgid " %d (%d saved) hash collisions, %d DFAs equal\n" msgstr "" " %d (%d tallennettu) hash-törmäykset, yhtäsuuri kuin %d Deterministisen " "äärellisen automaatin törmäystä\n" #: main.c:916 #, c-format msgid " %d sets of reallocations needed\n" msgstr " %d uudelleenvarausjoukkoa tarvittu\n" #: main.c:918 #, c-format msgid " %d total table entries needed\n" msgstr " %d taulukkoalkiota tarvittu yhteensä\n" #: main.c:995 #, c-format msgid "Internal error. flexopts are malformed.\n" msgstr "Sisäinen virhe. flex-valitsimet ovat vääränmuotoisia.\n" #: main.c:1005 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Lisätietoja käskyllä ”%s --help”.\n" #: main.c:1062 #, c-format msgid "unknown -C option '%c'" msgstr "tuntematon valitsin -C ”%c”" #: main.c:1191 #, c-format msgid "%s %s\n" msgstr "%s %s\n" #: main.c:1466 msgid "fatal parse error" msgstr "vakava jäsennysvirhe" #: main.c:1498 #, c-format msgid "could not create backing-up info file %s" msgstr "ei voitu luoda varmuuskopiotietotiedostoa %s" #: main.c:1519 #, c-format msgid "-l AT&T lex compatibility option entails a large performance penalty\n" msgstr "" "-l AT&T lex-yhteensopivuusvalitsin tuo mukanaan ison suorituskykysakon\n" #: main.c:1522 #, c-format msgid " and may be the actual source of other reported performance penalties\n" msgstr "" " ja saattaa olla muiden ilmoitettujen suorituskykysakkojen todellinen lähde\n" #: main.c:1528 #, c-format msgid "" "%%option yylineno entails a performance penalty ONLY on rules that can match " "newline characters\n" msgstr "" "%%option yylineno tuo mukanaan suorituskykysakon VAIN säännöissä, jotka " "voivat täsmätä rivinvaihtomerkkeihin\n" #: main.c:1535 #, c-format msgid "-I (interactive) entails a minor performance penalty\n" msgstr "-I (interaktiivinen) tuo mukanaan pienemmän suorituskykysakon\n" #: main.c:1540 #, c-format msgid "yymore() entails a minor performance penalty\n" msgstr "yymore() tuo mukanaan pienemmän suorituskykysakon\n" #: main.c:1546 #, c-format msgid "REJECT entails a large performance penalty\n" msgstr "REJECT tuo mukanaan ison suorituskykyrangaistuksen\n" #: main.c:1551 #, c-format msgid "Variable trailing context rules entail a large performance penalty\n" msgstr "Muuttujajättökontekstisäännöt tuovat mukanaan ison suorityskykysakon\n" #: main.c:1563 msgid "REJECT cannot be used with -f or -F" msgstr "REJECT ei voida käyttää valitsimen -f tai -F kanssa" #: main.c:1566 #, c-format msgid "%option yylineno cannot be used with REJECT" msgstr "%option yylineno ei voi käyttää REJECT:n kanssa" #: main.c:1569 msgid "variable trailing context rules cannot be used with -f or -F" msgstr "" "muuttujajättökontekstisääntöjä ei voida käyttää valitsimen -f tai -F kanssa" #: main.c:1692 #, c-format msgid "%option yyclass only meaningful for C++ scanners" msgstr "%option yyclass on merkityksellinen vain C++-skannereille" #: main.c:1799 #, c-format msgid "Usage: %s [OPTIONS] [FILE]...\n" msgstr "Käyttö: %s [VALITSIMET] [TIEDOSTO]...\n" #: main.c:1802 #, c-format msgid "" "Generates programs that perform pattern-matching on text.\n" "\n" "Table Compression:\n" " -Ca, --align trade off larger tables for better memory alignment\n" " -Ce, --ecs construct equivalence classes\n" " -Cf do not compress tables; use -f representation\n" " -CF do not compress tables; use -F representation\n" " -Cm, --meta-ecs construct meta-equivalence classes\n" " -Cr, --read use read() instead of stdio for scanner input\n" " -f, --full generate fast, large scanner. Same as -Cfr\n" " -F, --fast use alternate table representation. Same as -CFr\n" " -Cem default compression (same as --ecs --meta-ecs)\n" "\n" "Debugging:\n" " -d, --debug enable debug mode in scanner\n" " -b, --backup write backing-up information to %s\n" " -p, --perf-report write performance report to stderr\n" " -s, --nodefault suppress default rule to ECHO unmatched text\n" " -T, --trace %s should run in trace mode\n" " -w, --nowarn do not generate warnings\n" " -v, --verbose write summary of scanner statistics to stdout\n" "\n" "Files:\n" " -o, --outfile=FILE specify output filename\n" " -S, --skel=FILE specify skeleton file\n" " -t, --stdout write scanner on stdout instead of %s\n" " --yyclass=NAME name of C++ class\n" " --header-file=FILE create a C header file in addition to the " "scanner\n" " --tables-file[=FILE] write tables to FILE\n" "\n" "Scanner behavior:\n" " -7, --7bit generate 7-bit scanner\n" " -8, --8bit generate 8-bit scanner\n" " -B, --batch generate batch scanner (opposite of -I)\n" " -i, --case-insensitive ignore case in patterns\n" " -l, --lex-compat maximal compatibility with original lex\n" " -X, --posix-compat maximal compatibility with POSIX lex\n" " -I, --interactive generate interactive scanner (opposite of -B)\n" " --yylineno track line count in yylineno\n" "\n" "Generated code:\n" " -+, --c++ generate C++ scanner class\n" " -Dmacro[=defn] #define macro defn (default defn is '1')\n" " -L, --noline suppress #line directives in scanner\n" " -P, --prefix=STRING use STRING as prefix instead of \"yy\"\n" " -R, --reentrant generate a reentrant C scanner\n" " --bison-bridge scanner for bison pure parser.\n" " --bison-locations include yylloc support.\n" " --stdinit initialize yyin/yyout to stdin/stdout\n" " --noansi-definitions old-style function definitions\n" " --noansi-prototypes empty parameter list in prototypes\n" " --nounistd do not include \n" " --noFUNCTION do not generate a particular FUNCTION\n" "\n" "Miscellaneous:\n" " -c do-nothing POSIX option\n" " -n do-nothing POSIX option\n" " -?\n" " -h, --help produce this help message\n" " -V, --version report %s version\n" msgstr "" "Luo ohjelmia, jotka suorittavat tekstin mallintäsmäystä.\n" "\n" "Taulutiivistys:\n" " -Ca, --align kompromissi laajoissa taulukoissa parempaa " "muistitasausta varten\n" " -Ce, --ecs rakenna ekvivalenssiluokkia\n" " -Cf älä tiivistä tauluja; käytä valitsinta -f esittelyyn\n" " -CF älä tiivistä tauluja; käytä valitsinta -F esittelyyn\n" " -Cm, --meta-ecs rakenna meta-ekvivalenssiluokkia\n" " -Cr, --read käytä funktiota read() eikä vakiosyötettä " "skannerisyötteenä\n" " -f, --full tuota nopea, laaja skanneri. Sama kuin -Cfr\n" " -F, --fast käytä vaihtoehtoista tauluesittelyä. Sama kuin -CFr\n" " -Cem oletustiivistys (sama kuin --ecs --meta-ecs)\n" "\n" "Virheenjäljitys:\n" " -d, --debug ota käyttöön virheenjäljitystila skannerissa\n" " -b, --backup kirjoita varmuuskopiotietoja osoitteeseen %s\n" " -p, --perf-report kirjoita suorituskykyraportti vakiovirheeseen\n" " -s, --nodefault vaimenna oletussääntö ECHO-täsmäämättömään " "tekstiin\n" " -T, --trace %s pitäisi suorittaa jäljitystilassa\n" " -w, --nowarn älä tuota varoituksia\n" " -v, --verbose kirjoita yhteenveto skanneritilastoista " "vakiotulosteeseen\n" "\n" "Tiedostot:\n" " -o, --outfile=TIEDOSTO määritä tulostetiedostonimi\n" " -S, --skel=TIEDOSTO määritä runkotiedosto\n" " -t, --stdout kirjoita skanneri vakiotulosteeseen eikä " "kohteeseen %s\n" " --yyclass=NIMI C++-luokan nimi\n" " --header-file=TIEDOSTO tuota C-otsaketiedosto etsijän lisäksi\n" " --tables-file[=TIEDOSTO] kirjoita taulut TIEDOSTOon\n" "\n" "Skannerikäyttäytyminen:\n" " -7, --7bit tuota 7-bittinen skanneri\n" " -8, --8bit tuota 8-bittinen skanneri\n" " -B, --batch tuota eräajoskanneri (päinvastoin kuin -I)\n" " -i, --case-insensitive älä välitä kirjainkoosta malleissa\n" " -l, --lex-compat maksimiyhteensopivuus alkueräisen lex-ohjelman " "kanssa\n" " -X, --posix-compat maksimiyhteensopivuus POSIX lex-ohjelman kanssa\n" " -I, --interactive tuota interaktiivinen skanneri (päinvastoin kuin -" "B)\n" " --yylineno jäljitä rivilukumäärä yylineno-ohjelmassa\n" "\n" "Generoitu koodi:\n" " -+, --c++ tuota C++-skanneriluokka\n" " -Dmacro[=defn] #define-makro defn (oletus defn on ”1”)\n" " -L, --noline vaimenna #line-direktiviit skannerissa\n" " -P, --prefix=MERKKIJONO käytä MERKKIJONO etuliitteenä eikä ”yy”\n" " -R, --reentrant tuota vapaakäyntinen C-skanneri\n" " --bison-bridge skanneri ”bison pure”-jäsentimelle.\n" " --bison-locations sisällytä yylloc-tuki.\n" " --stdinit alusta yyin/yyout vakiosyötteeseen/" "vakiotulosteeseen\n" " --noansi-definitions vanhantyyliset funktiomäärittelyt\n" " --noansi-prototypes tyhjä parametriluettelo prototyypeissä\n" " --nounistd älä sisällytä -tiedostoa\n" " --noFUNKTIO älä tuota määriteltyä FUNKTIOta\n" "\n" "Sekalaiset:\n" " -c älä tee mitään POSIX-valitsin\n" " -n älä tee mitään POSIX-valitsin\n" " -?\n" " -h, --help tuota tämä opastesanoma\n" " -V, --version ilmoita %s-versio\n" #: misc.c:65 msgid "allocation of sko_stack failed" msgstr "sko_stack-varaaminen epäonnistui" #: misc.c:102 misc.c:128 #, c-format msgid "name \"%s\" ridiculously long" msgstr "nimi ”%s” on naurettavan pitkä" #: misc.c:177 msgid "memory allocation failed in allocate_array()" msgstr "muistinvaraus epäonnistui funktiossa allocate_array()" #: misc.c:230 #, c-format msgid "bad character '%s' detected in check_char()" msgstr "väärä merkki ”%s” havaittu funktiossa check_char()" #: misc.c:235 #, c-format msgid "scanner requires -8 flag to use the character %s" msgstr "skanneri vaatiin lipun -8 käytettäväksi merkille %s" #: misc.c:268 msgid "dynamic memory failure in copy_string()" msgstr "dynaaminen muistivirhe funktiossa copy_string()" #: misc.c:367 #, c-format msgid "%s: fatal internal error, %s\n" msgstr "%s: vakava sisäinen virhe, %s\n" #: misc.c:803 msgid "attempt to increase array size failed" msgstr "yritys taulukon koon kasvattamiseksi epäonnistui" #: misc.c:930 msgid "bad line in skeleton file" msgstr "väärä rivi kehystiedostossa" #: misc.c:979 msgid "memory allocation failed in yy_flex_xmalloc()" msgstr "muistinvaraus epäonnistui funktiossa yy_flex_xmalloc()" #: nfa.c:104 #, c-format msgid "" "\n" "\n" "********** beginning dump of nfa with start state %d\n" msgstr "" "\n" "\n" "********** Epädeterministisen äärellisen automaatin vedoksen alku " "aloitustilassa %d\n" #: nfa.c:115 #, c-format msgid "state # %4d\t" msgstr "tila numero %4d\t" #: nfa.c:130 #, c-format msgid "********** end of dump\n" msgstr "********** vedoksen loppu\n" #: nfa.c:174 msgid "empty machine in dupmachine()" msgstr "tyhjä kone funktiossa dupmachine()" #: nfa.c:240 #, c-format msgid "Variable trailing context rule at line %d\n" msgstr "Muuttujajättökontekstisääntö rivillä %d\n" #: nfa.c:364 msgid "bad state type in mark_beginning_as_normal()" msgstr "väärä tilatyyppi funktiossa mark_beginning_as_normal()" #: nfa.c:609 #, c-format msgid "input rules are too complicated (>= %d NFA states)" msgstr "" "syötesäännöt ovat liian mutkikkaita (>= %d Epädeterministisen äärellisen " "automaatin tilaa)" #: nfa.c:688 msgid "found too many transitions in mkxtion()" msgstr "löytyi liian monta siirtymää funktiossa mkxtion()" #: nfa.c:714 #, c-format msgid "too many rules (> %d)!" msgstr "liian moni sääntöjä (> %d)!" #: parse.y:159 msgid "unknown error processing section 1" msgstr "tuntematon virhe käsiteltäessä lohkoa 1" #: parse.y:184 parse.y:351 msgid "bad start condition list" msgstr "väärä alkuehtoluettelo" #: parse.y:315 msgid "unrecognized rule" msgstr "tunnistamaton sääntö" #: parse.y:434 parse.y:447 parse.y:516 msgid "trailing context used twice" msgstr "jättökontekstia käytetty kahdesti" #: parse.y:552 parse.y:562 parse.y:635 parse.y:645 msgid "bad iteration values" msgstr "vääriä iteraatioarvoja" #: parse.y:580 parse.y:598 parse.y:663 parse.y:681 msgid "iteration value must be positive" msgstr "iteraatioarvon on oltava positiivinen" #: parse.y:804 parse.y:814 #, c-format msgid "the character range [%c-%c] is ambiguous in a case-insensitive scanner" msgstr "" "merkkialue [%c-%c] ei ole yksiselitteinen skannerissa, joka ei välitä " "kirjainkoosta" #: parse.y:819 msgid "negative range in character class" msgstr "negatiivinen lukualue merkkiluokassa" #: parse.y:916 msgid "[:^lower:] is ambiguous in case insensitive scanner" msgstr "" "[:^lower:] ei ole yksiselitteinen skannerissa, joka ei välitä kirjainkoosta" #: parse.y:922 msgid "[:^upper:] ambiguous in case insensitive scanner" msgstr "" "[:^upper:] ei ole yksiselitteinen skannerissa, joka ei välit kirjainkoosta" #: scan.l:75 scan.l:618 scan.l:676 msgid "Input line too long\n" msgstr "Syöterivi on liian pitkä\n" #: scan.l:161 #, c-format msgid "malformed '%top' directive" msgstr "vääränmuotoinen ”%top”-direktiivi" #: scan.l:183 #, no-c-format msgid "unrecognized '%' directive" msgstr "tunnistamaton ”%”-direktiivi" #: scan.l:192 msgid "Definition name too long\n" msgstr "Määritysnimi on liian pitkä\n" #: scan.l:284 msgid "Unmatched '{'" msgstr "Pariton ”{”" #: scan.l:300 #, c-format msgid "Definition value for {%s} too long\n" msgstr "Määritysarvo kohteelle {%s} on liian pitkä\n" #: scan.l:317 msgid "incomplete name definition" msgstr "epätäydellinen nimimäärittely" #: scan.l:443 msgid "Option line too long\n" msgstr "Valitsinrivi on liian pitkä\n" #: scan.l:451 #, c-format msgid "unrecognized %%option: %s" msgstr "tunnistamaton %%valitsin: %s" #: scan.l:633 scan.l:800 msgid "bad character class" msgstr "väärä merkkiluokka" #: scan.l:683 #, c-format msgid "undefined definition {%s}" msgstr "määrittelemätön määrittely {%s}" #: scan.l:755 #, c-format msgid "bad : %s" msgstr "virheellinen : %s" #: scan.l:768 msgid "missing quote" msgstr "puuttuva lainausmerkki" #: scan.l:834 #, c-format msgid "bad character class expression: %s" msgstr "väärä merkkiluokkalauseke: %s" #: scan.l:856 msgid "bad character inside {}'s" msgstr "väärä merkki aaltosulkeiden {} sisällä" #: scan.l:862 msgid "missing }" msgstr "puuttuva }" #: scan.l:940 msgid "EOF encountered inside an action" msgstr "Tiedoston loppumerkki EOF tavattu toiminnon sisällä" #: scan.l:945 msgid "EOF encountered inside pattern" msgstr "Tiedoston loppumerkki EOF tavattu mallin sisällä" #: scan.l:967 #, c-format msgid "bad character: %s" msgstr "väärä merkki: %s" #: scan.l:996 #, c-format msgid "can't open %s" msgstr "ei voi avata %s" #: scanopt.c:291 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Käyttö: %s [VALITSIMET]...\n" #: scanopt.c:564 #, c-format msgid "option `%s' doesn't allow an argument\n" msgstr "valitsin ”%s” ei salli argumenttia\n" #: scanopt.c:569 #, c-format msgid "option `%s' requires an argument\n" msgstr "valitsin ”%s” vaatii argumentin\n" #: scanopt.c:573 #, c-format msgid "option `%s' is ambiguous\n" msgstr "valitsin ”%s” ei ole yksiselitteinen\n" #: scanopt.c:577 #, c-format msgid "Unrecognized option `%s'\n" msgstr "Tunnistamaton valitsin ”%s”\n" #: scanopt.c:581 #, c-format msgid "Unknown error=(%d)\n" msgstr "Tuntematon virhe=(%d)\n" #: sym.c:100 msgid "symbol table memory allocation failed" msgstr "symbolitaulun muistinvaraus epäonnistui" #: sym.c:202 msgid "name defined twice" msgstr "nimi määritelty kahdesti" #: sym.c:253 #, c-format msgid "start condition %s declared twice" msgstr "alkuehto %s esitelty kahdesti" #: yylex.c:56 msgid "premature EOF" msgstr "ennenaikainen tiedoston loppumerkki EOF" #: yylex.c:198 #, c-format msgid "End Marker\n" msgstr "Loppumerkki\n" #: yylex.c:204 #, c-format msgid "*Something Weird* - tok: %d val: %d\n" msgstr "*Jotain outoa - tok: %d arvo: %d\n" flex-2.5.39/po/en@quot.header0000644000175000017500000000226312300730747016233 0ustar srivastasrivasta# All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # flex-2.5.39/po/remove-potcdate.sin0000644000175000017500000000066012300730750017250 0ustar srivastasrivasta# Sed script that remove the POT-Creation-Date line in the header entry # from a POT file. # # The distinction between the first and the following occurrences of the # pattern is achieved by looking at the hold space. /^"POT-Creation-Date: .*"$/{ x # Test if the hold space is empty. s/P/P/ ta # Yes it was empty. First occurrence. Remove the line. g d bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } flex-2.5.39/po/ga.po0000644000175000017500000006332412314621665014405 0ustar srivastasrivasta# Irish translations for flex. # Copyright (C) 2008 The Flex Project (msgids) # This file is distributed under the same license as the flex package. # Kevin Patrick Scannell , 2003, 2006, 2008. msgid "" msgstr "" "Project-Id-Version: flex 2.5.34\n" "Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2014-03-26 15:00-0400\n" "PO-Revision-Date: 2008-07-23 09:37-0500\n" "Last-Translator: Kevin Scannell \n" "Language-Team: Irish \n" "Language: ga\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: buf.c:78 msgid "Allocation of buffer to print string failed" msgstr "" #: buf.c:100 msgid "Allocation of buffer for line directive failed" msgstr "" #: buf.c:177 msgid "Allocation of buffer for m4 def failed" msgstr "" #: buf.c:197 msgid "Allocation of buffer for m4 undef failed" msgstr "" #: dfa.c:61 #, c-format msgid "State #%d is non-accepting -\n" msgstr "Níl an staid #%d ina staid ghlactha -\n" #: dfa.c:124 msgid "dangerous trailing context" msgstr "comhthéacs sraoilleach baolach" #: dfa.c:166 #, c-format msgid " associated rule line numbers:" msgstr " líne-uimhreacha de na rialacha bainteacha:" #: dfa.c:202 #, c-format msgid " out-transitions: " msgstr " athruithe amach: " # weak, I know -- KPS #: dfa.c:210 #, c-format msgid "" "\n" " jam-transitions: EOF " msgstr "" "\n" " athruithe plúchta: comhadchríoch " #: dfa.c:341 msgid "consistency check failed in epsclosure()" msgstr "theip ar sheiceáil chomhionannais i epsclosure()" #: dfa.c:429 msgid "" "\n" "\n" "DFA Dump:\n" "\n" msgstr "" "\n" "\n" "Dumpáil DFA:\n" "\n" #: dfa.c:604 msgid "could not create unique end-of-buffer state" msgstr "níorbh fhéidir staid shainiúil a chruthú ag deireadh maoláin" #: dfa.c:625 #, c-format msgid "state # %d:\n" msgstr "staid # %d:\n" #: dfa.c:785 msgid "Could not write yynxt_tbl[][]" msgstr "Níorbh fhéidir yynxt_tbl[][] a scríobh" #: dfa.c:1049 msgid "bad transition character detected in sympartition()" msgstr "carachtar trasdula neamhbhailí i sympartition()" #: gen.c:478 msgid "" "\n" "\n" "Equivalence Classes:\n" "\n" msgstr "" "\n" "\n" "Aicmí Coibhéise:\n" "\n" #: gen.c:662 gen.c:691 gen.c:1215 #, c-format msgid "state # %d accepts: [%d]\n" msgstr "glacann staid # %d le: [%d]\n" #: gen.c:1110 #, c-format msgid "state # %d accepts: " msgstr "glacann staid # %d le: " #: gen.c:1157 msgid "Could not write yyacclist_tbl" msgstr "Níorbh fhéidir yyacclist_tbl a scríobh" #: gen.c:1233 msgid "Could not write yyacc_tbl" msgstr "Níorbh fhéidir yyacc_tbl a scríobh" #: gen.c:1248 gen.c:1633 gen.c:1656 msgid "Could not write ecstbl" msgstr "Níorbh fhéidir ecstbl a scríobh" #: gen.c:1271 msgid "" "\n" "\n" "Meta-Equivalence Classes:\n" msgstr "" "\n" "\n" "Aicmí Meiteachoibhéise:\n" #: gen.c:1293 msgid "Could not write yymeta_tbl" msgstr "Níorbh fhéidir yymeta_tbl a scríobh" #: gen.c:1354 msgid "Could not write yybase_tbl" msgstr "Níorbh fhéidir yybase_tbl a scríobh" #: gen.c:1388 msgid "Could not write yydef_tbl" msgstr "Níorbh fhéidir yydef_tbl a scríobh" #: gen.c:1428 msgid "Could not write yynxt_tbl" msgstr "Níorbh fhéidir yynxt_tbl a scríobh" #: gen.c:1464 msgid "Could not write yychk_tbl" msgstr "Níorbh fhéidir yychk_tbl a scríobh" #: gen.c:1618 gen.c:1647 msgid "Could not write ftbl" msgstr "Níorbh fhéidir ftbl a scríobh" #: gen.c:1624 msgid "Could not write ssltbl" msgstr "Níorbh fhéidir ssltbl a scríobh" #: gen.c:1675 msgid "Could not write eoltbl" msgstr "Níorbh fhéidir eoltbl a scríobh" #: gen.c:1735 msgid "Could not write yynultrans_tbl" msgstr "Níorbh fhéidir yynultrans_tbl a scríobh" #: main.c:191 msgid "rule cannot be matched" msgstr "Ní féidir riail chomhoiriúnach a aimsiú" #: main.c:196 msgid "-s option given but default rule can be matched" msgstr "" "bhí an rogha -s tugtha ach is féidir an riail réamhshocraithe a chur i " "gcomhoiriúnacht" #: main.c:236 msgid "Can't use -+ with -l option" msgstr "Níl -+ ar fáil in éineacht leis an rogha -l" #: main.c:239 msgid "Can't use -f or -F with -l option" msgstr "Níl -f nó -F ar fáil in éineacht leis an rogha -l" #: main.c:243 msgid "Can't use --reentrant or --bison-bridge with -l option" msgstr "Níl --reentrant nó --bison-bridge ar fáil in éineacht leis an rogha -l" #: main.c:275 msgid "-Cf/-CF and -Cm don't make sense together" msgstr "Níl -Cf/-CF agus -Cm comhoiriúnach" #: main.c:278 msgid "-Cf/-CF and -I are incompatible" msgstr "Níl -Cf/-CF agus -I comhoiriúnach" #: main.c:282 msgid "-Cf/-CF are incompatible with lex-compatibility mode" msgstr "Níl -Cf/-CF ar fáil sa mhód comhoiriúnachta lex" #: main.c:287 msgid "-Cf and -CF are mutually exclusive" msgstr "Is comheisiatach iad na roghanna -Cf agus -CF" #: main.c:291 msgid "Can't use -+ with -CF option" msgstr "Níl -+ ar fáil in éineacht leis an rogha -CF" #: main.c:294 #, c-format msgid "%array incompatible with -+ option" msgstr "níl %array comhoiriúnach leis an rogha -+" #: main.c:299 msgid "Options -+ and --reentrant are mutually exclusive." msgstr "Is comheisiatach iad na roghanna -+ agus --reentrant." #: main.c:302 msgid "bison bridge not supported for the C++ scanner." msgstr "níl bison bridge ar fáil don scanóir C++." #: main.c:357 main.c:403 #, c-format msgid "could not create %s" msgstr "níorbh fhéidir %s a chruthú" #: main.c:416 msgid "could not write tables header" msgstr "níorbh fhéidir ceanntásc táblaí a scríobh" #: main.c:420 #, c-format msgid "can't open skeleton file %s" msgstr "ní féidir creatchomhad %s a oscailt" #: main.c:456 msgid "allocation of macro definition failed" msgstr "" #: main.c:504 #, c-format msgid "input error reading skeleton file %s" msgstr "earráid agus creatchomhaid %s á léamh" #: main.c:508 #, c-format msgid "error closing skeleton file %s" msgstr "earráid agus creatchomhaid %s á dhúnadh" #: main.c:693 #, c-format msgid "error creating header file %s" msgstr "earráid agus comhad ceanntáisc %s á chruthú" #: main.c:701 #, c-format msgid "error writing output file %s" msgstr "earráid agus aschomhaid %s á scríobh" #: main.c:705 #, c-format msgid "error closing output file %s" msgstr "earráid agus aschomhad %s á dhúnadh" #: main.c:709 #, c-format msgid "error deleting output file %s" msgstr "earráid agus aschomhaid %s á scriosadh" #: main.c:716 #, c-format msgid "No backing up.\n" msgstr "Ná cúlaítear.\n" #: main.c:720 #, c-format msgid "%d backing up (non-accepting) states.\n" msgstr "%d staid chúlaithe (níl ina staid ghlactha).\n" #: main.c:724 #, c-format msgid "Compressed tables always back up.\n" msgstr "Cúlaíonn táblaí comhbhrúite i gcónaí.\n" #: main.c:727 #, c-format msgid "error writing backup file %s" msgstr "earráid agus comhad cúltaca %s á scríobh" #: main.c:731 #, c-format msgid "error closing backup file %s" msgstr "earráid agus comhad cúltaca %s á dhúnadh" #: main.c:736 #, c-format msgid "%s version %s usage statistics:\n" msgstr "%s leagan %s staitistic d'úsáid:\n" # fr uses "lexical analyzer"; scanóir seems fine though --KPS #: main.c:739 #, c-format msgid " scanner options: -" msgstr " roghanna don scanóir: -" #: main.c:818 #, c-format msgid " %d/%d NFA states\n" msgstr " %d/%d staid NFA\n" #: main.c:820 #, c-format msgid " %d/%d DFA states (%d words)\n" msgstr " %d/%d staid DFA (%d focal)\n" #: main.c:822 #, c-format msgid " %d rules\n" msgstr " %d riail\n" #: main.c:827 #, c-format msgid " No backing up\n" msgstr " Ná cúlaítear\n" #: main.c:831 #, c-format msgid " %d backing-up (non-accepting) states\n" msgstr " %d staid chúlaithe (níl ina staid ghlactha)\n" #: main.c:836 #, c-format msgid " Compressed tables always back-up\n" msgstr " Cúlaíonn táblaí comhbhrúite i gcónaí\n" #: main.c:840 #, c-format msgid " Beginning-of-line patterns used\n" msgstr " Patrúin úsáidte ag ceann líne\n" #: main.c:842 #, c-format msgid " %d/%d start conditions\n" msgstr " %d/%d coinníoll tosaigh\n" #: main.c:846 #, c-format msgid " %d epsilon states, %d double epsilon states\n" msgstr " %d staid eipsealóin, %d staid eipsealóin dúbailte\n" #: main.c:850 #, c-format msgid " no character classes\n" msgstr " níl aon aicme charachtair\n" #: main.c:854 #, c-format msgid " %d/%d character classes needed %d/%d words of storage, %d reused\n" msgstr "" " tá gá le %d/%d aicme charachtair %d/%d focal stórála, %d athúsáidte\n" #: main.c:859 #, c-format msgid " %d state/nextstate pairs created\n" msgstr " %d péire state/nextstate\n" #: main.c:862 #, c-format msgid " %d/%d unique/duplicate transitions\n" msgstr " %d/%d athrú sainiúil/dúblach\n" #: main.c:867 #, c-format msgid " %d table entries\n" msgstr " %d iontráil sa tábla\n" #: main.c:875 #, c-format msgid " %d/%d base-def entries created\n" msgstr " %d/%d iontráil base-def\n" #: main.c:879 #, c-format msgid " %d/%d (peak %d) nxt-chk entries created\n" msgstr " %d/%d (buaic %d) iontráil nxt-chk\n" #: main.c:883 #, c-format msgid " %d/%d (peak %d) template nxt-chk entries created\n" msgstr " %d/%d (buaic %d) iontráil teimpléid nxt-chk\n" #: main.c:887 #, c-format msgid " %d empty table entries\n" msgstr " %d iontráil tábla folamh\n" #: main.c:889 #, c-format msgid " %d protos created\n" msgstr " %d fréamhshamhail\n" #: main.c:892 #, c-format msgid " %d templates created, %d uses\n" msgstr " %d teimpléad, %d i bhfeidhm\n" #: main.c:900 #, c-format msgid " %d/%d equivalence classes created\n" msgstr " %d/%d aicme choibhéise\n" #: main.c:908 #, c-format msgid " %d/%d meta-equivalence classes created\n" msgstr " %d/%d aicme mheiteachoibhéise\n" #: main.c:914 #, c-format msgid " %d (%d saved) hash collisions, %d DFAs equal\n" msgstr " %d (%d sábháilte) tuairt haiseála, %d DFA comhionann le chéile\n" #: main.c:916 #, c-format msgid " %d sets of reallocations needed\n" msgstr " tá gá le %d sraith athdháilte\n" #: main.c:918 #, c-format msgid " %d total table entries needed\n" msgstr " tá gá le %d iontráil tábla ar fad\n" #: main.c:995 #, c-format msgid "Internal error. flexopts are malformed.\n" msgstr "Earráid inmheánach (flexopts míchumtha).\n" #: main.c:1005 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Bain triail as `%s --help' chun tuilleadh eolais a fháil.\n" #: main.c:1062 #, c-format msgid "unknown -C option '%c'" msgstr "rogha -C anaithnid '%c'" #: main.c:1191 #, c-format msgid "%s %s\n" msgstr "%s %s\n" #: main.c:1466 msgid "fatal parse error" msgstr "earráid pharsála mharfach" #: main.c:1498 #, c-format msgid "could not create backing-up info file %s" msgstr "níorbh fhéidir comhad %s a chruthú don eolas faoin chúlú" #: main.c:1519 #, c-format msgid "-l AT&T lex compatibility option entails a large performance penalty\n" msgstr "is cúis le moilliú mór an rogha -l (comhoiriúnacht le AT&T lex)\n" #: main.c:1522 #, c-format msgid " and may be the actual source of other reported performance penalties\n" msgstr " agus is féidir gur cúis é le fadhbanna luais eile é\n" #: main.c:1528 #, c-format msgid "" "%%option yylineno entails a performance penalty ONLY on rules that can match " "newline characters\n" msgstr "" "is cúis le moilliú mór an %%rogha yylineno, MÁ tá rialacha ann le línte nua " "iontu\n" #: main.c:1535 #, c-format msgid "-I (interactive) entails a minor performance penalty\n" msgstr "is cúis le moilliú beag an rogha -I (idirghníomhach)\n" #: main.c:1540 #, c-format msgid "yymore() entails a minor performance penalty\n" msgstr "is cúis le moilliú beag an fheidhm yymore()\n" #: main.c:1546 #, c-format msgid "REJECT entails a large performance penalty\n" msgstr "is REJECT cúis le moilliú mór\n" #: main.c:1551 #, c-format msgid "Variable trailing context rules entail a large performance penalty\n" msgstr "" "is cúis le moilliú na rialacha maidir le comhthéacs sraoilleach " "athraitheach\n" #: main.c:1563 msgid "REJECT cannot be used with -f or -F" msgstr "Níl REJECT ar fáil leis na roghanna -f nó -F" #: main.c:1566 #, c-format msgid "%option yylineno cannot be used with REJECT" msgstr "níl %option yylineno ar fáil le REJECT" #: main.c:1569 msgid "variable trailing context rules cannot be used with -f or -F" msgstr "" "níl rialacha maidir le comhthéacs sraoilleach athraitheach ar fáil le -f nó -" "F" #: main.c:1692 #, c-format msgid "%option yyclass only meaningful for C++ scanners" msgstr "tá an %option yyclass gan bhrí ach amháin le scanóirí C++" #: main.c:1799 #, c-format msgid "Usage: %s [OPTIONS] [FILE]...\n" msgstr "Úsáid: %s [ROGHANNA] [COMHAD]...\n" #: main.c:1802 #, c-format msgid "" "Generates programs that perform pattern-matching on text.\n" "\n" "Table Compression:\n" " -Ca, --align trade off larger tables for better memory alignment\n" " -Ce, --ecs construct equivalence classes\n" " -Cf do not compress tables; use -f representation\n" " -CF do not compress tables; use -F representation\n" " -Cm, --meta-ecs construct meta-equivalence classes\n" " -Cr, --read use read() instead of stdio for scanner input\n" " -f, --full generate fast, large scanner. Same as -Cfr\n" " -F, --fast use alternate table representation. Same as -CFr\n" " -Cem default compression (same as --ecs --meta-ecs)\n" "\n" "Debugging:\n" " -d, --debug enable debug mode in scanner\n" " -b, --backup write backing-up information to %s\n" " -p, --perf-report write performance report to stderr\n" " -s, --nodefault suppress default rule to ECHO unmatched text\n" " -T, --trace %s should run in trace mode\n" " -w, --nowarn do not generate warnings\n" " -v, --verbose write summary of scanner statistics to stdout\n" "\n" "Files:\n" " -o, --outfile=FILE specify output filename\n" " -S, --skel=FILE specify skeleton file\n" " -t, --stdout write scanner on stdout instead of %s\n" " --yyclass=NAME name of C++ class\n" " --header-file=FILE create a C header file in addition to the " "scanner\n" " --tables-file[=FILE] write tables to FILE\n" "\n" "Scanner behavior:\n" " -7, --7bit generate 7-bit scanner\n" " -8, --8bit generate 8-bit scanner\n" " -B, --batch generate batch scanner (opposite of -I)\n" " -i, --case-insensitive ignore case in patterns\n" " -l, --lex-compat maximal compatibility with original lex\n" " -X, --posix-compat maximal compatibility with POSIX lex\n" " -I, --interactive generate interactive scanner (opposite of -B)\n" " --yylineno track line count in yylineno\n" "\n" "Generated code:\n" " -+, --c++ generate C++ scanner class\n" " -Dmacro[=defn] #define macro defn (default defn is '1')\n" " -L, --noline suppress #line directives in scanner\n" " -P, --prefix=STRING use STRING as prefix instead of \"yy\"\n" " -R, --reentrant generate a reentrant C scanner\n" " --bison-bridge scanner for bison pure parser.\n" " --bison-locations include yylloc support.\n" " --stdinit initialize yyin/yyout to stdin/stdout\n" " --noansi-definitions old-style function definitions\n" " --noansi-prototypes empty parameter list in prototypes\n" " --nounistd do not include \n" " --noFUNCTION do not generate a particular FUNCTION\n" "\n" "Miscellaneous:\n" " -c do-nothing POSIX option\n" " -n do-nothing POSIX option\n" " -?\n" " -h, --help produce this help message\n" " -V, --version report %s version\n" msgstr "" "Gineann an clár seo cláir eile le haghaidh chomhoiriúnú de phatrúin.\n" "\n" "Comhfháscadh táblaí:\n" " -Ca, --align malartaigh táblaí níos mó d'ailíniú cuimhne níos fearr\n" " -Ce, --ecs déan aicmí coibhéise\n" " -Cf ná comhbhrúigh táblaí; bain úsáid as léiriú -f\n" " -CF ná comhbhrúigh táblaí; bain úsáid as léiriú -F\n" " -Cm, --meta-ecs déan aicmí meiteachoibhéise\n" " -Cr, --read bain úsáid as read() in ionad stdio d'ionchur\n" " -f, --full tóg scanóir atá mear agus mór; ar comhbhrí le -Cfr\n" " -F, --fast úsáid léiriú táblaí tánaisteach; ar comhbhrí le -CFr\n" " -Cem comhfháscadh réamhshocraithe (== --ecs --meta-ecs)\n" "\n" "Dífhabhtú:\n" " -d, --debug cuir dífhabhtú ar obair\n" " -b, --backup scríobh eolas faoin chúlú chuig %s\n" " -p, --perf-report scríobh tuairisc fheidhmithe chuig stderr\n" " -s, --nodefault ná déan macalla de théacs neamh-chomhoiriúnach\n" " -T, --trace ba chóir do %s a rith sa mhód loirg\n" " -w, --nowarn ná taispeáin rabhaidh\n" " -v, --verbose taispeáin achoimre ar staitistic scanóra chuig " "stdout\n" "\n" "Comhaid:\n" " -o, --outfile=COMHAD roghnaigh ainm comhaid le haghaidh aschuir\n" " -S, --skel=COMHAD roghnaigh creatchomhad\n" " -t, --stdout scríobh an scanóir chuig stdout in ionad %s\n" " --yyclass=COMHAD ainm de `class' C++\n" " --header-file=COMHAD scríobh comhad ceanntáisc C i dteannta an " "scanóra\n" " --tables-file[=COMHAD] scríobh na táblaí chuig COMHAD\n" "\n" "Scanóir:\n" " -7, --7bit gin scanóir 7-giotán\n" " -8, --8bit gin scanóir 8-giotán\n" " -B, --batch gin scanóir baisce (i gcodarsnacht le -I)\n" " -i, --case-insensitive déan neamhshuim ar cheannlitreacha/litreacha " "beaga\n" " -l, --lex-compat comhoiriúnacht le lex bunúsach, a mhéad is féidir\n" " -X, --posix-compat comhoiriúnacht le lex POSIX, a mhéad is féidir\n" " -I, --interactive gin scanóir idirghníomhach (i gcodarsnacht le -B)\n" " --yylineno coimeád líon na línte i yylineno\n" "\n" "Generated code:\n" " -+, --c++ gin scanóir mar class C++\n" " -Dmacra[=sain] #define macra sain (réamhshocrú: sain='1')\n" " -L, --noline ná cuir treoracha #line sa scanóir\n" " -P, --prefix=TEAGHRÁN úsáid TEAGHRÁN mar réimír in ionad \"yy\"\n" " -R, --reentrant gin scanóir reentrant C\n" " --bison-bridge scanóir do pharsálaí íon bison.\n" " --bison-locations ceadaigh an úsáid de yylloc.\n" " --stdinit socraigh yyin/yyout mar stdin/stdout faoi seach\n" " --noansi-definitions sainmhíniú d'fheidhmeanna ar an sean-nós\n" " --noansi-prototypes ceadaigh liosta folamh de pharaiméadair\n" " --nounistd ná cuir san áireamh\n" " --noFEIDHM ná gin an FHEIDHM seo\n" "\n" "Miscellaneous:\n" " -c rogha POSIX gan feidhm\n" " -n rogha POSIX gan feidhm\n" " -?\n" " -h, --help taispeáin an chabhair seo\n" " -V, --version taispeáin leagan %s\n" #: misc.c:65 msgid "allocation of sko_stack failed" msgstr "" #: misc.c:102 misc.c:128 #, c-format msgid "name \"%s\" ridiculously long" msgstr "tá an t-ainm \"%s\" i bhfad Éireann rófhada" #: misc.c:177 msgid "memory allocation failed in allocate_array()" msgstr "theip ar dháileadh na cuimhne i allocate_array()" #: misc.c:230 #, c-format msgid "bad character '%s' detected in check_char()" msgstr "aimsíodh carachtar neamhbhailí '%s' i check_char()" #: misc.c:235 #, c-format msgid "scanner requires -8 flag to use the character %s" msgstr "ní foláir an rogha -8 chun an charachtair %s a úsáid" #: misc.c:268 msgid "dynamic memory failure in copy_string()" msgstr "theip ar dháileadh na cuimhne i copy_string()" #: misc.c:367 #, c-format msgid "%s: fatal internal error, %s\n" msgstr "%s: earráid inmheánach mharfach, %s\n" #: misc.c:803 msgid "attempt to increase array size failed" msgstr "theip ar mhéadú an eagair" #: misc.c:930 msgid "bad line in skeleton file" msgstr "drochlíne i gcreatchomhad" #: misc.c:979 msgid "memory allocation failed in yy_flex_xmalloc()" msgstr "theip ar dháileadh na cuimhne i yy_flex_xmalloc()" #: nfa.c:104 #, c-format msgid "" "\n" "\n" "********** beginning dump of nfa with start state %d\n" msgstr "" "\n" "\n" "********** ag tosú dumpála de nfa le staid tosaigh %d\n" #: nfa.c:115 #, c-format msgid "state # %4d\t" msgstr "staid # %4d\t" #: nfa.c:130 #, c-format msgid "********** end of dump\n" msgstr "********** i ndeireadh dumpála\n" #: nfa.c:174 msgid "empty machine in dupmachine()" msgstr "meaisín folamh i dupmachine()" #: nfa.c:240 #, c-format msgid "Variable trailing context rule at line %d\n" msgstr "riail maidir le comhthéacs sraoilleach athraitheach ag líne %d\n" #: nfa.c:364 msgid "bad state type in mark_beginning_as_normal()" msgstr "drochstaid i mark_beginning_as_normal()" #: nfa.c:609 #, c-format msgid "input rules are too complicated (>= %d NFA states)" msgstr "is róchasta na rialacha ionchuir (>= %d staid NFA)" #: nfa.c:688 msgid "found too many transitions in mkxtion()" msgstr "an iomarca athruithe i mkxtion()" #: nfa.c:714 #, c-format msgid "too many rules (> %d)!" msgstr "an iomarca rialacha (> %d)!" #: parse.y:159 msgid "unknown error processing section 1" msgstr "earráid anaithnid agus an chéad pháirt á próiseáil" #: parse.y:184 parse.y:351 msgid "bad start condition list" msgstr "is neamhbhailí liosta na coinníollacha tosaigh" #: parse.y:315 msgid "unrecognized rule" msgstr "riail anaithnid" #: parse.y:434 parse.y:447 parse.y:516 msgid "trailing context used twice" msgstr "baineadh úsáid as comhthéacs sraoilleach faoi dhó" #: parse.y:552 parse.y:562 parse.y:635 parse.y:645 msgid "bad iteration values" msgstr "luachanna timthrialla neamhbhailí" #: parse.y:580 parse.y:598 parse.y:663 parse.y:681 msgid "iteration value must be positive" msgstr "ní foláir luach timthrialla deimhneach" #: parse.y:804 parse.y:814 #, c-format msgid "the character range [%c-%c] is ambiguous in a case-insensitive scanner" msgstr "" "tá an raon carachtair [%c-%c] débhríoch i scanóir a dhéanann neamhshuim ar " "cheannlitreacha agus litreacha beaga" #: parse.y:819 msgid "negative range in character class" msgstr "raon diúltach in aicme charachtair" #: parse.y:916 msgid "[:^lower:] is ambiguous in case insensitive scanner" msgstr "" "tá [:^lower:] débhríoch i scanóir a dhéanann neamhshuim ar cheannlitreacha " "agus litreacha beaga" #: parse.y:922 msgid "[:^upper:] ambiguous in case insensitive scanner" msgstr "" "tá [:^upper:] débhríoch i scanóir a dhéanann neamhshuim ar cheannlitreacha " "agus litreacha beaga" #: scan.l:75 scan.l:618 scan.l:676 msgid "Input line too long\n" msgstr "Tá líne an ionchuir rófhada\n" #: scan.l:161 #, c-format msgid "malformed '%top' directive" msgstr "treoir '%top' míchumtha" #: scan.l:183 #, no-c-format msgid "unrecognized '%' directive" msgstr "treoir '%' anaithnid" #: scan.l:192 #, fuzzy msgid "Definition name too long\n" msgstr "Tá líne an ionchuir rófhada\n" #: scan.l:284 msgid "Unmatched '{'" msgstr "'{' corr" #: scan.l:300 #, c-format msgid "Definition value for {%s} too long\n" msgstr "" #: scan.l:317 msgid "incomplete name definition" msgstr "is neamhiomlán an sainmhíniú ainm" #: scan.l:443 #, fuzzy msgid "Option line too long\n" msgstr "Tá líne an ionchuir rófhada\n" #: scan.l:451 #, c-format msgid "unrecognized %%option: %s" msgstr "rogha %% anaithnid: %s" #: scan.l:633 scan.l:800 msgid "bad character class" msgstr "aicme charachtair neamhbhailí" #: scan.l:683 #, c-format msgid "undefined definition {%s}" msgstr "sainmhíniú neamhshainithe {%s}" #: scan.l:755 #, c-format msgid "bad : %s" msgstr " neamhbhailí: %s" #: scan.l:768 msgid "missing quote" msgstr "comhartha athfhriotal ar iarraidh" #: scan.l:834 #, c-format msgid "bad character class expression: %s" msgstr "is neamhbhailí an slonn aicme carachtair: %s" #: scan.l:856 msgid "bad character inside {}'s" msgstr "carachtar neamhbhailí idir {}" #: scan.l:862 msgid "missing }" msgstr "} ar iarraidh." #: scan.l:940 msgid "EOF encountered inside an action" msgstr "Buaileadh comhadchríoch isteach i ngníomh" #: scan.l:945 msgid "EOF encountered inside pattern" msgstr "Buaileadh comhadchríoch isteach i bpatrún" #: scan.l:967 #, c-format msgid "bad character: %s" msgstr "carachtar neamhbhailí: %s" #: scan.l:996 #, c-format msgid "can't open %s" msgstr "ní féidir %s a oscailt" #: scanopt.c:291 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Úsáid: %s [ROGHANNA]...\n" #: scanopt.c:564 #, c-format msgid "option `%s' doesn't allow an argument\n" msgstr "ní cheadaítear argóint i ndiaidh na rogha `%s'\n" #: scanopt.c:569 #, c-format msgid "option `%s' requires an argument\n" msgstr "tá argóint de dhíth i ndiaidh na rogha `%s'\n" #: scanopt.c:573 #, c-format msgid "option `%s' is ambiguous\n" msgstr "tá an rogha `%s' débhríoch\n" #: scanopt.c:577 #, c-format msgid "Unrecognized option `%s'\n" msgstr "Rogha anaithnid `%s'\n" #: scanopt.c:581 #, c-format msgid "Unknown error=(%d)\n" msgstr "Earráid anaithnid=(%d)\n" #: sym.c:100 msgid "symbol table memory allocation failed" msgstr "theip ar dháileadh na cuimhne don tábla siombalach" #: sym.c:202 msgid "name defined twice" msgstr "sainmhíníodh an t-ainm faoi dhó" #: sym.c:253 #, c-format msgid "start condition %s declared twice" msgstr "fógraíodh an coinníoll tosaigh %s faoi dhó" #: yylex.c:56 msgid "premature EOF" msgstr "comhadchríoch gan choinne" #: yylex.c:198 #, c-format msgid "End Marker\n" msgstr "Comhartha Deiridh\n" #: yylex.c:204 #, c-format msgid "*Something Weird* - tok: %d val: %d\n" msgstr "*Rud Éigin Aisteach* - tok: %d val: %d\n" #~ msgid "consistency check failed in symfollowset" #~ msgstr "theip ar sheiceáil chomhionannais i symfollowset" flex-2.5.39/po/POTFILES.in0000644000175000017500000000021112314546064015214 0ustar srivastasrivastabuf.c ccl.c dfa.c ecs.c gen.c libmain.c libyywrap.c main.c misc.c nfa.c options.c parse.y scan.l scanopt.c skel.c sym.c tblcmp.c yylex.c flex-2.5.39/po/zh_CN.po0000644000175000017500000004207712314621665015021 0ustar srivastasrivasta# Chinese translations for flex. # Copyright (C) 2002 The Flex Project # Wang Li , 2002. # msgid "" msgstr "" "Project-Id-Version: flex 2.5.8\n" "Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2014-03-26 15:00-0400\n" "PO-Revision-Date: 2002-08-18 10:37+0800\n" "Last-Translator: Wang Li \n" "Language-Team: Chinese (simplified) \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=gb2312\n" "Content-Transfer-Encoding: 8bit\n" #: buf.c:78 msgid "Allocation of buffer to print string failed" msgstr "" #: buf.c:100 msgid "Allocation of buffer for line directive failed" msgstr "" #: buf.c:177 msgid "Allocation of buffer for m4 def failed" msgstr "" #: buf.c:197 msgid "Allocation of buffer for m4 undef failed" msgstr "" #: dfa.c:61 #, c-format msgid "State #%d is non-accepting -\n" msgstr "" #: dfa.c:124 msgid "dangerous trailing context" msgstr "" #: dfa.c:166 #, c-format msgid " associated rule line numbers:" msgstr "" #: dfa.c:202 #, c-format msgid " out-transitions: " msgstr "" #: dfa.c:210 #, c-format msgid "" "\n" " jam-transitions: EOF " msgstr "" #: dfa.c:341 msgid "consistency check failed in epsclosure()" msgstr "epsclosure() еһԼʧ" #: dfa.c:429 msgid "" "\n" "\n" "DFA Dump:\n" "\n" msgstr "" "\n" "\n" "DFA \n" "\n" #: dfa.c:604 msgid "could not create unique end-of-buffer state" msgstr "޷ end-of-buffer ״̬" #: dfa.c:625 #, c-format msgid "state # %d:\n" msgstr "״̬ # %d\n" #: dfa.c:785 msgid "Could not write yynxt_tbl[][]" msgstr "" #: dfa.c:1049 msgid "bad transition character detected in sympartition()" msgstr " sympartition() ⵽ı任ַ" #: gen.c:478 msgid "" "\n" "\n" "Equivalence Classes:\n" "\n" msgstr "" "\n" "\n" "ȼࣺ\n" "\n" #: gen.c:662 gen.c:691 gen.c:1215 #, c-format msgid "state # %d accepts: [%d]\n" msgstr "" #: gen.c:1110 #, c-format msgid "state # %d accepts: " msgstr "" #: gen.c:1157 msgid "Could not write yyacclist_tbl" msgstr "" #: gen.c:1233 msgid "Could not write yyacc_tbl" msgstr "" #: gen.c:1248 gen.c:1633 gen.c:1656 #, fuzzy msgid "Could not write ecstbl" msgstr "޷ %s" #: gen.c:1271 msgid "" "\n" "\n" "Meta-Equivalence Classes:\n" msgstr "" #: gen.c:1293 msgid "Could not write yymeta_tbl" msgstr "" #: gen.c:1354 #, fuzzy msgid "Could not write yybase_tbl" msgstr "޷ %s" #: gen.c:1388 msgid "Could not write yydef_tbl" msgstr "" #: gen.c:1428 msgid "Could not write yynxt_tbl" msgstr "" #: gen.c:1464 msgid "Could not write yychk_tbl" msgstr "" #: gen.c:1618 gen.c:1647 #, fuzzy msgid "Could not write ftbl" msgstr "޷ %s" #: gen.c:1624 #, fuzzy msgid "Could not write ssltbl" msgstr "޷ %s" #: gen.c:1675 #, fuzzy msgid "Could not write eoltbl" msgstr "޷ %s" #: gen.c:1735 msgid "Could not write yynultrans_tbl" msgstr "" #: main.c:191 msgid "rule cannot be matched" msgstr "޷ƥ" #: main.c:196 msgid "-s option given but default rule can be matched" msgstr "" #: main.c:236 msgid "Can't use -+ with -l option" msgstr "" #: main.c:239 msgid "Can't use -f or -F with -l option" msgstr "" #: main.c:243 msgid "Can't use --reentrant or --bison-bridge with -l option" msgstr "" #: main.c:275 msgid "-Cf/-CF and -Cm don't make sense together" msgstr "" #: main.c:278 msgid "-Cf/-CF and -I are incompatible" msgstr "" #: main.c:282 msgid "-Cf/-CF are incompatible with lex-compatibility mode" msgstr "" #: main.c:287 msgid "-Cf and -CF are mutually exclusive" msgstr "" #: main.c:291 msgid "Can't use -+ with -CF option" msgstr "" #: main.c:294 #, c-format msgid "%array incompatible with -+ option" msgstr "" #: main.c:299 msgid "Options -+ and --reentrant are mutually exclusive." msgstr "" #: main.c:302 msgid "bison bridge not supported for the C++ scanner." msgstr "" #: main.c:357 main.c:403 #, c-format msgid "could not create %s" msgstr "޷ %s" #: main.c:416 #, fuzzy msgid "could not write tables header" msgstr "޷ %s" #: main.c:420 #, c-format msgid "can't open skeleton file %s" msgstr "޷򿪹Ǽļ %s" #: main.c:456 msgid "allocation of macro definition failed" msgstr "" #: main.c:504 #, c-format msgid "input error reading skeleton file %s" msgstr "ȡǼļ %s ʱ" #: main.c:508 #, c-format msgid "error closing skeleton file %s" msgstr "رչǼļ %s " #: main.c:693 #, c-format msgid "error creating header file %s" msgstr "ͷļ %s " #: main.c:701 #, c-format msgid "error writing output file %s" msgstr "дļ %s " #: main.c:705 #, c-format msgid "error closing output file %s" msgstr "رļ %s " #: main.c:709 #, c-format msgid "error deleting output file %s" msgstr "ɾļ %s " #: main.c:716 #, c-format msgid "No backing up.\n" msgstr "" #: main.c:720 #, c-format msgid "%d backing up (non-accepting) states.\n" msgstr "" #: main.c:724 #, c-format msgid "Compressed tables always back up.\n" msgstr "" #: main.c:727 #, c-format msgid "error writing backup file %s" msgstr "д뱸ļ %s " #: main.c:731 #, c-format msgid "error closing backup file %s" msgstr "رձļ %s " #: main.c:736 #, c-format msgid "%s version %s usage statistics:\n" msgstr "" #: main.c:739 #, c-format msgid " scanner options: -" msgstr " ɨѡ-" #: main.c:818 #, c-format msgid " %d/%d NFA states\n" msgstr "" #: main.c:820 #, c-format msgid " %d/%d DFA states (%d words)\n" msgstr "" #: main.c:822 #, c-format msgid " %d rules\n" msgstr " %d \n" #: main.c:827 #, c-format msgid " No backing up\n" msgstr "" #: main.c:831 #, c-format msgid " %d backing-up (non-accepting) states\n" msgstr "" #: main.c:836 #, c-format msgid " Compressed tables always back-up\n" msgstr "" #: main.c:840 #, c-format msgid " Beginning-of-line patterns used\n" msgstr "" #: main.c:842 #, c-format msgid " %d/%d start conditions\n" msgstr "" #: main.c:846 #, c-format msgid " %d epsilon states, %d double epsilon states\n" msgstr "" #: main.c:850 #, c-format msgid " no character classes\n" msgstr "" #: main.c:854 #, c-format msgid " %d/%d character classes needed %d/%d words of storage, %d reused\n" msgstr "" #: main.c:859 #, c-format msgid " %d state/nextstate pairs created\n" msgstr "" #: main.c:862 #, c-format msgid " %d/%d unique/duplicate transitions\n" msgstr "" #: main.c:867 #, c-format msgid " %d table entries\n" msgstr "" #: main.c:875 #, c-format msgid " %d/%d base-def entries created\n" msgstr "" #: main.c:879 #, c-format msgid " %d/%d (peak %d) nxt-chk entries created\n" msgstr "" #: main.c:883 #, c-format msgid " %d/%d (peak %d) template nxt-chk entries created\n" msgstr "" #: main.c:887 #, c-format msgid " %d empty table entries\n" msgstr "" #: main.c:889 #, c-format msgid " %d protos created\n" msgstr "" #: main.c:892 #, c-format msgid " %d templates created, %d uses\n" msgstr "" #: main.c:900 #, c-format msgid " %d/%d equivalence classes created\n" msgstr "" #: main.c:908 #, c-format msgid " %d/%d meta-equivalence classes created\n" msgstr "" #: main.c:914 #, c-format msgid " %d (%d saved) hash collisions, %d DFAs equal\n" msgstr "" #: main.c:916 #, c-format msgid " %d sets of reallocations needed\n" msgstr "" #: main.c:918 #, c-format msgid " %d total table entries needed\n" msgstr "" #: main.c:995 #, c-format msgid "Internal error. flexopts are malformed.\n" msgstr "" #: main.c:1005 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "" #: main.c:1062 #, c-format msgid "unknown -C option '%c'" msgstr "δ֪ -C ѡ%c" #: main.c:1191 #, c-format msgid "%s %s\n" msgstr "%s %s\n" #: main.c:1466 msgid "fatal parse error" msgstr "Ľ" #: main.c:1498 #, c-format msgid "could not create backing-up info file %s" msgstr "" #: main.c:1519 #, c-format msgid "-l AT&T lex compatibility option entails a large performance penalty\n" msgstr "" #: main.c:1522 #, c-format msgid " and may be the actual source of other reported performance penalties\n" msgstr "" #: main.c:1528 #, c-format msgid "" "%%option yylineno entails a performance penalty ONLY on rules that can match " "newline characters\n" msgstr "" #: main.c:1535 #, c-format msgid "-I (interactive) entails a minor performance penalty\n" msgstr "" #: main.c:1540 #, c-format msgid "yymore() entails a minor performance penalty\n" msgstr "" #: main.c:1546 #, c-format msgid "REJECT entails a large performance penalty\n" msgstr "" #: main.c:1551 #, c-format msgid "Variable trailing context rules entail a large performance penalty\n" msgstr "" #: main.c:1563 msgid "REJECT cannot be used with -f or -F" msgstr "" #: main.c:1566 #, c-format msgid "%option yylineno cannot be used with REJECT" msgstr "" #: main.c:1569 msgid "variable trailing context rules cannot be used with -f or -F" msgstr "" #: main.c:1692 #, c-format msgid "%option yyclass only meaningful for C++ scanners" msgstr "" #: main.c:1799 #, c-format msgid "Usage: %s [OPTIONS] [FILE]...\n" msgstr "÷%s [ѡ] [ļ]...\n" #: main.c:1802 #, c-format msgid "" "Generates programs that perform pattern-matching on text.\n" "\n" "Table Compression:\n" " -Ca, --align trade off larger tables for better memory alignment\n" " -Ce, --ecs construct equivalence classes\n" " -Cf do not compress tables; use -f representation\n" " -CF do not compress tables; use -F representation\n" " -Cm, --meta-ecs construct meta-equivalence classes\n" " -Cr, --read use read() instead of stdio for scanner input\n" " -f, --full generate fast, large scanner. Same as -Cfr\n" " -F, --fast use alternate table representation. Same as -CFr\n" " -Cem default compression (same as --ecs --meta-ecs)\n" "\n" "Debugging:\n" " -d, --debug enable debug mode in scanner\n" " -b, --backup write backing-up information to %s\n" " -p, --perf-report write performance report to stderr\n" " -s, --nodefault suppress default rule to ECHO unmatched text\n" " -T, --trace %s should run in trace mode\n" " -w, --nowarn do not generate warnings\n" " -v, --verbose write summary of scanner statistics to stdout\n" "\n" "Files:\n" " -o, --outfile=FILE specify output filename\n" " -S, --skel=FILE specify skeleton file\n" " -t, --stdout write scanner on stdout instead of %s\n" " --yyclass=NAME name of C++ class\n" " --header-file=FILE create a C header file in addition to the " "scanner\n" " --tables-file[=FILE] write tables to FILE\n" "\n" "Scanner behavior:\n" " -7, --7bit generate 7-bit scanner\n" " -8, --8bit generate 8-bit scanner\n" " -B, --batch generate batch scanner (opposite of -I)\n" " -i, --case-insensitive ignore case in patterns\n" " -l, --lex-compat maximal compatibility with original lex\n" " -X, --posix-compat maximal compatibility with POSIX lex\n" " -I, --interactive generate interactive scanner (opposite of -B)\n" " --yylineno track line count in yylineno\n" "\n" "Generated code:\n" " -+, --c++ generate C++ scanner class\n" " -Dmacro[=defn] #define macro defn (default defn is '1')\n" " -L, --noline suppress #line directives in scanner\n" " -P, --prefix=STRING use STRING as prefix instead of \"yy\"\n" " -R, --reentrant generate a reentrant C scanner\n" " --bison-bridge scanner for bison pure parser.\n" " --bison-locations include yylloc support.\n" " --stdinit initialize yyin/yyout to stdin/stdout\n" " --noansi-definitions old-style function definitions\n" " --noansi-prototypes empty parameter list in prototypes\n" " --nounistd do not include \n" " --noFUNCTION do not generate a particular FUNCTION\n" "\n" "Miscellaneous:\n" " -c do-nothing POSIX option\n" " -n do-nothing POSIX option\n" " -?\n" " -h, --help produce this help message\n" " -V, --version report %s version\n" msgstr "" #: misc.c:65 msgid "allocation of sko_stack failed" msgstr "" #: misc.c:102 misc.c:128 #, c-format msgid "name \"%s\" ridiculously long" msgstr "" #: misc.c:177 msgid "memory allocation failed in allocate_array()" msgstr "" #: misc.c:230 #, c-format msgid "bad character '%s' detected in check_char()" msgstr "" #: misc.c:235 #, c-format msgid "scanner requires -8 flag to use the character %s" msgstr "" #: misc.c:268 msgid "dynamic memory failure in copy_string()" msgstr "" #: misc.c:367 #, c-format msgid "%s: fatal internal error, %s\n" msgstr "" #: misc.c:803 msgid "attempt to increase array size failed" msgstr "ͼСʱʧ" #: misc.c:930 msgid "bad line in skeleton file" msgstr "Ǽļд" #: misc.c:979 msgid "memory allocation failed in yy_flex_xmalloc()" msgstr " yy_flex_xmalloc() еڴʧ" #: nfa.c:104 #, c-format msgid "" "\n" "\n" "********** beginning dump of nfa with start state %d\n" msgstr "" "\n" "\n" "********** ʼʼ״̬Ϊ %d NFA\n" #: nfa.c:115 #, c-format msgid "state # %4d\t" msgstr "״̬ # %4d\t" #: nfa.c:130 #, c-format msgid "********** end of dump\n" msgstr "********** \n" #: nfa.c:174 msgid "empty machine in dupmachine()" msgstr "" #: nfa.c:240 #, c-format msgid "Variable trailing context rule at line %d\n" msgstr "" #: nfa.c:364 msgid "bad state type in mark_beginning_as_normal()" msgstr "" #: nfa.c:609 #, c-format msgid "input rules are too complicated (>= %d NFA states)" msgstr "" #: nfa.c:688 msgid "found too many transitions in mkxtion()" msgstr "" #: nfa.c:714 #, c-format msgid "too many rules (> %d)!" msgstr " (> %d)" #: parse.y:159 msgid "unknown error processing section 1" msgstr "δ֪Ĵ 1" #: parse.y:184 parse.y:351 msgid "bad start condition list" msgstr "ʼ״̬б" #: parse.y:315 msgid "unrecognized rule" msgstr "ʶĹ" #: parse.y:434 parse.y:447 parse.y:516 msgid "trailing context used twice" msgstr "" #: parse.y:552 parse.y:562 parse.y:635 parse.y:645 msgid "bad iteration values" msgstr "" #: parse.y:580 parse.y:598 parse.y:663 parse.y:681 msgid "iteration value must be positive" msgstr "" #: parse.y:804 parse.y:814 #, c-format msgid "the character range [%c-%c] is ambiguous in a case-insensitive scanner" msgstr "" #: parse.y:819 msgid "negative range in character class" msgstr "" #: parse.y:916 msgid "[:^lower:] is ambiguous in case insensitive scanner" msgstr "" #: parse.y:922 msgid "[:^upper:] ambiguous in case insensitive scanner" msgstr "" #: scan.l:75 scan.l:618 scan.l:676 msgid "Input line too long\n" msgstr "" #: scan.l:161 #, c-format msgid "malformed '%top' directive" msgstr "" #: scan.l:183 #, no-c-format msgid "unrecognized '%' directive" msgstr "" #: scan.l:192 msgid "Definition name too long\n" msgstr "" #: scan.l:284 msgid "Unmatched '{'" msgstr "" #: scan.l:300 #, c-format msgid "Definition value for {%s} too long\n" msgstr "" #: scan.l:317 msgid "incomplete name definition" msgstr "ƶ" #: scan.l:443 msgid "Option line too long\n" msgstr "" #: scan.l:451 #, c-format msgid "unrecognized %%option: %s" msgstr "ʶ %%ѡ%s" #: scan.l:633 scan.l:800 msgid "bad character class" msgstr "ַ" #: scan.l:683 #, c-format msgid "undefined definition {%s}" msgstr "δĶ {%s}" #: scan.l:755 #, c-format msgid "bad : %s" msgstr " <ʼ>%s" #: scan.l:768 msgid "missing quote" msgstr "©" #: scan.l:834 #, c-format msgid "bad character class expression: %s" msgstr "ַʽ%s" #: scan.l:856 msgid "bad character inside {}'s" msgstr "" #: scan.l:862 msgid "missing }" msgstr "© }" #: scan.l:940 msgid "EOF encountered inside an action" msgstr "ڶļ" #: scan.l:945 #, fuzzy msgid "EOF encountered inside pattern" msgstr "ڶļ" #: scan.l:967 #, c-format msgid "bad character: %s" msgstr "ַ%s" #: scan.l:996 #, c-format msgid "can't open %s" msgstr "޷ %s" #: scanopt.c:291 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "÷%s [ѡ]...\n" #: scanopt.c:564 #, c-format msgid "option `%s' doesn't allow an argument\n" msgstr "ѡ%sܲ\n" #: scanopt.c:569 #, c-format msgid "option `%s' requires an argument\n" msgstr "ѡ%sҪһ\n" #: scanopt.c:573 #, c-format msgid "option `%s' is ambiguous\n" msgstr "" #: scanopt.c:577 #, c-format msgid "Unrecognized option `%s'\n" msgstr "δ֪ѡ%s\n" #: scanopt.c:581 #, c-format msgid "Unknown error=(%d)\n" msgstr "δ֪=(%d)\n" #: sym.c:100 msgid "symbol table memory allocation failed" msgstr "űڴʧ" #: sym.c:202 msgid "name defined twice" msgstr "ƶ" #: sym.c:253 #, c-format msgid "start condition %s declared twice" msgstr "ʼ %s " #: yylex.c:56 msgid "premature EOF" msgstr "" #: yylex.c:198 #, c-format msgid "End Marker\n" msgstr "" #: yylex.c:204 #, c-format msgid "*Something Weird* - tok: %d val: %d\n" msgstr "" #~ msgid "consistency check failed in symfollowset" #~ msgstr "symfollowset еһԼʧ" #~ msgid "unknown -R option '%c'" #~ msgstr "δ֪ -R ѡ%c" flex-2.5.39/po/zh_TW.gmo0000644000175000017500000005027112314621666015213 0ustar srivastasrivastaT 7  AOh/'.> S"_#  *3'[z!C$)C%]"#FOn`"&0,+] $" )/Y4y5E/*.Z&(+"6>!u".Lg #' Kl : #(#$ $26$#i$+$$&$$ % %:%Y%*q%C%3%0&%E&k&%&&+&&" '-'G'Y'n'','3'/( 2(@((\((((+(( )'')O)m)))))**<*'N*v*$*2* * +,%+-R+ + +++!+&+,!*, L,Z,0q,!, ,,, -% -F3-z----"-..6.<H.-..4]0000020%1E1"^1111%11!12,?23l2"22!2F2@3$_3333!33448.4g4 4X44 53'5.[55555&5 6+&6R6+q6(67606-/7,]7.7-7'7&8B68-y8"888899/9J9b9y999999 :!#:!E: g: u:E(EEE)E'F .FOF.oFFFF!FG"G1=GJoGJG!H 'H!HHjH3HH#HHI%I8ITI:pI1I/I JJ(9JbJ!rJ*JJJ)J K%6K%\K%K%K%K%K%L@L#VLzL%L(LLL,M1BM tMM MM!M$M!N!*NLNeN.xNN NNNOOT5OOOOOO P*PGP8]P"P%ZC9F"1]dB!)Um:&aT -+@Hoiz[8D}fn2;YOlc<NR=(_r^P *`J,06M Lx{' ?bIe~V/A GwWjQp3t7y4S v>Kq\|sg5hXEu.k#$ ********** beginning dump of nfa with start state %d DFA Dump: Equivalence Classes: Meta-Equivalence Classes: jam-transitions: EOF %d (%d saved) hash collisions, %d DFAs equal %d backing-up (non-accepting) states %d empty table entries %d epsilon states, %d double epsilon states %d protos created %d rules %d sets of reallocations needed %d state/nextstate pairs created %d table entries %d templates created, %d uses %d total table entries needed %d/%d (peak %d) nxt-chk entries created %d/%d (peak %d) template nxt-chk entries created %d/%d DFA states (%d words) %d/%d NFA states %d/%d base-def entries created %d/%d character classes needed %d/%d words of storage, %d reused %d/%d equivalence classes created %d/%d meta-equivalence classes created %d/%d start conditions %d/%d unique/duplicate transitions Beginning-of-line patterns used Compressed tables always back-up No backing up no character classes scanner options: - and may be the actual source of other reported performance penalties associated rule line numbers: out-transitions: %%option yylineno entails a performance penalty ONLY on rules that can match newline characters %array incompatible with -+ option%d backing up (non-accepting) states. %option yyclass only meaningful for C++ scanners%option yylineno cannot be used with REJECT%s %s %s version %s usage statistics: %s: fatal internal error, %s ********** end of dump *Something Weird* - tok: %d val: %d -Cf and -CF are mutually exclusive-Cf/-CF and -Cm don't make sense together-Cf/-CF and -I are incompatible-Cf/-CF are incompatible with lex-compatibility mode-I (interactive) entails a minor performance penalty -l AT&T lex compatibility option entails a large performance penalty -s option given but default rule can be matchedAllocation of buffer for line directive failedAllocation of buffer for m4 def failedAllocation of buffer for m4 undef failedAllocation of buffer to print string failedCan't use -+ with -CF optionCan't use -+ with -l optionCan't use --reentrant or --bison-bridge with -l optionCan't use -f or -F with -l optionCompressed tables always back up. Could not write ecstblCould not write eoltblCould not write ftblCould not write ssltblCould not write yyacc_tblCould not write yyacclist_tblCould not write yybase_tblCould not write yychk_tblCould not write yydef_tblCould not write yymeta_tblCould not write yynultrans_tblCould not write yynxt_tblCould not write yynxt_tbl[][]Definition name too long Definition value for {%s} too long EOF encountered inside an actionEOF encountered inside patternEnd Marker Generates programs that perform pattern-matching on text. Table Compression: -Ca, --align trade off larger tables for better memory alignment -Ce, --ecs construct equivalence classes -Cf do not compress tables; use -f representation -CF do not compress tables; use -F representation -Cm, --meta-ecs construct meta-equivalence classes -Cr, --read use read() instead of stdio for scanner input -f, --full generate fast, large scanner. Same as -Cfr -F, --fast use alternate table representation. Same as -CFr -Cem default compression (same as --ecs --meta-ecs) Debugging: -d, --debug enable debug mode in scanner -b, --backup write backing-up information to %s -p, --perf-report write performance report to stderr -s, --nodefault suppress default rule to ECHO unmatched text -T, --trace %s should run in trace mode -w, --nowarn do not generate warnings -v, --verbose write summary of scanner statistics to stdout Files: -o, --outfile=FILE specify output filename -S, --skel=FILE specify skeleton file -t, --stdout write scanner on stdout instead of %s --yyclass=NAME name of C++ class --header-file=FILE create a C header file in addition to the scanner --tables-file[=FILE] write tables to FILE Scanner behavior: -7, --7bit generate 7-bit scanner -8, --8bit generate 8-bit scanner -B, --batch generate batch scanner (opposite of -I) -i, --case-insensitive ignore case in patterns -l, --lex-compat maximal compatibility with original lex -X, --posix-compat maximal compatibility with POSIX lex -I, --interactive generate interactive scanner (opposite of -B) --yylineno track line count in yylineno Generated code: -+, --c++ generate C++ scanner class -Dmacro[=defn] #define macro defn (default defn is '1') -L, --noline suppress #line directives in scanner -P, --prefix=STRING use STRING as prefix instead of "yy" -R, --reentrant generate a reentrant C scanner --bison-bridge scanner for bison pure parser. --bison-locations include yylloc support. --stdinit initialize yyin/yyout to stdin/stdout --noansi-definitions old-style function definitions --noansi-prototypes empty parameter list in prototypes --nounistd do not include --noFUNCTION do not generate a particular FUNCTION Miscellaneous: -c do-nothing POSIX option -n do-nothing POSIX option -? -h, --help produce this help message -V, --version report %s version Input line too long Internal error. flexopts are malformed. No backing up. Option line too long Options -+ and --reentrant are mutually exclusive.REJECT cannot be used with -f or -FREJECT entails a large performance penalty State #%d is non-accepting - Try `%s --help' for more information. Unknown error=(%d) Unmatched '{'Unrecognized option `%s' Usage: %s [OPTIONS] [FILE]... Usage: %s [OPTIONS]... Variable trailing context rule at line %d Variable trailing context rules entail a large performance penalty [:^lower:] is ambiguous in case insensitive scanner[:^upper:] ambiguous in case insensitive scannerallocation of macro definition failedallocation of sko_stack failedattempt to increase array size failedbad : %sbad character '%s' detected in check_char()bad character classbad character class expression: %sbad character inside {}'sbad character: %sbad iteration valuesbad line in skeleton filebad start condition listbad state type in mark_beginning_as_normal()bad transition character detected in sympartition()bison bridge not supported for the C++ scanner.can't open %scan't open skeleton file %sconsistency check failed in epsclosure()could not create %scould not create backing-up info file %scould not create unique end-of-buffer statecould not write tables headerdangerous trailing contextdynamic memory failure in copy_string()empty machine in dupmachine()error closing backup file %serror closing output file %serror closing skeleton file %serror creating header file %serror deleting output file %serror writing backup file %serror writing output file %sfatal parse errorfound too many transitions in mkxtion()incomplete name definitioninput error reading skeleton file %sinput rules are too complicated (>= %d NFA states)iteration value must be positivemalformed '%top' directivememory allocation failed in allocate_array()memory allocation failed in yy_flex_xmalloc()missing quotemissing }name "%s" ridiculously longname defined twicenegative range in character classoption `%s' doesn't allow an argument option `%s' is ambiguous option `%s' requires an argument premature EOFrule cannot be matchedscanner requires -8 flag to use the character %sstart condition %s declared twicestate # %4d state # %d accepts: state # %d accepts: [%d] state # %d: symbol table memory allocation failedthe character range [%c-%c] is ambiguous in a case-insensitive scannertoo many rules (> %d)!trailing context used twiceundefined definition {%s}unknown -C option '%c'unknown error processing section 1unrecognized %%option: %sunrecognized '%' directiveunrecognized rulevariable trailing context rules cannot be used with -f or -Fyymore() entails a minor performance penalty Project-Id-Version: flex 2.5.37 Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net POT-Creation-Date: 2014-03-26 15:00-0400 PO-Revision-Date: 2013-02-12 23:23+0800 Last-Translator: Wei-Lun Chao Language-Team: Chinese (traditional) Language: zh_TW MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; ********** 開始輸出起始狀態為 %d 的 NFA DFA 傾印: 等價類別: 後設等價類別: 合併轉換:檔案結尾 %d (%d 已儲存) 雜湊碰撞,%d DFAs 相等 %d 備份 (非接受) 狀態 %d 清空表格項目 %d ε狀態,%d 雙倍ε狀態 %d 原型已建立 %d 條規則 需要 %d 組重新配置 %d 狀態/下一狀態對已建立 %d 表格項目 %d 範本已建立,%d 使用 總計需要 %d 表格項目 %d/%d (尖峰 %d) nxt-chk 項目已建立 %d/%d (尖峰 %d) 模板 nxt-chk 項目已建立 %d/%d DFA 狀態 (%d 個字詞) %d/%d NFA 狀態 %d/%d base-def 項目已建立 %d/%d 字元類別所需 %d/%d 字詞的儲存體,%d 重新使用 %d/%d 等價類別已建立 %d/%d 後設等價類別已建立 %d/%d 起始條件 %d/%d 獨一/重複轉換 列首式樣已使用 壓縮過的表格自動備份 沒有備份 無字元類別 掃描程式選項:- 同時也許是其他回報效能減退的實際來源 關聯的規則列號: 外轉換:%%option yylineno 導致效能減退,只有當該規則該吻合新列字元時才會 %array 與 -+ 選項不相容%d 備份 (非接受) 狀態。 %option yyclass 只對於 C++ 掃描程式有意義%option yylineno 無法與 REJECT 共同使用%s %s %s 版本 %s 用法統計: %s:嚴重內部錯誤,%s ********** 傾印結束 *情況很怪異* - tok:%d val:%d -Cf 和 -CF 是互斥的-Cf/-CF 和 -Cm 共用時不具任何意義-Cf/-CF 和 -I 是不相容的-Cf/-CF 與 lex 相容模式是不相容的-I (互動式) 導致小幅效能減退 -l AT&T lex 相容性選項會導致大幅效能減退 -s 選項已給定但是可以吻合預設規則給予緩衝區配額用於列指令時失敗給予緩衝區配額用於 m4 def 時失敗給予緩衝區配額用於 m4 undef 時失敗給予緩衝區配額以列印字串時失敗無法將 -+ 與 -CF 選項共同使用無法將 -+ 與 -l 選項共同使用無法將 --reentrant 或 --bison-bridge 與 -l 選項共同使用無法將 -f 或 -F 與 -l 選項共同使用壓縮過的表格自動備份。 無法寫入 ecstbl無法寫入 eoltbl無法寫入 ftbl無法寫入 ssltbl無法寫入 yyacc_tbl無法寫入 yyacclist_tbl無法寫入 yybase_tbl無法寫入 yychk_tbl無法寫入 yydef_tbl無法寫入 yymeta_tbl無法寫入 yynultrans_tbl無法寫入 yynxt_tbl無法寫入 yynxt_tbl[][]定義名稱太長 {%s} 的定義值太長 在動作之內遇到檔案結束在式樣之內遇到檔案結束結束標誌 產生能夠根據文字進行式樣匹配的程式。 表格壓縮: -Ca,--align 換掉較大表格以獲取較佳記憶體對位 -Ce,--ecs 建構等價類別 -Cf 不壓縮表格;使用 -f 表示法 -CF 不壓縮表格;使用 -F 表示法 -Cm,--meta-ecs 構造後設等價類別 -Cr,--read 使用 read() 以代替 stdio 用於掃描程式的輸入 -f, --full 產生快速,大型掃描程式。如同 -Cfr -F, --fast 使用交替表格表示法。如同 -CFr -Cem 預設壓縮 (如同 --ecs --meta-ecs) 偵錯: -d, --debug 在掃描程式中啟用除錯模式 -b, --backup 寫入備份資訊到 %s -p, --perf-report 將效能報告寫入標準勘誤 -s, --nodefault 抑制預設規則以回應不符合的文字 -T, --trace %s 應該在追蹤模式中運行 -w, --nowarn 不產生警告 -v, --verbose 將概要的掃描程式統計寫入標準輸出 檔案: -o, --outfile=檔案 指定輸出檔名 -S, --skel=檔案 指定架構檔案 -t, --stdout 將掃描程式寫入標準輸出以代替 %s --yyclass=名稱 C++ 類別的名稱 --header-file=檔案 掃描程式之外建立 C 標頭檔 --tables-file[=檔案] 將表格寫入檔案 掃描程式行為: -7, --7bit 產生七位元掃描程式 -8, --8bit 產生八位元掃描程式 -B, --batch 產生批次掃描程式 (相對於 -I) -i, --case-insensitive 忽略式樣中的大小寫 -l, --lex-compat 與原始 lex 最大相容 -X, --posix-compat 與 POSIX lex 最大相容 -I, --interactive 產生互動式掃描程式 (相對於 -B) --yylineno 在 yylineno 中計數軌列 產生的編碼: -+, --c++ 產生 C++ 掃描程式類別 -Dmacro [=defn] #define 巨集 defn (預設 defn 為「1」) -L, --noline 在掃描程式中抑制 # 列指令 -P, --prefix=字串 使用字串做為前綴以代替「yy」 -R, --reentrant 產生重新進入 C 掃描程式 --bison-bridge 掃描程式用於 bison pure 剖析器。 --bison-locations 包含 yylloc 支援。 --stdinit 初始化 yyin/yyout 到標準輸入/標準輸出 --noansi-definitions 舊式函式定義 --noansi-prototypes 在原型中清空參數清單 --nounistd 不包含 --noFUNCTION 不產生特定函式 雜項: -c do-nothing POSIX 選項 -n do-nothing POSIX 選項 -? -h, --help 產生這個說明訊息 -V, --version 報告 %s 版本 輸入列太長 內部錯誤。flexopts 功能異常。 沒有備份。 選項列太長 選項 -+ 和 --reentrant 是互斥的。REJECT 無法與 -f 或 -F 共同使用REJECT 導致大幅效能減退 #%d 正處於非存取狀態 - 嘗試「%s --help」以獲得更多資訊。 不明錯誤=(%d) 不成對的「{」無法辨識的選項 %s 用法:%s [選項] [檔案]… 用法:%s [選項]… 變數末尾內文規則於列 %d 變數末尾內文規則導致大幅效能減退 在大小寫不須相符的掃描程式中,[:^lower:] 是模稜兩可的在大小寫不須相符的掃描程式中,[:^upper:] 是模稜兩可的給予巨集定義配額時失敗給予 sko_stack 配額時失敗試圖增加陣列大小時失敗不當的 <起始條件>:%s在 checkchar() 中偵測到不當的字元「%s」不當的字元類別不當的字元類別運算式:%s不當字元於 {} 內部不當的字元:%s不當的迭代值架構檔案中不當的列不當的起始條件清單在 mark_beginning_as_normal() 中有不當的狀態輸入在 sympartition() 偵測到不當的轉換字元bison 橋接器不受 C++ 掃描程式支援。無法開啟 %s無法開啟架構檔案 %sepsclosure() 中的一致性檢查失敗無法建立 %s無法建立備份資訊檔案 %s無法建立獨一的緩衝區結尾狀態無法寫入表頭不安全的末端內文在 copystring() 中動態記憶體失敗在 dupmachine() 中清空機器關閉備份檔案 %s 時發生錯誤關閉輸出檔案 %s 時發生錯誤關閉架構檔案 %s 時發生錯誤建立標頭檔案 %s 時發生錯誤刪除輸出檔案 %s 時發生錯誤寫入備份檔案 %s 時發生錯誤寫入輸出檔案 %s 時發生錯誤嚴重的解析錯誤在 mkxtion() 中找到太多轉換不完整的名稱定義讀取架構檔案 %s 時輸入錯誤輸入規則太複雜 (>= %d NFA 狀態)迭代值必須是正值異常的「%top」指令在 allocatearray() 中記憶體配置失敗在 yy_flex_xmalloc() 中的記憶體配置失敗缺少引號缺少 }名稱「%s」有荒謬的長度名稱定義了兩次在字元類別中有負值範圍選項「%s」不允許任何引數 選項「%s」是模稜兩可的 選項「%s」需要一個引數 過早出現檔案結尾規則無法吻合掃描程式需要 -8 旗標以使用字元 %s起始條件 %s 宣告了兩次狀態 # %4d 狀態 # %d 接受:狀態 # %d 接受:[%d] 狀態 # %d: 符號表記憶體配置失敗在大小寫不須相符的掃描程式中,字元範圍 [%c-%c] 是模稜兩可的太多規則 (> %d)!末尾內文已使用兩次未定義的定義 {%s}不明 -C 選項「%c」不明的錯誤處理區段 1無法辨識的 %%option:%s無法辨識的「%」指令無法辨識的規則變數末尾內文規則無法與 -f 或 -F 共同使用yymore() 導致小幅效能減退 flex-2.5.39/po/boldquot.sed0000644000175000017500000000033112300730747015766 0ustar srivastasrivastas/"\([^"]*\)"/“\1”/g s/`\([^`']*\)'/‘\1’/g s/ '\([^`']*\)' / ‘\1’ /g s/ '\([^`']*\)'$/ ‘\1’/g s/^'\([^`']*\)' /‘\1’ /g s/“”/""/g s/“/“/g s/”/”/g s/‘/‘/g s/’/’/g flex-2.5.39/po/pt_BR.po0000644000175000017500000006456612314621665015035 0ustar srivastasrivasta# Translation to Brazilian Portuguese of flex. # Copyright (C) 2013 The Flex Project (msgids) # This file is distributed under the same license as the flex package. # Alexandre Folle de Menezes , 2003, 2004. # Rafael Ferreira , 2013. # msgid "" msgstr "" "Project-Id-Version: flex 2.5.37\n" "Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2014-03-26 15:00-0400\n" "PO-Revision-Date: 2013-11-27 08:09-0300\n" "Last-Translator: Rafael Ferreira \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.5.7\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: buf.c:78 msgid "Allocation of buffer to print string failed" msgstr "A alocação de buffer para retornar string falhou" #: buf.c:100 msgid "Allocation of buffer for line directive failed" msgstr "A alocação de buffer para diretiva de linha falhou" #: buf.c:177 msgid "Allocation of buffer for m4 def failed" msgstr "A alocação de buffer para m4 def falhou" #: buf.c:197 msgid "Allocation of buffer for m4 undef failed" msgstr "A alocação de buffer para m4 undef falhou" #: dfa.c:61 #, c-format msgid "State #%d is non-accepting -\n" msgstr "O estado #%d é não-aceita -\n" #: dfa.c:124 msgid "dangerous trailing context" msgstr "texto final perigoso" #: dfa.c:166 #, c-format msgid " associated rule line numbers:" msgstr " números de linha de regras associadas:" #: dfa.c:202 #, c-format msgid " out-transitions: " msgstr " transações de saída: " #: dfa.c:210 #, c-format msgid "" "\n" " jam-transitions: EOF " msgstr "" "\n" " transições presas: Fim de Arquivo " #: dfa.c:341 msgid "consistency check failed in epsclosure()" msgstr "verificação de consistência falhou em epsclosure()" #: dfa.c:429 msgid "" "\n" "\n" "DFA Dump:\n" "\n" msgstr "" "\n" "\n" "Despejo DFA:\n" "\n" #: dfa.c:604 msgid "could not create unique end-of-buffer state" msgstr "não foi possível criar um estado único de final de buffer" #: dfa.c:625 #, c-format msgid "state # %d:\n" msgstr "estado # %d:\n" #: dfa.c:785 msgid "Could not write yynxt_tbl[][]" msgstr "Não foi possível escrever yynxt_tbl[][]" #: dfa.c:1049 msgid "bad transition character detected in sympartition()" msgstr "caractere de transição inválido detectado em sympartition()" #: gen.c:478 msgid "" "\n" "\n" "Equivalence Classes:\n" "\n" msgstr "" "\n" "\n" "Classes de Equivalência:\n" "\n" #: gen.c:662 gen.c:691 gen.c:1215 #, c-format msgid "state # %d accepts: [%d]\n" msgstr "estado # %d aceita: [%d]\n" #: gen.c:1110 #, c-format msgid "state # %d accepts: " msgstr "estado # %d aceita: " #: gen.c:1157 msgid "Could not write yyacclist_tbl" msgstr "Não foi possível escrever yyacclist_tbl" #: gen.c:1233 msgid "Could not write yyacc_tbl" msgstr "Não foi possível escrever yyacc_tbl" #: gen.c:1248 gen.c:1633 gen.c:1656 msgid "Could not write ecstbl" msgstr "Não foi possível escrever ecstbl" #: gen.c:1271 msgid "" "\n" "\n" "Meta-Equivalence Classes:\n" msgstr "" "\n" "\n" "Classes de Meta-Equivalência:\n" #: gen.c:1293 msgid "Could not write yymeta_tbl" msgstr "Não foi possível escrever yymeta_tbl" #: gen.c:1354 msgid "Could not write yybase_tbl" msgstr "Não foi possível escrever yybase_tbl" #: gen.c:1388 msgid "Could not write yydef_tbl" msgstr "Não foi possível escrever yydef_tbl" #: gen.c:1428 msgid "Could not write yynxt_tbl" msgstr "Não foi possível escrever yynxt_tbl" #: gen.c:1464 msgid "Could not write yychk_tbl" msgstr "Não foi possível escrever yychk_tbl" #: gen.c:1618 gen.c:1647 msgid "Could not write ftbl" msgstr "Não foi possível escrever ftbl" #: gen.c:1624 msgid "Could not write ssltbl" msgstr "Não foi possível escrever ssltbl" #: gen.c:1675 msgid "Could not write eoltbl" msgstr "Não foi possível escrever eoltbl" #: gen.c:1735 msgid "Could not write yynultrans_tbl" msgstr "Não foi possível escrever yynultrans_tbl" #: main.c:191 msgid "rule cannot be matched" msgstr "aplicação da regra não gerou nenhum resultado" #: main.c:196 msgid "-s option given but default rule can be matched" msgstr "a opção -s foi fornecida, mas a regra padrão pode ser aplicada" #: main.c:236 msgid "Can't use -+ with -l option" msgstr "Não é possível usar -+ com a opção -l" #: main.c:239 msgid "Can't use -f or -F with -l option" msgstr "Não é possível usar -f ou -F com a opção -l" #: main.c:243 msgid "Can't use --reentrant or --bison-bridge with -l option" msgstr "Não é possível usar --reentrant ou --bison-bridge com a opção -l" #: main.c:275 msgid "-Cf/-CF and -Cm don't make sense together" msgstr "-Cf/-CF e -Cm não fazem sentido juntos" #: main.c:278 msgid "-Cf/-CF and -I are incompatible" msgstr "-Cf/-CF e -I são incompatíveis" #: main.c:282 msgid "-Cf/-CF are incompatible with lex-compatibility mode" msgstr "-Cf/-CF são incompatíveis com o modo de compatibilidade lex" #: main.c:287 msgid "-Cf and -CF are mutually exclusive" msgstr "-Cf e -CF são mutuamente exclusivos" #: main.c:291 msgid "Can't use -+ with -CF option" msgstr "Não é possível usar -+ com a opção -CF" #: main.c:294 #, c-format msgid "%array incompatible with -+ option" msgstr "%array é incompatível com a opção -+" #: main.c:299 msgid "Options -+ and --reentrant are mutually exclusive." msgstr "As opções -+ e --reentrant são mutuamente exclusivas." #: main.c:302 msgid "bison bridge not supported for the C++ scanner." msgstr "sem suporte à ponte bison pelo scanner de C++." #: main.c:357 main.c:403 #, c-format msgid "could not create %s" msgstr "não foi possível criar %s" #: main.c:416 msgid "could not write tables header" msgstr "não foi possível escrever o cabeçalho das tabelas" #: main.c:420 #, c-format msgid "can't open skeleton file %s" msgstr "não é possível abrir o arquivo esqueleto %s" #: main.c:456 msgid "allocation of macro definition failed" msgstr "a alocação de definição de macro falhou" #: main.c:504 #, c-format msgid "input error reading skeleton file %s" msgstr "erro lendo o arquivo esqueleto %s" #: main.c:508 #, c-format msgid "error closing skeleton file %s" msgstr "erro fechando o arquivo esqueleto %s" #: main.c:693 #, c-format msgid "error creating header file %s" msgstr "erro ao criar o arquivo cabeçalho %s" #: main.c:701 #, c-format msgid "error writing output file %s" msgstr "erro ao gravar o arquivo de saída %s" #: main.c:705 #, c-format msgid "error closing output file %s" msgstr "erro ao fechar o arquivo de saída %s" #: main.c:709 #, c-format msgid "error deleting output file %s" msgstr "erro ao remover o arquivo de saída %s" #: main.c:716 #, c-format msgid "No backing up.\n" msgstr "Impossível restaurar.\n" #: main.c:720 #, c-format msgid "%d backing up (non-accepting) states.\n" msgstr "%d fazendo cópia de segurança de estados (não-aceita).\n" #: main.c:724 #, c-format msgid "Compressed tables always back up.\n" msgstr "Tabelas compactadas sempre têm cópias de segurança.\n" #: main.c:727 #, c-format msgid "error writing backup file %s" msgstr "erro ao gravar a cópia de segurança %s" #: main.c:731 #, c-format msgid "error closing backup file %s" msgstr "erro ao fechar a cópia de segurança %s" #: main.c:736 #, c-format msgid "%s version %s usage statistics:\n" msgstr "%s versão %s estatísticas de uso:\n" #: main.c:739 #, c-format msgid " scanner options: -" msgstr " opções de scanner: -" #: main.c:818 #, c-format msgid " %d/%d NFA states\n" msgstr " %d/%d estados NFA\n" #: main.c:820 #, c-format msgid " %d/%d DFA states (%d words)\n" msgstr " %d/%d estados DFA (%d palavras)\n" #: main.c:822 #, c-format msgid " %d rules\n" msgstr " %d regras\n" #: main.c:827 #, c-format msgid " No backing up\n" msgstr " Sem cópia de segurança\n" #: main.c:831 #, c-format msgid " %d backing-up (non-accepting) states\n" msgstr " %d fazendo cópia de segurança de estados (não-aceita)\n" #: main.c:836 #, c-format msgid " Compressed tables always back-up\n" msgstr " Tabelas compactadas sempre têm cópias de segurança\n" #: main.c:840 #, c-format msgid " Beginning-of-line patterns used\n" msgstr " Padrões de início-de-linha usados\n" #: main.c:842 #, c-format msgid " %d/%d start conditions\n" msgstr " %d/%d condições de início\n" #: main.c:846 #, c-format msgid " %d epsilon states, %d double epsilon states\n" msgstr " %d estados epsilon, %d estados epsilon duplo\n" #: main.c:850 #, c-format msgid " no character classes\n" msgstr " nenhuma classe de caracteres\n" #: main.c:854 #, c-format msgid " %d/%d character classes needed %d/%d words of storage, %d reused\n" msgstr "" " %d/%d classes de caracteres precisaram de %d/%d palavras de armazenamento, " "%d reusadas\n" #: main.c:859 #, c-format msgid " %d state/nextstate pairs created\n" msgstr " %d pares estado/próximoestado criados\n" #: main.c:862 #, c-format msgid " %d/%d unique/duplicate transitions\n" msgstr " %d/%d transições únicas/duplicadas\n" #: main.c:867 #, c-format msgid " %d table entries\n" msgstr " %d entradas de tabela\n" #: main.c:875 #, c-format msgid " %d/%d base-def entries created\n" msgstr " %d/%d entradas base-def criadas\n" #: main.c:879 #, c-format msgid " %d/%d (peak %d) nxt-chk entries created\n" msgstr " %d/%d (pico %d) entradas nxt-chk criadas\n" #: main.c:883 #, c-format msgid " %d/%d (peak %d) template nxt-chk entries created\n" msgstr " %d/%d (pico %d) modelos de entradas nxt-chk criadas\n" #: main.c:887 #, c-format msgid " %d empty table entries\n" msgstr " %d entradas vazias na tabela\n" #: main.c:889 #, c-format msgid " %d protos created\n" msgstr " %d protos criados\n" #: main.c:892 #, c-format msgid " %d templates created, %d uses\n" msgstr " %d modelos criados, %d usos\n" #: main.c:900 #, c-format msgid " %d/%d equivalence classes created\n" msgstr " %d/%d classes de equivalência criadas\n" #: main.c:908 #, c-format msgid " %d/%d meta-equivalence classes created\n" msgstr " %d/%d classes de meta-equivalência criadas\n" #: main.c:914 #, c-format msgid " %d (%d saved) hash collisions, %d DFAs equal\n" msgstr " %d (%d salvas) colisões de hash, %d DFAs iguais\n" #: main.c:916 #, c-format msgid " %d sets of reallocations needed\n" msgstr " %d conjuntos de realocação necessários\n" #: main.c:918 #, c-format msgid " %d total table entries needed\n" msgstr " %d total de entradas de tabela necessárias\n" #: main.c:995 #, c-format msgid "Internal error. flexopts are malformed.\n" msgstr "Erro interno. flexopts estão malformados.\n" #: main.c:1005 #, c-format msgid "Try `%s --help' for more information.\n" msgstr "Tente \"%s --help\" para maiores informações.\n" #: main.c:1062 #, c-format msgid "unknown -C option '%c'" msgstr "opção -C \"%c\" desconhecida" #: main.c:1191 #, c-format msgid "%s %s\n" msgstr "%s %s\n" #: main.c:1466 msgid "fatal parse error" msgstr "erro fatal de análise" #: main.c:1498 #, c-format msgid "could not create backing-up info file %s" msgstr "" "não foi possível criar arquivo de cópia de segurança das informações %s" #: main.c:1519 #, c-format msgid "-l AT&T lex compatibility option entails a large performance penalty\n" msgstr "" "a opção de compatibilidade com lex da AT&T \"-l\" acarreta em uma grande " "penalidade na performance\n" #: main.c:1522 #, c-format msgid " and may be the actual source of other reported performance penalties\n" msgstr "" " e pode ser a fonte real de outras penalidades de performance reportadas\n" #: main.c:1528 #, c-format msgid "" "%%option yylineno entails a performance penalty ONLY on rules that can match " "newline characters\n" msgstr "" "%%option yylineno acarreta em uma penalidade na performance APENAS em regras " "que podem bater caracteres de nova linha\n" #: main.c:1535 #, c-format msgid "-I (interactive) entails a minor performance penalty\n" msgstr "-I (interativo) acarreta em uma pequena penalidade na performance\n" #: main.c:1540 #, c-format msgid "yymore() entails a minor performance penalty\n" msgstr "yymore() acarreta em uma pequena penalidade na performance\n" #: main.c:1546 #, c-format msgid "REJECT entails a large performance penalty\n" msgstr "REJECT acarreta em uma grande penalidade na performance\n" #: main.c:1551 #, c-format msgid "Variable trailing context rules entail a large performance penalty\n" msgstr "" "Variável seguindo regras de contexto implicam em grande perda de " "performance\n" #: main.c:1563 msgid "REJECT cannot be used with -f or -F" msgstr "REJECT não pode ser usado com -f ou -F" #: main.c:1566 #, c-format msgid "%option yylineno cannot be used with REJECT" msgstr "%option yylineno não pode ser usada com REJECT" #: main.c:1569 msgid "variable trailing context rules cannot be used with -f or -F" msgstr "" "variáveis seguindo regras de contexto não podem ser usadas com -f ou -F" #: main.c:1692 #, c-format msgid "%option yyclass only meaningful for C++ scanners" msgstr "%option yyclass só tem sentido para scanners C++" #: main.c:1799 #, c-format msgid "Usage: %s [OPTIONS] [FILE]...\n" msgstr "Uso: %s [OPÇÕES] [ARQUIVO]...\n" #: main.c:1802 #, c-format msgid "" "Generates programs that perform pattern-matching on text.\n" "\n" "Table Compression:\n" " -Ca, --align trade off larger tables for better memory alignment\n" " -Ce, --ecs construct equivalence classes\n" " -Cf do not compress tables; use -f representation\n" " -CF do not compress tables; use -F representation\n" " -Cm, --meta-ecs construct meta-equivalence classes\n" " -Cr, --read use read() instead of stdio for scanner input\n" " -f, --full generate fast, large scanner. Same as -Cfr\n" " -F, --fast use alternate table representation. Same as -CFr\n" " -Cem default compression (same as --ecs --meta-ecs)\n" "\n" "Debugging:\n" " -d, --debug enable debug mode in scanner\n" " -b, --backup write backing-up information to %s\n" " -p, --perf-report write performance report to stderr\n" " -s, --nodefault suppress default rule to ECHO unmatched text\n" " -T, --trace %s should run in trace mode\n" " -w, --nowarn do not generate warnings\n" " -v, --verbose write summary of scanner statistics to stdout\n" "\n" "Files:\n" " -o, --outfile=FILE specify output filename\n" " -S, --skel=FILE specify skeleton file\n" " -t, --stdout write scanner on stdout instead of %s\n" " --yyclass=NAME name of C++ class\n" " --header-file=FILE create a C header file in addition to the " "scanner\n" " --tables-file[=FILE] write tables to FILE\n" "\n" "Scanner behavior:\n" " -7, --7bit generate 7-bit scanner\n" " -8, --8bit generate 8-bit scanner\n" " -B, --batch generate batch scanner (opposite of -I)\n" " -i, --case-insensitive ignore case in patterns\n" " -l, --lex-compat maximal compatibility with original lex\n" " -X, --posix-compat maximal compatibility with POSIX lex\n" " -I, --interactive generate interactive scanner (opposite of -B)\n" " --yylineno track line count in yylineno\n" "\n" "Generated code:\n" " -+, --c++ generate C++ scanner class\n" " -Dmacro[=defn] #define macro defn (default defn is '1')\n" " -L, --noline suppress #line directives in scanner\n" " -P, --prefix=STRING use STRING as prefix instead of \"yy\"\n" " -R, --reentrant generate a reentrant C scanner\n" " --bison-bridge scanner for bison pure parser.\n" " --bison-locations include yylloc support.\n" " --stdinit initialize yyin/yyout to stdin/stdout\n" " --noansi-definitions old-style function definitions\n" " --noansi-prototypes empty parameter list in prototypes\n" " --nounistd do not include \n" " --noFUNCTION do not generate a particular FUNCTION\n" "\n" "Miscellaneous:\n" " -c do-nothing POSIX option\n" " -n do-nothing POSIX option\n" " -?\n" " -h, --help produce this help message\n" " -V, --version report %s version\n" msgstr "" "Gera programas que realizando correspondência de padrão em texto.\n" "\n" "Tabela de compressão:\n" " -Ca, --align troca tabelas maiores por melhor alinhamento de memória\n" " -Ce, --ecs classes de construção de equivalência\n" " -Cf não comprime tabelas; use a representação -f\n" " -CF não comprime tabelas; use a representação -F\n" " -Cm, --meta-ecs construct meta-equivalence classes\n" " -Cr, --read use read() em vez da stdio para a entrada do scanner\n" " -f, --full gera scanner grande e rápido. O mesmo que -Cfr\n" " -F, --fast usa representação de tabela alternativa. O mesmo que -" "CFr\n" " -Cem compressão padrão (mesmo que --ecs --meta-ecs)\n" "\n" "Depuração:\n" " -d, --debug habilita o modo de depuração no scanner\n" " -b, --backup gravação de info de cópia segurança para %s\n" " -p, --perf-report grava relatório de performance para a stderr\n" " -s, --nodefault suprime a regra padrão para ECHO texto não\n" " correspondente\n" " -T, --trace %s deveria executar em modo de ratro\n" " -w, --nowarn não gera avisos\n" " -v, --verbose escreve um resumo das estatísticas do scanner " "para\n" " stdout\n" "\n" "Arquivos:\n" " -o, --outfile=ARQUIVO especifica um nome de arquivo de saída\n" " -S, --skel=ARQUIVO especifica um arquivo de esqueleto\n" " -t, --stdout grava um scanner na saída stdout em vez de %s\n" " --yyclass=NOME nome de classe C++\n" " --header-file=ARQUIVO\n" " cria um arquivo de cabeçalho C além do scanner\n" " --tables-file[=ARQUIVO]\n" " escreve as tabelas no ARQUIVO\n" "\n" "Comportamento do scanner:\n" " -7, --7bit gera um scanner 7-bit\n" " -8, --8bit gera um scanner 8-bit\n" " -B, --batch gera um scanner de lote (oposto de -I)\n" " -i, --case-insensitive ignora diferença maiúsculo/minúsculo em padrões\n" " -l, --lex-compat compatibilidade máxima com lex original\n" " -X, --posix-compat compatibilidade máxima com lex POSIX\n" " -I, --interactive gera um scanner interativo (oposto de -B)\n" " --yylineno rastreia contagem de linhas em yylineno\n" "\n" "Código gerado:\n" " -+, --c++ gera classe C++ do scanner\n" " -Dmacro[=defn] #define macro defn (defn padrão é \"1\")\n" " -L, --noline suprime as diretivas #line em scanner\n" " -P, --prefix=TEXTO usa TEXTO como prefixo em vez de \"yy\"\n" " -R, --reentrant gera um scanner C reentrante\n" " --bison-bridge scanner para analisador bison puro.\n" " --bison-locations inclui suporte a yylloc.\n" " --stdinit inicializa yyin/yyout para stdin/stdout\n" " --noansi-definitions definições de funções estilo antigo\n" " --noansi-prototypes esvazia lista de parâmetros em prototipos\n" " --nounistd não inclui \n" " --noFUNCTION não gera uma FUNCTION em particular\n" "\n" "Miscelânea:\n" " -c opção POSIX faz-nada\n" " -n opção POSIX faz-nada\n" " -?\n" " -h, --help produz esta mensagem de ajuda\n" " -V, --version informa a versão do %s\n" #: misc.c:65 msgid "allocation of sko_stack failed" msgstr "alocação de sko_stack falhou" #: misc.c:102 misc.c:128 #, c-format msgid "name \"%s\" ridiculously long" msgstr "nome \"%s\" ridiculamente longo" #: misc.c:177 msgid "memory allocation failed in allocate_array()" msgstr "alocação de memória falhou em allocate_array()" #: misc.c:230 #, c-format msgid "bad character '%s' detected in check_char()" msgstr "caractere inválido \"%s\" detectado em check_char()" #: misc.c:235 #, c-format msgid "scanner requires -8 flag to use the character %s" msgstr "o scanner precisa da opção -8 para usar o caractere %s" #: misc.c:268 msgid "dynamic memory failure in copy_string()" msgstr "falha dinâmica de memória em copy_string()" #: misc.c:367 #, c-format msgid "%s: fatal internal error, %s\n" msgstr "%s: erro interno fatal, %s\n" #: misc.c:803 msgid "attempt to increase array size failed" msgstr "tentativa de aumentar o tamanho do vetor falhou" #: misc.c:930 msgid "bad line in skeleton file" msgstr "linha inválida no arquivo de esqueleto" #: misc.c:979 msgid "memory allocation failed in yy_flex_xmalloc()" msgstr "alocação de memória falhou em yy_flex_xmalloc()" #: nfa.c:104 #, c-format msgid "" "\n" "\n" "********** beginning dump of nfa with start state %d\n" msgstr "" "\n" "\n" "********** iniciando despejo de nfa com estado inicial %d\n" #: nfa.c:115 #, c-format msgid "state # %4d\t" msgstr "estado # %4d\t" #: nfa.c:130 #, c-format msgid "********** end of dump\n" msgstr "********** final do despejo\n" #: nfa.c:174 msgid "empty machine in dupmachine()" msgstr "máquina vazia em dupmachine()" #: nfa.c:240 #, c-format msgid "Variable trailing context rule at line %d\n" msgstr "Regra de final de contexto variável na linha %d\n" #: nfa.c:364 msgid "bad state type in mark_beginning_as_normal()" msgstr "estado de tipo inválido em mark_beginning_as_normal()" #: nfa.c:609 #, c-format msgid "input rules are too complicated (>= %d NFA states)" msgstr "regras de entrada são muito complicadas (>= %d estados NFA)" #: nfa.c:688 msgid "found too many transitions in mkxtion()" msgstr "muitas transições em mkxtion()" #: nfa.c:714 #, c-format msgid "too many rules (> %d)!" msgstr "muitas regras (> %d)!" #: parse.y:159 msgid "unknown error processing section 1" msgstr "erro desconhecido processando a seção 1" #: parse.y:184 parse.y:351 msgid "bad start condition list" msgstr "lista de condições de início inválida" #: parse.y:315 msgid "unrecognized rule" msgstr "regra não reconhecida" #: parse.y:434 parse.y:447 parse.y:516 msgid "trailing context used twice" msgstr "contexto final usado duas vezes" #: parse.y:552 parse.y:562 parse.y:635 parse.y:645 msgid "bad iteration values" msgstr "valores de iteração inválidos" #: parse.y:580 parse.y:598 parse.y:663 parse.y:681 msgid "iteration value must be positive" msgstr "valor de iteração deve ser positivo" #: parse.y:804 parse.y:814 #, c-format msgid "the character range [%c-%c] is ambiguous in a case-insensitive scanner" msgstr "" "a faixa de caracteres [%c-%c] é ambígua em um scanner \"case-insensitive\"" #: parse.y:819 msgid "negative range in character class" msgstr "faixa negativa na classe de caracteres" #: parse.y:916 msgid "[:^lower:] is ambiguous in case insensitive scanner" msgstr "[:^lower:] é ambígua em um scanner \"case-insensitive\"" #: parse.y:922 msgid "[:^upper:] ambiguous in case insensitive scanner" msgstr "[:^upper:] é ambígua em um scanner \"case-insensitive\"" #: scan.l:75 scan.l:618 scan.l:676 msgid "Input line too long\n" msgstr "Linha de entrada muito longa\n" #: scan.l:161 #, c-format msgid "malformed '%top' directive" msgstr "diretiva \"%top\" malformada" #: scan.l:183 #, no-c-format msgid "unrecognized '%' directive" msgstr "diretiva \"%\" não reconhecida" #: scan.l:192 msgid "Definition name too long\n" msgstr "Nome de definição muito longo\n" #: scan.l:284 msgid "Unmatched '{'" msgstr "'{' sem fechamento" #: scan.l:300 #, c-format msgid "Definition value for {%s} too long\n" msgstr "Valor de definição para {%s} muito longo\n" #: scan.l:317 msgid "incomplete name definition" msgstr "definição de nome incompleta" #: scan.l:443 msgid "Option line too long\n" msgstr "Linha de opção muito longa\n" #: scan.l:451 #, c-format msgid "unrecognized %%option: %s" msgstr "%%option não reconhecida: %s" #: scan.l:633 scan.l:800 msgid "bad character class" msgstr "classe de caractere inválida" #: scan.l:683 #, c-format msgid "undefined definition {%s}" msgstr "definição indefinida {%s}" #: scan.l:755 #, c-format msgid "bad : %s" msgstr " inválida: %s" #: scan.l:768 msgid "missing quote" msgstr "faltou aspa" #: scan.l:834 #, c-format msgid "bad character class expression: %s" msgstr "expressão de classe de caractere inválida: %s" #: scan.l:856 msgid "bad character inside {}'s" msgstr "caracatere inválido entre {}'s" #: scan.l:862 msgid "missing }" msgstr "faltou }" #: scan.l:940 msgid "EOF encountered inside an action" msgstr "Fim de Arquivo encontrado dentro de uma ação" #: scan.l:945 msgid "EOF encountered inside pattern" msgstr "Fim de Arquivo encontrado dentro do padrão" #: scan.l:967 #, c-format msgid "bad character: %s" msgstr "caracter inválido: %s" #: scan.l:996 #, c-format msgid "can't open %s" msgstr "não foi possível abrir %s" #: scanopt.c:291 #, c-format msgid "Usage: %s [OPTIONS]...\n" msgstr "Uso: %s [OPÇÕES]...\n" #: scanopt.c:564 #, c-format msgid "option `%s' doesn't allow an argument\n" msgstr "opção \"%s\" não permite argumentos\n" #: scanopt.c:569 #, c-format msgid "option `%s' requires an argument\n" msgstr "opção \"%s\" requer um argumento\n" #: scanopt.c:573 #, c-format msgid "option `%s' is ambiguous\n" msgstr "opção \"%s\" é ambígua\n" #: scanopt.c:577 #, c-format msgid "Unrecognized option `%s'\n" msgstr "Opção \"%s\" desconhecida\n" #: scanopt.c:581 #, c-format msgid "Unknown error=(%d)\n" msgstr "Erro desconhecido=(%d)\n" #: sym.c:100 msgid "symbol table memory allocation failed" msgstr "alocação da memória da tabela de símbolos falhou" #: sym.c:202 msgid "name defined twice" msgstr "nome definido duas vezes" #: sym.c:253 #, c-format msgid "start condition %s declared twice" msgstr "condição de início %s declarada duas vezes" #: yylex.c:56 msgid "premature EOF" msgstr "Fim-de-Arquivo prematuro" #: yylex.c:198 #, c-format msgid "End Marker\n" msgstr "Marca de Fim\n" #: yylex.c:204 #, c-format msgid "*Something Weird* - tok: %d val: %d\n" msgstr "*Algo Estranho* - tok: %d val: %d\n" #~ msgid "consistency check failed in symfollowset" #~ msgstr "verificação de consistência falhou em symfollowset" #~ msgid "Can't specify header option if writing to stdout." #~ msgstr "" #~ "Impossível especificar a opção de cabeçalho se escrevendo em stdout." #~ msgid "unknown -R option '%c'" #~ msgstr "opção -R '%c' desconecida" flex-2.5.39/po/ca.gmo0000644000175000017500000005443412314621665014547 0ustar srivastasrivastaT 7  AOh/'.> S"_#  *3'[z!C$)C%]"#FOn`"&0,+] $" )/Y4y5E/*.Z&(+"6>!u".Lg #' Kl : #(#$ $26$#i$+$$&$$ % %:%Y%*q%C%3%0&%E&k&%&&+&&" '-'G'Y'n'','3'/( 2(@((\((((+(( )'')O)m)))))**<*'N*v*$*2* * +,%+-R+ + +++!+&+,!*, L,Z,0q,!, ,,, -% -F3-z----"-..6.<H.-.k.J0j0z0 00E0*1!I1/k11 1/1)12!42/V2*272!2 3"3_B3(3.3 3(4+D4Cp4444K5)O5y55'6)66=`6266'677)97#c7$77@7A 8]O8F8@8859:n9:9(9' :A5:,w:3:::;0; N;$o;!; ; ;!;%< @<$a<(<2<$<#=+= ;=%:J-`JJ%J6J'K9(KbK6KKKK&L'L4EL[zLRLR)M4|M(M3M'N46NkN4NNNN(O$@O6eO=O9OP&'P:NPP<P5P/QCQ0_QQDQ6Q7+R:cR8RFR8S2WS+SS0S>T&DTkT7T8TT U%U#=U#aU%UU&U UUDV;^V VVV V>Ve&WW/WWW; XIXdXXJX:X%ZC9F"1]dB!)Um:&aT -+@Hoiz[8D}fn2;YOlc<NR=(_r^P *`J,06M Lx{' ?bIe~V/A GwWjQp3t7y4S v>Kq\|sg5hXEu.k#$ ********** beginning dump of nfa with start state %d DFA Dump: Equivalence Classes: Meta-Equivalence Classes: jam-transitions: EOF %d (%d saved) hash collisions, %d DFAs equal %d backing-up (non-accepting) states %d empty table entries %d epsilon states, %d double epsilon states %d protos created %d rules %d sets of reallocations needed %d state/nextstate pairs created %d table entries %d templates created, %d uses %d total table entries needed %d/%d (peak %d) nxt-chk entries created %d/%d (peak %d) template nxt-chk entries created %d/%d DFA states (%d words) %d/%d NFA states %d/%d base-def entries created %d/%d character classes needed %d/%d words of storage, %d reused %d/%d equivalence classes created %d/%d meta-equivalence classes created %d/%d start conditions %d/%d unique/duplicate transitions Beginning-of-line patterns used Compressed tables always back-up No backing up no character classes scanner options: - and may be the actual source of other reported performance penalties associated rule line numbers: out-transitions: %%option yylineno entails a performance penalty ONLY on rules that can match newline characters %array incompatible with -+ option%d backing up (non-accepting) states. %option yyclass only meaningful for C++ scanners%option yylineno cannot be used with REJECT%s %s %s version %s usage statistics: %s: fatal internal error, %s ********** end of dump *Something Weird* - tok: %d val: %d -Cf and -CF are mutually exclusive-Cf/-CF and -Cm don't make sense together-Cf/-CF and -I are incompatible-Cf/-CF are incompatible with lex-compatibility mode-I (interactive) entails a minor performance penalty -l AT&T lex compatibility option entails a large performance penalty -s option given but default rule can be matchedAllocation of buffer for line directive failedAllocation of buffer for m4 def failedAllocation of buffer for m4 undef failedAllocation of buffer to print string failedCan't use -+ with -CF optionCan't use -+ with -l optionCan't use --reentrant or --bison-bridge with -l optionCan't use -f or -F with -l optionCompressed tables always back up. Could not write ecstblCould not write eoltblCould not write ftblCould not write ssltblCould not write yyacc_tblCould not write yyacclist_tblCould not write yybase_tblCould not write yychk_tblCould not write yydef_tblCould not write yymeta_tblCould not write yynultrans_tblCould not write yynxt_tblCould not write yynxt_tbl[][]Definition name too long Definition value for {%s} too long EOF encountered inside an actionEOF encountered inside patternEnd Marker Generates programs that perform pattern-matching on text. Table Compression: -Ca, --align trade off larger tables for better memory alignment -Ce, --ecs construct equivalence classes -Cf do not compress tables; use -f representation -CF do not compress tables; use -F representation -Cm, --meta-ecs construct meta-equivalence classes -Cr, --read use read() instead of stdio for scanner input -f, --full generate fast, large scanner. Same as -Cfr -F, --fast use alternate table representation. Same as -CFr -Cem default compression (same as --ecs --meta-ecs) Debugging: -d, --debug enable debug mode in scanner -b, --backup write backing-up information to %s -p, --perf-report write performance report to stderr -s, --nodefault suppress default rule to ECHO unmatched text -T, --trace %s should run in trace mode -w, --nowarn do not generate warnings -v, --verbose write summary of scanner statistics to stdout Files: -o, --outfile=FILE specify output filename -S, --skel=FILE specify skeleton file -t, --stdout write scanner on stdout instead of %s --yyclass=NAME name of C++ class --header-file=FILE create a C header file in addition to the scanner --tables-file[=FILE] write tables to FILE Scanner behavior: -7, --7bit generate 7-bit scanner -8, --8bit generate 8-bit scanner -B, --batch generate batch scanner (opposite of -I) -i, --case-insensitive ignore case in patterns -l, --lex-compat maximal compatibility with original lex -X, --posix-compat maximal compatibility with POSIX lex -I, --interactive generate interactive scanner (opposite of -B) --yylineno track line count in yylineno Generated code: -+, --c++ generate C++ scanner class -Dmacro[=defn] #define macro defn (default defn is '1') -L, --noline suppress #line directives in scanner -P, --prefix=STRING use STRING as prefix instead of "yy" -R, --reentrant generate a reentrant C scanner --bison-bridge scanner for bison pure parser. --bison-locations include yylloc support. --stdinit initialize yyin/yyout to stdin/stdout --noansi-definitions old-style function definitions --noansi-prototypes empty parameter list in prototypes --nounistd do not include --noFUNCTION do not generate a particular FUNCTION Miscellaneous: -c do-nothing POSIX option -n do-nothing POSIX option -? -h, --help produce this help message -V, --version report %s version Input line too long Internal error. flexopts are malformed. No backing up. Option line too long Options -+ and --reentrant are mutually exclusive.REJECT cannot be used with -f or -FREJECT entails a large performance penalty State #%d is non-accepting - Try `%s --help' for more information. Unknown error=(%d) Unmatched '{'Unrecognized option `%s' Usage: %s [OPTIONS] [FILE]... Usage: %s [OPTIONS]... Variable trailing context rule at line %d Variable trailing context rules entail a large performance penalty [:^lower:] is ambiguous in case insensitive scanner[:^upper:] ambiguous in case insensitive scannerallocation of macro definition failedallocation of sko_stack failedattempt to increase array size failedbad : %sbad character '%s' detected in check_char()bad character classbad character class expression: %sbad character inside {}'sbad character: %sbad iteration valuesbad line in skeleton filebad start condition listbad state type in mark_beginning_as_normal()bad transition character detected in sympartition()bison bridge not supported for the C++ scanner.can't open %scan't open skeleton file %sconsistency check failed in epsclosure()could not create %scould not create backing-up info file %scould not create unique end-of-buffer statecould not write tables headerdangerous trailing contextdynamic memory failure in copy_string()empty machine in dupmachine()error closing backup file %serror closing output file %serror closing skeleton file %serror creating header file %serror deleting output file %serror writing backup file %serror writing output file %sfatal parse errorfound too many transitions in mkxtion()incomplete name definitioninput error reading skeleton file %sinput rules are too complicated (>= %d NFA states)iteration value must be positivemalformed '%top' directivememory allocation failed in allocate_array()memory allocation failed in yy_flex_xmalloc()missing quotemissing }name "%s" ridiculously longname defined twicenegative range in character classoption `%s' doesn't allow an argument option `%s' is ambiguous option `%s' requires an argument premature EOFrule cannot be matchedscanner requires -8 flag to use the character %sstart condition %s declared twicestate # %4d state # %d accepts: state # %d accepts: [%d] state # %d: symbol table memory allocation failedthe character range [%c-%c] is ambiguous in a case-insensitive scannertoo many rules (> %d)!trailing context used twiceundefined definition {%s}unknown -C option '%c'unknown error processing section 1unrecognized %%option: %sunrecognized '%' directiveunrecognized rulevariable trailing context rules cannot be used with -f or -Fyymore() entails a minor performance penalty Project-Id-Version: flex 2.5.37 Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net POT-Creation-Date: 2014-03-26 15:00-0400 PO-Revision-Date: 2012-12-04 17:36+0100 Last-Translator: Jordi Mallach Language-Team: Catalan Language: ca MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ********** s'està començant el bolcat de l'afn amb l'estat inicial %d Bolcat AFD: Classes d'equivalència: Classes de metaequivalència: transicions de bloqueig: EOF %d (%d desades) col·lisions d'ubicació («hash»), %d AFD iguals %d estats de retrocés (no-acceptació) %d entrades de la tabla buides %d estats èpsilon, %d estats doble èpsilon %d prototips creats %d regles es necessiten %d conjunts de relocalització %d parells estat/estat-següent creats %d entrades de la taula %d plantilles creades, %d usos es necessiten %d entrades totals de la taula %d/%d (pic %d) entrades nxt-chk creades %d/%d (pic %d) entrades de plantilla nxt-chk creades %d/%d estats AFD (%d paraules) %d/%d estats AFN %d/%d entrades base-def creades les classes de caràcters %d/%d necessitaren %d/%d paraules de magatzement, %d reutilitzades %d/%d classes d'equivalència creades %d/%d classes de meta-equivalència creades %d/%d condicions d'activació %d/%d transicions úniques/duplicades Utilitzats patrons de principi-de-línia Sempre es realitza còpia de seguretat de les taules comprimides Sense retrocés sense classes de caràcter opcions de l'analitzador: - i pot ser l'origen real d'altres penalitzacions del rendiment notificades números de línia associats a la regla: fi de transicions: l'%%opció yylineno implica una penalització del rendiment NOMÉS en regles que poden fer coincidir caràcters de nova línia %array és incompatible amb l'opció -+%d estats de retrocés (no-acceptació). l'%opció yyclass només té sentit per a analitzadors de C++l'%opció yylineno no es pot fer servir amb REJECT%s %s estadístiques d'ús de %s versió %s: %s: error intern fatal, %s ********** final del bolcat *Quelcom estrany* - terminal: %d val: %d -Cf i -CF són mútuament excloents-Cf/-CF i -Cm no tenen sentit juntes-Cf/-CF i -I són incompatibles-Cf/-CF són incompatibles amb el mode de compatibilitat amb lex-I (interactiu) implica una xicoteta penalització del rendiment -l l'opció de compatibilitat amb AT&T lex implica una penalització del rendiment molt gran S'ha especificat l'opció -s però es pot aplicar la regla per defecteHa fallat l'assignació d'un buffer per a la directiva de líniaHa fallat l'assignació d'un búfer per la definició m4Ha fallat l'assignació d'un búfer per la indefinició m4Ha fallat l'assignació d'un búfer per imprimir la cadenaNo es pot fer servir -+ amb l'opció -CFNo es pot fer servir -+ amb l'opció -lNo es pot fer servir --reentrant o --bison-bridge amb l'opció -lNo es pot fer servir -f o -F amb l'opció -lLes taules comprimides sempre impliquen un retard. No s'ha pogut escriure ecstblNo s'ha pogut escriure eoltblNo s'ha pogut escriure ftblNo s'ha pogut escriure ssltblNo s'ha pogut escriure yyacc_tblNo s'ha pogut escriure yyacclist_tblNo s'ha pogut escriure yybase_tblNo s'ha pogut escriure yychk_tblNo s'ha pogut escriure yydef_tblNo s'ha pogut escriure yymeta_tblNo s'ha pogut escriure yynultrans_tblNo s'ha pogut escriure yynxt_tblNo s'ha pogut escriure yynxt_tbl[][]El nom de la definició és massa llarg El valor de la definició de {%s} és massa llarg s'ha trobat un EOF dins d'una acciós'ha trobat un EOF dins d'un patróMarcador de fi Genera programes que realitzen emparellaments de patrons en text. Compressió de taules: -Ca, --align renuncia a taules més grans a canvi de una millor alineació -Ce, --ecs construeix classes d'equivalència -Cf no comprimeixes les taules; utilitza la representació -f -CF no comprimeixes les taules; utilitza la representació -F -Cm, --meta-ecs construeix classes de metaequivalència -Cr, --read utilitza read() en lloc de stdio com a entrada de l'analitzador -f, --full genera un analitzador ràpid i gran. El mateix que -Cfr -F, --fast usa una representació alternativa de taules. El mateix que -CFr -Cem compressió per defecte (el mateix que --ecs --meta-ecs) Depuració: -d, --debug activa el mode de depuració en l'analitzador -b, --backup escriu l'informació dels retrocessos en %s -p, --perf-report escriu l'informe de rendiment en stderr -s, --nodefault suprimeix la regla per defecte de visualitzar (ECHO) el text no emparellat -T, --trace %s hauria d'executar-se en mode traça -w, --nowarn no generes avisos -v, --verbose escriu un resum de les estadístiques de l'analitzador en stdout Fitxers: -o, --outfile=FITXER especifica el fitxer d'eixida -S, --skel=FITXER especifica el fitxer d'esquema -t, --stdout escriu l'analitzador en stdout en lloc de %s --yyclass=NOM nom de la classe C++ --header-file=FITXER crea un fitxer de capçaleres de C a més de l'analitzador --tables-file=[FITXER] escriu les taules en FITXER Comportament de l'analitzador: -7, --7bit genera un analitzador de 7 bits -8, --8bit genera un analitzador de 8 bits -B, --batch genera un analitzador no interactiu (el contrari a -I) -i, --case-insensitive Ignora les diferències de majúscules i minúscules en els patrons -l, --lex-compat compatibilitat màxima amb el lex original -X, --posix-compat compatibilitat màxima amb el lex POSIX -I, --interactive genera un analitzador interactiu (el contrari a -B) --yylineno traça el compte de línies en yylineno Codi generat: -+, --c++ genera un analitzador de la classe C++ -Dmacro[=defn] #define macro defn (defn és «1» per defecte) -L, --noline suprimeix les directives #line en l'analitzador -P, --prefix=CADENA utilitza CADENA com prefix en comptes de «yy» -R, --reentrant genera un analitzador de C reentrant --bison-bridge analitzador per a l'analitzador pur de bison --bison-locations inclou suport per a yylloc --stdinit inicialitza yyin/yyout a stdin/stdout --noansi-definitions estil antic de definicions de funcions --noansi-prototypes llista de paràmetres buida als prototips --nounistd no inclogues --noFUNCIÓ no generes una FUNCIÓ en particular Miscel·lània: -c opció POSIX sense efecte -n opció POSIX sense efecte -? -h, --help mostra aquest missatge d'ajuda -V, --version informa de la versió de %s La línia d'entrada és massa llarga Error intern. Els flexopts estan malformats. No hi ha retrocés. La línia d'opcions és massa llarga Les opcions -+ i --reentrant són mútuament excloentsREJECT no es pot fer servir amb -f o -FREJECT implica una penalització del rendiment molt gran L'estat #%d és no-acceptar - Proveu «%s --help» per a obtindre més informació. Error desconegut=(%d) «|» no emparellatOpció no reconeguda «%s» Forma d'ús: %s [OPCIONS] [FITXER]... Forma d'ús: %s [OPCIONS]... Regla de context posterior variable en la línia %d Les regles de context posterior variable implica una penalització del rendiment molt gran [:^lower:] és ambigu en un analitzador insensible a les majúscules i minúscules[:^upper:] és ambigu en un analitzador insensible a les majúscules i minúsculesHa fallat l'assignació de la definició de la macroHa fallat l'assignació de «sko_stack»ha fallat l'intent d'augmentar la mida de la matriu incorrecta: %scaràcter incorrecte «%s» detectat en check_char()classe de caràcter incorrectaexpressió de la classe de caràcters incorrecta: %scaràcter incorrecte dins de {}caràcter incorrecte: %svalors d'iteració incorrecteslínia incorrecta en el fitxer d'esquemacondició de començament incorrectatipus d'estat incorrecte en mark_beginning_as_normal()caràcter de transició incorrecte detectat en sympartition()No es suporta «bison bridge» per a l'analitzador de C++no es pot obrir %sNo es pot obrir el fitxer d'esquema %sla comprovació de consistència ha fallat en epsclosure()no s'ha pogut crear %sno s'ha pogut crear un fitxer d'informació del retrocés %sno s'ha pogut crear un estat únic de final-de-búferno s'ha pogut crear la capçalera de les taulesContext posterior perillóserrada de la memòria dinàmica en copy_string()màquina buida en dupmachine()s'ha produït un error en tancar el fitxer de còpia de seguretat %ss'ha produït un error en tancar el fitxer d'eixida %ss'ha produït un error en tancar el fitxer d'esquema %ss'ha produït un error en crear el fitxer de capçalera %ss'ha produït un error en suprimir el fitxer d'eixida %ss'ha produït un error en escriure el fitxer de còpia de seguretat %ss'ha produït un error en escriure el fitxer d'eixida %ss'ha produït un error fatal d'anàlisi sintàctics'han trobat massa transicions en mkxtion()definició del nom incompletaerror d'entrada al llegir el fitxer d'esquema %sles regles d'entrada són massa complicades (>= %d estats AFN)el valor d'iteració ha de ser positiudirectiva «%top» malformadaha fallat l'assignació de memòria en allocate_array()ha fallat l'assignació de memòria en yy_flex_xmalloc()manca una cometamanca una }el nom «%s» és ridículament llargel nom ha sigut definit dos vegadesrang negatiu en classe de caràcterl'opció «%s» no accepta arguments l'opció «%s» és ambígua l'opció «%s» requereix un argument EOF prematurno es pot satisfer la reglal'analitzador requereix l'opció -8 per a fer servir el caràcter %sla condició d'activació %s ha sigut declarada dos vegadesestat # %4d l'estat # %d accepta: l'estat # %d accepta: [%d] estat # %d: ha fallat l'assignació de memòria per a la taula de símbolsel rang de caràcters [%c-%c] és ambigu en un analitzador insensible a les majúscules i minúsculesmassa regles (> %d)!s'ha utilitzat el context posterior dos vegadesdefinició no definida {%s}opció de -C desconeguda «%c»s'ha produït un error desconegut en processar la secció 1%%opció no reconeguda: %sdirectiva «%» no reconegudaregla no reconegudaLes regles de context posterior variable no es poden utilitzar amb -f o -Fyymore() implica una xicoteta penalització del rendiment flex-2.5.39/po/ro.gmo0000644000175000017500000005032012314621665014572 0ustar srivastasrivasta  7 Q _ x  / ' .N c"o#  * 37k!C$))S%m"#F_~`"&0<+m $")?i45E/:j6!"6Mby:T r : !(!"2("#["+""&"" ##,#K#*c#C#%##+$>$"R$u$$$$$,$3%/J% z%%(%%(%+ &6&T&'o&&&&&','J'g'''''$'2' 1(R(,m(-( ( (((!)&1)X)!r) ))0)!) **.* H*%U*F{****+"&+I+c+~+<+-++B----.C3.&w..+.. /" /,0/]/ u/&/*/0/090 L0Lm0$0*0 1"%1)H1-r1111A1$,2Q2n2"2%3<<31y33(33$3 4@4+^4 4;4;4T#5=x5%5$5@6+B6,n666666797V7r77 777!8*8/ =8#mD:DD/D'E3@E!tE3EEEE#F7F2RFTF1F G-,GZG#uGGGG!G"H2&H7YH3HH(H0I2I6FI7}I I&I+I)J,EJ,rJ*J)J+J* K*KKvK,KK@KA L*bLL-L.LM M )MJM%cM#MM$M M MDN)aN NNN N4NQ O]O1wOOO,O P&P@PHSP3PK[.)\v@ ] aL7`9^neRp34;?omM(dHlh/F:s%#x5u-CQkPBDrZ,U'$St0c8J Yq<z w~NWgI!1TV6A2_>|i= j&yf+*"bOEG{ X} ********** beginning dump of nfa with start state %d DFA Dump: Equivalence Classes: Meta-Equivalence Classes: jam-transitions: EOF %d (%d saved) hash collisions, %d DFAs equal %d backing-up (non-accepting) states %d empty table entries %d epsilon states, %d double epsilon states %d protos created %d rules %d sets of reallocations needed %d state/nextstate pairs created %d table entries %d templates created, %d uses %d total table entries needed %d/%d (peak %d) nxt-chk entries created %d/%d (peak %d) template nxt-chk entries created %d/%d DFA states (%d words) %d/%d NFA states %d/%d base-def entries created %d/%d character classes needed %d/%d words of storage, %d reused %d/%d equivalence classes created %d/%d meta-equivalence classes created %d/%d start conditions %d/%d unique/duplicate transitions Beginning-of-line patterns used Compressed tables always back-up No backing up no character classes scanner options: - and may be the actual source of other reported performance penalties associated rule line numbers: out-transitions: %%option yylineno entails a performance penalty ONLY on rules that can match newline characters %array incompatible with -+ option%d backing up (non-accepting) states. %option yyclass only meaningful for C++ scanners%option yylineno cannot be used with REJECT%s %s %s version %s usage statistics: %s: fatal internal error, %s ********** end of dump *Something Weird* - tok: %d val: %d -Cf and -CF are mutually exclusive-Cf/-CF and -Cm don't make sense together-Cf/-CF and -I are incompatible-Cf/-CF are incompatible with lex-compatibility mode-I (interactive) entails a minor performance penalty -l AT&T lex compatibility option entails a large performance penalty -s option given but default rule can be matchedCan't use -+ with -CF optionCan't use -+ with -l optionCan't use --reentrant or --bison-bridge with -l optionCan't use -f or -F with -l optionCompressed tables always back up. Could not write ecstblCould not write eoltblCould not write ftblCould not write ssltblCould not write yyacc_tblCould not write yyacclist_tblCould not write yybase_tblCould not write yychk_tblCould not write yydef_tblCould not write yymeta_tblCould not write yynultrans_tblCould not write yynxt_tblCould not write yynxt_tbl[][]EOF encountered inside an actionEnd Marker Generates programs that perform pattern-matching on text. Table Compression: -Ca, --align trade off larger tables for better memory alignment -Ce, --ecs construct equivalence classes -Cf do not compress tables; use -f representation -CF do not compress tables; use -F representation -Cm, --meta-ecs construct meta-equivalence classes -Cr, --read use read() instead of stdio for scanner input -f, --full generate fast, large scanner. Same as -Cfr -F, --fast use alternate table representation. Same as -CFr -Cem default compression (same as --ecs --meta-ecs) Debugging: -d, --debug enable debug mode in scanner -b, --backup write backing-up information to %s -p, --perf-report write performance report to stderr -s, --nodefault suppress default rule to ECHO unmatched text -T, --trace %s should run in trace mode -w, --nowarn do not generate warnings -v, --verbose write summary of scanner statistics to stdout Files: -o, --outfile=FILE specify output filename -S, --skel=FILE specify skeleton file -t, --stdout write scanner on stdout instead of %s --yyclass=NAME name of C++ class --header-file=FILE create a C header file in addition to the scanner --tables-file[=FILE] write tables to FILE Scanner behavior: -7, --7bit generate 7-bit scanner -8, --8bit generate 8-bit scanner -B, --batch generate batch scanner (opposite of -I) -i, --case-insensitive ignore case in patterns -l, --lex-compat maximal compatibility with original lex -X, --posix-compat maximal compatibility with POSIX lex -I, --interactive generate interactive scanner (opposite of -B) --yylineno track line count in yylineno Generated code: -+, --c++ generate C++ scanner class -Dmacro[=defn] #define macro defn (default defn is '1') -L, --noline suppress #line directives in scanner -P, --prefix=STRING use STRING as prefix instead of "yy" -R, --reentrant generate a reentrant C scanner --bison-bridge scanner for bison pure parser. --bison-locations include yylloc support. --stdinit initialize yyin/yyout to stdin/stdout --noansi-definitions old-style function definitions --noansi-prototypes empty parameter list in prototypes --nounistd do not include --noFUNCTION do not generate a particular FUNCTION Miscellaneous: -c do-nothing POSIX option -n do-nothing POSIX option -? -h, --help produce this help message -V, --version report %s version Input line too long Internal error. flexopts are malformed. No backing up. Options -+ and --reentrant are mutually exclusive.REJECT cannot be used with -f or -FREJECT entails a large performance penalty State #%d is non-accepting - Try `%s --help' for more information. Unknown error=(%d) Unmatched '{'Unrecognized option `%s' Usage: %s [OPTIONS] [FILE]... Usage: %s [OPTIONS]... Variable trailing context rule at line %d Variable trailing context rules entail a large performance penalty attempt to increase array size failedbad : %sbad character '%s' detected in check_char()bad character classbad character class expression: %sbad character inside {}'sbad character: %sbad iteration valuesbad line in skeleton filebad start condition listbad state type in mark_beginning_as_normal()bad transition character detected in sympartition()bison bridge not supported for the C++ scanner.can't open %scan't open skeleton file %sconsistency check failed in epsclosure()could not create %scould not create backing-up info file %scould not create unique end-of-buffer statecould not write tables headerdangerous trailing contextdynamic memory failure in copy_string()empty machine in dupmachine()error closing backup file %serror closing output file %serror closing skeleton file %serror creating header file %serror deleting output file %serror writing backup file %serror writing output file %sfatal parse errorfound too many transitions in mkxtion()incomplete name definitioninput error reading skeleton file %sinput rules are too complicated (>= %d NFA states)iteration value must be positivemalformed '%top' directivememory allocation failed in allocate_array()memory allocation failed in yy_flex_xmalloc()missing quotemissing }name "%s" ridiculously longname defined twicenegative range in character classoption `%s' doesn't allow an argument option `%s' is ambiguous option `%s' requires an argument premature EOFrule cannot be matchedscanner requires -8 flag to use the character %sstart condition %s declared twicestate # %4d state # %d accepts: state # %d accepts: [%d] state # %d: symbol table memory allocation failedthe character range [%c-%c] is ambiguous in a case-insensitive scannertoo many rules (> %d)!trailing context used twiceundefined definition {%s}unknown -C option '%c'unknown error processing section 1unrecognized %%option: %sunrecognized '%' directiveunrecognized rulevariable trailing context rules cannot be used with -f or -Fyymore() entails a minor performance penalty Project-Id-Version: flex 2.5.31 Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net POT-Creation-Date: 2014-03-26 15:00-0400 PO-Revision-Date: 2003-11-22 11:07+0200 Last-Translator: Eugen Hoanca Language-Team: Romanian Language: ro MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-2 Content-Transfer-Encoding: 8bit ********** nceperea aducerii(dump) nfa cu starea de nceput %d Rezultat(dump) DFA: Clase de Echivalen: Clase de Meta-Echivalen: tranziii jam: EOF %d (%d salvate) coliziuni disipate(hash), %d egaluri de DFA-uril %d salvare de (inacceptabile) stri %d intrri n tabel goale %d stri epsilon, %d stri dublu epsilon %d prototipuri create %d reguli %d seturi de realocri necesare %d perechi de stare/stareurmtoare create %d intrri n tabele %d modele create, %d folosiri %d intrri totale n tabel necesare %d/%d (maxim %d) nxt-chk intrri create %d/%d (maxim %d) model nxt-chk intrri create %d/%d stri DFA (%d cuvinte) %d/%d stri NFA %d/%d base-def intrri create %d/%d clase de caractere necesare %d/%d cuvinte de stocare, %d refolosite %d/%d clase de echivalen create %d/%d clase de meta-echivalen create %d/%d condiii de start %d/%d tranziii unice/duplicate Tipare de nceputuri de linie folosite Tabelele compresate ntotdeauna au back-up Nu se face backup nici o clas de caractere opiuni de scanner: -i poate fi sursa real a altor scderi de performan raportate numerele de linie asociate regulii: tranziii exterioare(out): %%opiunea yylineno determin o scdere drastic a performanei DOAR n regulile care se potrivesc caracterelor linie_nou(newline) %array incompatibil cu opiunea -+%d salvare de (inacceptabile) stri. %opunea yyclass este folositoare doar pentru scannerele C++%opiunea yylineno nu poate fi folosit cu REJECT%s %s %s versiunea %s statistici de folosire: %s: eroare intern fatal, %s ********** sfrit de aducere(dump) *Ceva Ciudat* - tok: %d val: %d -Cf i -CF se exclud reciproc-Cf/-CF i -Cm nu au sens folosite mpreun-Cf/-CF i -I sunt incompatibile-Cf/-CF sunt incompatibile cu module de compatibilitate lex-I (interactie) determin o scdere minor a performanei -l opiunea de compatibilitate AT&T lex determin o scdere drastic a performanei a fost dat opiunea -s dar regula implicit se poate potriviNu se poate folosi -+ cu opiunea -CFNu se poate folosi -+ cu opiunea -lNu se poate folosi --reentrant sau --bison-bridge cu opiunea -lNu se poate folosi -f sau -F cu opiunea -lTabelele compresate ntotdeauna au back-up. Nu am putut scrie ecstblNu am putut scrie eoltblNu am putut scrie ftblNu am putut scrie ssltblNu am putut scrie yyacc_tblNu am putut scrie yyacclist_tblNu am putut scrie yybase_tblNu am putut scrie yychk_tblNu am putut scrie yydef_tblNu am putut scrie yymeta_tblNu am putut scrie yynultrans_tblNu am putut scrie yynxt_tblNu am putut scrie yynxt_tbl[][]EOF ntlnit n mijlocul aciuniiMarcaj de sfrit Genereaz programe care caut potriviri de tipare pe un text Compresie de tabele: -Ca, --align renun la tabelele mari n favoarea unui aliniament mai bun al memoriei -Ce, --ecs construiete clase de echivalen -Cf nu compreseaz tabelele; folosete reprezentare -f -CF nu compreseaz tabelele; folosete reprezentare -F -Cm, --meta-ecs construiete clase de meta-echivalen -Cr, --read folosete read() n loc de stdio pentru intrarea de scanner -F, --fast folosete reprezentare alternativ de tabele. Asemntor lui -CFr -f, --full genereaz scannere rapide, mari. Asemntor lui -Cfr -Cem compresie implicit (asemntor lui --ecs --meta-ecs) Debugging: -d, --debug activeaz modul debug n scanner -b, --backup scriere de informaii de backup n %s -p, --perf-report scrie raportul de performan la stderr -s, --nodefault elimin regula implicit de ECHO text care nu se potrivete -T, --trace %s ar trebui s ruleze n mod trace -w, --nowarn nu genereaz avertismente -v, --verbose scrie cuprinsul statisticilor scanner-ului la stdout Fiiere: -o, --outfile=FIIER specific numele de fiier de ieire -S, --skel=FIIER specific fiierul schelet -t, --stdout scrie scannerul la stdout n loc de %s --yyclass=NUME numele clasei C++ --header-file=FIIER creaz im fiier de header C pe lngscanner --tables-file[=FIIER] scrie tabelele n FIIER Comportament scanner: -7, --7bit genereaz scanner pe 7-bii -8, --8bit genereaz scanner pe 8-bii -B, --batch genereaz scanner comand(batch) (inversul lui -I) -i, --case-insensitive ignor cazul n tipare -l, --lex-compat compatibilitate maxim cu lex original -X, --posix-compat compatibilitate maxim cu lex POSIX -I, --interactive genereaz scanner interactive (inversul lui -B) --yylineno urmrete numrtoare liniilor n yylineno Cod generat: -+, --c++ genereaz clas de scanner C++ -Dmacro[=defn] #define macro defn (implicit defn is '1') -L, --noline elimin directivele #line din scanner -P, --prefix=IR folosete IR ca i prefix n loc de "yy" -R, --reentrant genereaz un scanner C circular(reentrant) --bison-bridge scanner pentru analiz pur bison. --bison-locations include suport yylloc. --stdinit iniializeaz yyin/yyout ctre stdin/stdout --noansi-definitions definire de funcii stil vechi --noansi-prototypes list de parametri vid n prototipuri --nounistd nu include --noFUNCIE nu genera o FUNCIE particular Diverse: -c opiune POSIX care nu face nimic -n opiune POSIX care nu face nimic -? -h, --help produce acest mesaj de ajutor -V, --version raporteaz versiunea %s Linie de intrare(input) prea lung Eroare intern. Opiunile flex(flexopts) sunt malformate. Nu se revine (backing-up). Opiunile -+ and --reentrant se exclud reciprocREJECT nu poate fi folosit cu -f sau -FREJECT determin o scdere drastic a performanei Starea #%d este de neacceptat. - ncercai `%s --help' pentru mai multe informaii. Eroare necunoscut=(%d) '{' fr corespondentOpiune necunoscut `%s' Folosire: %s [OPIUNI] [FIIER]... Folosire: %s [OPIUNI]... Regul de context de sfrit variabil la linia %d Contextul de sfrit(trailing) variabil determin o scdere drastic a performanei ncercare de a mri dimensiunea domeniului euat greit: %scaracter greit `%s' detectat n check_char()clas de caractere greitexpresie clas caracter greit: %scaracter eronat ntre {}caracter eronat: %svalori de iteraie greitelinie greit n fiierul scheletlist de stri n condiie proasttip de stare greit n mark_beginning_as_normal()caracter greit de tranziie detectat n sympartition()bridge bison nu este suportat pentru scannerul C++.nu pot deschide %snu am putut deschide fiierul schelet %sverificare de consisten euat n epsclosure()nu am putut crea %snu s-a putut crea fiierul de informaii de back-up %snu am putut crea sfrit unic pentru starea buffer-uluiNu am putut scrie capul de tabelcontext de sfrit(trailing) periculoseroare de memorie dinamic n copy_string()main vid n dupmachine()eroare n nchiderea fiierului de backup %seroare n nchiderea fiierului de output %seroare n nchiderea fiierului schelet %seroare n crearea fiierului de header %seroare n tergerea fiierului de output %seroare n scrierea fiierului de backup %seroare n scrierea fiierului de output %seroare fatal de analiz(parse)s-au gsit prea multe tranziii n mkxtion()definire de nume incompleteroare de intrare(input) n timpul citirii fiierului schelet %sregulile de intrare(input) sunt prea complicate (>= %d stri NFA)valoarea iteraiei trebuie s fie pozitivdirectiv '%top' malformatalocare de memorie euat n allocate_array()alocare de memorie euat n yy_flex_xmalloc()menionare(quote) lipslipsete }numele "%s" este ridicol de lungnume definit de dou oridomeniu negativ n clasa de caractereopiunea `%s' nu permite parametri opiunea `%s' este ambigu opiunea `%s' necesit un parametru EOF prematurregula nu se potrivete cu nimicscannerul necesit parametrul(flag) -8 pentru a folosi caracterul %scondiie de start %s definit de dou oristare # %4d starea # %d accept: starea # %d accept: [%d] stare # %d: alocare de memorie pentru tabela de simboluri euatintervalul(range) de caracter [%c %c] este ambiguu ntr-un scanner caz-insenzitivprea multe reguli (> %d)!context de sfrit(trailing) utilizat de dou oridefiniie nedefinit {%s}opiune -C necunoscut `%c'eroare necunoscut n procesarea seciunii 1%%opiune necunoscut: %sdirectiv '%' necunoscutregul necunoscutcontextul de sfrit(trailing) variabil nu poate fi folosit cu -f sau -Fyymore() determin o scdere minor a performanei flex-2.5.39/po/tr.gmo0000644000175000017500000005035412314621666014607 0ustar srivastasrivasta  7 Q _ x  / ' .N c"o#  * 37k!C$))S%m"#F_~`"&0<+m $")?i45E/:j6!"6Mby:T r : !(!"2("#["+""&"" ##,#K#*c#C#%##+$>$"R$u$$$$$,$3%/J% z%%(%%(%+ &6&T&'o&&&&&','J'g'''''$'2' 1(R(,m(-( ( (((!)&1)X)!r) ))0)!) **.* H*%U*F{****+"&+I+c+~+<+-++K---.,.;K.*..-.. /,"/,O/|/*/)/6/>0!]00+0^0&1*E1 p1111112&2@2M]2#22\2!@3(b3>3333(4.4K4(d4"4+44&4A5L[5?5$5 6I.6(x606666 7 777R7j777777+7*8 @8DE9E6IE$E5EE+E"F8FIF*dFF2FQF,4G"aG4GG$GGH.H$JH"oH7H=H5I>I OI:pII,I'IJ3J,MJ zJ%J(J'J)K$|i= j&yf+*"bOEG{ X} ********** beginning dump of nfa with start state %d DFA Dump: Equivalence Classes: Meta-Equivalence Classes: jam-transitions: EOF %d (%d saved) hash collisions, %d DFAs equal %d backing-up (non-accepting) states %d empty table entries %d epsilon states, %d double epsilon states %d protos created %d rules %d sets of reallocations needed %d state/nextstate pairs created %d table entries %d templates created, %d uses %d total table entries needed %d/%d (peak %d) nxt-chk entries created %d/%d (peak %d) template nxt-chk entries created %d/%d DFA states (%d words) %d/%d NFA states %d/%d base-def entries created %d/%d character classes needed %d/%d words of storage, %d reused %d/%d equivalence classes created %d/%d meta-equivalence classes created %d/%d start conditions %d/%d unique/duplicate transitions Beginning-of-line patterns used Compressed tables always back-up No backing up no character classes scanner options: - and may be the actual source of other reported performance penalties associated rule line numbers: out-transitions: %%option yylineno entails a performance penalty ONLY on rules that can match newline characters %array incompatible with -+ option%d backing up (non-accepting) states. %option yyclass only meaningful for C++ scanners%option yylineno cannot be used with REJECT%s %s %s version %s usage statistics: %s: fatal internal error, %s ********** end of dump *Something Weird* - tok: %d val: %d -Cf and -CF are mutually exclusive-Cf/-CF and -Cm don't make sense together-Cf/-CF and -I are incompatible-Cf/-CF are incompatible with lex-compatibility mode-I (interactive) entails a minor performance penalty -l AT&T lex compatibility option entails a large performance penalty -s option given but default rule can be matchedCan't use -+ with -CF optionCan't use -+ with -l optionCan't use --reentrant or --bison-bridge with -l optionCan't use -f or -F with -l optionCompressed tables always back up. Could not write ecstblCould not write eoltblCould not write ftblCould not write ssltblCould not write yyacc_tblCould not write yyacclist_tblCould not write yybase_tblCould not write yychk_tblCould not write yydef_tblCould not write yymeta_tblCould not write yynultrans_tblCould not write yynxt_tblCould not write yynxt_tbl[][]EOF encountered inside an actionEnd Marker Generates programs that perform pattern-matching on text. Table Compression: -Ca, --align trade off larger tables for better memory alignment -Ce, --ecs construct equivalence classes -Cf do not compress tables; use -f representation -CF do not compress tables; use -F representation -Cm, --meta-ecs construct meta-equivalence classes -Cr, --read use read() instead of stdio for scanner input -f, --full generate fast, large scanner. Same as -Cfr -F, --fast use alternate table representation. Same as -CFr -Cem default compression (same as --ecs --meta-ecs) Debugging: -d, --debug enable debug mode in scanner -b, --backup write backing-up information to %s -p, --perf-report write performance report to stderr -s, --nodefault suppress default rule to ECHO unmatched text -T, --trace %s should run in trace mode -w, --nowarn do not generate warnings -v, --verbose write summary of scanner statistics to stdout Files: -o, --outfile=FILE specify output filename -S, --skel=FILE specify skeleton file -t, --stdout write scanner on stdout instead of %s --yyclass=NAME name of C++ class --header-file=FILE create a C header file in addition to the scanner --tables-file[=FILE] write tables to FILE Scanner behavior: -7, --7bit generate 7-bit scanner -8, --8bit generate 8-bit scanner -B, --batch generate batch scanner (opposite of -I) -i, --case-insensitive ignore case in patterns -l, --lex-compat maximal compatibility with original lex -X, --posix-compat maximal compatibility with POSIX lex -I, --interactive generate interactive scanner (opposite of -B) --yylineno track line count in yylineno Generated code: -+, --c++ generate C++ scanner class -Dmacro[=defn] #define macro defn (default defn is '1') -L, --noline suppress #line directives in scanner -P, --prefix=STRING use STRING as prefix instead of "yy" -R, --reentrant generate a reentrant C scanner --bison-bridge scanner for bison pure parser. --bison-locations include yylloc support. --stdinit initialize yyin/yyout to stdin/stdout --noansi-definitions old-style function definitions --noansi-prototypes empty parameter list in prototypes --nounistd do not include --noFUNCTION do not generate a particular FUNCTION Miscellaneous: -c do-nothing POSIX option -n do-nothing POSIX option -? -h, --help produce this help message -V, --version report %s version Input line too long Internal error. flexopts are malformed. No backing up. Options -+ and --reentrant are mutually exclusive.REJECT cannot be used with -f or -FREJECT entails a large performance penalty State #%d is non-accepting - Try `%s --help' for more information. Unknown error=(%d) Unmatched '{'Unrecognized option `%s' Usage: %s [OPTIONS] [FILE]... Usage: %s [OPTIONS]... Variable trailing context rule at line %d Variable trailing context rules entail a large performance penalty attempt to increase array size failedbad : %sbad character '%s' detected in check_char()bad character classbad character class expression: %sbad character inside {}'sbad character: %sbad iteration valuesbad line in skeleton filebad start condition listbad state type in mark_beginning_as_normal()bad transition character detected in sympartition()bison bridge not supported for the C++ scanner.can't open %scan't open skeleton file %sconsistency check failed in epsclosure()could not create %scould not create backing-up info file %scould not create unique end-of-buffer statecould not write tables headerdangerous trailing contextdynamic memory failure in copy_string()empty machine in dupmachine()error closing backup file %serror closing output file %serror closing skeleton file %serror creating header file %serror deleting output file %serror writing backup file %serror writing output file %sfatal parse errorfound too many transitions in mkxtion()incomplete name definitioninput error reading skeleton file %sinput rules are too complicated (>= %d NFA states)iteration value must be positivemalformed '%top' directivememory allocation failed in allocate_array()memory allocation failed in yy_flex_xmalloc()missing quotemissing }name "%s" ridiculously longname defined twicenegative range in character classoption `%s' doesn't allow an argument option `%s' is ambiguous option `%s' requires an argument premature EOFrule cannot be matchedscanner requires -8 flag to use the character %sstart condition %s declared twicestate # %4d state # %d accepts: state # %d accepts: [%d] state # %d: symbol table memory allocation failedthe character range [%c-%c] is ambiguous in a case-insensitive scannertoo many rules (> %d)!trailing context used twiceundefined definition {%s}unknown -C option '%c'unknown error processing section 1unrecognized %%option: %sunrecognized '%' directiveunrecognized rulevariable trailing context rules cannot be used with -f or -Fyymore() entails a minor performance penalty Project-Id-Version: flex 2.5.31 Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net POT-Creation-Date: 2014-03-26 15:00-0400 PO-Revision-Date: 2004-05-16 18:36+0300 Last-Translator: Deniz Akkus Kanca Language-Team: Turkish Language: tr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: KBabel 1.0.2 ********** başlangıç durumu %d olan nfa'nın dökümüne başlanıyor DFA Dökümü: Denklik Sınıfları: Ara-Denklik Sınıfları: sıkışık-geçişler: EOF %d (%d kaydedildi) saçılma çarpışması, %d DFA denk %d yedeklenmiş (kabul-edilmeyen) durum %d boş tablo girdileri %d epsilon durumu, %d çift epsilon durumu %d prototip yaratıldı %d kural %d tekrar ayırım kümesine ihtiyaç var %d durumu/sonrakidurum çifti yaratıldı %d tablo girdileri %d şablon yaratıldı, %d kullanıldı %d toplam tablo girdisine ihtiyaç var %d/%d (en yüksek %d) nxt-chk girdileri yaratıldı %d/%d (en yüksek %d) şablon nxt-chk girdileri yaratıldı %d/%d DFA durumu (%d sözcük) %d/%d NFA durumu %d/%d temel-tanım girdileri yaratıldı %d/%d ihtiyaç duyulan karakter sınıfı %d/%d depolanan sözcük, %d yeniden kullanıldı %d/%d denklik sınıfı yaratıldı %d/%d ara-denklik sınıfı yaratıldı %d/%d başlangıç şartları %d/%d tekil/çift geçişler Başlangıç-satırı kalıpları kullanıldı Sıkıştırılmış tablolar daima yedeklenir Yedekleme yok karakter sınıfı yok tarayıcı seçenekleri: - ve belki bildirilen başka performans kayıplarının da kaynağı olabilir alakalı kural satır numaraları: dış-geçişler: yylineno %%seçeneği YALNIZCA yenisatır karakterlerini de eşleyen satırlarda yavaşlar. %array, -+ seçeneği ile uyumsuz%d yedeklenen (kabul-etmeyen) durumlar. %option yyclass, sadece C++ tarayıcıları için anlamlıdır%option yylineno, REJECT ile birlikte kullanılamaz%s %s %s sürüm %s kullanım istatistikleri: %s: ölümcül iç hata, %s ********** döküm sonu *Garip Bir Şey* -andaç: %d değer: %d -Cf ve -CF bir arada kullanılamaz-Cf/-CF ve -Cm birlikte anlam ifade etmiyor-Cf/-CF ve -I uyumsuz-Cf/-CF lex-uyumluluk kipi ile uyumsuz-I (etkileşimli) küçük ölçekli bir yavaşlamaya neden olur -l AT&T lex uyumluluğu seçeneği önemli ölçüde yavaşlamaya yol açar -s seçeneği verilmiş fakat öntanımlı kural eşlenebiliyor-+, -CF seçeneği ile kullanılamaz-+'yi -l seçeneği ile kullanma-l seçeneği ile --reentrant veya --bison-bridge bir arada kullanılamaz-f veya -F'yi -l seçeneği ile kullanmaSıkıştırılmış tablolar daima yedeklidir. ecstbl yazılamadıeoltbl yazılamadıftbl yazılamadıssltbl yazılamadıyyacc_tbl yazılamadıyyacclist_tbl yazılamadıyybase_tbl yazılamadıyychk_tbl yazılamadıyydef_tbl yazılamadıyymeta_tbl yazılamadıyynultrans_tbl yazılamadıyynxt_tbl yazılamadıyynxt_tbl[][] yazılamadıbir eylem içinde EOF ile karşılaşıldıBitiş İşaretçisi Metin üzerinde kalıp eşleyen yazılımlar oluşturur. Tablo Sıkıştırma Seçenekleri: -Ca, --align daha iyi bellek hizalaması için daha büyük tablolardan vazgeçer. -Ce, --ecs eşitlik sınıfları oluşturur -Cf tabloları sıkıştırmaz; -f gösterimini kullanır -CF tabloları sıkıştırmaz; -F gösterimini kullanır -Cm, --meta-ecs üst-eşitlik sınıfları oluşturur -Cr, --read tarama girdisi için stdio yerine read() kullanır -f, --full hızlı, büyük tarayıcı oluşturur. -Cfr ile aynı -F, --fast alternatif tablo gösterimi kullanır. -CFr ile aynı -Cem ön tanımlı sıkıştırma (--ecs --meta-ecs ile aynı) Hata Ayıklama: -d, --debug tarayıcıda hata ayıklama kipini etkinleştirir -b, --backup yedekleme bilgisini %s'e yazdırır -p, --perf-report performans raporunu standart hataya yazdırır -s, --nodefault eşleşmeyen metni göstermek davranışını durdurur -T, --trace %s izleme kipinde çalışmalıdır -w, --nowarn uyarı bildirmez -v, --verbose tarama istatistiklerini standart çıktıya yazdırır Files: -o, --outfile=DOSYA çıktı dosya adını belirtir -S, --skel=DOSYA iskelet dosyanın adını belirtir -t, --stdout tarayıcıyı %s yerine stdout'a yazdırır --yyclass=İSİM C++ sınıfının ismi --header-file=DOSYA tarayıcı yanında C başlık dosyası da oluşturur --tables-file[=DOSYA] tabloları DOSYA'ya yazar Tarayıcı davranışı: -7, --7bit 7-bit tarayıcı oluşturur -8, --8bit 8-bit tarayıcı oluşturur -B, --batch etkileşimsiz tarayıcı oluşturur (-I'nın tersi) -i, --case-insensitive kalıplarda büyük/küçük harf gözetmez -l, --lex-compat lex ile en fazla uyumluluğu sağlar -X, --posix-compat POSIX lex ile en fazla uyumluluğu sağlar -I, --interactive etkileşimli tarayıcı oluşturur (-B'nin tersi) --yylineno yylineno içinde satır sayısını tutar Oluşturulan kod: -+, --c++ C++ tarayıcı sınıfı oluşturur -Dmacro[=defn] #define ile makro tanımı (öntanımlı defn, '1') -L, --noline tarayıcıda #line yönergeleri oluşturmaz -P, --prefix=STRING "yy" yerine STRING'i önek olarak kullanır -R, --reentrant yeniden girişli C tarayıcısı oluşturur --bison-bridge saf bison ayrıştırıcısı için tarayıcı. --bison-locations yylloc desteğini etkinleştirir. --stdinit yyin/yyout'u stdin/stdout'a tanımlar --noansi-definitions eski tür işlev tanımları --noansi-prototypes prototiplerde boş parametre listesi --nounistd 'yi içermez --noFUNCTION FUNCTION ismindeki işlevi üretmez Muhtelif: -c hiç bir şey yapmayan POSIX seçeneği -n hiç bir şey yapmayan POSIX seçeneği -? -h, --help bu yardım bilgisini gösterir -V, --version %s sürümünü bildirir Girdi satırı fazla uzun İç hata. flexopt'lar bozuk. Yedekleme yok. -+ ve --reentrant seçenekleri bir arada kullanılamazREJECT, -f veya -F ile kullanılamazREJECT büyük ölçekli bir yavaşlamaya neden olur Durum #%d kabul etmiyor - Daha fazla bilgi için `%s --help' yazın. Bilinmeyen hata=(%d) '{' eşleşmiyorBilinmeyen seçenek: `%s' Kullanım: %s [SEÇENEKLER...] [DOSYA...] Kullanım: %s [SEÇENEKLER...] %d satırında değişken izleyen bağlam kuralı Değişken izleyen bağlam kuralları, büyük ölçekli yavaşlamaya neden olur dizi boyutunu artırma denemesi başarısızhatalı : %scheck_char() içinde hatalı karakter '%s' saptandıhatalı karakter sınıfıbozuk karakter sınıfı ifadesi: %s{}'ler içinde hatalı karakterhatalı karakter: %shatalı yineleme değerleriiskelet dosya içinde hatalı satırhatalı başlangıç şart listesimark_beginning_as_normal() içinde hatalı durum türüsympartition() içinde hatalı geçiş karakterleri saptandıbison bridge, C++ tarayıcısı için desteklenmiyor.%s açılamıyoriskelet dosyası %s açılamadıepsclosure() içindeki tutarlılık kontrolü başarısız%s oluşturulamadıyedekleme bilgi dosyası %s oluşturulamadıtekil tampon sonu durumu yaratılamadıtablo başlığı yazılamadıizleyen bağlam tehlikelicopy_string() içinde dinamik bellek hatasıdupmachine() içinde boş makineyedek dosyası %s kapatılırken hataçıktı dosyası %s kapatılırken hataiskelet dosyası %s kapatılırken hatabaşlık dosyası %s oluşturulurken hataçıktı dosyası %s silinirken hatayedek dosyası %s yazılırken hataçıktı dosyası %s yazılırken hataölümcül ayrıştırma hatasımkxtion() içinde çok fazla geçiş bulundueksik isim tanımlamasıiskelet dosyası %s okunurken girdi hatasıgirdi kuralları fazla karışık (>= %d NFA durumu)yineleme değeri pozitif olmalıhatalı `%top' yönergesiallocate_array() içinde bellek ayırımı başarısızyy_flex_xmalloc() içinde bellek ayırımı başarısızeksik çift tırnakeksik }"%s" ismi gülünç derecede uzunisim iki defa tanımlandıkarakter sınıflarında negatif aralık`%s' seçeneği argüman kullanmaz `%s' seçeneği belirsiz `%s' seçeneği için argüman zorunludur erken EOFkural eşlenemeditarayıcı %s karakterini kullanmak için -8 bayrağına ihtiyaç duyarbaşlangıç şartı %s iki defa bildirildidurum # %4d durum # %d kabul eder: durum # %d kabul eder: [%d] durum # %d: simge tablosu bellek ayırımı başarısız[%c-%c] karakter aralığı, büyük/küçük harf farkı gözetmeyen bir tarayıcıda belirsiz anlamlıçok fazla kural (> %d)!izleyen bağlam iki defa kullanılmışbelirsiz tanım {%s}bilinmeyen -C seçeneği '%c'1. bölüm işlenirken bilinmeyen hata oluştugeçersiz %%seçenek: %s'%' yönergesi bilinmiyorbilinmeyen kuraldeğişken izleme ortamı kuralları, -f veya -F ile birlikte kullanılamazyymore() küçük ölçekli bir yavaşlamaya neden olur flex-2.5.39/po/Makevars0000644000175000017500000000342112060131401015120 0ustar srivastasrivasta# Makefile variables for PO directory in any package using GNU gettext. # Usually the message domain is the same as the package name. DOMAIN = $(PACKAGE) # These two variables depend on the location of this directory. subdir = po top_builddir = .. # These options get passed to xgettext. XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ # This is the copyright holder that gets inserted into the header of the # $(DOMAIN).pot file. Set this to the copyright holder of the surrounding # package. (Note that the msgstr strings, extracted from the package's # sources, belong to the copyright holder of the package.) Translators are # expected to transfer the copyright for their translations to this person # or entity, or to disclaim their copyright. The empty string stands for # the public domain; in this case the translators are expected to disclaim # their copyright. COPYRIGHT_HOLDER = # This is the email address or URL to which the translators shall report # bugs in the untranslated strings: # - Strings which are not entire sentences, see the maintainer guidelines # in the GNU gettext documentation, section 'Preparing Strings'. # - Strings which use unclear terms or require additional context to be # understood. # - Strings which make invalid assumptions about notation of date, time or # money. # - Pluralisation problems. # - Incorrect English spelling. # - Incorrect formatting. # It can be your email address, or a mailing list address where translators # can write to without being subscribed, or the URL of a web page through # which the translators can contact you. MSGID_BUGS_ADDRESS = flex-devel@lists.sourceforge.net # This is the list of locale categories, beyond LC_MESSAGES, for which the # message catalogs shall be used. It is usually empty. EXTRA_LOCALE_CATEGORIES = flex-2.5.39/m4/0002755000175000017500000000000012314621664013351 5ustar srivastasrivastaflex-2.5.39/m4/nls.m40000644000175000017500000000231512300730747014404 0ustar srivastasrivasta# nls.m4 serial 5 (gettext-0.18) dnl Copyright (C) 1995-2003, 2005-2006, 2008-2010 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_PREREQ([2.50]) AC_DEFUN([AM_NLS], [ AC_MSG_CHECKING([whether NLS is requested]) dnl Default is enabled NLS AC_ARG_ENABLE([nls], [ --disable-nls do not use Native Language Support], USE_NLS=$enableval, USE_NLS=yes) AC_MSG_RESULT([$USE_NLS]) AC_SUBST([USE_NLS]) ]) flex-2.5.39/m4/po.m40000644000175000017500000004461612300730747014240 0ustar srivastasrivasta# po.m4 serial 17 (gettext-0.18) dnl Copyright (C) 1995-2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_PREREQ([2.50]) dnl Checks for all prerequisites of the po subdirectory. AC_DEFUN([AM_PO_SUBDIRS], [ AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake AC_REQUIRE([AM_NLS])dnl dnl Release version of the gettext macros. This is used to ensure that dnl the gettext macros and po/Makefile.in.in are in sync. AC_SUBST([GETTEXT_MACRO_VERSION], [0.18]) dnl Perform the following tests also if --disable-nls has been given, dnl because they are needed for "make dist" to work. dnl Search for GNU msgfmt in the PATH. dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. dnl The second test excludes FreeBSD msgfmt. AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT]) dnl Test whether it is GNU msgfmt >= 0.15. changequote(,)dnl case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; *) MSGFMT_015=$MSGFMT ;; esac changequote([,])dnl AC_SUBST([MSGFMT_015]) changequote(,)dnl case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; *) GMSGFMT_015=$GMSGFMT ;; esac changequote([,])dnl AC_SUBST([GMSGFMT_015]) dnl Search for GNU xgettext 0.12 or newer in the PATH. dnl The first test excludes Solaris xgettext and early GNU xgettext versions. dnl The second test excludes FreeBSD xgettext. AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po dnl Test whether it is GNU xgettext >= 0.15. changequote(,)dnl case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; *) XGETTEXT_015=$XGETTEXT ;; esac changequote([,])dnl AC_SUBST([XGETTEXT_015]) dnl Search for GNU msgmerge 0.11 or newer in the PATH. AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) dnl Installation directories. dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we dnl have to define it here, so that it can be used in po/Makefile. test -n "$localedir" || localedir='${datadir}/locale' AC_SUBST([localedir]) dnl Support for AM_XGETTEXT_OPTION. test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) AC_CONFIG_COMMANDS([po-directories], [[ for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Treat a directory as a PO directory if and only if it has a # POTFILES.in file. This allows packages to have multiple PO # directories under different names or in different locations. if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake < 1.5. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. # Hide the ALL_LINGUAS assigment from automake < 1.5. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done]], [# Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake < 1.5. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" ]) ]) dnl Postprocesses a Makefile in a directory containing PO files. AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], [ # When this code is run, in config.status, two variables have already been # set: # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, # - LINGUAS is the value of the environment variable LINGUAS at configure # time. changequote(,)dnl # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Find a way to echo strings without interpreting backslash. if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then gt_echo='echo' else if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then gt_echo='printf %s\n' else echo_func () { cat < "$ac_file.tmp" if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` cat >> "$ac_file.tmp" < /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` cat >> "$ac_file.tmp" <> "$ac_file.tmp" <&1 conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by GCC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]* | [A-Za-z]:[\\/]*)] [re_direlt='/[^/][^/]*/\.\./'] # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL([acl_cv_path_LD], [if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in *GNU* | *'with BFD'*) test "$with_gnu_ld" != no && break ;; *) test "$with_gnu_ld" != yes && break ;; esac fi done IFS="$ac_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi]) LD="$acl_cv_path_LD" if test -n "$LD"; then AC_MSG_RESULT([$LD]) else AC_MSG_RESULT([no]) fi test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) AC_LIB_PROG_LD_GNU ]) flex-2.5.39/m4/lib-link.m40000644000175000017500000010020212300730747015303 0ustar srivastasrivasta# lib-link.m4 serial 21 (gettext-0.18) dnl Copyright (C) 2001-2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. AC_PREREQ([2.54]) dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and dnl augments the CPPFLAGS variable. dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) pushdef([Name],[translit([$1],[./-], [___])]) pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ AC_LIB_LINKFLAGS_BODY([$1], [$2]) ac_cv_lib[]Name[]_libs="$LIB[]NAME" ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" ac_cv_lib[]Name[]_cppflags="$INC[]NAME" ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX" ]) LIB[]NAME="$ac_cv_lib[]Name[]_libs" LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" INC[]NAME="$ac_cv_lib[]Name[]_cppflags" LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) AC_SUBST([LIB]NAME[_PREFIX]) dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the dnl results of this search when this library appears as a dependency. HAVE_LIB[]NAME=yes popdef([NAME]) popdef([Name]) ]) dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message]) dnl searches for libname and the libraries corresponding to explicit and dnl implicit dependencies, together with the specified include files and dnl the ability to compile and link the specified testcode. The missing-message dnl defaults to 'no' and may contain additional hints for the user. dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) pushdef([Name],[translit([$1],[./-], [___])]) pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME dnl accordingly. AC_LIB_LINKFLAGS_BODY([$1], [$2]) dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, dnl because if the user has installed lib[]Name and not disabled its use dnl via --without-lib[]Name-prefix, he wants to use it. ac_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ ac_save_LIBS="$LIBS" dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS, dnl because these -l options might require -L options that are present in dnl LIBS. -l options benefit only from the -L options listed before it. dnl Otherwise, add it to the front of LIBS, because it may be a static dnl library that depends on another static library that is present in LIBS. dnl Static libraries benefit only from the static libraries listed after dnl it. case " $LIB[]NAME" in *" -l"*) LIBS="$LIBS $LIB[]NAME" ;; *) LIBS="$LIB[]NAME $LIBS" ;; esac AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])']) LIBS="$ac_save_LIBS" ]) if test "$ac_cv_lib[]Name" = yes; then HAVE_LIB[]NAME=yes AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.]) AC_MSG_CHECKING([how to link with lib[]$1]) AC_MSG_RESULT([$LIB[]NAME]) else HAVE_LIB[]NAME=no dnl If $LIB[]NAME didn't lead to a usable library, we don't need dnl $INC[]NAME either. CPPFLAGS="$ac_save_CPPFLAGS" LIB[]NAME= LTLIB[]NAME= LIB[]NAME[]_PREFIX= fi AC_SUBST([HAVE_LIB]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) AC_SUBST([LIB]NAME[_PREFIX]) popdef([NAME]) popdef([Name]) ]) dnl Determine the platform dependent parameters needed to use rpath: dnl acl_libext, dnl acl_shlibext, dnl acl_hardcode_libdir_flag_spec, dnl acl_hardcode_libdir_separator, dnl acl_hardcode_direct, dnl acl_hardcode_minus_L. AC_DEFUN([AC_LIB_RPATH], [ dnl Tell automake >= 1.10 to complain if config.rpath is missing. m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done ]) wl="$acl_cv_wl" acl_libext="$acl_cv_libext" acl_shlibext="$acl_cv_shlibext" acl_libname_spec="$acl_cv_libname_spec" acl_library_names_spec="$acl_cv_library_names_spec" acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" acl_hardcode_direct="$acl_cv_hardcode_direct" acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" dnl Determine whether the user wants rpath handling at all. AC_ARG_ENABLE([rpath], [ --disable-rpath do not hardcode runtime library paths], :, enable_rpath=yes) ]) dnl AC_LIB_FROMPACKAGE(name, package) dnl declares that libname comes from the given package. The configure file dnl will then not have a --with-libname-prefix option but a dnl --with-package-prefix option. Several libraries can come from the same dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar dnl macro call that searches for libname. AC_DEFUN([AC_LIB_FROMPACKAGE], [ pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) define([acl_frompackage_]NAME, [$2]) popdef([NAME]) pushdef([PACK],[$2]) pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) define([acl_libsinpackage_]PACKUP, m4_ifdef([acl_libsinpackage_]PACKUP, [acl_libsinpackage_]PACKUP[[, ]],)[lib$1]) popdef([PACKUP]) popdef([PACK]) ]) dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_LINKFLAGS_BODY], [ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])]) pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])]) dnl Autoconf >= 2.61 supports dots in --with options. pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit(PACK,[.],[_])],PACK)]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_ARG_WITH(P_A_C_K[-prefix], [[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib --without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" if test "$acl_libdirstem2" != "$acl_libdirstem" \ && ! test -d "$withval/$acl_libdirstem"; then additional_libdir="$withval/$acl_libdirstem2" fi fi fi ]) dnl Search the library and its dependencies in $additional_libdir and dnl $LDFLAGS. Using breadth-first-seach. LIB[]NAME= LTLIB[]NAME= INC[]NAME= LIB[]NAME[]_PREFIX= dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been dnl computed. So it has to be reset here. HAVE_LIB[]NAME= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='$1 $2' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" dnl See if it was already located by an earlier AC_LIB_LINKFLAGS dnl or AC_LIB_HAVE_LINKFLAGS call. uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" else dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined dnl that this library doesn't exist. So just drop it. : fi else dnl Search the library lib$name in $additional_libdir and $LDFLAGS dnl and the already constructed $LIBNAME/$LTLIBNAME. found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" dnl The same code as in the loop below: dnl First look for a shared library. if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi dnl Then look for a static library. if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` dnl First look for a shared library. if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi dnl Then look for a static library. if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then dnl Found the library. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then dnl Linking with a shared library. We attempt to hardcode its dnl directory into the executable's runpath, unless it's the dnl standard /usr/lib. if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then dnl No hardcoding is needed. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl Use an explicit option to hardcode DIR into the resulting dnl binary. dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi dnl The hardcoding into $LIBNAME is system dependent. if test "$acl_hardcode_direct" = yes; then dnl Using DIR/libNAME.so during linking hardcodes DIR into the dnl resulting binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then dnl Use an explicit option to hardcode DIR into the resulting dnl binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else dnl Rely on "-L$found_dir". dnl But don't add it if it's already contained in the LDFLAGS dnl or the already constructed $LIBNAME haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH dnl here, because this doesn't fit in flags passed to the dnl compiler. So give up. No hardcoding. This affects only dnl very old systems. dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then dnl Linking with a static library. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" else dnl We shouldn't come here, but anyway it's good to have a dnl fallback. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" fi fi dnl Assume the include files are nearby. additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = '$1'; then LIB[]NAME[]_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = '$1'; then LIB[]NAME[]_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then dnl Potentially add $additional_includedir to $INCNAME. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's /usr/local/include and we are using GCC on Linux, dnl 3. if it's already present in $CPPFLAGS or the already dnl constructed $INCNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INC[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $INCNAME. INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" fi fi fi fi fi dnl Look for dependencies. if test -n "$found_la"; then dnl Read the .la file. It defines the variables dnl dlname, library_names, old_library, dependency_libs, current, dnl age, revision, installed, dlopen, dlpreopen, libdir. save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" dnl We use only dependency_libs. for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's /usr/local/lib and we are using GCC on Linux, dnl 3. if it's already present in $LDFLAGS or the already dnl constructed $LIBNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LIBNAME. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LTLIBNAME. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) dnl Handle this in the next round. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) dnl Handle this in the next round. Throw away the .la's dnl directory; it is already contained in a preceding -L dnl option. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) dnl Most likely an immediate library name. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" ;; esac done fi else dnl Didn't find the library; assume it is in the system directories dnl known to the linker and runtime loader. (All the system dnl directories known to the linker should also be known to the dnl runtime loader, otherwise the system is severely misconfigured.) LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user must dnl pass all path elements in one option. We can arrange that for a dnl single library, but not when more than one $LIBNAMEs are used. alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" else dnl The -rpath options are cumulative. for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then dnl When using libtool, the option that works for both libraries and dnl executables is -R. The -R options are cumulative. for found_dir in $ltrpathdirs; do LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" done fi popdef([P_A_C_K]) popdef([PACKLIBS]) popdef([PACKUP]) popdef([PACK]) popdef([NAME]) ]) dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, dnl unless already present in VAR. dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes dnl contains two or three consecutive elements that belong together. AC_DEFUN([AC_LIB_APPENDTOVAR], [ for element in [$2]; do haveit= for x in $[$1]; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then [$1]="${[$1]}${[$1]:+ }$element" fi done ]) dnl For those cases where a variable contains several -L and -l options dnl referring to unknown libraries and directories, this macro determines the dnl necessary additional linker options for the runtime path. dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) dnl sets LDADDVAR to linker options needed together with LIBSVALUE. dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, dnl otherwise linking without libtool is assumed. AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], [ AC_REQUIRE([AC_LIB_RPATH]) AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) $1= if test "$enable_rpath" != no; then if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then dnl Use an explicit option to hardcode directories into the resulting dnl binary. rpathdirs= next= for opt in $2; do if test -n "$next"; then dir="$next" dnl No need to hardcode the standard /usr/lib. if test "X$dir" != "X/usr/$acl_libdirstem" \ && test "X$dir" != "X/usr/$acl_libdirstem2"; then rpathdirs="$rpathdirs $dir" fi next= else case $opt in -L) next=yes ;; -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` dnl No need to hardcode the standard /usr/lib. if test "X$dir" != "X/usr/$acl_libdirstem" \ && test "X$dir" != "X/usr/$acl_libdirstem2"; then rpathdirs="$rpathdirs $dir" fi next= ;; *) next= ;; esac fi done if test "X$rpathdirs" != "X"; then if test -n ""$3""; then dnl libtool is used for linking. Use -R options. for dir in $rpathdirs; do $1="${$1}${$1:+ }-R$dir" done else dnl The linker is used for linking directly. if test -n "$acl_hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user dnl must pass all path elements in one option. alldirs= for dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" $1="$flag" else dnl The -rpath options are cumulative. for dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" $1="${$1}${$1:+ }$flag" done fi fi fi fi fi AC_SUBST([$1]) ]) flex-2.5.39/m4/lt~obsolete.m40000644000175000017500000001375612314621551016172 0ustar srivastasrivasta# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) flex-2.5.39/m4/iconv.m40000644000175000017500000001653712300730747014741 0ustar srivastasrivasta# iconv.m4 serial 11 (gettext-0.18.1) dnl Copyright (C) 2000-2002, 2007-2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], [ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_LIB_LINKFLAGS_BODY([iconv]) ]) AC_DEFUN([AM_ICONV_LINK], [ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and dnl those with the standalone portable GNU libiconv installed). AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) dnl Add $INCICONV to CPPFLAGS before performing the following checks, dnl because if the user has installed libiconv and not disabled its use dnl via --without-libiconv-prefix, he wants to use it. The first dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. am_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [ am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no AC_TRY_LINK([#include #include ], [iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);], [am_cv_func_iconv=yes]) if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" AC_TRY_LINK([#include #include ], [iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);], [am_cv_lib_iconv=yes] [am_cv_func_iconv=yes]) LIBS="$am_save_LIBS" fi ]) if test "$am_cv_func_iconv" = yes; then AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [ dnl This tests against bugs in AIX 5.1, HP-UX 11.11, Solaris 10. am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi AC_TRY_RUN([ #include #include int main () { /* Test against AIX 5.1 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static const char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; const char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) return 1; } } /* Test against Solaris 10 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); if (cd_ascii_to_88591 != (iconv_t)(-1)) { static const char input[] = "\263"; char buf[10]; const char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_ascii_to_88591, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) return 1; } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; const char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) return 1; } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ if (/* Try standardized names. */ iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) /* Try IRIX, OSF/1 names. */ && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) /* Try AIX names. */ && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) /* Try HP-UX names. */ && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) return 1; return 0; }], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no], [case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac]) LIBS="$am_save_LIBS" ]) case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then AC_DEFINE([HAVE_ICONV], [1], [Define if you have the iconv() function and it works.]) fi if test "$am_cv_lib_iconv" = yes; then AC_MSG_CHECKING([how to link with libiconv]) AC_MSG_RESULT([$LIBICONV]) else dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV dnl either. CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi AC_SUBST([LIBICONV]) AC_SUBST([LTLIBICONV]) ]) dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to dnl avoid warnings like dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required". dnl This is tricky because of the way 'aclocal' is implemented: dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN. dnl Otherwise aclocal's initial scan pass would miss the macro definition. dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions. dnl Otherwise aclocal would emit many "Use of uninitialized value $1" dnl warnings. m4_define([gl_iconv_AC_DEFUN], m4_version_prereq([2.64], [[AC_DEFUN_ONCE( [$1], [$2])]], [[AC_DEFUN( [$1], [$2])]])) gl_iconv_AC_DEFUN([AM_ICONV], [ AM_ICONV_LINK if test "$am_cv_func_iconv" = yes; then AC_MSG_CHECKING([for iconv declaration]) AC_CACHE_VAL([am_cv_proto_iconv], [ AC_TRY_COMPILE([ #include #include extern #ifdef __cplusplus "C" #endif #if defined(__STDC__) || defined(__cplusplus) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); #else size_t iconv(); #endif ], [], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"]) am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` AC_MSG_RESULT([ $am_cv_proto_iconv]) AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1], [Define as const if the declaration of iconv() needs const.]) fi ]) flex-2.5.39/m4/intlmacosx.m40000644000175000017500000000457512300730747016003 0ustar srivastasrivasta# intlmacosx.m4 serial 3 (gettext-0.18) dnl Copyright (C) 2004-2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Checks for special options needed on MacOS X. dnl Defines INTL_MACOSX_LIBS. AC_DEFUN([gt_INTL_MACOSX], [ dnl Check for API introduced in MacOS X 10.2. AC_CACHE_CHECK([for CFPreferencesCopyAppValue], [gt_cv_func_CFPreferencesCopyAppValue], [gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" AC_TRY_LINK([#include ], [CFPreferencesCopyAppValue(NULL, NULL)], [gt_cv_func_CFPreferencesCopyAppValue=yes], [gt_cv_func_CFPreferencesCopyAppValue=no]) LIBS="$gt_save_LIBS"]) if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1], [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) fi dnl Check for API introduced in MacOS X 10.3. AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent], [gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" AC_TRY_LINK([#include ], [CFLocaleCopyCurrent();], [gt_cv_func_CFLocaleCopyCurrent=yes], [gt_cv_func_CFLocaleCopyCurrent=no]) LIBS="$gt_save_LIBS"]) if test $gt_cv_func_CFLocaleCopyCurrent = yes; then AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1], [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) fi INTL_MACOSX_LIBS= if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi AC_SUBST([INTL_MACOSX_LIBS]) ]) flex-2.5.39/m4/gettext.m40000644000175000017500000003513212300730747015277 0ustar srivastasrivasta# gettext.m4 serial 63 (gettext-0.18) dnl Copyright (C) 1995-2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2006, 2008-2010. dnl Macro to add for using GNU gettext. dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The dnl default (if it is not specified or empty) is 'no-libtool'. dnl INTLSYMBOL should be 'external' for packages with no intl directory, dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. dnl If INTLSYMBOL is 'use-libtool', then a libtool library dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, dnl depending on --{enable,disable}-{shared,static} and on the presence of dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library dnl $(top_builddir)/intl/libintl.a will be created. dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext dnl implementations (in libc or libintl) without the ngettext() function dnl will be ignored. If NEEDSYMBOL is specified and is dnl 'need-formatstring-macros', then GNU gettext implementations that don't dnl support the ISO C 99 formatstring macros will be ignored. dnl INTLDIR is used to find the intl libraries. If empty, dnl the value `$(top_builddir)/intl/' is used. dnl dnl The result of the configuration is one of three cases: dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled dnl and used. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 2) GNU gettext has been found in the system's C library. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 3) No internationalization, always use English msgid. dnl Catalog format: none dnl Catalog extension: none dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. dnl The use of .gmo is historical (it was needed to avoid overwriting the dnl GNU format catalogs when building on a platform with an X/Open gettext), dnl but we keep it in order not to force irrelevant filename changes on the dnl maintainers. dnl AC_DEFUN([AM_GNU_GETTEXT], [ dnl Argument checking. ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT ])])])])]) ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old], [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])]) ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT ])])])]) define([gt_included_intl], ifelse([$1], [external], ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]), [yes])) define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) gt_NEEDS_INIT AM_GNU_GETTEXT_NEED([$2]) AC_REQUIRE([AM_PO_SUBDIRS])dnl ifelse(gt_included_intl, yes, [ AC_REQUIRE([AM_INTL_SUBDIR])dnl ]) dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Sometimes libintl requires libiconv, so first search for libiconv. dnl Ideally we would do this search only after the dnl if test "$USE_NLS" = "yes"; then dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT dnl the configure script would need to contain the same shell code dnl again, outside any 'if'. There are two solutions: dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not dnl documented, we avoid it. ifelse(gt_included_intl, yes, , [ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) ]) dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation. gt_INTL_MACOSX dnl Set USE_NLS. AC_REQUIRE([AM_NLS]) ifelse(gt_included_intl, yes, [ BUILD_INCLUDED_LIBINTL=no USE_INCLUDED_LIBINTL=no ]) LIBINTL= LTLIBINTL= POSUB= dnl Add a version number to the cache macros. case " $gt_needs " in *" need-formatstring-macros "*) gt_api_version=3 ;; *" need-ngettext "*) gt_api_version=2 ;; *) gt_api_version=1 ;; esac gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" dnl If we use NLS figure out what method if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no ifelse(gt_included_intl, yes, [ AC_MSG_CHECKING([whether included gettext is requested]) AC_ARG_WITH([included-gettext], [ --with-included-gettext use the GNU gettext library included here], nls_cv_force_use_gnu_gettext=$withval, nls_cv_force_use_gnu_gettext=no) AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext]) nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" if test "$nls_cv_force_use_gnu_gettext" != "yes"; then ]) dnl User does not insist on using GNU NLS library. Figure out what dnl to use. If GNU gettext is available we use this. Else we have dnl to fall back to GNU NLS library. if test $gt_api_version -ge 3; then gt_revision_test_code=' #ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ' else gt_revision_test_code= fi if test $gt_api_version -ge 2; then gt_expression_test_code=' + * ngettext ("", "", 0)' else gt_expression_test_code= fi AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], [AC_TRY_LINK([#include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings;], [bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings], [eval "$gt_func_gnugettext_libc=yes"], [eval "$gt_func_gnugettext_libc=no"])]) if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then dnl Sometimes libintl requires libiconv, so first search for libiconv. ifelse(gt_included_intl, yes, , [ AM_ICONV_LINK ]) dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) dnl because that would add "-liconv" to LIBINTL and LTLIBINTL dnl even if libiconv doesn't exist. AC_LIB_LINKFLAGS_BODY([intl]) AC_CACHE_CHECK([for GNU gettext in libintl], [$gt_func_gnugettext_libintl], [gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" dnl Now see whether libintl exists and does not depend on libiconv. AC_TRY_LINK([#include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *);], [bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], [eval "$gt_func_gnugettext_libintl=yes"], [eval "$gt_func_gnugettext_libintl=no"]) dnl Now see whether libintl exists and depends on libiconv. if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" AC_TRY_LINK([#include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *);], [bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], [LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" ]) fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS"]) fi dnl If an already present or preinstalled GNU gettext() is found, dnl use it. But if this macro is used in GNU gettext, and GNU dnl gettext is already preinstalled in libintl, we update this dnl libintl. (Cf. the install rule in intl/Makefile.in.) if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else dnl Reset the values set by searching for libintl. LIBINTL= LTLIBINTL= INCINTL= fi ifelse(gt_included_intl, yes, [ if test "$gt_use_preinstalled_gnugettext" != "yes"; then dnl GNU gettext is not found in the C library. dnl Fall back on included GNU gettext library. nls_cv_use_gnu_gettext=yes fi fi if test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions used to generate GNU NLS library. BUILD_INCLUDED_LIBINTL=yes USE_INCLUDED_LIBINTL=yes LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD" LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD" LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` fi CATOBJEXT= if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions to use GNU gettext tools. CATOBJEXT=.gmo fi ]) if test -n "$INTL_MACOSX_LIBS"; then if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Some extra flags are needed during linking. LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" fi fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then AC_DEFINE([ENABLE_NLS], [1], [Define to 1 if translation of program messages to the user's native language is requested.]) else USE_NLS=no fi fi AC_MSG_CHECKING([whether to use NLS]) AC_MSG_RESULT([$USE_NLS]) if test "$USE_NLS" = "yes"; then AC_MSG_CHECKING([where the gettext function comes from]) if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi AC_MSG_RESULT([$gt_source]) fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then AC_MSG_CHECKING([how to link with libintl]) AC_MSG_RESULT([$LIBINTL]) AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) fi dnl For backward compatibility. Some packages may be using this. AC_DEFINE([HAVE_GETTEXT], [1], [Define if the GNU gettext() function is already present or preinstalled.]) AC_DEFINE([HAVE_DCGETTEXT], [1], [Define if the GNU dcgettext() function is already present or preinstalled.]) fi dnl We need to process the po/ directory. POSUB=po fi ifelse(gt_included_intl, yes, [ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL dnl to 'yes' because some of the testsuite requires it. if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then BUILD_INCLUDED_LIBINTL=yes fi dnl Make all variables we use known to autoconf. AC_SUBST([BUILD_INCLUDED_LIBINTL]) AC_SUBST([USE_INCLUDED_LIBINTL]) AC_SUBST([CATOBJEXT]) dnl For backward compatibility. Some configure.ins may be using this. nls_cv_header_intl= nls_cv_header_libgt= dnl For backward compatibility. Some Makefiles may be using this. DATADIRNAME=share AC_SUBST([DATADIRNAME]) dnl For backward compatibility. Some Makefiles may be using this. INSTOBJEXT=.mo AC_SUBST([INSTOBJEXT]) dnl For backward compatibility. Some Makefiles may be using this. GENCAT=gencat AC_SUBST([GENCAT]) dnl For backward compatibility. Some Makefiles may be using this. INTLOBJS= if test "$USE_INCLUDED_LIBINTL" = yes; then INTLOBJS="\$(GETTOBJS)" fi AC_SUBST([INTLOBJS]) dnl Enable libtool support if the surrounding package wishes it. INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX]) ]) dnl For backward compatibility. Some Makefiles may be using this. INTLLIBS="$LIBINTL" AC_SUBST([INTLLIBS]) dnl Make all documented variables known to autoconf. AC_SUBST([LIBINTL]) AC_SUBST([LTLIBINTL]) AC_SUBST([POSUB]) ]) dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. m4_define([gt_NEEDS_INIT], [ m4_divert_text([DEFAULTS], [gt_needs=]) m4_define([gt_NEEDS_INIT], []) ]) dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) AC_DEFUN([AM_GNU_GETTEXT_NEED], [ m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) ]) dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) flex-2.5.39/m4/ltsugar.m40000644000175000017500000001042412314621551015266 0ustar srivastasrivasta# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59 which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) flex-2.5.39/m4/progtest.m40000644000175000017500000000557312300730747015470 0ustar srivastasrivasta# progtest.m4 serial 6 (gettext-0.18) dnl Copyright (C) 1996-2003, 2005, 2008-2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1996. AC_PREREQ([2.50]) # Search path for a program which passes the given test. dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) AC_DEFUN([AM_PATH_PROG_WITH_TEST], [ # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL([ac_cv_path_$1], [case "[$]$1" in [[\\/]]* | ?:[[\\/]]*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in ifelse([$5], , $PATH, [$5]); do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$][$1]) else AC_MSG_RESULT([no]) fi AC_SUBST([$1])dnl ]) flex-2.5.39/m4/libtool.m40000644000175000017500000106043412314621550015257 0ustar srivastasrivasta# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ]) # serial 57 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_CC_BASENAME(CC) # ------------------- # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. m4_defun([_LT_CC_BASENAME], [for cc_temp in $1""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl _LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PREPARE_SED_QUOTE_VARS # -------------------------- # Define a few sed substitution that help us do robust quoting. m4_defun([_LT_PREPARE_SED_QUOTE_VARS], [# Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ]) # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from `configure', and `config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # `config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain="$ac_aux_dir/ltmain.sh" ])# _LT_PROG_LTMAIN ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the `libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to `config.status' so that its # declaration there will have the same value as in `configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags="_LT_TAGS"dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the `libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into `config.status', and then the shell code to quote escape them in # for loops in `config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # `#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test $lt_write_fail = 0 && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ \`$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2011 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test $[#] != 0 do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try \`$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try \`$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: test "$silent" = yes && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # _LT_COPYING _LT_LIBTOOL_TAGS # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) _LT_PROG_REPLACE_SHELLFNS mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG m4_ifndef([AC_PROG_GO], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS="$save_LDFLAGS" ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[[012]]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES([TAG]) # --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported if test "$lt_cv_ld_force_load" = "yes"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" m4_if([$1], [CXX], [ if test "$lt_cv_apple_cc_single_mod" != "yes"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script which will find a shell with a builtin # printf (which we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case "$ECHO" in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [ --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified).], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([${with_sysroot}]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and in which our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD="${LD-ld}_sol2" fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" ])# _LT_ENABLE_LOCK # _LT_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} : ${AR_FLAGS=cru} _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) _LT_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test x"[$]$2" = xyes; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" ]) if test x"[$]$2" = xyes; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links="nottested" if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", [Define to the sub-directory in which libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existent directories. if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[[4-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([], [sys_lib_dlsearch_path_spec], [2], [Run-time system search path for libraries]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program which can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program which can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method = "file_magic"]) _LT_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi]) if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: ;; esac fi AC_SUBST([DUMPBIN]) if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # _LT_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], [lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$GCC" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ F* | *Sun*Fortran*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Intel*\ [[CF]]*Compiler*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global defined # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi _LT_TAGVAR(link_all_deplibs, $1)=no else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS="$save_LDFLAGS"]) if test "$lt_cv_irix_exported_symbol" = yes; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting ${shlibpath_var} if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report which library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC="$lt_save_CC" ])# _LT_LANG_C_CONFIG # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared # libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ func_to_tool_file "$lt_outputfile"~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; gnu*) ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd2*) # C++ shared libraries are fairly broken _LT_TAGVAR(ld_shlibs, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(GCC, $1)="$GXX" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test "$pre_test_object_deps_done" = no; then case ${prev} in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)="${prev}${p}" else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)="$p" else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)="$p" else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) if test -z "$F77" || test "X$F77" = "Xno"; then _lt_disable_F77=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_F77" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$G77" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC="$lt_save_CC" CFLAGS="$lt_save_CFLAGS" fi # test "$_lt_disable_F77" != yes AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) if test -z "$FC" || test "X$FC" = "Xno"; then _lt_disable_FC=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_FC" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test "$_lt_disable_FC" != yes AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_GO_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GO_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [AC_MSG_CHECKING([whether the shell understands some XSI constructs]) # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes AC_MSG_RESULT([$xsi_shell]) _LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) AC_MSG_CHECKING([whether the shell understands "+="]) lt_shell_append=no ( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes AC_MSG_RESULT([$lt_shell_append]) _LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) # ------------------------------------------------------ # In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and # '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. m4_defun([_LT_PROG_FUNCTION_REPLACE], [dnl { sed -e '/^$1 ()$/,/^} # $1 /c\ $1 ()\ {\ m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) } # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: ]) # _LT_PROG_REPLACE_SHELLFNS # ------------------------- # Replace existing portable implementations of several shell functions with # equivalent extended shell implementations where those features are available.. m4_defun([_LT_PROG_REPLACE_SHELLFNS], [if test x"$xsi_shell" = xyes; then _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac]) _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl func_basename_result="${1##*/}"]) _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}"]) _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"}]) _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl func_split_long_opt_name=${1%%=*} func_split_long_opt_arg=${1#*=}]) _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac]) _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) fi if test x"$lt_shell_append" = xyes; then _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl func_quote_for_eval "${2}" dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) fi ]) # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine which file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS flex-2.5.39/m4/ltoptions.m40000644000175000017500000003007312314621550015641 0ustar srivastasrivasta# Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, # Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 7 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option `$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl `shared' nor `disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) ]) ])# _LT_SET_OPTIONS ## --------------------------------- ## ## Macros to handle LT_INIT options. ## ## --------------------------------- ## # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the `shared' and # `disable-shared' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the `static' and # `disable-static' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the `fast-install' # and `disable-fast-install' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --with-pic flag, and support the `pic-only' and `no-pic' # LT_INIT options. # MODE is either `yes' or `no'. If omitted, it defaults to `both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS="$lt_save_ifs" ;; esac], [pic_mode=default]) test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) flex-2.5.39/m4/lib-prefix.m40000644000175000017500000002042212300730747015650 0ustar srivastasrivasta# lib-prefix.m4 serial 7 (gettext-0.18) dnl Copyright (C) 2001-2005, 2008-2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't dnl require excessive bracketing. ifdef([AC_HELP_STRING], [AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], [AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed dnl to access previously installed libraries. The basic assumption is that dnl a user will want packages to use other packages he previously installed dnl with the same --prefix option. dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate dnl libraries, but is otherwise very convenient. AC_DEFUN([AC_LIB_PREFIX], [ AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_LIB_ARG_WITH([lib-prefix], [ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib --without-lib-prefix don't search for libraries in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" fi fi ]) if test $use_additional = yes; then dnl Potentially add $additional_includedir to $CPPFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's already present in $CPPFLAGS, dnl 3. if it's /usr/local/include and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= for x in $CPPFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $CPPFLAGS. CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" fi fi fi fi dnl Potentially add $additional_libdir to $LDFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's already present in $LDFLAGS, dnl 3. if it's /usr/local/lib and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then haveit= for x in $LDFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LDFLAGS. LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" fi fi fi fi fi ]) dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, dnl acl_final_exec_prefix, containing the values to which $prefix and dnl $exec_prefix will expand at the end of the configure script. AC_DEFUN([AC_LIB_PREPARE_PREFIX], [ dnl Unfortunately, prefix and exec_prefix get only finally determined dnl at the end of configure. if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" ]) dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the dnl variables prefix and exec_prefix bound to the values they will have dnl at the end of the configure script. AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], [ acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" $1 exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" ]) dnl AC_LIB_PREPARE_MULTILIB creates dnl - a variable acl_libdirstem, containing the basename of the libdir, either dnl "lib" or "lib64" or "lib/64", dnl - a variable acl_libdirstem2, as a secondary possible value for dnl acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or dnl "lib/amd64". AC_DEFUN([AC_LIB_PREPARE_MULTILIB], [ dnl There is no formal standard regarding lib and lib64. dnl On glibc systems, the current practice is that on a system supporting dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine dnl the compiler's default mode by looking at the compiler's library search dnl path. If at least one of its elements ends in /lib64 or points to a dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI. dnl Otherwise we use the default, namely "lib". dnl On Solaris systems, the current practice is that on a system supporting dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib. AC_REQUIRE([AC_CANONICAL_HOST]) acl_libdirstem=lib acl_libdirstem2= case "$host_os" in solaris*) dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment dnl . dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link." dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the dnl symlink is missing, so we set acl_libdirstem2 too. AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit], [AC_EGREP_CPP([sixtyfour bits], [ #ifdef _LP64 sixtyfour bits #endif ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no]) ]) if test $gl_cv_solaris_64bit = yes; then acl_libdirstem=lib/64 case "$host_cpu" in sparc*) acl_libdirstem2=lib/sparcv9 ;; i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; esac fi ;; *) searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` if test -n "$searchpath"; then acl_save_IFS="${IFS= }"; IFS=":" for searchdir in $searchpath; do if test -d "$searchdir"; then case "$searchdir" in */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; */../ | */.. ) # Better ignore directories of this form. They are misleading. ;; *) searchdir=`cd "$searchdir" && pwd` case "$searchdir" in */lib64 ) acl_libdirstem=lib64 ;; esac ;; esac fi done IFS="$acl_save_IFS" fi ;; esac test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" ]) flex-2.5.39/compile0000755000175000017500000001615212314621560014405 0ustar srivastasrivasta#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2012-03-05.13; # UTC # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009, 2010, 2012 Free # Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: flex-2.5.39/ChangeLog0000644000175000017500000073160212314621664014612 0ustar srivastasrivasta2014-02-16 Translation Project * po/ru.po: update ru translation from the translation project 2014-02-14 Will Estes * NEWS: mention updated da translation in release news 2014-02-14 Translation Project * po/da.po: update da translation from the translation project 2014-02-14 Will Estes * NEWS: mention updated es translation in release news 2014-02-14 Translation Project * po/es.po: update es translation from the translation project 2014-02-14 Will Estes * NEWS: mention updated ko translation in release news 2014-02-14 Translation Project * po/ko.po: update ko translation from the translation project 2014-02-14 Will Estes * NEWS: mention updated ro translation in release news 2014-02-14 Translation Project * po/ro.po: update ro translation from the translation project 2014-02-14 Will Estes * NEWS: mention updated ru translation in release news 2014-02-14 Translation Project * po/ru.po: update ru translation from the translation project 2014-02-14 Will Estes * NEWS: mention updated sv translation in news 2014-02-14 Translation Project * po/sv.po: update sv translation from the translation project 2014-02-14 Will Estes * NEWS: mention updated tr translation in news 2014-02-14 Translation Project * po/tr.po: update tr translation from the translation project 2014-02-14 Will Estes * NEWS: mention updated zh_CN in release news 2014-02-14 Translation Project * po/zh_CN.po: update zh_CN translation from the translation project 2014-02-14 Will Estes * NEWS, po/LINGUAS, po/zh_TW.po, po/zh_tw.po: rename zh_tw translation to its proper zh_TW name 2014-02-14 Will Estes * NEWS: mention updated nl, vi translations in release news 2014-02-14 Translation Project * po/vi.po: update vi translation from the translation project 2014-02-14 Translation Project * po/nl.po: update nl translation from the translation project 2014-02-14 Will Estes * TODO: remove some unneeded entries from the todo list 2014-02-13 Will Estes * doc/Makefile.am: list more generated files in CLEANFILES 2014-02-13 Will Estes * doc/flex.xml: remove unmaintained xml documentation 2014-02-13 Will Estes * configure.ac: bump AM_GNU_GETTEXT_VERSION to 0.18.1 2014-02-13 Will Estes * README: list new location of flex git repo 2014-02-13 Will Estes * po/.gitignore: git ignore generated files from english quoting variant translations 2014-02-13 Will Estes * po/LINGUAS: name english quoting variants correctly 2014-02-13 Will Estes * Makefile.am, configure.ac, tools/Makefile.am: removed tools/ subdirectory from distribution Since it is not possible to rebuild the ChangeLog file without being in a git working directory of flex, distributing the tools directory is misleading. In particular, git2cl will always fail. 2014-02-13 Will Estes * po/LINGUAS: removed unneeded blank line from translation list 2014-02-13 Will Estes * po/LINGUAS: added en quoting variants to translation list 2014-02-11 Will Estes * configure.ac: use gnu automake option instead of gnits option 2014-02-11 Will Estes * README-alpha: remove README_alpha file since it is no longer needed 2014-02-10 Will Estes * configure.ac: increment version to 2.5.38 2013-11-27 Will Estes * NEWS: flesh out internationalization section of NEWS file; mention pt_BR translation 2013-11-27 Translation Project * po/pt_BR.po: update pt_BR translation from the translation project 2013-10-31 Will Estes * NEWS: begin listing 2.5.38 version in NEWS; list new sr translation 2013-10-31 Will Estes * po/LINGUAS: list new sr translation in list of translations 2013-10-31 Will Estes * po/sr.po: add sr translation from the translation project 2013-07-02 Till Varoquaux * configure.ac, flex.skl, nfa.c, tests/Makefile.am, tests/test-lineno-trailing/.gitignore, tests/test-lineno-trailing/Makefile.am, tests/test-lineno-trailing/scanner.l, tests/test-lineno-trailing/test.input: Adjust yylineno properly when rewinding trailing contexts. 2013-05-28 Will Estes * Makefile.am: Remove incorrect / in install-exec-hook target 2013-02-16 Translation Project * po/LINGUAS, po/zh_tw.po: add zh_tw translation from the translation project 2012-12-06 Christoph Junghans * Makefile.am, configure.ac: add version information to shared library Signed-off-by: Will Estes 2012-12-04 Christoph Junghans * .gitignore, Makefile.am, configure.ac, lib/Makefile.am: Build libfl and libcompat using libtool; resolves #3586814 Signed-off-by: Will Estes 2012-12-04 Translation Project * po/ca.po: update ca translation 2012-10-31 Hugh Sasse * tests/test-extended/Makefile.am, tests/test-quotes/Makefile.am: use cmp instead of diff in some tests for portability reasons Signed-off-by: Will Estes 2012-10-31 Dennis Clarke * tests/TEMPLATE/Makefile.am, tests/test-alloc-extra/Makefile.am, tests/test-array-nr/Makefile.am, tests/test-array-r/Makefile.am, tests/test-basic-nr/Makefile.am, tests/test-basic-r/Makefile.am, tests/test-bison-nr/Makefile.am, tests/test-bison-yylloc/Makefile.am, tests/test-bison-yylval/Makefile.am, tests/test-c++-basic/Makefile.am, tests/test-c++-multiple-scanners/Makefile.am, tests/test-c++-yywrap/Makefile.am, tests/test-c-cpp-nr/Makefile.am, tests/test-c-cpp-r/Makefile.am, tests/test-ccl/Makefile.am, tests/test-debug-nr/Makefile.am, tests/test-debug-r/Makefile.am, tests/test-extended/Makefile.am, tests/test-header-nr/Makefile.am, tests/test-header-r/Makefile.am, tests/test-include-by-buffer/Makefile.am, tests/test-include-by-push/Makefile.am, tests/test-include-by-reentrant/Makefile.am, tests/test-linedir-r/Makefile.am, tests/test-lineno-nr/Makefile.am, tests/test-lineno-r/Makefile.am, tests/test-mem-nr/Makefile.am, tests/test-mem-r/Makefile.am, tests/test-multiple-scanners-nr/Makefile.am, tests/test-multiple-scanners-r/Makefile.am, tests/test-noansi-nr/Makefile.am, tests/test-noansi-r/Makefile.am, tests/test-posix/Makefile.am, tests/test-posixly-correct/Makefile.am, tests/test-prefix-nr/Makefile.am, tests/test-prefix-r/Makefile.am, tests/test-pthread/Makefile.am, tests/test-quotes/Makefile.am, tests/test-reject/Makefile.am, tests/test-rescan-nr/Makefile.am, tests/test-rescan-r/Makefile.am, tests/test-string-nr/Makefile.am, tests/test-string-r/Makefile.am, tests/test-table-opts/Makefile.am, tests/test-top/Makefile.am, tests/test-yyextra/Makefile.am: add CFLAGS and CXXFLAGS options as appropriate to testsuite Makefile.am files Signed-off-by: Will Estes 2012-10-25 Will Estes * po/LINGUAS: add hr to list of translations 2012-10-25 Translation Project * po/hr.po: add hr translation from the translation project 2012-10-25 Translation Project * po/fr.po: new fr translation project from the translation project 2012-09-08 Will Estes * po/LINGUAS: update languages list to include esperanto translation 2012-09-08 Translation Project * po/eo.po: add eo translation from the translation project 2012-08-26 Will Estes * configure.ac: add dist-xz to automake options; resolves #3561837 2012-08-26 Will Estes * autogen.sh, configure.ac: require gettext 0.18; force autoreconf in autogen.sh; resolves #3561759 Autoconf had trouble finding the shared libraries for gettext. Using gettext 0.18 fixes that. When updating the gettext version number, autoreconf could fail to update files, since autopoint would assume the gettext-related files had been locally modified. Passing --force prevents that from happening. 2012-08-15 Will Estes * Makefile.am: remove README.cvs from dist_doc_DATA in Makefile.am 2012-08-13 Will Estes * : commit 9256a268e2a1000cb410766e95487912a7d66d61 Author: Will Estes Date: Mon Aug 13 16:23:35 2012 -0400 2012-08-08 Will Estes * README, README.cvs: append README.cvs contents to README 2012-08-08 Will Estes * gen.c: fix m4 error when useecs and nultrans are true; resolves #1816878 2012-08-08 Robert Minsk * flex.skl: put user code after yyguts init; resolves #1744516 Signed-off-by: Will Estes 2012-08-08 Robert Minsk * flex.skl, main.c: do not output yy_nxt to header with %option full; resolves #1739922 Signed-off-by: Will Estes 2012-08-07 Will Estes * main.c: let flex decide if yymore and reject are needed in lex compatible mode This resolves bug #3510440. 2012-08-06 Translation Project * po/vi.po: new vi translation from the translation project 2012-08-06 Will Estes * .gitignore: add more patterns to .gitignore Undersome circumstances, the build process will generate conf.in~, which we want to ignore. Also, some patch files will apply but not cleanly and *.orig and *.rej files are generated. We want to ignore them as well. 2012-08-06 Will Estes * configure.ac, configure.in: rename configure.in to configure.ac to prep for upcoming automake changes 2012-08-06 Elias Pipping * tests/test-bison-yylloc/main.c, tests/test-bison-yylloc/parser.y, tests/test-bison-yylval/main.c, tests/test-bison-yylval/parser.y: Fix two tests to pass under bison 2.6 Given that bison is moving forward with the %parse-param instead of YYPARSE_PARAM syntax, it makes sense to switch over to using the new style declaration. In particular, this means that flex scanners that use bison features will now require bison 2.6 or higher. Signed-off-by: Will Estes 2012-08-04 Will Estes * po/nl.po: new nl translation from the translation project 2012-08-04 Mike Frysinger * flexdef.h: add prototype for lerrsf_fatal to flexdef.h Signed-off-by: Will Estes 2012-08-04 nomis52 * flex.skl, gen.c: Change variable types to silence compiler warnings; resolves #3552806 Signed-off-by: Will Estes 2012-08-03 Will Estes * NEWS: update NEWS to reflect changes in 2.5.37 2012-08-03 Will Estes * configure.in: update flex version to 2.5.37 2012-08-03 Will Estes * po/de.po: new de translation from the translation project 2012-08-02 Will Estes * po/vi.po: new vi translation from the translation project 2012-08-02 Will Estes * po/pl.po: new pl translation from the translation project 2012-08-02 Will Estes * po/fi.po: new fi translation from the translation project 2012-08-02 Will Estes * Makefile.am: Add -f option to LN_S to create flex++ The autoconf macro LN_S needs -f to successfully install flex++ if flex++ already exists. Fortunately, ln, ln -s and cp -p, which are the various forms that LN_S can take all will do the right thing with a -f argument passed. 2012-08-02 Will Estes * Makefile.am, tools/Makefile.am, tools/cvs2cl.pl, tools/cvsauthors, tools/git2cl: replace cvs2cl with git2cl Add the git2cl script in tools/ and remove the (now unnecessary) cvs2cl script. Remove tools/cvsauthors since git2cl does not need that file. Account for all the above in Makefile.am and tools/Makefile.am 2012-07-29 Will Estes * tests/.cvsignore, tests/.gitignore, tests/TEMPLATE/.cvsignore, tests/TEMPLATE/.gitignore, tests/test-alloc-extra/.cvsignore, tests/test-alloc-extra/.gitignore, tests/test-array-nr/.cvsignore, tests/test-array-nr/.gitignore, tests/test-array-r/.cvsignore, tests/test-array-r/.gitignore, tests/test-basic-nr/.cvsignore, tests/test-basic-nr/.gitignore, tests/test-basic-r/.cvsignore, tests/test-basic-r/.gitignore, tests/test-bison-nr/.cvsignore, tests/test-bison-nr/.gitignore, tests/test-bison-yylloc/.cvsignore, tests/test-bison-yylloc/.gitignore, tests/test-bison-yylval/.cvsignore, tests/test-bison-yylval/.gitignore, tests/test-c++-basic/.cvsignore, tests/test-c++-basic/.gitignore, tests/test-c++-multiple-scanners/.cvsignore, tests/test-c++-multiple-scanners/.gitignore, tests/test-c++-yywrap/.cvsignore, tests/test-c++-yywrap/.gitignore, tests/test-c-cpp-nr/.cvsignore, tests/test-c-cpp-nr/.gitignore, tests/test-c-cpp-r/.cvsignore, tests/test-c-cpp-r/.gitignore, tests/test-ccl/.cvsignore, tests/test-ccl/.gitignore, tests/test-concatenated-options/.cvsignore, tests/test-concatenated-options/.gitignore, tests/test-debug-nr/.cvsignore, tests/test-debug-nr/.gitignore, tests/test-debug-r/.cvsignore, tests/test-debug-r/.gitignore, tests/test-extended/.cvsignore, tests/test-extended/.gitignore, tests/test-header-nr/.cvsignore, tests/test-header-nr/.gitignore, tests/test-header-r/.cvsignore, tests/test-header-r/.gitignore, tests/test-include-by-buffer/.cvsignore, tests/test-include-by-buffer/.gitignore, tests/test-include-by-push/.cvsignore, tests/test-include-by-push/.gitignore, tests/test-include-by-reentrant/.cvsignore, tests/test-include-by-reentrant/.gitignore, tests/test-linedir-r/.cvsignore, tests/test-linedir-r/.gitignore, tests/test-lineno-nr/.cvsignore, tests/test-lineno-nr/.gitignore, tests/test-lineno-r/.cvsignore, tests/test-lineno-r/.gitignore, tests/test-mem-nr/.cvsignore, tests/test-mem-nr/.gitignore, tests/test-mem-r/.cvsignore, tests/test-mem-r/.gitignore, tests/test-multiple-scanners-nr/.cvsignore, tests/test-multiple-scanners-nr/.gitignore, tests/test-multiple-scanners-r/.cvsignore, tests/test-multiple-scanners-r/.gitignore, tests/test-noansi-nr/.cvsignore, tests/test-noansi-nr/.gitignore, tests/test-noansi-r/.cvsignore, tests/test-noansi-r/.gitignore, tests/test-posix/.cvsignore, tests/test-posix/.gitignore, tests/test-posixly-correct/.cvsignore, tests/test-posixly-correct/.gitignore, tests/test-prefix-nr/.cvsignore, tests/test-prefix-nr/.gitignore, tests/test-prefix-r/.cvsignore, tests/test-prefix-r/.gitignore, tests/test-pthread/.cvsignore, tests/test-pthread/.gitignore, tests/test-quotes/.cvsignore, tests/test-quotes/.gitignore, tests/test-reject/.cvsignore, tests/test-reject/.gitignore, tests/test-rescan-nr/.cvsignore, tests/test-rescan-nr/.gitignore, tests/test-rescan-r/.cvsignore, tests/test-rescan-r/.gitignore, tests/test-string-nr/.cvsignore, tests/test-string-nr/.gitignore, tests/test-string-r/.cvsignore, tests/test-string-r/.gitignore, tests/test-table-opts/.cvsignore, tests/test-table-opts/.gitignore, tests/test-top/.cvsignore, tests/test-top/.gitignore, tests/test-yyextra/.cvsignore, tests/test-yyextra/.gitignore: rename .cvsignore files in tests/ subdirectories to gitignore 2012-07-23 Will Estes * examples/.cvsignore, examples/fastwc/.cvsignore, examples/manual/.cvsignore, lib/.cvsignore, tools/.cvsignore: remove unneeded .cvsignore files 2012-07-22 Will Estes * .gitignore: add *.o and *.a to top level .gitignore The cvs tree did not need these additions because cvs assumed a lot of C-style defaults for .cvsignore files. flex builds *.o object files in the course of compilation and *.a files are built as a part of the libraries that flex compiles in the build process. 2012-07-22 Will Estes * .cvsignore, .gitignore, doc/.cvsignore, doc/.gitignore, m4/.cvsignore, m4/.gitignore, po/.cvsignore, po/.gitignore: rename .cvsignore files to .gitignore The .cvsignore files from the legacy cvs repository tracked what files got autogenerated during various stages of the flex build. Renaming the .cvsignore files to .gitignore lets git do the same thing. git is better about letting higher level .gitignore files not-track files in lower level directories. As I work my way through the test directories, we may add additional .gitignore files from the old .cvsignore files. The po/ directory has a lot of special files used by gettext, so the patterns in po/.gitignore look very different. The doc/.gitignore file accounts for what texinfo/makeinfo do, and so it also has special patterns. The m4 directory is mainly present for autoconf's benefit, but we have to account for it so make can do the right thing. Hence, m4/.gitignore says to ignore *.m4, as counterintuitive as that may seem. 2012-07-22 Will Estes * NEWS: update NEWS file to note release date of 2.5.36 2012-06-23 Will Estes * doc/flex.texi: fix call to version in manual 2012-06-22 Will Estes * doc/flex.texi: add missing argument to call to yylex in manual 2012-04-27 Will Estes * flex.skl: lintish cleanup in flex.skl; resolves #2040664 2012-04-27 Will Estes * doc/flex.texi: add a 7 to the c99 octal pattern; resolves #3518269 2012-03-31 Will Estes * doc/flex.texi: copyedit; resolves #3513670 2012-03-23 Will Estes * buf.c: escape backslashes in #line filenames in %top section; resolves #3212400; patch submitted by scfc_de 2012-03-21 Will Estes * Makefile.am, configure.in, lib/Makefile.am, lib/lib.c, lib/malloc.c, lib/realloc.c: provide malloc() and realloc() for systems that do not have satisfactory versions; resolves #1899047 2012-03-21 Will Estes * Makefile.am: install flex++ as a link; resolves bug #2939681 2012-03-21 Will Estes * tests/test-bison-nr/Makefile.am, tests/test-bison-yylloc/Makefile.am, tests/test-bison-yylval/Makefile.am: fix dependencies for make -j in test suite 2012-03-19 Will Estes * flex.skl: add missing prototypes for yyset_column() and yyget_column(); resolves #3029024; patch submitted by scfc_de 2012-03-02 Will Estes * flex.skl, tests/test-reject/scanner.l, tests/test-table-opts/scanner.l: wrap yy_fatal_error calls appropriately 2012-03-02 Will Estes * regex.c: fix overlapping data buffer issue; patch from Tim Landsheet scfc_de 2012-03-02 Will Estes * scan.l: better bracket handling in the scanner 2012-03-02 Will Estes * flexdef.h, main.c, misc.c: Remove unneeded tracking of line/column output; patch from Tim Landsheet scfc_de 2012-03-02 Will Estes * configure.in: fix test for m4 to accept an m4 with -P and not jus tGNU m4; patch from Tim Landsheet scfc_de on sourceforge 2012-03-02 Will Estes * doc/flex.texi: fix order of td_lolen and td_hilen in documentation; resolves #2913693; patch submitted by Andreas Gruenbacher 2012-03-02 Will Estes * doc/flex.texi: correct document of YY_FLUSH_BUFFER; resolves #1723028 2012-02-17 Will Estes * dfa.c, flexdef.h, misc.c, parse.y: speed up things for complex inputs; resolves #2891390 2012-02-17 Will Estes * doc/flex.texi: fix ipv6 pattern in manual; update manual copyright to 2012 2012-02-17 Will Estes * flex.skl: fremove isatty() declaration; resolves #1984987 2012-02-17 Will Estes * doc/flex.texi: Add link for RFC 2396 2012-02-17 Will Estes * flex.skl: resolve #1990170 2012-02-17 Will Estes * flex.skl: fix documentation to reflect arguments actually used; bug #2783023 2012-02-05 Will Estes * main.c: fix yywrap behavior for reentrant scanners 2012-02-04 Will Estes * NEWS: Mmention tr translation 2012-02-04 Will Estes * tables.c: prevent unused stuff from being compiled so as to reduce warnings 2012-02-03 Will Estes * buf.c, filter.c, main.c, misc.c, regex.c, scanflags.c: more better error messages; more better memory handling 2012-02-03 Will Estes * misc.c: more careful/paranoia 2012-02-03 Will Estes * scanopt.c: more careful memory allocation in option processing 2012-02-03 Will Estes * Makefile.am, configure.in: remove m4/ directory and generally clean up automake/autoconf inputs 2012-02-03 Will Estes * lib/.cvsignore: cvsignore files that need that 2012-02-03 Will Estes * NEWS, po/da.po, po/es.po, po/ko.po, po/pt_BR.po, po/ro.po, po/ru.po, po/sv.po, po/tr.po, po/zh_CN.po: check in translations 2012-02-03 Will Estes * main.c: correct macro definition of yywrap 2012-02-03 Will Estes * scan.l: Greater specificity in error messages 2012-02-03 Will Estes * parse.y: improve rule handling at EOF 2012-02-03 Will Estes * flex.skl: include cstdio for definition of EOF in all cases 2012-02-03 Will Estes * flex.skl: suppress warning on unused yyguts_t 2010-08-13 Will Estes * NEWS, po/LINGUAS, po/fi.po: new fi translation from the translation project 2009-03-31 Will Estes * doc/flex.texi: Include version.texi after @setfilename, so that @set values are correctly evaluated. (Start Conditions, Performance, Lex and Posix): Fix some markup errors. (Cxx): Likewise. Also, fix C++ example to actually be compilable. Patch from Ralf Wildenhues 2008-12-28 Will Estes * configure.in: remove line break that broke configure 2008-12-28 Will Estes * doc/flex.texi: specify the title on the title page since @settitle doesn't do that for us; resolves bug #2043491 2008-12-28 Will Estes * configure.in, flexdef.h: check for regex.h; resolves bug #2337486 2008-07-23 Will Estes * NEWS, po/ga.po: new ga translation from the translation project 2008-06-10 Will Estes * NEWS, po/ca.po: new ca translation 2008-05-31 Will Estes * Makefile.am: move ABOUT-NLS back to EXTRA_DIST 2008-05-31 Will Estes * Makefile.am: create new dist_doc_DATA; move some EXTRA_DIST files to new dist_doc_DATA target 2008-05-31 Will Estes * .cvsignore: ignore more automake generated config.status* files 2008-05-31 Will Estes * NEWS: flex distribution now built with automake and autoconf versions ... 2008-05-31 Will Estes * README.cvs: document GNU auto* version changes for building flex from cvs 2008-05-31 Will Estes * .cvsignore, doc/Makefile.am: ignore automake-supplied ylwrap 2008-05-15 Will Estes * NEWS, flex.skl: clean up types; resolves 1961902 2008-05-15 Will Estes * NEWS: update NEWS re manual 2008-05-15 Will Estes * doc/flex.texi: correct eroneous references to 'nowrap' to refer to 'noyywrap'; resolves bug #1739912 2008-05-14 Will Estes * filter.c: call clearerr on stdin before dup2'ing it; resolves bug #1902612 2008-05-14 Will Estes * NEWS: generic updates to NEWS 2008-05-14 Will Estes * tests/test-pthread/Makefile.am: move library flags in linker command; resolves patch #1943403; patch submitted by nullnix@users.sourceforge.net 2008-05-14 Will Estes * doc/flex.texi: use ansi syntax in simple examples; resolves patch #1909844; patch submitted by Tom Browder, tbrowder2@users.sourceforge.net 2008-04-10 Will Estes * doc/flex.texi: fix typo in example (from Paolo J. Matos 2008-04-10 Will Estes * flexint.h: move endif to better account for what C99 defines for integer types (fix from debian project) 2008-04-10 Will Estes * gen.c: fix another int type to be size_t 2008-03-30 Will Estes * NEWS, po/fr.po: new fr translation 2008-03-30 Will Estes * NEWS, configure.in: start version 2.5.36 2008-02-26 Will Estes * NEWS: add date of release 2008-02-15 Will Estes * NEWS, parse.y: fix bug that prevented comments from working properly 2008-02-12 Will Estes * po/de.po: new de translation 2008-02-10 Will Estes * NEWS, po/vi.po: new vi translation 2008-02-10 Will Estes * NEWS, po/nl.po: new nl translation 2008-02-09 Will Estes * NEWS, po/pl.po: new pl translation 2008-02-09 Will Estes * NEWS, po/de.po, po/pt_BR.po: new de, pt_br translations 2008-02-09 Will Estes * NEWS, flex.skl: generate headers for all functions (resolves bug #1628314) 2008-02-09 Will Estes * NEWS, flex.skl: change yy_size_t to be size_t (resolves bug #1849812) 2008-02-09 Will Estes * configure.in: start work on version 2.5.35 2007-12-12 Will Estes * NEWS, configure.in: revert NEWS and configure.in to version 2.5.34 2007-09-12 Will Estes * NEWS, configure.in: update version number to 2.5.35 2007-09-10 Aaron Stone * tests/test-alloc-extra/scanner.l: Use %option extra-type. 2007-09-10 Aaron Stone * NEWS, doc/flex.texi, flex.skl, flexdef.h, main.c, parse.y, scan.l: Introduce %option extra-type="your_type *" (resolves bug #1744505). 2007-08-15 Will Estes * po/nl.po: new nl translations from the translation project 2007-06-28 Will Estes * NEWS: change release date 2007-06-28 Will Estes * flex.skl: adjustment for prefix classes; patch submitted by Petr Machata 2007-06-28 Will Estes * NEWS: NEWS item for yy_init_extra 2007-06-12 Aaron Stone * doc/flex.texi: Docs and example for yylex_init_extra. 2007-06-01 Will Estes * tests/test-alloc-extra/.cvsignore: ignore OUTPUT file in test-alloc-extra 2007-06-01 Will Estes * tests/descriptions: add description of concatenated options test 2007-05-31 Will Estes * tests/test-alloc-extra/.cvsignore: add missing .cvsignore to test-alloc-extra 2007-05-31 Aaron Stone * configure.in, flex.skl, gen.c, main.c: Changes to resolve SF bugs 1568325 and 1563589. 2007-05-31 Aaron Stone * tests/Makefile.am, tests/descriptions, tests/test-alloc-extra/Makefile.am, tests/test-alloc-extra/scanner.l, tests/test-alloc-extra/test.input: Adding test cases for yylex_init_extra. 2007-05-12 Will Estes * configure.in, tests/test-pthread/scanner.l: fixes to test-pthread 2007-05-12 Will Estes * NEWS: NEWS item for concatenated options 2007-05-12 Will Estes * configure.in, tests/Makefile.am, tests/test-concatenated-options/.cvsignore, tests/test-concatenated-options/Makefile.am: unit test to verify concatenated options parsing 2007-05-12 Will Estes * scanopt.c: parse multiple short concatenated options; patch submitted by Petr Machata * autogen.sh: remove --force option from autogen.sh; much faster without it 2007-05-11 Will Estes * NEWS, configure.in: version 2.5.34 2007-05-08 Aaron Stone * NEWS, flex.skl: Better checking after yyalloc/yyrealloc (resolves bug #1595967) 2007-05-01 Will Estes * doc/flex.texi: change title of manual to 'Lexical Analysis with Flex' 2007-04-25 Will Estes * flex.skl: c++ memory leak plug 2007-04-23 Will Estes * flex.skl: roll back c++ memory patch as it causes the test suite no end of grief 2007-04-23 Will Estes * flex.skl: fix function definitions for non-ANSI environments (from Manoj Srivastava from Debian patchset) 2007-04-23 Will Estes * flex.skl: fix c++ memory leak (from Manoj Srivastava from Debian patchset) 2007-04-23 Will Estes * flex.skl: fix parameter name in comment (patch from Manoj Srivastava from the debian patchset 2007-04-23 Will Estes * flex.skl: add a size_t cast (patch from Manoj Srivastava from the debian patchset 2007-04-16 Will Estes * tests/test-extended/Makefile.am, tests/test-quotes/Makefile.am: cleanups to handle VPATH builds better; passifies make distcheck 2007-04-16 Will Estes * doc/flex.texi: drop using the \ in \ escaping as it throws pdf generation for a loop 2007-04-14 Will Estes * .cvsignore: add compile and *.tar.bz2 to .cvsignore 2007-04-14 Will Estes * main.c: add call to setlocale for ctype as per debian patchset 2007-04-14 Will Estes * Makefile.am, NEWS: provide for a PIC version of libfl.a for shared libraries using flex scanners 2007-04-13 Will Estes * FlexLexer.h: annotate endifs since they're a bit far from their opening #if statements 2007-04-13 Will Estes * flexdef.h, parse.y: refactor and slightly redo alloca testing, resolves bug #1675899 2007-04-13 Will Estes * : overhaul configure.in: use octathorps for comments so they're passed through m4 processing; better bracketing of m4 arguments; retool checks as per suggestions from autoscan(1) 2007-04-13 Will Estes * flex.skl: fix skeleton for reentrant scanners 2007-04-13 Will Estes * Makefile.am: remove homegrown tags target; automake does that for us 2007-04-12 Will Estes * flex.skl: fix skeleton for reentrant scanners, resolves bug #1694318 2007-04-12 Will Estes * FlexLexer.h: declare some const where missing in c++ header file 2007-04-10 Will Estes * doc/flex.texi: corrections to the manual as per suggestions from flex-help@ 2007-04-03 Will Estes * doc/flex.texi: include author names in online versions of the manual 2007-04-03 Will Estes * COPYING: update copyright notice 2007-04-03 Will Estes * AUTHORS: rearrange and update AUTHORS 2007-03-29 Will Estes * NEWS: note sf feature request 1658379 in NEWS 2007-03-29 Will Estes * tools/cvsauthors: add sodabrew to cvsauthors file 2007-03-29 Aaron Stone * flex.skl: SourceForge feature request #1658379: Expose YY_BUF_SIZE in the header file. 2007-03-07 Will Estes * NEWS, filter.c, flex.skl: apply patches submitted by sodabrew 2007-03-07 Will Estes * README.cvs: more changes describing building flex from cvs 2007-03-07 Will Estes * Makefile.am, README.cvs, README.cvs-snapshot: rename README.cvs-snapshot to README.cvs 2007-03-07 Will Estes * README.cvs-snapshot: update to explain where flex cvs lives 2007-03-07 Will Estes * README, doc/flex.texi: correct how to submit bugs 2007-02-16 Will Estes * NEWS: clarify NEWS item re man page and pdf manual 2007-02-14 Will Estes * po/Makevars: update bug address to point to flex-devel instead of lex-help 2007-02-13 Will Estes * configure.in, doc/Makefile.am: make better use of AC_INIT; clean up, simplify and make more robust the generation of the man page 2007-02-13 Will Estes * configure.in: remove option check-news from call to AM_INIT_AUTOMAKE as gnits implies check-news 2007-02-13 Will Estes * Makefile.am, configure.in: move automake options from Makefile.am to configure.in 2007-02-13 Will Estes * autogen.sh: restore --install option to autogen.sh since --force does not imply --install 2007-02-13 Will Estes * tools/cvsauthors: add john43 to cvsauthors file 2007-02-13 Will Estes * autogen.sh: call autoreconf with --force instead of --install 2007-02-13 Will Estes * doc/.cvsignore: remove texinfo.tex from cvs tree 2007-02-13 Will Estes * NEWS: updates to NEWS file to reflect recent changes 2007-02-13 Will Estes * doc/Makefile.am: add flex.pdf to EXTRA_DIST 2007-02-13 Will Estes * configure.in: remove flex.spec 2007-02-13 Will Estes * Makefile.am: remove maintainercleanfiles 2007-02-01 Will Estes * doc/Makefile.am: more changes to build system to distribute man page 2007-02-01 Will Estes * doc/Makefile.am: add flex man page to distribution 2007-02-01 Will Estes * .cvsignore, flex.spec.in: remove flex spec file 2006-11-17 Will Estes * tests/test-table-opts/Makefile.am: make test target depend on test groupings, which in turn depend on building executables; cygwin portability fix 2006-11-10 Will Estes * tests/create-test: change create-test script to edit files in place 2006-11-09 Will Estes * tests/test-array-nr/Makefile.am, tests/test-array-r/Makefile.am, tests/test-basic-nr/Makefile.am, tests/test-basic-r/Makefile.am, tests/test-bison-nr/Makefile.am, tests/test-bison-yylloc/Makefile.am, tests/test-bison-yylval/Makefile.am, tests/test-c++-basic/Makefile.am, tests/test-c++-multiple-scanners/Makefile.am, tests/test-c++-yywrap/Makefile.am, tests/test-c-cpp-nr/Makefile.am, tests/test-c-cpp-r/Makefile.am, tests/test-ccl/Makefile.am, tests/test-debug-nr/Makefile.am, tests/test-debug-r/Makefile.am, tests/test-extended/Makefile.am, tests/test-header-nr/Makefile.am, tests/test-header-r/Makefile.am, tests/test-include-by-buffer/Makefile.am, tests/test-include-by-push/Makefile.am, tests/test-include-by-reentrant/Makefile.am, tests/test-linedir-r/Makefile.am, tests/test-lineno-nr/Makefile.am, tests/test-lineno-r/Makefile.am, tests/test-mem-nr/Makefile.am, tests/test-mem-r/Makefile.am, tests/test-multiple-scanners-nr/Makefile.am, tests/test-multiple-scanners-r/Makefile.am, tests/test-noansi-nr/Makefile.am, tests/test-noansi-r/Makefile.am, tests/test-posix/Makefile.am, tests/test-posixly-correct/Makefile.am, tests/test-prefix-nr/Makefile.am, tests/test-prefix-r/Makefile.am, tests/test-pthread/Makefile.am, tests/test-quotes/Makefile.am, tests/test-reject/Makefile.am, tests/test-rescan-nr/Makefile.am, tests/test-rescan-r/Makefile.am, tests/test-string-nr/Makefile.am, tests/test-string-r/Makefile.am, tests/test-top/Makefile.am, tests/test-yyextra/Makefile.am: change CLEANFILES to include instead of just the testname for the executable 2006-11-09 Will Estes * doc/flex.texi: fix typos in manual; resolves bug #1592857 2006-11-09 Will Estes * tests/TEMPLATE/Makefile.am: change test template to remove test executable when that executable has an extension, e.g. under Cygwin 2006-11-08 Will Estes * tests/Makefile.am: test names weren't displaying in test success/failure messages (from #1591672 2006-10-30 Will Estes * doc/.cvsignore: add flex.html to .cvsignore in doc directory 2006-10-22 Will Estes * NEWS: update NEWS file for the work that millaway did 2006-10-22 Will Estes * FlexLexer.h, NEWS, main.c, tests/test-c++-multiple-scanners/scanner-2.l: make yywrap work with c++ scanners as per sf bug report 2006-10-20 Will Estes * NEWS, flex.skl, tests/test-c++-multiple-scanners/main.cpp, tests/test-c-cpp-nr/scanner.l: memory leak issues in c++ scanner 2006-10-20 Will Estes * NEWS, configure.in, tests/Makefile.am, tests/descriptions, tests/test-c++-yywrap/.cvsignore, tests/test-c++-yywrap/Makefile.am, tests/test-c++-yywrap/scanner.l, tests/test-c++-yywrap/test.input: add unit test for c++ with yywrap 2006-10-20 Will Estes * NEWS, tests/test-c++-basic/Makefile.am, tests/test-linedir-r/Makefile.am: use configure-provided awk variable for portability; add loadlibes variable to c++ test 2006-10-17 Will Estes * doc/flex.texi: add noyywrap option to example; use whitespace to clarify example 2006-08-02 Will Estes * NEWS, po/ca.po, po/vi.po: new translations 2006-04-11 John Millaway * tables.c: Casted away signedness to appease -Werror freaks. 2006-03-28 John Millaway * ccl.c, doc/flex.texi, flexdef.h, parse.y, scan.l, sym.c, tests/test-ccl/scanner.l, tests/test-ccl/test.input: Added ccl union operator. Added test in test suite for ccl union operator. Documented ccl union operator. Removed crufty ccl cache to prevent parser problems. 2006-03-28 John Millaway * doc/flex.texi, scan.l, tests/test-extended/scanner.l, tests/test-extended/test.input: Extended syntax excluded for lex/posix compat mode. Comments discarded inside (?x:) patterns. Added test in test suite for comments in extended patterns. Documented syntax additions. 2006-03-27 John Millaway * scan.l, tests/test-ccl/scanner.l, tests/test-ccl/test.input: Implemented (?x:) syntax to allow whitespace in patterns. Added test for (?x:) syntax in test suite. 2006-03-27 John Millaway * parse.y, tests/test-ccl/scanner.l, tests/test-ccl/test.input: Implemented dot-all syntax. Added test for dot-all syntax in test suite. 2006-03-27 John Millaway * dfa.c, doc/flex.texi, flexdef.h, gen.c, main.c, parse.y, scan.l, scanflags.c, tests/test-ccl/scanner.l, tests/test-ccl/test.input: Removed global variable caseins. Added scanner stack flags for case-insensitivity. Moved case-folding code from DFA-generation to parse time read-macros. Added localized case-sensitivity syntax from Perl. Added test for new syntax in test suite. Documented new syntax. 2006-03-27 John Millaway * Makefile.am, configure.in, flexdef.h, scanflags.c: Added configure check for assert.h. Added scanner flags stack. 2006-03-25 John Millaway * configure.in, doc/flex.texi, scan.l, tests/Makefile.am, tests/descriptions, tests/test-extended/.cvsignore, tests/test-extended/Makefile.am, tests/test-extended/scanner.l, tests/test-extended/test.input: Added extended, perl-compatible comment syntax. Added test for extended comment syntax. Documented extended comment syntax. 2006-03-25 John Millaway * doc/flex.texi, parse.y: Changed explicit 'A'-'Z' to isupper(), where correct to do so. Documentation. 2006-03-24 John Millaway * doc/flex.texi: Documentation. 2006-03-24 John Millaway * doc/flex.texi: Added appendix of patterns to manual. 2006-03-23 John Millaway * doc/flex.texi: . 2006-03-22 John Millaway * doc/flex.texi: Documentation. 2006-03-22 John Millaway * doc/flex.texi: Documented set difference operator {-}. 2006-03-22 John Millaway * ccl.c, flexdef.h, parse.y, scan.l, tests/test-ccl/scanner.l, tests/test-ccl/test.input: Added set difference operator {-} for character classes. 2006-03-22 John Millaway * configure.in, doc/flex.texi, parse.y, scan.l, tests/Makefile.am, tests/descriptions, tests/test-ccl/.cvsignore, tests/test-ccl/Makefile.am, tests/test-ccl/scanner.l, tests/test-ccl/test.input: Added negated character class expressions. Documented negated character class expressions. Added regression test for negated character class expressions. 2006-03-22 John Millaway * buf.c, filter.c, gen.c, main.c, misc.c, nfa.c, parse.y, regex.c: Replaced sprintf with snprintf everywhere. 2006-03-22 John Millaway * Makefile.am: Removed includedir from AM_CPPFLAGS #1439351. 2006-03-21 John Millaway * configure.in, tests/Makefile.am, tests/descriptions, tests/test-quotes/.cvsignore, tests/test-quotes/Makefile.am, tests/test-quotes/scanner.l, tests/test-quotes/test.input: Added test to verify user code is unmangled. 2006-03-21 John Millaway * flexdef.h, misc.c, scan.l: Fixed escape in actions. 2006-03-21 John Millaway * filter.c, flexdef.h, main.c, scan.l: Reverted previous input filter changes. Added noop macro to scanner output. Modified scan.l to escape m4 quotes found in user code. 2006-03-21 John Millaway * tests/test-table-opts/Makefile.am, tests/test-table-opts/scanner.l: Removed m4 from test-table-opts 2006-03-21 John Millaway * tests/test-reject/Makefile.am, tests/test-reject/scanner.l: Removed m4 from test-reject 2006-03-21 John Millaway * filter.c, flexdef.h, main.c, scan.l: Moved set_input_file to different file. 2006-03-21 John Millaway * flex.skl, flexdef.h, flexint.h, misc.c: Relaxed tests for __STDC__ and __STDC_VERSION__ to cope with bugs in GCC and Sun cc. 2006-03-20 John Millaway * filter.c: Documented filter chain. Removed fdopen. Added no-op fseek. 2006-03-13 John Millaway * gen.c: Fixed another -Wall report. 2006-03-10 Will Estes * NEWS, po/vi.po: new vi translation 2006-03-09 Will Estes * NEWS, po/ga.po, po/nl.po: new nl, ga translations 2006-02-21 Will Estes * m4/Makefile.am: add po.m4 to extra_dist in m4/ so it gets picked up by distributions 2006-02-21 Will Estes * m4/Makefile.am: add nls.m4 to extra_dist in m4/ so it will get picked up in distribution tarballs 2006-02-21 Will Estes * configure.in: remove website directory from configure.in 2006-02-20 Will Estes * NEWS, configure.in: version 2.5.33 marks in NEWS and configure.in 2006-02-20 Will Estes * configure.in: change email address in configure.in to point to flex-help@sourceforge.net 2006-02-20 John Millaway * doc/flex.texi: Documentation. 2006-02-20 John Millaway * BUGS: Appended to BUGS file. 2006-02-18 Will Estes * Makefile.am: remove website directory (since it now has its own module in the flex project 2006-02-16 John Millaway * doc/flex.texi, flex.skl: Fixed buffer overflow in reject state buffer. Corrected documentation on the state buffer. 2006-02-16 John Millaway * flex.skl: Reverted num_read from size_t back to int. 2006-02-15 John Millaway * Makefile.am, configure.in: Removed reference to RoadMap in Makefile.am. Added website directory. 2006-02-15 Will Estes * README, RoadMap: remove RoadMap and reference to it in README 2006-02-15 John Millaway * BUGS, README, doc/flex.texi, doc/flex.xml: Eliminated references to lex.sf.net. 2006-02-15 John Millaway * BUGS, flex.skl: Transfered bugs list from lex.sf.net to BUGS file. 2006-02-15 John Millaway * tests/test-rescan-nr/.cvsignore, tests/test-rescan-nr/Makefile.am, tests/test-rescan-nr/scanner.l, tests/test-rescan-nr/test.input, tests/test-rescan-r/.cvsignore, tests/test-rescan-r/Makefile.am, tests/test-rescan-r/scanner.l, tests/test-rescan-r/test.input: Recommit of last commit -- broken pipe. 2006-02-15 John Millaway * configure.in, flex.skl, tests/Makefile.am, tests/descriptions: yy_lex_destroy calls yy_init_globals to reset everything for next call to yylex. Added two new tests for reusing scanners. 2006-02-14 John Millaway * flex.spec.in: Patched rpm spec file. 2006-02-14 John Millaway * configure.in, flexint.h: Added C99 macro for inttypes, just to be conformant. 2006-02-14 John Millaway * flexdef.h, nfa.c, parse.y: Changed symbol INFINITE to fix conflict with C math symbol. 2006-02-14 John Millaway * scan.l: Omitting parens for named rules in trailing context. 2006-02-14 John Millaway * configure.in, main.c, po/ca.po, po/da.po, po/de.po, po/es.po, po/fr.po, po/ga.po, po/ko.po, po/nl.po, po/pl.po, po/pt_BR.po, po/ro.po, po/ru.po, po/sv.po, po/tr.po, po/vi.po, po/zh_CN.po, tests/test-mem-nr/scanner.l, tests/test-mem-r/scanner.l: Added check for locale.h and libintl.h in configure script. 2006-02-14 John Millaway * flex.skl: Removed unused local vars. 2006-02-14 John Millaway * flex.skl: Removed certain offending #undefs. 2006-02-14 John Millaway * flexint.h: Removed logical and from preprocessor statement. 2006-02-14 Will Estes * po/nl.po, po/nl.po.1: remove eroneously named nl.po.1; update nl.po 2006-02-14 John Millaway * dfa.c: . 2006-02-14 John Millaway * flex.skl: Included for serialized tables. 2006-02-14 John Millaway * configure.in: Minor patch to call to head in configure script. 2006-02-14 John Millaway * doc/flex.texi: Documentation patch. 2006-02-14 John Millaway * filter.c, gen.c, libyywrap.c, main.c: Patch for full file system failure. 2006-02-13 John Millaway * doc/flex.texi: Documentation. 2006-02-13 John Millaway * main.c: Fixed double-fclose when input file is empty. 2006-02-10 Will Estes * po/ca.po, po/da.po, po/de.po, po/es.po, po/fr.po, po/ga.po, po/ko.po, po/nl.po.1, po/pl.po, po/pt_BR.po, po/ro.po, po/ru.po, po/sv.po, po/tr.po, po/vi.po, po/zh_CN.po: newtranslations 2005-12-22 John Millaway * buf.c, main.c: Improvement request 1069716 log vs. log10 2005-12-22 John Millaway * flex.skl: Fixed bug 1257093 yy_init_globals in header file 2005-04-14 Will Estes * po/nl.po: new nl translation 2005-04-07 Will Estes * NEWS, po/LINGUAS, po/nl.po, po/vi.po: new nl and vi translations 2004-07-20 Will Estes * filter.c: correct improper stdin assignment 2004-05-22 Will Estes * NEWS, po/tr.po: new tr translation 2004-05-12 Will Estes * .cvsignore, .indent.pro: .cvsignore and .indent.pro got missed in the import to sourceforge; replace them 2004-05-11 Will Estes * po/fr.po: new fr translation 2004-05-03 Will Estes * po/LINGUAS: polish is pl, not po 2004-03-22 Will Estes * po/sv.po: yet another sweedish update 2004-03-19 Will Estes * NEWS, po/sv.po: new sv translation 2003-12-11 John Millaway * configure.in, filter.c, main.c: Configure checks for GNU m4. Environment variable M4 overrides built-in m4 path. Generated m4 does a late check for GNU m4. 2003-12-09 John Millaway * doc/flex.texi: added 3 faqs 2003-11-24 Will Estes * po/ro.po: new ro translation 2003-11-07 Will Estes * NEWS, po/fr.po: new french translation 2003-11-07 Will Estes * NEWS, po/ca.po: new catalan translation from the translation project 2003-11-07 Will Estes * NEWS, po/LINGUAS, po/ga.po, po/pl.po: new polish translation; updated irish translation from translation project 2003-10-10 Will Estes * NEWS, po/LINGUAS, po/ga.po: new Irish translation 2003-08-25 Will Estes * NEWS, po/LINGUAS, po/ro.po: add romanian translation 2003-07-16 Will Estes * flex.skl: flex_*int* type fixes 2003-07-16 Will Estes * tools/cvsauthors: change wlestes email address 2003-07-16 Will Estes * flex.skl: undef yytext_ptr has some bad side effects 2003-07-07 John Millaway * doc/flex.texi: Documented m4 incompatibility with lex. 2003-05-21 Will Estes * NEWS: upgrade to gettext 0.12 2003-05-20 Will Estes * flex.skl, gen.c: patches from manoj via sourceforge 2003-05-20 Will Estes * configure.in, po/.cvsignore, po/Makevars: upgrade gettext to 0.12; this allows running make pdf and make ps to be successful 2003-05-20 Will Estes * doc/.cvsignore: cvs should ignore flex.pdf and flex.ps 2003-04-25 John Millaway * TODO: Added yylineno bugs to TODO list. 2003-04-03 John Millaway * doc/flex.xml: Docbook. 2003-04-03 John Millaway * doc/flex.xml: xml now validates. 2003-04-02 John Millaway * doc/flex.xml: Began conversion to DocBook. 2003-04-01 Will Estes * NEWS, configure.in: version 2.5.31 2003-04-01 Will Estes * NEWS: remove --enable-maintainer-mode configure option 2003-04-01 Will Estes * configure.in: remove AM_MAINTAINER_MODE 2003-04-01 John Millaway * flex.skl, flexdef.h, main.c, misc.c, scan.l: Renamed some internal variables. 2003-03-31 Will Estes * NEWS: yylineno is now per-buffer in reentrant scanners 2003-03-31 John Millaway * TODO: Added TODO item. 2003-03-30 John Millaway * flex.skl, gen.c: yylineno is per-buffer in the reentrant scanner. support for yycolumn exists, but is not yet developed. 2003-03-28 John Millaway * flex.skl: Minor documentation. 2003-03-28 Will Estes * NEWS: added %top directive 2003-03-27 John Millaway * buf.c, configure.in, doc/flex.texi, flexdef.h, main.c, scan.l, tests/Makefile.am, tests/descriptions, tests/test-top/.cvsignore, tests/test-top/Makefile.am, tests/test-top/main.c, tests/test-top/scanner.l, tests/test-top/test.input: Added %top block syntax. Added test for %top block. Documented %top block. 2003-03-27 John Millaway * TODO, doc/flex.texi: Documented the m4 dependency. 2003-03-26 Will Estes * configure.in, flexdef.h: check for sys/wait.h since we use wait(2) 2003-03-26 Will Estes * flexdef.h: reorder include directives so as to catch system integer types before flex defined values for same 2003-03-26 Will Estes * TODO: assign tasks due before major release can happen; remove --enable-maintainer-mode entry 2003-03-26 Will Estes * Makefile.am: only rebuild the ChangeLog if we're inside a cvs working directory 2003-03-26 Will Estes * configure.in, tools/.cvsignore, tools/Makefile.am: add tools/ subdirectory to distribution 2003-03-26 Will Estes * Makefile.am: remove maintainer_mode conditional; add filter.c and regex.c to indentfiles; reformat and sort indentfiles so it's easier to add files in the future 2003-03-26 Will Estes * doc/Makefile.am: clean up flex.texi processing leftovers with cleanfiles 2003-03-26 Will Estes * tests/test-linedir-r/Makefile.am: an awk script wasn't included in the distribution 2003-03-26 John Millaway * TODO, configure.in, tests/Makefile.am, tests/descriptions, tests/test-include-by-push/.cvsignore, tests/test-include-by-push/Makefile.am, tests/test-include-by-push/scanner.l, tests/test-include-by-push/test-1.input, tests/test-include-by-push/test-2.input, tests/test-include-by-push/test-3.input: Added test for yypush_buffer_state and yypop_buffer_state. 2003-03-26 John Millaway * TODO: Removed items from TODO list. 2003-03-26 John Millaway * configure.in, tests/Makefile.am, tests/descriptions, tests/test-linedir-r/.cvsignore, tests/test-linedir-r/Makefile.am, tests/test-linedir-r/check-lines.awk, tests/test-linedir-r/main.c, tests/test-linedir-r/scanner.l, tests/test-linedir-r/test.input: Added test for #line directives. 2003-03-26 John Millaway * configure.in, tests/Makefile.am, tests/test-noansi-nr/.cvsignore, tests/test-noansi-nr/Makefile.am, tests/test-noansi-nr/scanner.l, tests/test-noansi-nr/test.input, tests/test-noansi-r/.cvsignore, tests/test-noansi-r/Makefile.am, tests/test-noansi-r/scanner.l, tests/test-noansi-r/test.input: Added test for noansi (traditional) options. Reordered the tests so the basic ones are first. 2003-03-25 Will Estes * TODO, doc/Makefile.am: remove maintainer-mode conditional around rebuilding of manpage 2003-03-25 Will Estes * README: mention doc/ for user documentation 2003-03-25 Will Estes * TODO: rework distribution items 2003-03-25 Will Estes * NEWS: mention m4 processing 2003-03-25 Will Estes * tests/README: update instructions for running test suite 2003-03-25 Will Estes * FlexLexer.h, Makefile.am, TODO, buf.c, configure.in, doc/flex.texi, filter.c, flex.skl, flexdef.h, gen.c, main.c, misc.c, options.c, options.h, regex.c, scan.l, sym.c, tests/test-bison-nr/scanner.l, tests/test-bison-yylloc/scanner.l, tests/test-reject/scanner.l, tests/test-table-opts/scanner.l: merge millaway's m4 branch work 2003-03-24 John Millaway * doc/flex.texi, flex.skl, flexdef.h, gen.c, main.c, options.c, options.h, scan.l: Option ansi-definitions. Option ansi-prototypes. Cleaned up some of header. Documented bison-locations. 2003-03-24 John Millaway * scan.l: Escaped m4 macros in scan.l which would cause bootstrapping issues. 2003-03-21 John Millaway * doc/flex.texi, flex.skl, main.c: Cleaning up the skel. 2003-03-20 Will Estes * TODO: we want to move the contents of to.do/Wishlist to top level TODO 2003-03-20 John Millaway * to.do/Wish-List: Assessment of every item in Wish-List. 2003-03-19 John Millaway * main.c: Fixed allocation of slightly more memory than needed. 2003-03-19 John Millaway * TODO, buf.c, configure.in, flex.skl, flexdef.h, main.c, sym.c: Start conditions now generated in a single place. 2003-03-19 Will Estes * TODO: cosmetic changes to TODO list 2003-03-19 John Millaway * flex.skl: Cleaned up warnings so multiple headers could coincide. 2003-03-19 John Millaway * TODO, flex.skl, main.c: Moved prefixes to m4. 2003-03-19 John Millaway * FlexLexer.h, filter.c, flex.skl, flexdef.h, main.c, misc.c, regex.c: Removed Paxson/Berkeley copyright restriction from filter.c and regex.c. Inline documentation of much of the generated API. Line directives now fixed for header and stdin/stdout. Blank lines squeezed from generated scanner. 2003-03-18 John Millaway * filter.c, flexdef.h, main.c, regex.c: Fixed #line directives. 2003-03-17 John Millaway * Makefile.am, filter.c, flexdef.h, regex.c: Added regex.c for regex-related code. Worked on fixing line directives;incomplete. 2003-03-14 John Millaway * TODO: Added some TODOs. 2003-03-14 John Millaway * flexdef.h, main.c, options.c, options.h, scan.l, tests/test-bison-nr/scanner.l, tests/test-bison-yylloc/scanner.l: Bison bridge was simplified to rely less on bison output. New option bison-locations. 2003-03-14 John Millaway * filter.c, flex.skl, flexdef.h, gen.c, main.c, scan.l, tests/test-reject/scanner.l: Filters are now direct children of main process. Header file now generated through m4. 2003-03-14 John Millaway * buf.c, filter.c, flexdef.h, main.c, misc.c: Added internal filter ability. Deleted various unused variables. 2003-03-14 John Millaway * main.c, tests/test-table-opts/scanner.l: Keeping tests up to date with m4 changes. Proper wait for all children. 2003-03-14 John Millaway * flex.skl, tests/test-table-opts/scanner.l: Moved test-tables to m4. 2003-03-14 John Millaway * flex.skl, main.c, options.c: Moved bison bridge code to m4. 2003-03-13 John Millaway * flex.skl, gen.c, main.c, scan.l: Moved YY_USE_LINENO to m4. 2003-03-13 John Millaway * buf.c, flexdef.h, scan.l: Added function buf_m4_undefine. 2003-03-13 John Millaway * flex.skl, main.c, scan.l: Replaced YY_ALWAYS_INTERACTIVE with m4. Replaced YY_NEVER_INTERACTIVE with m4. 2003-03-13 John Millaway * flex.skl, main.c: Moved YY_TEXT_IS_ARRAY to m4. 2003-03-12 John Millaway * flex.skl, gen.c, main.c, tests/test-reject/scanner.l: Renaming macros from YY_* to M4_YY_* where appropriate. 2003-03-12 John Millaway * flex.skl, tests/test-reject/scanner.l, tests/test-table-opts/scanner.l: Now using local variable "yyg" instead of lengthly YY_G expansion. 2003-03-12 John Millaway * buf.c, filter.c, flex.skl, flexdef.h, main.c, misc.c, options.c, options.h, scan.l, tests/test-reject/scanner.l: More m4 macro conversions. Added debugging option --preproc-level=NUM. 2003-03-11 John Millaway * Makefile.am, buf.c, flex.skl, flexdef.h, gen.c, main.c, misc.c, scan.l: Replaced many CPP macros with m4 equivalents. 2003-03-10 John Millaway * Makefile.am, filter.c, flex.skl, flexdef.h, main.c, misc.c: Added filter.c Added filter.c rules to Makefile.am Added filter prototypes to flexdef.h Flex now filters output through m4. 2003-03-05 Will Estes * doc/.cvsignore, texinfo.tex: move texinfo.tex to doc/ 2003-03-05 Will Estes * TODO: update TODO 2003-03-05 Will Estes * NEWS, configure.in: version 2.5.29 2003-03-04 John Millaway * FlexLexer.h, flex.skl: Added growable buffer stack to C++ scanner as well. yyensure_buffer_stack is now static. 2003-03-02 John Millaway * flex.skl, misc.c: Removed awkward %push %pop syntax from skeleton. 2003-03-02 John Millaway * flex.skl: Renamed YY_CURRENT_BUFFER_FAST to YY_CURRENT_BUFFER_LVALUE to better reflect its purpose. 2003-02-28 John Millaway * NEWS: made entry on input buffer stacks. 2003-02-28 Will Estes * Makefile.am, doc/Makefile.am: build on . in top level first; this will simplify calling help2man 2003-02-28 John Millaway * TODO, doc/flex.texi, flex.skl, gen.c, main.c: Removed yy_current_buffer from the planet. Input buffer states are now in an internal unbounded stack. Added new internal function, yyensure_buffer_stack. Added new API function, yypush_buffer_state. Added new API function, yypop_buffer_state. Documented the new API calls in the manual. Macro YY_BUFFER_STATE now refers to top of stack. This revision breaks the C++ scanner (again.) 2003-02-28 John Millaway * main.c: Removed some symbols from the undef list. They are needed for multiple headers to coexist. 2003-02-27 Will Estes * Makefile.am, NEWS, configure.in, doc/.cvsignore, doc/Makefile.am, doc/flex.texi, flex.texi: move flex.texi and flex.1 to new doc/ subdirectory 2003-02-27 Will Estes * NEWS: namespace cleanups 2003-02-26 John Millaway * main.c: Added a few macros to the undef list. 2003-02-26 John Millaway * main.c: Put the undef macros in an array. 2003-02-12 Will Estes * NEWS, configure.in: version 2.5.28 2003-02-10 Will Estes * README, TODO, configure.in, flex.texi: update documentation to reflect the sourceforge move 2003-02-06 Will Estes * TODO: update according to current thinking 2003-02-06 Will Estes * TODO: mcvs reviewed 2003-02-06 Will Estes * TODO: sourceforge migration tasks 2003-02-04 Will Estes * NEWS: Flex now warns if always-interactive is specified with fast or full; Fixed trailing slash bug in YY_INPUT macro def 2003-01-31 John Millaway * scan.l: Flex now warns if always-interactive is specified with fast or full. 2003-01-31 Will Estes * Makefile.am: switch to using cvs2cl.pl to generate the ChangeLog 2003-01-31 Will Estes * tools/cvs2cl.pl, tools/cvsauthors: we're going to be switching how we handle our ChangeLog 2003-01-29 John Millaway * gen.c, misc.c: Fixed trailing slash bug in YY_INPUT macro def. 2003-01-29 Will Estes * README.cvs-snapshot: upgrade texinfo to 4.3d 2003-01-29 Will Estes * flex.texi: the @copying construct works now; thanks to the texinfo maintainers for finding the problem 2003-01-21 Will Estes * NEWS, configure.in: version 2.5.27 2003-01-21 Will Estes * NEWS: flex now works with recent bison versions 2003-01-18 John Millaway * flex.skl: Check for YYLTYPE_IS_DECLARED. This fixes bison-bridge with latest bison. 2003-01-15 Will Estes * NEWS, po/pt_BR.po: new pt_br translation 2003-01-14 Will Estes * NEWS, configure.in: version 2.5.26 2003-01-14 Will Estes * NEWS: Fixed table deserialization bug on big-endian archs. Patch sent from Bryce Nichols 2003-01-12 John Millaway * tables_shared.h: Fixed table deserialization bug on big-endian archs. Patch sent from Bryce Nichols . 2003-01-10 Will Estes * README.cvs-snapshot: add version numbers for some tools and explain about version.texi and --enable-maintainer-mode 2003-01-10 Will Estes * NEWS: catch news up 2003-01-09 John Millaway * tests/test-mem-nr/scanner.l, tests/test-mem-r/scanner.l: Changed size_t to yy_size_t in yyalloc() and yyrealloc(). Is this really what we want? 2003-01-09 John Millaway * flex.skl: Changed type of yyleng from size_t to int. This fixes bug in PostgreSQL compilation. 2003-01-09 Will Estes * NEWS: catch news up 2003-01-09 Will Estes * flex.skl: more c++ fixes 2003-01-09 Will Estes * Makefile.am, configure.in, flex.spec.in: add a spec file 2003-01-09 Will Estes * flex.skl: type cast to pacify c++ compilers; patch from Bruce Lilly 2003-01-08 Will Estes * NEWS: new es translation 2003-01-08 Will Estes * po/es.po: new spanish translation 2002-12-19 John Millaway * gen.c: Fixed bug where YY_G(0) sometimes occurs (created by my previous commit.) 2002-12-17 John Millaway * gen.c: Fixed bug submitted by Bojan Smojver where the use of yylineno, reentrant, and yymore together caused a compile-time error. 2002-12-17 Will Estes * NEWS: update NEWS 2002-12-17 John Millaway * flex.texi: Documented new behavior with character ranges. 2002-12-16 John Millaway * parse.y: Fixed bug submitted by Bruce Lilly where character ranges would yield unexpected behavior in a caseless scanner. Also, flex now emits a warning if the range looks like trouble. 2002-12-16 John Millaway * ccl.c, flexdef.h: Added utility functions to deal with character case. 2002-12-09 Will Estes * flexint.h: we don't really need int64 anyway 2002-12-09 Will Estes * flex.skl: apparently some lints are happier with fllthrough without a space 2002-12-02 Will Estes * NEWS, configure.in: version 2.5.25 2002-12-02 Will Estes * Makefile.am: enclose flex.1 target in MAINTERNER_MODE 2002-12-02 Will Estes * po/pt_BR.po: new pt_br translation 2002-12-01 John Millaway * flex.texi: Indexed some more faqs. 2002-11-29 John Millaway * flex.skl: Fixed bug in SECOND yyless definition where argument was not enclosed in parentheses. 2002-11-29 John Millaway * flex.skl: Fixed bug in yyless definition where argument was not enclosed in parentheses. 2002-11-27 Will Estes * NEWS: flex uses flex_int*_t types 2002-11-27 Will Estes * flexint.h: integer types for non-C99 systems flexint.h 2002-11-27 John Millaway * dfa.c, flexint.h, gen.c, tables.c, tables.h, tables_shared.c, tables_shared.h: Changed int types to flex_intX_t. The build is now broken until typedef's are established. 2002-11-27 Will Estes * Makefile.am: MAINTAINERCLEANFILES: new variable: try to make it so that make maintainer-clean erases everything not under version control 2002-11-27 Will Estes * config.rpath: remove config.rpath 2002-11-27 Will Estes * README-alpha: just list location of betas 2002-11-26 Will Estes * flexint.h: __STDC_VERSION__ needs an L suffix 2002-11-26 Will Estes * NEWS, po/LINGUAS, po/pt_BR.po: new pt_br translation from the translation project 2002-11-25 Will Estes * flexint.h: include inttypes.h for folks who really are C99 2002-11-25 Will Estes * TODO: fix a typo 2002-11-25 Will Estes * NEWS, configure.in: version 2.5.24 2002-11-23 Will Estes * configure.in: try to make sure we have GNU m4 2002-11-23 Will Estes * tests/test-c++-multiple-scanners/Makefile.am: include tests/test-c++-multipl-scanners/test.input 2002-11-23 Will Estes * NEWS: more portability fixes 2002-11-23 Will Estes * configure.in, flexdef.h: apparently on some BSD systems, we need sys/params.h; reported by millaway 2002-11-22 Will Estes * NEWS: update NEWS 2002-11-22 John Millaway * flex.skl, main.c, tests/test-c++-multiple-scanners/Makefile.am: Fixed prefix of yyalloc,yyfree,yyrealloc in C++ scanner. Removed yylex_destroy from C++ scanner. 2002-11-22 John Millaway * flex.texi: renamed some faqs. 2002-11-22 Will Estes * AUTHORS: update wording about authorship 2002-11-17 John Millaway * parse.y: Removed space before line num in error messages to look more like gcc's errors. 2002-11-06 Will Estes * NEWS, po/tr.po: new turkish translation from the translation project 2002-10-28 Will Estes * gen.c: applied c++ from lilypond folks for std:: reasons 2002-10-25 Will Estes * flex.texi: proofreading 2002-10-24 Will Estes * flex.texi: proofreading 2002-10-22 Will Estes * flex.skl: use c-style header names in c++ for now; at some point we'll have a separate c++ skeleton and we can go whole-hog pure c++ 2002-10-22 Will Estes * TODO: c++ rants 2002-10-22 Will Estes * flex.texi: more proofreading 2002-10-22 Will Estes * Makefile.am: include intent.pro; indent target is MAINTAINER_MODE conditional 2002-10-22 Will Estes * configure.in: When we use AC_PATH_PROG, value-if-not-found is the name of the program we wanted to find; this will generate more helpful error messages 2002-10-21 John Millaway * tables.c: Added a missing function prototype. 2002-10-21 Will Estes * NEWS, configure.in: version 2.5.23 2002-10-21 Will Estes * NEWS: update NEWS on recent changes 2002-10-21 Will Estes * flexint.h: use sys/types.h and not inttypes.h 2002-10-21 Will Estes * configure.in: check for limits.h 2002-10-21 Will Estes * TODO: update TODO on recent suggestions 2002-10-21 Will Estes * flex.texi: titlepage and contents 2002-10-21 Will Estes * Makefile.am: typo 2002-10-21 Will Estes * Makefile.am, README.cvs-snapshot: include README.cvs-snapshot in the distribution; in README-cvs-snapshot, mention the need for enable-maintainer-mode 2002-10-21 John Millaway * flex.texi: typo. 2002-10-18 Will Estes * flex.texi: report the current version info that flex provides; reformat a list of non-posix features 2002-10-18 Will Estes * NEWS: report the current version info that flex provides 2002-10-18 Will Estes * flex.skl: FLEX_BETA defined if flex is beta 2002-10-16 Will Estes * flexint.h: if we're doing c++, then we can't use long long 2002-10-14 Will Estes * TODO: update TODO on several things 2002-10-11 Will Estes * flex.texi: more proofreading 2002-10-11 Will Estes * tests/TEMPLATE/Makefile.am, tests/test-array-nr/Makefile.am, tests/test-array-r/Makefile.am, tests/test-basic-nr/Makefile.am, tests/test-basic-r/Makefile.am, tests/test-bison-nr/Makefile.am, tests/test-bison-yylloc/Makefile.am, tests/test-bison-yylval/Makefile.am, tests/test-c++-basic/Makefile.am, tests/test-c++-multiple-scanners/Makefile.am, tests/test-c-cpp-nr/Makefile.am, tests/test-c-cpp-r/Makefile.am, tests/test-debug-nr/Makefile.am, tests/test-debug-r/Makefile.am, tests/test-header-nr/Makefile.am, tests/test-header-r/Makefile.am, tests/test-include-by-buffer/Makefile.am, tests/test-include-by-reentrant/Makefile.am, tests/test-lineno-nr/Makefile.am, tests/test-lineno-r/Makefile.am, tests/test-mem-nr/Makefile.am, tests/test-mem-r/Makefile.am, tests/test-multiple-scanners-nr/Makefile.am, tests/test-multiple-scanners-r/Makefile.am, tests/test-posix/Makefile.am, tests/test-posixly-correct/Makefile.am, tests/test-prefix-nr/Makefile.am, tests/test-prefix-r/Makefile.am, tests/test-pthread/Makefile.am, tests/test-reject/Makefile.am, tests/test-string-nr/Makefile.am, tests/test-string-r/Makefile.am, tests/test-table-opts/Makefile.am, tests/test-yyextra/Makefile.am: remove BISON assignment as per suggestion from Akim Demaille 2002-10-11 Will Estes * Makefile.am, configure.in: remove intl from dist 2002-10-11 Will Estes * configure.in: we use maintainer mode now 2002-10-11 Will Estes * NEWS: include create-test 2002-10-11 Will Estes * tests/Makefile.am: rename test to check-local as per Akim Demaille; test for failed tests so that make check fails if any tests do 2002-10-11 Will Estes * tests/Makefile.am: use dist_noinst_scripts as per email from Akim Demaille 2002-10-10 John Millaway * flex.texi: Documentation. 2002-10-10 Will Estes * NEWS, configure.in: version 2.5.22; portability fixes and attn to the test suite 2002-10-10 Will Estes * flexint.h: ok, this seems to work 2002-10-10 Will Estes * tests/TEMPLATE/Makefile.am, tests/test-bison-nr/Makefile.am, tests/test-bison-yylloc/Makefile.am, tests/test-bison-yylval/Makefile.am, tests/test-header-nr/Makefile.am, tests/test-header-r/Makefile.am, tests/test-multiple-scanners-nr/Makefile.am, tests/test-multiple-scanners-r/Makefile.am: use builddir in tests that need it in their include path 2002-10-10 Will Estes * tests/TEMPLATE/Makefile.am: sometimes we put header files in the builddir and so we should account for that 2002-10-10 Will Estes * tests/TEMPLATE/Makefile.am: replace the last instance 2002-10-10 Will Estes * flex.skl: include unistd.h and not cunistd as cunistd only seems to be present on very recent systems 2002-10-10 Will Estes * Makefile.am, configure.in, flex.skl, flexdef.h, flexint.h: redo integral types again; add flexint.h; change dependencies caused by adding flexint.h; remove autoconf wrapper around cunistd; restore netinet/in.h includes; remove unneded feature checks in configure.in 2002-10-08 Will Estes * configure.in, flex.skl, flexdef.h: current swipe at header magic; int types be damned 2002-10-08 Will Estes * NEWS: change version constant info to reflect change to flex.skl 2002-10-08 Will Estes * Makefile.am: remove README-alpha option; add definitions for FLEX_{MAJOR,MINOR,SUBMINOR}_VERSION 2002-10-07 Will Estes * flex.skl, flexdef.h: ok, here goes; try to handle integral typedefs in one swell foop 2002-10-07 Will Estes * configure.in: we check for {u,}int*_t types; maybe this will simplify things 2002-10-07 Will Estes * configure.in: we create the tests/TEMPLATE/Makefile so that we can build the dist archives 2002-10-07 Will Estes * NEWS: more test suite cleanups 2002-10-07 Will Estes * tests/test-c++-multiple-scanners/Makefile.am: we don't use header files... 2002-10-07 Will Estes * flexdef.h: remove include of malloc.h 2002-10-04 Will Estes * flex.texi: more editing; remove examples index; merge examples into concept index 2002-10-04 Will Estes * flex.texi: edited one more faq; used C-u C-c C-u C-a to update menus and nodes since the other updating commands are somewhat broken; unfortunately this means that all nodes have all pointers filled in 2002-10-04 Will Estes * flex.texi: yesterday's proofreading 2002-10-02 Will Estes * flex.texi: proofread some more 2002-10-02 Will Estes * flex.texi: proofread edit begins 2002-10-01 Will Estes * configure.in, tests/Makefile.am, tests/test-c++-multiple-scanners/.cvsignore, tests/test-c++-multiple-scanners/Makefile.am, tests/test-c++-multiple-scanners/main.cpp, tests/test-c++-multiple-scanners/scanner-1.l, tests/test-c++-multiple-scanners/scanner-2.l, tests/test-c++-multiple-scanners/test.input: test c++ with multiple scanners 2002-09-27 Will Estes * tests/test-array-nr/Makefile.am, tests/test-array-r/Makefile.am, tests/test-basic-nr/Makefile.am, tests/test-basic-r/Makefile.am, tests/test-bison-nr/Makefile.am, tests/test-bison-yylloc/Makefile.am, tests/test-bison-yylval/Makefile.am, tests/test-c++-basic/Makefile.am, tests/test-c-cpp-nr/Makefile.am, tests/test-c-cpp-r/Makefile.am, tests/test-debug-nr/Makefile.am, tests/test-debug-r/Makefile.am, tests/test-header-nr/Makefile.am, tests/test-header-r/Makefile.am, tests/test-include-by-buffer/Makefile.am, tests/test-include-by-reentrant/Makefile.am, tests/test-lineno-nr/Makefile.am, tests/test-lineno-r/Makefile.am, tests/test-mem-nr/Makefile.am, tests/test-mem-r/Makefile.am, tests/test-multiple-scanners-nr/Makefile.am, tests/test-multiple-scanners-r/Makefile.am, tests/test-posix/Makefile.am, tests/test-posixly-correct/Makefile.am, tests/test-prefix-nr/Makefile.am, tests/test-prefix-r/Makefile.am, tests/test-pthread/Makefile.am, tests/test-reject/Makefile.am, tests/test-string-nr/Makefile.am, tests/test-string-r/Makefile.am, tests/test-table-opts/Makefile.am, tests/test-yyextra/Makefile.am: we used INCLUDES in another place in the Makefile.am files in the test suite 2002-09-27 Will Estes * tests/test-array-nr/Makefile.am, tests/test-array-r/Makefile.am, tests/test-basic-nr/Makefile.am, tests/test-basic-r/Makefile.am, tests/test-bison-nr/Makefile.am, tests/test-bison-yylloc/Makefile.am, tests/test-bison-yylval/Makefile.am, tests/test-c++-basic/Makefile.am, tests/test-c-cpp-nr/Makefile.am, tests/test-c-cpp-r/Makefile.am, tests/test-debug-nr/Makefile.am, tests/test-debug-r/Makefile.am, tests/test-header-nr/Makefile.am, tests/test-header-r/Makefile.am, tests/test-include-by-buffer/Makefile.am, tests/test-include-by-reentrant/Makefile.am, tests/test-lineno-nr/Makefile.am, tests/test-lineno-r/Makefile.am, tests/test-mem-nr/Makefile.am, tests/test-mem-r/Makefile.am, tests/test-multiple-scanners-nr/Makefile.am, tests/test-multiple-scanners-r/Makefile.am, tests/test-posix/Makefile.am, tests/test-posixly-correct/Makefile.am, tests/test-prefix-nr/Makefile.am, tests/test-prefix-r/Makefile.am, tests/test-pthread/Makefile.am, tests/test-reject/Makefile.am, tests/test-string-nr/Makefile.am, tests/test-string-r/Makefile.am, tests/test-table-opts/Makefile.am, tests/test-yyextra/Makefile.am: oops, I typed that last s/// command to perl way wrong 2002-09-27 Will Estes * tests/TEMPLATE/Makefile.am, tests/test-array-nr/Makefile.am, tests/test-array-r/Makefile.am, tests/test-basic-nr/Makefile.am, tests/test-basic-r/Makefile.am, tests/test-bison-nr/Makefile.am, tests/test-bison-yylloc/Makefile.am, tests/test-bison-yylval/Makefile.am, tests/test-c++-basic/Makefile.am, tests/test-c-cpp-nr/Makefile.am, tests/test-c-cpp-r/Makefile.am, tests/test-debug-nr/Makefile.am, tests/test-debug-r/Makefile.am, tests/test-header-nr/Makefile.am, tests/test-header-r/Makefile.am, tests/test-include-by-buffer/Makefile.am, tests/test-include-by-reentrant/Makefile.am, tests/test-lineno-nr/Makefile.am, tests/test-lineno-r/Makefile.am, tests/test-mem-nr/Makefile.am, tests/test-mem-r/Makefile.am, tests/test-multiple-scanners-nr/Makefile.am, tests/test-multiple-scanners-r/Makefile.am, tests/test-posix/Makefile.am, tests/test-posixly-correct/Makefile.am, tests/test-prefix-nr/Makefile.am, tests/test-prefix-r/Makefile.am, tests/test-pthread/Makefile.am, tests/test-reject/Makefile.am, tests/test-string-nr/Makefile.am, tests/test-string-r/Makefile.am, tests/test-table-opts/Makefile.am, tests/test-yyextra/Makefile.am: use AM_CPPFLAGS instead of INCLUDES; write -I with no space after it for broken compilers 2002-09-27 Will Estes * Makefile.am: INCLUDES is obsolete; use AM_CPPFLAGS instead 2002-09-27 Will Estes * configure.in: apparently, AM_CONFIG_HEADER is obsolete 2002-09-27 Will Estes * TODO: integrate test suite into automake 2002-09-27 Will Estes * configure.in: since we dont run the template test, we dont need to generate its Makefile either 2002-09-27 Will Estes * autogen.sh: use autoreconf instead of calling individual utilities separately 2002-09-27 Will Estes * configure.in: check for c++ compiler 2002-09-27 Will Estes * configure.in: re-organize according to suggested layout in autoconf manual 2002-09-26 Will Estes * Makefile.am, NEWS, configure.in: update automake to 1.7 and autoconf to 2.54 2002-09-26 Will Estes * Makefile.am: use AM_YFLAGS since YFLAGS is a user variable 2002-09-25 Will Estes * NEWS: catch NEWS up on things, some of which happened a long time ago; correct punctuation; try to remove some editorializing 2002-09-25 Will Estes * Makefile.am, flex.skl, flex.texi: include a single, automatically generated version number in flex scanners 2002-09-23 Will Estes * tests/create-test: complain audibly when argument not supplied; echo on stderr when writing error messages 2002-09-23 Will Estes * tests/Makefile.am, tests/create-test: DIST_SUBDIRS so we don't have to run the TEMPLATE test; so we add new tests to SUBDIRS and DIST_SUBDIRS 2002-09-23 Will Estes * tests/TEMPLATE/Makefile.am: not all compilers support '-I dir' so we write '-Idir' instead 2002-09-23 Will Estes * TODO: reorganize faq entries; proofread the manual 2002-09-23 Will Estes * flex.texi: move c++ experimental warning to top of cxx node 2002-09-20 Will Estes * flex.skl: move stdint.h include to table-serialization section; we'll still need to think about stdint.h more though 2002-09-20 Will Estes * NEWS: new smarter skeleton/scanner generation 2002-09-20 John Millaway * flex.skl, misc.c: bison-bridge skel handled via %if/%endif pairs. 2002-09-19 John Millaway * flex.skl, misc.c: reentrant skel handled via %if/%endif pairs. 2002-09-19 John Millaway * flex.skl, misc.c: skeleton uses %push/%pop to keep skelout() scope sane. skel commands are omitted unless --debug enabled. 2002-09-19 John Millaway * flex.skl, main.c, misc.c, tables.h: Added %push and %pop operations to skel processing. 2002-09-17 Will Estes * NEWS, configure.in: flex 2.5.21 2002-09-17 John Millaway * tests/test-reject/Makefile.am: minor fixup for dist. 2002-09-16 Will Estes * NEWS, configure.in: version 2.5.20 2002-09-16 Will Estes * flex.texi: correct typo 2002-09-16 Will Estes * NEWS: note the new tables functionality 2002-09-16 John Millaway * tests/test-multiple-scanners-r/.cvsignore, tests/test-multiple-scanners-r/Makefile.am: Fixed `clean' target and .cvsignore. 2002-09-16 John Millaway * TODO, flex.skl, flex.texi, main.c, tables_shared.h, tests/test-multiple-scanners-r/main.c, tests/test-multiple-scanners-r/scanner-1.l, tests/test-multiple-scanners-r/scanner-2.l: Serialization works in headers (%option headers). Serialization code (Tables API) is complete. 2002-09-16 Will Estes * tests/test-reject/scanner.l: replace yytables_load with yytables_fload as per millaway's other changes 2002-09-15 John Millaway * TODO, flex.texi: Created user API for tables deserialization. Documented API and --tables-* options in manual. 2002-09-15 John Millaway * flex.skl, tests/test-table-opts/scanner.l: Tables deserialization uses yyalloc/yyfree. Changed yytables_load to yytables_fload. 2002-09-15 John Millaway * tests/test-bison-nr/.cvsignore: minor upkeep. 2002-09-15 John Millaway * flex.texi: Categorized and indexed scanner options in manual. 2002-09-15 John Millaway * flex.skl: Initialization of reject vars and %array vars in reentrant scanner. 2002-09-13 John Millaway * TODO, configure.in, devel/tables.pl, dfa.c, flex.skl, flex.texi, gen.c, tables.c, tables_shared.c, tables_shared.h, tests/Makefile.am, tests/test-reject/.cvsignore, tests/test-reject/Makefile.am, tests/test-reject/scanner.l, tests/test-reject/test.input, tests/test-table-opts/Makefile.am: Created test for reject. Handled reject-triggered tables in serialization. 2002-09-13 Will Estes * NEWS: millaway has been very busy 2002-09-13 John Millaway * flex.skl, tests/test-table-opts/Makefile.am, tests/test-table-opts/scanner.l: Added test for multiple tables in one file. 2002-09-13 John Millaway * tests/test-bison-nr/.cvsignore: forgot to add .cvsignore on last commit. 2002-09-13 John Millaway * tests/test-bison-nr/Makefile.am, tests/test-bison-nr/main.c, tests/test-bison-nr/parser.y, tests/test-bison-nr/scanner.l, tests/test-bison-nr/test.input: Added test-bison-bridge. 2002-09-13 John Millaway * configure.in, flex.skl, flex.texi, flexdef.h, gen.c, main.c, misc.c, options.c, options.h, scan.l, tables.h, tests/Makefile.am, tests/descriptions, tests/test-bison-yylloc/scanner.l, tests/test-bison-yylval/scanner.l, tests/test-table-opts/scanner.l: Bison bridge code now works for all C scanners and pure/non-pure bison parsers. Added %option bison-bridge (--bison-bridge). Removed %option reentrant-bison/--reentrant-bison/-Rb. Scanner knows the name of its tables. Tables serialization is OK on EOF. yylineno is present in all scanners. Modified nasty performance penalty warning w/ yylineno. test-table-opts is now run last because it's so fat. Updated manual. 2002-09-12 John Millaway * flex.texi: documentation of tabels api in manual 2002-09-12 John Millaway * TODO, tables.c: Renamed *_fwrite to *_write to reflect writer abstraction. 2002-09-11 John Millaway * devel/tables.pl: Added perl script to read/dump serialized tables in devel/ 2002-09-11 Will Estes * scan.l: the debian patch used strlen(yytext) and similar constructs--as millaway points out, this is better known as yyleng 2002-09-11 Will Estes * NEWS, po/de.po: new de translation from the translation project 2002-09-11 John Millaway * flex.skl: yytbl_load now checks tables set by name. Localized var scaope in yytbl_load. 2002-09-10 Will Estes * tests/Makefile.am: make clean before make test 2002-09-09 John Millaway * TODO, flex.skl: Fixed deserialization of --fast tables. 2002-09-09 Will Estes * TODO: fix typo; remove the yylineo entry 2002-09-09 John Millaway * TODO, buf.c, devel/dump-tables.pl, dfa.c, flex.skl, flexdef.h, gen.c, main.c, misc.c, options.c, options.h, scan.l, tables.c, tables.h, tables_shared.h, tests/test-table-opts/.cvsignore, tests/test-table-opts/Makefile.am, tests/test-table-opts/scanner.l: Table deserialization works for everything except --fast scanners. Scanners can auto-verify serialized table integrity via --tables-verify. Added tables API items to TODO list. test-table-opts is becoming exhaustive (a good thing). 2002-09-09 Will Estes * NEWS: flex has better internal diagnostics 2002-09-09 Will Estes * configure.in, flexdef.h: test for presence of __func__ and compensate if absent 2002-09-09 Will Estes * Makefile.am: include the intl/ subdirectory when searching for include files 2002-09-09 Will Estes * NEWS, po/ru.po, po/sv.po: new sv, ru translations from the translation project 2002-09-07 John Millaway * flex.skl, misc.c: Changed cryptic skeleton markers to readable form. 2002-09-07 John Millaway * Makefile.am, dfa.c, flex.skl, flex.texi, flexdef.h, gen.c, main.c, misc.c, parse.y, tables.c, tables.h, tables_shared.c, tables_shared.h: Members of struct yy_trans_info are now forced to be the same size. Added shared file tables_shared.c. Separated tables.h from flexdef.h Bulk of table deserialization code is done. 2002-09-06 Will Estes * NEWS, po/ca.po: new ca translation 2002-09-06 Will Estes * NEWS: new fr translation 2002-09-06 Will Estes * po/fr.po: new french translation from the translation project 2002-09-05 Will Estes * NEWS: c99 function defs by default 2002-09-05 John Millaway * flexdef.h, tables.c: Added flex_die macro. May need some autoconf massaging. Added thorough error checking in tables code. 2002-09-05 John Millaway * flex.skl, flex.texi: Flex generates C99 defs now. Documented the above change in manual. 2002-09-05 John Millaway * tests/test-table-opts/.cvsignore, tests/test-table-opts/Makefile.am: Added serialization test to table-opts test. 2002-09-05 Will Estes * configure.in: oops, i made a typo 2002-09-05 Will Estes * NEWS, configure.in: version 2.5.19 2002-09-05 Will Estes * scan.l: use FLEX_EXIT(), not exit() 2002-09-05 John Millaway * devel/00EXTRACT-ALL-SYMS.sh, devel/README, devel/dump-tables.pl: Added devel/ directory for junk that we don't want in the distribution, but that we want in CVS. 2002-09-05 Will Estes * scan.l: s/exit(1)/exit(EXIT_FAILURE) 2002-09-05 John Millaway * dfa.c, gen.c: Tables are now generated with %option tables-file=FILE. 2002-09-05 Will Estes * NEWS: catch up on a few things 2002-09-05 Will Estes * scan.l: prevent segfault on input lines which are longer than the allocated space (problem report from Manoj Srivastava ) 2002-09-05 John Millaway * flex.texi, main.c, options.c, options.h: Changed option 'header' to 'header-file'. 'header' still works, though. 2002-09-05 John Millaway * flex.texi, flexdef.h, gen.c, main.c, options.c, options.h, scan.l, tables.c: Tons more work on tables. 2002-09-05 John Millaway * flexdef.h, gen.c, tables.c, tables_shared.h: Lots of work on tables serialization code. 2002-09-04 Will Estes * README.cvs-snapshot: mention GNU indent 2002-09-04 Will Estes * NEWS: remove the word after from the version line 2002-09-03 Will Estes * NEWS, configure.in: version 2.5.18 2002-09-03 Will Estes * NEWS: catch up on the NEWS 2002-09-03 Will Estes * tests/Makefile.am: target test: quote the results echoing so that the ECHO_C will work on systems where it is used 2002-09-03 Will Estes * configure.in: when we don't have GNU indent, the test will generate output on stderr, so we send that to /dev/null 2002-09-03 Will Estes * configure.in: fixed bug whereby bison was reported missing even when it was found 2002-09-02 John Millaway * tables.c: In-code documentation. 2002-09-02 John Millaway * flexdef.h: Forgot to indent before previous commit. 2002-09-02 John Millaway * flexdef.h: Added known integer limits if undefined. 2002-08-29 Will Estes * configure.in: version 2.5.17 2002-08-29 Will Estes * NEWS: more portability fixes; new version number 2002-08-29 Will Estes * flexdef.h, main.c, misc.c, scanopt.c: #include fixes; we've factored out all the system include files and put them in flexdef.h 2002-08-29 Will Estes * dfa.c: eat a blank line 2002-08-29 Will Estes * NEWS: new config.{sub,guess} files; mention that we use indent on flex 2002-08-28 Will Estes * configure.in: warn if no indent found; version 2.5.16 2002-08-28 Will Estes * NEWS: catch up on recent changes; version 2.5.16 2002-08-27 Will Estes * buf.c, ccl.c, dfa.c, ecs.c, flexdef.h, gen.c, libmain.c, libyywrap.c, main.c, misc.c, nfa.c, options.c, options.h, scanopt.c, scanopt.h, sym.c, tables.c, tables_shared.h, tblcmp.c, yylex.c: ran the indent target; commit the results 2002-08-27 Will Estes * Makefile.am: touch up the indent targeet; it's ready for production use now 2002-08-27 Will Estes * configure.in: test for GNU indent; reorder the tests somewhat 2002-08-23 Will Estes * configure.in: automake is smarter about autoconf's versioning scheme 2002-08-23 Will Estes * NEWS: catch NEWS up on what we've been doing 2002-08-22 Will Estes * flexdef.h: do some more conditional including for folks without standard systems 2002-08-22 Will Estes * tests/test-c++-basic/Makefile.am: use CXX to link the test scanner here 2002-08-22 John Millaway * flex.texi: Documentation. 2002-08-22 John Millaway * Makefile.am: Created 'indent' target and added .indent.pro. 2002-08-22 John Millaway * tests/test-array-nr/Makefile.am, tests/test-array-r/Makefile.am, tests/test-basic-nr/Makefile.am, tests/test-basic-r/Makefile.am, tests/test-c-cpp-nr/Makefile.am: Fixed missing 'make clean' files. 2002-08-22 John Millaway * tests/test-bison-yylloc/Makefile.am, tests/test-bison-yylval/Makefile.am: fixed missing 'clean' file. 2002-08-22 John Millaway * flex.skl, tests/test-c++-basic/Makefile.am, tests/test-c++-basic/scanner.l: Removed core of yylex_destroy from c++ scanner -- hack! Added -lstdc++ to LDFLAGS (should we have to do this??) 2002-08-21 Will Estes * README: official releases are being hosted by Vern 2002-08-21 Will Estes * NEWS, configure.in: new beta version; more entries in NEWS from millaway; the top level entry for test-c++-basic 2002-08-21 Will Estes * tests/Makefile.am, tests/test-c++-basic/.cvsignore, tests/test-c++-basic/Makefile.am, tests/test-c++-basic/scanner.l, tests/test-c++-basic/test.input: add test-c++-basic 2002-08-21 John Millaway * gen.c, nfa.c: More tabels work. 2002-08-21 John Millaway * flexdef.h, gen.c, tables.c, tables_shared.h: More work on tables. 2002-08-20 John Millaway * dfa.c: Cleaned up macros that took no ';'. 2002-08-20 John Millaway * scanopt.c: Fixed oddball '=-'. 2002-08-20 John Millaway * flex.skl, flex.texi, gen.c: Dynamically allocate REJECT state buffer. Mentioned memory usage in docs. Made REJECT buffer variables reentrant-safe. 2002-08-20 John Millaway * tables.c: More work on tables code. 2002-08-20 Will Estes * Makefile.am, NEWS, configure.in: we're using m4 so have configure test for it 2002-08-20 John Millaway * Makefile.am, tables.c: Added tables.c and rebuilt dependencies. 2002-08-20 John Millaway * TODO, flex.texi: Dicussed prototypes and header in manual. 2002-08-19 John Millaway * Makefile.am, configure.in, flex.skl, flexdef.h, tables_shared.h: More work on tables serialization. 2002-08-19 John Millaway * Makefile.am, mkskel.sh: Skeleton is now passed through m4 (before dist is built). 2002-08-19 Will Estes * po/LINGUAS, po/zh_CN.po: add zh_cn translation from the translation project 2002-08-19 Will Estes * NEWS: millaway's done a lot of things which need to be mentioned in NEWS 2002-08-18 John Millaway * main.c: Removed #undef of start conditions. 2002-08-17 John Millaway * TODO: todo list 2002-08-17 John Millaway * flexdef.h, main.c, misc.c: Start conditions now optional in header. undef's now optional in header. Start conditions are NOT prefixed. 2002-08-17 John Millaway * flex.skl, flex.texi: Working on tables API. 2002-08-16 John Millaway * flexdef.h, main.c, misc.c, options.c, options.h, parse.y, scan.l: Added --tables option. Omitted tables code from generated scanner when unused. 2002-08-16 John Millaway * flex.skl, flex.texi, misc.c: Prelimary work on tables API. 2002-08-16 John Millaway * tests/TEMPLATE/Makefile.am, tests/test-array-nr/Makefile.am, tests/test-array-r/Makefile.am, tests/test-basic-nr/Makefile.am, tests/test-basic-r/Makefile.am, tests/test-bison-yylloc/Makefile.am, tests/test-bison-yylval/Makefile.am, tests/test-c-cpp-nr/Makefile.am, tests/test-c-cpp-r/Makefile.am, tests/test-debug-nr/Makefile.am, tests/test-debug-r/Makefile.am, tests/test-header-nr/Makefile.am, tests/test-header-r/Makefile.am, tests/test-include-by-buffer/Makefile.am, tests/test-include-by-reentrant/Makefile.am, tests/test-lineno-nr/Makefile.am, tests/test-lineno-r/Makefile.am, tests/test-mem-nr/Makefile.am, tests/test-mem-r/Makefile.am, tests/test-multiple-scanners-nr/Makefile.am, tests/test-multiple-scanners-r/Makefile.am, tests/test-posix/Makefile.am, tests/test-posixly-correct/Makefile.am, tests/test-prefix-nr/Makefile.am, tests/test-prefix-r/Makefile.am, tests/test-pthread/Makefile.am, tests/test-string-nr/Makefile.am, tests/test-string-r/Makefile.am, tests/test-table-opts/Makefile.am, tests/test-yyextra/Makefile.am: Tests now respect CFLAGS, CPPFLAGS, etc.. 2002-08-16 John Millaway * tests/test-basic-nr/scanner.l, tests/test-basic-r/scanner.l, tests/test-lineno-nr/scanner.l, tests/test-lineno-r/scanner.l: Got rid of flex -s warnings in tests. 2002-08-16 John Millaway * Makefile.am: Updated dependencies list. 2002-08-15 John Millaway * main.c: Fixed seg fault bug in ecs. 2002-08-15 Will Estes * tests/test-c-cpp-nr/.cvsignore, tests/test-c-cpp-r/.cvsignore: ignore .cpp files since we generate them instead of .c 2002-08-15 Will Estes * configure.in: version 2.5.14 2002-08-15 Will Estes * NEWS: c-as-c++ tests reworked 2002-08-15 John Millaway * tests/test-c-cpp-nr/Makefile.am, tests/test-c-cpp-nr/scanner.l, tests/test-c-cpp-r/Makefile.am, tests/test-c-cpp-r/scanner.l: The c++ tests use .cpp instead of .c extensions just to be on the safe side. 2002-08-15 Will Estes * main.c: conditionally include ; include config.h as well 2002-08-15 Will Estes * configure.in, flex.skl: only include if we have it 2002-08-15 Will Estes * NEWS: portability fixes; added missing punctuation; de translation now included 2002-08-15 Will Estes * po/LINGUAS: we also translate to german 2002-08-15 Will Estes * Makefile.am: require automake at least 1.6 2002-08-15 Will Estes * NEWS, configure.in: version 2.5.13 2002-08-14 Will Estes * flex.texi: reverted away from the @copying as it breaks the info reader 2002-08-14 John Millaway * flex.texi, flexdef.h, main.c, misc.c: Start condition prefixes attempts to adjust to user preferences. 2002-08-13 John Millaway * main.c: Include start condition symbols in header. 2002-08-13 John Millaway * flexdef.h, main.c: Omit user code and tables from generated header file. 2002-08-13 Will Estes * flex.texi: use @copying construct to display the flex license; move copying and bug reporting to the front of the manual 2002-08-13 Will Estes * NEWS: printf fix and yylex_init reports errors 2002-08-12 John Millaway * flex.texi: Updated manual for %option header. 2002-08-12 John Millaway * flex.skl, flex.texi, gen.c: Fixed type mismatch in printf. yylex_init now reports errors. 2002-08-10 John Millaway * dfa.c, main.c: Added alignment flag for future use. 2002-08-10 John Millaway * tests/test-table-opts/.cvsignore, tests/test-table-opts/Makefile.am: Added options to test-table-opts 2002-08-10 John Millaway * configure.in, tests/Makefile.am, tests/descriptions, tests/test-c-cpp-nr/Makefile.am, tests/test-table-opts/.cvsignore, tests/test-table-opts/Makefile.am, tests/test-table-opts/scanner.l, tests/test-table-opts/test.input: Added a test for various DFA table options. 2002-08-09 Will Estes * flex.texi: more faq editing; corrected mistyped nodenames 2002-08-09 Will Estes * flex.skl: fix typo which propogates out to generated scanners 2002-08-09 Will Estes * flex.texi: edited a few more faqs 2002-08-09 Will Estes * Makefile.am, faq.texi: remove faq.texi as it's included in flex.texi 2002-08-08 Will Estes * flex.texi: a few more faq edits; remove faq-89 2002-08-08 Will Estes * flex.texi: cite, not site 2002-08-08 Will Estes * flex.texi: and get the faq included 2002-08-08 Will Estes * flex.texi: fix some grammer/typography in the top node and add a detailed menu 2002-08-08 Will Estes * TODO: we've updated gettext 2002-08-08 Will Estes * po/.cvsignore: we need to ignore a few more gettext files 2002-08-08 Will Estes * NEWS, configure.in: version 2.5.12 2002-08-08 Will Estes * NEWS: mention gettext; document the non-need for bison/flex in the build process 2002-08-08 Will Estes * Makefile.am, configure.in: include intl in the distribution and in the build process 2002-08-08 Will Estes * Makefile.am: builddir in help2man call needed @-signs around it 2002-08-08 Will Estes * po/.cvsignore: we can ignore Makefile.in.in 2002-08-08 Will Estes * m4/.cvsignore, m4/Makefile.am: oops, too hasty on deleting this directory, sigh 2002-08-08 Will Estes * autogen.sh: if autopoint is going to run automatically, it's going to need to be able to update existing files 2002-08-08 Will Estes * ABOUT-NLS, autogen.sh, configure.in, m4/.cvsignore, m4/Makefile.am, m4/codeset.m4, m4/gettext.m4, m4/glibc21.m4, m4/iconv.m4, m4/isc-posix.m4, m4/lcmessage.m4, m4/lib-ld.m4, m4/lib-link.m4, m4/lib-prefix.m4, m4/progtest.m4: autopoint now works so let's let it run the gettext show 2002-08-07 Will Estes * TODO: we need to index the faq entries 2002-08-07 Will Estes * faq.texi: proofed "Why do flex scanners call fileno if it is not ANSI compatible?" 2002-08-07 Will Estes * faq.texi: proofed "How do I expand \ escape sequences in C-style quoted strings?" 2002-08-07 Will Estes * README: changes to README to align with GNU coding standards 2002-08-06 Will Estes * Makefile.am: help2man should look in builddir for the flex binary 2002-08-02 John Millaway * flex.skl: Fixed yyunput prototype. 2002-08-01 Will Estes * NEWS: new fr translation from the translation project 2002-08-01 Will Estes * po/fr.po: new fr.po translation from the translation project 2002-08-01 Will Estes * NEWS: yylineno performance hit is fixed 2002-07-31 John Millaway * TODO, flex.texi: Updated docs on yylineno. 2002-07-31 Will Estes * TODO: discuss yylineno performance 2002-07-31 Will Estes * NEWS: forgot to say what the date was that we made the release 2002-07-31 Will Estes * NEWS, configure.in: version 2.5.11 2002-07-31 Will Estes * faq.texi: fixed a menu entry and related problems 2002-07-31 Will Estes * configure.in: someday, maybe we can use autopoint 2002-07-31 Will Estes * Makefile.am: we need to include texinfo.tex now 2002-07-31 Will Estes * texinfo.tex: add texinfo.tex 2002-07-30 Will Estes * faq.texi: fix up some fatal bugs in the texinfo of the faq; begin the clean up; remove trailing and leading white space 2002-07-30 Will Estes * TODO: faqs need work 2002-07-30 Will Estes * NEWS, TODO: prototypes get airtime these days 2002-07-28 John Millaway * flex.skl: Added some comments. 2002-07-28 John Millaway * flex.skl: Fixed bug where yyless did not consider yylineno. 2002-07-28 John Millaway * scan.l: Fixed bug I created in previous commit. 2002-07-28 John Millaway * scan.l: Don't wrap ()s around {NAMEDEFS} at the end of a rule. 2002-07-27 John Millaway * flex.skl, tests/test-c-cpp-nr/Makefile.am, tests/test-c-cpp-r/Makefile.am: Fixed test-c-cpp to actually use the C++ compiler for the test. Fixed the bug that this exposed. 2002-07-27 John Millaway * ccl.c, flex.skl, flexdef.h, gen.c, main.c, nfa.c, parse.y, scan.l: yylineno check is only performed on rules whose regexs can match a newline. 2002-07-25 John Millaway * flex.skl, tests/TEMPLATE/scanner.l, tests/test-array-nr/scanner.l, tests/test-array-r/scanner.l, tests/test-basic-nr/scanner.l, tests/test-basic-r/scanner.l, tests/test-bison-yylloc/parser.y, tests/test-c-cpp-nr/scanner.l, tests/test-c-cpp-r/scanner.l, tests/test-debug-nr/scanner.l, tests/test-debug-r/scanner.l, tests/test-include-by-buffer/scanner.l, tests/test-include-by-reentrant/scanner.l, tests/test-lineno-nr/scanner.l, tests/test-lineno-r/scanner.l, tests/test-mem-nr/scanner.l, tests/test-mem-r/scanner.l, tests/test-posix/scanner.l, tests/test-posixly-correct/scanner.l, tests/test-prefix-nr/scanner.l, tests/test-prefix-r/scanner.l, tests/test-pthread/scanner.l, tests/test-string-nr/scanner.l, tests/test-string-r/scanner.l, tests/test-yyextra/scanner.l: All prototypes were rewritten to depend upon the macro YY_TRADITIONAL_FUNC_DEFS, which is defined by default. The generated scanners build cleanly under gcc's traditional strictness and under C++ compilers. 2002-07-24 Will Estes * NEWS: dist-bzip2 and rename yy_globals and yy_globals_t 2002-07-24 Will Estes * configure.in: version 2.5.10 2002-07-24 Will Estes * Makefile.am: add dist-bzip2 to automake_options so we'll start getting tar.bz2 archives 2002-07-23 John Millaway * flex.skl, flex.texi, tests/test-bison-yylval/scanner.l, tests/test-mem-r/scanner.l, tests/test-multiple-scanners-r/scanner-1.l, tests/test-multiple-scanners-r/scanner-2.l, tests/test-prefix-r/scanner.l, tests/test-pthread/scanner.l, tests/test-yyextra/scanner.l: s/yy_globals_t/yyguts_t/g s/yy_globals/yyscanner/g 2002-07-23 John Millaway * Makefile.am: typo in tags target 2002-07-22 John Millaway * Makefile.am: Removed erroneous $(srcdir) from help2man target. 2002-07-22 Will Estes * NEWS, configure.in: it's version 2.5.9 now 2002-07-22 Will Estes * po/.cvsignore: updated gettext to 0.11.3 2002-07-22 Will Estes * ABOUT-NLS, config.rpath, m4/gettext.m4, m4/iconv.m4, m4/isc-posix.m4, m4/lcmessage.m4, m4/lib-link.m4: updated gettext to version 0.11.3 2002-07-22 Will Estes * autogen.sh, configure.in: rollback on configure.in and autogen.sh because autpoint is broken 2002-07-22 Will Estes * po/ru.po: new russian translation from translation project 2002-07-19 Will Estes * autogen.sh: ok, we're going to start using autopoint, but the tree is going to undergo some changes after this 2002-07-19 Will Estes * configure.in: we're preparing for autopoint 2002-07-17 John Millaway * flex.texi: Updated manual. 2002-07-17 Will Estes * NEWS: update the NEWS file for lots of things millaway has done 2002-07-17 John Millaway * flex.skl, main.c, misc.c, scan.l, scanopt.c, sym.c, tests/test-mem-nr/scanner.l, tests/test-mem-r/scanner.l: Fixed prototype/definition conflicts with "traditional" C in skeleton at request of gcc developer. Removed duplicate prototypes in gen.c, sym.c, main.c. Added missing prototypes where needed. All functions in skeleton follow ISO C style protos and defs, instead of BOTH ISO and new-style. Skeleton now compiles cleanly under super-strict gcc flags. Flex itself almost compiles cleanly under strict flags. 2002-07-15 John Millaway * faq.texi, flex.texi: Worked on mem mgmt sect of manual. 2002-07-15 Will Estes * scan.l: allow blank lines and continuations in more places 2002-07-12 Will Estes * TODO: millaway finished the faqs directory 2002-07-12 Will Estes * TODO: removed items as per email from millaway 2002-07-12 John Millaway * configure.in, tests/Makefile.am, tests/descriptions, tests/test-posix/.cvsignore, tests/test-posix/Makefile.am, tests/test-posix/scanner.l, tests/test-posixly-correct/.cvsignore, tests/test-posixly-correct/Makefile.am, tests/test-posixly-correct/scanner.l: Added test for %option posix-compat and repeat operator. Added test for POSIXLY_CORRECT environment variable and repeat operator. 2002-07-12 John Millaway * main.c, scan.l: Fixed POSIXLY_CORRECT detection in scanner. 2002-07-11 John Millaway * faq.texi: More work on faq. 2002-07-11 John Millaway * faq.texi: Moved all faqs into manual -- but did not evaluate them yet. Removed the old faq files. 2002-07-10 John Millaway * main.c: Removed duplicate definition of FLEX_DEBUG. gcc doesn't care, but other compilers might. 2002-07-10 John Millaway * flex.texi: Wrote some more about memory mgmt in the manual. 2002-07-10 John Millaway * flex.texi: flex.texi now works with install-info. 2002-07-10 Will Estes * TODO: added items as per email from millaway 2002-07-10 Will Estes * NEWS: after we release a version, we have to keep the version number in NEWS current 2002-07-10 John Millaway * flex.skl, flex.texi, main.c, scan.l, tests/test-mem-nr/scanner.l, tests/test-mem-r/scanner.l: Fixed prefix issue with get/set debug functions. Fixed prefix issues with memory functions. 2002-07-09 John Millaway * flex.skl: Memory functions are no longer static. 2002-07-09 John Millaway * tests/test-mem-nr/test.input: Added a missing input file for test-mem-nr/ 2002-07-09 John Millaway * tests/test-mem-nr/.cvsignore, tests/test-mem-nr/Makefile.am, tests/test-mem-nr/scanner.l, tests/test-mem-r/.cvsignore, tests/test-mem-r/Makefile.am, tests/test-mem-r/scanner.l, tests/test-mem-r/test.input: Added tests for overriding memory. 2002-07-09 John Millaway * flex.texi: Added sections in manual for memory management. 2002-07-09 Will Estes * NEWS: noted more user visible changes 2002-07-09 John Millaway * configure.in, flex.skl, scan.l, tests/Makefile.am: Added yylex_destroy() to non-reentrant scanner. Added ability to override memory functions. Added tests for overriding memory functions. 2002-07-09 Will Estes * NEWS: new POSIXLY_CORRECT and new ru translation 2002-07-09 Will Estes * po/ru.po: new ru translation from the translation project 2002-07-09 John Millaway * flex.texi: Made note of set/get debug in docs. 2002-07-09 John Millaway * configure.in, flexdef.h, tests/create-test: Replaced obsolete macros in configure.in. Modified create-test to handle the above changes in configure.in. Added support for . 2002-07-09 John Millaway * main.c: Check POSIXLY_CORRECT env variable. 2002-07-09 John Millaway * flex.skl: Added prototypes for the get/set debug functions. 2002-07-09 John Millaway * configure.in, flex.skl, gen.c, main.c, scan.l, tests/Makefile.am, tests/test-debug-nr/.cvsignore, tests/test-debug-nr/Makefile.am, tests/test-debug-nr/scanner.l, tests/test-debug-nr/test.input, tests/test-debug-r/.cvsignore, tests/test-debug-r/Makefile.am, tests/test-debug-r/scanner.l, tests/test-debug-r/test.input: Made yy_flex_debug non-global in reentrant scanner. Created get/set functions for yy_flex_debug. Defined prefixes for new yy_flex_debug symbols. Added tests/ for yy_flex_debug. 2002-07-09 John Millaway * tests/create-test: create-test script now modifies .cvsignore 2002-07-09 John Millaway * tests/create-test: Improved the error checking. 2002-07-03 Will Estes * main.c: fix bug whereby prefix didn't get passed to everybody; patch by rse@engelschall.com 2002-07-03 Will Estes * faq.texi: ~ is an active character, so we'll just use the word 'about' 2002-07-02 John Millaway * Makefile.am: Fixed typo. 2002-07-02 John Millaway * faq.texi: Added a faq. 2002-06-28 John Millaway * Makefile.am: Added 'tags' target -- something I should have done long ago. 2002-06-28 Will Estes * TODO: add two new items regarding coding; remove tests/ copyright notice item as it's done 2002-06-26 Will Estes * NEWS: note the copyright messages in tests/ 2002-06-25 John Millaway * tests/TEMPLATE/Makefile.am, tests/TEMPLATE/parser.y, tests/TEMPLATE/scanner.l, tests/test-array-nr/Makefile.am, tests/test-array-nr/scanner.l, tests/test-array-r/Makefile.am, tests/test-array-r/scanner.l, tests/test-basic-nr/Makefile.am, tests/test-basic-nr/scanner.l, tests/test-basic-r/Makefile.am, tests/test-basic-r/scanner.l, tests/test-bison-yylloc/Makefile.am, tests/test-bison-yylloc/main.c, tests/test-bison-yylloc/parser.y, tests/test-bison-yylloc/scanner.l, tests/test-bison-yylval/Makefile.am, tests/test-bison-yylval/main.c, tests/test-bison-yylval/parser.y, tests/test-bison-yylval/scanner.l, tests/test-c-cpp-nr/Makefile.am, tests/test-c-cpp-nr/scanner.l, tests/test-c-cpp-r/Makefile.am, tests/test-c-cpp-r/scanner.l, tests/test-header-nr/Makefile.am, tests/test-header-nr/main.c, tests/test-header-nr/scanner.l, tests/test-header-r/Makefile.am, tests/test-header-r/main.c, tests/test-header-r/scanner.l, tests/test-include-by-buffer/Makefile.am, tests/test-include-by-buffer/scanner.l, tests/test-include-by-reentrant/Makefile.am, tests/test-include-by-reentrant/scanner.l, tests/test-lineno-nr/Makefile.am, tests/test-lineno-nr/scanner.l, tests/test-lineno-r/Makefile.am, tests/test-lineno-r/scanner.l, tests/test-multiple-scanners-nr/Makefile.am, tests/test-multiple-scanners-nr/main.c, tests/test-multiple-scanners-nr/scanner-1.l, tests/test-multiple-scanners-nr/scanner-2.l, tests/test-multiple-scanners-r/Makefile.am, tests/test-multiple-scanners-r/main.c, tests/test-multiple-scanners-r/scanner-1.l, tests/test-multiple-scanners-r/scanner-2.l, tests/test-prefix-nr/Makefile.am, tests/test-prefix-nr/scanner.l, tests/test-prefix-r/Makefile.am, tests/test-prefix-r/scanner.l, tests/test-pthread/Makefile.am, tests/test-pthread/scanner.l, tests/test-string-nr/Makefile.am, tests/test-string-nr/scanner.l, tests/test-string-r/Makefile.am, tests/test-string-r/scanner.l, tests/test-yyextra/Makefile.am, tests/test-yyextra/scanner.l: Prepended explicit license to all test-*/ sources. 2002-06-25 Will Estes * NEWS, po/ca.po, po/de.po, po/fr.po, po/sv.po, po/tr.po: new ca, de, fr, sv, tr translations 2002-06-19 Will Estes * TODO: add bootstrapper to the todo list 2002-06-19 Will Estes * configure.in: new version number 2002-06-19 Will Estes * TODO: update TODO list 2002-06-19 Will Estes * NEWS, TODO, flex.texi, flexdef.h, main.c, options.c, options.h, parse.y, scan.l: address typos in NEWS; add --posix option for ERE parsing the way posix wants it; update the TODO file 2002-05-31 Will Estes * README-alpha: made code quality warning more explicit; gave url for cvs and beta flex 2002-05-23 John Millaway * gen.c: Fixed bug where omission of user section 3 caused unmatched #ifdef's in generated code. 2002-05-20 Will Estes * configure.in: configure.in requires at least autoconf 2.50 2002-05-13 John Millaway * Makefile.am: Updated my email address. 2002-05-10 John Millaway * flexdef.h, misc.c: chomp'd lines when reading external skel file. 2002-05-07 Will Estes * po/sv.po: new sweedish translation from the translation project 2002-04-29 Will Estes * po/ca.po: new catalan translation from the translation project 2002-04-29 Will Estes * po/es.po: new spanish translation from the translation project 2002-04-25 Will Estes * TODO: note that the lex matching of abc{1,3} is the posix behavior and so we have a problem 2002-04-25 Will Estes * flex.texi: note that the lex matching of abc{1,3} is the posix behavior 2002-04-23 Will Estes * configure.in: new version 2.5.7; use autoconf versioning info 2002-04-23 Will Estes * NEWS: note changes in 2.5.7 2002-04-23 Will Estes * main.c: conditional compile gettext initialization 2002-04-22 Will Estes * po/de.po: new german translation from the translation project 2002-04-19 John Millaway * tests/test-include-by-reentrant/Makefile.am: Fixed command line for test-include-by-reentrant/Makefile.am 2002-04-19 John Millaway * tests/Makefile.am, tests/TEMPLATE/Makefile.am, tests/test-array-nr/Makefile.am, tests/test-array-r/Makefile.am, tests/test-basic-nr/Makefile.am, tests/test-basic-r/Makefile.am, tests/test-bison-yylloc/Makefile.am, tests/test-bison-yylval/Makefile.am, tests/test-c-cpp-nr/Makefile.am, tests/test-c-cpp-r/Makefile.am, tests/test-header-nr/Makefile.am, tests/test-header-r/Makefile.am, tests/test-include-by-buffer/Makefile.am, tests/test-include-by-reentrant/Makefile.am, tests/test-lineno-nr/Makefile.am, tests/test-lineno-r/Makefile.am, tests/test-multiple-scanners-nr/Makefile.am, tests/test-multiple-scanners-r/Makefile.am, tests/test-prefix-nr/Makefile.am, tests/test-prefix-r/Makefile.am, tests/test-pthread/Makefile.am, tests/test-string-nr/Makefile.am, tests/test-string-r/Makefile.am, tests/test-yyextra/Makefile.am: Added -I . to compiler search path in tests (so it finds the generated parser.h). 2002-04-19 John Millaway * flexdef.h, misc.c, parse.y, sym.c: Applied 'const' to a few more char*, where appropriate. 2002-04-19 John Millaway * tests/TEMPLATE/Makefile.am, tests/test-array-nr/Makefile.am, tests/test-array-r/Makefile.am, tests/test-basic-nr/Makefile.am, tests/test-basic-r/Makefile.am, tests/test-bison-yylloc/Makefile.am, tests/test-bison-yylval/Makefile.am, tests/test-c-cpp-nr/Makefile.am, tests/test-c-cpp-r/Makefile.am, tests/test-header-nr/Makefile.am, tests/test-header-r/Makefile.am, tests/test-include-by-buffer/Makefile.am, tests/test-include-by-reentrant/Makefile.am, tests/test-lineno-nr/Makefile.am, tests/test-lineno-r/Makefile.am, tests/test-multiple-scanners-nr/Makefile.am, tests/test-multiple-scanners-r/Makefile.am, tests/test-prefix-nr/Makefile.am, tests/test-prefix-r/Makefile.am, tests/test-pthread/Makefile.am, tests/test-string-nr/Makefile.am, tests/test-string-r/Makefile.am, tests/test-yyextra/Makefile.am: Added top_builddir to -I path. Changed $(srcdir)/$(testname) to ./$(testname) in 'make test' rule. 2002-04-19 John Millaway * flexdef.h, gen.c, misc.c: Changed 'char[]' to 'const char*' wherever in conflicted with gettext. 2002-04-19 Will Estes * po/fr.po, po/sv.po: new files from translation after 2.5.6 beta release 2002-04-18 John Millaway * tests/test-lineno-r/Makefile.am: Fixed minor typo/cut and paste error. 2002-04-18 John Millaway * configure.in: Added yylineno test. 2002-04-18 John Millaway * tests/Makefile.am: Added yylineno tests. 2002-04-18 John Millaway * tests/test-lineno-nr/.cvsignore, tests/test-lineno-nr/Makefile.am, tests/test-lineno-nr/scanner.l, tests/test-lineno-nr/test.input, tests/test-lineno-r/.cvsignore, tests/test-lineno-r/Makefile.am, tests/test-lineno-r/scanner.l, tests/test-lineno-r/test.input: Created yylineno tests. 2002-04-15 John Millaway * scanopt.c: Applied gettext macros to error messages from scanopt. 2002-04-15 John Millaway * buf.c, faq.texi, options.c, options.h, scanopt.c, scanopt.h: Changed copyright from Millaway to flex? U.S. Gov't? Regents of U. Cali.? Paxson? 2002-04-15 Will Estes * tests/test-bison-yylloc/Makefile.am, tests/test-header-nr/Makefile.am, tests/test-header-r/Makefile.am: we missed a few main.c files in the distribution 2002-04-15 Will Estes * TODO: a lot more work has happened to flex; note this by removing a number of TODO entries 2002-04-15 Will Estes * TODO: make sure all gettext modules use gettext translation facilities 2002-04-14 John Millaway * faq.texi: Converted faqs 34-41 to texinfo. 2002-04-14 John Millaway * Makefile.am, faq.texi, flex.texi: Added faq.texi to archive. Added faq.texi to flex_TEXINFOS macro in Makefile.am. flex.texi now includes faq.texi. 2002-04-13 John Millaway * flexdef.h: defined FLEX_EXIT macro to call longjmp on errors. 2002-04-13 John Millaway * main.c, misc.c: Replaced exit(2) calls with longjmps (in the form of FLEX_EXIT macro). Moved main() to flex_main() to allow flex to be called from a library. 2002-04-13 John Millaway * scanopt.c: Fixed minor typo in error message 2002-04-12 Will Estes * tests/test-header-nr/Makefile.am, tests/test-header-r/Makefile.am, tests/test-multiple-scanners-nr/Makefile.am, tests/test-multiple-scanners-r/Makefile.am, tests/test-pthread/Makefile.am, tests/test-string-nr/Makefile.am, tests/test-string-r/Makefile.am, tests/test-yyextra/Makefile.am: removed eroneous files listed in EXTRA_DIST 2002-04-12 Will Estes * tests/test-yyextra/.cvsignore: ignore Makefile.in 2002-04-12 Will Estes * tests/test-string-r/.cvsignore: it's Makefile.in, not makefile.in 2002-04-12 Will Estes * tests/test-yyextra/Makefile.am, tests/test-yyextra/Makefile.in: put test-yyextra under automake 2002-04-12 Will Estes * tests/test-string-r/Makefile.am, tests/test-string-r/Makefile.in: put test-string-r under automake 2002-04-12 Will Estes * tests/test-string-nr/.cvsignore, tests/test-string-r/.cvsignore: we can ignore Makefile.in 2002-04-12 Will Estes * tests/test-string-nr/Makefile.am, tests/test-string-nr/Makefile.in: put test-string-nr under automake 2002-04-12 Will Estes * tests/test-pthread/.cvsignore: ignore Makefile.in 2002-04-12 Will Estes * tests/test-pthread/Makefile.am, tests/test-pthread/Makefile.in: put test-pthread under automake 2002-04-12 Will Estes * tests/test-prefix-r/Makefile.am, tests/test-prefix-r/Makefile.in: put test-prefix-r under automake 2002-04-12 Will Estes * tests/test-prefix-nr/.cvsignore, tests/test-prefix-r/.cvsignore: we can ignore Makefile.in 2002-04-12 Will Estes * tests/test-prefix-nr/Makefile.am, tests/test-prefix-nr/Makefile.in: put test-prefix-nr under automake 2002-04-12 Will Estes * tests/test-multiple-scanners-r/Makefile.am, tests/test-multiple-scanners-r/Makefile.in: put test-multiple-scanners-r under automake 2002-04-12 Will Estes * tests/test-multiple-scanners-nr/.cvsignore, tests/test-multiple-scanners-r/.cvsignore: we can ignore Makefile.in now 2002-04-12 Will Estes * tests/test-multiple-scanners-nr/Makefile.am, tests/test-multiple-scanners-nr/Makefile.in: put test-multiple-scanners-nr under automake 2002-04-11 Will Estes * tests/test-c-cpp-nr/Makefile.am, tests/test-c-cpp-r/Makefile.am: we didn't need parser.y 2002-04-11 Will Estes * TODO: work done on the test suite; remove relevant entries from TODO 2002-04-10 Will Estes * tests/test-include-by-reentrant/.cvsignore, tests/test-include-by-reentrant/Makefile.am, tests/test-include-by-reentrant/Makefile.in: put test-include-by-reentrant under automake 2002-04-09 Will Estes * tests/test-include-by-buffer/.cvsignore: we have a Makefile.in which we need to ignore 2002-04-09 Will Estes * tests/test-include-by-buffer/Makefile.am, tests/test-include-by-buffer/Makefile.in: test-include-by-buffer now under automake control 2002-04-09 Will Estes * tests/TEMPLATE/Makefile.am: and we want LFLAGS in the rule to make scanner.c as well 2002-04-09 Will Estes * tests/test-header-r/.cvsignore, tests/test-header-r/Makefile.am, tests/test-header-r/Makefile.in: put test-header-r under automake 2002-04-09 Will Estes * tests/test-header-nr/.cvsignore: we now generate a Makefile.in from automake; cvs should ignore it 2002-04-09 Will Estes * tests/test-header-nr/Makefile.am: add dependencies for main.o and scaner.h 2002-04-09 Will Estes * tests/TEMPLATE/Makefile.am: We may want to have LFLAGS readily available 2002-04-09 Will Estes * tests/test-header-nr/Makefile.am, tests/test-header-nr/Makefile.in: put test-header-nr under automake 2002-04-09 Will Estes * tests/TEMPLATE/Makefile.am: oops, we need to clean objects too 2002-04-09 Will Estes * tests/TEMPLATE/Makefile.am, tests/test-array-nr/Makefile.am, tests/test-array-r/Makefile.am, tests/test-basic-nr/Makefile.am, tests/test-basic-r/Makefile.am, tests/test-bison-yylloc/Makefile.am, tests/test-bison-yylval/Makefile.am, tests/test-c-cpp-nr/Makefile.am, tests/test-c-cpp-r/Makefile.am: now that config.h lives in the top-level directory, we need to tell the testsuite 2002-04-08 Will Estes * tests/test-array-nr/.cvsignore, tests/test-array-r/.cvsignore, tests/test-basic-nr/.cvsignore, tests/test-basic-r/.cvsignore, tests/test-bison-yylval/.cvsignore, tests/test-c-cpp-nr/.cvsignore, tests/test-c-cpp-r/.cvsignore: we can ignore some Makefile.in 2002-04-08 Will Estes * configure.in, tests/TEMPLATE/Makefile.am: only one config file header apparently; this will have consequences in the test suite 2002-04-08 Will Estes * tests/test-bison-yylval/Makefile.am, tests/test-bison-yylval/Makefile.in: adding automake support 2002-04-08 Will Estes * tests/test-bison-yylloc/.cvsignore, tests/test-bison-yylloc/Makefile.am: tuned Makefile.am to build correctly; ignore Makefile.in now 2002-04-08 Will Estes * tests/configure.in: test suite changes 2002-04-08 Will Estes * autogen.sh, configure.in, tests/.cvsignore, tests/Makefile.am, tests/Makefile.in, tests/README, tests/TEMPLATE/.cvsignore, tests/TEMPLATE/Makefile.am, tests/TEMPLATE/Makefile.in, tests/configure.in, tests/create-test, tests/create-test.pl, tests/test-array-nr/Makefile.am, tests/test-array-nr/Makefile.in, tests/test-array-r/Makefile.am, tests/test-array-r/Makefile.in, tests/test-basic-nr/Makefile.am, tests/test-basic-nr/Makefile.in, tests/test-basic-r/Makefile.am, tests/test-basic-r/Makefile.in, tests/test-bison-yylloc/Makefile.am, tests/test-bison-yylloc/Makefile.in, tests/test-c-cpp-nr/Makefile.am, tests/test-c-cpp-nr/Makefile.in, tests/test-c-cpp-r/Makefile.am, tests/test-c-cpp-r/Makefile.in: test suite changes 2002-04-05 John Millaway * flex.texi: Corrected error in manual regarding return type for yy_scan_{string,buffer,bytes}. 2002-04-05 Will Estes * po/de.po: new german translations from the translation project 2002-04-03 Will Estes * po/es.po: new spanish translations 2002-04-01 Will Estes * Makefile.am: DIST_SUBDIRS: new variable. we can build flex with SUBDIRS and then build the distribution using DIST_SUBDIRS 2002-04-01 Will Estes * main.c: fix typo in comment 2002-03-31 John Millaway * main.c: Documented the header file kludge, (in anticipation of buffering Section 1.) 2002-03-31 John Millaway * flex.texi: Created appendix "Makefiles and Flex" in the manual. 2002-03-30 John Millaway * flex.texi: updating manual. 2002-03-29 Will Estes * po/POTFILES.in: we want parse.y, not parse.c 2002-03-29 John Millaway * flex.texi: Indexing the manual (75% done). 2002-03-29 Will Estes * Makefile.am: unlisted intermediate flex/yacc-created files 2002-03-29 Will Estes * TODO: millaway has done more work 2002-03-29 Will Estes * Makefile.am, configure.in: ok, one last touch up; users most likely wont have help2man so we need to insure that's ok 2002-03-29 Will Estes * Makefile.am: fine tune flex.1 some more 2002-03-29 Will Estes * Makefile.am, configure.in: generalize the manpage a bit and tell autofoo about help2man 2002-03-29 Will Estes * po/da.po: new danish from translation project robot 2002-03-28 John Millaway * flex.texi: Indexing the manual -- it's only half done. 2002-03-28 John Millaway * flex.texi: flex manual now uses automake's versioning info. 2002-03-28 John Millaway * README.cvs-snapshot: Mentioned requirements for gettext and help2man. 2002-03-28 John Millaway * Makefile.am, main.c: Output of `flex --version` now matches GNU coding standards. Makefile.am now uses `help2man` to generate flex.1 2002-03-27 Will Estes * TODO: millaway has done a lot on the TODO list; remove those items that he has take care of 2002-03-27 Will Estes * README.cvs-snapshot: edited millaway's initial draft 2002-03-27 John Millaway * README.cvs-snapshot: Created file. 2002-03-27 John Millaway * flex.texi: Fixed case of node names in flex.texi. 2002-03-24 Will Estes * TODO: lex- and yacc- generated files 2002-03-24 Will Estes * po/fr.po: new french 2002-03-18 Will Estes * NEWS: ending periods in news items removed; mention nounistd options 2002-03-18 Will Estes * po/sv.po: updated sweedish translations 2002-03-18 Will Estes * po/de.po: german translation 2002-03-18 John Millaway * flex.skl, flex.texi, main.c, options.c, options.h, scan.l: Removed CFront 1.2 -specific code from skeleton, because CFront now defines __cplusplus properly. Removed TurboC-specific code from skeleton. Skeleton now includes proper C++ standard headers. Relocated "unistd.h" code after user section 1 to allow user to overrid it. New option "nounistd" to suppress unistd.h from being included. 2002-03-15 Will Estes * po/tr.po: new turkish translation 2002-03-15 Will Estes * NEWS: mention included translations 2002-03-15 Will Estes * TODO: we've done the gettext thing, but sometime we should get 0.11.1 2002-03-15 Will Estes * po/ca.po: new catalan translation 2002-03-14 John Millaway * flex.texi: Added section on format of comments. 2002-03-14 John Millaway * flex.texi: Split format chapter into sections. 2002-03-14 John Millaway * flex.texi: Removed explicit pointers in node definitions. 2002-03-14 Will Estes * configure.in: unistd.h can be problematic 2002-03-14 Will Estes * tests/README: editing changes to README 2002-03-13 Will Estes * po/POTFILES.in: scan.l, not scan.c because gettext gets confused 2002-03-13 Will Estes * scan.l: gettext cruft 2002-03-13 Will Estes * tests/descriptions: separate out test descriptions 2002-03-13 Will Estes * po/LINGUAS: french and korean dont crash now 2002-03-12 Will Estes * po/fr.po, po/ko.po: remove duplicate messages as per advice from Jordi Mallach 2002-03-12 Will Estes * gettext.h: yes, more gettext cruft 2002-03-12 Will Estes * ABOUT-NLS, config.rpath, m4/codeset.m4, m4/gettext.m4, m4/glibc21.m4, m4/iconv.m4, m4/isc-posix.m4, m4/lcmessage.m4, m4/lib-ld.m4, m4/lib-link.m4, m4/lib-prefix.m4, m4/progtest.m4: this is gettext cruft 2002-03-12 Will Estes * NEWS: gettext and autofoo are now involved 2002-03-12 Will Estes * Makefile.am, autogen.sh, configure.in, flexdef.h, main.c: mostly, changes for gettext 2002-03-12 Will Estes * po/ca.po, po/da.po, po/es.po, po/ru.po, po/sv.po, po/tr.po: these sure change a lot 2002-03-12 Will Estes * TODO: note about cvs documentation 2002-03-12 Will Estes * po/LINGUAS: we now have turkish 2002-03-12 Will Estes * po/tr.po: updated translations, i think 2002-03-12 Will Estes * po/ca.po, po/da.po, po/es.po, po/fr.po, po/ko.po, po/ru.po, po/sv.po, po/tr.po: ok, maybe we do keep these things? 2002-03-12 Will Estes * README-alpha: README-alpha for those bad-hair days 2002-03-12 Will Estes * m4/.cvsignore, m4/Makefile.am: ok,now we kinda have a m4/ subdir for gettext 2002-03-12 Will Estes * po/.cvsignore, po/LINGUAS, po/Makevars, po/POTFILES.in, po/da.po, po/es.po, po/fr.po, po/ko.po, po/ru.po, po/sv.po: now, we have a po/ subdirectory for gettext. i hope you're happy 2002-03-12 Will Estes * po/ca.po: removing po files, maybe 2002-03-12 Will Estes * tests/.cvsignore: ignore autom4te.cache 2002-03-11 Will Estes * po/ca.po, po/da.po, po/es.po, po/fr.po, po/ko.po, po/ru.po, po/sv.po: po files from debian 2002-03-08 Will Estes * TODO: add several notes about tasks which need doing; create a new top-level entry for generic coding concerns (this is distinct from specific API or other such issues) 2002-03-06 Will Estes * README: eliminate to.do and faqs from the README file 2002-03-06 Will Estes * TODO: more notes on tests/ 2002-03-06 Will Estes * Makefile.am: remove subdirectories from EXTRA_DIST; add a SUBDIRS macro to handle examples/; clean up the dist-hook target 2002-03-06 Will Estes * configure.in: we want to generate Makefiles in some more subdirectories; automake will like this 2002-03-06 Will Estes * TODO: notes on subdirectories 2002-03-05 Will Estes * examples/.cvsignore, examples/Makefile.am: now examples/ fits into automake 2002-03-05 Will Estes * examples/fastwc/.cvsignore, examples/fastwc/Makefile.am: examples/fastwc now fits into automake 2002-03-05 Will Estes * examples/manual/.cvsignore, examples/manual/Makefile.am, examples/manual/Makefile.examples, examples/manual/README: examples/manual directory now fits into automake 2002-03-05 Will Estes * examples/manual/Makefile: renamed Makefile to Makefile.examples for automake's sake 2002-03-04 Will Estes * Makefile.am: add parse.c and scan.c to built_sources 2002-02-24 John Millaway * Makefile.am: Removed CVS-specific code from 'dist-hook' target so anybody with a copy of the tree can build a dist. 2002-02-22 John Millaway * tests/Makefile.in: Converted test script to portable /bin/sh. 2002-02-22 John Millaway * tests/test-bison-yylloc/Makefile.in: Added some spaces in shell scripts for portability. 2002-02-22 John Millaway * tests/create-test.pl: Fixed #! line for portability. 2002-02-22 John Millaway * tests/test-bison-yylloc/Makefile.in: Fixed return status code on bison-lloc test. 2002-02-21 John Millaway * tests/create-test.pl: Added script to auto-create tests. Probably overkill. 2002-02-21 John Millaway * flex.skl: Fixed C++ #ifdef problem. Removed mistyped __CPLUSPLUS macro. Removed THROW_NIL. Not sure where it came from in the first place. 2002-02-21 John Millaway * tests/README, tests/TEMPLATE/Makefile.in, tests/configure.in, tests/test-c-cpp-nr/.cvsignore, tests/test-c-cpp-nr/Makefile.in, tests/test-c-cpp-nr/scanner.l, tests/test-c-cpp-nr/test.input, tests/test-c-cpp-r/.cvsignore, tests/test-c-cpp-r/Makefile.in, tests/test-c-cpp-r/scanner.l, tests/test-c-cpp-r/test.input: Added test-c-cpp-nr and test-c-cpp-r. 2002-02-16 John Millaway * flex.skl: Added missing #endif. 2002-02-07 Will Estes * tests/TEMPLATE/.cvsignore, tests/test-array-nr/.cvsignore, tests/test-array-r/.cvsignore, tests/test-basic-nr/.cvsignore, tests/test-basic-r/.cvsignore, tests/test-bison-yylloc/.cvsignore, tests/test-bison-yylval/.cvsignore, tests/test-header-nr/.cvsignore, tests/test-header-r/.cvsignore, tests/test-include-by-buffer/.cvsignore, tests/test-include-by-reentrant/.cvsignore, tests/test-multiple-scanners-nr/.cvsignore, tests/test-multiple-scanners-r/.cvsignore, tests/test-prefix-nr/.cvsignore, tests/test-prefix-r/.cvsignore, tests/test-pthread/.cvsignore, tests/test-string-nr/.cvsignore, tests/test-string-r/.cvsignore, tests/test-yyextra/.cvsignore: add OUTPUT to .cvsignore files in test directories; it's also in the template directory 2002-02-06 Will Estes * gen.c: fix interrupted reads and freads; from the debian package maintainer 2002-02-06 Will Estes * flex.texi, flexdef.h, main.c, nfa.c: support large flex tables; from debian package maintainer 2002-01-29 Will Estes * tests/configure.in: add more output files to account for new tests 2002-01-03 Will Estes * tests/test-array-nr/.cvsignore, tests/test-array-nr/Makefile.in, tests/test-array-nr/scanner.l, tests/test-array-nr/test.input: add this test 2002-01-03 Will Estes * tests/test-array-r/.cvsignore, tests/test-array-r/Makefile.in, tests/test-array-r/scanner.l, tests/test-array-r/test.input: add this test suite 2001-11-20 Will Estes * flex.skl, main.c: millaway: Fixed yytext_ptr when using %array in reentrant scanner 2001-11-20 Will Estes * buf.c: oops, forgot this one line 2001-11-14 Will Estes * tests/test-header-r/.cvsignore, tests/test-header-r/Makefile.in, tests/test-header-r/main.c, tests/test-header-r/scanner.l, tests/test-header-r/test.input: and more fallout 2001-11-14 Will Estes * TODO, flex.skl, flex.texi, flexdef.h, main.c, misc.c, tests/README, tests/TEMPLATE/Makefile.in, tests/configure.in, tests/test-basic-r/scanner.l, tests/test-bison-yylloc/.cvsignore, tests/test-bison-yylloc/Makefile.in, tests/test-bison-yylloc/parser.y, tests/test-bison-yylloc/scanner.l, tests/test-bison-yylval/.cvsignore, tests/test-bison-yylval/Makefile.in, tests/test-bison-yylval/parser.y, tests/test-bison-yylval/scanner.l, tests/test-include-by-reentrant/scanner.l, tests/test-prefix-r/scanner.l, tests/test-pthread/scanner.l, tests/test-string-r/scanner.l, tests/test-yyextra/scanner.l: more from the same batch 2001-11-14 Will Estes * tests/test-bison-yylloc/main.c, tests/test-bison-yylval/main.c, tests/test-header-nr/.cvsignore, tests/test-header-nr/Makefile.in, tests/test-header-nr/main.c, tests/test-header-nr/scanner.l, tests/test-header-nr/test.input, tests/test-multiple-scanners-nr/.cvsignore, tests/test-multiple-scanners-nr/Makefile.in, tests/test-multiple-scanners-nr/main.c, tests/test-multiple-scanners-nr/scanner-1.l, tests/test-multiple-scanners-nr/scanner-2.l, tests/test-multiple-scanners-r/.cvsignore, tests/test-multiple-scanners-r/Makefile.in, tests/test-multiple-scanners-r/main.c, tests/test-multiple-scanners-r/scanner-1.l, tests/test-multiple-scanners-r/scanner-2.l: a big batch from millaway 2001-10-26 Will Estes * NEWS: now NEWS has forgotten about the _r variables 2001-10-26 Will Estes * flex.skl, flex.texi, gen.c, main.c, tests/test-bison-yylloc/scanner.l, tests/test-bison-yylval/scanner.l, tests/test-include-by-reentrant/scanner.l, tests/test-prefix-nr/scanner.l, tests/test-pthread/scanner.l, tests/test-string-r/scanner.l, tests/test-yyextra/scanner.l: millaway simplified the reentrant api; here's the result 2001-10-23 Will Estes * main.c, options.c, options.h: more from millaway 2001-10-22 Will Estes * main.c, options.c, options.h: the last checkin was broken; millaway fixed it 2001-10-22 Will Estes * flex.skl, flex.texi, gen.c, main.c, misc.c, options.h, scan.l, scanopt.c, tests/README, tests/configure.in: phew, millaway's latest batch 2001-10-21 Will Estes * flex.skl: flex.skl should come up in C mode 2001-10-21 Will Estes * flex.skl: apparently, isatty and c++ need help getting along (from octave) 2001-10-19 Will Estes * NEWS: document new options and new option handling 2001-10-19 Will Estes * TODO: tell emacs that TODO is a text/outline mode file 2001-10-19 Will Estes * TODO: we have new long options; we need to document that 2001-10-19 Will Estes * NEWS: tell emacs that NEWS is text/outline mode 2001-10-19 Will Estes * flex.skl: oops, lost a line somewhere in the merge process on millaway's work 2001-10-17 Will Estes * Makefile.am, buf.c, flex.skl, flex.texi, flexdef.h, main.c, misc.c, options.c, options.h, parse.y, scan.l, scanopt.c, scanopt.h: merge latest batch of millaway's changes 2001-09-22 Will Estes * main.c: Fixed typo in options display 2001-09-20 Will Estes * main.c: reentrant and non-reentrant scanners share the same yywrap MACRO. millaway 2001-09-20 Will Estes * TODO: clarify item on comments in lexical files 2001-09-20 Will Estes * NEWS, scan.l: now flex recognizes \r as an eol character 2001-09-20 Will Estes * Makefile.am: specify cvsroot so automake distcheck works 2001-09-19 Will Estes * flex.texi: tex has lost its mind; we remove parentheses to compensate 2001-09-19 Will Estes * NEWS: now that c++ is better supported, let's mention it as a news item 2001-09-19 Will Estes * examples/fastwc/wc1.l, examples/fastwc/wc2.l, examples/fastwc/wc3.l, examples/fastwc/wc4.l, examples/fastwc/wc5.l, flex.skl, main.c: commit the backwash from the branch merges 2001-09-19 Will Estes * FlexLexer.h, examples/testxxLexer.l, flex.skl: made preliminary c++ fixes; the intent is to make it work with recent c++ compilers 2001-08-26 Will Estes * main.c: remove argv_fixup; fix typo in error message; changes from millaway's branch 2001-08-24 Will Estes * NEWS: mention no more c++ comments in c scanners 2001-08-21 John Millaway * flex.skl: Changed // comments to /* */ comments in skeleton. 2001-08-19 John Millaway * flex.texi: Changed @var to @code everywhere. 2001-08-16 Will Estes * to.do/flex.rmail: more mail 2001-08-16 Will Estes * TODO: the manual now has its own section; we're not adding comments either 2001-08-04 John Millaway * tests/Makefile.in, tests/README, tests/TEMPLATE/Makefile.in, tests/test-basic-nr/Makefile.in, tests/test-basic-r/Makefile.in, tests/test-bison-yylloc/Makefile.in, tests/test-bison-yylval/Makefile.in, tests/test-include-by-buffer/Makefile.in, tests/test-include-by-reentrant/Makefile.in, tests/test-prefix-nr/Makefile.in, tests/test-prefix-r/Makefile.in, tests/test-pthread/Makefile.in, tests/test-string-nr/Makefile.in, tests/test-string-r/Makefile.in, tests/test-yyextra/Makefile.in: Cleaned up the output of the tests. 2001-08-03 Will Estes * TODO: note jason's thoughts on having a manpage 2001-08-03 Will Estes * TODO: note millaway's assignment and tests to be under flex license 2001-08-01 John Millaway * tests/test-bison-yylval/scanner.l: Fixed semantics of test (the success or failure of this test should be unaffected by this change.) 2001-08-01 Will Estes * autogen.sh: fake automake into believing that ChangeLog already exists 2001-08-01 Will Estes * Makefile.am: millaway needs to be covered in the ChangeLog 2001-08-01 Will Estes * version.h: automake is supplying version info now so we just pick it up 2001-08-01 Will Estes * flex.texi: forgot braces on @copyright 2001-08-01 John Millaway * flex.skl: Added missing argument to yy_flex_free. 2001-08-01 Will Estes * AUTHORS: john millaway wrote the reentrant C support 2001-08-01 Will Estes * flex.texi: add license node to the manual 2001-08-01 Will Estes * TODO: c++ ideas 2001-07-31 Will Estes * parse.y: error messages will now show up the way that emacs likes them 2001-07-31 Will Estes * Makefile.am: oops, left in an extra backslash 2001-07-31 Will Estes * TODO: flex.texi is here; clarify tests/ rewrite issue 2001-07-31 Will Estes * NEWS: hey, we have texinfo, not man 2001-07-31 Will Estes * flex.1: no more manpage 2001-07-31 Will Estes * Makefile.am: remove flex.1 and rewrite the dist-hook so that we pick up a couple more directories 2001-07-31 Will Estes * flex.texi: the namual now compiles; hurray 2001-07-31 Will Estes * Makefile.am: first attempt at including the tests/ directory via automake, dist-hook target added 2001-07-31 Will Estes * tests/.cvsignore: ignore config.cache in tests/ directory 2001-07-31 Will Estes * Makefile.am: automake groks the ChangeLog now so we don't have to remind the maintainer to remake it 2001-07-30 Will Estes * flex.texi: more corrections to the manual; the end is in site 2001-07-30 Will Estes * TODO: auto-generated backup? 2001-07-27 Will Estes * flex.texi: today's tinkering on the manual 2001-07-27 Will Estes * Makefile.am: if we want flex.1 we have to say so in EXTRA_DIST 2001-07-27 Will Estes * TODO: note future issues with flex.texi 2001-07-27 Will Estes * Makefile.am: include flex.1 as it's the only working documentation for now 2001-07-27 Will Estes * Makefile.am: rearrange to work with automake on building the ChangeLog 2001-07-27 Will Estes * scan.l: automake is unhappy if we specify the outfile 2001-07-26 Will Estes * flex.texi: more conversions/corrections 2001-07-26 Will Estes * README: we removed misc/ so we don't mention it any more 2001-07-25 Will Estes * flex.texi: begin the manual conversion to texinfo; yes, it's broken right now 2001-07-25 Will Estes * AUTHORS, THANKS: copy in manual author and thanks info 2001-07-25 Will Estes * Makefile.am: how to fake the ChangeLog into showing up in the distribution 2001-07-25 Will Estes * Makefile.am: add YFLAGS so parse.h gets made 2001-07-24 Will Estes * examples/fastwc/README, examples/fastwc/mywc.c, examples/fastwc/wc1.l, examples/fastwc/wc2.l, examples/fastwc/wc3.l, examples/fastwc/wc4.l, examples/fastwc/wc5.l: re-add these files 2001-07-24 Will Estes * TODO: reflect recent doings 2001-07-24 Will Estes * Makefile.in: what with automake, we don't need Makefile.in any more 2001-07-24 Will Estes * configure.in: more rearranging for automake 2001-07-24 Will Estes * to.do/flex.rmail: more mail came in 2001-07-24 Will Estes * autogen.sh: adjust to automake's idea of the world 2001-07-24 Will Estes * Makefile.am: add Vern's misc dependencies; noinst_SCRIPTS was broken?; list a few last files to be included in the distribution 2001-07-24 Will Estes * NEWS: rearrange for better order; add automake support as a news item 2001-07-24 Will Estes * Makefile.am: copyright notice on Makefile.am; document some -D switches (are they still usable?) 2001-07-24 Will Estes * TODO: add lex-replacement issue 2001-07-24 Will Estes * Makefile.am: add EXTRA_DIST 2001-07-23 Will Estes * autogen.sh: we need to do the same thing in each directory 2001-07-23 Will Estes * configure.in: introduce automake into the macro calls 2001-07-23 Will Estes * Makefile.am: add AUTOMAKE_OPTIONS, info_TEXINFOS, include_HEADERS, noinst_HEADERS; it's libfl.a, not libflex.a 2001-07-23 Will Estes * Makefile.am: bin_PROGRAMS and lib_LIBRARIES 2001-07-23 Will Estes * to.do/streams.mail: streams.mail has moved here 2001-07-23 Will Estes * TODO: add xref for teximanual 2001-07-19 Will Estes * flex.1: include typo/punctuation fixes from a patch submitted by noon@cote-dazur.com (Fabrice Bauzac) 2001-07-17 Will Estes * TODO: we want gettext 2001-06-24 Will Estes * flex.skl: include c++ STD fixes from quanstro@quanstro.net 2001-06-24 Will Estes * flex.skl, gen.c: change some int types to size_t as per FreeBSD 28364 from avn@any.ru 2001-06-24 Will Estes * TODO: remove parse.[ch] from make clean target; repackage distribution (not rework) 2001-06-19 Will Estes * TODO: add memory api and reworking of flex.skl reworking 2001-06-18 Will Estes * flex.skl: remove extraneous notice from flex.skl 2001-06-18 Will Estes * flex.skl: patch memory leak as per millaway 2001-06-17 Will Estes * to.do/flex.rmail: add vern's ok for copyright/license changes and john's answer on line offsets 2001-06-17 Will Estes * TODO: remove creation of .cvsignore files (it's done); add other notes about the test suite 2001-06-17 Will Estes * tests/TEMPLATE/.cvsignore, tests/test-basic-nr/.cvsignore, tests/test-basic-r/.cvsignore, tests/test-bison-yylloc/.cvsignore, tests/test-bison-yylval/.cvsignore, tests/test-include-by-buffer/.cvsignore, tests/test-include-by-reentrant/.cvsignore, tests/test-prefix-nr/.cvsignore, tests/test-prefix-r/.cvsignore, tests/test-pthread/.cvsignore, tests/test-string-nr/.cvsignore, tests/test-string-r/.cvsignore, tests/test-yyextra/.cvsignore: adding .cvsignore files for existing tests/ subdirectories 2001-06-17 Will Estes * tests/README: reformat, say to add a description to this file and mention what to do re .cvsignore 2001-06-17 Will Estes * tests/TEMPLATE/cvsignore: create template for .cvsignore 2001-06-17 Will Estes * TODO: reorganize for logical reasons; test suite now seems to run out of the box 2001-06-17 Will Estes * tests/.cvsignore: we dont want the Makefile either 2001-06-17 Will Estes * tests/test-prefix-nr/test.input, tests/test-prefix-r/test.input: test.input was supposed to be here 2001-06-17 Will Estes * tests/.cvsignore: add autoconf legacy files to be ignored 2001-06-17 Will Estes * autogen.sh: clarify usage instructions; prepare tests/ as well 2001-06-17 Will Estes * tests/.cvsignore: . cvsignore for tests/ subdirectory 2001-06-17 Will Estes * FlexLexer.h: tell emacs that FlexLexer.h is c++ 2001-06-17 Will Estes * scan.l: tell emacs scan.l is in C mode 2001-06-17 Will Estes * flex.skl: added punctuation 2001-06-17 Will Estes * FlexLexer.h, Makefile.in, README, RoadMap, autogen.sh, ccl.c, configure.in, dfa.c, ecs.c, flex.1, flex.skl, flexdef.h, gen.c, libmain.c, libyywrap.c, main.c, misc.c, mkskel.sh, nfa.c, parse.y, scan.l, sym.c, tblcmp.c, yylex.c: change copyright/license notices as per Vern's response to Theo 2001-06-15 Will Estes * to.do/flex.rmail: add bill fenlason's emails 2001-06-15 Will Estes * COPYING: make changes as per Theo De Raadt; remove tabs 2001-06-08 Will Estes * flex.skl: save errno as per Theo de Raadt 2001-06-07 Will Estes * flex.1: correct hyphenation as per openbsd tree 2001-06-05 Will Estes * Makefile.in, configure.in: change references to TESTS/ to tests/ to account for the directory name changes 2001-05-27 Will Estes * flex.skl, gen.c: commit john millaway's YY_G wrapper corrections 2001-05-21 Will Estes * tests/Makefile.in: remove || exit calls 2001-05-21 Will Estes * gen.c: complete john millaway's reentrant patch 2001-05-21 Will Estes * to.do/flex.rmail: more flex messages in the queue 2001-05-18 Will Estes * flex.skl, flexdef.h, gen.c, main.c, nfa.c, scan.l: john millaway's reentrancy patch 2001-05-18 Will Estes * tests/Makefile.in: remove || exit from testing loop 2001-05-18 Will Estes * Makefile.in: tell make about the tests directory and its associated targets 2001-05-18 Will Estes * TODO: rethink the todo list 2001-05-18 Will Estes * flex.1: describe reentrant api changes 2001-05-18 Will Estes * TODO: mention work needed for tests/ 2001-05-18 Will Estes * configure.in: tell auto* about the test directory 2001-05-18 Will Estes * README: make punctuation uniform, mention the new tests/ directory 2001-05-18 Will Estes * NEWS: reformat items; cut out old items and move them to ONEWS 2001-05-18 Will Estes * ONEWS: move old NEWS items to ONEWS 2001-05-18 Will Estes * tests/Makefile.in, tests/README, tests/TEMPLATE/Makefile.in, tests/TEMPLATE/parser.y, tests/TEMPLATE/scanner.l, tests/TEMPLATE/test.input, tests/configure.in, tests/test-basic-nr/Makefile.in, tests/test-basic-nr/scanner.l, tests/test-basic-nr/test.input, tests/test-basic-r/Makefile.in, tests/test-basic-r/scanner.l, tests/test-basic-r/test.input, tests/test-bison-yylloc/Makefile.in, tests/test-bison-yylloc/parser.y, tests/test-bison-yylloc/scanner.l, tests/test-bison-yylloc/test.input, tests/test-bison-yylval/Makefile.in, tests/test-bison-yylval/parser.y, tests/test-bison-yylval/scanner.l, tests/test-bison-yylval/test.input, tests/test-include-by-buffer/Makefile.in, tests/test-include-by-buffer/scanner.l, tests/test-include-by-buffer/test-1.input, tests/test-include-by-buffer/test-2.input, tests/test-include-by-buffer/test-3.input, tests/test-include-by-reentrant/Makefile.in, tests/test-include-by-reentrant/scanner.l, tests/test-include-by-reentrant/test-1.input, tests/test-include-by-reentrant/test-2.input, tests/test-include-by-reentrant/test-3.input, tests/test-prefix-nr/Makefile.in, tests/test-prefix-nr/README, tests/test-prefix-nr/scanner.l, tests/test-prefix-r/Makefile.in, tests/test-prefix-r/README, tests/test-prefix-r/scanner.l, tests/test-pthread/Makefile.in, tests/test-pthread/scanner.l, tests/test-pthread/test-1.input, tests/test-pthread/test-2.input, tests/test-pthread/test-3.input, tests/test-pthread/test-4.input, tests/test-pthread/test-5.input, tests/test-string-nr/Makefile.in, tests/test-string-nr/scanner.l, tests/test-string-r/Makefile.in, tests/test-string-r/scanner.l, tests/test-yyextra/Makefile.in, tests/test-yyextra/scanner.l, tests/test-yyextra/test.input: add john millaway's test directory 2001-05-04 Will Estes * to.do/flex.rmail: more mail in flex.rmail 2001-05-03 Will Estes * FlexLexer.h, ccl.c, dfa.c, ecs.c, flex.skl, flexdef.h, gen.c, libmain.c, libyywrap.c, main.c, misc.c, nfa.c, parse.y, scan.l, sym.c, tblcmp.c, yylex.c: remove extraneous rcs keywords 2001-05-03 Will Estes * README: mention RoadMap 2001-05-01 Will Estes * examples/README, examples/debflex.awk, examples/manual/ChangeLog, examples/manual/Makefile, examples/manual/README, examples/manual/cat.lex, examples/manual/dates.lex, examples/manual/datetest.dat, examples/manual/eof_rules.lex, examples/manual/eof_test01.txt, examples/manual/eof_test02.txt, examples/manual/eof_test03.txt, examples/manual/expr.lex, examples/manual/expr.y, examples/manual/front.lex, examples/manual/front.y, examples/manual/j2t.lex, examples/manual/myname.lex, examples/manual/myname.txt, examples/manual/myname2.lex, examples/manual/numbers.lex, examples/manual/pas_include.lex, examples/manual/pascal.lex, examples/manual/reject.lex, examples/manual/replace.lex, examples/manual/string1.lex, examples/manual/string2.lex, examples/manual/strtest.dat, examples/manual/unput.lex, examples/manual/user_act.lex, examples/manual/userinit.lex, examples/manual/wc.lex, examples/manual/yymore.lex, examples/manual/yymore2.lex, examples/manual/yymoretest.dat, examples/testxxLexer.l, to.do/README, to.do/Wilhelms.todo, to.do/Wish-List, to.do/flex.rmail, to.do/unicode/FlexLexer.h, to.do/unicode/ccl.c, to.do/unicode/changes.txt, to.do/unicode/ecs.c, to.do/unicode/flex.1, to.do/unicode/flex.skl, to.do/unicode/flexdef.h, to.do/unicode/gen.c, to.do/unicode/main.c, to.do/unicode/misc.c, to.do/unicode/scan.l, to.do/unicode/tblcmp.c: adding the rest of vern's files 2001-05-01 Will Estes * README: mention misc/ directory 2001-05-01 Will Estes * version.h: version is 2.5.5b 2001-05-01 Will Estes * Makefile.in: remove header from top; add rule to generate initscan.c just in case 2001-05-01 Will Estes * configure.in: dont check for initscan.c; check for scan.l instead 2001-05-01 Will Estes * RoadMap: list of source files 2001-05-01 Will Estes * README: rewrite README to reflect changes in layout of directories 2001-05-01 Will Estes * AUTHORS, THANKS, TODO: initial attempt at the files 2001-05-01 Will Estes * COPYING: add 2001 copyright notice 2001-05-01 Will Estes * autogen.sh: initial attempt at a bootstrap script for developers 2001-05-01 Will Estes * flex.texi: texinfo manual, old contributed version 2000-08-21 Vern Paxson * flex.1: fixed some bugs in examples of [[:...:]] ccls 2000-08-21 Vern Paxson * version.h: version shipped to Dick King 2000-08-21 Vern Paxson * flex.skl: explicit include of iostream.h 2000-08-21 Vern Paxson * scan.l: if a newline is seen in , assume it terminates the string. 2000-08-21 Vern Paxson * flexdef.h, sym.c: moved symbol table definitions from flexdef.h into sym.c 2000-08-21 Vern Paxson * dfa.c: fixed underallocation for accset 1997-06-27 Vern Paxson * COPYING: revised for rms 1997-06-23 Vern Paxson * flex.skl: fixed memory leak 1997-06-23 Vern Paxson * flex.1: input() doesn't destroy yytext 1997-06-23 Vern Paxson * FlexLexer.h: wrapped with extern "C++" 1996-12-13 Vern Paxson * flex.skl: use delete [] for yy_state_buf 1996-10-29 Vern Paxson * flex.skl: fixed %option noinput 1996-10-29 Vern Paxson * flex.skl: free(char*) fix ... Sigh ... 1996-10-11 Vern Paxson * gen.c: bug fix for yymore()/yylineno interaction 1996-10-11 Vern Paxson * gen.c: fixed memory leak 1996-09-10 Vern Paxson * NEWS: release 2.5.4 1996-09-10 Vern Paxson * Makefile.in: more stuff for distclean 1996-09-10 Vern Paxson * flex.skl: "str" -> "yy_str" 1996-09-10 Vern Paxson * version.h: 2.5.4 1996-07-02 Vern Paxson * flex.skl: (attempted) fix for input() crossing a file boundary 1996-05-29 Vern Paxson * NEWS: don't do Acorn diffs 1996-05-29 Vern Paxson * NEWS: some minor additions for 2.5.3 1996-05-29 Vern Paxson * NEWS, version.h: 2.5.3 1996-05-25 Vern Paxson * flex.skl: initialize yy_more_offset etc. for yyFlexLexer class 1996-05-25 Vern Paxson * flex.skl: niggling cosmetic tweak 1996-05-25 Vern Paxson * flex.skl: bug fixes for yymore (especially with %array) 1996-05-25 Vern Paxson * gen.c: yymore + %array tweaks 1996-05-25 Vern Paxson * FlexLexer.h: added yy_{,prev_}more_offset 1996-05-25 Vern Paxson * main.c: removed decl of unused library function 1996-05-25 Vern Paxson * flex.skl: snapshot of cscope yymore fixes, prior to switching yymore-on-%array approach 1995-12-18 Vern Paxson * gen.c: don't stack states on NUL-transitions that are jams 1995-09-27 Vern Paxson * libmain.c: fixed re Esmond Pitt's ancient suggestion 1995-04-28 Vern Paxson * misc.c: ANSI C / Solaris tweak 1995-04-24 Vern Paxson * flex.1: credits 1995-04-24 Vern Paxson * NEWS: multiple FlexLexer.h includes 1995-04-24 Vern Paxson * FlexLexer.h: fix multiple inclusions 1995-04-24 Vern Paxson * scan.l: lint tweak 1995-04-24 Vern Paxson * flex.1: typo fixed 1995-04-24 Vern Paxson * flex.1: credits update 1995-04-24 Vern Paxson * flex.skl: (char*) cast for realloc 1995-04-24 Vern Paxson * NEWS: (char*) tweak 1995-04-21 Vern Paxson * NEWS: VMS update for 2.5.2 1995-04-21 Vern Paxson * Makefile.in: clarify when 8-bit scanners are created by default, vs. 7-bit 1995-04-21 Vern Paxson * parse.y: reworked alloca() chud, from Francois 1995-04-20 Vern Paxson * NEWS, version.h: 2.5.2 1995-04-20 Vern Paxson * flex.1: 2.5.2 update 1995-04-20 Vern Paxson * dfa.c, main.c: const -> yyconst 1995-04-20 Vern Paxson * Makefile.in: fixed some old libfl.a references 1995-04-20 Vern Paxson * Makefile.in: some (but not all) of Francois' tweaks 1995-04-20 Vern Paxson * configure.in: tweaks from Francois 1995-04-20 Vern Paxson * flex.skl: yy_delete_buffer allows nil buffer pointer 1995-04-20 Vern Paxson * main.c: do_stdinit now defaults to false 1995-04-20 Vern Paxson * FlexLexer.h: remove first default for yylex(new_in, new_out) 1995-04-20 Vern Paxson * flex.skl: rearrange some definitions; fix YY_NO_UNPUT 1995-04-20 Vern Paxson * parse.y: more alloca() bullshit 1995-04-20 Vern Paxson * misc.c: octal escape sequence must have just digits 0-7 1995-04-20 Vern Paxson * scan.l: '-' means stdin octal escape sequence must just be digits 0-7 1995-04-20 Vern Paxson * main.c: -- terminates options 1995-04-20 Vern Paxson * flexdef.h: added dataflush() prototype 1995-04-20 Vern Paxson * misc.c: move dataflush, otoi prototypes into flexdef.h 1995-04-20 Vern Paxson * flex.skl, gen.c: const -> yyconst 1995-04-20 Vern Paxson * gen.c: fixed bug in needing yy_cp for -Cf w/ backing up 1995-03-28 Vern Paxson * README, flex.1: Stan Adermann credit 1995-03-27 Vern Paxson * README: beta-tester update 1995-03-27 Vern Paxson * NEWS, version.h: 2.5.1 1995-03-27 Vern Paxson * flex.1: update date for 2.5.1 release, some feedbacker credits 1995-03-27 Vern Paxson * gen.c: fixed lint problem with declaring yy_cp unnecessarily 1995-03-27 Vern Paxson * dfa.c: {}'s around full-table initializations 1995-03-21 Vern Paxson * README: for version 2.5 1995-03-21 Vern Paxson * flex.1: added note regarding yylineno should be maintained on a per-buffer basis 1995-03-21 Vern Paxson * NEWS: new C++ member functions 1995-03-21 Vern Paxson * NEWS, flex.1: 2.5.0.8 update 1995-03-21 Vern Paxson * main.c: rename yylineno if -P 1995-03-20 Vern Paxson * flexdef.h: do_yylineno MARKER_DIFFERENCE depends on MAXIMUM_MNS 1995-03-20 Vern Paxson * Makefile.in: removed redundant skel.c from DISTFILES 1995-03-20 Vern Paxson * FlexLexer.h: debug(), setdebug(), lineno() 1995-03-20 Vern Paxson * flex.skl: %option yylineno support 1995-03-20 Vern Paxson * gen.c: read up to newline for interactive reads, rather than one char 1995-03-20 Vern Paxson * main.c, scan.l: added %option yylineno 1995-03-18 Vern Paxson * gen.c: added do_yylineno 1995-03-06 Vern Paxson * NEWS, flex.1: 2.5.0.7 1995-03-05 Vern Paxson * Makefile.in: realclean -> maintainer-clean 1995-03-05 Vern Paxson * flex.skl: Added yy_flush_buffer 1995-03-05 Vern Paxson * FlexLexer.h: added yy_flush_buffer 1995-03-05 Vern Paxson * main.c: prefix support for yy_flush_buffer 1995-03-05 Vern Paxson * parse.y: added %option yyclass 1995-03-05 Vern Paxson * flexdef.h, main.c, scan.l: added yyclass 1995-03-05 Vern Paxson * FlexLexer.h: Added switch_streams 1995-03-05 Vern Paxson * flex.skl: added switch_streams 1995-03-05 Vern Paxson * main.c: don't rename yy_flex_debug for C++ 1995-03-05 Vern Paxson * gen.c: yy_flex_debug extern only if not C++ 1995-03-05 Vern Paxson * FlexLexer.h: added yy_flex_debug member variable 1995-03-05 Vern Paxson * flex.skl: yyFlexLexer initialization of yy_flex_debug 1995-03-04 Vern Paxson * flexdef.h, main.c: VMS POSIX stuff 1995-03-04 Vern Paxson * flex.skl: moved position of yy_init = 0 1995-03-04 Vern Paxson * flex.skl: added YY_EXIT_FAILURE 1995-03-04 Vern Paxson * main.c: removed VMS-specific exit 1995-03-04 Vern Paxson * dfa.c, flexdef.h, gen.c, main.c, misc.c, nfa.c, scan.l, sym.c, yylex.c: internationalization aids 1995-03-04 Vern Paxson * main.c: do yy_flex_debug prefix for both C++ and C 1995-02-06 Vern Paxson * main.c: fixed program_name tweak again 1995-01-11 Vern Paxson * main.c: oops, fixed program_name tweak 1995-01-11 Vern Paxson * main.c: program_name is "flex" if argv[0] nil 1995-01-10 Vern Paxson * NEWS: 2.5.0.5 1995-01-10 Vern Paxson * flex.1: Documented YY_NUM_RULES 1995-01-10 Vern Paxson * Makefile.in: added formatted man page to MISC 1995-01-10 Vern Paxson * main.c: help messages to stdout 1995-01-09 Vern Paxson * gen.c: Added YY_NUM_RULES 1995-01-09 Vern Paxson * flex.skl: better fix for #pragma problem 1995-01-09 Vern Paxson * flexdef.h: better fix for #pragma portability problem 1995-01-09 Vern Paxson * misc.c: "# line" -> #line 1995-01-09 Vern Paxson * flex.skl, flexdef.h: comment out Turbo C #pragma's 1995-01-09 Vern Paxson * scan.l: reset linenum on new file 1995-01-09 Vern Paxson * flex.skl: isatty() extern 1995-01-09 Vern Paxson * NEWS, flex.1: 2.5.0.4 1995-01-09 Vern Paxson * main.c: long options, VMS tweaks 1995-01-09 Vern Paxson * Makefile.in: Added parse.c, parse.h for dist MISC directory 1995-01-09 Vern Paxson * flexdef.h: some "const" cleansing 1995-01-09 Vern Paxson * mkskel.sh: skel[] is now const 1995-01-09 Vern Paxson * misc.c: some const cleansing 1995-01-09 Vern Paxson * scan.l: #line in section 1 1995-01-05 Vern Paxson * sym.c: preen 1994-12-29 Vern Paxson * configure.in: config.h from conf.in 1994-12-29 Vern Paxson * flexdef.h: for VMS, delete -> remove 1994-12-29 Vern Paxson * Makefile.in: config.h.in -> conf.in rm config.h on distclean 1994-12-29 Vern Paxson * main.c: stdinit tweaks 1994-12-29 Vern Paxson * scan.l: added nostdinit 1994-12-28 Vern Paxson * NEWS: added MS-DOS note for 2.5.0.2 1994-12-28 Vern Paxson * flex.1: typos, tweaks 1994-12-28 Vern Paxson * Makefile.in: removed flexdoc 1994-12-28 Vern Paxson * flex.1: flexdoc/flex merge 1994-12-28 Vern Paxson * flex.1: typos 1994-12-28 Vern Paxson * NEWS: typo 1994-12-28 Vern Paxson * flex.1: 2.5 update 1994-12-28 Vern Paxson * NEWS: 2.5.0.2 1994-12-28 Vern Paxson * scan.l: fixed sense of %option main implying %option noyywrap 1994-12-28 Vern Paxson * flex.skl: YY_FLEX_{MAJOR,MINOR}_VERSION fixed bug in unput trashing yytext even with %array 1994-12-17 Vern Paxson * flex.1: prior to 2.5 update 1994-12-17 Vern Paxson * main.c: C++/-P fixes 1994-12-17 Vern Paxson * FlexLexer.h: -P fixes constructor, destructor moved to flex.skl 1994-12-17 Vern Paxson * flex.skl: YY_SKIP_YYWRAP yyFlexLexer constructor, destructor 1994-12-15 Vern Paxson * gen.c: formatting 1994-12-15 Vern Paxson * gen.c: fixed bug in adjusting yytext before backing up 1994-12-10 Vern Paxson * scan.l: switched scanner itself over to [:xxx:] 1994-12-10 Vern Paxson * flex.skl: added YY_FLEX_VERSION 1994-12-10 Vern Paxson * scan.l: Fixed CCL-match pattern for [:whatever:] 1994-12-10 Vern Paxson * parse.y: treat [:upper:] as [:lower:] if -i 1994-12-06 Vern Paxson * NEWS: 2.5.0.1 1994-12-06 Vern Paxson * flex.skl, gen.c: input() maintains BOL 1994-12-06 Vern Paxson * flex.skl: check size of buffer in yy_scan_buffer 1994-12-06 Vern Paxson * flex.skl: added %option main, fixed missing %* 1994-12-06 Vern Paxson * parse.y: added ccl exprs 1994-12-06 Vern Paxson * scan.l: added ccl exprs, %option main 1994-12-06 Vern Paxson * yylex.c: added %options, ccl exprs 1994-12-05 Vern Paxson * misc.c: undid previous change 1994-12-04 Vern Paxson * Makefile.in: Makefile.in from srcdir 1994-12-04 Vern Paxson * Makefile.in: added skel.c to DISTFILES 1994-12-04 Vern Paxson * flex.skl: added YYSTATE alias 1994-12-04 Vern Paxson * scan.l: NL is now \r?\n 1994-12-04 Vern Paxson * gen.c: use cerr for C++ diagnostics 1994-12-03 Vern Paxson * flex.skl: undid YY_UNIX_NEWLINE 1994-12-03 Vern Paxson * flexdef.h: STDC_HEADERS to check for stdlib 1994-12-03 Vern Paxson * configure.in: AC_STDC_HEADERS -> AC_HEADER_STDC 1994-12-03 Vern Paxson * misc.c: \n -> '\012' 1994-12-03 Vern Paxson * flex.skl: Added YY_UNIX_NEWLINE 1994-12-03 Vern Paxson * flex.skl: BOL changes 1994-12-03 Vern Paxson * dfa.c: fixed bug with caseins but not ecs 1994-12-03 Vern Paxson * gen.c: BOL changes some casts for Turbo C 1994-12-03 Vern Paxson * main.c: messages identify filenames 1994-12-03 Vern Paxson * misc.c: Increase slowly if realloc double overflows 1994-12-03 Vern Paxson * nfa.c: YY_RULE_SETUP 1994-12-03 Vern Paxson * scan.l: Added yy_XX_state %option's Added yy_set_bol 1994-11-29 Vern Paxson * Makefile.in: don't remove ~ files 1994-11-24 Vern Paxson * Makefile.in: get CFLAGS from autoconf 1994-11-24 Vern Paxson * dfa.c, flex.skl, flexdef.h, gen.c, misc.c, parse.y, scan.l, sym.c: Brian Madsen's tweaks for Borland 1994-11-24 Vern Paxson * version.h: 2.5.0 1994-11-24 Vern Paxson * flexdef.h: Added do_stdinit 1994-11-24 Vern Paxson * FlexLexer.h: Added yy_delete_buffer() in destructor 1994-11-24 Vern Paxson * flex.skl: Added yy_set_interactive, YY_ALWAYS_INTERACTIVE, YY_NEVER_INTERACTIVE, YY_NO_INPUT, YY_NO_UNPUT, YY_NO_*_STATE 1994-11-24 Vern Paxson * main.c: Added do_stdinit, Think C hacks 1994-11-24 Vern Paxson * scan.l: Added %options for input, always-interactive, never-interactive, yy_scan_{buffer,bytes,string} 1994-11-05 Vern Paxson * flex.skl: size_t #ifdef's for not compiling some statics 1994-11-05 Vern Paxson * Makefile.in: $(FLEX) config.h 1994-11-05 Vern Paxson * configure.in: config.h, size_t, malloc.h, sys/types.h 1994-11-05 Vern Paxson * flexdef.h: config.h, size_t 1994-11-05 Vern Paxson * main.c: yywrap option, no stdin/out init for VMS, mundane tweaks 1994-11-05 Vern Paxson * parse.y: alloca, lint tweaks 1994-11-05 Vern Paxson * scan.l: %option yywrap size_t tweaks 1994-11-05 Vern Paxson * tblcmp.c: size_t tweaks 1994-11-05 Vern Paxson * misc.c: size_t, STDC tweaks 1994-11-05 Vern Paxson * flex.skl: Added yy_scan_{buffer,bytes,string}, plus tweaks 1994-10-12 Vern Paxson * flex.skl: made stack code conditional on "stack" option 1994-10-12 Vern Paxson * scan.l: added use of "stack" %option 1994-08-03 Vern Paxson * gen.c: Fixed fencepost in call to yy_flex_strncpy 1994-07-25 Vern Paxson * flex.skl: yy_eof_status -> yy_buffer_status 1994-07-25 Vern Paxson * flex.skl: yy_flex_strcpy -> yy_flex_strncpy minor prototype tweak 1994-07-25 Vern Paxson * gen.c: Bug fix for matching NUL's at end of token when interactive. yy_flex_strcpy -> yy_flex_strncpy 1994-07-25 Vern Paxson * nfa.c: No YY_USER_ACTION if continued action 1994-03-16 Vern Paxson * flex.skl: Added fix for 8-bit chars returned by input() 1994-03-16 Vern Paxson * flex.skl: Move definition of yy_flex_strcpy to come after #define of yytext_ptr 1994-01-08 Vern Paxson * mkskel.sh: flex.skel -> flex.skl 1994-01-08 Vern Paxson * mkskel.sh: Initial revision 1993-12-29 Vern Paxson * Makefile.in: Fixed scan.c target so "make" detects flex failure 1993-12-27 Vern Paxson * scan.l: Added %option's 1993-12-27 Vern Paxson * Makefile.in: Nuked FLEX_FLAGS that are now done using %option 1993-12-27 Vern Paxson * parse.y, scan.l: %option 1993-12-27 Vern Paxson * main.c: Reworked for %option 1993-12-27 Vern Paxson * flexdef.h: Added "unspecified", globals for %option 1993-12-27 Vern Paxson * sym.c: start condition #define's go to action file 1993-12-27 Vern Paxson * misc.c: Added action_define() 1993-12-27 Vern Paxson * scan.l: Minor consolidation using scon scopes etc 1993-12-27 Vern Paxson * scan.l: Modified to use scon scopes 1993-12-27 Vern Paxson * scan.l: indented rules 1993-12-26 Vern Paxson * parse.y: Added scon_stk stuff, format_warn 1993-12-26 Vern Paxson * flexdef.h: Added format_warn 1993-12-26 Vern Paxson * parse.y: Working checkpoint prior to adding { stuff 1993-12-26 Vern Paxson * flexdef.h, main.c: Added in_rule, deleted actvsc 1993-12-26 Vern Paxson * misc.c: Added doubling of '\'s in filenames 1993-12-26 Vern Paxson * scan.l: Added in_rule, doing_rule_action 1993-12-26 Vern Paxson * sym.c: Removed actvsc 1993-12-23 Vern Paxson * flex.1: -ooutput #line directives credits 1993-12-23 Vern Paxson * flex.skl: Fixsed sense of test for %array 1993-12-23 Vern Paxson * NEWS: 2.5.0 snapshot for Craig 1993-12-23 Vern Paxson * parse.y: Added beginnings of { ... } 1993-12-23 Vern Paxson * scan.l: Simplified scanning {}'s 1993-12-20 Vern Paxson * flexdef.h: Added 1993-12-17 Vern Paxson * flex.skl: prototypes for alloc/string routines 1993-12-17 Vern Paxson * flex.skl: alloc, string routines internal 1993-12-17 Vern Paxson * Makefile.in: Nuked lib{string,alloc}.c, added dependency of yylex.o on parse.h 1993-12-17 Vern Paxson * configure.in: Check for string.h 1993-12-17 Vern Paxson * flexdef.h: Use autoconf for string/strings.h yy_flex_XXX -> flex_XXX 1993-12-17 Vern Paxson * scan.l: Added flex_XXX -> yy_flex_XXX wrappers 1993-12-17 Vern Paxson * dfa.c, misc.c, sym.c: yy_flex_XXX -> flex_XXX 1993-12-17 Vern Paxson * yylex.c: No more WHITESPACE token 1993-12-16 Vern Paxson * FlexLexer.h, flex.skl: Added yy_top_state() 1993-12-16 Vern Paxson * scan.l: simplified comment-scanning using push/pop states 1993-12-16 Vern Paxson * parse.y: removed crufty WHITESPACE token, some uses of '\n' token 1993-12-15 Vern Paxson * FlexLexer.h: start stack, extern "C++" moved 1993-12-15 Vern Paxson * dfa.c: Bug fix for -CF 1993-12-15 Vern Paxson * flexdef.h, misc.c: alloc routines take unsigned 1993-12-15 Vern Paxson * flex.skl: start-state stacks, alloc routines take unsigned 1993-12-15 Vern Paxson * flexdef.h, misc.c: bracket -CF table elements 1993-12-13 Vern Paxson * misc.c: Do #bytes computation in {re,}allocate_array() only once 1993-12-11 Vern Paxson * flex.skl, flexdef.h, gen.c, main.c, misc.c, scan.l, sym.c: yy_str*() -> str*() 1993-12-11 Vern Paxson * Makefile.in, dfa.c, flexdef.h, gen.c, main.c, misc.c, nfa.c, parse.y, scan.l, sym.c: -o option 1993-12-11 Vern Paxson * gen.c: lint tweak 1993-12-11 Vern Paxson * NEWS: Expanded on extern "C++" news item 1993-12-11 Vern Paxson * NEWS: 2.4.5 1993-12-11 Vern Paxson * flex.skl: Added yy_fill_buffer 1993-12-11 Vern Paxson * gen.c: is_interactive -> yy_is_interactive 1993-12-11 Vern Paxson * flex.1: Updated credits 1993-12-11 Vern Paxson * Makefile.in: Fixed typo in "uninstall" target 1993-12-11 Vern Paxson * gen.c: Updated comment regarding 0-based vs. 1-based arrays for -CF. 1993-12-11 Vern Paxson * dfa.c: Initialize dfaacc[0] for -CF representation Fixed minor memory leak 1993-12-11 Vern Paxson * main.c: #include "FlexLexer.h" -> 1993-12-11 Vern Paxson * FlexLexer.h: Added extern "C++" wrapper 1993-12-09 Vern Paxson * main.c: Detect REJECT etc. before generating YY_USES_REJECT! 1993-12-09 Vern Paxson * gen.c: Fixed bug in interactive reads where char is unsigned 1993-12-09 Vern Paxson * parse.y: Fixed bug in treating '$' as variable trailing context 1993-12-09 Vern Paxson * version.h: 2.4.5 1993-12-07 Vern Paxson * README: pretester update 1993-12-07 Vern Paxson * NEWS: 2.4.4 1993-12-07 Vern Paxson * flex.1: LexError(), C++ experiment warning, credits 1993-12-07 Vern Paxson * scan.l: Fixed 8-bit bug 1993-12-07 Vern Paxson * flex.skl, gen.c: Fixed nasty 8-bit bugs 1993-12-07 Vern Paxson * dfa.c, ecs.c, flexdef.h, gen.c, main.c, nfa.c, tblcmp.c: {min,max,abs} -> {MIN,MAX,ABS} 1993-12-07 Vern Paxson * FlexLexer.h, flex.skl: Support for yyFlexLexer::LexerError 1993-12-06 Vern Paxson * version.h: 2.4.4 1993-12-05 Vern Paxson * flex.1: credits update 1993-12-05 Vern Paxson * Makefile.in: very minor "install" tweaks 1993-12-05 Vern Paxson * flex.skl, nfa.c: YY_USER_ACTION generated now for each case in action switch 1993-12-04 Vern Paxson * flex.skl: Fixed bug in pointing yyin at a new file and resuming scanning 1993-12-03 Vern Paxson * NEWS: Added note regarding g++ 2.5.X 1993-12-03 Vern Paxson * flex.1: updated credits 1993-12-03 Vern Paxson * NEWS: ranlib addition for 2.4.3 1993-12-03 Vern Paxson * Makefile.in: Minor tweak to last change 1993-12-03 Vern Paxson * Makefile.in: run ranlib on libfl.a 1993-12-03 Vern Paxson * NEWS: Hopefully last update prior to 2.4.3 1993-12-03 Vern Paxson * flexdef.h, gen.c, misc.c, sym.c: lint tweaks 1993-12-03 Vern Paxson * Makefile.in: Added exec_prefix 1993-12-03 Vern Paxson * flex.1: credit update 1993-12-03 Vern Paxson * flex.skl: lint tweak 1993-12-03 Vern Paxson * NEWS: FlexLexer.h fixed for separate inclusion 1993-12-03 Vern Paxson * FlexLexer.h, flex.skl, main.c: mods so FlexLexer.h can be included separately 1993-12-03 Vern Paxson * flex.1: -F incompatible with -+ 1993-12-02 Vern Paxson * NEWS: Elaborated comments for 2.4.3 1993-12-02 Vern Paxson * NEWS: 2.4.3 1993-12-02 Vern Paxson * flex.1: Updated message regarding missing libfl.a routines Added thanks to Noah Friedman 1993-12-02 Vern Paxson * Makefile.in: Added libstring.c Modified "lint" target to use -Dconst= Added a.out, lex.yy.cc to sundry clean targets 1993-12-02 Vern Paxson * flex.skl, flexdef.h, gen.c, main.c, misc.c, scan.l, sym.c: Use yy_strXXX() routines instead of 1993-12-01 Vern Paxson * version.h: 2.4.3 1993-12-01 Vern Paxson * flexdef.h, misc.c: yy_flex_xmalloc() moved to misc.c 1993-12-01 Vern Paxson * flex.skl: Fixed bug in yy_fatal_error() 1993-12-01 Vern Paxson * Makefile.in: ... and remove plain tar file after compression 1993-12-01 Vern Paxson * NEWS: 2.4.2 1993-12-01 Vern Paxson * Makefile.in: Produce both compress'd and gzip'd distribution tar files 1993-12-01 Vern Paxson * version.h: Release 2.4.2 1993-11-30 Vern Paxson * NEWS: -a -> -Ca 1993-11-30 Vern Paxson * README: described configuration files in manifest 1993-11-30 Vern Paxson * Makefile.in: Added intermediate step of copying MISC/alloca.c -> alloca.c Included CPPFLAGS when compiling alloca.c 1993-11-30 Vern Paxson * README: Credit to 2.4 pre-testers. 1993-11-30 Vern Paxson * gen.c: Fixed nasty bug in short/long decl decision 1993-11-30 Vern Paxson * flexdef.h: Lowered MAX_SHORT out of increased general paranoia. Added yy_flex_xmalloc() proto 1993-11-30 Vern Paxson * main.c: Fixed very minor typo in -v output 1993-11-30 Vern Paxson * misc.c: Removed vestigal cast to (char) in isupper() call 1993-11-30 Vern Paxson * misc.c: Added casts to unsigned Char for isascii() calls 1993-11-30 Vern Paxson * parse.y: Added #ifdef chud for alloca() 1993-11-30 Vern Paxson * Makefile.in: Added alloca 1993-11-30 Vern Paxson * configure.in: Add AC_ALLOCA if using bison 1993-11-29 Vern Paxson * Makefile.in: Added intermediate file going scan.l -> scan.c 1993-11-29 Vern Paxson * Makefile.in: Removed parse.{c,h} from distribution files, since they may not be all that portable. 1993-11-29 Vern Paxson * flex.skl: Fixed %array YYLMAX headaches, added error message if buffer needs growing but REJECT used 1993-11-29 Vern Paxson * gen.c, main.c: Fixed YYLMAX headaches 1993-11-29 Vern Paxson * flex.1: Documented that buffer can't grow if REJECT used 1993-11-29 Vern Paxson * Makefile.in: Added parse.{c,h} to dist files 1993-11-29 Vern Paxson * flex.skl, flexdef.h, gen.c, main.c, misc.c, scan.l: Fixed to buffer section 1 definitions 1993-11-29 Vern Paxson * sym.c: Fixed ANSI-C glitch with '%' operator 1993-11-29 Vern Paxson * scan.l: Fixed mis-definition of ndlookup() 1993-11-29 Vern Paxson * NEWS: 2.4 -> 2.4.1 1993-11-29 Vern Paxson * Makefile.in: Added install.sh, mkinstalldirs to distribution files 1993-11-29 Vern Paxson * flex.1: Added Nathan Zelle, "promoted" Francois 1993-11-29 Vern Paxson * Makefile.in: only "realclean" removes flex dist depends on flex 1993-11-29 Vern Paxson * flexdef.h, misc.c: myctoi takes char[] instead of Char[] 1993-11-28 Vern Paxson * flexdef.h: -a -> -Ca all_lower, all_upper -> work on char* 1993-11-28 Vern Paxson * Makefile.in: Added -Ca to bigcheck 1993-11-28 Vern Paxson * main.c: -a -> -Ca; fixed help output 1993-11-28 Vern Paxson * dfa.c, flex.1: -a -> -Ca 1993-11-28 Vern Paxson * misc.c: all_lower, all_upper work on char* 1993-11-28 Vern Paxson * scan.l: Fixed some casts now that yytext is always char* and never unsigned char* 1993-11-28 Vern Paxson * Makefile.in: Francois' tweaks 1993-11-28 Vern Paxson * configure.in: AC_LN_S, AC_STDC_HEADERS (but not AC_ALLOCA) 1993-11-27 Vern Paxson * NEWS: fixed typo 1993-11-27 Vern Paxson * Makefile.in: Don't remove dist directory 1993-11-27 Vern Paxson * Makefile.in: Include liballoc.c in lint targets 1993-11-27 Vern Paxson * misc.c: lint tweak 1993-11-27 Vern Paxson * Makefile.in: Added -l compression to bigcheck 1993-11-27 Vern Paxson * Makefile.in: permission tweaking for "dist" 1993-11-27 Vern Paxson * Makefile.in: more "dist" tweaks 1993-11-27 Vern Paxson * Makefile.in: Changed "make dist" to use version.h, include scan.c in initial dir copy 1993-11-27 Vern Paxson * version.h: 2.4.1 1993-11-27 Vern Paxson * README: Revised as per Francois Pinard 1993-11-27 Vern Paxson * COPYING: flex.skel -> flex.skl 1993-11-27 Vern Paxson * NEWS: Updated date of 2.4 release 1993-11-27 Vern Paxson * Makefile.in: Removed manual & nroff output from distribution 1993-11-27 Vern Paxson * NEWS: 2.4.1 release 1993-11-27 Vern Paxson * configure.in: Initial revision 1993-11-27 Vern Paxson * Makefile.in: Merge w/ 2.4.1 changes added "dist2" target 1993-11-26 Vern Paxson * Makefile.in: Initial revision 1993-11-26 Vern Paxson * flexdef.h: Removed #ifndef FILE protection from include of stdio 1993-11-26 Vern Paxson * flex.1: Added Francois Pinard to distribution headache helpers 1993-11-26 Vern Paxson * flex.skl: Modified C++ scanners to get input a character at a time for interactive scanners. 1993-11-26 Vern Paxson * main.c: Added YY_INTERACTIVE. 1993-11-26 Vern Paxson * scan.l: Put definitions inside ()'s so we can test -l option for "make bigcheck" 1993-11-26 Vern Paxson * flex.1: Documented YY_INTERACTIVE. 1993-11-26 Vern Paxson * flex.1, flex.skl, flexdef.h, gen.c, main.c, parse.y, scan.l: -l lex compatibility flag 1993-11-20 Vern Paxson * flex.skl: Support for read()/fread() section 1 definitions precede default macro definitions 1993-11-20 Vern Paxson * flexdef.h: Added use_read global 1993-11-20 Vern Paxson * gen.c: Cleaner definition for yymore() Fixed string broken across multiple lines 1993-11-20 Vern Paxson * main.c: Added -Cr 1993-11-20 Vern Paxson * misc.c: K&R declaration for check_char() 1993-11-20 Vern Paxson * flex.1: Documented -Cr 1993-11-20 Vern Paxson * flex.1: No need to #undef before redefining prior to -Cr documentation 1993-11-10 Vern Paxson * README: Heavily massaged for 2.4 1993-11-10 Vern Paxson * flex.1: Added Landon Noll to thanks. 1993-11-10 Vern Paxson * NEWS: 2.4 release 1993-11-10 Vern Paxson * flex.1: 2.4 documentation 1993-11-10 Vern Paxson * main.c: Added global to remember -P prefix so it can be written in -v summary. Alphabetized prefix generation, added yywrap 1993-11-09 Vern Paxson * version.h: updated date for 2.4.0 :-( 1993-10-10 Vern Paxson * FlexLexer.h: Whitespace tweaking 1993-10-10 Vern Paxson * main.c: Use DEFAULT_CSIZE only if not using equivalence classes. 1993-10-10 Vern Paxson * flex.1: Checkpoint prior to final 2.4 update 1993-10-04 Vern Paxson * NEWS: Raw 2.4 changes 1993-10-04 Vern Paxson * flex.skl: osfcn.h -> unistd.h 1993-10-04 Vern Paxson * flex.skl: Added "static" to definition of yy_fatal_error as well as fwd decl. 1993-10-04 Vern Paxson * flex.skl: Added yy_fatal_error function. 1993-10-03 Vern Paxson * flex.skl, gen.c: Got rid of (char *) casts of yytext, no longer needed. 1993-10-03 Vern Paxson * FlexLexer.h: YY_CHAR -> char added YYText(), YYLeng() 1993-10-03 Vern Paxson * flex.skl, gen.c: Minimized use of YY_CHAR 1993-10-03 Vern Paxson * main.c: Added "flex++" feature Minimized use of YY_CHAR 1993-10-02 Vern Paxson * main.c: Clarified help message for -S 1993-10-02 Vern Paxson * libyywrap.c, version.h: Initial revision 1993-10-02 Vern Paxson * main.c: If -+ used, output to lex.yy.cc 1993-10-02 Vern Paxson * FlexLexer.h, flex.skl: Switched from FILE*'s to stream's 1993-10-02 Vern Paxson * flexdef.h: Added expand_nxt_chk() extern. 1993-10-02 Vern Paxson * flex.skl: Added dynamic buffer growing. Added yyless() for section 3. 1993-10-02 Vern Paxson * dfa.c, flexdef.h, gen.c, main.c: Added -a option for long-align. 1993-10-02 Vern Paxson * scan.l: formfeed no longer considered whitespace 1993-09-21 Vern Paxson * flexdef.h: Nuked FILENAMESIZE 1993-09-21 Vern Paxson * main.c: yyflexlexer.h -> FlexLexer.h minor portability tweak 1993-09-21 Vern Paxson * gen.c: Added start condition to EOF trace output 1993-09-21 Vern Paxson * flex.skl: Added YY_START changed yyFlexLexer to define yylex() 1993-09-21 Vern Paxson * misc.c: Minor portability tweaks 1993-09-21 Vern Paxson * FlexLexer.h: Split into two classes, one fully abstract. yylex() no longer abstract in yyFlexLexer 1993-09-21 Vern Paxson * scan.l: PC lint tweak 1993-09-21 Vern Paxson * parse.y: YYSTYPE #define'd to int 1993-09-21 Vern Paxson * nfa.c: minor lint tweak 1993-09-16 Vern Paxson * FlexLexer.h: Initial revision 1993-09-16 Vern Paxson * flexdef.h: Delete prototypes for Unix system calls. 1993-09-16 Vern Paxson * ccl.c, dfa.c, ecs.c, gen.c, main.c, misc.c, nfa.c, parse.y, scan.l, sym.c, tblcmp.c, yylex.c: nuked static RCS string 1993-09-16 Vern Paxson * main.c: %array not allowed with C++ scanners 1993-09-16 Vern Paxson * scan.l: Fixed bugs regarding %{%} code in section 2 prolog %array not allowed with C++ scanners 1993-08-25 Vern Paxson * flexdef.h: Added C_plus_plus flag. 1993-08-25 Vern Paxson * flex.skl: First version of C/C++ skeleton 1993-08-25 Vern Paxson * gen.c: yy_state_type declared earlier. Made a bunch of statics only output if not -+ 1993-08-25 Vern Paxson * main.c: Added -+ option, updated usage() output, rearranged some generated code to come at the right point in the output for yyflexlexer.h. 1993-08-25 Vern Paxson * misc.c: Added %+/%-/%* to skelout() 1993-08-25 Vern Paxson * scan.l: EOF in section 2 prolog leads to section 0, not section 3 1993-08-25 Vern Paxson * yylex.c: Dump promotion of EOF in section 2 to turn on section 3; instead just treat it like a final EOF 1993-08-25 Vern Paxson * dfa.c: yy_nxt table should be "const" 1993-08-24 Vern Paxson * flexdef.h: Removed a lot of #ifdef chud "backtracking" -> "backing up" 1993-08-24 Vern Paxson * main.c: "backtracking" -> "backing up" got rid of time reports 1993-08-24 Vern Paxson * gen.c: "backtracking" -> "backing up" some portability tweaks fixed to only call flexscan() when done if known to be in section 3 1993-08-24 Vern Paxson * misc.c: isascii() moved to flexdef.h nuked flex_gettime() 1993-08-24 Vern Paxson * scan.l: Fixed bug with empty section 2 1993-08-24 Vern Paxson * yylex.c: Chucked definition of isascii() 1993-08-24 Vern Paxson * flex.skl: preserve yytext on input() bug fix when combining yyless() with yymore() checkpoint prior to C++ option 1993-08-24 Vern Paxson * dfa.c: "backtracking" -> "backing up" 1993-07-09 Vern Paxson * flex.skl: Fixed to not generate extra EOF's after reading one. 1993-07-05 Vern Paxson * main.c: Spit out definition of YY_CHAR early 1993-07-05 Vern Paxson * flex.skl: Some rearranging to make sure things get declared in the right order 1993-07-05 Vern Paxson * tblcmp.c: Some comment fixes as per Wilhelms 1993-07-05 Vern Paxson * scan.l: Nuked #undef of yywrap, now that it's a function 1993-07-05 Vern Paxson * parse.y: Fixed bug with Z-a character classes as per Wilhelms 1993-07-05 Vern Paxson * nfa.c: added check_char call in mkstate() to prevent bad xtion chars 1993-07-05 Vern Paxson * gen.c: Fixed some reallocation bugs, etc. as per Wilhelms 1993-07-05 Vern Paxson * flexdef.h: Added check_char(), readable_form() 1993-07-05 Vern Paxson * flex.skl: Added #ifndef's around #define's to let user override Moved a bunch of definitions prior to section 1 1993-07-05 Vern Paxson * dfa.c: Wilhems bug fixes. 1993-07-05 Vern Paxson * ccl.c, misc.c: Added check_char() 1993-06-12 Vern Paxson * flexdef.h: Changed to use yy_flex_alloc() and friends 1993-06-12 Vern Paxson * main.c: Added -P flag 1993-06-12 Vern Paxson * scan.l: Fixed bug in lex % directives 1993-06-12 Vern Paxson * misc.c: Modified to use yy_flex_alloc() and friends 1993-06-12 Vern Paxson * sym.c: Modified to use yy_flex_alloc() 1993-06-12 Vern Paxson * flex.skl: Modified to use yy_flex_alloc() and friends Moved some globals earlier in the file to permit access in section 1 1993-06-12 Vern Paxson * dfa.c: Got rid of code needed for %t 1993-04-14 Vern Paxson * ccl.c, dfa.c, ecs.c, flex.skl, flexdef.h, gen.c, libmain.c, main.c, misc.c, nfa.c, parse.y, scan.l, sym.c, tblcmp.c, yylex.c: Reformatting. 1993-04-05 Vern Paxson * flex.1: Fixed bug in description of backtracking 1993-04-05 Vern Paxson * NEWS: 2.3.8 1993-04-05 Vern Paxson * flex.skl, main.c: %array support 1993-04-05 Vern Paxson * misc.c: Added non-STDC clause for '\a' 1993-04-05 Vern Paxson * scan.l: Fixed subtle problems regarding '*'s in comments %pointer/%array match entire lines 1993-04-05 Vern Paxson * gen.c: Added %array support 1993-02-06 Vern Paxson * README: Finally updated email addr 1993-02-06 Vern Paxson * flex.1: Mostly .LP -> .PP 1993-02-06 Vern Paxson * flexdef.h: [no log message] 1993-02-06 Vern Paxson * main.c, scan.l: A lot of tweaks ... 1993-02-06 Vern Paxson * ccl.c: reallocate_character_array -> reallocate_Character_array 1993-02-06 Vern Paxson * gen.c: Bug/lint fixes Modified to work with "action" array instead of temp file 1993-02-06 Vern Paxson * sym.c: Fixed bug in 8-bit hashing 1993-02-06 Vern Paxson * parse.y: numerous bug fixes extra formatting of error/warning messages added support of <*>, partial support for nested start conditions 1993-02-06 Vern Paxson * ecs.c: Remove %t cruft 1993-02-06 Vern Paxson * flex.skl: Beginning of %pointer/%array support 1993-02-06 Vern Paxson * dfa.c: Added keeping track of which rules are useful fixed a fencepost error in checking for scanners that require -8 1993-02-06 Vern Paxson * nfa.c: Added checking for whether rules are useful modified to work with internal "action" array 1993-02-06 Vern Paxson * misc.c: Added internal "action" array, internal skeleton, zero_out() in lieu of bzero 1993-02-06 Vern Paxson * tblcmp.c: Fixed a bunch of fencepost errors in increasing tables. 1993-02-06 Vern Paxson * yylex.c: -Wall fix 1991-03-28 Vern Paxson * gen.c: Fixed out-of-bounds access bug; patch #7 for release 2.3 1991-03-28 Vern Paxson * NEWS: Patch #7 for 2.3 1990-10-23 Vern Paxson * gen.c: fixed missing "rule_type" entry for end-of-buffer action 1990-08-29 Vern Paxson * gen.c: Fixed yymore() but in not resetting yy_more_len 1990-08-29 Vern Paxson * NEWS: Patch #6 for 2.3 1990-08-16 Vern Paxson * NEWS: Patch #5 1990-08-14 Vern Paxson * misc.c: fixed comment in myesc() 1990-08-14 Vern Paxson * NEWS: fixed date in patch #4 1990-08-14 Vern Paxson * NEWS: patch #4 1990-08-14 Vern Paxson * misc.c: fixed hexadecimal escapes; added is_hex_digit() 1990-08-03 Vern Paxson * NEWS: Patch #3 1990-08-03 Vern Paxson * flex.skl, flexdef.h: changed to include for __GNUC__ 1990-08-02 Vern Paxson * NEWS: 2.3 patch #2 1990-08-02 Vern Paxson * flex.skl: Another try at getting the malloc() definitions correct; this time for g++, too 1990-08-02 Vern Paxson * flex.skl, flexdef.h: fixed to declare malloc() and free() by hand if __GNUC__ 1990-07-28 Vern Paxson * flexdef.h: Changed to get malloc definition in identical fashion to that used by flex.skel 1990-06-28 Vern Paxson * NEWS: [no log message] 1990-06-28 Vern Paxson * flex.1: Fixed bug in mini-scanner examle Fixed bug in YY_INPUT redefinition yylineno defense reentrancy documentation Something else which I forget. 1990-06-27 Vern Paxson * COPYING, ccl.c, dfa.c, ecs.c, flexdef.h, gen.c, main.c, misc.c, nfa.c, parse.y, scan.l, sym.c, tblcmp.c, yylex.c: 4.4 BSD copyright 1990-05-26 Vern Paxson * README: Changed prolog to reflect 2.3 release. 1990-05-26 Vern Paxson * NEWS: pointed reader at Makefile instead of README for porting considerations added Makefile comments: support for SCO Unix; parameterization 1990-05-26 Vern Paxson * flex.skl: Added DONT_HAVE_STDLIB_H and declarations of malloc() 1990-05-26 Vern Paxson * NEWS: 2.3 changes 1990-05-26 Vern Paxson * flex.1: documentation on new features Comment regarding Ove's work ^foo|bar difference between flex / lex yyin initialization difference documented that yy_switch_to_buffer can be used in yywrap() documented that # comments are deprecated 1990-05-26 Vern Paxson * main.c: declared void functions as such added prototypes for forward references changed to check for error status when closing files 1990-05-26 Vern Paxson * yylex.c: Added macro definition for isascii() if not already present 1990-05-26 Vern Paxson * sym.c: declared void functions as such added prototypes for forward references changed to use format_pinpoint_message where appropriate 1990-05-26 Vern Paxson * scan.l: declared void functions as such changed to strip # comments, as documented moved #undef of yywrap() to before include of flexdef, so prototype doesn't get screwed up 1990-05-26 Vern Paxson * parse.y: introduced format_pinpoint_message() declared void functions as such changed lone <> to apply to all outstanding start conditions 1990-05-26 Vern Paxson * nfa.c, tblcmp.c: declared void functions as such added prototypes for forward references 1990-05-26 Vern Paxson * misc.c: declared void functions as such prototypes for forward references shuffled around some routines to make the order perhaps a little more logical changed memory references to use void* instead of char* 1990-05-26 Vern Paxson * libmain.c: Added declaration of arguments made yylex() a function 1990-05-26 Vern Paxson * gen.c: prototypes for forward references declared void functions as such yy_flex_debug testing of error on file closes casts to void for sprintf() and strcpy() 1990-05-26 Vern Paxson * flexdef.h: Added prototypes changed memory allocation routines to deal with void*'s instead of char*'s some rearranging for VMS 1990-05-26 Vern Paxson * flex.skl: Added YY_USER_INIT Added yy_new_buffer() alias for yy_create_buffer() fixed (hopefully) malloc declaration headaches 1990-05-26 Vern Paxson * ecs.c: declared void functions as such declared void functions as such 1990-05-26 Vern Paxson * dfa.c: prototypes for forward references declared void functions as such 1990-05-26 Vern Paxson * ccl.c: Declared void functions as such 1990-04-12 Vern Paxson * flex.skl: added fix for allowing yy_switch_to_buffer() in yywrap() 1990-04-03 Vern Paxson * NEWS: patch #3 - -I fix 1990-03-30 Vern Paxson * gen.c: Changed generation of archaic "continue" to "goto yy_find_action" 1990-03-27 Vern Paxson * NEWS: Patch #2 changes 1990-03-27 Vern Paxson * flex.skl: fixed fencepost errors with yy_buf_size and detecting NUL's 1990-03-26 Vern Paxson * NEWS: [no log message] 1990-03-26 Vern Paxson * flex.skl: g++ tweaks 1990-03-23 Vern Paxson * NEWS: Changes for Patch #1. 1990-03-23 Vern Paxson * flex.skl: fix for g++ 1990-03-23 Vern Paxson * flex.1: minor typos and formatting changes. Removed BITNET address. 1990-03-23 Vern Paxson * README: nuked BITNET address. 1990-03-20 Vern Paxson * README: 2.2 README 1990-03-20 Vern Paxson * NEWS: USG alias. 1990-03-20 Vern Paxson * flexdef.h: Added USG alias for SYS_V 1990-03-20 Vern Paxson * : [no log message] 1990-03-20 Vern Paxson * flex.skl: Tweaks for lint and C++ 1990-03-20 Vern Paxson * flex.1: -ll => -lfl 1990-03-20 Vern Paxson * NEWS: 2.2 changes 1990-03-20 Vern Paxson * flex.skl: Changed to use YY_BUFFER_STATE everywhere. 1990-03-20 Vern Paxson * flex.1: [no log message] 1990-03-20 Vern Paxson * dfa.c: "associated rules" changed to "associated rule line numbers". 1990-03-20 Vern Paxson * scan.l: cast added to malloc() call to keep lint happy. 1990-03-20 Vern Paxson * yylex.c: Fixed handling of premature EOF's. 1990-03-20 Vern Paxson * sym.c: Removed declaration of malloc() 1990-03-20 Vern Paxson * scan.l: Removed malloc() declaration. Added detection of EOF in actions. 1990-03-20 Vern Paxson * parse.y: Rules rewritten so '/' and '$' parsed correctly. 1990-03-20 Vern Paxson * nfa.c: Corrected line numbers for continued actions. 1990-03-20 Vern Paxson * misc.c: Removed declarations of malloc() and realloc(). 1990-03-20 Vern Paxson * main.c: Summary of generation flags. Minor -8 tweaks. 1990-03-20 Vern Paxson * gen.c: full support for -d 1990-03-20 Vern Paxson * flexdef.h: defines for malloc() and realloc() conditional defines for abs(), min(), and max() 1990-03-20 Vern Paxson * flex.skl: Many multiple-buffer additions. 1990-03-20 Vern Paxson * dfa.c: -8 tweaks. 1990-03-19 Vern Paxson * flex.skl: Proto hacks. NUL hacks. Debugging hacks. C++ hacks. 1990-03-16 Vern Paxson * : RCS won't let me unedit! gets "Missing access list" 1990-03-16 Vern Paxson * tblcmp.c: Minor tweaks for NUL's. 1990-03-16 Vern Paxson * : no changes -- had checked out for testing smaller read buffer sizes 1990-03-16 Vern Paxson * nfa.c: hack for NUL's. 1990-03-16 Vern Paxson * misc.c: Hack to cshell for NUL's. 1990-03-16 Vern Paxson * main.c: NUL's. -8 1990-03-16 Vern Paxson * gen.c: NUL's. 1990-03-16 Vern Paxson * flexdef.h: NUL's. 8-bit chars. 1990-03-16 Vern Paxson * flex.skl: NUL's; indenting 1990-03-16 Vern Paxson * dfa.c: more thrashing around with NUL's 1990-03-16 Vern Paxson * ccl.c: removed NUL hack 1990-03-14 Vern Paxson * yylex.c: Added <> token 1990-03-14 Vern Paxson * ecs.c, flexdef.h: Tweaks for NUL chars. 1990-03-14 Vern Paxson * dfa.c, gen.c, main.c, misc.c, parse.y, scan.l, tblcmp.c: Tweaks for NUL chars. 1990-03-14 Vern Paxson * ccl.c: Tweaks for handling NUL's. 1990-02-28 Vern Paxson * flex.1: [no log message] 1990-02-28 Vern Paxson * flex.1: Changed .so options.man to inlined version since flex.1 will have a different (shorter) options description. 1990-02-28 Vern Paxson * flex.1: [no log message] 1990-02-28 Vern Paxson * flex.1: [no log message] 1990-02-26 Vern Paxson * flex.1: [no log message] 1990-02-25 Vern Paxson * flex.1: [no log message] 1990-02-25 Vern Paxson * flex.1: Initial revision 1990-01-16 Vern Paxson * gen.c: Restored EOB accepting list for REJECT. Second try at 2.2 Release. 1990-01-16 Vern Paxson * misc.c: Added missing ',' in error message. 2.2 Release, second try. 1990-01-16 Vern Paxson * yylex.c: 8-bit char support. 2.2 Release. 1990-01-15 Vern Paxson * scan.l: 8-bit char support. Arbitrary indented/%{} code allowed in section 2. \x escapes. %t support. Minor POSIX-compliance changes. BEGIN(0) -> BEGIN(INITIAL). yywrap() and set_input_file() for multiple input files. C_COMMENT_2 removed. 2.2 Release. 1990-01-15 Vern Paxson * flexdef.h: 8-bit char support. SYS_V / Atari portability fixes. Removed generated array names. CSIZE now only defined if not already defined. Added "csize" global. Added "input_files", "num_input_files", and "program_name" globals. %t support globals. 2.2 Release. 1990-01-15 Vern Paxson * gen.c: Removed unused EOB_accepting_list array. 2.2 Release. 1990-01-15 Vern Paxson * gen.c: Bug in -F table generation fixed. 8-bit char support. Hardwired generated array names. "const"'s added to generated code. Fixed yymore() / trailing context bug. 1990-01-15 Vern Paxson * parse.y: 8-bit char support. Error-message pinpointing. 2.2 Release. 1990-01-15 Vern Paxson * main.c: Unsigned char support. %t support. Removed hard-wiring of program name "flex". -c changed to -C; -c now deprecated. -n added. :-( Multiple input files. SYSV tmpnam() use. Removed old #define's from output. Identified error messages w/ filename and line. 2.2 Release. 1990-01-15 Vern Paxson * sym.c: Unsigned char support. 2.2 Release. 1990-01-15 Vern Paxson * nfa.c: Removed redundant test. 2.2 Release. 1990-01-15 Vern Paxson * misc.c: Unsigned char support. \x support. 2.2 Release. 1990-01-15 Vern Paxson * tblcmp.c: 8-bit char support. 2.2 Release. 1990-01-15 Vern Paxson * flex.skl: C++ support. Turbo-C support. 8-bit char support. yyleng is an int. unput() callable in section 3. yymore hacks. yyrestart() no longer closes stdin. 2.2 Release. 1990-01-15 Vern Paxson * ecs.c: %t support. 8-bit/unsigned char support. 2.2 Release. 1990-01-15 Vern Paxson * dfa.c: %t hacks. minor cosmetics. 2.2 Relase. 1990-01-15 Vern Paxson * ccl.c: Changes for unsigned/8-bit chars. 2.2 Release. 1990-01-10 Vern Paxson * libmain.c: Initial revision 1989-12-30 Vern Paxson * nfa.c: removed gratuitous trailing context code 1989-12-30 Vern Paxson * main.c: made -c case-sensitive 1989-12-30 Vern Paxson * flex.skl: unput() bug fix 1989-12-30 Vern Paxson * README: [no log message] 1989-06-20 Vern Paxson * scan.l: changed to not use '|' and trailing context combo so users can test using -F ... 1989-06-20 Vern Paxson * parse.y: made trailing context combined with '|' warning always come out 1989-06-20 Vern Paxson * README: [no log message] 1989-06-20 Vern Paxson * COPYING: Initial revision 1989-06-20 Vern Paxson * NEWS, README, main.c: [no log message] 1989-06-20 Vern Paxson * README: [no log message] 1989-06-20 Vern Paxson * NEWS, README, main.c: [no log message] 1989-06-20 Vern Paxson * : Beta release 1989-06-20 Vern Paxson * NEWS, main.c: [no log message] 1989-06-20 Vern Paxson * flex.skl, flexdef.h, gen.c, misc.c, nfa.c, parse.y, scan.l, sym.c: 2.0.1 beta 1989-06-20 Vern Paxson * README: [no log message] 1989-05-25 Vern Paxson * gen.c: fixsed bug with -I and backtracking 1989-05-25 Vern Paxson * flex.skl: Cleaned up forward declarations of yyunput() and input() 1989-05-25 Vern Paxson * parse.y: Split copyright string. 1989-05-25 Vern Paxson * nfa.c: Split copyright string. Added check for empty machine in dupmachine(). 1989-05-25 Vern Paxson * ccl.c, dfa.c, ecs.c, gen.c, main.c, misc.c, scan.l, sym.c, tblcmp.c, yylex.c: Split copyright string into two to avoid tempting fate with \ sequences ... 1989-05-24 Vern Paxson * README: updated for 2nd release Beta test added RCS header 1989-05-24 Vern Paxson * flexdef.h: removed static char copyright 1989-05-24 Vern Paxson * flexdef.h: Added BSD copyright notice. Removed FAST_SKELETON_FILE. 1989-05-24 Vern Paxson * main.c: added BSD copyright notice. Removed references to FAST_SKELETON_FILE. 1989-05-24 Vern Paxson * ecs.c, gen.c, nfa.c: Added BSD copyright notice 1989-05-24 Vern Paxson * ccl.c, dfa.c, misc.c, parse.y, scan.l, sym.c, tblcmp.c, yylex.c: added BSD copyright notice 1989-05-24 Vern Paxson * flex.skl: Initial revision 1989-05-19 Vern Paxson * yylex.c: renamed accnum to num_rules 1989-05-19 Vern Paxson * tblcmp.c: moved table generation code to gen.c moved ntod() to dfa.c 1989-05-19 Vern Paxson * sym.c: the most piddling format change imaginable 1989-05-19 Vern Paxson * scan.l: changed to look for yymore, REJECT, %used and %unused removed gross magic for dealing with section 3 1989-05-19 Vern Paxson * nfa.c, parse.y: changes for variable trailing context 1989-05-19 Vern Paxson * misc.c: added all_lower() and all_upper() 1989-05-19 Vern Paxson * main.c: added checking for features being Really used backtracking, performance reports misc. cleanup 1989-05-19 Vern Paxson * gen.c: major overhaul for merged skeleton 1989-05-19 Vern Paxson * flexdef.h: a zillion changes/additions/cleanups 1989-05-19 Vern Paxson * dfa.c: added backtrack report added checking for dangerous trailing context considerable minor cleanup 1989-05-19 Vern Paxson * ccl.c: list_character_set() modified to take a FILE to write to ... 1989-05-19 Vern Paxson * README: updated for beta release 1988-11-25 Vern Paxson * main.c: added -p flag generation of #define's for scanner 1988-11-25 Vern Paxson * flexdef.h: Added END_OF_BUFFER_ACTION and bol_needed 1988-11-25 Vern Paxson * dfa.c: added ntod() 1988-05-09 Vern Paxson * gen.c: Initial revision 1988-05-08 Vern Paxson * yylex.c: RCS header changed display style of non-printings from ^x to \0xx 1988-05-08 Vern Paxson * tblcmp.c: RCS header MAX_XTIONS_FOR_FULL_INTERIOR_FIT -> MAX_XTIONS_FULL_INTERIOR_FIT made back-tracking accepting number be one greater than the last legit accepting number, instead of 0. This way, end-of-buffer can take 0 and no negative accepting numbers are needed. added genftbl() changed last ftl references to C added check for UNSIGNED_CHAR's added back-track logic to make_tables() added checking and report for backtracking fixed fence-post error with onesp stack pointer 1988-05-08 Vern Paxson * sym.c: RCS header changed "entry" to "sym_entry" to avoid conflict with old keyword 1988-05-08 Vern Paxson * scan.l: RCS header removed \^ from ESCSEQ 1988-05-08 Vern Paxson * parse.y: RCS header bug fix due to missing default rule, could have to backtrack when backtrack variables haven't been set up 1988-05-08 Vern Paxson * nfa.c: RCS ident yy_cp, yy_bp support name shortenings assoc_rule support 1988-05-08 Vern Paxson * misc.c: RCS header check before malloc()'ing for 16 bit overflow MS_DOS, VMS ifdef's removed commented-out \^ code removed FTLSOURCE code added readable_form() 1988-05-08 Vern Paxson * main.c: Added RCS header removed revision history misc additions and fixes to globals VMS ifdef's backtracking statistics -p flag name shortenings 1988-05-08 Vern Paxson * flexdef.h: removed revision history added RCS header added VMS, MS_DOS ifdef's removed DEFAULT_ACTION, changed END_OF_BUFFER_ACTION shortened MAX_XTIONS_FOR_FULL_INTERIOR_FIT to MAX_XTIONS_FULL_INTERIOR_FIT added MAX_ASSOC_RULES added performance_report, assoc_rule gloabls added num_backtracking gloabl shortened allocate_integer_pointer_array, reallocate_integer_pointer_array 1988-05-08 Vern Paxson * ecs.c: added RCS id added PROCFLG to avoid assumption of signed char's 1988-05-08 Vern Paxson * dfa.c: added RCS id added check_for_backtracking() added dump_associated_rules() added dump_transitions() shortened reallocate_integer_pointer_array to reallocate_int_ptr_array removed some dfaacc_{state,set} abuses 1988-05-08 Vern Paxson * ccl.c: Added list_character_set() 1988-05-07 Vern Paxson * ccl.c: added RCS id 1988-04-10 Vern Paxson * README: minor tweaks 1988-04-10 Vern Paxson * README: forgot sh flex.shar 1988-04-10 Vern Paxson * README: final tweaking 1988-04-10 Vern Paxson * tblcmp.c: removed minor lint fluff 1988-04-10 Vern Paxson * NEWS: [no log message] 1988-04-10 Vern Paxson * NEWS, README: Initial revision 1988-04-10 Vern Paxson * yylex.c: added identifying comment. changed to include "parse.h" instead of "y.tab.h" 1988-04-10 Vern Paxson * tblcmp.c: Changed name from flexcmp.c -> tblcmp.c fixed misc. typos made generating ec tables be a routine 1988-04-10 Vern Paxson * sym.c: changed name from flexsym.c -> sym.c revamped calling sequences, etc., for extended table struct definition which now has both char * and int fields. 1988-04-10 Vern Paxson * scan.l: Changed name from flexscan.l -> scan.l fixed bug in added block comments between rules. 1988-04-10 Vern Paxson * parse.y: changed name from flexparse.y -> parse.y added start condition "INITIAL" made a{3} have "variable length" 1988-04-10 Vern Paxson * nfa.c: changed name from flexnfa.c -> nfa.c corrected some typos. 1988-04-10 Vern Paxson * misc.c: changed name from flexmisc.c -> misc.c 1988-04-10 Vern Paxson * main.c: fixed bug causing core dumps if skeleton files could not be opened. Added -cF. Added fullspd to be equivalent to fulltbl for which options is cannot be mixed with. 1988-04-10 Vern Paxson * flexdef.h: fixed typos, enhanced symbol table definition. 1988-04-10 Vern Paxson * ecs.c: changed name from flexecs.c to ecs.c 1988-04-10 Vern Paxson * dfa.c: changed name from flexdfa.c to dfa.c 1988-04-10 Vern Paxson * ccl.c: changed name from flexccl.c -> ccl.c 1988-02-13 Vern Paxson * ccl.c, dfa.c, ecs.c, flexdef.h, main.c, misc.c, nfa.c, parse.y, scan.l, sym.c, tblcmp.c, yylex.c: Beta Release. 1987-11-08 Vern Paxson * Initial revision flex-2.5.39/ecs.c0000644000175000017500000001302512314546064013746 0ustar srivastasrivasta/* ecs - equivalence class routines */ /* Copyright (c) 1990 The Regents of the University of California. */ /* All rights reserved. */ /* This code is derived from software contributed to Berkeley by */ /* Vern Paxson. */ /* The United States Government has rights in this work pursuant */ /* to contract no. DE-AC03-76SF00098 between the United States */ /* Department of Energy and the University of California. */ /* This file is part of flex */ /* Redistribution and use in source and binary forms, with or without */ /* modification, are permitted provided that the following conditions */ /* are met: */ /* 1. Redistributions of source code must retain the above copyright */ /* notice, this list of conditions and the following disclaimer. */ /* 2. Redistributions in binary form must reproduce the above copyright */ /* notice, this list of conditions and the following disclaimer in the */ /* documentation and/or other materials provided with the distribution. */ /* Neither the name of the University nor the names of its contributors */ /* may be used to endorse or promote products derived from this software */ /* without specific prior written permission. */ /* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR */ /* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED */ /* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */ /* PURPOSE. */ #include "flexdef.h" /* ccl2ecl - convert character classes to set of equivalence classes */ void ccl2ecl () { int i, ich, newlen, cclp, ccls, cclmec; for (i = 1; i <= lastccl; ++i) { /* We loop through each character class, and for each character * in the class, add the character's equivalence class to the * new "character" class we are creating. Thus when we are all * done, character classes will really consist of collections * of equivalence classes */ newlen = 0; cclp = cclmap[i]; for (ccls = 0; ccls < ccllen[i]; ++ccls) { ich = ccltbl[cclp + ccls]; cclmec = ecgroup[ich]; if (cclmec > 0) { ccltbl[cclp + newlen] = cclmec; ++newlen; } } ccllen[i] = newlen; } } /* cre8ecs - associate equivalence class numbers with class members * * fwd is the forward linked-list of equivalence class members. bck * is the backward linked-list, and num is the number of class members. * * Returned is the number of classes. */ int cre8ecs (fwd, bck, num) int fwd[], bck[], num; { int i, j, numcl; numcl = 0; /* Create equivalence class numbers. From now on, ABS( bck(x) ) * is the equivalence class number for object x. If bck(x) * is positive, then x is the representative of its equivalence * class. */ for (i = 1; i <= num; ++i) if (bck[i] == NIL) { bck[i] = ++numcl; for (j = fwd[i]; j != NIL; j = fwd[j]) bck[j] = -numcl; } return numcl; } /* mkeccl - update equivalence classes based on character class xtions * * synopsis * Char ccls[]; * int lenccl, fwd[llsiz], bck[llsiz], llsiz, NUL_mapping; * void mkeccl( Char ccls[], int lenccl, int fwd[llsiz], int bck[llsiz], * int llsiz, int NUL_mapping ); * * ccls contains the elements of the character class, lenccl is the * number of elements in the ccl, fwd is the forward link-list of equivalent * characters, bck is the backward link-list, and llsiz size of the link-list. * * NUL_mapping is the value which NUL (0) should be mapped to. */ void mkeccl (ccls, lenccl, fwd, bck, llsiz, NUL_mapping) Char ccls[]; int lenccl, fwd[], bck[], llsiz, NUL_mapping; { int cclp, oldec, newec; int cclm, i, j; static unsigned char cclflags[CSIZE]; /* initialized to all '\0' */ /* Note that it doesn't matter whether or not the character class is * negated. The same results will be obtained in either case. */ cclp = 0; while (cclp < lenccl) { cclm = ccls[cclp]; if (NUL_mapping && cclm == 0) cclm = NUL_mapping; oldec = bck[cclm]; newec = cclm; j = cclp + 1; for (i = fwd[cclm]; i != NIL && i <= llsiz; i = fwd[i]) { /* look for the symbol in the character class */ for (; j < lenccl; ++j) { register int ccl_char; if (NUL_mapping && ccls[j] == 0) ccl_char = NUL_mapping; else ccl_char = ccls[j]; if (ccl_char > i) break; if (ccl_char == i && !cclflags[j]) { /* We found an old companion of cclm * in the ccl. Link it into the new * equivalence class and flag it as * having been processed. */ bck[i] = newec; fwd[newec] = i; newec = i; /* Set flag so we don't reprocess. */ cclflags[j] = 1; /* Get next equivalence class member. */ /* continue 2 */ goto next_pt; } } /* Symbol isn't in character class. Put it in the old * equivalence class. */ bck[i] = oldec; if (oldec != NIL) fwd[oldec] = i; oldec = i; next_pt:; } if (bck[cclm] != NIL || oldec != bck[cclm]) { bck[cclm] = NIL; fwd[oldec] = NIL; } fwd[newec] = NIL; /* Find next ccl member to process. */ for (++cclp; cclflags[cclp] && cclp < lenccl; ++cclp) { /* Reset "doesn't need processing" flag. */ cclflags[cclp] = 0; } } } /* mkechar - create equivalence class for single character */ void mkechar (tch, fwd, bck) int tch, fwd[], bck[]; { /* If until now the character has been a proper subset of * an equivalence class, break it away to create a new ec */ if (fwd[tch] != NIL) bck[fwd[tch]] = bck[tch]; if (bck[tch] != NIL) fwd[bck[tch]] = fwd[tch]; fwd[tch] = NIL; bck[tch] = NIL; } flex-2.5.39/config.guess0000755000175000017500000012743212314621560015353 0ustar srivastasrivasta#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, # 2011, 2012 Free Software Foundation, Inc. timestamp='2012-02-10' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner. Please send patches (context # diff format) to and include a ChangeLog # entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-gnu else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-gnueabi else echo ${UNAME_MACHINE}-unknown-linux-gnueabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-gnu exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:Linux:*:*) LIBC=gnu eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; padre:Linux:*:*) echo sparc-unknown-linux-gnu exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in i386) eval $set_cc_for_build if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then UNAME_PROCESSOR="x86_64" fi fi ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: flex-2.5.39/libmain.c0000644000175000017500000000225612314546064014613 0ustar srivastasrivasta/* libmain - flex run-time support library "main" function */ /* This file is part of flex. */ /* Redistribution and use in source and binary forms, with or without */ /* modification, are permitted provided that the following conditions */ /* are met: */ /* 1. Redistributions of source code must retain the above copyright */ /* notice, this list of conditions and the following disclaimer. */ /* 2. Redistributions in binary form must reproduce the above copyright */ /* notice, this list of conditions and the following disclaimer in the */ /* documentation and/or other materials provided with the distribution. */ /* Neither the name of the University nor the names of its contributors */ /* may be used to endorse or promote products derived from this software */ /* without specific prior written permission. */ /* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR */ /* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED */ /* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */ /* PURPOSE. */ extern int yylex (); int main (argc, argv) int argc; char *argv[]; { while (yylex () != 0) ; return 0; } flex-2.5.39/Makefile.am0000644000175000017500000001221412314546064015063 0ustar srivastasrivasta# This file is part of flex. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. # Notes on building: # Possible values for DEFS: # # By default, flex generates 8-bit scanners when using table compression, # and 7-bit scanners when using uncompressed tables (-f or -F options). # For flex to always generate 8-bit scanners, add "-DDEFAULT_CSIZE=256" # to DEFS. # # For Vax/VMS, add "-DVMS" to DEFS. # # For MS-DOS, add "-DMS_DOS" to DEFS. See the directory MISC/MSDOS for # additional info. AM_YFLAGS = -d ACLOCAL_AMFLAGS = -I m4 m4 = @M4@ indent = @INDENT@ bin_PROGRAMS = flex lib_LTLIBRARIES = \ libfl.la \ libfl_pic.la flex_SOURCES = \ ccl.c \ dfa.c \ ecs.c \ scanflags.c \ gen.c \ main.c \ misc.c \ nfa.c \ parse.y \ scan.l \ skel.c \ sym.c \ tblcmp.c \ yylex.c \ options.c \ scanopt.c \ buf.c \ tables.c \ tables_shared.c \ filter.c \ regex.c LDADD = lib/libcompat.la libfl_la_SOURCES = \ libmain.c \ libyywrap.c libfl_la_LDFLAGS = -no-undefined -version-info @SHARED_VERSION_INFO@ libfl_pic_la_SOURCES = \ libmain.c \ libyywrap.c libfl_pic_la_LDFLAGS = -no-undefined -version-info @SHARED_VERSION_INFO@ noinst_HEADERS = \ flexdef.h \ flexint.h \ version.h \ options.h \ scanopt.h \ tables.h \ tables_shared.h include_HEADERS = \ FlexLexer.h dist_doc_DATA = \ AUTHORS \ COPYING \ NEWS \ ONEWS \ README \ TODO EXTRA_DIST = \ .indent.pro \ ABOUT-NLS \ INSTALL \ autogen.sh \ flex.skl \ mkskel.sh \ config.rpath \ gettext.h BUILT_SOURCES = \ skel.c SUBDIRS = \ lib \ . \ doc \ examples \ po \ tests localedir = $(datadir)/locale AM_CPPFLAGS = -DLOCALEDIR=\"$(localedir)\" -I$(top_srcdir)/intl LIBS = @LIBINTL@ @LIBS@ skel.c: flex.skl mkskel.sh flexint.h tables_shared.h sed 's/m4_/m4postproc_/g; s/m4preproc_/m4_/g' $(srcdir)/flex.skl | $(m4) -P -DFLEX_MAJOR_VERSION=`echo $(VERSION)|cut -f 1 -d .` -DFLEX_MINOR_VERSION=`echo $(VERSION)|cut -f 2 -d .` -DFLEX_SUBMINOR_VERSION=`echo $(VERSION)|cut -f 3 -d .` | sed 's/m4postproc_/m4_/g' | $(SHELL) $(srcdir)/mkskel.sh >skel.c # Explicitly describe dependencies. # You can recreate this with `gcc -I. -MM *.c' buf.o: buf.c flexdef.h flexint.h ccl.o: ccl.c flexdef.h flexint.h dfa.o: dfa.c flexdef.h flexint.h tables.h tables_shared.h ecs.o: ecs.c flexdef.h flexint.h scanflags.o: scanflags.c flexdef.h flexint.h gen.o: gen.c flexdef.h flexint.h tables.h tables_shared.h libmain.o: libmain.c libyywrap.o: libyywrap.c main.o: main.c flexdef.h flexint.h version.h options.h scanopt.h \ tables.h tables_shared.h misc.o: misc.c flexdef.h flexint.h tables.h tables_shared.h nfa.o: nfa.c flexdef.h flexint.h options.o: options.c options.h scanopt.h flexdef.h flexint.h parse.o: parse.c flexdef.h flexint.h tables.h tables_shared.h scan.o: scan.c flexdef.h flexint.h parse.h scanopt.o: scanopt.c flexdef.h flexint.h scanopt.h skel.o: skel.c flexdef.h flexint.h sym.o: sym.c flexdef.h flexint.h tables.o: tables.c flexdef.h flexint.h tables.h tables_shared.h tables_shared.o: tables_shared.c flexdef.h flexint.h tables.h \ tables_shared.h tblcmp.o: tblcmp.c flexdef.h flexint.h yylex.o: yylex.c flexdef.h flexint.h parse.h filter.o: filter.c flexdef.h flexint.h # Create the ChangeLog, but only if we're inside a git working directory ChangeLog: $(srcdir)/tools/git2cl if [ -d $(srcdir)/.git ] ; then \ $(srcdir)/tools/git2cl > $@ \ ; fi # Run GNU indent on sources. Don't run this unless all the sources compile cleanly. # # Whole idea: # 1. Check for .indent.pro, otherwise indent will use unknown # settings, or worse, the GNU defaults.) # 2. Check that this is GNU indent. # 3. Make sure to process only the NON-generated .c and .h files. # 4. Run indent twice per file. The first time is a test. # Otherwise, indent overwrites your file even if it fails! indentfiles = \ buf.c \ ccl.c \ dfa.c \ ecs.c \ scanflags.c \ filter.c \ flexdef.h \ gen.c \ libmain.c \ libyywrap.c \ main.c \ misc.c \ nfa.c \ options.c \ options.h \ regex.c \ scanopt.c \ scanopt.h \ sym.c \ tables.c \ tables.h \ tables_shared.c \ tables_shared.h \ tblcmp.c indent: if [ -f .indent.pro ] ; then \ for f in $(indentfiles);\ do\ echo indenting $$f ;\ $(indent) < $$f >/dev/null && indent $$f || echo $$f FAILED to indent ;\ done \ fi install-exec-hook: cd $(DESTDIR)$(bindir) && \ $(LN_S) -f flex$(EXEEXT) flex++$(EXEEXT) .PHONY: ChangeLog tags indent flex-2.5.39/scan.l0000644000175000017500000006330512314546064014137 0ustar srivastasrivasta/* scan.l - scanner for flex input -*-C-*- */ %{ /* Copyright (c) 1990 The Regents of the University of California. */ /* All rights reserved. */ /* This code is derived from software contributed to Berkeley by */ /* Vern Paxson. */ /* The United States Government has rights in this work pursuant */ /* to contract no. DE-AC03-76SF00098 between the United States */ /* Department of Energy and the University of California. */ /* This file is part of flex. */ /* Redistribution and use in source and binary forms, with or without */ /* modification, are permitted provided that the following conditions */ /* are met: */ /* 1. Redistributions of source code must retain the above copyright */ /* notice, this list of conditions and the following disclaimer. */ /* 2. Redistributions in binary form must reproduce the above copyright */ /* notice, this list of conditions and the following disclaimer in the */ /* documentation and/or other materials provided with the distribution. */ /* Neither the name of the University nor the names of its contributors */ /* may be used to endorse or promote products derived from this software */ /* without specific prior written permission. */ /* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR */ /* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED */ /* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */ /* PURPOSE. */ #include "flexdef.h" #include "parse.h" extern bool tablesverify, tablesext; extern int trlcontxt; /* Set in parse.y for each rule. */ extern const char *escaped_qstart, *escaped_qend; #define ACTION_ECHO add_action( yytext ) #define ACTION_IFDEF(def, should_define) \ { \ if ( should_define ) \ action_define( def, 1 ); \ } #define ACTION_ECHO_QSTART add_action (escaped_qstart) #define ACTION_ECHO_QEND add_action (escaped_qend) #define ACTION_M4_IFDEF(def, should_define) \ do{ \ if ( should_define ) \ buf_m4_define( &m4defs_buf, def, NULL);\ else \ buf_m4_undefine( &m4defs_buf, def);\ } while(0) #define MARK_END_OF_PROLOG mark_prolog(); #define YY_DECL \ int flexscan() #define RETURNCHAR \ yylval = (unsigned char) yytext[0]; \ return CHAR; #define RETURNNAME \ if(yyleng < MAXLINE) \ { \ strcpy( nmstr, yytext ); \ } \ else \ { \ synerr(_("Input line too long\n")); \ FLEX_EXIT(EXIT_FAILURE); \ } \ return NAME; #define PUT_BACK_STRING(str, start) \ for ( i = strlen( str ) - 1; i >= start; --i ) \ unput((str)[i]) #define CHECK_REJECT(str) \ if ( all_upper( str ) ) \ reject = true; #define CHECK_YYMORE(str) \ if ( all_lower( str ) ) \ yymore_used = true; #define YY_USER_INIT \ if ( getenv("POSIXLY_CORRECT") ) \ posix_compat = true; %} %option caseless nodefault stack noyy_top_state %option nostdinit %x SECT2 SECT2PROLOG SECT3 CODEBLOCK PICKUPDEF SC CARETISBOL NUM QUOTE %x FIRSTCCL CCL ACTION RECOVER COMMENT ACTION_STRING PERCENT_BRACE_ACTION %x OPTION LINEDIR CODEBLOCK_MATCH_BRACE %x GROUP_WITH_PARAMS %x GROUP_MINUS_PARAMS %x EXTENDED_COMMENT %x COMMENT_DISCARD WS [[:blank:]]+ OPTWS [[:blank:]]* NOT_WS [^[:blank:]\r\n] NL \r?\n NAME ([[:alpha:]_][[:alnum:]_-]*) NOT_NAME [^[:alpha:]_*\n]+ SCNAME {NAME} ESCSEQ (\\([^\n]|[0-7]{1,3}|x[[:xdigit:]]{1,2})) FIRST_CCL_CHAR ([^\\\n]|{ESCSEQ}) CCL_CHAR ([^\\\n\]]|{ESCSEQ}) CCL_EXPR ("[:"^?[[:alpha:]]+":]") LEXOPT [aceknopr] M4QSTART "[[" M4QEND "]]" %% static int bracelevel, didadef, indented_code; static int doing_rule_action = false; static int option_sense; int doing_codeblock = false; int i, brace_depth=0, brace_start_line=0; Char nmdef[MAXLINE]; { ^{WS} indented_code = true; BEGIN(CODEBLOCK); ^"/*" ACTION_ECHO; yy_push_state( COMMENT ); ^#{OPTWS}line{WS} yy_push_state( LINEDIR ); ^"%s"{NAME}? return SCDECL; ^"%x"{NAME}? return XSCDECL; ^"%{".*{NL} { ++linenum; line_directive_out( (FILE *) 0, 1 ); indented_code = false; BEGIN(CODEBLOCK); } ^"%top"[[:blank:]]*"{"[[:blank:]]*{NL} { brace_start_line = linenum; ++linenum; buf_linedir( &top_buf, infilename?infilename:"", linenum); brace_depth = 1; yy_push_state(CODEBLOCK_MATCH_BRACE); } ^"%top".* synerr( _("malformed '%top' directive") ); {WS} /* discard */ ^"%%".* { sectnum = 2; bracelevel = 0; mark_defs1(); line_directive_out( (FILE *) 0, 1 ); BEGIN(SECT2PROLOG); return SECTEND; } ^"%pointer".*{NL} yytext_is_array = false; ++linenum; ^"%array".*{NL} yytext_is_array = true; ++linenum; ^"%option" BEGIN(OPTION); return OPTION_OP; ^"%"{LEXOPT}{OPTWS}[[:digit:]]*{OPTWS}{NL} ++linenum; /* ignore */ ^"%"{LEXOPT}{WS}.*{NL} ++linenum; /* ignore */ /* xgettext: no-c-format */ ^"%"[^sxaceknopr{}].* synerr( _( "unrecognized '%' directive" ) ); ^{NAME} { if(yyleng < MAXLINE) { strcpy( nmstr, yytext ); } else { synerr( _("Definition name too long\n")); FLEX_EXIT(EXIT_FAILURE); } didadef = false; BEGIN(PICKUPDEF); } {SCNAME} RETURNNAME; ^{OPTWS}{NL} ++linenum; /* allows blank lines in section 1 */ {OPTWS}{NL} ACTION_ECHO; ++linenum; /* maybe end of comment line */ } { "*/" ACTION_ECHO; yy_pop_state(); "*" ACTION_ECHO; {M4QSTART} ACTION_ECHO_QSTART; {M4QEND} ACTION_ECHO_QEND; [^*\n] ACTION_ECHO; {NL} ++linenum; ACTION_ECHO; } { /* This is the same as COMMENT, but is discarded rather than output. */ "*/" yy_pop_state(); "*" ; [^*\n] ; {NL} ++linenum; } { ")" yy_pop_state(); [^\n\)]+ ; {NL} ++linenum; } { \n yy_pop_state(); [[:digit:]]+ linenum = myctoi( yytext ); \"[^"\n]*\" { flex_free( (void *) infilename ); infilename = copy_string( yytext + 1 ); infilename[strlen( infilename ) - 1] = '\0'; } . /* ignore spurious characters */ } { ^"%}".*{NL} ++linenum; BEGIN(INITIAL); {M4QSTART} ACTION_ECHO_QSTART; {M4QEND} ACTION_ECHO_QEND; . ACTION_ECHO; {NL} { ++linenum; ACTION_ECHO; if ( indented_code ) BEGIN(INITIAL); } } { "}" { if( --brace_depth == 0){ /* TODO: Matched. */ yy_pop_state(); }else buf_strnappend(&top_buf, yytext, yyleng); } "{" { brace_depth++; buf_strnappend(&top_buf, yytext, yyleng); } {NL} { ++linenum; buf_strnappend(&top_buf, yytext, yyleng); } {M4QSTART} buf_strnappend(&top_buf, escaped_qstart, strlen(escaped_qstart)); {M4QEND} buf_strnappend(&top_buf, escaped_qend, strlen(escaped_qend)); [^{}\r\n] { buf_strnappend(&top_buf, yytext, yyleng); } <> { linenum = brace_start_line; synerr(_("Unmatched '{'")); yyterminate(); } } { {WS} /* separates name and definition */ {NOT_WS}[^\r\n]* { if(yyleng < MAXLINE) { strcpy( (char *) nmdef, yytext ); } else { format_synerr( _("Definition value for {%s} too long\n"), nmstr); FLEX_EXIT(EXIT_FAILURE); } /* Skip trailing whitespace. */ for ( i = strlen( (char *) nmdef ) - 1; i >= 0 && (nmdef[i] == ' ' || nmdef[i] == '\t'); --i ) ; nmdef[i + 1] = '\0'; ndinstal( nmstr, nmdef ); didadef = true; } {NL} { if ( ! didadef ) synerr( _( "incomplete name definition" ) ); BEGIN(INITIAL); ++linenum; } }