📄 pgc.c
字号:
if ((llen+yyleng) > (MAX_PARSE_BUFFER - 1)) yyerror("ERROR: quoted string parse buffer exceeded"); memcpy(literal+llen, yytext, yyleng+1); llen += yyleng; } YY_BREAKcase 20:YY_RULE_SETUP#line 263 "pgc.l"{ } YY_BREAKcase 21:YY_RULE_SETUP#line 267 "pgc.l"{ BEGIN(xd); llen = 0; *literal = '\0'; } YY_BREAKcase 22:YY_RULE_SETUP#line 272 "pgc.l"{ BEGIN(SQL); yylval.str = mm_strdup(literal); return CSTRING; } YY_BREAKcase 23:YY_RULE_SETUP#line 277 "pgc.l"{ if ((llen+yyleng) > (MAX_PARSE_BUFFER - 1)) yyerror("ERROR: quoted string parse buffer exceeded"); memcpy(literal+llen, yytext, yyleng+1); llen += yyleng; } YY_BREAKcase 24:YY_RULE_SETUP#line 283 "pgc.l"{ BEGIN(xdc); llen = 0; *literal = '\0'; } YY_BREAKcase 25:YY_RULE_SETUP#line 288 "pgc.l"{ BEGIN(C); yylval.str = mm_strdup(literal); return CSTRING; } YY_BREAKcase 26:YY_RULE_SETUP#line 293 "pgc.l"{ if ((llen+yyleng) > (MAX_PARSE_BUFFER - 1)) yyerror("ERROR: quoted string parse buffer exceeded"); memcpy(literal+llen, yytext, yyleng+1); llen += yyleng; } YY_BREAKcase 27:YY_RULE_SETUP#line 300 "pgc.l"{ /* ignore */ } YY_BREAKcase 28:YY_RULE_SETUP#line 301 "pgc.l"{ BEGIN(SQL); return yytext[0]; } YY_BREAKcase 29:YY_RULE_SETUP#line 307 "pgc.l"{ return TYPECAST; } YY_BREAKcase 30:*yy_cp = yy_hold_char; /* undo effects of setting up yytext */yy_c_buf_p = yy_cp = yy_bp + 1;YY_DO_BEFORE_ACTION; /* set up yytext again */YY_RULE_SETUP#line 308 "pgc.l"{ BEGIN(xm); return yytext[0]; } YY_BREAKcase 31:YY_RULE_SETUP#line 312 "pgc.l"{ /* * We may find a ';' inside a structure * definition in a TYPE or VAR statement. * This is not an EOL marker. */ if (yytext[0] == ';' && struct_level == 0) BEGIN C; return yytext[0]; } YY_BREAKcase 32:*yy_cp = yy_hold_char; /* undo effects of setting up yytext */yy_c_buf_p = yy_cp -= 2;YY_DO_BEFORE_ACTION; /* set up yytext again */YY_RULE_SETUP#line 321 "pgc.l"{ yylval.str = mm_strdup((char*)yytext); return Op; } YY_BREAKcase 33:YY_RULE_SETUP#line 325 "pgc.l"{ if (strcmp((char*)yytext,"!=") == 0) yylval.str = mm_strdup("<>"); /* compatability */ else yylval.str = mm_strdup((char*)yytext); return Op; } YY_BREAKcase 34:YY_RULE_SETUP#line 332 "pgc.l"{ yylval.ival = atoi((char*)&yytext[1]); return PARAM; } YY_BREAKcase 35:YY_RULE_SETUP#line 336 "pgc.l"{ int i; ScanKeyword *keyword; char lower_text[NAMEDATALEN]; BEGIN(xm); /* this should leave the last byte set to '\0' */ strncpy(lower_text, yytext, NAMEDATALEN-1); for(i = 0; lower_text[i]; i++) if (isascii((unsigned char)lower_text[i]) && isupper(lower_text[i])) lower_text[i] = tolower(lower_text[i]); keyword = ScanKeywordLookup((char*)lower_text); if (keyword != NULL) { return keyword->value; } else { keyword = ScanECPGKeywordLookup((char*)lower_text); if (keyword != NULL) { return keyword->value; } else { struct _defines *ptr; for (ptr = defines; ptr; ptr = ptr->next) { if (strcmp(yytext, ptr->old) == 0) { struct _yy_buffer *yb; yb = mm_alloc(sizeof(struct _yy_buffer)); yb->buffer = YY_CURRENT_BUFFER; yb->lineno = yylineno; yb->filename = mm_strdup(input_filename); yb->next = yy_buffer; yy_buffer = yb; yy_scan_string(ptr->new); break; } } if (ptr == NULL) { yylval.str = mm_strdup((char*)yytext); return IDENT; } } } } YY_BREAKcase 36:YY_RULE_SETUP#line 389 "pgc.l"{ char* endptr; BEGIN(xm); errno = 0; yylval.ival = strtol((char *)yytext,&endptr,10); if (*endptr != '\0' || errno == ERANGE) { errno = 0;#if 0 yylval.dval = strtod(((char *)yytext),&endptr); if (*endptr != '\0' || errno == ERANGE) yyerror("ERROR: Bad integer input"); yyerror("WARNING: Integer input is out of range; promoted to float"); return FCONST;#endif yylval.str = mm_strdup((char*)yytext); return SCONST; } return ICONST; } YY_BREAKcase 37:YY_RULE_SETUP#line 410 "pgc.l"{ char* endptr; BEGIN(xm); if (strlen((char *)yytext) <= 17) { errno = 0; yylval.dval = strtod(((char *)yytext),&endptr); if (*endptr != '\0' || errno == ERANGE) yyerror("ERROR: Bad float8 input"); return FCONST; } yylval.str = mm_strdup((char*)yytext); return SCONST; } YY_BREAKcase 38:YY_RULE_SETUP#line 426 "pgc.l"{ char* endptr; BEGIN(xm); errno = 0; yylval.dval = strtod(((char *)yytext),&endptr); if (*endptr != '\0' || errno == ERANGE) yyerror("ERROR: Bad float8 input"); return FCONST; } YY_BREAKcase 39:YY_RULE_SETUP#line 436 "pgc.l"{ char* endptr; errno = 0; yylval.ival = strtol((char *)yytext,&endptr,10); if (*endptr != '\0' || errno == ERANGE) { errno = 0;#if 0 yylval.dval = strtod(((char *)yytext),&endptr); if (*endptr != '\0' || errno == ERANGE) yyerror("ERROR: Bad integer input"); yyerror("WARNING: Integer input is out of range; promoted to float"); return FCONST;#endif yylval.str = mm_strdup((char*)yytext); return SCONST; } return ICONST; } YY_BREAKcase 40:YY_RULE_SETUP#line 456 "pgc.l"{ char* endptr; if (strlen((char *)yytext) <= 17) { errno = 0; yylval.dval = strtod((char *)yytext,&endptr); if (*endptr != '\0' || errno == ERANGE) yyerror("ERROR: Bad float8 input"); return FCONST; } yylval.str = mm_strdup((char*)yytext); return SCONST; } YY_BREAKcase 41:YY_RULE_SETUP#line 470 "pgc.l"{ char* endptr; errno = 0; yylval.dval = strtod((char *)yytext,&endptr); if (*endptr != '\0' || errno == ERANGE) yyerror("ERROR: Bad float input"); return FCONST; } YY_BREAKcase 42:YY_RULE_SETUP#line 479 "pgc.l"{ yylval.str = mm_strdup((char*)yytext+1); return(CVARIABLE); } YY_BREAKcase 43:YY_RULE_SETUP#line 483 "pgc.l"{ int i; ScanKeyword *keyword; char lower_text[NAMEDATALEN]; /* this should leave the last byte set to '\0' */ strncpy(lower_text, yytext, NAMEDATALEN-1); for(i = 0; lower_text[i]; i++) if (isascii((unsigned char)lower_text[i]) && isupper(lower_text[i])) lower_text[i] = tolower(lower_text[i]); keyword = ScanKeywordLookup((char*)lower_text); if (keyword != NULL) { return keyword->value; } else { keyword = ScanECPGKeywordLookup((char*)lower_text); if (keyword != NULL) { return keyword->value; } else { struct _defines *ptr; for (ptr = defines; ptr; ptr = ptr->next) { if (strcmp(yytext, ptr->old) == 0) { struct _yy_buffer *yb; yb = mm_alloc(sizeof(struct _yy_buffer)); yb->buffer = YY_CURRENT_BUFFER; yb->lineno = yylineno; yb->filename = mm_strdup(input_filename); yb->next = yy_buffer; yy_buffer = yb; yy_scan_string(ptr->new); break; } } if (ptr == NULL) { yylval.str = mm_strdup((char*)yytext); return IDENT; } } } } YY_BREAKcase 44:YY_RULE_SETUP#line 535 "pgc.l"{ /* ignore */ } YY_BREAKcase 45:YY_RULE_SETUP#line 536 "pgc.l"{ return yytext[0]; } YY_BREAKcase 46:YY_RULE_SETUP#line 537 "pgc.l"{ BEGIN SQL; return SQL_START; } YY_BREAKcase 47:YY_RULE_SETUP#line 538 "pgc.l"{ /* ignore */ } YY_BREAKcase 48:YY_RULE_SETUP#line 539 "pgc.l"{ yylval.str = mm_strdup((char*)yytext); return(CPP_LINE); } YY_BREAKcase 49:YY_RULE_SETUP#line 543 "pgc.l"{ ScanKeyword *keyword; keyword = ScanCKeywordLookup((char*)yytext); if (keyword != NULL) { return keyword->value; } else { struct _defines *ptr; for (ptr = defines; ptr; ptr = ptr->next) { if (strcmp(yytext, ptr->old) == 0) { struct _yy_buffer *yb; yb = mm_alloc(sizeof(struct _yy_buffer)); yb->buffer = YY_CURRENT_BUFFER; yb->lineno = yylineno; yb->filename = mm_strdup(input_filename); yb->next = yy_buffer; yy_buffer = yb; yy_scan_string(ptr->new);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -