pgc.c
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:79k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. /* A lexical scanner generated by flex */
  2. /* Scanner skeleton version:
  3.  * $FreeBSD: src/usr.bin/lex/skel.c,v 1.2.2.1 1999/08/29 15:29:33 peter Exp $
  4.  */
  5. #define FLEX_SCANNER
  6. #define YY_FLEX_MAJOR_VERSION 2
  7. #define YY_FLEX_MINOR_VERSION 5
  8. #include <stdio.h>
  9. /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
  10. #ifdef c_plusplus
  11. #ifndef __cplusplus
  12. #define __cplusplus
  13. #endif
  14. #endif
  15. #ifdef __cplusplus
  16. #include <stdlib.h>
  17. #include <unistd.h>
  18. /* Use prototypes in function declarations. */
  19. #define YY_USE_PROTOS
  20. /* The "const" storage-class-modifier is valid. */
  21. #define YY_USE_CONST
  22. #else /* ! __cplusplus */
  23. #if __STDC__
  24. #define YY_USE_PROTOS
  25. #define YY_USE_CONST
  26. #endif /* __STDC__ */
  27. #endif /* ! __cplusplus */
  28. #ifdef __TURBOC__
  29.  #pragma warn -rch
  30.  #pragma warn -use
  31. #include <io.h>
  32. #include <stdlib.h>
  33. #define YY_USE_CONST
  34. #define YY_USE_PROTOS
  35. #endif
  36. #ifdef YY_USE_CONST
  37. #define yyconst const
  38. #else
  39. #define yyconst
  40. #endif
  41. #ifdef YY_USE_PROTOS
  42. #define YY_PROTO(proto) proto
  43. #else
  44. #define YY_PROTO(proto) ()
  45. #endif
  46. /* Returned upon end-of-file. */
  47. #define YY_NULL 0
  48. /* Promotes a possibly negative, possibly signed char to an unsigned
  49.  * integer for use as an array index.  If the signed char is negative,
  50.  * we want to instead treat it as an 8-bit unsigned char, hence the
  51.  * double cast.
  52.  */
  53. #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
  54. /* Enter a start condition.  This macro really ought to take a parameter,
  55.  * but we do it the disgusting crufty way forced on us by the ()-less
  56.  * definition of BEGIN.
  57.  */
  58. #define BEGIN yy_start = 1 + 2 *
  59. /* Translate the current start state into a value that can be later handed
  60.  * to BEGIN to return to the state.  The YYSTATE alias is for lex
  61.  * compatibility.
  62.  */
  63. #define YY_START ((yy_start - 1) / 2)
  64. #define YYSTATE YY_START
  65. /* Action number for EOF rule of a given start state. */
  66. #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
  67. /* Special action meaning "start processing a new file". */
  68. #define YY_NEW_FILE yyrestart( yyin )
  69. #define YY_END_OF_BUFFER_CHAR 0
  70. /* Size of default input buffer. */
  71. #define YY_BUF_SIZE 65536
  72. typedef struct yy_buffer_state *YY_BUFFER_STATE;
  73. extern int yyleng;
  74. extern FILE *yyin, *yyout;
  75. #define EOB_ACT_CONTINUE_SCAN 0
  76. #define EOB_ACT_END_OF_FILE 1
  77. #define EOB_ACT_LAST_MATCH 2
  78. /* The funky do-while in the following #define is used to turn the definition
  79.  * int a single C statement (which needs a semi-colon terminator).  This
  80.  * avoids problems with code like:
  81.  *
  82.  *  if ( condition_holds )
  83.  * yyless( 5 );
  84.  * else
  85.  * do_something_else();
  86.  *
  87.  * Prior to using the do-while the compiler would get upset at the
  88.  * "else" because it interpreted the "if" statement as being all
  89.  * done when it reached the ';' after the yyless() call.
  90.  */
  91. /* Return all but the first 'n' matched characters back to the input stream. */
  92. #define yyless(n) 
  93. do 
  94. /* Undo effects of setting up yytext. */ 
  95. *yy_cp = yy_hold_char; 
  96. YY_RESTORE_YY_MORE_OFFSET 
  97. yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; 
  98. YY_DO_BEFORE_ACTION; /* set up yytext again */ 
  99. while ( 0 )
  100. #define unput(c) yyunput( c, yytext_ptr )
  101. /* The following is because we cannot portably get our hands on size_t
  102.  * (without autoconf's help, which isn't available because we want
  103.  * flex-generated scanners to compile on their own).
  104.  */
  105. typedef unsigned int yy_size_t;
  106. struct yy_buffer_state
  107. {
  108. FILE *yy_input_file;
  109. char *yy_ch_buf; /* input buffer */
  110. char *yy_buf_pos; /* current position in input buffer */
  111. /* Size of input buffer in bytes, not including room for EOB
  112.  * characters.
  113.  */
  114. yy_size_t yy_buf_size;
  115. /* Number of characters read into yy_ch_buf, not including EOB
  116.  * characters.
  117.  */
  118. int yy_n_chars;
  119. /* Whether we "own" the buffer - i.e., we know we created it,
  120.  * and can realloc() it to grow it, and should free() it to
  121.  * delete it.
  122.  */
  123. int yy_is_our_buffer;
  124. /* Whether this is an "interactive" input source; if so, and
  125.  * if we're using stdio for input, then we want to use getc()
  126.  * instead of fread(), to make sure we stop fetching input after
  127.  * each newline.
  128.  */
  129. int yy_is_interactive;
  130. /* Whether we're considered to be at the beginning of a line.
  131.  * If so, '^' rules will be active on the next match, otherwise
  132.  * not.
  133.  */
  134. int yy_at_bol;
  135. /* Whether to try to fill the input buffer when we reach the
  136.  * end of it.
  137.  */
  138. int yy_fill_buffer;
  139. int yy_buffer_status;
  140. #define YY_BUFFER_NEW 0
  141. #define YY_BUFFER_NORMAL 1
  142. /* When an EOF's been seen but there's still some text to process
  143.  * then we mark the buffer as YY_EOF_PENDING, to indicate that we
  144.  * shouldn't try reading from the input source any more.  We might
  145.  * still have a bunch of tokens to match, though, because of
  146.  * possible backing-up.
  147.  *
  148.  * When we actually see the EOF, we change the status to "new"
  149.  * (via yyrestart()), so that the user can continue scanning by
  150.  * just pointing yyin at a new input file.
  151.  */
  152. #define YY_BUFFER_EOF_PENDING 2
  153. };
  154. static YY_BUFFER_STATE yy_current_buffer = 0;
  155. /* We provide macros for accessing buffer states in case in the
  156.  * future we want to put the buffer states in a more general
  157.  * "scanner state".
  158.  */
  159. #define YY_CURRENT_BUFFER yy_current_buffer
  160. /* yy_hold_char holds the character lost when yytext is formed. */
  161. static char yy_hold_char;
  162. static int yy_n_chars; /* number of characters read into yy_ch_buf */
  163. int yyleng;
  164. /* Points to current character in buffer. */
  165. static char *yy_c_buf_p = (char *) 0;
  166. static int yy_init = 1; /* whether we need to initialize */
  167. static int yy_start = 0; /* start state number */
  168. /* Flag which is used to allow yywrap()'s to do buffer switches
  169.  * instead of setting up a fresh yyin.  A bit of a hack ...
  170.  */
  171. static int yy_did_buffer_switch_on_eof;
  172. void yyrestart YY_PROTO(( FILE *input_file ));
  173. void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
  174. void yy_load_buffer_state YY_PROTO(( void ));
  175. YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
  176. void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
  177. void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
  178. void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
  179. #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
  180. YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
  181. YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
  182. YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
  183. static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
  184. static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
  185. static void yy_flex_free YY_PROTO(( void * ));
  186. #define yy_new_buffer yy_create_buffer
  187. #define yy_set_interactive(is_interactive) 
  188. if ( ! yy_current_buffer ) 
  189. yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); 
  190. yy_current_buffer->yy_is_interactive = is_interactive; 
  191. }
  192. #define yy_set_bol(at_bol) 
  193. if ( ! yy_current_buffer ) 
  194. yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); 
  195. yy_current_buffer->yy_at_bol = at_bol; 
  196. }
  197. #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
  198. #define YY_USES_REJECT
  199. typedef unsigned char YY_CHAR;
  200. FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
  201. typedef int yy_state_type;
  202. extern int yylineno;
  203. int yylineno = 1;
  204. extern char *yytext;
  205. #define yytext_ptr yytext
  206. static yy_state_type yy_get_previous_state YY_PROTO(( void ));
  207. static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
  208. static int yy_get_next_buffer YY_PROTO(( void ));
  209. static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
  210. /* Done after the current pattern has been matched and before the
  211.  * corresponding action - sets up yytext.
  212.  */
  213. #define YY_DO_BEFORE_ACTION 
  214. yytext_ptr = yy_bp; 
  215. yyleng = (int) (yy_cp - yy_bp); 
  216. yy_hold_char = *yy_cp; 
  217. *yy_cp = ''; 
  218. yy_c_buf_p = yy_cp;
  219. #define YY_NUM_RULES 76
  220. #define YY_END_OF_BUFFER 77
  221. static yyconst short int yy_acclist[366] =
  222.     {   0,
  223.        10,   10,    6,    6,   23,   23,   26,   26,    9,    9,
  224.        27,   27,   18,   18,   77,   76,   24,   76,   76,   76,
  225.        76,   76,   65,   76,   59,   65,   76,   59,   76,   24,
  226.        65,   76,   48,   65,   76,   53,   65,   76,   57,   65,
  227.        76,   58,   65,   76,   52,   65,   76,   55,   65,   76,
  228.        51,   65,   76,   56,   65,   76,   65,   76,   54,   65,
  229.        76,   39,   65,   76,16420,   50,   65,   76,   64,   65,
  230.        76,   49,   65,   76,   49,   65,   76,   62,   65,   76,
  231.        63,   65,   76,   60,   65,   76,   61,   65,   76,   45,
  232.        76,   44,   45,   76,   44,   76,   33,   45,   76,   21,
  233.        24,   45,   76,   31,   33,   45,   76,   31,   33,   45,
  234.        76,   15,   45,   76,   31,   45,   76,   31,   33,   45,
  235.        76,   31,   45,   76,   31,   33,   45,   76,   39,   45,
  236.        76,16420,   31,   33,   45,   76,   43,   45,   76,16419,
  237.        43,   45,   76,16419,   43,   45,   76,16419,   74,   76,
  238.        73,   76,   73,   74,   76,   24,   74,   76,   74,   76,
  239.        74,   76,   74,   76,   74,   76,   74,   75,   76,   71,
  240.        76,   69,   71,   76,   71,   76,   71,   76,   71,   76,
  241.        71,   76,   70,   76,   67,   76,   68,   76,   10,   76,
  242.         8,   76,    3,    6,   76,    3,    6,   76,    3,   76,
  243.         6,   76,   23,   76,   22,   76,   26,   76,   25,   76,
  244.        26,   76,    9,   76,   14,   76,   27,   76,   28,   76,
  245.        18,   76,   16,   76,   76,   40,16421,    4,   40,16421,
  246.        48,   48,   48,   48,   39,16420,   40,16421,   40,16421,
  247.        49,   49,   33,   33,   33,   34,   33,   33,    4,   33,
  248.        33,   29,   33,   42,   43,16419,    7,   13,   74,   74,
  249.        74,   40,   74,16421,    4,   74,   40,   74,16421,   68,
  250.        10,    6,    6,    5,   23,   26,   26,   26,    9,   27,
  251.        18,   17,   19,    4,    4,   40,16421,   48,   48,   47,
  252.      8228,   40,16421,   41,16422,   49,   32,   30,   32,   30,
  253.        32,   34,   30,    1,   33,   33,   30,   32,    4,   33,
  254.         4,   33,    4,   33,   42, 8227,   74,   74,   74,    4,
  255.        74,    4,   74,   40,   74,16421,   12,    5,   11,   20,
  256.      8229,    2,    4,   49,   32,    2,    4,   33,   32,   42,
  257.      8229,   74,   74,    2,    4,   74,    2,    2,    2,   48,
  258.      8230,   49,   42,    2,   74,    2,   74,    2,   49,   46,
  259.        49,   46,   46,   66,   72
  260.     } ;
  261. static yyconst short int yy_accept[273] =
  262.     {   0,
  263.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  264.         1,    1,    1,    2,    3,    4,    5,    6,    7,    8,
  265.         9,   10,   11,   12,   13,   14,   15,   16,   17,   19,
  266.        20,   21,   22,   23,   25,   28,   30,   33,   36,   39,
  267.        42,   45,   48,   51,   54,   57,   59,   62,   66,   69,
  268.        72,   75,   78,   81,   84,   87,   90,   92,   95,   97,
  269.       100,  104,  108,  112,  115,  118,  122,  125,  129,  133,
  270.       137,  141,  145,  149,  151,  153,  156,  159,  161,  163,
  271.       165,  167,  170,  172,  175,  177,  179,  181,  183,  185,
  272.       187,  189,  191,  193,  196,  199,  201,  203,  205,  207,
  273.       209,  211,  213,  215,  217,  219,  221,  223,  225,  226,
  274.       226,  226,  228,  229,  231,  231,  232,  233,  234,  235,
  275.       235,  237,  239,  239,  239,  239,  241,  241,  242,  243,
  276.       244,  245,  245,  246,  247,  248,  248,  249,  251,  252,
  277.       254,  255,  255,  255,  257,  258,  259,  260,  261,  262,
  278.       265,  267,  270,  271,  272,  272,  272,  273,  274,  274,
  279.       274,  275,  276,  277,  278,  279,  280,  280,  280,  281,
  280.       282,  282,  282,  283,  284,  284,  284,  284,  285,  286,
  281.       288,  289,  290,  290,  291,  292,  294,  294,  296,  297,
  282.       298,  300,  303,  304,  304,  305,  306,  307,  309,  311,
  283.       313,  315,  315,  315,  316,  317,  318,  319,  320,  322,
  284.       324,  327,  327,  327,  328,  329,  329,  329,  330,  330,
  285.       330,  331,  332,  332,  334,  334,  334,  334,  334,  335,
  286.       336,  339,  340,  341,  343,  344,  347,  348,  349,  350,
  287.       351,  352,  352,  353,  354,  356,  358,  359,  359,  359,
  288.       360,  360,  360,  362,  362,  363,  364,  364,  364,  364,
  289.       364,  364,  364,  364,  364,  364,  364,  364,  365,  365,
  290.       366,  366
  291.     } ;
  292. static yyconst int yy_ec[256] =
  293.     {   0,
  294.         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
  295.         1,    4,    1,    1,    1,    1,    1,    1,    1,    1,
  296.         1,    1,    1,    1,    1,    1,    1,    5,    1,    1,
  297.         1,    2,    5,    6,    7,    8,    9,    5,   10,   11,
  298.        12,   13,   14,   15,   16,   17,   18,   19,   19,   19,
  299.        19,   19,   19,   19,   19,   19,   19,   20,   21,   22,
  300.        23,   24,    5,    5,   25,   26,   27,   28,   29,   30,
  301.        25,   25,   31,   25,   25,   32,   25,   33,   25,   25,
  302.        34,   25,   35,   25,   36,   25,   25,   37,   25,   25,
  303.        38,   39,   40,    5,   25,    1,   25,   26,   27,   28,
  304.        29,   30,   25,   25,   31,   25,   25,   32,   25,   33,
  305.        25,   25,   34,   25,   35,   25,   36,   25,   25,   37,
  306.        25,   25,   41,   22,   42,    5,    1,   25,   25,   25,
  307.        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
  308.        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
  309.        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
  310.        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
  311.        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
  312.        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
  313.        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
  314.        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
  315.        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
  316.        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
  317.        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
  318.        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
  319.        25,   25,   25,   25,   25
  320.     } ;
  321. static yyconst int yy_meta[43] =
  322.     {   0,
  323.         1,    2,    3,    4,    5,    6,    5,    5,    5,    7,
  324.         1,    1,    8,    5,    1,    9,   10,    5,   11,    5,
  325.         1,    5,    5,    5,   12,   12,   12,   12,   12,   12,
  326.        12,   12,   12,   12,   12,   12,   12,    1,   13,    1,
  327.         1,    1
  328.     } ;
  329. static yyconst short int yy_base[302] =
  330.     {   0,
  331.         0,    4,   23,    0,   65,    0,  106,  126,  146,  166,
  332.       186,    0,  597,  588,  219,  239,  589,  584,  107,  112,
  333.       575,  570,  117,  137,  116,  121,  572, 1138, 1138,   97,
  334.       552,  556,   98, 1138,    0,  154, 1138,  132, 1138, 1138,
  335.      1138, 1138, 1138, 1138,  117,  549,  141,  262, 1138, 1138,
  336.         0,  521, 1138, 1138, 1138, 1138, 1138, 1138, 1138,  540,
  337.      1138,  175,  157, 1138,  193,  182,  266,  258,    0,  290,
  338.       284,  326,  544,    0, 1138,    0,    0,  189,  533,  528,
  339.       212,    0, 1138, 1138,  217,  518,  523,  221, 1138, 1138,
  340.         0,    0,    9,    0,  338,  162,    0,    0, 1138,  495,
  341.      1138,  168,    0,  247,  329, 1138,    0,  361,    0,  510,
  342.       237,  364,  379,  375,  337,  257,  270,  522,  346,  505,
  343.         0,  402,  516,  406,  397,  421,  356,    0,  487,  495,
  344.       318,  425,  288,  490,  336,  340,  448,  468,  490,  491,
  345.       121,  430,  501,  495, 1138, 1138,    0,  477,  357,  519,
  346.       537,  524,    0,    0,  440,  560,    0,    0,  168,  481,
  347.       445,    0,  450,  219,  448,    0,  476,  563,  498,    0,
  348.       529,  572, 1138, 1138,  575,  567,  472,  592,  465,  615,
  349.       585,  590,  471, 1138, 1138,  619,  450,  623,  436, 1138,
  350.      1138,  441, 1138,  456, 1138,    0,  379,  451,    0,  434,
  351.       398,  421,    0,  267, 1138,  641,  633,  288,  661,  420,
  352.       657,  684,  687, 1138,  545,  696,  699, 1138,  708,  711,
  353.      1138, 1138,  254,  600,  651,  720,  723,  714,  732,  417,
  354.       738,  399,  365,    0,  417,  742,  745,  748,  751,  760,
  355.      1138,  766,  373,  373,  769,  772,  775,  784,  366,  341,
  356.       335,  306,    0,  279,  787, 1138,  408,  273,  256,  250,
  357.       248,  214,  198,  177,  164,  164,  138, 1138,   82, 1138,
  358.      1138,  819,  832,  845,  858,  871,  884,  897,  910,  923,
  359.       936,  939,  947,  955,  967,  970,  982,  995, 1004, 1013,
  360.      1026, 1039, 1052, 1064, 1077, 1090, 1103, 1108, 1120,    2,
  361.      1125
  362.     } ;
  363. static yyconst short int yy_def[302] =
  364.     {   0,
  365.       272,  272,  271,    3,  271,    5,  273,  273,  274,  274,
  366.       272,   11,  275,  275,  276,  276,  277,  277,  278,  278,
  367.       279,  279,  272,  272,  280,  280,  271,  271,  271,  271,
  368.       271,  271,  271,  271,  271,  271,  271,  281,  271,  271,
  369.       271,  271,  271,  271,  271,  271,  271,  271,  271,  271,
  370.       282,  282,  271,  271,  271,  271,  271,  271,  271,  283,
  371.       271,  283,   62,  271,  271,   62,  271,   62,   48,  271,
  372.       284,  284,   72,  285,  271,  285,  285,  285,  285,  285,
  373.       285,  285,  271,  271,  271,  271,  271,  271,  271,  271,
  374.       286,  287,  271,  288,  288,  289,   95,  290,  271,  291,
  375.       271,  291,  292,  271,  271,  271,  293,  271,  294,  271,
  376.       271,  271,  295,  271,  271,  281,  281,  271,  281,  271,
  377.        48,  271,  296,  271,  271,  271,  271,  282,  282,  283,
  378.       283,  271,  131,  271,  131,  271,  297,  295,  297,  283,
  379.       298,  271,  271,   72,  271,  271,  285,  285,  285,  285,
  380.       299,  285,  286,  287,  271,  271,  288,   95,  289,  289,
  381.       289,  290,  291,  291,  291,  292,  271,  271,  271,  293,
  382.       271,  271,  271,  271,  271,  271,  295,  295,  178,  271,
  383.       281,  271,  296,  271,  271,  271,  271,  271,  282,  271,
  384.       271,  271,  271,  297,  271,  139,  139,  297,  138,  138,
  385.       138,  271,  300,  298,  271,  285,  285,  299,  299,  209,
  386.       285,  271,  271,  271,  271,  271,  271,  271,  271,  271,
  387.       271,  271,  295,  178,  271,  271,  271,  271,  282,  297,
  388.       138,  295,  301,  285,  299,  209,  295,  295,  271,  271,
  389.       271,  271,  282,  301,  299,  299,  271,  271,  271,  282,
  390.       271,  271,  282,  271,  271,  271,  271,  271,  271,  271,
  391.       271,  271,  271,  271,  271,  271,  271,  271,  271,  271,
  392.         0,  271,  271,  271,  271,  271,  271,  271,  271,  271,
  393.       271,  271,  271,  271,  271,  271,  271,  271,  271,  271,
  394.       271,  271,  271,  271,  271,  271,  271,  271,  271,  271,
  395.       271
  396.     } ;
  397. static yyconst short int yy_nxt[1181] =
  398.     {   0,
  399.       271,  115,  115,  115,  271,   29,  116,  271,  271,   29,
  400.       155,  156,  155,  233,  271,   30,   31,   32,   33,   30,
  401.        31,   32,   33,   34,   35,   36,   35,   34,   37,   38,
  402.        34,   39,   34,   40,   41,   42,   43,   44,   45,   46,
  403.        47,   48,   34,   49,   34,   50,   34,   51,   51,   51,
  404.        51,   52,   51,   51,   51,   51,   51,   51,   51,   51,
  405.        53,   34,   54,   55,   56,   57,   58,   59,   58,   60,
  406.        61,   60,   62,   63,   64,   65,   65,   63,   63,   65,
  407.        66,   67,   68,   69,   70,   65,   63,   63,   63,   71,
  408.        72,   71,   71,   71,   71,   71,   71,   71,   71,   71,
  409.        71,   73,   65,   57,   65,   57,   57,   75,   75,   76,
  410.       270,   77,  101,  110,  114,  111,  111,  101,  105,  105,
  411.       105,   78,   79,   80,   81,  108,   82,   75,   75,   76,
  412.       108,   77,  106,  120,  118,  121,  202,  203,  105,  105,
  413.       105,   78,   79,   80,   81,  102,   82,   84,   84,   84,
  414.       102,   29,  106,  113,  109,  115,  115,  115,  123,  109,
  415.       116,   85,   86,   87,   88,  269,   89,   84,   84,   84,
  416.       119,   29,  135,  165,  159,  271,  132,  132,  132,  161,
  417.       159,   85,   86,   87,   88,  161,   89,   90,   90,   90,
  418.       133,   29,  268,  134,  132,  132,  132,  137,  120,  267,
  419.       121,   30,   31,   32,   33,  148,  164,  149,  136,  266,
  420.        91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
  421.        91,   91,   91,   95,  165,   95,   95,   95,  152,  265,
  422.       149,   96,   95,  110,   95,  111,   97,  114,   95,  111,
  423.        95,   95,   95,   95,  264,   95,   95,   95,  167,  168,
  424.       167,   96,   95,  114,   95,  111,   97,  164,   95,  118,
  425.        95,   95,   95,  124,  124,  124,  223,  132,  132,  132,
  426.       138,  237,  118,  135,  263,  139,  271,  125,  126,  262,
  427.       121,  136,  202,  203,  122,  142,  142,  142,  261,  177,
  428.       127,  132,  132,  132,  130,  119,  130,  130,  130,  143,
  429.       235,  260,  130,  130,  191,  135,  192,  130,  119,  140,
  430.       256,  130,  130,  130,  141,  141,  141,  141,  141,  141,
  431.       141,  141,  141,  141,  141,  141,  141,  142,  142,  142,
  432.       169,  169,  169,  131,  190,  145,  190,  255,  115,  115,
  433.       115,  143,  158,  116,  158,  158,  158,  181,  182,  181,
  434.       159,  158,  191,  158,  191,  158,  193,  158,  193,  158,
  435.       158,  158,  171,  172,  171,  175,  175,  175,  254,  187,
  436.       173,  187,  253,  152,  188,  149,  175,  175,  175,  176,
  437.       202,  203,  112,  178,  119,  178,  178,  178,  202,  203,
  438.       176,  179,  178,  180,  178,  230,  178,  230,  178,  252,
  439.       178,  178,  178,  175,  175,  175,  250,  124,  124,  124,
  440.       185,  223,  185,  185,  232,  185,  232,  176,  177,  195,
  441.       122,  125,  175,  175,  175,  185,  132,  132,  132,  235,
  442.       127,  142,  142,  142,  245,  258,  176,  236,  259,  186,
  443.       136,  155,  156,  155,  203,  143,  215,  215,  215,  127,
  444.       195,  231,  196,  195,  196,  196,  196,  159,  195,  134,
  445.       196,  196,  229,  197,  198,  196,  198,  196,  188,  196,
  446.       196,  196,  199,  184,  199,  199,  199,  167,  168,  167,
  447.       200,  199,  224,  201,  223,  199,  164,  199,  164,  199,
  448.       199,  199,  195,  159,  196,  150,  196,  196,  196,  169,
  449.       169,  169,  196,  196,  271,  197,  131,  196,  134,  196,
  450.       131,  196,  196,  196,  205,  189,  205,  205,  184,  205,
  451.       175,  175,  206,  122,  118,  175,  175,  206,  112,  205,
  452.       171,  172,  171,  164,  207,  113,  112,  150,  177,  207,
  453.       151,  209,  211,  209,  209,  209,  215,  215,  215,  210,
  454.       209,  150,  209,  146,  209,  131,  209,  129,  209,  209,
  455.       209,  212,  213,  212,  216,  217,  216,  122,  113,  214,
  456.       112,  271,  218,  219,  220,  219,  175,  175,  175,  104,
  457.       222,  221,  222,  222,  104,  222,  181,  182,  181,   99,
  458.       176,  225,  182,  225,   99,  222,  178,   93,  178,  178,
  459.       178,  238,  239,  238,  179,  178,   93,  178,  271,  178,
  460.       271,  178,  271,  178,  178,  178,  175,  175,  175,  271,
  461.       175,  175,  175,  119,  227,  227,  227,  271,  226,  271,
  462.       176,  271,  271,  180,  176,  271,  271,  186,  228,  271,
  463.       271,  188,  175,  175,  206,  271,  234,  127,  234,  234,
  464.       271,  234,  225,  240,  225,  271,  207,  271,  175,  175,
  465.       206,  234,  177,  271,  271,  209,  271,  209,  209,  209,
  466.       271,  271,  207,  210,  209,  211,  209,  271,  209,  271,
  467.       209,  271,  209,  209,  209,  212,  213,  212,  212,  213,
  468.       212,  271,  271,  214,  271,  271,  214,  216,  217,  216,
  469.       216,  217,  216,  271,  271,  218,  271,  271,  218,  219,
  470.       220,  219,  219,  220,  219,  271,  271,  221,  271,  271,
  471.       221,  225,  240,  225,  227,  227,  227,  241,  271,  241,
  472.       241,  271,  241,  242,  242,  242,  271,  271,  228,  238,
  473.       239,  238,  241,  238,  239,  246,  238,  239,  238,  238,
  474.       239,  238,  247,  239,  247,  271,  271,  223,  271,  271,
  475.       223,  225,  182,  225,  271,  271,  243,  248,  248,  248,
  476.       238,  239,  246,  238,  239,  246,  247,  239,  247,  271,
  477.       271,  235,  271,  271,  235,  248,  248,  248,  257,  257,
  478.       257,  271,  271,  271,  271,  271,  271,  271,  226,  271,
  479.       249,  271,  271,  271,  271,  271,  271,  271,  271,  271,
  480.       271,  271,  271,  271,  271,  271,  271,  271,  251,   28,
  481.        28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
  482.        28,   28,   74,   74,   74,   74,   74,   74,   74,   74,
  483.        74,   74,   74,   74,   74,   83,   83,   83,   83,   83,
  484.        83,   83,   83,   83,   83,   83,   83,   83,   92,   92,
  485.        92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
  486.        92,   94,   94,   94,   94,   94,   94,   94,   94,   94,
  487.        94,   94,   94,   94,   98,   98,   98,   98,   98,   98,
  488.        98,   98,   98,   98,   98,   98,   98,  100,  100,  100,
  489.       100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
  490.       103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
  491.       103,  103,  103,  107,  107,  107,  107,  107,  107,  107,
  492.       107,  107,  107,  107,  107,  107,  117,  117,  117,  117,
  493.       117,  117,  117,  117,  117,  117,  117,  117,  117,  128,
  494.       128,  130,  271,  271,  130,  130,  144,  144,  144,  271,
  495.       271,  271,  271,  144,  271,  144,  144,  147,  271,  271,
  496.       147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
  497.       153,  153,  154,  154,  154,  154,  154,  154,  271,  154,
  498.       154,  154,  154,  154,  154,  157,  157,  157,  157,  157,
  499.       157,  157,  271,  157,  157,  157,  157,  157,  160,  271,
  500.       271,  160,  160,  162,  162,  162,  162,  162,  271,  162,
  501.       162,  162,  162,  162,  162,  162,  163,  163,  163,  163,
  502.       163,  271,  163,  163,  163,  163,  163,  163,  163,  166,
  503.       166,  166,  166,  166,  166,  271,  166,  166,  166,  166,
  504.       166,  166,  170,  170,  170,  170,  170,  170,  271,  170,
  505.       170,  170,  170,  170,  174,  174,  174,  174,  174,  174,
  506.       174,  174,  174,  174,  174,  174,  174,  177,  177,  271,
  507.       177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
  508.       183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
  509.       183,  183,  183,  194,  194,  194,  194,  194,  194,  194,
  510.       194,  194,  194,  194,  194,  194,  204,  204,  204,  204,
  511.       208,  208,  271,  208,  208,  208,  208,  208,  208,  208,
  512.       208,  208,  208,  244,  244,  244,  244,   27,  271,  271,
  513.       271,  271,  271,  271,  271,  271,  271,  271,  271,  271,
  514.       271,  271,  271,  271,  271,  271,  271,  271,  271,  271,
  515.       271,  271,  271,  271,  271,  271,  271,  271,  271,  271,
  516.       271,  271,  271,  271,  271,  271,  271,  271,  271,  271
  517.     } ;
  518. static yyconst short int yy_chk[1181] =
  519.     {   0,
  520.         0,   35,   35,   35,    0,    1,   35,    0,    0,    2,
  521.        93,   93,   93,  300,    0,    1,    1,    1,    1,    2,
  522.         2,    2,    2,    3,    3,    3,    3,    3,    3,    3,
  523.         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
  524.         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
  525.         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
  526.         3,    3,    3,    3,    3,    5,    5,    5,    5,    5,
  527.         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
  528.         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
  529.         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
  530.         5,    5,    5,    5,    5,    5,    5,    7,    7,    7,
  531.       269,    7,   19,   30,   33,   30,   33,   20,   23,   23,
  532.        23,    7,    7,    7,    7,   25,    7,    8,    8,    8,
  533.        26,    8,   23,   45,   38,   45,  141,  141,   24,   24,
  534.        24,    8,    8,    8,    8,   19,    8,    9,    9,    9,
  535.        20,    9,   24,   47,   25,   36,   36,   36,   47,   26,
  536.        36,    9,    9,    9,    9,  267,    9,   10,   10,   10,
  537.        38,   10,   63,  102,   96,   63,   62,   62,   62,   96,
  538.       159,   10,   10,   10,   10,  159,   10,   11,   11,   11,
  539.        62,   11,  266,   62,   65,   65,   65,   66,   66,  265,
  540.        66,   11,   11,   11,   11,   78,  102,   78,   65,  264,
  541.        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
  542.        11,   11,   11,   15,  164,   15,   15,   15,   81,  263,
  543.        81,   15,   15,   85,   15,   85,   15,   88,   15,   88,
  544.        15,   15,   15,   16,  262,   16,   16,   16,  104,  104,
  545.       104,   16,   16,  111,   16,  111,   16,  164,   16,  116,
  546.        16,   16,   16,   48,   48,   48,  223,   67,   67,   67,
  547.        68,  223,  117,   68,  261,   68,   68,   48,   48,  260,
  548.        48,   67,  204,  204,   67,   71,   71,   71,  259,  208,
  549.        48,   70,   70,   70,   70,  116,   70,   70,   70,   71,
  550.       208,  258,   70,   70,  133,   70,  133,   70,  117,   70,
  551.       254,   70,   70,   70,   70,   70,   70,   70,   70,   70,
  552.        70,   70,   70,   70,   70,   70,   70,   72,   72,   72,
  553.       105,  105,  105,  131,  131,   72,  131,  252,  115,  115,
  554.       115,   72,   95,  115,   95,   95,   95,  119,  119,  119,
  555.        95,   95,  135,   95,  135,   95,  136,   95,  136,   95,
  556.        95,   95,  108,  108,  108,  112,  112,  112,  251,  127,
  557.       108,  127,  250,  149,  127,  149,  114,  114,  114,  112,
  558.       233,  233,  112,  113,  119,  113,  113,  113,  244,  244,
  559.       114,  113,  113,  114,  113,  197,  113,  197,  113,  249,
  560.       113,  113,  113,  122,  122,  122,  243,  124,  124,  124,
  561.       125,  232,  125,  125,  201,  125,  201,  122,  235,  230,
  562.       122,  124,  126,  126,  126,  125,  132,  132,  132,  235,
  563.       122,  142,  142,  142,  235,  257,  126,  210,  257,  126,
  564.       132,  155,  155,  155,  202,  142,  161,  161,  161,  126,
  565.       137,  200,  137,  198,  137,  137,  137,  161,  194,  192,
  566.       137,  137,  189,  137,  137,  137,  137,  137,  187,  137,
  567.       137,  137,  138,  183,  138,  138,  138,  167,  167,  167,
  568.       138,  138,  179,  138,  177,  138,  165,  138,  163,  138,
  569.       138,  138,  139,  160,  139,  148,  139,  139,  139,  169,
  570.       169,  169,  139,  139,  144,  139,  140,  139,  134,  139,
  571.       130,  139,  139,  139,  143,  129,  143,  143,  123,  143,
  572.       150,  150,  150,  120,  118,  152,  152,  152,  110,  143,
  573.       171,  171,  171,  100,  150,   87,   86,  150,  151,  152,
  574.        80,  151,  152,  151,  151,  151,  215,  215,  215,  151,
  575.       151,   79,  151,   73,  151,   60,  151,   52,  151,  151,
  576.       151,  156,  156,  156,  168,  168,  168,   46,   32,  156,
  577.        31,   27,  168,  172,  172,  172,  175,  175,  175,   22,
  578.       176,  172,  176,  176,   21,  176,  181,  181,  181,   18,
  579.       175,  182,  182,  182,   17,  176,  178,   14,  178,  178,
  580.       178,  224,  224,  224,  178,  178,   13,  178,    0,  178,
  581.         0,  178,    0,  178,  178,  178,  180,  180,  180,    0,
  582.       186,  186,  186,  181,  188,  188,  188,    0,  182,    0,
  583.       180,    0,    0,  180,  186,    0,    0,  186,  188,    0,
  584.         0,  188,  206,  206,  206,    0,  207,  186,  207,  207,
  585.         0,  207,  225,  225,  225,    0,  206,    0,  211,  211,
  586.       211,  207,  209,    0,    0,  209,    0,  209,  209,  209,
  587.         0,    0,  211,  209,  209,  211,  209,    0,  209,    0,
  588.       209,    0,  209,  209,  209,  212,  212,  212,  213,  213,
  589.       213,    0,    0,  212,    0,    0,  213,  216,  216,  216,
  590.       217,  217,  217,    0,    0,  216,    0,    0,  217,  219,
  591.       219,  219,  220,  220,  220,    0,    0,  219,    0,    0,
  592.       220,  226,  226,  226,  227,  227,  227,  228,    0,  228,
  593.       228,    0,  228,  229,  229,  229,    0,    0,  227,  231,
  594.       231,  231,  228,  236,  236,  236,  237,  237,  237,  238,
  595.       238,  238,  239,  239,  239,    0,    0,  237,    0,    0,
  596.       238,  240,  240,  240,    0,    0,  229,  242,  242,  242,
  597.       245,  245,  245,  246,  246,  246,  247,  247,  247,    0,
  598.         0,  245,    0,    0,  246,  248,  248,  248,  255,  255,
  599.       255,    0,    0,    0,    0,    0,    0,    0,  240,    0,
  600.       242,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  601.         0,    0,    0,    0,    0,    0,    0,    0,  248,  272,
  602.       272,  272,  272,  272,  272,  272,  272,  272,  272,  272,
  603.       272,  272,  273,  273,  273,  273,  273,  273,  273,  273,
  604.       273,  273,  273,  273,  273,  274,  274,  274,  274,  274,
  605.       274,  274,  274,  274,  274,  274,  274,  274,  275,  275,
  606.       275,  275,  275,  275,  275,  275,  275,  275,  275,  275,
  607.       275,  276,  276,  276,  276,  276,  276,  276,  276,  276,
  608.       276,  276,  276,  276,  277,  277,  277,  277,  277,  277,
  609.       277,  277,  277,  277,  277,  277,  277,  278,  278,  278,
  610.       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
  611.       279,  279,  279,  279,  279,  279,  279,  279,  279,  279,
  612.       279,  279,  279,  280,  280,  280,  280,  280,  280,  280,
  613.       280,  280,  280,  280,  280,  280,  281,  281,  281,  281,
  614.       281,  281,  281,  281,  281,  281,  281,  281,  281,  282,
  615.       282,  283,    0,    0,  283,  283,  284,  284,  284,    0,
  616.         0,    0,    0,  284,    0,  284,  284,  285,    0,    0,
  617.       285,  285,  285,  285,  285,  285,  285,  285,  285,  285,
  618.       286,  286,  287,  287,  287,  287,  287,  287,    0,  287,
  619.       287,  287,  287,  287,  287,  288,  288,  288,  288,  288,
  620.       288,  288,    0,  288,  288,  288,  288,  288,  289,    0,
  621.         0,  289,  289,  290,  290,  290,  290,  290,    0,  290,
  622.       290,  290,  290,  290,  290,  290,  291,  291,  291,  291,
  623.       291,    0,  291,  291,  291,  291,  291,  291,  291,  292,
  624.       292,  292,  292,  292,  292,    0,  292,  292,  292,  292,
  625.       292,  292,  293,  293,  293,  293,  293,  293,    0,  293,
  626.       293,  293,  293,  293,  294,  294,  294,  294,  294,  294,
  627.       294,  294,  294,  294,  294,  294,  294,  295,  295,    0,
  628.       295,  295,  295,  295,  295,  295,  295,  295,  295,  295,
  629.       296,  296,  296,  296,  296,  296,  296,  296,  296,  296,
  630.       296,  296,  296,  297,  297,  297,  297,  297,  297,  297,
  631.       297,  297,  297,  297,  297,  297,  298,  298,  298,  298,
  632.       299,  299,    0,  299,  299,  299,  299,  299,  299,  299,
  633.       299,  299,  299,  301,  301,  301,  301,  271,  271,  271,
  634.       271,  271,  271,  271,  271,  271,  271,  271,  271,  271,
  635.       271,  271,  271,  271,  271,  271,  271,  271,  271,  271,
  636.       271,  271,  271,  271,  271,  271,  271,  271,  271,  271,
  637.       271,  271,  271,  271,  271,  271,  271,  271,  271,  271
  638.     } ;
  639. static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
  640. static char *yy_full_match;
  641. static int yy_lp;
  642. static int yy_looking_for_trail_begin = 0;
  643. static int yy_full_lp;
  644. static int *yy_full_state;
  645. #define YY_TRAILING_MASK 0x2000
  646. #define YY_TRAILING_HEAD_MASK 0x4000
  647. #define REJECT 
  648. *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ 
  649. yy_cp = yy_full_match; /* restore poss. backed-over text */ 
  650. yy_lp = yy_full_lp; /* restore orig. accepting pos. */ 
  651. yy_state_ptr = yy_full_state; /* restore orig. state */ 
  652. yy_current_state = *yy_state_ptr; /* restore curr. state */ 
  653. ++yy_lp; 
  654. goto find_rule; 
  655. }
  656. #define yymore() yymore_used_but_not_detected
  657. #define YY_MORE_ADJ 0
  658. #define YY_RESTORE_YY_MORE_OFFSET
  659. char *yytext;
  660. #line 1 "pgc.l"
  661. #define INITIAL 0
  662. /* This is a modified version of src/backend/parser/scan.l */
  663. #line 3 "pgc.l"
  664. #include "config.h"
  665. #include <ctype.h>
  666. #include <sys/types.h>
  667. #include <limits.h>
  668. #ifndef PATH_MAX
  669. #include <sys/param.h>
  670. #define PATH_MAX MAXPATHLEN
  671. #endif
  672. #if defined(HAVE_STRING_H)
  673. #include <string.h>
  674. #else
  675. #include <strings.h>
  676. #endif
  677. #include <errno.h>
  678. #include "postgres.h"
  679. #include "miscadmin.h"
  680. #include "nodes/pg_list.h"
  681. #include "nodes/parsenodes.h"
  682. #include "parser/gramparse.h"
  683. #include "parser/scansup.h"
  684. #include "extern.h"
  685. #include "preproc.h"
  686. #include "utils/builtins.h"
  687. #ifdef  YY_READ_BUF_SIZE
  688. #undef  YY_READ_BUF_SIZE
  689. #endif
  690. #define YY_READ_BUF_SIZE MAX_PARSE_BUFFER
  691. /* some versions of lex define this as a macro */
  692. #if defined(yywrap)
  693. #undef yywrap
  694. #endif /* yywrap */
  695. extern YYSTYPE yylval;
  696. int llen;
  697. char literal[MAX_PARSE_BUFFER];
  698. int before_comment;
  699. struct _yy_buffer { YY_BUFFER_STATE  buffer;
  700.     long lineno;
  701.     char       * filename;
  702.     struct _yy_buffer * next;
  703.   } *yy_buffer = NULL;
  704. struct _defines *defines = NULL;
  705. static char *old;
  706. #define C 1
  707. #define SQL 2
  708. #define incl 3
  709. #define def 4
  710. #define def_ident 5
  711. /* OK, here is a short description of lex/flex rules behavior.
  712.  * The longest pattern which matches an input string is always chosen.
  713.  * For equal-length patterns, the first occurring in the rules list is chosen.
  714.  * INITIAL is the starting condition, to which all non-conditional rules apply.
  715.  * When in an exclusive condition, only those rules defined for that condition apply.
  716.  *
  717.  * Exclusive states change parsing rules while the state is active.
  718.  * There are exclusive states for quoted strings, extended comments,
  719.  *  and to eliminate parsing troubles for numeric strings.
  720.  * Exclusive states:
  721.  *  <xb> binary numeric string - thomas 1997-11-16
  722.  *  <xc> extended C-style comments - tgl 1997-07-12
  723.  *  <xd> delimited identifiers (double-quoted identifiers) - tgl 1997-10-27
  724.  *  <xh> hexadecimal numeric string - thomas 1997-11-16
  725.  *  <xm> numeric strings with embedded minus sign - tgl 1997-09-05
  726.  *  <xq> quoted strings - tgl 1997-07-30
  727.  *
  728.  * The "extended comment" syntax closely resembles allowable operator syntax.
  729.  * So, when in condition <xc>, only strings which would terminate the
  730.  *  "extended comment" trigger any action other than "ignore".
  731.  * Be sure to match _any_ candidate comment, including those with appended
  732.  * operator-like symbols. - thomas 1997-07-14
  733.  */
  734. #define xb 6
  735. #define xc 7
  736. #define xd 8
  737. #define xdc 9
  738. #define xh 10
  739. #define xm 11
  740. #define xq 12
  741. /* Binary number
  742.  */
  743. /* Hexadecimal number
  744.  */
  745. /* Extended quote
  746.  * xqdouble implements SQL92 embedded quote
  747.  * xqcat allows strings to cross input lines
  748.  */
  749. /* Delimited quote
  750.  * Allows embedded spaces and other special characters into identifiers.
  751.  */
  752. /* Comments
  753.  * Ignored by the scanner and parser.
  754.  */
  755. /*
  756. real [-]?(((({digit}*.{digit}+)|({digit}+.{digit}*))([Ee][-+]?{digit}+)?)|({digit}+[Ee][-+]?{digit}+))
  757. */
  758. /* some stuff needed for ecpg */
  759. /* DO NOT PUT ANY COMMENTS IN THE FOLLOWING SECTION.
  760.  * AT&T lex does not properly handle C-style comments in this second lex block.
  761.  * So, put comments here. tgl - 1997-09-08
  762.  *
  763.  * Quoted strings must allow some special characters such as single-quote
  764.  *  and newline.
  765.  * Embedded single-quotes are implemented both in the SQL/92-standard
  766.  *  style of two adjacent single quotes "''" and in the Postgres/Java style
  767.  *  of escaped-quote "'".
  768.  * Other embedded escaped characters are matched explicitly and the leading
  769.  *  backslash is dropped from the string. - thomas 1997-09-24
  770.  */
  771. #line 904 "lex.yy.c"
  772. /* Macros after this point can all be overridden by user definitions in
  773.  * section 1.
  774.  */
  775. #ifndef YY_SKIP_YYWRAP
  776. #ifdef __cplusplus
  777. extern "C" int yywrap YY_PROTO(( void ));
  778. #else
  779. extern int yywrap YY_PROTO(( void ));
  780. #endif
  781. #endif
  782. #ifndef YY_NO_UNPUT
  783. static void yyunput YY_PROTO(( int c, char *buf_ptr ));
  784. #endif
  785. #ifndef yytext_ptr
  786. static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
  787. #endif
  788. #ifdef YY_NEED_STRLEN
  789. static int yy_flex_strlen YY_PROTO(( yyconst char * ));
  790. #endif
  791. #ifndef YY_NO_INPUT
  792. #ifdef __cplusplus
  793. static int yyinput YY_PROTO(( void ));
  794. #else
  795. static int input YY_PROTO(( void ));
  796. #endif
  797. #endif
  798. #if YY_STACK_USED
  799. static int yy_start_stack_ptr = 0;
  800. static int yy_start_stack_depth = 0;
  801. static int *yy_start_stack = 0;
  802. #ifndef YY_NO_PUSH_STATE
  803. static void yy_push_state YY_PROTO(( int new_state ));
  804. #endif
  805. #ifndef YY_NO_POP_STATE
  806. static void yy_pop_state YY_PROTO(( void ));
  807. #endif
  808. #ifndef YY_NO_TOP_STATE
  809. static int yy_top_state YY_PROTO(( void ));
  810. #endif
  811. #else
  812. #define YY_NO_PUSH_STATE 1
  813. #define YY_NO_POP_STATE 1
  814. #define YY_NO_TOP_STATE 1
  815. #endif
  816. #ifdef YY_MALLOC_DECL
  817. YY_MALLOC_DECL
  818. #else
  819. #if __STDC__
  820. #ifndef __cplusplus
  821. #include <stdlib.h>
  822. #endif
  823. #else
  824. /* Just try to get by without declaring the routines.  This will fail
  825.  * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
  826.  * or sizeof(void*) != sizeof(int).
  827.  */
  828. #endif
  829. #endif
  830. /* Amount of stuff to slurp up with each read. */
  831. #ifndef YY_READ_BUF_SIZE
  832. #define YY_READ_BUF_SIZE 8192
  833. #endif
  834. /* Copy whatever the last rule matched to the standard output. */
  835. #ifndef ECHO
  836. /* This used to be an fputs(), but since the string might contain NUL's,
  837.  * we now use fwrite().
  838.  */
  839. #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
  840. #endif
  841. /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
  842.  * is returned in "result".
  843.  */
  844. #ifndef YY_INPUT
  845. #define YY_INPUT(buf,result,max_size) 
  846. if ( yy_current_buffer->yy_is_interactive ) 
  847. int c = '*', n; 
  848. for ( n = 0; n < max_size && 
  849.      (c = getc( yyin )) != EOF && c != 'n'; ++n ) 
  850. buf[n] = (char) c; 
  851. if ( c == 'n' ) 
  852. buf[n++] = (char) c; 
  853. if ( c == EOF && ferror( yyin ) ) 
  854. YY_FATAL_ERROR( "input in flex scanner failed" ); 
  855. result = n; 
  856. else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) 
  857.   && ferror( yyin ) ) 
  858. YY_FATAL_ERROR( "input in flex scanner failed" );
  859. #endif
  860. /* No semi-colon after return; correct usage is to write "yyterminate();" -
  861.  * we don't want an extra ';' after the "return" because that will cause
  862.  * some compilers to complain about unreachable statements.
  863.  */
  864. #ifndef yyterminate
  865. #define yyterminate() return YY_NULL
  866. #endif
  867. /* Number of entries by which start-condition stack grows. */
  868. #ifndef YY_START_STACK_INCR
  869. #define YY_START_STACK_INCR 25
  870. #endif
  871. /* Report a fatal error. */
  872. #ifndef YY_FATAL_ERROR
  873. #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
  874. #endif
  875. /* Default declaration of generated scanner - a define so the user can
  876.  * easily add parameters.
  877.  */
  878. #ifndef YY_DECL
  879. #define YY_DECL int yylex YY_PROTO(( void ))
  880. #endif
  881. /* Code executed at the beginning of each rule, after yytext and yyleng
  882.  * have been set up.
  883.  */
  884. #ifndef YY_USER_ACTION
  885. #define YY_USER_ACTION
  886. #endif
  887. /* Code executed at the end of each rule. */
  888. #ifndef YY_BREAK
  889. #define YY_BREAK break;
  890. #endif
  891. #define YY_RULE_SETUP 
  892. YY_USER_ACTION
  893. YY_DECL
  894. {
  895. register yy_state_type yy_current_state;
  896. register char *yy_cp, *yy_bp;
  897. register int yy_act;
  898. #line 186 "pgc.l"
  899. #line 1057 "lex.yy.c"
  900. if ( yy_init )
  901. {
  902. yy_init = 0;
  903. #ifdef YY_USER_INIT
  904. YY_USER_INIT;
  905. #endif
  906. if ( ! yy_start )
  907. yy_start = 1; /* first start state */
  908. if ( ! yyin )
  909. yyin = stdin;
  910. if ( ! yyout )
  911. yyout = stdout;
  912. if ( ! yy_current_buffer )
  913. yy_current_buffer =
  914. yy_create_buffer( yyin, YY_BUF_SIZE );
  915. yy_load_buffer_state();
  916. }
  917. while ( 1 ) /* loops until end-of-file is reached */
  918. {
  919. yy_cp = yy_c_buf_p;
  920. /* Support of yytext. */
  921. *yy_cp = yy_hold_char;
  922. /* yy_bp points to the position in yy_ch_buf of the start of
  923.  * the current run.
  924.  */
  925. yy_bp = yy_cp;
  926. yy_current_state = yy_start;
  927. yy_state_ptr = yy_state_buf;
  928. *yy_state_ptr++ = yy_current_state;
  929. yy_match:
  930. do
  931. {
  932. register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
  933. while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
  934. {
  935. yy_current_state = (int) yy_def[yy_current_state];
  936. if ( yy_current_state >= 272 )
  937. yy_c = yy_meta[(unsigned int) yy_c];
  938. }
  939. yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
  940. *yy_state_ptr++ = yy_current_state;
  941. ++yy_cp;
  942. }
  943. while ( yy_base[yy_current_state] != 1138 );
  944. yy_find_action:
  945. yy_current_state = *--yy_state_ptr;
  946. yy_lp = yy_accept[yy_current_state];
  947. find_rule: /* we branch to this label when backing up */
  948. for ( ; ; ) /* until we find what rule we matched */
  949. {
  950. if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
  951. {
  952. yy_act = yy_acclist[yy_lp];
  953. if ( yy_act & YY_TRAILING_HEAD_MASK ||
  954.      yy_looking_for_trail_begin )
  955. {
  956. if ( yy_act == yy_looking_for_trail_begin )
  957. {
  958. yy_looking_for_trail_begin = 0;
  959. yy_act &= ~YY_TRAILING_HEAD_MASK;
  960. break;
  961. }
  962. }
  963. else if ( yy_act & YY_TRAILING_MASK )
  964. {
  965. yy_looking_for_trail_begin = yy_act & ~YY_TRAILING_MASK;
  966. yy_looking_for_trail_begin |= YY_TRAILING_HEAD_MASK;
  967. yy_full_match = yy_cp;
  968. yy_full_state = yy_state_ptr;
  969. yy_full_lp = yy_lp;
  970. }
  971. else
  972. {
  973. yy_full_match = yy_cp;
  974. yy_full_state = yy_state_ptr;
  975. yy_full_lp = yy_lp;
  976. break;
  977. }
  978. ++yy_lp;
  979. goto find_rule;
  980. }
  981. --yy_cp;
  982. yy_current_state = *--yy_state_ptr;
  983. yy_lp = yy_accept[yy_current_state];
  984. }
  985. YY_DO_BEFORE_ACTION;
  986. if ( yy_act != YY_END_OF_BUFFER )
  987. {
  988. int yyl;
  989. for ( yyl = 0; yyl < yyleng; ++yyl )
  990. if ( yytext[yyl] == 'n' )
  991. ++yylineno;
  992. }
  993. do_action: /* This label is used only to access EOF actions. */
  994. switch ( yy_act )
  995. { /* beginning of action switch */
  996. case 1:
  997. YY_RULE_SETUP
  998. #line 187 "pgc.l"
  999. { /* ignore */ }
  1000. YY_BREAK
  1001. case 2:
  1002. YY_RULE_SETUP
  1003. #line 189 "pgc.l"
  1004. { ECHO; }
  1005. YY_BREAK
  1006. case 3:
  1007. YY_RULE_SETUP
  1008. #line 191 "pgc.l"
  1009. { ECHO; }
  1010. YY_BREAK
  1011. case 4:
  1012. YY_RULE_SETUP
  1013. #line 192 "pgc.l"
  1014. {
  1015. before_comment = YYSTATE;
  1016. ECHO;
  1017.   BEGIN(xc);
  1018. }
  1019. YY_BREAK
  1020. case 5:
  1021. YY_RULE_SETUP
  1022. #line 198 "pgc.l"
  1023. { ECHO; BEGIN(before_comment); }
  1024. YY_BREAK
  1025. case 6:
  1026. YY_RULE_SETUP
  1027. #line 200 "pgc.l"
  1028. { ECHO; }
  1029. YY_BREAK
  1030. case 7:
  1031. YY_RULE_SETUP
  1032. #line 202 "pgc.l"
  1033. {
  1034. BEGIN(xb);
  1035. llen = 0;
  1036. *literal = '';
  1037. }
  1038. YY_BREAK
  1039. case 8:
  1040. YY_RULE_SETUP
  1041. #line 207 "pgc.l"
  1042. {
  1043. char* endptr;
  1044. BEGIN(SQL);
  1045. errno = 0;
  1046. yylval.ival = strtol((char *)literal,&endptr,2);
  1047. if (*endptr != '' || errno == ERANGE)
  1048. yyerror("ERROR: Bad binary integer input!");
  1049. return ICONST;
  1050. }
  1051. YY_BREAK
  1052. case 9:
  1053. #line 218 "pgc.l"
  1054. case 10:
  1055. YY_RULE_SETUP
  1056. #line 218 "pgc.l"
  1057. {
  1058. if ((llen+yyleng) > (MAX_PARSE_BUFFER - 1))
  1059. yyerror("ERROR: quoted string parse buffer exceeded");
  1060. memcpy(literal+llen, yytext, yyleng+1);
  1061. llen += yyleng;
  1062. }
  1063. YY_BREAK
  1064. case 11:
  1065. #line 225 "pgc.l"
  1066. case 12:
  1067. YY_RULE_SETUP
  1068. #line 225 "pgc.l"
  1069. {
  1070. }
  1071. YY_BREAK
  1072. case 13:
  1073. YY_RULE_SETUP
  1074. #line 228 "pgc.l"
  1075. {
  1076. BEGIN(xh);
  1077. llen = 0;
  1078. *literal = '';
  1079. }
  1080. YY_BREAK
  1081. case 14:
  1082. YY_RULE_SETUP
  1083. #line 233 "pgc.l"
  1084. {
  1085. char* endptr;
  1086. BEGIN(SQL);
  1087. errno = 0;
  1088. yylval.ival = strtol((char *)literal,&endptr,16);
  1089. if (*endptr != '' || errno == ERANGE)
  1090. yyerror("ERROR: Bad hexadecimal integer input");
  1091. return ICONST;
  1092. }
  1093. YY_BREAK
  1094. case 15:
  1095. YY_RULE_SETUP
  1096. #line 244 "pgc.l"
  1097. {
  1098. BEGIN(xq);
  1099. llen = 0;
  1100. *literal = '';
  1101. }
  1102. YY_BREAK
  1103. case 16:
  1104. YY_RULE_SETUP
  1105. #line 249 "pgc.l"
  1106. {
  1107. BEGIN(SQL);
  1108. /* yylval.str = mm_strdup(scanstr(literal));*/
  1109. yylval.str = mm_strdup(literal);
  1110. return SCONST;
  1111. }
  1112. YY_BREAK
  1113. case 17:
  1114. #line 256 "pgc.l"
  1115. case 18:
  1116. #line 257 "pgc.l"
  1117. case 19:
  1118. YY_RULE_SETUP
  1119. #line 257 "pgc.l"
  1120. {
  1121. if ((llen+yyleng) > (MAX_PARSE_BUFFER - 1))
  1122. yyerror("ERROR: quoted string parse buffer exceeded");
  1123. memcpy(literal+llen, yytext, yyleng+1);
  1124. llen += yyleng;
  1125. }
  1126. YY_BREAK
  1127. case 20:
  1128. YY_RULE_SETUP
  1129. #line 263 "pgc.l"
  1130. {
  1131. }
  1132. YY_BREAK
  1133. case 21:
  1134. YY_RULE_SETUP
  1135. #line 267 "pgc.l"
  1136. {
  1137. BEGIN(xd);
  1138. llen = 0;
  1139. *literal = '';
  1140. }
  1141. YY_BREAK
  1142. case 22:
  1143. YY_RULE_SETUP
  1144. #line 272 "pgc.l"
  1145. {
  1146. BEGIN(SQL);
  1147. yylval.str = mm_strdup(literal);
  1148. return CSTRING;
  1149. }
  1150. YY_BREAK
  1151. case 23:
  1152. YY_RULE_SETUP
  1153. #line 277 "pgc.l"
  1154. {
  1155. if ((llen+yyleng) > (MAX_PARSE_BUFFER - 1))
  1156. yyerror("ERROR: quoted string parse buffer exceeded");
  1157. memcpy(literal+llen, yytext, yyleng+1);
  1158. llen += yyleng;
  1159. }
  1160. YY_BREAK
  1161. case 24:
  1162. YY_RULE_SETUP
  1163. #line 283 "pgc.l"
  1164. {
  1165. BEGIN(xdc);
  1166. llen = 0;
  1167. *literal = '';
  1168. }
  1169. YY_BREAK
  1170. case 25:
  1171. YY_RULE_SETUP
  1172. #line 288 "pgc.l"
  1173. {
  1174. BEGIN(C);
  1175. yylval.str = mm_strdup(literal);
  1176. return CSTRING;
  1177. }
  1178. YY_BREAK
  1179. case 26:
  1180. YY_RULE_SETUP
  1181. #line 293 "pgc.l"
  1182. {
  1183. if ((llen+yyleng) > (MAX_PARSE_BUFFER - 1))
  1184. yyerror("ERROR: quoted string parse buffer exceeded");
  1185. memcpy(literal+llen, yytext, yyleng+1);
  1186. llen += yyleng;
  1187. }
  1188. YY_BREAK
  1189. case 27:
  1190. YY_RULE_SETUP
  1191. #line 300 "pgc.l"
  1192. { /* ignore */ }
  1193. YY_BREAK
  1194. case 28:
  1195. YY_RULE_SETUP
  1196. #line 301 "pgc.l"
  1197. {
  1198. BEGIN(SQL);
  1199. return yytext[0];
  1200. }
  1201. YY_BREAK
  1202. case 29:
  1203. YY_RULE_SETUP
  1204. #line 307 "pgc.l"
  1205. {  return TYPECAST; }
  1206. YY_BREAK
  1207. case 30:
  1208. *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
  1209. yy_c_buf_p = yy_cp = yy_bp + 1;
  1210. YY_DO_BEFORE_ACTION; /* set up yytext again */
  1211. YY_RULE_SETUP
  1212. #line 308 "pgc.l"
  1213. {
  1214. BEGIN(xm);
  1215. return yytext[0];
  1216. }
  1217. YY_BREAK
  1218. case 31:
  1219. YY_RULE_SETUP
  1220. #line 312 "pgc.l"
  1221. { /* 
  1222.    * We may find a ';' inside a structure
  1223.    * definition in a TYPE or VAR statement.
  1224.    * This is not an EOL marker.
  1225.    */
  1226.   if (yytext[0] == ';' && struct_level == 0)
  1227.  BEGIN C;
  1228.   return yytext[0];
  1229. }
  1230. YY_BREAK
  1231. case 32:
  1232. *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
  1233. yy_c_buf_p = yy_cp -= 2;
  1234. YY_DO_BEFORE_ACTION; /* set up yytext again */
  1235. YY_RULE_SETUP
  1236. #line 321 "pgc.l"
  1237. {
  1238. yylval.str = mm_strdup((char*)yytext);
  1239. return Op;
  1240. }
  1241. YY_BREAK
  1242. case 33:
  1243. YY_RULE_SETUP
  1244. #line 325 "pgc.l"
  1245. {
  1246. if (strcmp((char*)yytext,"!=") == 0)
  1247. yylval.str = mm_strdup("<>"); /* compatability */
  1248. else
  1249. yylval.str = mm_strdup((char*)yytext);
  1250. return Op;
  1251. }
  1252. YY_BREAK
  1253. case 34:
  1254. YY_RULE_SETUP
  1255. #line 332 "pgc.l"
  1256. {
  1257. yylval.ival = atoi((char*)&yytext[1]);
  1258. return PARAM;
  1259. }
  1260. YY_BREAK
  1261. case 35:
  1262. YY_RULE_SETUP
  1263. #line 336 "pgc.l"
  1264. {
  1265. int i;
  1266. ScanKeyword *keyword;
  1267. char lower_text[NAMEDATALEN];
  1268. BEGIN(xm);
  1269. /* this should leave the last byte set to '' */
  1270. strncpy(lower_text, yytext, NAMEDATALEN-1);
  1271. for(i = 0; lower_text[i]; i++)
  1272. if (isascii((unsigned char)lower_text[i]) && isupper(lower_text[i]))
  1273. lower_text[i] = tolower(lower_text[i]);
  1274. keyword = ScanKeywordLookup((char*)lower_text);
  1275. if (keyword != NULL) {
  1276. return keyword->value;
  1277. }
  1278. else
  1279. {
  1280. keyword = ScanECPGKeywordLookup((char*)lower_text);
  1281. if (keyword != NULL) {
  1282. return keyword->value;
  1283. }
  1284. else
  1285. {
  1286. struct _defines *ptr;
  1287. for (ptr = defines; ptr; ptr = ptr->next)
  1288. {
  1289. if (strcmp(yytext, ptr->old) == 0)
  1290. {
  1291. struct _yy_buffer *yb;
  1292. yb = mm_alloc(sizeof(struct _yy_buffer));
  1293.                         yb->buffer =  YY_CURRENT_BUFFER;
  1294.                         yb->lineno = yylineno;
  1295.                         yb->filename = mm_strdup(input_filename);
  1296.                         yb->next = yy_buffer;
  1297.                         yy_buffer = yb;
  1298.   yy_scan_string(ptr->new);
  1299. break;
  1300. }
  1301. }
  1302. if (ptr == NULL) 
  1303. {
  1304. yylval.str = mm_strdup((char*)yytext);
  1305. return IDENT;
  1306. }
  1307. }
  1308. }
  1309. }
  1310. YY_BREAK
  1311. case 36:
  1312. YY_RULE_SETUP
  1313. #line 389 "pgc.l"
  1314. {
  1315. char* endptr;
  1316. BEGIN(xm);
  1317. errno = 0;
  1318. yylval.ival = strtol((char *)yytext,&endptr,10);
  1319. if (*endptr != '' || errno == ERANGE)
  1320. {
  1321. errno = 0;
  1322. #if 0
  1323. yylval.dval = strtod(((char *)yytext),&endptr);
  1324. if (*endptr != '' || errno == ERANGE)
  1325. yyerror("ERROR: Bad integer input");
  1326. yyerror("WARNING: Integer input is out of range; promoted to float");
  1327. return FCONST;
  1328. #endif
  1329. yylval.str = mm_strdup((char*)yytext);
  1330.                                                 return SCONST;
  1331. }
  1332. return ICONST;
  1333. }
  1334. YY_BREAK
  1335. case 37:
  1336. YY_RULE_SETUP
  1337. #line 410 "pgc.l"
  1338. {
  1339.                                         char* endptr;
  1340.                                         BEGIN(xm);
  1341.                                         if (strlen((char *)yytext) <= 17)
  1342.                                         {
  1343.                                                 errno = 0;
  1344. yylval.dval = strtod(((char *)yytext),&endptr);
  1345. if (*endptr != '' || errno == ERANGE)
  1346. yyerror("ERROR: Bad float8 input");
  1347. return FCONST;
  1348.                                         }
  1349.                                         yylval.str = mm_strdup((char*)yytext);
  1350.                                         return SCONST;
  1351.                                 }
  1352. YY_BREAK
  1353. case 38:
  1354. YY_RULE_SETUP
  1355. #line 426 "pgc.l"
  1356. {
  1357. char* endptr;
  1358. BEGIN(xm);
  1359. errno = 0;
  1360. yylval.dval = strtod(((char *)yytext),&endptr);
  1361. if (*endptr != '' || errno == ERANGE)
  1362. yyerror("ERROR: Bad float8 input");
  1363. return FCONST;
  1364. }
  1365. YY_BREAK
  1366. case 39:
  1367. YY_RULE_SETUP
  1368. #line 436 "pgc.l"
  1369. {
  1370. char* endptr;
  1371. errno = 0;
  1372. yylval.ival = strtol((char *)yytext,&endptr,10);
  1373. if (*endptr != '' || errno == ERANGE)
  1374. {
  1375. errno = 0;
  1376. #if 0
  1377. yylval.dval = strtod(((char *)yytext),&endptr);
  1378. if (*endptr != '' || errno == ERANGE)
  1379. yyerror("ERROR: Bad integer input");
  1380. yyerror("WARNING: Integer input is out of range; promoted to float");
  1381. return FCONST;
  1382. #endif
  1383. yylval.str = mm_strdup((char*)yytext);
  1384.                                                 return SCONST;
  1385. }
  1386. return ICONST;
  1387. }
  1388. YY_BREAK
  1389. case 40:
  1390. YY_RULE_SETUP
  1391. #line 456 "pgc.l"
  1392. {
  1393.                                         char* endptr;
  1394.                                         if (strlen((char *)yytext) <= 17)
  1395.                                         {
  1396.                                                 errno = 0;
  1397.                                                 yylval.dval = strtod((char *)yytext,&endptr);
  1398. if (*endptr != '' || errno == ERANGE)
  1399. yyerror("ERROR: Bad float8 input");
  1400. return FCONST;
  1401.                                         }
  1402.                                         yylval.str = mm_strdup((char*)yytext);
  1403.                                         return SCONST;
  1404.                                 }
  1405. YY_BREAK
  1406. case 41:
  1407. YY_RULE_SETUP
  1408. #line 470 "pgc.l"
  1409. {
  1410. char* endptr;
  1411. errno = 0;
  1412. yylval.dval = strtod((char *)yytext,&endptr);
  1413. if (*endptr != '' || errno == ERANGE)
  1414. yyerror("ERROR: Bad float input");
  1415. return FCONST;
  1416. }
  1417. YY_BREAK
  1418. case 42:
  1419. YY_RULE_SETUP
  1420. #line 479 "pgc.l"
  1421. {
  1422. yylval.str = mm_strdup((char*)yytext+1);
  1423. return(CVARIABLE);
  1424. }
  1425. YY_BREAK
  1426. case 43:
  1427. YY_RULE_SETUP
  1428. #line 483 "pgc.l"
  1429. {
  1430. int i;
  1431. ScanKeyword *keyword;
  1432. char lower_text[NAMEDATALEN];
  1433. /* this should leave the last byte set to '' */
  1434. strncpy(lower_text, yytext, NAMEDATALEN-1);
  1435. for(i = 0; lower_text[i]; i++)
  1436. if (isascii((unsigned char)lower_text[i]) && isupper(lower_text[i]))
  1437. lower_text[i] = tolower(lower_text[i]);
  1438. keyword = ScanKeywordLookup((char*)lower_text);
  1439. if (keyword != NULL) {
  1440. return keyword->value;
  1441. }
  1442. else
  1443. {
  1444. keyword = ScanECPGKeywordLookup((char*)lower_text);
  1445. if (keyword != NULL) {
  1446. return keyword->value;
  1447. }
  1448. else
  1449. {
  1450. struct _defines *ptr;
  1451. for (ptr = defines; ptr; ptr = ptr->next)
  1452. {
  1453. if (strcmp(yytext, ptr->old) == 0)
  1454. {
  1455. struct _yy_buffer *yb;
  1456. yb = mm_alloc(sizeof(struct _yy_buffer));
  1457.                         yb->buffer =  YY_CURRENT_BUFFER;
  1458.                         yb->lineno = yylineno;
  1459.                         yb->filename = mm_strdup(input_filename);
  1460.                         yb->next = yy_buffer;
  1461.                         yy_buffer = yb;
  1462.   yy_scan_string(ptr->new);
  1463. break;
  1464. }
  1465. }
  1466. if (ptr == NULL) 
  1467. {
  1468. yylval.str = mm_strdup((char*)yytext);
  1469. return IDENT;
  1470. }
  1471. }
  1472. }
  1473. }
  1474. YY_BREAK
  1475. case 44:
  1476. YY_RULE_SETUP
  1477. #line 535 "pgc.l"
  1478. { /* ignore */ }
  1479. YY_BREAK
  1480. case 45:
  1481. YY_RULE_SETUP
  1482. #line 536 "pgc.l"
  1483. { return yytext[0]; }
  1484. YY_BREAK
  1485. case 46:
  1486. YY_RULE_SETUP
  1487. #line 537 "pgc.l"
  1488. { BEGIN SQL; return SQL_START; }
  1489. YY_BREAK
  1490. case 47:
  1491. YY_RULE_SETUP
  1492. #line 538 "pgc.l"
  1493. { /* ignore */ } 
  1494. YY_BREAK
  1495. case 48:
  1496. YY_RULE_SETUP
  1497. #line 539 "pgc.l"
  1498. {
  1499. yylval.str = mm_strdup((char*)yytext);
  1500. return(CPP_LINE);
  1501. }
  1502. YY_BREAK
  1503. case 49:
  1504. YY_RULE_SETUP
  1505. #line 543 "pgc.l"
  1506. {
  1507. ScanKeyword *keyword;
  1508. keyword = ScanCKeywordLookup((char*)yytext);
  1509. if (keyword != NULL) {
  1510. return keyword->value;
  1511. }
  1512. else
  1513. {
  1514. struct _defines *ptr;
  1515. for (ptr = defines; ptr; ptr = ptr->next)
  1516. {
  1517. if (strcmp(yytext, ptr->old) == 0)
  1518. {
  1519. struct _yy_buffer *yb;
  1520. yb = mm_alloc(sizeof(struct _yy_buffer));
  1521.                         yb->buffer =  YY_CURRENT_BUFFER;
  1522.                         yb->lineno = yylineno;
  1523.                         yb->filename = mm_strdup(input_filename);
  1524.                         yb->next = yy_buffer;
  1525.                         yy_buffer = yb;
  1526. yy_scan_string(ptr->new);
  1527. break;
  1528. }
  1529. }
  1530. if (ptr == NULL) 
  1531. {
  1532. yylval.str = mm_strdup((char*)yytext);
  1533. return IDENT;
  1534. }
  1535. }
  1536. }
  1537. YY_BREAK
  1538. case 50:
  1539. YY_RULE_SETUP
  1540. #line 580 "pgc.l"
  1541. { return(';'); }
  1542. YY_BREAK
  1543. case 51:
  1544. YY_RULE_SETUP
  1545. #line 581 "pgc.l"
  1546. { return(','); }
  1547. YY_BREAK
  1548. case 52:
  1549. YY_RULE_SETUP
  1550. #line 582 "pgc.l"
  1551. { return('*'); }
  1552. YY_BREAK
  1553. case 53:
  1554. YY_RULE_SETUP
  1555. #line 583 "pgc.l"
  1556. { return('%'); }
  1557. YY_BREAK
  1558. case 54:
  1559. YY_RULE_SETUP
  1560. #line 584 "pgc.l"
  1561. { return('/'); }
  1562. YY_BREAK
  1563. case 55:
  1564. YY_RULE_SETUP
  1565. #line 585 "pgc.l"
  1566. { return('+'); }
  1567. YY_BREAK
  1568. case 56:
  1569. YY_RULE_SETUP
  1570. #line 586 "pgc.l"
  1571. { return('-'); }
  1572. YY_BREAK
  1573. case 57:
  1574. YY_RULE_SETUP
  1575. #line 587 "pgc.l"
  1576. { return('('); }
  1577. YY_BREAK
  1578. case 58:
  1579. YY_RULE_SETUP
  1580. #line 588 "pgc.l"
  1581. { return(')'); }
  1582. YY_BREAK
  1583. case 59:
  1584. YY_RULE_SETUP
  1585. #line 589 "pgc.l"
  1586. { ECHO; }
  1587. YY_BREAK
  1588. case 60:
  1589. YY_RULE_SETUP
  1590. #line 590 "pgc.l"
  1591. { return('{'); }
  1592. YY_BREAK
  1593. case 61:
  1594. YY_RULE_SETUP
  1595. #line 591 "pgc.l"
  1596. { return('}'); }
  1597. YY_BREAK
  1598. case 62:
  1599. YY_RULE_SETUP
  1600. #line 592 "pgc.l"
  1601. { return('['); }
  1602. YY_BREAK
  1603. case 63:
  1604. YY_RULE_SETUP
  1605. #line 593 "pgc.l"
  1606. { return(']'); }
  1607. YY_BREAK
  1608. case 64:
  1609. YY_RULE_SETUP
  1610. #line 594 "pgc.l"
  1611. { return('='); }
  1612. YY_BREAK
  1613. case 65:
  1614. YY_RULE_SETUP
  1615. #line 595 "pgc.l"
  1616. { return S_ANYTHING; }
  1617. YY_BREAK
  1618. case 66:
  1619. YY_RULE_SETUP
  1620. #line 596 "pgc.l"
  1621. {BEGIN(def_ident);}
  1622. YY_BREAK
  1623. case 67:
  1624. YY_RULE_SETUP
  1625. #line 597 "pgc.l"
  1626. {}
  1627. YY_BREAK
  1628. case 68:
  1629. YY_RULE_SETUP
  1630. #line 598 "pgc.l"
  1631. {
  1632. old = mm_strdup(yytext);
  1633. BEGIN(def);
  1634. llen = 0;
  1635. *literal = '';
  1636. }
  1637. YY_BREAK
  1638. case 69:
  1639. YY_RULE_SETUP
  1640. #line 604 "pgc.l"
  1641. /* eat the whitespace */
  1642. YY_BREAK
  1643. case 70:
  1644. YY_RULE_SETUP
  1645. #line 605 "pgc.l"
  1646. {
  1647. struct _defines *ptr, *this;
  1648.         
  1649.                                 for (ptr = defines; ptr != NULL; ptr = ptr->next)
  1650.                                 {
  1651.                                      if (strcmp(old, ptr->old) == 0)
  1652.                                      {
  1653. free(ptr->new);
  1654. /* ptr->new = mm_strdup(scanstr(literal));*/
  1655. ptr->new = mm_strdup(literal);
  1656.                                      }
  1657.                                 }
  1658. if (ptr == NULL)
  1659. {                        
  1660.                                         this = (struct _defines *) mm_alloc(sizeof(struct _defines));
  1661.                                         /* initial definition */
  1662.                                         this->old = old;
  1663.                                         /* this->new = mm_strdup(scanstr(literal));*/
  1664.                                         this->new = mm_strdup(literal);
  1665. this->next = defines;
  1666. defines = this;
  1667. }
  1668. BEGIN(C);
  1669. }
  1670. YY_BREAK
  1671. case 71:
  1672. YY_RULE_SETUP
  1673. #line 631 "pgc.l"
  1674. {
  1675. if ((llen+yyleng) > (MAX_PARSE_BUFFER - 1))
  1676. yyerror("ERROR: define statement parse buffer exceeded");
  1677. memcpy(literal+llen, yytext, yyleng+1);
  1678. llen += yyleng;
  1679. }
  1680. YY_BREAK
  1681. case 72:
  1682. YY_RULE_SETUP
  1683. #line 637 "pgc.l"
  1684. { BEGIN(incl); }
  1685. YY_BREAK
  1686. case 73:
  1687. YY_RULE_SETUP
  1688. #line 638 "pgc.l"
  1689. /* eat the whitespace */
  1690. YY_BREAK
  1691. case 74:
  1692. YY_RULE_SETUP
  1693. #line 639 "pgc.l"
  1694. { /* got the include file name */
  1695.   struct _yy_buffer *yb;
  1696.   struct _include_path *ip;
  1697.   char inc_file[PATH_MAX];
  1698.   yb = mm_alloc(sizeof(struct _yy_buffer));
  1699.   yb->buffer =  YY_CURRENT_BUFFER;
  1700.   yb->lineno = yylineno;
  1701.   yb->filename = input_filename;
  1702.   yb->next = yy_buffer;
  1703.   yy_buffer = yb;
  1704.   if (yytext[strlen(yytext) - 1] == ';')
  1705. yytext[strlen(yytext) - 1] = '';
  1706.   yyin = NULL;
  1707.   for (ip = include_paths; yyin == NULL && ip != NULL; ip = ip->next)
  1708.   {
  1709. if (strlen(ip->path) + strlen(yytext) + 3 > PATH_MAX)
  1710. {
  1711. fprintf(stderr, "Error: Path %s/%s is too long in line %d, skipping.n", ip->path, yytext, yylineno);
  1712. continue;
  1713. }
  1714.    sprintf (inc_file, "%s/%s", ip->path, yytext);
  1715.            yyin = fopen( inc_file, "r" );
  1716.    if (!yyin)
  1717. {
  1718. if (strcmp(inc_file + strlen(inc_file) - 2, ".h"))
  1719. {
  1720. strcat(inc_file, ".h");
  1721. yyin = fopen( inc_file, "r" );
  1722. }
  1723. }
  1724.   }
  1725.   if (!yyin)
  1726.   {
  1727. fprintf(stderr, "Error: Cannot open include file %s in line %dn", yytext, yylineno);
  1728. exit(NO_INCLUDE_FILE); 
  1729.   }
  1730.   input_filename = mm_strdup(inc_file);
  1731.   yy_switch_to_buffer(yy_create_buffer(yyin,YY_BUF_SIZE ));
  1732.   yylineno = 0;
  1733.   output_line_number();
  1734.   BEGIN C;
  1735. }
  1736. YY_BREAK
  1737. case 75:
  1738. YY_RULE_SETUP
  1739. #line 689 "pgc.l"
  1740. { BEGIN C; }
  1741. YY_BREAK
  1742. case YY_STATE_EOF(INITIAL):
  1743. case YY_STATE_EOF(C):
  1744. case YY_STATE_EOF(SQL):
  1745. case YY_STATE_EOF(incl):
  1746. case YY_STATE_EOF(def):
  1747. case YY_STATE_EOF(def_ident):
  1748. case YY_STATE_EOF(xb):
  1749. case YY_STATE_EOF(xc):
  1750. case YY_STATE_EOF(xd):
  1751. case YY_STATE_EOF(xdc):
  1752. case YY_STATE_EOF(xh):
  1753. case YY_STATE_EOF(xm):
  1754. case YY_STATE_EOF(xq):
  1755. #line 690 "pgc.l"
  1756. { if (yy_buffer == NULL)
  1757. yyterminate();
  1758.   else
  1759.   {
  1760. struct _yy_buffer *yb = yy_buffer;
  1761. if (yyin != NULL)
  1762. fclose(yyin);
  1763. yy_delete_buffer( YY_CURRENT_BUFFER );
  1764. yy_switch_to_buffer(yy_buffer->buffer);
  1765. yylineno = yy_buffer->lineno;
  1766. free(input_filename);
  1767. input_filename = yy_buffer->filename;
  1768. yy_buffer = yy_buffer->next;
  1769. free(yb);
  1770. output_line_number();
  1771.   }
  1772. }
  1773. YY_BREAK
  1774. case 76:
  1775. YY_RULE_SETUP
  1776. #line 712 "pgc.l"
  1777. ECHO;
  1778. YY_BREAK
  1779. #line 1997 "lex.yy.c"
  1780. case YY_END_OF_BUFFER:
  1781. {
  1782. /* Amount of text matched not including the EOB char. */
  1783. int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
  1784. /* Undo the effects of YY_DO_BEFORE_ACTION. */
  1785. *yy_cp = yy_hold_char;
  1786. YY_RESTORE_YY_MORE_OFFSET
  1787. if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
  1788. {
  1789. /* We're scanning a new file or input source.  It's
  1790.  * possible that this happened because the user
  1791.  * just pointed yyin at a new source and called
  1792.  * yylex().  If so, then we have to assure
  1793.  * consistency between yy_current_buffer and our
  1794.  * globals.  Here is the right place to do so, because
  1795.  * this is the first action (other than possibly a
  1796.  * back-up) that will match for the new input source.
  1797.  */
  1798. yy_n_chars = yy_current_buffer->yy_n_chars;
  1799. yy_current_buffer->yy_input_file = yyin;
  1800. yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
  1801. }
  1802. /* Note that here we test for yy_c_buf_p "<=" to the position
  1803.  * of the first EOB in the buffer, since yy_c_buf_p will
  1804.  * already have been incremented past the NUL character
  1805.  * (since all states make transitions on EOB to the
  1806.  * end-of-buffer state).  Contrast this with the test
  1807.  * in input().
  1808.  */
  1809. if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
  1810. { /* This was really a NUL. */
  1811. yy_state_type yy_next_state;
  1812. yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
  1813. yy_current_state = yy_get_previous_state();
  1814. /* Okay, we're now positioned to make the NUL
  1815.  * transition.  We couldn't have
  1816.  * yy_get_previous_state() go ahead and do it
  1817.  * for us because it doesn't know how to deal
  1818.  * with the possibility of jamming (and we don't
  1819.  * want to build jamming into it because then it
  1820.  * will run more slowly).
  1821.  */
  1822. yy_next_state = yy_try_NUL_trans( yy_current_state );
  1823. yy_bp = yytext_ptr + YY_MORE_ADJ;
  1824. if ( yy_next_state )
  1825. {
  1826. /* Consume the NUL. */
  1827. yy_cp = ++yy_c_buf_p;
  1828. yy_current_state = yy_next_state;
  1829. goto yy_match;
  1830. }
  1831. else
  1832. {
  1833. yy_cp = yy_c_buf_p;
  1834. goto yy_find_action;
  1835. }
  1836. }
  1837. else switch ( yy_get_next_buffer() )
  1838. {
  1839. case EOB_ACT_END_OF_FILE:
  1840. {
  1841. yy_did_buffer_switch_on_eof = 0;
  1842. if ( yywrap() )
  1843. {
  1844. /* Note: because we've taken care in
  1845.  * yy_get_next_buffer() to have set up
  1846.  * yytext, we can now set up
  1847.  * yy_c_buf_p so that if some total
  1848.  * hoser (like flex itself) wants to
  1849.  * call the scanner after we return the
  1850.  * YY_NULL, it'll still work - another
  1851.  * YY_NULL will get returned.
  1852.  */
  1853. yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
  1854. yy_act = YY_STATE_EOF(YY_START);
  1855. goto do_action;
  1856. }
  1857. else
  1858. {
  1859. if ( ! yy_did_buffer_switch_on_eof )
  1860. YY_NEW_FILE;
  1861. }
  1862. break;
  1863. }
  1864. case EOB_ACT_CONTINUE_SCAN:
  1865. yy_c_buf_p =
  1866. yytext_ptr + yy_amount_of_matched_text;
  1867. yy_current_state = yy_get_previous_state();
  1868. yy_cp = yy_c_buf_p;
  1869. yy_bp = yytext_ptr + YY_MORE_ADJ;
  1870. goto yy_match;
  1871. case EOB_ACT_LAST_MATCH:
  1872. yy_c_buf_p =
  1873. &yy_current_buffer->yy_ch_buf[yy_n_chars];
  1874. yy_current_state = yy_get_previous_state();
  1875. yy_cp = yy_c_buf_p;
  1876. yy_bp = yytext_ptr + YY_MORE_ADJ;
  1877. goto yy_find_action;
  1878. }
  1879. break;
  1880. }
  1881. default:
  1882. YY_FATAL_ERROR(
  1883. "fatal flex scanner internal error--no action found" );
  1884. } /* end of action switch */
  1885. } /* end of scanning one token */
  1886. } /* end of yylex */
  1887. /* yy_get_next_buffer - try to read in a new buffer
  1888.  *
  1889.  * Returns a code representing an action:
  1890.  * EOB_ACT_LAST_MATCH -
  1891.  * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
  1892.  * EOB_ACT_END_OF_FILE - end of file
  1893.  */
  1894. static int yy_get_next_buffer()
  1895. {
  1896. register char *dest = yy_current_buffer->yy_ch_buf;
  1897. register char *source = yytext_ptr;
  1898. register int number_to_move, i;
  1899. int ret_val;
  1900. if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
  1901. YY_FATAL_ERROR(
  1902. "fatal flex scanner internal error--end of buffer missed" );
  1903. if ( yy_current_buffer->yy_fill_buffer == 0 )
  1904. { /* Don't try to fill the buffer, so this is an EOF. */
  1905. if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
  1906. {
  1907. /* We matched a single character, the EOB, so
  1908.  * treat this as a final EOF.
  1909.  */
  1910. return EOB_ACT_END_OF_FILE;
  1911. }
  1912. else
  1913. {
  1914. /* We matched some text prior to the EOB, first
  1915.  * process it.
  1916.  */
  1917. return EOB_ACT_LAST_MATCH;
  1918. }
  1919. }
  1920. /* Try to read more data. */
  1921. /* First move last chars to start of buffer. */
  1922. number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
  1923. for ( i = 0; i < number_to_move; ++i )
  1924. *(dest++) = *(source++);
  1925. if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
  1926. /* don't do the read, it's not guaranteed to return an EOF,
  1927.  * just force an EOF
  1928.  */
  1929. yy_current_buffer->yy_n_chars = yy_n_chars = 0;
  1930. else
  1931. {
  1932. int num_to_read =
  1933. yy_current_buffer->yy_buf_size - number_to_move - 1;
  1934. while ( num_to_read <= 0 )
  1935. { /* Not enough room in the buffer - grow it. */
  1936. #ifdef YY_USES_REJECT
  1937. YY_FATAL_ERROR(
  1938. "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
  1939. #else
  1940. /* just a shorter name for the current buffer */
  1941. YY_BUFFER_STATE b = yy_current_buffer;
  1942. int yy_c_buf_p_offset =
  1943. (int) (yy_c_buf_p - b->yy_ch_buf);
  1944. if ( b->yy_is_our_buffer )
  1945. {
  1946. int new_size = b->yy_buf_size * 2;
  1947. if ( new_size <= 0 )
  1948. b->yy_buf_size += b->yy_buf_size / 8;
  1949. else
  1950. b->yy_buf_size *= 2;
  1951. b->yy_ch_buf = (char *)
  1952. /* Include room in for 2 EOB chars. */
  1953. yy_flex_realloc( (void *) b->yy_ch_buf,
  1954.  b->yy_buf_size + 2 );
  1955. }
  1956. else
  1957. /* Can't grow it, we don't own it. */
  1958. b->yy_ch_buf = 0;
  1959. if ( ! b->yy_ch_buf )
  1960. YY_FATAL_ERROR(
  1961. "fatal error - scanner input buffer overflow" );
  1962. yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
  1963. num_to_read = yy_current_buffer->yy_buf_size -
  1964. number_to_move - 1;
  1965. #endif
  1966. }
  1967. if ( num_to_read > YY_READ_BUF_SIZE )
  1968. num_to_read = YY_READ_BUF_SIZE;
  1969. /* Read in more data. */
  1970. YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
  1971. yy_n_chars, num_to_read );
  1972. yy_current_buffer->yy_n_chars = yy_n_chars;
  1973. }
  1974. if ( yy_n_chars == 0 )
  1975. {
  1976. if ( number_to_move == YY_MORE_ADJ )
  1977. {
  1978. ret_val = EOB_ACT_END_OF_FILE;
  1979. yyrestart( yyin );
  1980. }
  1981. else
  1982. {
  1983. ret_val = EOB_ACT_LAST_MATCH;
  1984. yy_current_buffer->yy_buffer_status =
  1985. YY_BUFFER_EOF_PENDING;
  1986. }
  1987. }
  1988. else
  1989. ret_val = EOB_ACT_CONTINUE_SCAN;
  1990. yy_n_chars += number_to_move;
  1991. yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
  1992. yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
  1993. yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
  1994. return ret_val;
  1995. }
  1996. /* yy_get_previous_state - get the state just before the EOB char was reached */
  1997. static yy_state_type yy_get_previous_state()
  1998. {
  1999. register yy_state_type yy_current_state;
  2000. register char *yy_cp;
  2001. yy_current_state = yy_start;
  2002. yy_state_ptr = yy_state_buf;
  2003. *yy_state_ptr++ = yy_current_state;
  2004. for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
  2005. {
  2006. register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
  2007. while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
  2008. {
  2009. yy_current_state = (int) yy_def[yy_current_state];
  2010. if ( yy_current_state >= 272 )
  2011. yy_c = yy_meta[(unsigned int) yy_c];
  2012. }
  2013. yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
  2014. *yy_state_ptr++ = yy_current_state;
  2015. }
  2016. return yy_current_state;
  2017. }
  2018. /* yy_try_NUL_trans - try to make a transition on the NUL character
  2019.  *
  2020.  * synopsis
  2021.  * next_state = yy_try_NUL_trans( current_state );
  2022.  */
  2023. #ifdef YY_USE_PROTOS
  2024. static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
  2025. #else
  2026. static yy_state_type yy_try_NUL_trans( yy_current_state )
  2027. yy_state_type yy_current_state;
  2028. #endif
  2029. {
  2030. register int yy_is_jam;
  2031. register YY_CHAR yy_c = 1;
  2032. while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
  2033. {
  2034. yy_current_state = (int) yy_def[yy_current_state];
  2035. if ( yy_current_state >= 272 )
  2036. yy_c = yy_meta[(unsigned int) yy_c];
  2037. }
  2038. yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
  2039. yy_is_jam = (yy_current_state == 271);
  2040. if ( ! yy_is_jam )
  2041. *yy_state_ptr++ = yy_current_state;
  2042. return yy_is_jam ? 0 : yy_current_state;
  2043. }
  2044. #ifndef YY_NO_UNPUT
  2045. #ifdef YY_USE_PROTOS
  2046. static void yyunput( int c, register char *yy_bp )
  2047. #else
  2048. static void yyunput( c, yy_bp )
  2049. int c;
  2050. register char *yy_bp;
  2051. #endif
  2052. {
  2053. register char *yy_cp = yy_c_buf_p;
  2054. /* undo effects of setting up yytext */
  2055. *yy_cp = yy_hold_char;
  2056. if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
  2057. { /* need to shift things up to make room */
  2058. /* +2 for EOB chars. */
  2059. register int number_to_move = yy_n_chars + 2;
  2060. register char *dest = &yy_current_buffer->yy_ch_buf[
  2061. yy_current_buffer->yy_buf_size + 2];
  2062. register char *source =
  2063. &yy_current_buffer->yy_ch_buf[number_to_move];
  2064. while ( source > yy_current_buffer->yy_ch_buf )
  2065. *--dest = *--source;
  2066. yy_cp += (int) (dest - source);
  2067. yy_bp += (int) (dest - source);
  2068. yy_current_buffer->yy_n_chars =
  2069. yy_n_chars = yy_current_buffer->yy_buf_size;
  2070. if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
  2071. YY_FATAL_ERROR( "flex scanner push-back overflow" );
  2072. }
  2073. *--yy_cp = (char) c;
  2074. if ( c == 'n' )
  2075. --yylineno;
  2076. yytext_ptr = yy_bp;
  2077. yy_hold_char = *yy_cp;
  2078. yy_c_buf_p = yy_cp;
  2079. }
  2080. #endif /* ifndef YY_NO_UNPUT */
  2081. #ifdef __cplusplus
  2082. static int yyinput()
  2083. #else
  2084. static int input()
  2085. #endif
  2086. {
  2087. int c;
  2088. *yy_c_buf_p = yy_hold_char;
  2089. if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
  2090. {
  2091. /* yy_c_buf_p now points to the character we want to return.
  2092.  * If this occurs *before* the EOB characters, then it's a
  2093.  * valid NUL; if not, then we've hit the end of the buffer.
  2094.  */
  2095. if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
  2096. /* This was really a NUL. */
  2097. *yy_c_buf_p = '';
  2098. else
  2099. { /* need more input */
  2100. int offset = yy_c_buf_p - yytext_ptr;
  2101. ++yy_c_buf_p;
  2102. switch ( yy_get_next_buffer() )
  2103. {
  2104. case EOB_ACT_LAST_MATCH:
  2105. /* This happens because yy_g_n_b()
  2106.  * sees that we've accumulated a
  2107.  * token and flags that we need to
  2108.  * try matching the token before
  2109.  * proceeding.  But for input(),
  2110.  * there's no matching to consider.
  2111.  * So convert the EOB_ACT_LAST_MATCH
  2112.  * to EOB_ACT_END_OF_FILE.
  2113.  */
  2114. /* Reset buffer status. */
  2115. yyrestart( yyin );
  2116. /* fall through */
  2117. case EOB_ACT_END_OF_FILE:
  2118. {
  2119. if ( yywrap() )
  2120. return EOF;
  2121. if ( ! yy_did_buffer_switch_on_eof )
  2122. YY_NEW_FILE;
  2123. #ifdef __cplusplus
  2124. return yyinput();
  2125. #else
  2126. return input();
  2127. #endif
  2128. }
  2129. case EOB_ACT_CONTINUE_SCAN:
  2130. yy_c_buf_p = yytext_ptr + offset;
  2131. break;
  2132. }
  2133. }
  2134. }
  2135. c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
  2136. *yy_c_buf_p = ''; /* preserve yytext */
  2137. yy_hold_char = *++yy_c_buf_p;
  2138. if ( c == 'n' )
  2139. ++yylineno;
  2140. return c;
  2141. }
  2142. #ifdef YY_USE_PROTOS
  2143. void yyrestart( FILE *input_file )
  2144. #else
  2145. void yyrestart( input_file )
  2146. FILE *input_file;
  2147. #endif
  2148. {
  2149. if ( ! yy_current_buffer )
  2150. yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
  2151. yy_init_buffer( yy_current_buffer, input_file );
  2152. yy_load_buffer_state();
  2153. }
  2154. #ifdef YY_USE_PROTOS
  2155. void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
  2156. #else
  2157. void yy_switch_to_buffer( new_buffer )
  2158. YY_BUFFER_STATE new_buffer;
  2159. #endif
  2160. {
  2161. if ( yy_current_buffer == new_buffer )
  2162. return;
  2163. if ( yy_current_buffer )
  2164. {
  2165. /* Flush out information for old buffer. */
  2166. *yy_c_buf_p = yy_hold_char;
  2167. yy_current_buffer->yy_buf_pos = yy_c_buf_p;
  2168. yy_current_buffer->yy_n_chars = yy_n_chars;
  2169. }
  2170. yy_current_buffer = new_buffer;
  2171. yy_load_buffer_state();
  2172. /* We don't actually know whether we did this switch during
  2173.  * EOF (yywrap()) processing, but the only time this flag
  2174.  * is looked at is after yywrap() is called, so it's safe
  2175.  * to go ahead and always set it.
  2176.  */
  2177. yy_did_buffer_switch_on_eof = 1;
  2178. }
  2179. #ifdef YY_USE_PROTOS
  2180. void yy_load_buffer_state( void )
  2181. #else
  2182. void yy_load_buffer_state()
  2183. #endif
  2184. {
  2185. yy_n_chars = yy_current_buffer->yy_n_chars;
  2186. yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
  2187. yyin = yy_current_buffer->yy_input_file;
  2188. yy_hold_char = *yy_c_buf_p;
  2189. }
  2190. #ifdef YY_USE_PROTOS
  2191. YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
  2192. #else
  2193. YY_BUFFER_STATE yy_create_buffer( file, size )
  2194. FILE *file;
  2195. int size;
  2196. #endif
  2197. {
  2198. YY_BUFFER_STATE b;
  2199. b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
  2200. if ( ! b )
  2201. YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
  2202. b->yy_buf_size = size;
  2203. /* yy_ch_buf has to be 2 characters longer than the size given because
  2204.  * we need to put in 2 end-of-buffer characters.
  2205.  */
  2206. b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
  2207. if ( ! b->yy_ch_buf )
  2208. YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
  2209. b->yy_is_our_buffer = 1;
  2210. yy_init_buffer( b, file );
  2211. return b;
  2212. }
  2213. #ifdef YY_USE_PROTOS
  2214. void yy_delete_buffer( YY_BUFFER_STATE b )
  2215. #else
  2216. void yy_delete_buffer( b )
  2217. YY_BUFFER_STATE b;
  2218. #endif
  2219. {
  2220. if ( ! b )
  2221. return;
  2222. if ( b == yy_current_buffer )
  2223. yy_current_buffer = (YY_BUFFER_STATE) 0;
  2224. if ( b->yy_is_our_buffer )
  2225. yy_flex_free( (void *) b->yy_ch_buf );
  2226. yy_flex_free( (void *) b );
  2227. }
  2228. #ifndef YY_ALWAYS_INTERACTIVE
  2229. #ifndef YY_NEVER_INTERACTIVE
  2230. extern int isatty YY_PROTO(( int ));
  2231. #endif
  2232. #endif
  2233. #ifdef YY_USE_PROTOS
  2234. void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
  2235. #else
  2236. void yy_init_buffer( b, file )
  2237. YY_BUFFER_STATE b;
  2238. FILE *file;
  2239. #endif
  2240. {
  2241. yy_flush_buffer( b );
  2242. b->yy_input_file = file;
  2243. b->yy_fill_buffer = 1;
  2244. #if YY_ALWAYS_INTERACTIVE
  2245. b->yy_is_interactive = 1;
  2246. #else
  2247. #if YY_NEVER_INTERACTIVE
  2248. b->yy_is_interactive = 0;
  2249. #else
  2250. b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
  2251. #endif
  2252. #endif
  2253. }
  2254. #ifdef YY_USE_PROTOS
  2255. void yy_flush_buffer( YY_BUFFER_STATE b )
  2256. #else
  2257. void yy_flush_buffer( b )
  2258. YY_BUFFER_STATE b;
  2259. #endif
  2260. {
  2261. if ( ! b )
  2262. return;
  2263. b->yy_n_chars = 0;
  2264. /* We always need two end-of-buffer characters.  The first causes
  2265.  * a transition to the end-of-buffer state.  The second causes
  2266.  * a jam in that state.
  2267.  */
  2268. b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
  2269. b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
  2270. b->yy_buf_pos = &b->yy_ch_buf[0];
  2271. b->yy_at_bol = 1;
  2272. b->yy_buffer_status = YY_BUFFER_NEW;
  2273. if ( b == yy_current_buffer )
  2274. yy_load_buffer_state();
  2275. }
  2276. #ifndef YY_NO_SCAN_BUFFER
  2277. #ifdef YY_USE_PROTOS
  2278. YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
  2279. #else
  2280. YY_BUFFER_STATE yy_scan_buffer( base, size )
  2281. char *base;
  2282. yy_size_t size;
  2283. #endif
  2284. {
  2285. YY_BUFFER_STATE b;
  2286. if ( size < 2 ||
  2287.      base[size-2] != YY_END_OF_BUFFER_CHAR ||
  2288.      base[size-1] != YY_END_OF_BUFFER_CHAR )
  2289. /* They forgot to leave room for the EOB's. */
  2290. return 0;
  2291. b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
  2292. if ( ! b )
  2293. YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
  2294. b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
  2295. b->yy_buf_pos = b->yy_ch_buf = base;
  2296. b->yy_is_our_buffer = 0;
  2297. b->yy_input_file = 0;
  2298. b->yy_n_chars = b->yy_buf_size;
  2299. b->yy_is_interactive = 0;
  2300. b->yy_at_bol = 1;
  2301. b->yy_fill_buffer = 0;
  2302. b->yy_buffer_status = YY_BUFFER_NEW;
  2303. yy_switch_to_buffer( b );
  2304. return b;
  2305. }
  2306. #endif
  2307. #ifndef YY_NO_SCAN_STRING
  2308. #ifdef YY_USE_PROTOS
  2309. YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
  2310. #else
  2311. YY_BUFFER_STATE yy_scan_string( yy_str )
  2312. yyconst char *yy_str;
  2313. #endif
  2314. {
  2315. int len;
  2316. for ( len = 0; yy_str[len]; ++len )
  2317. ;
  2318. return yy_scan_bytes( yy_str, len );
  2319. }
  2320. #endif
  2321. #ifndef YY_NO_SCAN_BYTES
  2322. #ifdef YY_USE_PROTOS
  2323. YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
  2324. #else
  2325. YY_BUFFER_STATE yy_scan_bytes( bytes, len )
  2326. yyconst char *bytes;
  2327. int len;
  2328. #endif
  2329. {
  2330. YY_BUFFER_STATE b;
  2331. char *buf;
  2332. yy_size_t n;
  2333. int i;
  2334. /* Get memory for full buffer, including space for trailing EOB's. */
  2335. n = len + 2;
  2336. buf = (char *) yy_flex_alloc( n );
  2337. if ( ! buf )
  2338. YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
  2339. for ( i = 0; i < len; ++i )
  2340. buf[i] = bytes[i];
  2341. buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
  2342. b = yy_scan_buffer( buf, n );
  2343. if ( ! b )
  2344. YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
  2345. /* It's okay to grow etc. this buffer, and we should throw it
  2346.  * away when we're done.
  2347.  */
  2348. b->yy_is_our_buffer = 1;
  2349. return b;
  2350. }
  2351. #endif
  2352. #ifndef YY_NO_PUSH_STATE
  2353. #ifdef YY_USE_PROTOS
  2354. static void yy_push_state( int new_state )
  2355. #else
  2356. static void yy_push_state( new_state )
  2357. int new_state;
  2358. #endif
  2359. {
  2360. if ( yy_start_stack_ptr >= yy_start_stack_depth )
  2361. {
  2362. yy_size_t new_size;
  2363. yy_start_stack_depth += YY_START_STACK_INCR;
  2364. new_size = yy_start_stack_depth * sizeof( int );
  2365. if ( ! yy_start_stack )
  2366. yy_start_stack = (int *) yy_flex_alloc( new_size );
  2367. else
  2368. yy_start_stack = (int *) yy_flex_realloc(
  2369. (void *) yy_start_stack, new_size );
  2370. if ( ! yy_start_stack )
  2371. YY_FATAL_ERROR(
  2372. "out of memory expanding start-condition stack" );
  2373. }
  2374. yy_start_stack[yy_start_stack_ptr++] = YY_START;
  2375. BEGIN(new_state);
  2376. }
  2377. #endif
  2378. #ifndef YY_NO_POP_STATE
  2379. static void yy_pop_state()
  2380. {
  2381. if ( --yy_start_stack_ptr < 0 )
  2382. YY_FATAL_ERROR( "start-condition stack underflow" );
  2383. BEGIN(yy_start_stack[yy_start_stack_ptr]);
  2384. }
  2385. #endif
  2386. #ifndef YY_NO_TOP_STATE
  2387. static int yy_top_state()
  2388. {
  2389. return yy_start_stack[yy_start_stack_ptr - 1];
  2390. }
  2391. #endif
  2392. #ifndef YY_EXIT_FAILURE
  2393. #define YY_EXIT_FAILURE 2
  2394. #endif
  2395. #ifdef YY_USE_PROTOS
  2396. static void yy_fatal_error( yyconst char msg[] )
  2397. #else
  2398. static void yy_fatal_error( msg )
  2399. char msg[];
  2400. #endif
  2401. {
  2402. (void) fprintf( stderr, "%sn", msg );
  2403. exit( YY_EXIT_FAILURE );
  2404. }
  2405. /* Redefine yyless() so it works in section 3 code. */
  2406. #undef yyless
  2407. #define yyless(n) 
  2408. do 
  2409. /* Undo effects of setting up yytext. */ 
  2410. yytext[yyleng] = yy_hold_char; 
  2411. yy_c_buf_p = yytext + n; 
  2412. yy_hold_char = *yy_c_buf_p; 
  2413. *yy_c_buf_p = ''; 
  2414. yyleng = n; 
  2415. while ( 0 )
  2416. /* Internal utility routines. */
  2417. #ifndef yytext_ptr
  2418. #ifdef YY_USE_PROTOS
  2419. static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
  2420. #else
  2421. static void yy_flex_strncpy( s1, s2, n )
  2422. char *s1;
  2423. yyconst char *s2;
  2424. int n;
  2425. #endif
  2426. {
  2427. register int i;
  2428. for ( i = 0; i < n; ++i )
  2429. s1[i] = s2[i];
  2430. }
  2431. #endif
  2432. #ifdef YY_NEED_STRLEN
  2433. #ifdef YY_USE_PROTOS
  2434. static int yy_flex_strlen( yyconst char *s )
  2435. #else
  2436. static int yy_flex_strlen( s )
  2437. yyconst char *s;
  2438. #endif
  2439. {
  2440. register int n;
  2441. for ( n = 0; s[n]; ++n )
  2442. ;
  2443. return n;
  2444. }
  2445. #endif
  2446. #ifdef YY_USE_PROTOS
  2447. static void *yy_flex_alloc( yy_size_t size )
  2448. #else
  2449. static void *yy_flex_alloc( size )
  2450. yy_size_t size;
  2451. #endif
  2452. {
  2453. return (void *) malloc( size );
  2454. }
  2455. #ifdef YY_USE_PROTOS
  2456. static void *yy_flex_realloc( void *ptr, yy_size_t size )
  2457. #else
  2458. static void *yy_flex_realloc( ptr, size )
  2459. void *ptr;
  2460. yy_size_t size;
  2461. #endif
  2462. {
  2463. /* The cast to (char *) in the following accommodates both
  2464.  * implementations that use char* generic pointers, and those
  2465.  * that use void* generic pointers.  It works with the latter
  2466.  * because both ANSI C and C++ allow castless assignment from
  2467.  * any pointer type to void*, and deal with argument conversions
  2468.  * as though doing an assignment.
  2469.  */
  2470. return (void *) realloc( (char *) ptr, size );
  2471. }
  2472. #ifdef YY_USE_PROTOS
  2473. static void yy_flex_free( void *ptr )
  2474. #else
  2475. static void yy_flex_free( ptr )
  2476. void *ptr;
  2477. #endif
  2478. {
  2479. free( ptr );
  2480. }
  2481. #if YY_MAIN
  2482. int main()
  2483. {
  2484. yylex();
  2485. return 0;
  2486. }
  2487. #endif
  2488. #line 712 "pgc.l"
  2489. void
  2490. lex_init(void)
  2491. {
  2492.     braces_open = 0;
  2493.     BEGIN C;
  2494. }
  2495. int yywrap(void) 
  2496.     return 1;
  2497. }