00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090 #include "proj.h"
00091 #include "stb.h"
00092 #include "bad.h"
00093 #include "expr.h"
00094 #include "lex.h"
00095 #include "malloc.h"
00096 #include "src.h"
00097 #include "sta.h"
00098 #include "stc.h"
00099 #include "stp.h"
00100 #include "str.h"
00101
00102
00103
00104 struct _ffestb_args_ ffestb_args;
00105
00106
00107
00108 #define FFESTB_KILL_EASY_ 1
00109
00110
00111
00112 union ffestb_subrargs_u_
00113 {
00114 struct
00115 {
00116 ffesttTokenList labels;
00117 ffelexHandler handler;
00118 bool ok;
00119
00120 }
00121 label_list;
00122 struct
00123 {
00124 ffesttDimList dims;
00125 ffelexHandler handler;
00126 mallocPool pool;
00127 bool ok;
00128
00129 ffeexprContext ctx;
00130 #ifdef FFECOM_dimensionsMAX
00131 int ndims;
00132
00133 #endif
00134 }
00135 dim_list;
00136 struct
00137 {
00138 ffesttTokenList args;
00139 ffelexHandler handler;
00140 ffelexToken close_paren;
00141 bool is_subr;
00142
00143 bool ok;
00144
00145 bool names;
00146 }
00147 name_list;
00148 };
00149
00150 union ffestb_local_u_
00151 {
00152 struct
00153 {
00154 ffebld expr;
00155 }
00156 call_stmt;
00157 struct
00158 {
00159 ffebld expr;
00160 }
00161 go_to;
00162 struct
00163 {
00164 ffebld dest;
00165 bool vxtparam;
00166
00167 }
00168 let;
00169 struct
00170 {
00171 ffebld expr;
00172 }
00173 if_stmt;
00174 struct
00175 {
00176 ffebld expr;
00177 }
00178 else_stmt;
00179 struct
00180 {
00181 ffebld expr;
00182 }
00183 dowhile;
00184 struct
00185 {
00186 ffebld var;
00187 ffebld start;
00188 ffebld end;
00189 }
00190 do_stmt;
00191 struct
00192 {
00193 bool is_cblock;
00194 }
00195 R522;
00196 struct
00197 {
00198 ffebld expr;
00199 bool started;
00200 }
00201 parameter;
00202 struct
00203 {
00204 ffesttExprList exprs;
00205 bool started;
00206 }
00207 equivalence;
00208 struct
00209 {
00210 ffebld expr;
00211 bool started;
00212 }
00213 data;
00214 struct
00215 {
00216 ffestrOther kw;
00217 }
00218 varlist;
00219 #if FFESTR_F90
00220 struct
00221 {
00222 ffestrOther kw;
00223 }
00224 type;
00225 #endif
00226 struct
00227 {
00228 ffelexHandler next;
00229 }
00230 construct;
00231 struct
00232 {
00233 ffesttFormatList f;
00234 ffestpFormatType current;
00235 ffelexToken t;
00236 ffesttFormatValue pre;
00237 ffesttFormatValue post;
00238 ffesttFormatValue dot;
00239 ffesttFormatValue exp;
00240 bool sign;
00241 bool complained;
00242 }
00243 format;
00244 #if FFESTR_F90
00245 struct
00246 {
00247 bool started;
00248 }
00249 moduleprocedure;
00250 #endif
00251 struct
00252 {
00253 ffebld expr;
00254 }
00255 selectcase;
00256 struct
00257 {
00258 ffesttCaseList cases;
00259 }
00260 case_stmt;
00261 #if FFESTR_F90
00262 struct
00263 {
00264 ffesttExprList exprs;
00265 ffebld expr;
00266 }
00267 heap;
00268 #endif
00269 #if FFESTR_F90
00270 struct
00271 {
00272 ffesttExprList exprs;
00273 }
00274 R624;
00275 #endif
00276 #if FFESTR_F90
00277 struct
00278 {
00279 ffestpDefinedOperator operator;
00280 bool assignment;
00281
00282 bool slash;
00283 }
00284 interface;
00285 #endif
00286 struct
00287 {
00288 bool is_cblock;
00289 }
00290 V014;
00291 #if FFESTR_VXT
00292 struct
00293 {
00294 bool started;
00295 ffebld u;
00296 ffebld m;
00297 ffebld n;
00298 ffebld asv;
00299 }
00300 V025;
00301 #endif
00302 struct
00303 {
00304 ffestpBeruIx ix;
00305 bool label;
00306 bool left;
00307 ffeexprContext context;
00308 }
00309 beru;
00310 struct
00311 {
00312 ffestpCloseIx ix;
00313 bool label;
00314 bool left;
00315 ffeexprContext context;
00316 }
00317 close;
00318 struct
00319 {
00320 ffestpDeleteIx ix;
00321 bool label;
00322 bool left;
00323 ffeexprContext context;
00324 }
00325 delete;
00326 struct
00327 {
00328 ffestpDeleteIx ix;
00329 bool label;
00330 bool left;
00331 ffeexprContext context;
00332 }
00333 find;
00334 struct
00335 {
00336 ffestpInquireIx ix;
00337 bool label;
00338 bool left;
00339 ffeexprContext context;
00340 bool may_be_iolength;
00341 }
00342 inquire;
00343 struct
00344 {
00345 ffestpOpenIx ix;
00346 bool label;
00347 bool left;
00348 ffeexprContext context;
00349 }
00350 open;
00351 struct
00352 {
00353 ffestpReadIx ix;
00354 bool label;
00355 bool left;
00356 ffeexprContext context;
00357 }
00358 read;
00359 struct
00360 {
00361 ffestpRewriteIx ix;
00362 bool label;
00363 bool left;
00364 ffeexprContext context;
00365 }
00366 rewrite;
00367 struct
00368 {
00369 ffestpWriteIx ix;
00370 bool label;
00371 bool left;
00372 ffeexprContext context;
00373 }
00374 vxtcode;
00375 struct
00376 {
00377 ffestpWriteIx ix;
00378 bool label;
00379 bool left;
00380 ffeexprContext context;
00381 }
00382 write;
00383 #if FFESTR_F90
00384 struct
00385 {
00386 bool started;
00387 }
00388 structure;
00389 #endif
00390 struct
00391 {
00392 bool started;
00393 }
00394 common;
00395 struct
00396 {
00397 bool started;
00398 }
00399 dimension;
00400 struct
00401 {
00402 bool started;
00403 }
00404 dimlist;
00405 struct
00406 {
00407 const char *badname;
00408 ffestrFirst first_kw;
00409 bool is_subr;
00410 }
00411 dummy;
00412 struct
00413 {
00414 ffebld kind;
00415 ffelexToken kindt;
00416 ffebld len;
00417 ffelexToken lent;
00418 ffelexHandler handler;
00419 ffelexToken recursive;
00420 ffebld expr;
00421 ffesttTokenList toklist;
00422 ffesttImpList imps;
00423 ffelexHandler imp_handler;
00424 const char *badname;
00425 ffestrOther kw;
00426 ffestpType type;
00427 bool parameter;
00428
00429 bool coloncolon;
00430 bool aster_after;
00431
00432 bool empty;
00433
00434 bool imp_started;
00435 bool imp_seen_comma;
00436
00437 }
00438 decl;
00439 struct
00440 {
00441 bool started;
00442 }
00443 vxtparam;
00444 };
00445
00446
00447
00448
00449
00450
00451
00452
00453
00454 static union ffestb_subrargs_u_ ffestb_subrargs_;
00455 static union ffestb_local_u_ ffestb_local_;
00456
00457
00458
00459 static void ffestb_subr_ambig_to_ents_ (void);
00460 static ffelexHandler ffestb_subr_ambig_nope_ (ffelexToken t);
00461 static ffelexHandler ffestb_subr_dimlist_ (ffelexToken ft, ffebld expr,
00462 ffelexToken t);
00463 static ffelexHandler ffestb_subr_dimlist_1_ (ffelexToken ft, ffebld expr,
00464 ffelexToken t);
00465 static ffelexHandler ffestb_subr_dimlist_2_ (ffelexToken ft, ffebld expr,
00466 ffelexToken t);
00467 static ffelexHandler ffestb_subr_name_list_ (ffelexToken t);
00468 static ffelexHandler ffestb_subr_name_list_1_ (ffelexToken t);
00469 static void ffestb_subr_R1001_append_p_ (void);
00470 static ffelexHandler ffestb_decl_kindparam_ (ffelexToken t);
00471 static ffelexHandler ffestb_decl_kindparam_1_ (ffelexToken t);
00472 static ffelexHandler ffestb_decl_kindparam_2_ (ffelexToken ft, ffebld expr,
00473 ffelexToken t);
00474 static ffelexHandler ffestb_decl_starkind_ (ffelexToken t);
00475 static ffelexHandler ffestb_decl_starlen_ (ffelexToken t);
00476 static ffelexHandler ffestb_decl_starlen_1_ (ffelexToken ft, ffebld expr,
00477 ffelexToken t);
00478 static ffelexHandler ffestb_decl_typeparams_ (ffelexToken t);
00479 static ffelexHandler ffestb_decl_typeparams_1_ (ffelexToken t);
00480 static ffelexHandler ffestb_decl_typeparams_2_ (ffelexToken ft, ffebld expr,
00481 ffelexToken t);
00482 static ffelexHandler ffestb_decl_typeparams_3_ (ffelexToken ft, ffebld expr,
00483 ffelexToken t);
00484 #if FFESTR_F90
00485 static ffelexHandler ffestb_decl_typetype1_ (ffelexToken t);
00486 static ffelexHandler ffestb_decl_typetype2_ (ffelexToken t);
00487 #endif
00488 static ffelexHandler ffestb_subr_label_list_ (ffelexToken t);
00489 static ffelexHandler ffestb_subr_label_list_1_ (ffelexToken t);
00490 static ffelexHandler ffestb_do1_ (ffelexToken t);
00491 static ffelexHandler ffestb_do2_ (ffelexToken t);
00492 static ffelexHandler ffestb_do3_ (ffelexToken t);
00493 static ffelexHandler ffestb_do4_ (ffelexToken ft, ffebld expr,
00494 ffelexToken t);
00495 static ffelexHandler ffestb_do5_ (ffelexToken t);
00496 static ffelexHandler ffestb_do6_ (ffelexToken ft, ffebld expr,
00497 ffelexToken t);
00498 static ffelexHandler ffestb_do7_ (ffelexToken ft, ffebld expr,
00499 ffelexToken t);
00500 static ffelexHandler ffestb_do8_ (ffelexToken ft, ffebld expr,
00501 ffelexToken t);
00502 static ffelexHandler ffestb_do9_ (ffelexToken ft, ffebld expr,
00503 ffelexToken t);
00504 static ffelexHandler ffestb_else1_ (ffelexToken t);
00505 static ffelexHandler ffestb_else2_ (ffelexToken ft, ffebld expr,
00506 ffelexToken t);
00507 static ffelexHandler ffestb_else3_ (ffelexToken t);
00508 static ffelexHandler ffestb_else4_ (ffelexToken t);
00509 static ffelexHandler ffestb_else5_ (ffelexToken t);
00510 static ffelexHandler ffestb_end1_ (ffelexToken t);
00511 static ffelexHandler ffestb_end2_ (ffelexToken t);
00512 static ffelexHandler ffestb_end3_ (ffelexToken t);
00513 static ffelexHandler ffestb_goto1_ (ffelexToken t);
00514 static ffelexHandler ffestb_goto2_ (ffelexToken t);
00515 static ffelexHandler ffestb_goto3_ (ffelexToken t);
00516 static ffelexHandler ffestb_goto4_ (ffelexToken ft, ffebld expr,
00517 ffelexToken t);
00518 static ffelexHandler ffestb_goto5_ (ffelexToken ft, ffebld expr,
00519 ffelexToken t);
00520 static ffelexHandler ffestb_goto6_ (ffelexToken t);
00521 static ffelexHandler ffestb_goto7_ (ffelexToken t);
00522 static ffelexHandler ffestb_halt1_ (ffelexToken ft, ffebld expr,
00523 ffelexToken t);
00524 static ffelexHandler ffestb_if1_ (ffelexToken ft, ffebld expr,
00525 ffelexToken t);
00526 static ffelexHandler ffestb_if2_ (ffelexToken t);
00527 static ffelexHandler ffestb_if3_ (ffelexToken t);
00528 static ffelexHandler ffestb_let1_ (ffelexToken ft, ffebld expr,
00529 ffelexToken t);
00530 static ffelexHandler ffestb_let2_ (ffelexToken ft, ffebld expr,
00531 ffelexToken t);
00532 #if FFESTR_F90
00533 static ffelexHandler ffestb_type1_ (ffelexToken t);
00534 static ffelexHandler ffestb_type2_ (ffelexToken t);
00535 static ffelexHandler ffestb_type3_ (ffelexToken t);
00536 static ffelexHandler ffestb_type4_ (ffelexToken t);
00537 #endif
00538 #if FFESTR_F90
00539 static ffelexHandler ffestb_varlist1_ (ffelexToken t);
00540 static ffelexHandler ffestb_varlist2_ (ffelexToken t);
00541 static ffelexHandler ffestb_varlist3_ (ffelexToken t);
00542 static ffelexHandler ffestb_varlist4_ (ffelexToken t);
00543 #endif
00544 static ffelexHandler ffestb_varlist5_ (ffelexToken t);
00545 static ffelexHandler ffestb_varlist6_ (ffelexToken t);
00546 #if FFESTR_F90
00547 static ffelexHandler ffestb_where1_ (ffelexToken ft, ffebld expr,
00548 ffelexToken t);
00549 static ffelexHandler ffestb_where2_ (ffelexToken t);
00550 static ffelexHandler ffestb_where3_ (ffelexToken t);
00551 #endif
00552 static ffelexHandler ffestb_R5221_ (ffelexToken t);
00553 static ffelexHandler ffestb_R5222_ (ffelexToken t);
00554 static ffelexHandler ffestb_R5223_ (ffelexToken t);
00555 static ffelexHandler ffestb_R5224_ (ffelexToken t);
00556 static ffelexHandler ffestb_R5281_ (ffelexToken ft, ffebld expr,
00557 ffelexToken t);
00558 static ffelexHandler ffestb_R5282_ (ffelexToken ft, ffebld expr,
00559 ffelexToken t);
00560 static ffelexHandler ffestb_R5283_ (ffelexToken ft, ffebld expr,
00561 ffelexToken t);
00562 static ffelexHandler ffestb_R5284_ (ffelexToken t);
00563 static ffelexHandler ffestb_R5371_ (ffelexToken ft, ffebld expr,
00564 ffelexToken t);
00565 static ffelexHandler ffestb_R5372_ (ffelexToken ft, ffebld expr,
00566 ffelexToken t);
00567 static ffelexHandler ffestb_R5373_ (ffelexToken t);
00568 static ffelexHandler ffestb_R5421_ (ffelexToken t);
00569 static ffelexHandler ffestb_R5422_ (ffelexToken t);
00570 static ffelexHandler ffestb_R5423_ (ffelexToken t);
00571 static ffelexHandler ffestb_R5424_ (ffelexToken t);
00572 static ffelexHandler ffestb_R5425_ (ffelexToken t);
00573 static ffelexHandler ffestb_R5441_ (ffelexToken ft, ffebld expr,
00574 ffelexToken t);
00575 static ffelexHandler ffestb_R5442_ (ffelexToken ft, ffebld expr,
00576 ffelexToken t);
00577 static ffelexHandler ffestb_R5443_ (ffelexToken t);
00578 static ffelexHandler ffestb_R5444_ (ffelexToken t);
00579 static ffelexHandler ffestb_R8341_ (ffelexToken t);
00580 static ffelexHandler ffestb_R8351_ (ffelexToken t);
00581 static ffelexHandler ffestb_R8381_ (ffelexToken t);
00582 static ffelexHandler ffestb_R8382_ (ffelexToken t);
00583 static ffelexHandler ffestb_R8383_ (ffelexToken ft, ffebld expr,
00584 ffelexToken t);
00585 static ffelexHandler ffestb_R8401_ (ffelexToken ft, ffebld expr,
00586 ffelexToken t);
00587 static ffelexHandler ffestb_R8402_ (ffelexToken t);
00588 static ffelexHandler ffestb_R8403_ (ffelexToken t);
00589 static ffelexHandler ffestb_R8404_ (ffelexToken t);
00590 static ffelexHandler ffestb_R8405_ (ffelexToken t);
00591 static ffelexHandler ffestb_R8406_ (ffelexToken t);
00592 static ffelexHandler ffestb_R8407_ (ffelexToken t);
00593 static ffelexHandler ffestb_R11021_ (ffelexToken t);
00594 static ffelexHandler ffestb_R1111_1_ (ffelexToken t);
00595 static ffelexHandler ffestb_R1111_2_ (ffelexToken t);
00596 static ffelexHandler ffestb_R12121_ (ffelexToken ft, ffebld expr,
00597 ffelexToken t);
00598 static ffelexHandler ffestb_R12271_ (ffelexToken ft, ffebld expr,
00599 ffelexToken t);
00600 static ffelexHandler ffestb_construct1_ (ffelexToken t);
00601 static ffelexHandler ffestb_construct2_ (ffelexToken t);
00602 #if FFESTR_F90
00603 static ffelexHandler ffestb_heap1_ (ffelexToken ft, ffebld expr,
00604 ffelexToken t);
00605 static ffelexHandler ffestb_heap2_ (ffelexToken t);
00606 static ffelexHandler ffestb_heap3_ (ffelexToken t);
00607 static ffelexHandler ffestb_heap4_ (ffelexToken ft, ffebld expr,
00608 ffelexToken t);
00609 static ffelexHandler ffestb_heap5_ (ffelexToken t);
00610 #endif
00611 #if FFESTR_F90
00612 static ffelexHandler ffestb_module1_ (ffelexToken t);
00613 static ffelexHandler ffestb_module2_ (ffelexToken t);
00614 static ffelexHandler ffestb_module3_ (ffelexToken t);
00615 #endif
00616 static ffelexHandler ffestb_R8091_ (ffelexToken t);
00617 static ffelexHandler ffestb_R8092_ (ffelexToken ft, ffebld expr,
00618 ffelexToken t);
00619 static ffelexHandler ffestb_R8093_ (ffelexToken t);
00620 static ffelexHandler ffestb_R8101_ (ffelexToken t);
00621 static ffelexHandler ffestb_R8102_ (ffelexToken t);
00622 static ffelexHandler ffestb_R8103_ (ffelexToken ft, ffebld expr,
00623 ffelexToken t);
00624 static ffelexHandler ffestb_R8104_ (ffelexToken ft, ffebld expr,
00625 ffelexToken t);
00626 static ffelexHandler ffestb_R10011_ (ffelexToken t);
00627 static ffelexHandler ffestb_R10012_ (ffelexToken t);
00628 static ffelexHandler ffestb_R10013_ (ffelexToken t);
00629 static ffelexHandler ffestb_R10014_ (ffelexToken t);
00630 static ffelexHandler ffestb_R10015_ (ffelexToken t);
00631 static ffelexHandler ffestb_R10016_ (ffelexToken t);
00632 static ffelexHandler ffestb_R10017_ (ffelexToken t);
00633 static ffelexHandler ffestb_R10018_ (ffelexToken t);
00634 static ffelexHandler ffestb_R10019_ (ffelexToken t);
00635 static ffelexHandler ffestb_R100110_ (ffelexToken t);
00636 static ffelexHandler ffestb_R100111_ (ffelexToken t);
00637 static ffelexHandler ffestb_R100112_ (ffelexToken t);
00638 static ffelexHandler ffestb_R100113_ (ffelexToken t);
00639 static ffelexHandler ffestb_R100114_ (ffelexToken t);
00640 static ffelexHandler ffestb_R100115_ (ffelexToken ft, ffebld expr,
00641 ffelexToken t);
00642 static ffelexHandler ffestb_R100116_ (ffelexToken ft, ffebld expr,
00643 ffelexToken t);
00644 static ffelexHandler ffestb_R100117_ (ffelexToken ft, ffebld expr,
00645 ffelexToken t);
00646 static ffelexHandler ffestb_R100118_ (ffelexToken ft, ffebld expr,
00647 ffelexToken t);
00648 #if FFESTR_F90
00649 static ffelexHandler ffestb_R11071_ (ffelexToken t);
00650 static ffelexHandler ffestb_R11072_ (ffelexToken t);
00651 static ffelexHandler ffestb_R11073_ (ffelexToken t);
00652 static ffelexHandler ffestb_R11074_ (ffelexToken t);
00653 static ffelexHandler ffestb_R11075_ (ffelexToken t);
00654 static ffelexHandler ffestb_R11076_ (ffelexToken t);
00655 static ffelexHandler ffestb_R11077_ (ffelexToken t);
00656 static ffelexHandler ffestb_R11078_ (ffelexToken t);
00657 static ffelexHandler ffestb_R11079_ (ffelexToken t);
00658 static ffelexHandler ffestb_R110710_ (ffelexToken t);
00659 static ffelexHandler ffestb_R110711_ (ffelexToken t);
00660 static ffelexHandler ffestb_R110712_ (ffelexToken t);
00661 #endif
00662 #if FFESTR_F90
00663 static ffelexHandler ffestb_R12021_ (ffelexToken t);
00664 static ffelexHandler ffestb_R12022_ (ffelexToken t);
00665 static ffelexHandler ffestb_R12023_ (ffelexToken t);
00666 static ffelexHandler ffestb_R12024_ (ffelexToken t);
00667 static ffelexHandler ffestb_R12025_ (ffelexToken t);
00668 static ffelexHandler ffestb_R12026_ (ffelexToken t);
00669 #endif
00670 static ffelexHandler ffestb_S3P41_ (ffelexToken ft, ffebld expr,
00671 ffelexToken t);
00672 static ffelexHandler ffestb_V0141_ (ffelexToken t);
00673 static ffelexHandler ffestb_V0142_ (ffelexToken t);
00674 static ffelexHandler ffestb_V0143_ (ffelexToken t);
00675 static ffelexHandler ffestb_V0144_ (ffelexToken t);
00676 #if FFESTR_VXT
00677 static ffelexHandler ffestb_V0251_ (ffelexToken t);
00678 static ffelexHandler ffestb_V0252_ (ffelexToken ft, ffebld expr,
00679 ffelexToken t);
00680 static ffelexHandler ffestb_V0253_ (ffelexToken ft, ffebld expr,
00681 ffelexToken t);
00682 static ffelexHandler ffestb_V0254_ (ffelexToken ft, ffebld expr,
00683 ffelexToken t);
00684 static ffelexHandler ffestb_V0255_ (ffelexToken t);
00685 static ffelexHandler ffestb_V0256_ (ffelexToken t);
00686 static ffelexHandler ffestb_V0257_ (ffelexToken ft, ffebld expr,
00687 ffelexToken t);
00688 static ffelexHandler ffestb_V0258_ (ffelexToken t);
00689 #endif
00690 #if FFESTB_KILL_EASY_
00691 static void ffestb_subr_kill_easy_ (ffestpInquireIx max);
00692 #else
00693 static void ffestb_subr_kill_accept_ (void);
00694 static void ffestb_subr_kill_beru_ (void);
00695 static void ffestb_subr_kill_close_ (void);
00696 static void ffestb_subr_kill_delete_ (void);
00697 static void ffestb_subr_kill_find_ (void);
00698 static void ffestb_subr_kill_inquire_ (void);
00699 static void ffestb_subr_kill_open_ (void);
00700 static void ffestb_subr_kill_print_ (void);
00701 static void ffestb_subr_kill_read_ (void);
00702 static void ffestb_subr_kill_rewrite_ (void);
00703 static void ffestb_subr_kill_type_ (void);
00704 static void ffestb_subr_kill_vxtcode_ (void);
00705 static void ffestb_subr_kill_write_ (void);
00706 #endif
00707 static ffelexHandler ffestb_beru1_ (ffelexToken ft, ffebld expr,
00708 ffelexToken t);
00709 static ffelexHandler ffestb_beru2_ (ffelexToken t);
00710 static ffelexHandler ffestb_beru3_ (ffelexToken t);
00711 static ffelexHandler ffestb_beru4_ (ffelexToken ft, ffebld expr,
00712 ffelexToken t);
00713 static ffelexHandler ffestb_beru5_ (ffelexToken t);
00714 static ffelexHandler ffestb_beru6_ (ffelexToken t);
00715 static ffelexHandler ffestb_beru7_ (ffelexToken ft, ffebld expr,
00716 ffelexToken t);
00717 static ffelexHandler ffestb_beru8_ (ffelexToken t);
00718 static ffelexHandler ffestb_beru9_ (ffelexToken t);
00719 static ffelexHandler ffestb_beru10_ (ffelexToken t);
00720 #if FFESTR_VXT
00721 static ffelexHandler ffestb_vxtcode1_ (ffelexToken ft, ffebld expr,
00722 ffelexToken t);
00723 static ffelexHandler ffestb_vxtcode2_ (ffelexToken ft, ffebld expr,
00724 ffelexToken t);
00725 static ffelexHandler ffestb_vxtcode3_ (ffelexToken ft, ffebld expr,
00726 ffelexToken t);
00727 static ffelexHandler ffestb_vxtcode4_ (ffelexToken t);
00728 static ffelexHandler ffestb_vxtcode5_ (ffelexToken t);
00729 static ffelexHandler ffestb_vxtcode6_ (ffelexToken ft, ffebld expr,
00730 ffelexToken t);
00731 static ffelexHandler ffestb_vxtcode7_ (ffelexToken t);
00732 static ffelexHandler ffestb_vxtcode8_ (ffelexToken t);
00733 static ffelexHandler ffestb_vxtcode9_ (ffelexToken t);
00734 static ffelexHandler ffestb_vxtcode10_ (ffelexToken ft, ffebld expr,
00735 ffelexToken t);
00736 #endif
00737 static ffelexHandler ffestb_R9041_ (ffelexToken t);
00738 static ffelexHandler ffestb_R9042_ (ffelexToken t);
00739 static ffelexHandler ffestb_R9043_ (ffelexToken ft, ffebld expr,
00740 ffelexToken t);
00741 static ffelexHandler ffestb_R9044_ (ffelexToken t);
00742 static ffelexHandler ffestb_R9045_ (ffelexToken t);
00743 static ffelexHandler ffestb_R9046_ (ffelexToken ft, ffebld expr,
00744 ffelexToken t);
00745 static ffelexHandler ffestb_R9047_ (ffelexToken t);
00746 static ffelexHandler ffestb_R9048_ (ffelexToken t);
00747 static ffelexHandler ffestb_R9049_ (ffelexToken t);
00748 static ffelexHandler ffestb_R9071_ (ffelexToken t);
00749 static ffelexHandler ffestb_R9072_ (ffelexToken t);
00750 static ffelexHandler ffestb_R9073_ (ffelexToken ft, ffebld expr,
00751 ffelexToken t);
00752 static ffelexHandler ffestb_R9074_ (ffelexToken t);
00753 static ffelexHandler ffestb_R9075_ (ffelexToken t);
00754 static ffelexHandler ffestb_R9076_ (ffelexToken ft, ffebld expr,
00755 ffelexToken t);
00756 static ffelexHandler ffestb_R9077_ (ffelexToken t);
00757 static ffelexHandler ffestb_R9078_ (ffelexToken t);
00758 static ffelexHandler ffestb_R9079_ (ffelexToken t);
00759 static ffelexHandler ffestb_R9091_ (ffelexToken ft, ffebld expr,
00760 ffelexToken t);
00761 static ffelexHandler ffestb_R9092_ (ffelexToken t);
00762 static ffelexHandler ffestb_R9093_ (ffelexToken t);
00763 static ffelexHandler ffestb_R9094_ (ffelexToken ft, ffebld expr,
00764 ffelexToken t);
00765 static ffelexHandler ffestb_R9095_ (ffelexToken t);
00766 static ffelexHandler ffestb_R9096_ (ffelexToken t);
00767 static ffelexHandler ffestb_R9097_ (ffelexToken ft, ffebld expr,
00768 ffelexToken t);
00769 static ffelexHandler ffestb_R9098_ (ffelexToken t);
00770 static ffelexHandler ffestb_R9099_ (ffelexToken t);
00771 static ffelexHandler ffestb_R90910_ (ffelexToken ft, ffebld expr,
00772 ffelexToken t);
00773 static ffelexHandler ffestb_R90911_ (ffelexToken t);
00774 static ffelexHandler ffestb_R90912_ (ffelexToken t);
00775 static ffelexHandler ffestb_R90913_ (ffelexToken t);
00776 static ffelexHandler ffestb_R90914_ (ffelexToken ft, ffebld expr,
00777 ffelexToken t);
00778 static ffelexHandler ffestb_R90915_ (ffelexToken ft, ffebld expr,
00779 ffelexToken t);
00780 static ffelexHandler ffestb_R9101_ (ffelexToken t);
00781 static ffelexHandler ffestb_R9102_ (ffelexToken t);
00782 static ffelexHandler ffestb_R9103_ (ffelexToken ft, ffebld expr,
00783 ffelexToken t);
00784 static ffelexHandler ffestb_R9104_ (ffelexToken t);
00785 static ffelexHandler ffestb_R9105_ (ffelexToken t);
00786 static ffelexHandler ffestb_R9106_ (ffelexToken ft, ffebld expr,
00787 ffelexToken t);
00788 static ffelexHandler ffestb_R9107_ (ffelexToken t);
00789 static ffelexHandler ffestb_R9108_ (ffelexToken t);
00790 static ffelexHandler ffestb_R9109_ (ffelexToken ft, ffebld expr,
00791 ffelexToken t);
00792 static ffelexHandler ffestb_R91010_ (ffelexToken t);
00793 static ffelexHandler ffestb_R91011_ (ffelexToken t);
00794 static ffelexHandler ffestb_R91012_ (ffelexToken t);
00795 static ffelexHandler ffestb_R91013_ (ffelexToken ft, ffebld expr,
00796 ffelexToken t);
00797 static ffelexHandler ffestb_R91014_ (ffelexToken ft, ffebld expr,
00798 ffelexToken t);
00799 static ffelexHandler ffestb_R9111_ (ffelexToken ft, ffebld expr,
00800 ffelexToken t);
00801 static ffelexHandler ffestb_R9112_ (ffelexToken ft, ffebld expr,
00802 ffelexToken t);
00803 static ffelexHandler ffestb_R9231_ (ffelexToken t);
00804 static ffelexHandler ffestb_R9232_ (ffelexToken t);
00805 static ffelexHandler ffestb_R9233_ (ffelexToken ft, ffebld expr,
00806 ffelexToken t);
00807 static ffelexHandler ffestb_R9234_ (ffelexToken t);
00808 static ffelexHandler ffestb_R9235_ (ffelexToken t);
00809 static ffelexHandler ffestb_R9236_ (ffelexToken ft, ffebld expr,
00810 ffelexToken t);
00811 static ffelexHandler ffestb_R9237_ (ffelexToken t);
00812 static ffelexHandler ffestb_R9238_ (ffelexToken t);
00813 static ffelexHandler ffestb_R9239_ (ffelexToken t);
00814 static ffelexHandler ffestb_R92310_ (ffelexToken t);
00815 static ffelexHandler ffestb_R92311_ (ffelexToken ft, ffebld expr,
00816 ffelexToken t);
00817 #if FFESTR_VXT
00818 static ffelexHandler ffestb_V0181_ (ffelexToken t);
00819 static ffelexHandler ffestb_V0182_ (ffelexToken t);
00820 static ffelexHandler ffestb_V0183_ (ffelexToken ft, ffebld expr,
00821 ffelexToken t);
00822 static ffelexHandler ffestb_V0184_ (ffelexToken t);
00823 static ffelexHandler ffestb_V0185_ (ffelexToken t);
00824 static ffelexHandler ffestb_V0186_ (ffelexToken ft, ffebld expr,
00825 ffelexToken t);
00826 static ffelexHandler ffestb_V0187_ (ffelexToken t);
00827 static ffelexHandler ffestb_V0188_ (ffelexToken t);
00828 static ffelexHandler ffestb_V0189_ (ffelexToken ft, ffebld expr,
00829 ffelexToken t);
00830 static ffelexHandler ffestb_V01810_ (ffelexToken t);
00831 static ffelexHandler ffestb_V01811_ (ffelexToken t);
00832 static ffelexHandler ffestb_V01812_ (ffelexToken t);
00833 static ffelexHandler ffestb_V01813_ (ffelexToken ft, ffebld expr,
00834 ffelexToken t);
00835 static ffelexHandler ffestb_V0191_ (ffelexToken ft, ffebld expr,
00836 ffelexToken t);
00837 static ffelexHandler ffestb_V0192_ (ffelexToken ft, ffebld expr,
00838 ffelexToken t);
00839 #endif
00840 static ffelexHandler ffestb_V0201_ (ffelexToken ft, ffebld expr,
00841 ffelexToken t);
00842 static ffelexHandler ffestb_V0202_ (ffelexToken ft, ffebld expr,
00843 ffelexToken t);
00844 #if FFESTR_VXT
00845 static ffelexHandler ffestb_V0211_ (ffelexToken t);
00846 static ffelexHandler ffestb_V0212_ (ffelexToken t);
00847 static ffelexHandler ffestb_V0213_ (ffelexToken ft, ffebld expr,
00848 ffelexToken t);
00849 static ffelexHandler ffestb_V0214_ (ffelexToken t);
00850 static ffelexHandler ffestb_V0215_ (ffelexToken t);
00851 static ffelexHandler ffestb_V0216_ (ffelexToken ft, ffebld expr,
00852 ffelexToken t);
00853 static ffelexHandler ffestb_V0217_ (ffelexToken t);
00854 static ffelexHandler ffestb_V0218_ (ffelexToken t);
00855 static ffelexHandler ffestb_V0219_ (ffelexToken t);
00856 static ffelexHandler ffestb_V0261_ (ffelexToken t);
00857 static ffelexHandler ffestb_V0262_ (ffelexToken t);
00858 static ffelexHandler ffestb_V0263_ (ffelexToken ft, ffebld expr,
00859 ffelexToken t);
00860 static ffelexHandler ffestb_V0264_ (ffelexToken t);
00861 static ffelexHandler ffestb_V0265_ (ffelexToken t);
00862 static ffelexHandler ffestb_V0266_ (ffelexToken ft, ffebld expr,
00863 ffelexToken t);
00864 static ffelexHandler ffestb_V0267_ (ffelexToken t);
00865 static ffelexHandler ffestb_V0268_ (ffelexToken t);
00866 static ffelexHandler ffestb_V0269_ (ffelexToken t);
00867 #endif
00868 #if FFESTR_F90
00869 static ffelexHandler ffestb_dimlist1_ (ffelexToken t);
00870 static ffelexHandler ffestb_dimlist2_ (ffelexToken t);
00871 static ffelexHandler ffestb_dimlist3_ (ffelexToken t);
00872 static ffelexHandler ffestb_dimlist4_ (ffelexToken t);
00873 #endif
00874 static ffelexHandler ffestb_dummy1_ (ffelexToken t);
00875 static ffelexHandler ffestb_dummy2_ (ffelexToken t);
00876 static ffelexHandler ffestb_R5241_ (ffelexToken t);
00877 static ffelexHandler ffestb_R5242_ (ffelexToken t);
00878 static ffelexHandler ffestb_R5243_ (ffelexToken t);
00879 static ffelexHandler ffestb_R5244_ (ffelexToken t);
00880 static ffelexHandler ffestb_R5471_ (ffelexToken t);
00881 static ffelexHandler ffestb_R5472_ (ffelexToken t);
00882 static ffelexHandler ffestb_R5473_ (ffelexToken t);
00883 static ffelexHandler ffestb_R5474_ (ffelexToken t);
00884 static ffelexHandler ffestb_R5475_ (ffelexToken t);
00885 static ffelexHandler ffestb_R5476_ (ffelexToken t);
00886 static ffelexHandler ffestb_R5477_ (ffelexToken t);
00887 #if FFESTR_F90
00888 static ffelexHandler ffestb_R6241_ (ffelexToken ft, ffebld expr,
00889 ffelexToken t);
00890 static ffelexHandler ffestb_R6242_ (ffelexToken t);
00891 #endif
00892 static ffelexHandler ffestb_R12291_ (ffelexToken t);
00893 static ffelexHandler ffestb_R12292_ (ffelexToken ft, ffebld expr,
00894 ffelexToken t);
00895 static ffelexHandler ffestb_decl_chartype1_ (ffelexToken t);
00896 #if FFESTR_F90
00897 static ffelexHandler ffestb_decl_recursive1_ (ffelexToken t);
00898 static ffelexHandler ffestb_decl_recursive2_ (ffelexToken t);
00899 static ffelexHandler ffestb_decl_recursive3_ (ffelexToken t);
00900 static ffelexHandler ffestb_decl_recursive4_ (ffelexToken t);
00901 #endif
00902 static ffelexHandler ffestb_decl_attrs_ (ffelexToken t);
00903 static ffelexHandler ffestb_decl_attrs_1_ (ffelexToken t);
00904 static ffelexHandler ffestb_decl_attrs_2_ (ffelexToken t);
00905 #if FFESTR_F90
00906 static ffelexHandler ffestb_decl_attrs_3_ (ffelexToken t);
00907 static ffelexHandler ffestb_decl_attrs_4_ (ffelexToken t);
00908 static ffelexHandler ffestb_decl_attrs_5_ (ffelexToken t);
00909 static ffelexHandler ffestb_decl_attrs_6_ (ffelexToken t);
00910 #endif
00911 static ffelexHandler ffestb_decl_attrs_7_ (ffelexToken t);
00912 static ffelexHandler ffestb_decl_attrsp_ (ffelexToken t);
00913 static ffelexHandler ffestb_decl_ents_ (ffelexToken t);
00914 static ffelexHandler ffestb_decl_ents_1_ (ffelexToken t);
00915 static ffelexHandler ffestb_decl_ents_2_ (ffelexToken t);
00916 static ffelexHandler ffestb_decl_ents_3_ (ffelexToken t);
00917 static ffelexHandler ffestb_decl_ents_4_ (ffelexToken t);
00918 static ffelexHandler ffestb_decl_ents_5_ (ffelexToken t);
00919 static ffelexHandler ffestb_decl_ents_6_ (ffelexToken ft, ffebld expr,
00920 ffelexToken t);
00921 static ffelexHandler ffestb_decl_ents_7_ (ffelexToken t);
00922 static ffelexHandler ffestb_decl_ents_8_ (ffelexToken ft, ffebld expr,
00923 ffelexToken t);
00924 static ffelexHandler ffestb_decl_ents_9_ (ffelexToken ft, ffebld expr,
00925 ffelexToken t);
00926 static ffelexHandler ffestb_decl_ents_10_ (ffelexToken ft, ffebld expr,
00927 ffelexToken t);
00928 static ffelexHandler ffestb_decl_ents_11_ (ffelexToken t);
00929 static ffelexHandler ffestb_decl_entsp_ (ffelexToken t);
00930 static ffelexHandler ffestb_decl_entsp_1_ (ffelexToken t);
00931 static ffelexHandler ffestb_decl_entsp_2_ (ffelexToken t);
00932 static ffelexHandler ffestb_decl_entsp_3_ (ffelexToken t);
00933 static ffelexHandler ffestb_decl_entsp_4_ (ffelexToken ft, ffebld expr,
00934 ffelexToken t);
00935 static ffelexHandler ffestb_decl_entsp_5_ (ffelexToken t);
00936 static ffelexHandler ffestb_decl_entsp_6_ (ffelexToken t);
00937 static ffelexHandler ffestb_decl_entsp_7_ (ffelexToken t);
00938 static ffelexHandler ffestb_decl_entsp_8_ (ffelexToken t);
00939 #if FFESTR_F90
00940 static ffelexHandler ffestb_decl_func_ (ffelexToken t);
00941 #endif
00942 static ffelexHandler ffestb_decl_funcname_ (ffelexToken t);
00943 static ffelexHandler ffestb_decl_funcname_1_ (ffelexToken t);
00944 static ffelexHandler ffestb_decl_funcname_2_ (ffelexToken t);
00945 static ffelexHandler ffestb_decl_funcname_3_ (ffelexToken ft, ffebld expr,
00946 ffelexToken t);
00947 static ffelexHandler ffestb_decl_funcname_4_ (ffelexToken t);
00948 static ffelexHandler ffestb_decl_funcname_5_ (ffelexToken t);
00949 static ffelexHandler ffestb_decl_funcname_6_ (ffelexToken t);
00950 static ffelexHandler ffestb_decl_funcname_7_ (ffelexToken t);
00951 static ffelexHandler ffestb_decl_funcname_8_ (ffelexToken t);
00952 static ffelexHandler ffestb_decl_funcname_9_ (ffelexToken t);
00953 #if FFESTR_VXT
00954 static ffelexHandler ffestb_V0031_ (ffelexToken t);
00955 static ffelexHandler ffestb_V0032_ (ffelexToken t);
00956 static ffelexHandler ffestb_V0033_ (ffelexToken t);
00957 static ffelexHandler ffestb_V0034_ (ffelexToken t);
00958 static ffelexHandler ffestb_V0035_ (ffelexToken t);
00959 static ffelexHandler ffestb_V0036_ (ffelexToken t);
00960 static ffelexHandler ffestb_V0161_ (ffelexToken t);
00961 static ffelexHandler ffestb_V0162_ (ffelexToken t);
00962 static ffelexHandler ffestb_V0163_ (ffelexToken t);
00963 static ffelexHandler ffestb_V0164_ (ffelexToken t);
00964 static ffelexHandler ffestb_V0165_ (ffelexToken t);
00965 static ffelexHandler ffestb_V0166_ (ffelexToken t);
00966 #endif
00967 static ffelexHandler ffestb_V0271_ (ffelexToken t);
00968 static ffelexHandler ffestb_V0272_ (ffelexToken ft, ffebld expr,
00969 ffelexToken t);
00970 static ffelexHandler ffestb_V0273_ (ffelexToken t);
00971 static ffelexHandler ffestb_decl_R5391_ (ffelexToken t);
00972 static ffelexHandler ffestb_decl_R5392_ (ffelexToken t);
00973 #if FFESTR_F90
00974 static ffelexHandler ffestb_decl_R5393_ (ffelexToken t);
00975 #endif
00976 static ffelexHandler ffestb_decl_R5394_ (ffelexToken t);
00977 static ffelexHandler ffestb_decl_R5395_ (ffelexToken t);
00978 static ffelexHandler ffestb_decl_R539letters_ (ffelexToken t);
00979 static ffelexHandler ffestb_decl_R539letters_1_ (ffelexToken t);
00980 static ffelexHandler ffestb_decl_R539letters_2_ (ffelexToken t);
00981 static ffelexHandler ffestb_decl_R539letters_3_ (ffelexToken t);
00982 static ffelexHandler ffestb_decl_R539letters_4_ (ffelexToken t);
00983 static ffelexHandler ffestb_decl_R539letters_5_ (ffelexToken t);
00984 static ffelexHandler ffestb_decl_R539maybe_ (ffelexToken t);
00985 static ffelexHandler ffestb_decl_R539maybe_1_ (ffelexToken t);
00986 static ffelexHandler ffestb_decl_R539maybe_2_ (ffelexToken t);
00987 static ffelexHandler ffestb_decl_R539maybe_3_ (ffelexToken t);
00988 static ffelexHandler ffestb_decl_R539maybe_4_ (ffelexToken t);
00989 static ffelexHandler ffestb_decl_R539maybe_5_ (ffelexToken t);
00990
00991
00992
00993 #if FFESTB_KILL_EASY_
00994 #define ffestb_subr_kill_accept_() \
00995 ffestb_subr_kill_easy_((ffestpInquireIx) FFESTP_acceptix)
00996 #define ffestb_subr_kill_beru_() \
00997 ffestb_subr_kill_easy_((ffestpInquireIx) FFESTP_beruix)
00998 #define ffestb_subr_kill_close_() \
00999 ffestb_subr_kill_easy_((ffestpInquireIx) FFESTP_closeix)
01000 #define ffestb_subr_kill_delete_() \
01001 ffestb_subr_kill_easy_((ffestpInquireIx) FFESTP_deleteix)
01002 #define ffestb_subr_kill_find_() \
01003 ffestb_subr_kill_easy_((ffestpInquireIx) FFESTP_findix)
01004 #define ffestb_subr_kill_inquire_() \
01005 ffestb_subr_kill_easy_((ffestpInquireIx) FFESTP_inquireix)
01006 #define ffestb_subr_kill_open_() \
01007 ffestb_subr_kill_easy_((ffestpInquireIx) FFESTP_openix)
01008 #define ffestb_subr_kill_print_() \
01009 ffestb_subr_kill_easy_((ffestpInquireIx) FFESTP_printix)
01010 #define ffestb_subr_kill_read_() \
01011 ffestb_subr_kill_easy_((ffestpInquireIx) FFESTP_readix)
01012 #define ffestb_subr_kill_rewrite_() \
01013 ffestb_subr_kill_easy_((ffestpInquireIx) FFESTP_rewriteix)
01014 #define ffestb_subr_kill_type_() \
01015 ffestb_subr_kill_easy_((ffestpInquireIx) FFESTP_typeix)
01016 #define ffestb_subr_kill_vxtcode_() \
01017 ffestb_subr_kill_easy_((ffestpInquireIx) FFESTP_vxtcodeix)
01018 #define ffestb_subr_kill_write_() \
01019 ffestb_subr_kill_easy_((ffestpInquireIx) FFESTP_writeix)
01020 #endif
01021
01022
01023
01024
01025
01026
01027
01028
01029 static ffelexHandler
01030 ffestb_subr_ambig_nope_ (ffelexToken t)
01031 {
01032 if (ffestb_local_.decl.recursive != NULL)
01033 ffelex_token_kill (ffestb_local_.decl.recursive);
01034 if (ffestb_local_.decl.kindt != NULL)
01035 ffelex_token_kill (ffestb_local_.decl.kindt);
01036 if (ffestb_local_.decl.lent != NULL)
01037 ffelex_token_kill (ffestb_local_.decl.lent);
01038 ffelex_token_kill (ffesta_tokens[1]);
01039 ffelex_token_kill (ffesta_tokens[2]);
01040 ffestt_tokenlist_kill (ffestb_local_.decl.toklist);
01041 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
01042 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
01043 }
01044
01045
01046
01047
01048
01049
01050
01051
01052 static void
01053 ffestb_subr_ambig_to_ents_ ()
01054 {
01055 ffelexToken nt;
01056
01057 nt = ffelex_token_name_from_names (ffesta_tokens[1], 0, 0);
01058 ffelex_token_kill (ffesta_tokens[1]);
01059 ffelex_token_kill (ffesta_tokens[2]);
01060 ffesta_tokens[1] = nt;
01061 if (ffestb_local_.decl.recursive != NULL)
01062 ffelex_token_kill (ffestb_local_.decl.recursive);
01063 if (!ffestb_local_.decl.aster_after)
01064 {
01065 if (ffestb_local_.decl.type == FFESTP_typeCHARACTER)
01066 {
01067 if (!ffesta_is_inhibited ())
01068 ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
01069 ffestb_local_.decl.kind, ffestb_local_.decl.kindt,
01070 ffestb_local_.decl.len, ffestb_local_.decl.lent);
01071 if (ffestb_local_.decl.kindt != NULL)
01072 {
01073 ffelex_token_kill (ffestb_local_.decl.kindt);
01074 ffestb_local_.decl.kind = NULL;
01075 ffestb_local_.decl.kindt = NULL;
01076 }
01077 if (ffestb_local_.decl.lent != NULL)
01078 {
01079 ffelex_token_kill (ffestb_local_.decl.lent);
01080 ffestb_local_.decl.len = NULL;
01081 ffestb_local_.decl.lent = NULL;
01082 }
01083 }
01084 else
01085 {
01086 if (!ffesta_is_inhibited ())
01087 ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
01088 ffestb_local_.decl.kind, ffestb_local_.decl.kindt, NULL,
01089 NULL);
01090 if (ffestb_local_.decl.kindt != NULL)
01091 {
01092 ffelex_token_kill (ffestb_local_.decl.kindt);
01093 ffestb_local_.decl.kind = NULL;
01094 ffestb_local_.decl.kindt = NULL;
01095 }
01096 }
01097 return;
01098 }
01099 if (ffestb_local_.decl.type == FFESTP_typeCHARACTER)
01100 {
01101 if (!ffesta_is_inhibited ())
01102 ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
01103 ffestb_local_.decl.kind, ffestb_local_.decl.kindt, NULL, NULL);
01104 if (ffestb_local_.decl.kindt != NULL)
01105 {
01106 ffelex_token_kill (ffestb_local_.decl.kindt);
01107 ffestb_local_.decl.kind = NULL;
01108 ffestb_local_.decl.kindt = NULL;
01109 }
01110 }
01111 else if (!ffesta_is_inhibited ())
01112 ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
01113 NULL, NULL, NULL, NULL);
01114
01115 }
01116
01117
01118
01119
01120
01121
01122
01123
01124
01125
01126 static ffelexHandler
01127 ffestb_subr_dimlist_ (ffelexToken ft, ffebld expr, ffelexToken t)
01128 {
01129 switch (ffelex_token_type (t))
01130 {
01131 case FFELEX_typeCLOSE_PAREN:
01132 if (expr == NULL)
01133 break;
01134 #ifdef FFECOM_dimensionsMAX
01135 if (ffestb_subrargs_.dim_list.ndims++ == FFECOM_dimensionsMAX)
01136 {
01137 ffesta_ffebad_1t (FFEBAD_TOO_MANY_DIMS, ft);
01138 ffestb_subrargs_.dim_list.ok = TRUE;
01139 return (ffelexHandler) ffestb_subrargs_.dim_list.handler;
01140 }
01141 #endif
01142 ffestt_dimlist_append (ffestb_subrargs_.dim_list.dims, NULL, expr,
01143 ffelex_token_use (t));
01144 ffestb_subrargs_.dim_list.ok = TRUE;
01145 return (ffelexHandler) ffestb_subrargs_.dim_list.handler;
01146
01147 case FFELEX_typeCOMMA:
01148 if ((expr != NULL) && (ffebld_op (expr) == FFEBLD_opSTAR))
01149 break;
01150 #ifdef FFECOM_dimensionsMAX
01151 if (ffestb_subrargs_.dim_list.ndims++ == FFECOM_dimensionsMAX)
01152 {
01153 ffesta_ffebad_1t (FFEBAD_TOO_MANY_DIMS, ft);
01154 return (ffelexHandler) ffeexpr_rhs (ffestb_subrargs_.dim_list.pool,
01155 ffestb_subrargs_.dim_list.ctx,
01156 (ffeexprCallback) ffestb_subr_dimlist_2_);
01157 }
01158 #endif
01159 ffestt_dimlist_append (ffestb_subrargs_.dim_list.dims, NULL, expr,
01160 ffelex_token_use (t));
01161 return (ffelexHandler) ffeexpr_rhs (ffestb_subrargs_.dim_list.pool,
01162 ffestb_subrargs_.dim_list.ctx,
01163 (ffeexprCallback) ffestb_subr_dimlist_);
01164
01165 case FFELEX_typeCOLON:
01166 if ((expr != NULL) && (ffebld_op (expr) == FFEBLD_opSTAR))
01167 break;
01168 #ifdef FFECOM_dimensionsMAX
01169 if (ffestb_subrargs_.dim_list.ndims++ == FFECOM_dimensionsMAX)
01170 {
01171 ffesta_ffebad_1t (FFEBAD_TOO_MANY_DIMS, ft);
01172 return (ffelexHandler) ffeexpr_rhs (ffestb_subrargs_.dim_list.pool,
01173 ffestb_subrargs_.dim_list.ctx,
01174 (ffeexprCallback) ffestb_subr_dimlist_2_);
01175 }
01176 #endif
01177 ffestt_dimlist_append (ffestb_subrargs_.dim_list.dims, expr, NULL,
01178 ffelex_token_use (t));
01179
01180 return (ffelexHandler) ffeexpr_rhs (ffestb_subrargs_.dim_list.pool,
01181 ffestb_subrargs_.dim_list.ctx,
01182 (ffeexprCallback) ffestb_subr_dimlist_1_);
01183
01184 default:
01185 break;
01186 }
01187
01188 ffestb_subrargs_.dim_list.ok = FALSE;
01189 return (ffelexHandler) ffestb_subrargs_.dim_list.handler (t);
01190 }
01191
01192
01193
01194
01195
01196
01197
01198 static ffelexHandler
01199 ffestb_subr_dimlist_1_ (ffelexToken ft UNUSED, ffebld expr, ffelexToken t)
01200 {
01201 switch (ffelex_token_type (t))
01202 {
01203 case FFELEX_typeCLOSE_PAREN:
01204 ffestb_subrargs_.dim_list.dims->previous->upper = expr;
01205 ffestb_subrargs_.dim_list.ok = TRUE;
01206 return (ffelexHandler) ffestb_subrargs_.dim_list.handler;
01207
01208 case FFELEX_typeCOMMA:
01209 if ((expr != NULL) && (ffebld_op (expr) == FFEBLD_opSTAR))
01210 break;
01211 ffestb_subrargs_.dim_list.dims->previous->upper = expr;
01212 return (ffelexHandler) ffeexpr_rhs (ffestb_subrargs_.dim_list.pool,
01213 ffestb_subrargs_.dim_list.ctx, (ffeexprCallback) ffestb_subr_dimlist_);
01214
01215 default:
01216 break;
01217 }
01218
01219 ffestb_subrargs_.dim_list.ok = FALSE;
01220 return (ffelexHandler) ffestb_subrargs_.dim_list.handler (t);
01221 }
01222
01223
01224
01225
01226
01227
01228
01229 static ffelexHandler
01230 ffestb_subr_dimlist_2_ (ffelexToken ft UNUSED, ffebld expr, ffelexToken t)
01231 {
01232 switch (ffelex_token_type (t))
01233 {
01234 case FFELEX_typeCLOSE_PAREN:
01235 ffestb_subrargs_.dim_list.ok = TRUE;
01236 return (ffelexHandler) ffestb_subrargs_.dim_list.handler;
01237
01238 case FFELEX_typeCOMMA:
01239 case FFELEX_typeCOLON:
01240 if ((expr != NULL) && (ffebld_op (expr) == FFEBLD_opSTAR))
01241 break;
01242 return (ffelexHandler) ffeexpr_rhs (ffestb_subrargs_.dim_list.pool,
01243 ffestb_subrargs_.dim_list.ctx,
01244 (ffeexprCallback) ffestb_subr_dimlist_2_);
01245
01246 default:
01247 break;
01248 }
01249
01250 ffestb_subrargs_.dim_list.ok = FALSE;
01251 return (ffelexHandler) ffestb_subrargs_.dim_list.handler (t);
01252 }
01253
01254
01255
01256
01257
01258
01259
01260
01261
01262
01263
01264 static ffelexHandler
01265 ffestb_subr_name_list_ (ffelexToken t)
01266 {
01267 switch (ffelex_token_type (t))
01268 {
01269 case FFELEX_typeCLOSE_PAREN:
01270 if (ffestt_tokenlist_count (ffestb_subrargs_.name_list.args) != 0)
01271 {
01272 ffebad_start (FFEBAD_TRAILING_COMMA);
01273 ffebad_here (0, ffelex_token_where_line (t), ffelex_token_where_column (t));
01274 ffebad_finish ();
01275 }
01276 ffestb_subrargs_.name_list.ok = TRUE;
01277 ffestb_subrargs_.name_list.close_paren = ffelex_token_use (t);
01278 if (ffestb_subrargs_.name_list.names)
01279 ffelex_set_names (TRUE);
01280 return (ffelexHandler) ffestb_subrargs_.name_list.handler;
01281
01282 case FFELEX_typeASTERISK:
01283 if (!ffestb_subrargs_.name_list.is_subr)
01284 break;
01285
01286 case FFELEX_typeNAME:
01287 ffestt_tokenlist_append (ffestb_subrargs_.name_list.args,
01288 ffelex_token_use (t));
01289 return (ffelexHandler) ffestb_subr_name_list_1_;
01290
01291 default:
01292 break;
01293 }
01294
01295 ffestb_subrargs_.name_list.ok = FALSE;
01296 ffestb_subrargs_.name_list.close_paren = ffelex_token_use (t);
01297 if (ffestb_subrargs_.name_list.names)
01298 ffelex_set_names (TRUE);
01299 return (ffelexHandler) (*ffestb_subrargs_.name_list.handler) (t);
01300 }
01301
01302
01303
01304
01305
01306
01307
01308
01309 static ffelexHandler
01310 ffestb_subr_name_list_1_ (ffelexToken t)
01311 {
01312 switch (ffelex_token_type (t))
01313 {
01314 case FFELEX_typeCOMMA:
01315 return (ffelexHandler) ffestb_subr_name_list_;
01316
01317 case FFELEX_typeCLOSE_PAREN:
01318 ffestb_subrargs_.name_list.ok = TRUE;
01319 ffestb_subrargs_.name_list.close_paren = ffelex_token_use (t);
01320 if (ffestb_subrargs_.name_list.names)
01321 ffelex_set_names (TRUE);
01322 return (ffelexHandler) ffestb_subrargs_.name_list.handler;
01323
01324 default:
01325 ffestb_subrargs_.name_list.ok = FALSE;
01326 ffestb_subrargs_.name_list.close_paren = ffelex_token_use (t);
01327 if (ffestb_subrargs_.name_list.names)
01328 ffelex_set_names (TRUE);
01329 return (ffelexHandler) (*ffestb_subrargs_.name_list.handler) (t);
01330 }
01331 }
01332
01333 static void
01334 ffestb_subr_R1001_append_p_ (void)
01335 {
01336 ffesttFormatList f;
01337
01338 if (!ffestb_local_.format.pre.present)
01339 {
01340 ffesta_ffebad_1t (FFEBAD_FORMAT_BAD_P_SPEC, ffestb_local_.format.t);
01341 ffelex_token_kill (ffestb_local_.format.t);
01342 return;
01343 }
01344
01345 f = ffestt_formatlist_append (ffestb_local_.format.f);
01346 f->type = FFESTP_formattypeP;
01347 f->t = ffestb_local_.format.t;
01348 f->u.R1010.val = ffestb_local_.format.pre;
01349 }
01350
01351
01352
01353
01354
01355
01356
01357 static ffelexHandler
01358 ffestb_decl_kindparam_ (ffelexToken t)
01359 {
01360 switch (ffelex_token_type (t))
01361 {
01362 case FFELEX_typeNAME:
01363 ffesta_tokens[1] = ffelex_token_use (t);
01364 return (ffelexHandler) ffestb_decl_kindparam_1_;
01365
01366 default:
01367 return (ffelexHandler) (*((ffelexHandler)
01368 ffeexpr_rhs (ffesta_output_pool,
01369 FFEEXPR_contextKINDTYPE,
01370 (ffeexprCallback) ffestb_decl_kindparam_2_)))
01371 (t);
01372 }
01373 }
01374
01375
01376
01377
01378
01379
01380
01381 static ffelexHandler
01382 ffestb_decl_kindparam_1_ (ffelexToken t)
01383 {
01384 ffelexHandler next;
01385 ffelexToken nt;
01386
01387 switch (ffelex_token_type (t))
01388 {
01389 case FFELEX_typeEQUALS:
01390 ffesta_confirmed ();
01391 if (ffestr_other (ffesta_tokens[1]) != FFESTR_otherKIND)
01392 break;
01393 ffelex_token_kill (ffesta_tokens[1]);
01394 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
01395 FFEEXPR_contextKINDTYPE, (ffeexprCallback) ffestb_decl_kindparam_2_);
01396
01397 default:
01398 nt = ffesta_tokens[1];
01399 next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
01400 FFEEXPR_contextKINDTYPE, (ffeexprCallback) ffestb_decl_kindparam_2_)))
01401 (nt);
01402 ffelex_token_kill (nt);
01403 return (ffelexHandler) (*next) (t);
01404 }
01405
01406 if (ffestb_local_.decl.recursive != NULL)
01407 ffelex_token_kill (ffestb_local_.decl.recursive);
01408 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM,
01409 ffestb_local_.decl.badname,
01410 ffesta_tokens[1]);
01411 ffelex_token_kill (ffesta_tokens[1]);
01412 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
01413 }
01414
01415
01416
01417
01418
01419
01420
01421 static ffelexHandler
01422 ffestb_decl_kindparam_2_ (ffelexToken ft, ffebld expr, ffelexToken t)
01423 {
01424 switch (ffelex_token_type (t))
01425 {
01426 case FFELEX_typeCLOSE_PAREN:
01427 ffestb_local_.decl.kind = expr;
01428 ffestb_local_.decl.kindt = ffelex_token_use (ft);
01429 ffestb_local_.decl.len = NULL;
01430 ffestb_local_.decl.lent = NULL;
01431 ffelex_set_names (TRUE);
01432 return (ffelexHandler) ffestb_local_.decl.handler;
01433
01434 default:
01435 break;
01436 }
01437
01438 if (ffestb_local_.decl.recursive != NULL)
01439 ffelex_token_kill (ffestb_local_.decl.recursive);
01440 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM,
01441 ffestb_local_.decl.badname,
01442 t);
01443 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
01444 }
01445
01446
01447
01448
01449
01450
01451
01452 static ffelexHandler
01453 ffestb_decl_starkind_ (ffelexToken t)
01454 {
01455 switch (ffelex_token_type (t))
01456 {
01457 case FFELEX_typeNUMBER:
01458 ffestb_local_.decl.kindt = ffelex_token_use (t);
01459 ffestb_local_.decl.kind = NULL;
01460 ffestb_local_.decl.len = NULL;
01461 ffestb_local_.decl.lent = NULL;
01462 ffelex_set_names (TRUE);
01463 return (ffelexHandler) ffestb_local_.decl.handler;
01464
01465 default:
01466 break;
01467 }
01468
01469 if (ffestb_local_.decl.recursive != NULL)
01470 ffelex_token_kill (ffestb_local_.decl.recursive);
01471 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM,
01472 ffestb_local_.decl.badname,
01473 t);
01474 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
01475 }
01476
01477
01478
01479
01480
01481
01482
01483 static ffelexHandler
01484 ffestb_decl_starlen_ (ffelexToken t)
01485 {
01486 switch (ffelex_token_type (t))
01487 {
01488 case FFELEX_typeNUMBER:
01489 ffestb_local_.decl.kind = NULL;
01490 ffestb_local_.decl.kindt = NULL;
01491 ffestb_local_.decl.len = NULL;
01492 ffestb_local_.decl.lent = ffelex_token_use (t);
01493 ffelex_set_names (TRUE);
01494 return (ffelexHandler) ffestb_local_.decl.handler;
01495
01496 case FFELEX_typeOPEN_PAREN:
01497 ffestb_local_.decl.kind = NULL;
01498 ffestb_local_.decl.kindt = NULL;
01499 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
01500 FFEEXPR_contextCHARACTERSIZE,
01501 (ffeexprCallback) ffestb_decl_starlen_1_);
01502
01503 default:
01504 break;
01505 }
01506
01507 if (ffestb_local_.decl.recursive != NULL)
01508 ffelex_token_kill (ffestb_local_.decl.recursive);
01509 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM,
01510 ffestb_local_.decl.badname,
01511 t);
01512 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
01513 }
01514
01515
01516
01517
01518
01519
01520
01521 static ffelexHandler
01522 ffestb_decl_starlen_1_ (ffelexToken ft, ffebld expr, ffelexToken t)
01523 {
01524 switch (ffelex_token_type (t))
01525 {
01526 case FFELEX_typeCLOSE_PAREN:
01527 if (expr == NULL)
01528 break;
01529 ffestb_local_.decl.len = expr;
01530 ffestb_local_.decl.lent = ffelex_token_use (ft);
01531 ffelex_set_names (TRUE);
01532 return (ffelexHandler) ffestb_local_.decl.handler;
01533
01534 default:
01535 break;
01536 }
01537
01538 if (ffestb_local_.decl.recursive != NULL)
01539 ffelex_token_kill (ffestb_local_.decl.recursive);
01540 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM,
01541 ffestb_local_.decl.badname,
01542 t);
01543 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
01544 }
01545
01546
01547
01548
01549
01550
01551
01552 static ffelexHandler
01553 ffestb_decl_typeparams_ (ffelexToken t)
01554 {
01555 switch (ffelex_token_type (t))
01556 {
01557 case FFELEX_typeNAME:
01558 ffesta_tokens[1] = ffelex_token_use (t);
01559 return (ffelexHandler) ffestb_decl_typeparams_1_;
01560
01561 default:
01562 if (ffestb_local_.decl.lent == NULL)
01563 return (ffelexHandler) (*((ffelexHandler)
01564 ffeexpr_rhs (ffesta_output_pool,
01565 FFEEXPR_contextCHARACTERSIZE,
01566 (ffeexprCallback) ffestb_decl_typeparams_2_)))
01567 (t);
01568 if (ffestb_local_.decl.kindt != NULL)
01569 break;
01570 return (ffelexHandler) (*((ffelexHandler)
01571 ffeexpr_rhs (ffesta_output_pool,
01572 FFEEXPR_contextKINDTYPE,
01573 (ffeexprCallback) ffestb_decl_typeparams_3_)))
01574 (t);
01575 }
01576
01577 if (ffestb_local_.decl.recursive != NULL)
01578 ffelex_token_kill (ffestb_local_.decl.recursive);
01579 if (ffestb_local_.decl.kindt != NULL)
01580 ffelex_token_kill (ffestb_local_.decl.kindt);
01581 if (ffestb_local_.decl.lent != NULL)
01582 ffelex_token_kill (ffestb_local_.decl.lent);
01583 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM,
01584 ffestb_local_.decl.badname,
01585 t);
01586 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
01587 }
01588
01589
01590
01591
01592
01593
01594
01595 static ffelexHandler
01596 ffestb_decl_typeparams_1_ (ffelexToken t)
01597 {
01598 ffelexHandler next;
01599 ffelexToken nt;
01600
01601 switch (ffelex_token_type (t))
01602 {
01603 case FFELEX_typeEQUALS:
01604 ffesta_confirmed ();
01605 switch (ffestr_other (ffesta_tokens[1]))
01606 {
01607 case FFESTR_otherLEN:
01608 if (ffestb_local_.decl.lent != NULL)
01609 break;
01610 ffelex_token_kill (ffesta_tokens[1]);
01611 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
01612 FFEEXPR_contextCHARACTERSIZE,
01613 (ffeexprCallback) ffestb_decl_typeparams_2_);
01614
01615 case FFESTR_otherKIND:
01616 if (ffestb_local_.decl.kindt != NULL)
01617 break;
01618 ffelex_token_kill (ffesta_tokens[1]);
01619 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
01620 FFEEXPR_contextKINDTYPE,
01621 (ffeexprCallback) ffestb_decl_typeparams_3_);
01622
01623 default:
01624 break;
01625 }
01626 break;
01627
01628 default:
01629 nt = ffesta_tokens[1];
01630 if (ffestb_local_.decl.lent == NULL)
01631 next = (ffelexHandler) (*((ffelexHandler)
01632 ffeexpr_rhs (ffesta_output_pool,
01633 FFEEXPR_contextCHARACTERSIZE,
01634 (ffeexprCallback) ffestb_decl_typeparams_2_)))
01635 (nt);
01636 else if (ffestb_local_.decl.kindt == NULL)
01637 next = (ffelexHandler) (*((ffelexHandler)
01638 ffeexpr_rhs (ffesta_output_pool,
01639 FFEEXPR_contextKINDTYPE,
01640 (ffeexprCallback) ffestb_decl_typeparams_3_)))
01641 (nt);
01642 else
01643 {
01644 ffesta_tokens[1] = nt;
01645 break;
01646 }
01647 ffelex_token_kill (nt);
01648 return (ffelexHandler) (*next) (t);
01649 }
01650
01651 if (ffestb_local_.decl.recursive != NULL)
01652 ffelex_token_kill (ffestb_local_.decl.recursive);
01653 if (ffestb_local_.decl.kindt != NULL)
01654 ffelex_token_kill (ffestb_local_.decl.kindt);
01655 if (ffestb_local_.decl.lent != NULL)
01656 ffelex_token_kill (ffestb_local_.decl.lent);
01657 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM,
01658 ffestb_local_.decl.badname,
01659 ffesta_tokens[1]);
01660 ffelex_token_kill (ffesta_tokens[1]);
01661 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
01662 }
01663
01664
01665
01666
01667
01668
01669
01670 static ffelexHandler
01671 ffestb_decl_typeparams_2_ (ffelexToken ft, ffebld expr, ffelexToken t)
01672 {
01673 switch (ffelex_token_type (t))
01674 {
01675 case FFELEX_typeCLOSE_PAREN:
01676 ffestb_local_.decl.len = expr;
01677 ffestb_local_.decl.lent = ffelex_token_use (ft);
01678 ffelex_set_names (TRUE);
01679 return (ffelexHandler) ffestb_local_.decl.handler;
01680
01681 case FFELEX_typeCOMMA:
01682 ffestb_local_.decl.len = expr;
01683 ffestb_local_.decl.lent = ffelex_token_use (ft);
01684 return (ffelexHandler) ffestb_decl_typeparams_;
01685
01686 default:
01687 break;
01688 }
01689
01690 if (ffestb_local_.decl.recursive != NULL)
01691 ffelex_token_kill (ffestb_local_.decl.recursive);
01692 if (ffestb_local_.decl.kindt != NULL)
01693 ffelex_token_kill (ffestb_local_.decl.kindt);
01694 if (ffestb_local_.decl.lent != NULL)
01695 ffelex_token_kill (ffestb_local_.decl.lent);
01696 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM,
01697 ffestb_local_.decl.badname,
01698 t);
01699 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
01700 }
01701
01702
01703
01704
01705
01706
01707
01708 static ffelexHandler
01709 ffestb_decl_typeparams_3_ (ffelexToken ft, ffebld expr, ffelexToken t)
01710 {
01711 switch (ffelex_token_type (t))
01712 {
01713 case FFELEX_typeCLOSE_PAREN:
01714 ffestb_local_.decl.kind = expr;
01715 ffestb_local_.decl.kindt = ffelex_token_use (ft);
01716 ffelex_set_names (TRUE);
01717 return (ffelexHandler) ffestb_local_.decl.handler;
01718
01719 case FFELEX_typeCOMMA:
01720 ffestb_local_.decl.kind = expr;
01721 ffestb_local_.decl.kindt = ffelex_token_use (ft);
01722 return (ffelexHandler) ffestb_decl_typeparams_;
01723
01724 default:
01725 break;
01726 }
01727
01728 if (ffestb_local_.decl.recursive != NULL)
01729 ffelex_token_kill (ffestb_local_.decl.recursive);
01730 if (ffestb_local_.decl.kindt != NULL)
01731 ffelex_token_kill (ffestb_local_.decl.kindt);
01732 if (ffestb_local_.decl.lent != NULL)
01733 ffelex_token_kill (ffestb_local_.decl.lent);
01734 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM,
01735 ffestb_local_.decl.badname,
01736 t);
01737 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
01738 }
01739
01740
01741
01742
01743
01744
01745
01746 #if FFESTR_F90
01747 static ffelexHandler
01748 ffestb_decl_typetype1_ (ffelexToken t)
01749 {
01750 switch (ffelex_token_type (t))
01751 {
01752 case FFELEX_typeNAME:
01753 ffestb_local_.decl.kindt = ffelex_token_use (t);
01754 return (ffelexHandler) ffestb_decl_typetype2_;
01755
01756 default:
01757 break;
01758 }
01759
01760 if (ffestb_local_.decl.recursive != NULL)
01761 ffelex_token_kill (ffestb_local_.decl.recursive);
01762 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM,
01763 ffestb_local_.decl.badname,
01764 t);
01765 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
01766 }
01767
01768
01769
01770
01771
01772
01773
01774 static ffelexHandler
01775 ffestb_decl_typetype2_ (ffelexToken t)
01776 {
01777 switch (ffelex_token_type (t))
01778 {
01779 case FFELEX_typeCLOSE_PAREN:
01780 ffestb_local_.decl.type = FFESTP_typeTYPE;
01781 ffestb_local_.decl.kind = NULL;
01782 ffestb_local_.decl.len = NULL;
01783 ffestb_local_.decl.lent = NULL;
01784 ffelex_set_names (TRUE);
01785 return (ffelexHandler) ffestb_local_.decl.handler;
01786
01787 default:
01788 break;
01789 }
01790
01791 if (ffestb_local_.decl.recursive != NULL)
01792 ffelex_token_kill (ffestb_local_.decl.recursive);
01793 ffelex_token_kill (ffestb_local_.decl.kindt);
01794 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM,
01795 ffestb_local_.decl.badname,
01796 t);
01797 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
01798 }
01799
01800 #endif
01801
01802
01803
01804
01805
01806
01807
01808
01809
01810
01811 static ffelexHandler
01812 ffestb_subr_label_list_ (ffelexToken t)
01813 {
01814 if (ffelex_token_type (t) == FFELEX_typeNUMBER)
01815 {
01816 ffestt_tokenlist_append (ffestb_subrargs_.label_list.labels,
01817 ffelex_token_use (t));
01818 return (ffelexHandler) ffestb_subr_label_list_1_;
01819 }
01820
01821 ffestb_subrargs_.label_list.ok = FALSE;
01822 return (ffelexHandler) (*ffestb_subrargs_.label_list.handler) (t);
01823 }
01824
01825
01826
01827
01828
01829
01830
01831
01832
01833 static ffelexHandler
01834 ffestb_subr_label_list_1_ (ffelexToken t)
01835 {
01836 switch (ffelex_token_type (t))
01837 {
01838 case FFELEX_typeCOMMA:
01839 return (ffelexHandler) ffestb_subr_label_list_;
01840
01841 case FFELEX_typeCLOSE_PAREN:
01842 ffestb_subrargs_.label_list.ok = TRUE;
01843 return (ffelexHandler) ffestb_subrargs_.label_list.handler;
01844
01845 default:
01846 ffestb_subrargs_.label_list.ok = FALSE;
01847 return (ffelexHandler) (*ffestb_subrargs_.label_list.handler) (t);
01848 }
01849 }
01850
01851
01852
01853
01854
01855
01856
01857
01858 ffelexHandler
01859 ffestb_do (ffelexToken t)
01860 {
01861 ffeTokenLength i;
01862 unsigned const char *p;
01863 ffelexHandler next;
01864 ffelexToken nt;
01865 ffestrSecond kw;
01866
01867 switch (ffelex_token_type (ffesta_tokens[0]))
01868 {
01869 case FFELEX_typeNAME:
01870 if (ffesta_first_kw != FFESTR_firstDO)
01871 goto bad_0;
01872 switch (ffelex_token_type (t))
01873 {
01874 case FFELEX_typeNUMBER:
01875 ffesta_confirmed ();
01876 ffesta_tokens[1] = ffelex_token_use (t);
01877 return (ffelexHandler) ffestb_do1_;
01878
01879 case FFELEX_typeCOMMA:
01880 ffesta_confirmed ();
01881 ffesta_tokens[1] = NULL;
01882 return (ffelexHandler) ffestb_do2_;
01883
01884 case FFELEX_typeNAME:
01885 ffesta_confirmed ();
01886 ffesta_tokens[1] = NULL;
01887 ffesta_tokens[2] = ffelex_token_use (t);
01888 return (ffelexHandler) ffestb_do3_;
01889
01890 case FFELEX_typeEOS:
01891 case FFELEX_typeSEMICOLON:
01892 ffesta_confirmed ();
01893 ffesta_tokens[1] = NULL;
01894 return (ffelexHandler) ffestb_do1_ (t);
01895
01896 case FFELEX_typeCOLONCOLON:
01897 ffesta_confirmed ();
01898 goto bad_1;
01899
01900 default:
01901 goto bad_1;
01902 }
01903
01904 case FFELEX_typeNAMES:
01905 if (ffesta_first_kw != FFESTR_firstDO)
01906 goto bad_0;
01907 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlDO);
01908 switch (ffelex_token_type (t))
01909 {
01910 case FFELEX_typeCOLONCOLON:
01911 ffesta_confirmed ();
01912 goto bad_1;
01913
01914 default:
01915 goto bad_1;
01916
01917 case FFELEX_typeOPEN_PAREN:
01918 if (! ISDIGIT (*p))
01919 goto bad_i;
01920 ffesta_tokens[1] = ffelex_token_number_from_names (ffesta_tokens[0],
01921 i);
01922 p += ffelex_token_length (ffesta_tokens[1]);
01923 i += ffelex_token_length (ffesta_tokens[1]);
01924 if (((*p) != 'W') && ((*p) != 'w'))
01925 goto bad_i1;
01926 nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
01927 kw = ffestr_second (nt);
01928 ffelex_token_kill (nt);
01929 if (kw != FFESTR_secondWHILE)
01930 goto bad_i1;
01931 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
01932 FFEEXPR_contextDOWHILE, (ffeexprCallback) ffestb_do4_);
01933
01934 case FFELEX_typeCOMMA:
01935 ffesta_confirmed ();
01936 if (*p == '\0')
01937 {
01938 ffesta_tokens[1] = NULL;
01939 return (ffelexHandler) ffestb_do2_;
01940 }
01941 if (! ISDIGIT (*p))
01942 goto bad_i;
01943 ffesta_tokens[1] = ffelex_token_number_from_names (ffesta_tokens[0],
01944 i);
01945 p += ffelex_token_length (ffesta_tokens[1]);
01946 i += ffelex_token_length (ffesta_tokens[1]);
01947 if (*p != '\0')
01948 goto bad_i1;
01949 return (ffelexHandler) ffestb_do2_;
01950
01951 case FFELEX_typeEQUALS:
01952 if (ISDIGIT (*p))
01953 {
01954 ffesta_tokens[1]
01955 = ffelex_token_number_from_names (ffesta_tokens[0], i);
01956 p += ffelex_token_length (ffesta_tokens[1]);
01957 i += ffelex_token_length (ffesta_tokens[1]);
01958 }
01959 else
01960 ffesta_tokens[1] = NULL;
01961 if (!ffesrc_is_name_init (*p))
01962 goto bad_i1;
01963 nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
01964 next = (ffelexHandler) (*((ffelexHandler) ffeexpr_lhs
01965 (ffesta_output_pool, FFEEXPR_contextDO,
01966 (ffeexprCallback) ffestb_do6_)))
01967 (nt);
01968 ffelex_token_kill (nt);
01969 return (ffelexHandler) (*next) (t);
01970
01971 case FFELEX_typeEOS:
01972 case FFELEX_typeSEMICOLON:
01973 ffesta_confirmed ();
01974 if (ISDIGIT (*p))
01975 {
01976 ffesta_tokens[1]
01977 = ffelex_token_number_from_names (ffesta_tokens[0], i);
01978 p += ffelex_token_length (ffesta_tokens[1]);
01979 i += ffelex_token_length (ffesta_tokens[1]);
01980 }
01981 else
01982 ffesta_tokens[1] = NULL;
01983 if (*p != '\0')
01984 goto bad_i1;
01985 return (ffelexHandler) ffestb_do1_ (t);
01986 }
01987
01988 default:
01989 goto bad_0;
01990 }
01991
01992 bad_0:
01993 if (ffesta_construct_name != NULL)
01994 {
01995 ffelex_token_kill (ffesta_construct_name);
01996 ffesta_construct_name = NULL;
01997 }
01998 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DO", ffesta_tokens[0]);
01999 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
02000
02001 bad_1:
02002 if (ffesta_construct_name != NULL)
02003 {
02004 ffelex_token_kill (ffesta_construct_name);
02005 ffesta_construct_name = NULL;
02006 }
02007 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DO", t);
02008 return (ffelexHandler) ffelex_swallow_tokens (t,
02009 (ffelexHandler) ffesta_zero);
02010
02011 bad_i1:
02012 if (ffesta_tokens[1])
02013 ffelex_token_kill (ffesta_tokens[1]);
02014
02015 bad_i:
02016 if (ffesta_construct_name != NULL)
02017 {
02018 ffelex_token_kill (ffesta_construct_name);
02019 ffesta_construct_name = NULL;
02020 }
02021 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "DO", ffesta_tokens[0], i, t);
02022 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
02023 }
02024
02025
02026
02027
02028
02029
02030
02031
02032 ffelexHandler
02033 ffestb_dowhile (ffelexToken t)
02034 {
02035 ffeTokenLength i;
02036 const char *p;
02037 ffelexHandler next;
02038 ffelexToken nt;
02039
02040 switch (ffelex_token_type (ffesta_tokens[0]))
02041 {
02042 case FFELEX_typeNAMES:
02043 if (ffesta_first_kw != FFESTR_firstDOWHILE)
02044 goto bad_0;
02045 switch (ffelex_token_type (t))
02046 {
02047 case FFELEX_typeEOS:
02048 case FFELEX_typeSEMICOLON:
02049 case FFELEX_typeCOMMA:
02050 case FFELEX_typeCOLONCOLON:
02051 ffesta_confirmed ();
02052 goto bad_1;
02053
02054 default:
02055 goto bad_1;
02056
02057 case FFELEX_typeOPEN_PAREN:
02058 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlDOWHILE);
02059 if (*p != '\0')
02060 goto bad_i;
02061 ffesta_tokens[1] = NULL;
02062 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
02063 FFEEXPR_contextDOWHILE, (ffeexprCallback) ffestb_do4_);
02064
02065 case FFELEX_typeEQUALS:
02066 ffesta_tokens[1] = NULL;
02067 nt = ffelex_token_name_from_names (ffesta_tokens[0], FFESTR_firstlDO,
02068 0);
02069 next = (ffelexHandler) (*((ffelexHandler) ffeexpr_lhs
02070 (ffesta_output_pool, FFEEXPR_contextDO,
02071 (ffeexprCallback) ffestb_do6_)))
02072 (nt);
02073 ffelex_token_kill (nt);
02074 return (ffelexHandler) (*next) (t);
02075 }
02076
02077 default:
02078 goto bad_0;
02079 }
02080
02081 bad_0:
02082 if (ffesta_construct_name != NULL)
02083 {
02084 ffelex_token_kill (ffesta_construct_name);
02085 ffesta_construct_name = NULL;
02086 }
02087 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DO", ffesta_tokens[0]);
02088 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
02089
02090 bad_1:
02091 if (ffesta_construct_name != NULL)
02092 {
02093 ffelex_token_kill (ffesta_construct_name);
02094 ffesta_construct_name = NULL;
02095 }
02096 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DO", t);
02097 return (ffelexHandler) ffelex_swallow_tokens (t,
02098 (ffelexHandler) ffesta_zero);
02099
02100 bad_i:
02101 if (ffesta_construct_name != NULL)
02102 {
02103 ffelex_token_kill (ffesta_construct_name);
02104 ffesta_construct_name = NULL;
02105 }
02106 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "DO", ffesta_tokens[0], i, t);
02107 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
02108 }
02109
02110
02111
02112
02113
02114
02115
02116
02117 static ffelexHandler
02118 ffestb_do1_ (ffelexToken t)
02119 {
02120 switch (ffelex_token_type (t))
02121 {
02122 case FFELEX_typeCOMMA:
02123 ffesta_confirmed ();
02124 return (ffelexHandler) ffestb_do2_;
02125
02126 case FFELEX_typeEOS:
02127 case FFELEX_typeSEMICOLON:
02128 ffesta_confirmed ();
02129 if (!ffesta_is_inhibited ())
02130 {
02131 if (ffesta_tokens[1] != NULL)
02132 ffestc_R819B (ffesta_construct_name, ffesta_tokens[1], NULL,
02133 NULL);
02134 else
02135 ffestc_R820B (ffesta_construct_name, NULL, NULL);
02136 }
02137 if (ffesta_tokens[1] != NULL)
02138 ffelex_token_kill (ffesta_tokens[1]);
02139 if (ffesta_construct_name != NULL)
02140 {
02141 ffelex_token_kill (ffesta_construct_name);
02142 ffesta_construct_name = NULL;
02143 }
02144 return (ffelexHandler) ffesta_zero (t);
02145
02146 case FFELEX_typeNAME:
02147 return (ffelexHandler) ffestb_do2_ (t);
02148
02149 default:
02150 break;
02151 }
02152
02153 if (ffesta_tokens[1] != NULL)
02154 ffelex_token_kill (ffesta_tokens[1]);
02155 if (ffesta_construct_name != NULL)
02156 {
02157 ffelex_token_kill (ffesta_construct_name);
02158 ffesta_construct_name = NULL;
02159 }
02160 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DO", t);
02161 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
02162 }
02163
02164
02165
02166
02167
02168
02169
02170
02171 static ffelexHandler
02172 ffestb_do2_ (ffelexToken t)
02173 {
02174 switch (ffelex_token_type (t))
02175 {
02176 case FFELEX_typeNAME:
02177 ffesta_tokens[2] = ffelex_token_use (t);
02178 return (ffelexHandler) ffestb_do3_;
02179
02180 default:
02181 break;
02182 }
02183
02184 if (ffesta_tokens[1] != NULL)
02185 ffelex_token_kill (ffesta_tokens[1]);
02186 if (ffesta_construct_name != NULL)
02187 {
02188 ffelex_token_kill (ffesta_construct_name);
02189 ffesta_construct_name = NULL;
02190 }
02191 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DO", t);
02192 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
02193 }
02194
02195
02196
02197
02198
02199
02200
02201
02202 static ffelexHandler
02203 ffestb_do3_ (ffelexToken t)
02204 {
02205 ffelexHandler next;
02206
02207 switch (ffelex_token_type (t))
02208 {
02209 case FFELEX_typeEQUALS:
02210 next = (ffelexHandler) (*((ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
02211 FFEEXPR_contextDO, (ffeexprCallback) ffestb_do6_)))
02212 (ffesta_tokens[2]);
02213 ffelex_token_kill (ffesta_tokens[2]);
02214 return (ffelexHandler) (*next) (t);
02215
02216 case FFELEX_typeOPEN_PAREN:
02217 if (ffestr_second (ffesta_tokens[2]) != FFESTR_secondWHILE)
02218 {
02219 if (ffesta_tokens[1] != NULL)
02220 ffelex_token_kill (ffesta_tokens[1]);
02221 if (ffesta_construct_name != NULL)
02222 {
02223 ffelex_token_kill (ffesta_construct_name);
02224 ffesta_construct_name = NULL;
02225 }
02226 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DO", ffesta_tokens[2]);
02227 ffelex_token_kill (ffesta_tokens[2]);
02228 return (ffelexHandler) ffelex_swallow_tokens (t,
02229 (ffelexHandler) ffesta_zero);
02230 }
02231 ffelex_token_kill (ffesta_tokens[2]);
02232 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
02233 FFEEXPR_contextDOWHILE, (ffeexprCallback) ffestb_do4_);
02234
02235 default:
02236 break;
02237 }
02238
02239 ffelex_token_kill (ffesta_tokens[2]);
02240 if (ffesta_tokens[1] != NULL)
02241 ffelex_token_kill (ffesta_tokens[1]);
02242 if (ffesta_construct_name != NULL)
02243 {
02244 ffelex_token_kill (ffesta_construct_name);
02245 ffesta_construct_name = NULL;
02246 }
02247 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DO", t);
02248 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
02249 }
02250
02251
02252
02253
02254
02255
02256
02257
02258 static ffelexHandler
02259 ffestb_do4_ (ffelexToken ft, ffebld expr, ffelexToken t)
02260 {
02261 switch (ffelex_token_type (t))
02262 {
02263 case FFELEX_typeCLOSE_PAREN:
02264 if (expr == NULL)
02265 break;
02266 ffesta_tokens[2] = ffelex_token_use (ft);
02267 ffestb_local_.dowhile.expr = expr;
02268 return (ffelexHandler) ffestb_do5_;
02269
02270 default:
02271 break;
02272 }
02273
02274 if (ffesta_tokens[1] != NULL)
02275 ffelex_token_kill (ffesta_tokens[1]);
02276 if (ffesta_construct_name != NULL)
02277 {
02278 ffelex_token_kill (ffesta_construct_name);
02279 ffesta_construct_name = NULL;
02280 }
02281 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DO", t);
02282 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
02283 }
02284
02285
02286
02287
02288
02289
02290
02291
02292 static ffelexHandler
02293 ffestb_do5_ (ffelexToken t)
02294 {
02295 switch (ffelex_token_type (t))
02296 {
02297 case FFELEX_typeEOS:
02298 case FFELEX_typeSEMICOLON:
02299 ffesta_confirmed ();
02300 if (!ffesta_is_inhibited ())
02301 {
02302 if (ffesta_tokens[1] != NULL)
02303 ffestc_R819B (ffesta_construct_name, ffesta_tokens[1],
02304 ffestb_local_.dowhile.expr, ffesta_tokens[2]);
02305 else
02306 ffestc_R820B (ffesta_construct_name, ffestb_local_.dowhile.expr,
02307 ffesta_tokens[2]);
02308 }
02309 ffelex_token_kill (ffesta_tokens[2]);
02310 if (ffesta_tokens[1] != NULL)
02311 ffelex_token_kill (ffesta_tokens[1]);
02312 if (ffesta_construct_name != NULL)
02313 {
02314 ffelex_token_kill (ffesta_construct_name);
02315 ffesta_construct_name = NULL;
02316 }
02317 return (ffelexHandler) ffesta_zero (t);
02318
02319 default:
02320 break;
02321 }
02322
02323 ffelex_token_kill (ffesta_tokens[2]);
02324 if (ffesta_tokens[1] != NULL)
02325 ffelex_token_kill (ffesta_tokens[1]);
02326 if (ffesta_construct_name != NULL)
02327 {
02328 ffelex_token_kill (ffesta_construct_name);
02329 ffesta_construct_name = NULL;
02330 }
02331 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DO", t);
02332 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
02333 }
02334
02335
02336
02337
02338
02339
02340
02341
02342 static ffelexHandler
02343 ffestb_do6_ (ffelexToken ft, ffebld expr, ffelexToken t)
02344 {
02345
02346
02347
02348 assert (ffelex_token_type (t) == FFELEX_typeEQUALS);
02349
02350 ffesta_tokens[2] = ffelex_token_use (ft);
02351 ffestb_local_.do_stmt.var = expr;
02352 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
02353 FFEEXPR_contextDO, (ffeexprCallback) ffestb_do7_);
02354 }
02355
02356
02357
02358
02359
02360
02361
02362
02363 static ffelexHandler
02364 ffestb_do7_ (ffelexToken ft, ffebld expr, ffelexToken t)
02365 {
02366 switch (ffelex_token_type (t))
02367 {
02368 case FFELEX_typeCOMMA:
02369 ffesta_confirmed ();
02370 if (expr == NULL)
02371 break;
02372 ffesta_tokens[3] = ffelex_token_use (ft);
02373 ffestb_local_.do_stmt.start = expr;
02374 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
02375 FFEEXPR_contextDO, (ffeexprCallback) ffestb_do8_);
02376
02377 default:
02378 break;
02379 }
02380
02381 ffelex_token_kill (ffesta_tokens[2]);
02382 if (ffesta_tokens[1] != NULL)
02383 ffelex_token_kill (ffesta_tokens[1]);
02384 if (ffesta_construct_name != NULL)
02385 {
02386 ffelex_token_kill (ffesta_construct_name);
02387 ffesta_construct_name = NULL;
02388 }
02389 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DO", t);
02390 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
02391 }
02392
02393
02394
02395
02396
02397
02398
02399
02400 static ffelexHandler
02401 ffestb_do8_ (ffelexToken ft, ffebld expr, ffelexToken t)
02402 {
02403 switch (ffelex_token_type (t))
02404 {
02405 case FFELEX_typeCOMMA:
02406 if (expr == NULL)
02407 break;
02408 ffesta_tokens[4] = ffelex_token_use (ft);
02409 ffestb_local_.do_stmt.end = expr;
02410 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
02411 FFEEXPR_contextDO, (ffeexprCallback) ffestb_do9_);
02412
02413 case FFELEX_typeEOS:
02414 case FFELEX_typeSEMICOLON:
02415 if (expr == NULL)
02416 break;
02417 ffesta_tokens[4] = ffelex_token_use (ft);
02418 ffestb_local_.do_stmt.end = expr;
02419 return (ffelexHandler) ffestb_do9_ (NULL, NULL, t);
02420
02421 default:
02422 break;
02423 }
02424
02425 ffelex_token_kill (ffesta_tokens[3]);
02426 ffelex_token_kill (ffesta_tokens[2]);
02427 if (ffesta_tokens[1] != NULL)
02428 ffelex_token_kill (ffesta_tokens[1]);
02429 if (ffesta_construct_name != NULL)
02430 {
02431 ffelex_token_kill (ffesta_construct_name);
02432 ffesta_construct_name = NULL;
02433 }
02434 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DO", t);
02435 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
02436 }
02437
02438
02439
02440
02441
02442
02443
02444
02445
02446 static ffelexHandler
02447 ffestb_do9_ (ffelexToken ft, ffebld expr, ffelexToken t)
02448 {
02449 switch (ffelex_token_type (t))
02450 {
02451 case FFELEX_typeEOS:
02452 case FFELEX_typeSEMICOLON:
02453 if ((expr == NULL) && (ft != NULL))
02454 break;
02455 if (!ffesta_is_inhibited ())
02456 {
02457 if (ffesta_tokens[1] != NULL)
02458 ffestc_R819A (ffesta_construct_name, ffesta_tokens[1],
02459 ffestb_local_.do_stmt.var, ffesta_tokens[2],
02460 ffestb_local_.do_stmt.start, ffesta_tokens[3],
02461 ffestb_local_.do_stmt.end, ffesta_tokens[4], expr, ft);
02462 else
02463 ffestc_R820A (ffesta_construct_name, ffestb_local_.do_stmt.var,
02464 ffesta_tokens[2], ffestb_local_.do_stmt.start,
02465 ffesta_tokens[3], ffestb_local_.do_stmt.end,
02466 ffesta_tokens[4], expr, ft);
02467 }
02468 ffelex_token_kill (ffesta_tokens[4]);
02469 ffelex_token_kill (ffesta_tokens[3]);
02470 ffelex_token_kill (ffesta_tokens[2]);
02471 if (ffesta_tokens[1] != NULL)
02472 ffelex_token_kill (ffesta_tokens[1]);
02473 if (ffesta_construct_name != NULL)
02474 {
02475 ffelex_token_kill (ffesta_construct_name);
02476 ffesta_construct_name = NULL;
02477 }
02478
02479 return (ffelexHandler) ffesta_zero (t);
02480
02481 default:
02482 break;
02483 }
02484
02485 ffelex_token_kill (ffesta_tokens[4]);
02486 ffelex_token_kill (ffesta_tokens[3]);
02487 ffelex_token_kill (ffesta_tokens[2]);
02488 if (ffesta_tokens[1] != NULL)
02489 ffelex_token_kill (ffesta_tokens[1]);
02490 if (ffesta_construct_name != NULL)
02491 {
02492 ffelex_token_kill (ffesta_construct_name);
02493 ffesta_construct_name = NULL;
02494 }
02495 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DO", t);
02496 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
02497 }
02498
02499
02500
02501
02502
02503
02504
02505
02506 ffelexHandler
02507 ffestb_else (ffelexToken t)
02508 {
02509 ffeTokenLength i;
02510 unsigned const char *p;
02511
02512 switch (ffelex_token_type (ffesta_tokens[0]))
02513 {
02514 case FFELEX_typeNAME:
02515 if (ffesta_first_kw != FFESTR_firstELSE)
02516 goto bad_0;
02517 switch (ffelex_token_type (t))
02518 {
02519 case FFELEX_typeEOS:
02520 case FFELEX_typeSEMICOLON:
02521 ffesta_confirmed ();
02522 ffesta_tokens[1] = NULL;
02523 ffestb_args.elsexyz.second = FFESTR_secondNone;
02524 return (ffelexHandler) ffestb_else1_ (t);
02525
02526 case FFELEX_typeCOMMA:
02527 case FFELEX_typeCOLONCOLON:
02528 ffesta_confirmed ();
02529 goto bad_1;
02530
02531 default:
02532 goto bad_1;
02533
02534 case FFELEX_typeNAME:
02535 break;
02536 }
02537
02538 ffesta_confirmed ();
02539 ffestb_args.elsexyz.second = ffesta_second_kw;
02540 ffesta_tokens[1] = ffelex_token_use (t);
02541 return (ffelexHandler) ffestb_else1_;
02542
02543 case FFELEX_typeNAMES:
02544 if (ffesta_first_kw != FFESTR_firstELSE)
02545 goto bad_0;
02546 switch (ffelex_token_type (t))
02547 {
02548 case FFELEX_typeCOMMA:
02549 case FFELEX_typeCOLONCOLON:
02550 ffesta_confirmed ();
02551 goto bad_1;
02552
02553 default:
02554 goto bad_1;
02555
02556 case FFELEX_typeEOS:
02557 case FFELEX_typeSEMICOLON:
02558 break;
02559 }
02560 ffesta_confirmed ();
02561 if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlELSE)
02562 {
02563 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlELSE);
02564 if (!ffesrc_is_name_init (*p))
02565 goto bad_i;
02566 ffesta_tokens[1]
02567 = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
02568 }
02569 else
02570 ffesta_tokens[1] = NULL;
02571 ffestb_args.elsexyz.second = FFESTR_secondNone;
02572 return (ffelexHandler) ffestb_else1_ (t);
02573
02574 default:
02575 goto bad_0;
02576 }
02577
02578 bad_0:
02579 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ELSE", ffesta_tokens[0]);
02580 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
02581
02582 bad_1:
02583 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ELSE", t);
02584 return (ffelexHandler) ffelex_swallow_tokens (t,
02585 (ffelexHandler) ffesta_zero);
02586
02587 bad_i:
02588 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "ELSE", ffesta_tokens[0], i, t);
02589 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
02590 }
02591
02592
02593
02594
02595
02596
02597
02598
02599 ffelexHandler
02600 ffestb_elsexyz (ffelexToken t)
02601 {
02602 ffeTokenLength i;
02603 const char *p;
02604
02605 switch (ffelex_token_type (ffesta_tokens[0]))
02606 {
02607 case FFELEX_typeNAME:
02608 switch (ffelex_token_type (t))
02609 {
02610 case FFELEX_typeEOS:
02611 case FFELEX_typeSEMICOLON:
02612 if (ffesta_first_kw == FFESTR_firstELSEIF)
02613 goto bad_0;
02614 ffesta_confirmed ();
02615 ffesta_tokens[1] = NULL;
02616 return (ffelexHandler) ffestb_else1_ (t);
02617
02618 case FFELEX_typeNAME:
02619 ffesta_confirmed ();
02620 goto bad_1;
02621
02622 case FFELEX_typeOPEN_PAREN:
02623 if (ffesta_first_kw != FFESTR_firstELSEIF)
02624 goto bad_0;
02625 ffesta_tokens[1] = NULL;
02626 return (ffelexHandler) ffestb_else1_ (t);
02627
02628 case FFELEX_typeCOMMA:
02629 case FFELEX_typeCOLONCOLON:
02630 ffesta_confirmed ();
02631 goto bad_1;
02632
02633 default:
02634 goto bad_1;
02635 }
02636
02637 case FFELEX_typeNAMES:
02638 switch (ffelex_token_type (t))
02639 {
02640 case FFELEX_typeCOMMA:
02641 case FFELEX_typeCOLONCOLON:
02642 ffesta_confirmed ();
02643 goto bad_1;
02644
02645 default:
02646 goto bad_1;
02647
02648 case FFELEX_typeOPEN_PAREN:
02649 if (ffesta_first_kw != FFESTR_firstELSEIF)
02650 goto bad_1;
02651 if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlELSEIF)
02652 {
02653 i = FFESTR_firstlELSEIF;
02654 goto bad_i;
02655 }
02656 ffesta_tokens[1] = NULL;
02657 return (ffelexHandler) ffestb_else1_ (t);
02658
02659 case FFELEX_typeEOS:
02660 case FFELEX_typeSEMICOLON:
02661 break;
02662 }
02663 ffesta_confirmed ();
02664 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlELSE);
02665 ffesta_tokens[1]
02666 = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
02667 #if FFESTR_F90
02668 if ((ffestb_args.elsexyz.second == FFESTR_secondWHERE)
02669 && (ffelex_token_length (ffesta_tokens[1]) != FFESTR_secondlWHERE))
02670 ffestb_args.elsexyz.second = FFESTR_secondNone;
02671 #endif
02672 return (ffelexHandler) ffestb_else1_ (t);
02673
02674 default:
02675 goto bad_0;
02676 }
02677
02678 bad_0:
02679 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ELSE", ffesta_tokens[0]);
02680 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
02681
02682 bad_1:
02683 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ELSE", t);
02684 return (ffelexHandler) ffelex_swallow_tokens (t,
02685 (ffelexHandler) ffesta_zero);
02686
02687 bad_i:
02688 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "ELSE IF", ffesta_tokens[0], i, t);
02689 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
02690 }
02691
02692
02693
02694
02695
02696
02697
02698
02699
02700 static ffelexHandler
02701 ffestb_else1_ (ffelexToken t)
02702 {
02703 switch (ffelex_token_type (t))
02704 {
02705 case FFELEX_typeOPEN_PAREN:
02706 if (ffestb_args.elsexyz.second == FFESTR_secondIF)
02707 {
02708 if (ffesta_tokens[1] != NULL)
02709 ffelex_token_kill (ffesta_tokens[1]);
02710 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
02711 FFEEXPR_contextIF, (ffeexprCallback) ffestb_else2_);
02712 }
02713
02714 default:
02715 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ELSE", t);
02716 if (ffesta_tokens[1] != NULL)
02717 ffelex_token_kill (ffesta_tokens[1]);
02718 return (ffelexHandler) ffelex_swallow_tokens (t,
02719 (ffelexHandler) ffesta_zero);
02720
02721 case FFELEX_typeEOS:
02722 case FFELEX_typeSEMICOLON:
02723 ffesta_confirmed ();
02724 break;
02725
02726 }
02727
02728 switch (ffestb_args.elsexyz.second)
02729 {
02730 #if FFESTR_F90
02731 case FFESTR_secondWHERE:
02732 if (!ffesta_is_inhibited ())
02733 if ((ffesta_first_kw == FFESTR_firstELSEWHERE)
02734 && (ffelex_token_type (ffesta_tokens[0]) == FFELEX_typeNAME))
02735 ffestc_R744 ();
02736 else
02737 ffestc_elsewhere (ffesta_tokens[1]);
02738 break;
02739 #endif
02740
02741 default:
02742 if (!ffesta_is_inhibited ())
02743 ffestc_R805 (ffesta_tokens[1]);
02744 break;
02745 }
02746
02747 if (ffesta_tokens[1] != NULL)
02748 ffelex_token_kill (ffesta_tokens[1]);
02749 return (ffelexHandler) ffesta_zero (t);
02750 }
02751
02752
02753
02754
02755
02756
02757
02758 static ffelexHandler
02759 ffestb_else2_ (ffelexToken ft, ffebld expr, ffelexToken t)
02760 {
02761 ffestb_local_.else_stmt.expr = expr;
02762
02763 switch (ffelex_token_type (t))
02764 {
02765 case FFELEX_typeCLOSE_PAREN:
02766 if (expr == NULL)
02767 break;
02768 ffesta_tokens[1] = ffelex_token_use (ft);
02769 ffelex_set_names (TRUE);
02770 return (ffelexHandler) ffestb_else3_;
02771
02772 default:
02773 break;
02774 }
02775
02776 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ELSE IF", t);
02777 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
02778 }
02779
02780
02781
02782
02783
02784
02785
02786 static ffelexHandler
02787 ffestb_else3_ (ffelexToken t)
02788 {
02789 ffeTokenLength i;
02790 unsigned const char *p;
02791
02792 ffelex_set_names (FALSE);
02793
02794 switch (ffelex_token_type (t))
02795 {
02796 case FFELEX_typeNAME:
02797 ffesta_confirmed ();
02798 if (ffestr_first (t) == FFESTR_firstTHEN)
02799 return (ffelexHandler) ffestb_else4_;
02800 break;
02801
02802 case FFELEX_typeNAMES:
02803 ffesta_confirmed ();
02804 if (ffestr_first (t) != FFESTR_firstTHEN)
02805 break;
02806 if (ffelex_token_length (t) == FFESTR_firstlTHEN)
02807 return (ffelexHandler) ffestb_else4_;
02808 p = ffelex_token_text (t) + (i = FFESTR_firstlTHEN);
02809 if (!ffesrc_is_name_init (*p))
02810 goto bad_i;
02811 ffesta_tokens[2] = ffelex_token_name_from_names (t, i, 0);
02812 return (ffelexHandler) ffestb_else5_;
02813
02814 default:
02815 break;
02816 }
02817
02818 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ELSE IF", t);
02819 ffelex_token_kill (ffesta_tokens[1]);
02820 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
02821
02822 bad_i:
02823 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "ELSE IF", t, i, NULL);
02824 ffelex_token_kill (ffesta_tokens[1]);
02825 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
02826 }
02827
02828
02829
02830
02831
02832
02833
02834 static ffelexHandler
02835 ffestb_else4_ (ffelexToken t)
02836 {
02837 ffelex_set_names (FALSE);
02838
02839 switch (ffelex_token_type (t))
02840 {
02841 case FFELEX_typeEOS:
02842 case FFELEX_typeSEMICOLON:
02843 ffesta_tokens[2] = NULL;
02844 return (ffelexHandler) ffestb_else5_ (t);
02845
02846 case FFELEX_typeNAME:
02847 ffesta_tokens[2] = ffelex_token_use (t);
02848 return (ffelexHandler) ffestb_else5_;
02849
02850 default:
02851 break;
02852 }
02853
02854 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ELSE IF", t);
02855 ffelex_token_kill (ffesta_tokens[1]);
02856 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
02857 }
02858
02859
02860
02861
02862
02863
02864
02865 static ffelexHandler
02866 ffestb_else5_ (ffelexToken t)
02867 {
02868 switch (ffelex_token_type (t))
02869 {
02870 case FFELEX_typeEOS:
02871 case FFELEX_typeSEMICOLON:
02872 if (!ffesta_is_inhibited ())
02873 ffestc_R804 (ffestb_local_.else_stmt.expr, ffesta_tokens[1],
02874 ffesta_tokens[2]);
02875 ffelex_token_kill (ffesta_tokens[1]);
02876 if (ffesta_tokens[2] != NULL)
02877 ffelex_token_kill (ffesta_tokens[2]);
02878 return (ffelexHandler) ffesta_zero (t);
02879
02880 default:
02881 break;
02882 }
02883
02884 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ELSE IF", t);
02885 ffelex_token_kill (ffesta_tokens[1]);
02886 if (ffesta_tokens[2] != NULL)
02887 ffelex_token_kill (ffesta_tokens[2]);
02888 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
02889 }
02890
02891
02892
02893
02894
02895
02896
02897
02898 ffelexHandler
02899 ffestb_end (ffelexToken t)
02900 {
02901 ffeTokenLength i;
02902
02903 switch (ffelex_token_type (ffesta_tokens[0]))
02904 {
02905 case FFELEX_typeNAME:
02906 if (ffesta_first_kw != FFESTR_firstEND)
02907 goto bad_0;
02908 switch (ffelex_token_type (t))
02909 {
02910 case FFELEX_typeEOS:
02911 case FFELEX_typeSEMICOLON:
02912 ffesta_tokens[1] = NULL;
02913 ffestb_args.endxyz.second = FFESTR_secondNone;
02914 return (ffelexHandler) ffestb_end3_ (t);
02915
02916 case FFELEX_typeCOMMA:
02917 case FFELEX_typeCOLONCOLON:
02918 ffesta_confirmed ();
02919 goto bad_1;
02920
02921 default:
02922 goto bad_1;
02923
02924 case FFELEX_typeNAME:
02925 break;
02926 }
02927
02928 ffesta_confirmed ();
02929 ffestb_args.endxyz.second = ffesta_second_kw;
02930 switch (ffesta_second_kw)
02931 {
02932 case FFESTR_secondFILE:
02933 ffestb_args.beru.badname = "ENDFILE";
02934 return (ffelexHandler) ffestb_beru;
02935
02936 case FFESTR_secondBLOCK:
02937 return (ffelexHandler) ffestb_end1_;
02938
02939 #if FFESTR_F90
02940 case FFESTR_secondINTERFACE:
02941 #endif
02942 #if FFESTR_VXT
02943 case FFESTR_secondMAP:
02944 case FFESTR_secondSTRUCTURE:
02945 case FFESTR_secondUNION:
02946 #endif
02947 #if FFESTR_F90
02948 case FFESTR_secondWHERE:
02949 ffesta_tokens[1] = NULL;
02950 return (ffelexHandler) ffestb_end3_;
02951 #endif
02952
02953 case FFESTR_secondNone:
02954 goto bad_1;
02955
02956 default:
02957 return (ffelexHandler) ffestb_end2_;
02958 }
02959
02960 case FFELEX_typeNAMES:
02961 if (ffesta_first_kw != FFESTR_firstEND)
02962 goto bad_0;
02963 switch (ffelex_token_type (t))
02964 {
02965 case FFELEX_typeCOMMA:
02966 case FFELEX_typeCOLONCOLON:
02967 ffesta_confirmed ();
02968 goto bad_1;
02969
02970 default:
02971 goto bad_1;
02972
02973 case FFELEX_typeEOS:
02974 case FFELEX_typeSEMICOLON:
02975 break;
02976 }
02977 ffesta_confirmed ();
02978 if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlEND)
02979 {
02980 i = FFESTR_firstlEND;
02981 goto bad_i;
02982 }
02983 ffesta_tokens[1] = NULL;
02984 ffestb_args.endxyz.second = FFESTR_secondNone;
02985 return (ffelexHandler) ffestb_end3_ (t);
02986
02987 default:
02988 goto bad_0;
02989 }
02990
02991 bad_0:
02992 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "END", ffesta_tokens[0]);
02993 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
02994
02995 bad_1:
02996 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "END", t);
02997 return (ffelexHandler) ffelex_swallow_tokens (t,
02998 (ffelexHandler) ffesta_zero);
02999
03000 bad_i:
03001 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "END", ffesta_tokens[0], i, t);
03002 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
03003 }
03004
03005
03006
03007
03008
03009
03010
03011
03012 ffelexHandler
03013 ffestb_endxyz (ffelexToken t)
03014 {
03015 ffeTokenLength i;
03016 unsigned const char *p;
03017
03018 switch (ffelex_token_type (ffesta_tokens[0]))
03019 {
03020 case FFELEX_typeNAME:
03021 switch (ffelex_token_type (t))
03022 {
03023 case FFELEX_typeEOS:
03024 case FFELEX_typeSEMICOLON:
03025 ffesta_confirmed ();
03026 ffesta_tokens[1] = NULL;
03027 return (ffelexHandler) ffestb_end3_ (t);
03028
03029 case FFELEX_typeNAME:
03030 ffesta_confirmed ();
03031 switch (ffestb_args.endxyz.second)
03032 {
03033 #if FFESTR_F90
03034 case FFESTR_secondINTERFACE:
03035 #endif
03036 #if FFESTR_VXT
03037 case FFESTR_secondMAP:
03038 case FFESTR_secondSTRUCTURE:
03039 case FFESTR_secondUNION:
03040 #endif
03041 #if FFESTR_F90
03042 case FFESTR_secondWHERE:
03043 goto bad_1;
03044 #endif
03045
03046 case FFESTR_secondBLOCK:
03047 if (ffesta_second_kw != FFESTR_secondDATA)
03048 goto bad_1;
03049 return (ffelexHandler) ffestb_end2_;
03050
03051 default:
03052 return (ffelexHandler) ffestb_end2_ (t);
03053 }
03054
03055 case FFELEX_typeCOMMA:
03056 case FFELEX_typeCOLONCOLON:
03057 ffesta_confirmed ();
03058 goto bad_1;
03059
03060 default:
03061 goto bad_1;
03062 }
03063
03064 case FFELEX_typeNAMES:
03065 switch (ffelex_token_type (t))
03066 {
03067 case FFELEX_typeCOMMA:
03068 case FFELEX_typeCOLONCOLON:
03069 ffesta_confirmed ();
03070 goto bad_1;
03071
03072 default:
03073 goto bad_1;
03074
03075 case FFELEX_typeEOS:
03076 case FFELEX_typeSEMICOLON:
03077 break;
03078 }
03079 ffesta_confirmed ();
03080 if (ffestb_args.endxyz.second == FFESTR_secondBLOCK)
03081 {
03082 i = FFESTR_firstlEND;
03083 goto bad_i;
03084 }
03085 if (ffelex_token_length (ffesta_tokens[0]) != ffestb_args.endxyz.len)
03086 {
03087 p = ffelex_token_text (ffesta_tokens[0])
03088 + (i = ffestb_args.endxyz.len);
03089 switch (ffestb_args.endxyz.second)
03090 {
03091 #if FFESTR_F90
03092 case FFESTR_secondINTERFACE:
03093 #endif
03094 #if FFESTR_VXT
03095 case FFESTR_secondMAP:
03096 case FFESTR_secondSTRUCTURE:
03097 case FFESTR_secondUNION:
03098 #endif
03099 #if FFESTR_F90
03100 case FFESTR_secondWHERE:
03101 goto bad_i;
03102 #endif
03103
03104 default:
03105 break;
03106 }
03107 if (!ffesrc_is_name_init (*p))
03108 goto bad_i;
03109 ffesta_tokens[1]
03110 = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
03111 return (ffelexHandler) ffestb_end3_ (t);
03112 }
03113 ffesta_tokens[1] = NULL;
03114 return (ffelexHandler) ffestb_end3_ (t);
03115
03116 default:
03117 goto bad_0;
03118 }
03119
03120 bad_0:
03121 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "END", ffesta_tokens[0]);
03122 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
03123
03124 bad_1:
03125 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "END", t);
03126 return (ffelexHandler) ffelex_swallow_tokens (t,
03127 (ffelexHandler) ffesta_zero);
03128
03129 bad_i:
03130 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "END", ffesta_tokens[0], i, t);
03131 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
03132 }
03133
03134
03135
03136
03137
03138
03139
03140 static ffelexHandler
03141 ffestb_end1_ (ffelexToken t)
03142 {
03143 if ((ffelex_token_type (t) == FFELEX_typeNAME)
03144 && (ffesrc_strcmp_2c (ffe_case_match (), ffelex_token_text (t), "DATA",
03145 "data", "Data")
03146 == 0))
03147 {
03148 return (ffelexHandler) ffestb_end2_;
03149 }
03150
03151 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "END", t);
03152 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
03153 }
03154
03155
03156
03157
03158
03159
03160
03161 static ffelexHandler
03162 ffestb_end2_ (ffelexToken t)
03163 {
03164 switch (ffelex_token_type (t))
03165 {
03166 case FFELEX_typeNAME:
03167 ffesta_tokens[1] = ffelex_token_use (t);
03168 return (ffelexHandler) ffestb_end3_;
03169
03170 case FFELEX_typeEOS:
03171 case FFELEX_typeSEMICOLON:
03172 ffesta_tokens[1] = NULL;
03173 return (ffelexHandler) ffestb_end3_ (t);
03174
03175 default:
03176 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "END", t);
03177 return (ffelexHandler) ffelex_swallow_tokens (t,
03178 (ffelexHandler) ffesta_zero);
03179 }
03180 }
03181
03182
03183
03184
03185
03186
03187
03188 static ffelexHandler
03189 ffestb_end3_ (ffelexToken t)
03190 {
03191 switch (ffelex_token_type (t))
03192 {
03193 default:
03194 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "END", t);
03195 if (ffesta_tokens[1] != NULL)
03196 ffelex_token_kill (ffesta_tokens[1]);
03197 return (ffelexHandler) ffelex_swallow_tokens (t,
03198 (ffelexHandler) ffesta_zero);
03199
03200 case FFELEX_typeEOS:
03201 case FFELEX_typeSEMICOLON:
03202 ffesta_confirmed ();
03203 if (ffestb_args.endxyz.second == FFESTR_secondNone)
03204 {
03205 if (!ffesta_is_inhibited ())
03206 ffestc_end ();
03207 return (ffelexHandler) ffesta_zero (t);
03208 }
03209 break;
03210 }
03211
03212 switch (ffestb_args.endxyz.second)
03213 {
03214 #if FFESTR_F90
03215 case FFESTR_secondTYPE:
03216 if (!ffesta_is_inhibited ())
03217 ffestc_R425 (ffesta_tokens[1]);
03218 break;
03219 #endif
03220
03221 #if FFESTR_F90
03222 case FFESTR_secondWHERE:
03223 if (!ffesta_is_inhibited ())
03224 ffestc_R745 ();
03225 break;
03226 #endif
03227
03228 case FFESTR_secondIF:
03229 if (!ffesta_is_inhibited ())
03230 ffestc_R806 (ffesta_tokens[1]);
03231 break;
03232
03233 case FFESTR_secondSELECT:
03234 if (!ffesta_is_inhibited ())
03235 ffestc_R811 (ffesta_tokens[1]);
03236 break;
03237
03238 case FFESTR_secondDO:
03239 if (!ffesta_is_inhibited ())
03240 ffestc_R825 (ffesta_tokens[1]);
03241 break;
03242
03243 case FFESTR_secondPROGRAM:
03244 if (!ffesta_is_inhibited ())
03245 ffestc_R1103 (ffesta_tokens[1]);
03246 break;
03247
03248 #if FFESTR_F90
03249 case FFESTR_secondMODULE:
03250 if (!ffesta_is_inhibited ())
03251 ffestc_R1106 (ffesta_tokens[1]);
03252 break;
03253 #endif
03254 case FFESTR_secondBLOCK:
03255 case FFESTR_secondBLOCKDATA:
03256 if (!ffesta_is_inhibited ())
03257 ffestc_R1112 (ffesta_tokens[1]);
03258 break;
03259
03260 #if FFESTR_F90
03261 case FFESTR_secondINTERFACE:
03262 if (!ffesta_is_inhibited ())
03263 ffestc_R1203 ();
03264 break;
03265 #endif
03266
03267 case FFESTR_secondFUNCTION:
03268 if (!ffesta_is_inhibited ())
03269 ffestc_R1221 (ffesta_tokens[1]);
03270 break;
03271
03272 case FFESTR_secondSUBROUTINE:
03273 if (!ffesta_is_inhibited ())
03274 ffestc_R1225 (ffesta_tokens[1]);
03275 break;
03276
03277 #if FFESTR_VXT
03278 case FFESTR_secondSTRUCTURE:
03279 if (!ffesta_is_inhibited ())
03280 ffestc_V004 ();
03281 break;
03282 #endif
03283
03284 #if FFESTR_VXT
03285 case FFESTR_secondUNION:
03286 if (!ffesta_is_inhibited ())
03287 ffestc_V010 ();
03288 break;
03289 #endif
03290
03291 #if FFESTR_VXT
03292 case FFESTR_secondMAP:
03293 if (!ffesta_is_inhibited ())
03294 ffestc_V013 ();
03295 break;
03296 #endif
03297
03298 default:
03299 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "END", ffesta_tokens[0]);
03300 if (ffesta_tokens[1] != NULL)
03301 ffelex_token_kill (ffesta_tokens[1]);
03302 return (ffelexHandler) ffelex_swallow_tokens (t,
03303 (ffelexHandler) ffesta_zero);
03304 }
03305
03306 if (ffesta_tokens[1] != NULL)
03307 ffelex_token_kill (ffesta_tokens[1]);
03308 return (ffelexHandler) ffesta_zero (t);
03309 }
03310
03311
03312
03313
03314
03315
03316
03317
03318 ffelexHandler
03319 ffestb_goto (ffelexToken t)
03320 {
03321 ffeTokenLength i;
03322 unsigned const char *p;
03323 ffelexHandler next;
03324 ffelexToken nt;
03325
03326 switch (ffelex_token_type (ffesta_tokens[0]))
03327 {
03328 case FFELEX_typeNAME:
03329 switch (ffesta_first_kw)
03330 {
03331 case FFESTR_firstGO:
03332 if ((ffelex_token_type (t) != FFELEX_typeNAME)
03333 || (ffesta_second_kw != FFESTR_secondTO))
03334 goto bad_1;
03335 ffesta_confirmed ();
03336 return (ffelexHandler) ffestb_goto1_;
03337
03338 case FFESTR_firstGOTO:
03339 return (ffelexHandler) ffestb_goto1_ (t);
03340
03341 default:
03342 goto bad_0;
03343 }
03344
03345 case FFELEX_typeNAMES:
03346 if (ffesta_first_kw != FFESTR_firstGOTO)
03347 goto bad_0;
03348 switch (ffelex_token_type (t))
03349 {
03350 case FFELEX_typeCOLONCOLON:
03351 ffesta_confirmed ();
03352 goto bad_1;
03353
03354 default:
03355 goto bad_1;
03356
03357 case FFELEX_typeOPEN_PAREN:
03358 case FFELEX_typePERCENT:
03359
03360 case FFELEX_typeCOMMA:
03361 break;
03362
03363 case FFELEX_typeEOS:
03364 case FFELEX_typeSEMICOLON:
03365 ffesta_confirmed ();
03366 break;
03367 }
03368 if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlGOTO)
03369 {
03370 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlGOTO);
03371 if (ISDIGIT (*p))
03372 {
03373 nt = ffelex_token_number_from_names (ffesta_tokens[0], i);
03374 p += ffelex_token_length (nt);
03375 i += ffelex_token_length (nt);
03376 if (*p != '\0')
03377 {
03378 ffelex_token_kill (nt);
03379 goto bad_i;
03380 }
03381 }
03382 else if (ffesrc_is_name_init (*p))
03383 {
03384 nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
03385 }
03386 else
03387 goto bad_i;
03388 next = (ffelexHandler) ffestb_goto1_ (nt);
03389 ffelex_token_kill (nt);
03390 return (ffelexHandler) (*next) (t);
03391 }
03392 return (ffelexHandler) ffestb_goto1_ (t);
03393
03394 default:
03395 goto bad_0;
03396 }
03397
03398 bad_0:
03399 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "GO TO", ffesta_tokens[0]);
03400 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
03401
03402 bad_1:
03403 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "GO TO", t);
03404 return (ffelexHandler) ffelex_swallow_tokens (t,
03405 (ffelexHandler) ffesta_zero);
03406
03407 bad_i:
03408 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "GO TO", ffesta_tokens[0], i, t);
03409 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
03410 }
03411
03412
03413
03414
03415
03416
03417
03418
03419 static ffelexHandler
03420 ffestb_goto1_ (ffelexToken t)
03421 {
03422 switch (ffelex_token_type (t))
03423 {
03424 case FFELEX_typeNUMBER:
03425 if (ffelex_token_type (ffesta_tokens[0]) == FFELEX_typeNAME)
03426 ffesta_confirmed ();
03427 ffesta_tokens[1] = ffelex_token_use (t);
03428 return (ffelexHandler) ffestb_goto2_;
03429
03430 case FFELEX_typeOPEN_PAREN:
03431 ffesta_tokens[1] = ffelex_token_use (t);
03432 ffestb_subrargs_.label_list.labels = ffestt_tokenlist_create ();
03433 ffestb_subrargs_.label_list.handler = (ffelexHandler) ffestb_goto3_;
03434 return (ffelexHandler) ffestb_subr_label_list_;
03435
03436 case FFELEX_typeNAME:
03437 if (ffelex_token_type (ffesta_tokens[0]) == FFELEX_typeNAME)
03438 ffesta_confirmed ();
03439 return (ffelexHandler) (*((ffelexHandler)
03440 ffeexpr_lhs (ffesta_output_pool,
03441 FFEEXPR_contextAGOTO,
03442 (ffeexprCallback) ffestb_goto4_)))
03443 (t);
03444
03445 case FFELEX_typeEOS:
03446 case FFELEX_typeSEMICOLON:
03447 case FFELEX_typeCOMMA:
03448 case FFELEX_typeCOLONCOLON:
03449 ffesta_confirmed ();
03450 break;
03451
03452 default:
03453 break;
03454 }
03455
03456 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "GO TO", t);
03457 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
03458 }
03459
03460
03461
03462
03463
03464
03465
03466
03467 static ffelexHandler
03468 ffestb_goto2_ (ffelexToken t)
03469 {
03470 switch (ffelex_token_type (t))
03471 {
03472 case FFELEX_typeEOS:
03473 case FFELEX_typeSEMICOLON:
03474 ffesta_confirmed ();
03475 if (!ffesta_is_inhibited ())
03476 ffestc_R836 (ffesta_tokens[1]);
03477 ffelex_token_kill (ffesta_tokens[1]);
03478 return (ffelexHandler) ffesta_zero (t);
03479
03480 default:
03481 break;
03482 }
03483
03484 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "GO TO", t);
03485 ffelex_token_kill (ffesta_tokens[1]);
03486 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
03487 }
03488
03489
03490
03491
03492
03493
03494
03495
03496 static ffelexHandler
03497 ffestb_goto3_ (ffelexToken t)
03498 {
03499 if (!ffestb_subrargs_.label_list.ok)
03500 goto bad;
03501
03502 switch (ffelex_token_type (t))
03503 {
03504 case FFELEX_typeCOMMA:
03505 ffesta_confirmed ();
03506 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool, FFEEXPR_contextCGOTO,
03507 (ffeexprCallback) ffestb_goto5_);
03508
03509 case FFELEX_typeEQUALS:
03510 case FFELEX_typePOINTS:
03511 case FFELEX_typeEOS:
03512 case FFELEX_typeSEMICOLON:
03513 break;
03514
03515 default:
03516 ffesta_confirmed ();
03517
03518 case FFELEX_typeOPEN_PAREN:
03519 return (ffelexHandler) (*((ffelexHandler)
03520 ffeexpr_rhs (ffesta_output_pool, FFEEXPR_contextCGOTO,
03521 (ffeexprCallback) ffestb_goto5_)))
03522 (t);
03523 }
03524
03525 bad:
03526 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "computed-GOTO", t);
03527 ffelex_token_kill (ffesta_tokens[1]);
03528 ffestt_tokenlist_kill (ffestb_subrargs_.label_list.labels);
03529 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
03530 }
03531
03532
03533
03534
03535
03536
03537
03538
03539 static ffelexHandler
03540 ffestb_goto4_ (ffelexToken ft, ffebld expr, ffelexToken t)
03541 {
03542 switch (ffelex_token_type (t))
03543 {
03544 case FFELEX_typeCOMMA:
03545 ffesta_confirmed ();
03546 if (expr == NULL)
03547 break;
03548 ffesta_tokens[1] = ffelex_token_use (ft);
03549 ffestb_local_.go_to.expr = expr;
03550 return (ffelexHandler) ffestb_goto6_;
03551
03552 case FFELEX_typeOPEN_PAREN:
03553 if (expr == NULL)
03554 break;
03555 ffesta_tokens[1] = ffelex_token_use (ft);
03556 ffestb_local_.go_to.expr = expr;
03557 return (ffelexHandler) ffestb_goto6_ (t);
03558
03559 case FFELEX_typeEOS:
03560 case FFELEX_typeSEMICOLON:
03561 ffesta_confirmed ();
03562 if (expr == NULL)
03563 break;
03564 if (!ffesta_is_inhibited ())
03565 ffestc_R839 (expr, ft, NULL);
03566 return (ffelexHandler) ffesta_zero (t);
03567
03568 default:
03569 break;
03570 }
03571
03572 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "assigned-GOTO", t);
03573 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
03574 }
03575
03576
03577
03578
03579
03580
03581
03582
03583 static ffelexHandler
03584 ffestb_goto5_ (ffelexToken ft, ffebld expr, ffelexToken t)
03585 {
03586 switch (ffelex_token_type (t))
03587 {
03588 case FFELEX_typeEOS:
03589 case FFELEX_typeSEMICOLON:
03590 if (expr == NULL)
03591 break;
03592 ffesta_confirmed ();
03593 if (!ffesta_is_inhibited ())
03594 ffestc_R837 (ffestb_subrargs_.label_list.labels, expr, ft);
03595 ffelex_token_kill (ffesta_tokens[1]);
03596 ffestt_tokenlist_kill (ffestb_subrargs_.label_list.labels);
03597 return (ffelexHandler) ffesta_zero (t);
03598
03599 default:
03600 break;
03601 }
03602
03603 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "computed-GOTO", t);
03604 ffelex_token_kill (ffesta_tokens[1]);
03605 ffestt_tokenlist_kill (ffestb_subrargs_.label_list.labels);
03606 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
03607 }
03608
03609
03610
03611
03612
03613
03614
03615
03616 static ffelexHandler
03617 ffestb_goto6_ (ffelexToken t)
03618 {
03619 switch (ffelex_token_type (t))
03620 {
03621 case FFELEX_typeOPEN_PAREN:
03622 ffesta_tokens[2] = ffelex_token_use (t);
03623 ffestb_subrargs_.label_list.labels = ffestt_tokenlist_create ();
03624 ffestb_subrargs_.label_list.handler = (ffelexHandler) ffestb_goto7_;
03625 return (ffelexHandler) ffestb_subr_label_list_;
03626
03627 default:
03628 break;
03629 }
03630
03631 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "assigned-GOTO", t);
03632 ffelex_token_kill (ffesta_tokens[1]);
03633 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
03634 }
03635
03636
03637
03638
03639
03640
03641
03642
03643 static ffelexHandler
03644 ffestb_goto7_ (ffelexToken t)
03645 {
03646 if (!ffestb_subrargs_.label_list.ok)
03647 goto bad;
03648
03649 switch (ffelex_token_type (t))
03650 {
03651 case FFELEX_typeEOS:
03652 case FFELEX_typeSEMICOLON:
03653 ffesta_confirmed ();
03654 if (!ffesta_is_inhibited ())
03655 ffestc_R839 (ffestb_local_.go_to.expr, ffesta_tokens[1],
03656 ffestb_subrargs_.label_list.labels);
03657 ffelex_token_kill (ffesta_tokens[1]);
03658 ffelex_token_kill (ffesta_tokens[2]);
03659 ffestt_tokenlist_kill (ffestb_subrargs_.label_list.labels);
03660 return (ffelexHandler) ffesta_zero (t);
03661
03662 default:
03663 break;
03664 }
03665
03666 bad:
03667 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "assigned-GOTO", t);
03668 ffelex_token_kill (ffesta_tokens[1]);
03669 ffelex_token_kill (ffesta_tokens[2]);
03670 ffestt_tokenlist_kill (ffestb_subrargs_.label_list.labels);
03671 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
03672 }
03673
03674
03675
03676
03677
03678
03679
03680
03681 ffelexHandler
03682 ffestb_halt (ffelexToken t)
03683 {
03684 ffelexHandler next;
03685
03686 switch (ffelex_token_type (ffesta_tokens[0]))
03687 {
03688 case FFELEX_typeNAME:
03689 switch (ffelex_token_type (t))
03690 {
03691 case FFELEX_typeCOMMA:
03692 case FFELEX_typeCOLONCOLON:
03693 ffesta_confirmed ();
03694 goto bad_1;
03695
03696 default:
03697 goto bad_1;
03698
03699 case FFELEX_typeEOS:
03700 case FFELEX_typeSEMICOLON:
03701 case FFELEX_typeNAME:
03702 case FFELEX_typeNUMBER:
03703 case FFELEX_typeAPOSTROPHE:
03704 case FFELEX_typeQUOTE:
03705 ffesta_confirmed ();
03706 break;
03707 }
03708
03709 return (ffelexHandler) (*((ffelexHandler)
03710 ffeexpr_rhs (ffesta_output_pool,
03711 FFEEXPR_contextSTOP,
03712 (ffeexprCallback) ffestb_halt1_)))
03713 (t);
03714
03715 case FFELEX_typeNAMES:
03716 switch (ffelex_token_type (t))
03717 {
03718 default:
03719 goto bad_1;
03720
03721 case FFELEX_typeEOS:
03722 case FFELEX_typeSEMICOLON:
03723 case FFELEX_typeNAME:
03724 case FFELEX_typeNUMBER:
03725 case FFELEX_typeAPOSTROPHE:
03726 case FFELEX_typeQUOTE:
03727 ffesta_confirmed ();
03728 break;
03729 }
03730 next = (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
03731 FFEEXPR_contextSTOP,
03732 (ffeexprCallback) ffestb_halt1_);
03733 next = (ffelexHandler) ffelex_splice_tokens (next, ffesta_tokens[0],
03734 ffestb_args.halt.len);
03735 if (next == NULL)
03736 return (ffelexHandler) ffelex_swallow_tokens (t,
03737 (ffelexHandler) ffesta_zero);
03738 return (ffelexHandler) (*next) (t);
03739
03740 default:
03741 goto bad_0;
03742 }
03743
03744 bad_0:
03745 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM,
03746 (ffesta_first_kw == FFESTR_firstSTOP)
03747 ? "STOP" : "PAUSE",
03748 ffesta_tokens[0]);
03749 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
03750
03751 bad_1:
03752 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM,
03753 (ffesta_first_kw == FFESTR_firstSTOP)
03754 ? "STOP" : "PAUSE",
03755 t);
03756 return (ffelexHandler) ffelex_swallow_tokens (t,
03757 (ffelexHandler) ffesta_zero);
03758 }
03759
03760
03761
03762
03763
03764
03765
03766 static ffelexHandler
03767 ffestb_halt1_ (ffelexToken ft, ffebld expr, ffelexToken t)
03768 {
03769 switch (ffelex_token_type (t))
03770 {
03771 case FFELEX_typeEOS:
03772 case FFELEX_typeSEMICOLON:
03773 ffesta_confirmed ();
03774 if (!ffesta_is_inhibited ())
03775 {
03776 if (ffesta_first_kw == FFESTR_firstSTOP)
03777 ffestc_R842 (expr, ft);
03778 else
03779 ffestc_R843 (expr, ft);
03780 }
03781 return (ffelexHandler) ffesta_zero (t);
03782
03783 default:
03784 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM,
03785 (ffesta_first_kw == FFESTR_firstSTOP)
03786 ? "STOP" : "PAUSE",
03787 t);
03788 break;
03789 }
03790
03791 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
03792 }
03793
03794
03795
03796
03797
03798
03799
03800
03801 ffelexHandler
03802 ffestb_if (ffelexToken t)
03803 {
03804 switch (ffelex_token_type (ffesta_tokens[0]))
03805 {
03806 case FFELEX_typeNAME:
03807 if (ffesta_first_kw != FFESTR_firstIF)
03808 goto bad_0;
03809 break;
03810
03811 case FFELEX_typeNAMES:
03812 if (ffesta_first_kw != FFESTR_firstIF)
03813 goto bad_0;
03814 if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlIF)
03815 goto bad_0;
03816 break;
03817
03818 default:
03819 goto bad_0;
03820 }
03821
03822 switch (ffelex_token_type (t))
03823 {
03824 case FFELEX_typeOPEN_PAREN:
03825 break;
03826
03827 case FFELEX_typeEOS:
03828 case FFELEX_typeSEMICOLON:
03829 case FFELEX_typeCOMMA:
03830 case FFELEX_typeCOLONCOLON:
03831 ffesta_confirmed ();
03832 goto bad_1;
03833
03834 default:
03835 goto bad_1;
03836 }
03837
03838 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool, FFEEXPR_contextIF,
03839 (ffeexprCallback) ffestb_if1_);
03840
03841 bad_0:
03842 if (ffesta_construct_name != NULL)
03843 {
03844 ffelex_token_kill (ffesta_construct_name);
03845 ffesta_construct_name = NULL;
03846 }
03847 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IF", ffesta_tokens[0]);
03848 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
03849
03850 bad_1:
03851 if (ffesta_construct_name != NULL)
03852 {
03853 ffelex_token_kill (ffesta_construct_name);
03854 ffesta_construct_name = NULL;
03855 }
03856 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IF", t);
03857 return (ffelexHandler) ffelex_swallow_tokens (t,
03858 (ffelexHandler) ffesta_zero);
03859 }
03860
03861
03862
03863
03864
03865
03866
03867 static ffelexHandler
03868 ffestb_if1_ (ffelexToken ft, ffebld expr, ffelexToken t)
03869 {
03870 ffestb_local_.if_stmt.expr = expr;
03871
03872 switch (ffelex_token_type (t))
03873 {
03874 case FFELEX_typeCLOSE_PAREN:
03875 if (expr == NULL)
03876 break;
03877 ffesta_tokens[1] = ffelex_token_use (ft);
03878 ffelex_set_names (TRUE);
03879 return (ffelexHandler) ffestb_if2_;
03880
03881 default:
03882 break;
03883 }
03884
03885 if (ffesta_construct_name != NULL)
03886 {
03887 ffelex_token_kill (ffesta_construct_name);
03888 ffesta_construct_name = NULL;
03889 }
03890 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IF", t);
03891 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
03892 }
03893
03894
03895
03896
03897
03898
03899
03900 static ffelexHandler
03901 ffestb_if2_ (ffelexToken t)
03902 {
03903 ffelex_set_names (FALSE);
03904
03905 switch (ffelex_token_type (t))
03906 {
03907 case FFELEX_typeNAME:
03908 case FFELEX_typeNAMES:
03909 ffesta_confirmed ();
03910 ffesta_tokens[2] = ffelex_token_use (t);
03911 return (ffelexHandler) ffestb_if3_;
03912
03913 default:
03914 break;
03915 }
03916
03917 ffelex_token_kill (ffesta_tokens[1]);
03918 if ((ffesta_construct_name == NULL)
03919 || (ffelex_token_type (t) != FFELEX_typeNUMBER))
03920 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IF", t);
03921 else
03922 ffesta_ffebad_2st (FFEBAD_INVALID_STMT_FORM, "CONSTRUCT",
03923 ffesta_construct_name, t);
03924 if (ffesta_construct_name != NULL)
03925 {
03926 ffelex_token_kill (ffesta_construct_name);
03927 ffesta_construct_name = NULL;
03928 }
03929 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
03930 }
03931
03932
03933
03934
03935
03936
03937
03938
03939
03940 static ffelexHandler
03941 ffestb_if3_ (ffelexToken t)
03942 {
03943 ffelexHandler next;
03944
03945 switch (ffelex_token_type (t))
03946 {
03947 case FFELEX_typeEOS:
03948 case FFELEX_typeSEMICOLON:
03949 if (ffestr_first (ffesta_tokens[2]) == FFESTR_firstTHEN)
03950 {
03951 if (!ffesta_is_inhibited ())
03952 ffestc_R803 (ffesta_construct_name, ffestb_local_.if_stmt.expr,
03953 ffesta_tokens[1]);
03954 ffelex_token_kill (ffesta_tokens[1]);
03955 ffelex_token_kill (ffesta_tokens[2]);
03956 if (ffesta_construct_name != NULL)
03957 {
03958 ffelex_token_kill (ffesta_construct_name);
03959 ffesta_construct_name = NULL;
03960 }
03961 return (ffelexHandler) ffesta_zero (t);
03962 }
03963 break;
03964
03965 default:
03966 break;
03967 }
03968
03969 if (ffesta_construct_name != NULL)
03970 {
03971 if (!ffesta_is_inhibited ())
03972 ffesta_ffebad_2st (FFEBAD_INVALID_STMT_FORM, "CONSTRUCT",
03973 ffesta_construct_name, ffesta_tokens[2]);
03974 ffelex_token_kill (ffesta_construct_name);
03975 ffesta_construct_name = NULL;
03976 ffelex_token_kill (ffesta_tokens[1]);
03977 ffelex_token_kill (ffesta_tokens[2]);
03978 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
03979 }
03980
03981 if (!ffesta_is_inhibited ())
03982 ffestc_R807 (ffestb_local_.if_stmt.expr, ffesta_tokens[1]);
03983 ffelex_token_kill (ffesta_tokens[1]);
03984 {
03985 ffelexToken my_2 = ffesta_tokens[2];
03986
03987 next = (ffelexHandler) ffesta_two (my_2, t);
03988 ffelex_token_kill (my_2);
03989 }
03990 return (ffelexHandler) next;
03991 }
03992
03993
03994
03995
03996
03997
03998
03999
04000 #if FFESTR_F90
04001 ffelexHandler
04002 ffestb_where (ffelexToken t)
04003 {
04004 switch (ffelex_token_type (ffesta_tokens[0]))
04005 {
04006 case FFELEX_typeNAME:
04007 if (ffesta_first_kw != FFESTR_firstWHERE)
04008 goto bad_0;
04009 break;
04010
04011 case FFELEX_typeNAMES:
04012 if (ffesta_first_kw != FFESTR_firstWHERE)
04013 goto bad_0;
04014 if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlWHERE)
04015 goto bad_0;
04016 break;
04017
04018 default:
04019 goto bad_0;
04020 }
04021
04022 switch (ffelex_token_type (t))
04023 {
04024 case FFELEX_typeOPEN_PAREN:
04025 break;
04026
04027 case FFELEX_typeEOS:
04028 case FFELEX_typeSEMICOLON:
04029 case FFELEX_typeCOMMA:
04030 case FFELEX_typeCOLONCOLON:
04031 ffesta_confirmed ();
04032 goto bad_1;
04033
04034 default:
04035 goto bad_1;
04036 }
04037
04038 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool, FFEEXPR_contextWHERE,
04039 (ffeexprCallback) ffestb_where1_);
04040
04041 bad_0:
04042 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WHERE", ffesta_tokens[0]);
04043 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
04044
04045 bad_1:
04046 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WHERE", t);
04047 return (ffelexHandler) ffelex_swallow_tokens (t,
04048 (ffelexHandler) ffesta_zero);
04049 }
04050
04051 #endif
04052
04053
04054
04055
04056
04057
04058 #if FFESTR_F90
04059 static ffelexHandler
04060 ffestb_where1_ (ffelexToken ft, ffebld expr, ffelexToken t)
04061 {
04062 ffestb_local_.if_stmt.expr = expr;
04063
04064 switch (ffelex_token_type (t))
04065 {
04066 case FFELEX_typeCLOSE_PAREN:
04067 if (expr == NULL)
04068 break;
04069 ffesta_tokens[1] = ffelex_token_use (ft);
04070 ffelex_set_names (TRUE);
04071 return (ffelexHandler) ffestb_where2_;
04072
04073 default:
04074 break;
04075 }
04076
04077 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WHERE", t);
04078 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
04079 }
04080
04081 #endif
04082
04083
04084
04085
04086
04087
04088 #if FFESTR_F90
04089 static ffelexHandler
04090 ffestb_where2_ (ffelexToken t)
04091 {
04092 ffelex_set_names (FALSE);
04093
04094 switch (ffelex_token_type (t))
04095 {
04096 case FFELEX_typeNAME:
04097 case FFELEX_typeNAMES:
04098 ffesta_confirmed ();
04099 ffesta_tokens[2] = ffelex_token_use (t);
04100 return (ffelexHandler) ffestb_where3_;
04101
04102 case FFELEX_typeEOS:
04103 case FFELEX_typeSEMICOLON:
04104 ffesta_confirmed ();
04105 if (!ffesta_is_inhibited ())
04106 ffestc_R742 (ffestb_local_.if_stmt.expr, ffesta_tokens[1]);
04107 ffelex_token_kill (ffesta_tokens[1]);
04108 return (ffelexHandler) ffesta_zero (t);
04109
04110 default:
04111 break;
04112 }
04113
04114 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WHERE", t);
04115 ffelex_token_kill (ffesta_tokens[1]);
04116 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
04117 }
04118
04119 #endif
04120
04121
04122
04123
04124
04125
04126 #if FFESTR_F90
04127 static ffelexHandler
04128 ffestb_where3_ (ffelexToken t)
04129 {
04130 ffelexHandler next;
04131 ffelexToken my_2 = ffesta_tokens[2];
04132
04133 if (!ffesta_is_inhibited ())
04134 ffestc_R740 (ffestb_local_.if_stmt.expr, ffesta_tokens[1]);
04135 ffelex_token_kill (ffesta_tokens[1]);
04136 next = (ffelexHandler) ffesta_two (my_2, t);
04137 ffelex_token_kill (my_2);
04138 return (ffelexHandler) next;
04139 }
04140
04141 #endif
04142
04143
04144
04145
04146
04147
04148
04149 ffelexHandler
04150 ffestb_let (ffelexToken t)
04151 {
04152 ffelexHandler next;
04153 bool vxtparam;
04154
04155 unsigned const char *p;
04156
04157 switch (ffelex_token_type (ffesta_tokens[0]))
04158 {
04159 case FFELEX_typeNAME:
04160 vxtparam = FALSE;
04161 break;
04162
04163 case FFELEX_typeNAMES:
04164 vxtparam = TRUE;
04165 break;
04166
04167 default:
04168 goto bad_0;
04169 }
04170
04171 switch (ffelex_token_type (t))
04172 {
04173 case FFELEX_typeOPEN_PAREN:
04174 case FFELEX_typePERCENT:
04175 case FFELEX_typePOINTS:
04176 ffestb_local_.let.vxtparam = FALSE;
04177 break;
04178
04179 case FFELEX_typeEQUALS:
04180 if (!vxtparam || (ffesta_first_kw != FFESTR_firstPARAMETER))
04181 {
04182 ffestb_local_.let.vxtparam = FALSE;
04183 break;
04184 }
04185 p = ffelex_token_text (ffesta_tokens[0]) + FFESTR_firstlPARAMETER;
04186 ffestb_local_.let.vxtparam = ffesrc_is_name_init (*p);
04187 break;
04188
04189 default:
04190 goto bad_1;
04191 }
04192
04193 next = (ffelexHandler) (*((ffelexHandler)
04194 ffeexpr_lhs (ffesta_output_pool,
04195 FFEEXPR_contextLET,
04196 (ffeexprCallback) ffestb_let1_)))
04197 (ffesta_tokens[0]);
04198 return (ffelexHandler) (*next) (t);
04199
04200 bad_0:
04201 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "assignment", ffesta_tokens[0]);
04202 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
04203
04204 bad_1:
04205 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "assignment", t);
04206 return (ffelexHandler) ffelex_swallow_tokens (t,
04207 (ffelexHandler) ffesta_zero);
04208 }
04209
04210
04211
04212
04213
04214
04215
04216 static ffelexHandler
04217 ffestb_let1_ (ffelexToken ft UNUSED, ffebld expr, ffelexToken t)
04218 {
04219 ffestb_local_.let.dest = expr;
04220
04221 switch (ffelex_token_type (t))
04222 {
04223 #if FFESTR_F90
04224 case FFELEX_typePOINTS:
04225 #endif
04226 case FFELEX_typeEQUALS:
04227 if (expr == NULL)
04228 break;
04229 ffesta_tokens[1] = ffelex_token_use (t);
04230 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
04231 FFEEXPR_contextLET, (ffeexprCallback) ffestb_let2_);
04232
04233 default:
04234 break;
04235 }
04236
04237 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "assignment", t);
04238 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
04239 }
04240
04241
04242
04243
04244
04245
04246
04247 static ffelexHandler
04248 ffestb_let2_ (ffelexToken ft, ffebld expr, ffelexToken t)
04249 {
04250 switch (ffelex_token_type (t))
04251 {
04252 case FFELEX_typeEOS:
04253 case FFELEX_typeSEMICOLON:
04254 if (expr == NULL)
04255 break;
04256 if (ffestb_local_.let.vxtparam && !ffestc_is_let_not_V027 ())
04257 break;
04258 ffesta_confirmed ();
04259 if (!ffesta_is_inhibited ())
04260 #if FFESTR_F90
04261 if (ffelex_token_type (ffesta_tokens[1]) == FFELEX_typeEQUALS)
04262 #endif
04263 ffestc_let (ffestb_local_.let.dest, expr, ft);
04264 #if FFESTR_F90
04265 else
04266 ffestc_R738 (ffestb_local_.let.dest, expr, ft);
04267 #endif
04268 ffelex_token_kill (ffesta_tokens[1]);
04269 return (ffelexHandler) ffesta_zero (t);
04270
04271 default:
04272 break;
04273 }
04274
04275 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM,
04276 (ffelex_token_type (ffesta_tokens[1]) == FFELEX_typeEQUALS)
04277 ? "assignment" : "pointer-assignment",
04278 t);
04279 ffelex_token_kill (ffesta_tokens[1]);
04280 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
04281 }
04282
04283
04284
04285
04286
04287
04288
04289
04290 #if FFESTR_F90
04291 ffelexHandler
04292 ffestb_type (ffelexToken t)
04293 {
04294 ffeTokenLength i;
04295 const char *p;
04296
04297 switch (ffelex_token_type (ffesta_tokens[0]))
04298 {
04299 case FFELEX_typeNAME:
04300 if (ffesta_first_kw != FFESTR_firstTYPE)
04301 goto bad_0;
04302 switch (ffelex_token_type (t))
04303 {
04304 case FFELEX_typeEOS:
04305 case FFELEX_typeSEMICOLON:
04306 case FFELEX_typeCOLONCOLON:
04307 ffesta_confirmed ();
04308 goto bad_1;
04309
04310 default:
04311 goto bad_1;
04312
04313 case FFELEX_typeCOMMA:
04314 ffesta_confirmed ();
04315 return (ffelexHandler) ffestb_type1_;
04316
04317 case FFELEX_typeNAME:
04318
04319 ffesta_tokens[1] = NULL;
04320 ffesta_tokens[2] = ffelex_token_use (t);
04321 return (ffelexHandler) ffestb_type4_;
04322 }
04323
04324 case FFELEX_typeNAMES:
04325 if (ffesta_first_kw != FFESTR_firstTYPE)
04326 goto bad_0;
04327 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlTYPE);
04328 switch (ffelex_token_type (t))
04329 {
04330 default:
04331 goto bad_1;
04332
04333 case FFELEX_typeCOMMA:
04334 if (*p != '\0')
04335 goto bad_i;
04336 ffesta_confirmed ();
04337 ffelex_set_names (TRUE);
04338 return (ffelexHandler) ffestb_type1_;
04339
04340 case FFELEX_typeEOS:
04341 case FFELEX_typeSEMICOLON:
04342 break;
04343 }
04344 if (!ffesrc_is_name_init (*p))
04345 goto bad_i;
04346 ffesta_tokens[1] = NULL;
04347 ffesta_tokens[2]
04348 = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
04349 return (ffelexHandler) ffestb_type4_ (t);
04350
04351 default:
04352 goto bad_0;
04353 }
04354
04355 bad_0:
04356 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "TYPE", ffesta_tokens[0]);
04357 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
04358
04359 bad_1:
04360 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "TYPE", t);
04361 return (ffelexHandler) ffelex_swallow_tokens (t,
04362 (ffelexHandler) ffesta_zero);
04363
04364 bad_i:
04365 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "TYPE", ffesta_tokens[0], i, t);
04366 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
04367 }
04368
04369
04370
04371
04372
04373
04374
04375 static ffelexHandler
04376 ffestb_type1_ (ffelexToken t)
04377 {
04378 ffeTokenLength i;
04379 const char *p;
04380
04381 ffelex_set_names (FALSE);
04382
04383 switch (ffelex_token_type (t))
04384 {
04385 case FFELEX_typeNAME:
04386 ffesta_tokens[1] = ffelex_token_use (t);
04387 ffestb_local_.type.kw = ffestr_other (t);
04388 switch (ffestb_local_.varlist.kw)
04389 {
04390 case FFESTR_otherPUBLIC:
04391 case FFESTR_otherPRIVATE:
04392 return (ffelexHandler) ffestb_type2_;
04393
04394 default:
04395 ffelex_token_kill (ffesta_tokens[1]);
04396 break;
04397 }
04398 break;
04399
04400 case FFELEX_typeNAMES:
04401 ffesta_tokens[1] = ffelex_token_use (t);
04402 ffestb_local_.type.kw = ffestr_other (t);
04403 switch (ffestb_local_.varlist.kw)
04404 {
04405 case FFESTR_otherPUBLIC:
04406 p = ffelex_token_text (t) + (i = FFESTR_otherlPUBLIC);
04407 if (*p == '\0')
04408 return (ffelexHandler) ffestb_type2_;
04409 if (!ffesrc_is_name_init (*p))
04410 goto bad_i1;
04411 ffesta_tokens[2] = ffelex_token_name_from_names (t, i, 0);
04412 return (ffelexHandler) ffestb_type4_;
04413
04414 case FFESTR_otherPRIVATE:
04415 p = ffelex_token_text (t) + (i = FFESTR_otherlPRIVATE);
04416 if (*p == '\0')
04417 return (ffelexHandler) ffestb_type2_;
04418 if (!ffesrc_is_name_init (*p))
04419 goto bad_i1;
04420 ffesta_tokens[2] = ffelex_token_name_from_names (t, i, 0);
04421 return (ffelexHandler) ffestb_type4_;
04422
04423 default:
04424 ffelex_token_kill (ffesta_tokens[1]);
04425 break;
04426 }
04427 break;
04428
04429 default:
04430 break;
04431 }
04432
04433 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "TYPE", t);
04434 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
04435
04436 bad_i1:
04437 ffelex_token_kill (ffesta_tokens[1]);
04438 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "TYPE", t, i, NULL);
04439 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
04440 }
04441
04442
04443
04444
04445
04446
04447
04448 static ffelexHandler
04449 ffestb_type2_ (ffelexToken t)
04450 {
04451 switch (ffelex_token_type (t))
04452 {
04453 case FFELEX_typeCOLONCOLON:
04454 return (ffelexHandler) ffestb_type3_;
04455
04456 case FFELEX_typeNAME:
04457 return (ffelexHandler) ffestb_type3_ (t);
04458
04459 default:
04460 break;
04461 }
04462
04463 if (ffesta_tokens[1] != NULL)
04464 ffelex_token_kill (ffesta_tokens[1]);
04465 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "TYPE", t);
04466 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
04467 }
04468
04469
04470
04471
04472
04473
04474
04475 static ffelexHandler
04476 ffestb_type3_ (ffelexToken t)
04477 {
04478 switch (ffelex_token_type (t))
04479 {
04480 case FFELEX_typeNAME:
04481 ffesta_tokens[2] = ffelex_token_use (t);
04482 return (ffelexHandler) ffestb_type4_;
04483
04484 default:
04485 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "TYPE", t);
04486 break;
04487 }
04488
04489 if (ffesta_tokens[1] != NULL)
04490 ffelex_token_kill (ffesta_tokens[1]);
04491 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
04492 }
04493
04494
04495
04496
04497
04498
04499
04500 static ffelexHandler
04501 ffestb_type4_ (ffelexToken t)
04502 {
04503 switch (ffelex_token_type (t))
04504 {
04505 case FFELEX_typeEOS:
04506 case FFELEX_typeSEMICOLON:
04507 ffesta_confirmed ();
04508 if (!ffesta_is_inhibited ())
04509 ffestc_R424 (ffesta_tokens[1], ffestb_local_.type.kw,
04510 ffesta_tokens[2]);
04511 if (ffesta_tokens[1] != NULL)
04512 ffelex_token_kill (ffesta_tokens[1]);
04513 ffelex_token_kill (ffesta_tokens[2]);
04514 return (ffelexHandler) ffesta_zero (t);
04515
04516 default:
04517 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "TYPE", t);
04518 break;
04519 }
04520
04521 if (ffesta_tokens[1] != NULL)
04522 ffelex_token_kill (ffesta_tokens[1]);
04523 ffelex_token_kill (ffesta_tokens[2]);
04524 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
04525 }
04526
04527 #endif
04528
04529
04530
04531
04532
04533
04534
04535
04536 ffelexHandler
04537 ffestb_varlist (ffelexToken t)
04538 {
04539 ffeTokenLength i;
04540 unsigned const char *p;
04541 ffelexToken nt;
04542 ffelexHandler next;
04543
04544 switch (ffelex_token_type (ffesta_tokens[0]))
04545 {
04546 case FFELEX_typeNAME:
04547 switch (ffelex_token_type (t))
04548 {
04549 case FFELEX_typeEOS:
04550 case FFELEX_typeSEMICOLON:
04551 ffesta_confirmed ();
04552 switch (ffesta_first_kw)
04553 {
04554 #if FFESTR_F90
04555 case FFESTR_firstPUBLIC:
04556 if (!ffesta_is_inhibited ())
04557 ffestc_R521A ();
04558 return (ffelexHandler) ffesta_zero (t);
04559
04560 case FFESTR_firstPRIVATE:
04561 if (!ffesta_is_inhibited ())
04562 ffestc_private ();
04563 return (ffelexHandler) ffesta_zero (t);
04564 #endif
04565
04566 default:
04567 goto bad_1;
04568 }
04569
04570 case FFELEX_typeCOMMA:
04571 ffesta_confirmed ();
04572 goto bad_1;
04573
04574 case FFELEX_typeCOLONCOLON:
04575 ffesta_confirmed ();
04576 switch (ffesta_first_kw)
04577 {
04578 #if FFESTR_F90
04579 case FFESTR_firstOPTIONAL:
04580 if (!ffesta_is_inhibited ())
04581 ffestc_R520_start ();
04582 break;
04583
04584 case FFESTR_firstPUBLIC:
04585 if (!ffesta_is_inhibited ())
04586 ffestc_R521Astart ();
04587 break;
04588
04589 case FFESTR_firstPRIVATE:
04590 if (!ffesta_is_inhibited ())
04591 ffestc_R521Bstart ();
04592 break;
04593 #endif
04594
04595 default:
04596 ffesta_confirmed ();
04597 goto bad_1;
04598 }
04599 return (ffelexHandler) ffestb_varlist5_;
04600
04601 default:
04602 goto bad_1;
04603
04604 case FFELEX_typeOPEN_PAREN:
04605 switch (ffesta_first_kw)
04606 {
04607 #if FFESTR_F90
04608 case FFESTR_firstINTENT:
04609 return (ffelexHandler) ffestb_varlist1_;
04610 #endif
04611
04612 default:
04613 goto bad_1;
04614 }
04615
04616 case FFELEX_typeNAME:
04617 ffesta_confirmed ();
04618 switch (ffesta_first_kw)
04619 {
04620 case FFESTR_firstEXTERNAL:
04621 if (!ffesta_is_inhibited ())
04622 ffestc_R1207_start ();
04623 break;
04624
04625 #if FFESTR_F90
04626 case FFESTR_firstINTENT:
04627 goto bad_1;
04628 #endif
04629
04630 case FFESTR_firstINTRINSIC:
04631 if (!ffesta_is_inhibited ())
04632 ffestc_R1208_start ();
04633 break;
04634
04635 #if FFESTR_F90
04636 case FFESTR_firstOPTIONAL:
04637 if (!ffesta_is_inhibited ())
04638 ffestc_R520_start ();
04639 break;
04640 #endif
04641
04642 #if FFESTR_F90
04643 case FFESTR_firstPUBLIC:
04644 if (!ffesta_is_inhibited ())
04645 ffestc_R521Astart ();
04646 break;
04647
04648 case FFESTR_firstPRIVATE:
04649 if (!ffesta_is_inhibited ())
04650 ffestc_R521Bstart ();
04651 break;
04652 #endif
04653
04654 default:
04655 break;
04656 }
04657 return (ffelexHandler) ffestb_varlist5_ (t);
04658 }
04659
04660 case FFELEX_typeNAMES:
04661 p = ffelex_token_text (ffesta_tokens[0]) + (i = ffestb_args.varlist.len);
04662 switch (ffelex_token_type (t))
04663 {
04664 case FFELEX_typeEOS:
04665 case FFELEX_typeSEMICOLON:
04666 ffesta_confirmed ();
04667 switch (ffesta_first_kw)
04668 {
04669 #if FFESTR_F90
04670 case FFESTR_firstINTENT:
04671 goto bad_1;
04672 #endif
04673
04674 default:
04675 break;
04676 }
04677 if (*p != '\0')
04678 break;
04679 switch (ffesta_first_kw)
04680 {
04681 #if FFESTR_F90
04682 case FFESTR_firstPUBLIC:
04683 if (!ffesta_is_inhibited ())
04684 ffestc_R521A ();
04685 return (ffelexHandler) ffesta_zero (t);
04686
04687 case FFESTR_firstPRIVATE:
04688 if (!ffesta_is_inhibited ())
04689 ffestc_private ();
04690 return (ffelexHandler) ffesta_zero (t);
04691 #endif
04692
04693 default:
04694 goto bad_1;
04695 }
04696
04697 case FFELEX_typeCOMMA:
04698 ffesta_confirmed ();
04699 switch (ffesta_first_kw)
04700 {
04701 #if FFESTR_F90
04702 case FFESTR_firstINTENT:
04703 goto bad_1;
04704 #endif
04705
04706 default:
04707 break;
04708 }
04709 if (*p != '\0')
04710 break;
04711 goto bad_1;
04712
04713 case FFELEX_typeCOLONCOLON:
04714 ffesta_confirmed ();
04715 switch (ffesta_first_kw)
04716 {
04717 #if FFESTR_F90
04718 case FFESTR_firstOPTIONAL:
04719 if (!ffesta_is_inhibited ())
04720 ffestc_R520_start ();
04721 break;
04722 #endif
04723
04724 #if FFESTR_F90
04725 case FFESTR_firstPUBLIC:
04726 if (!ffesta_is_inhibited ())
04727 ffestc_R521Astart ();
04728 break;
04729
04730 case FFESTR_firstPRIVATE:
04731 if (!ffesta_is_inhibited ())
04732 ffestc_R521Bstart ();
04733 break;
04734 #endif
04735
04736 default:
04737 goto bad_1;
04738 }
04739 return (ffelexHandler) ffestb_varlist5_;
04740
04741 case FFELEX_typeOPEN_PAREN:
04742 switch (ffesta_first_kw)
04743 {
04744 #if FFESTR_F90
04745 case FFESTR_firstINTENT:
04746 if (*p != '\0')
04747 goto bad_1;
04748 return (ffelexHandler) ffestb_varlist1_;
04749 #endif
04750
04751 default:
04752 goto bad_1;
04753 }
04754
04755 case FFELEX_typeNAME:
04756 ffesta_confirmed ();
04757 switch (ffesta_first_kw)
04758 {
04759 case FFESTR_firstEXTERNAL:
04760 if (!ffesta_is_inhibited ())
04761 ffestc_R1207_start ();
04762 break;
04763
04764 #if FFESTR_F90
04765 case FFESTR_firstINTENT:
04766 goto bad_1;
04767 #endif
04768
04769 case FFESTR_firstINTRINSIC:
04770 if (!ffesta_is_inhibited ())
04771 ffestc_R1208_start ();
04772 break;
04773
04774 #if FFESTR_F90
04775 case FFESTR_firstOPTIONAL:
04776 if (!ffesta_is_inhibited ())
04777 ffestc_R520_start ();
04778 break;
04779 #endif
04780
04781 #if FFESTR_F90
04782 case FFESTR_firstPUBLIC:
04783 if (!ffesta_is_inhibited ())
04784 ffestc_R521Astart ();
04785 break;
04786
04787 case FFESTR_firstPRIVATE:
04788 if (!ffesta_is_inhibited ())
04789 ffestc_R521Bstart ();
04790 break;
04791 #endif
04792
04793 default:
04794 break;
04795 }
04796 return (ffelexHandler) ffestb_varlist5_ (t);
04797
04798 default:
04799 goto bad_1;
04800 }
04801
04802
04803
04804
04805
04806
04807 if (!ffesrc_is_name_init (*p))
04808 goto bad_i;
04809 nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
04810 if (!ffesta_is_inhibited ())
04811 {
04812 switch (ffesta_first_kw)
04813 {
04814 case FFESTR_firstEXTERNAL:
04815 ffestc_R1207_start ();
04816 break;
04817
04818 case FFESTR_firstINTRINSIC:
04819 ffestc_R1208_start ();
04820 break;
04821
04822 #if FFESTR_F90
04823 case FFESTR_firstOPTIONAL:
04824 ffestc_R520_start ();
04825 break;
04826 #endif
04827
04828 #if FFESTR_F90
04829 case FFESTR_firstPUBLIC:
04830 ffestc_R521Astart ();
04831 break;
04832
04833 case FFESTR_firstPRIVATE:
04834 ffestc_R521Bstart ();
04835 break;
04836 #endif
04837
04838 default:
04839 assert (FALSE);
04840 }
04841 }
04842 next = (ffelexHandler) ffestb_varlist5_ (nt);
04843 ffelex_token_kill (nt);
04844 return (ffelexHandler) (*next) (t);
04845
04846 default:
04847 goto bad_0;
04848 }
04849
04850 bad_0:
04851 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.varlist.badname, ffesta_tokens[0]);
04852 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
04853
04854 bad_1:
04855 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.varlist.badname, t);
04856 return (ffelexHandler) ffelex_swallow_tokens (t,
04857 (ffelexHandler) ffesta_zero);
04858
04859 bad_i:
04860 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, ffestb_args.varlist.badname, ffesta_tokens[0], i, t);
04861 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
04862 }
04863
04864
04865
04866
04867
04868
04869
04870 #if FFESTR_F90
04871 static ffelexHandler
04872 ffestb_varlist1_ (ffelexToken t)
04873 {
04874 switch (ffelex_token_type (t))
04875 {
04876 case FFELEX_typeNAME:
04877 ffesta_tokens[1] = ffelex_token_use (t);
04878 ffestb_local_.varlist.kw = ffestr_other (t);
04879 switch (ffestb_local_.varlist.kw)
04880 {
04881 case FFESTR_otherIN:
04882 return (ffelexHandler) ffestb_varlist2_;
04883
04884 case FFESTR_otherINOUT:
04885 return (ffelexHandler) ffestb_varlist3_;
04886
04887 case FFESTR_otherOUT:
04888 return (ffelexHandler) ffestb_varlist3_;
04889
04890 default:
04891 ffelex_token_kill (ffesta_tokens[1]);
04892 break;
04893 }
04894 break;
04895
04896 default:
04897 break;
04898 }
04899
04900 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.varlist.badname, t);
04901 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
04902 }
04903
04904
04905
04906
04907
04908
04909
04910 static ffelexHandler
04911 ffestb_varlist2_ (ffelexToken t)
04912 {
04913 switch (ffelex_token_type (t))
04914 {
04915 case FFELEX_typeNAME:
04916 switch (ffestr_other (t))
04917 {
04918 case FFESTR_otherOUT:
04919 ffestb_local_.varlist.kw = FFESTR_otherINOUT;
04920 return (ffelexHandler) ffestb_varlist3_;
04921
04922 default:
04923 break;
04924 }
04925 break;
04926
04927 case FFELEX_typeCLOSE_PAREN:
04928 return (ffelexHandler) ffestb_varlist4_;
04929
04930 default:
04931 break;
04932 }
04933
04934 ffelex_token_kill (ffesta_tokens[1]);
04935 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.varlist.badname, t);
04936 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
04937 }
04938
04939
04940
04941
04942
04943
04944
04945 static ffelexHandler
04946 ffestb_varlist3_ (ffelexToken t)
04947 {
04948 switch (ffelex_token_type (t))
04949 {
04950 case FFELEX_typeCLOSE_PAREN:
04951 return (ffelexHandler) ffestb_varlist4_;
04952
04953 default:
04954 break;
04955 }
04956
04957 ffelex_token_kill (ffesta_tokens[1]);
04958 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.varlist.badname, t);
04959 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
04960 }
04961
04962
04963
04964
04965
04966
04967
04968 static ffelexHandler
04969 ffestb_varlist4_ (ffelexToken t)
04970 {
04971 switch (ffelex_token_type (t))
04972 {
04973 case FFELEX_typeCOLONCOLON:
04974 ffesta_confirmed ();
04975 if (!ffesta_is_inhibited ())
04976 ffestc_R519_start (ffesta_tokens[1], ffestb_local_.varlist.kw);
04977 ffelex_token_kill (ffesta_tokens[1]);
04978 return (ffelexHandler) ffestb_varlist5_;
04979
04980 case FFELEX_typeNAME:
04981 ffesta_confirmed ();
04982 if (!ffesta_is_inhibited ())
04983 ffestc_R519_start (ffesta_tokens[1], ffestb_local_.varlist.kw);
04984 ffelex_token_kill (ffesta_tokens[1]);
04985 return (ffelexHandler) ffestb_varlist5_ (t);
04986
04987 default:
04988 break;
04989 }
04990
04991 ffelex_token_kill (ffesta_tokens[1]);
04992 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.varlist.badname, t);
04993 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
04994 }
04995
04996 #endif
04997
04998
04999
05000
05001
05002
05003 static ffelexHandler
05004 ffestb_varlist5_ (ffelexToken t)
05005 {
05006 switch (ffelex_token_type (t))
05007 {
05008 case FFELEX_typeNAME:
05009 ffesta_tokens[1] = ffelex_token_use (t);
05010 return (ffelexHandler) ffestb_varlist6_;
05011
05012 default:
05013 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.varlist.badname, t);
05014 break;
05015 }
05016
05017 if (!ffesta_is_inhibited ())
05018 {
05019 switch (ffesta_first_kw)
05020 {
05021 case FFESTR_firstEXTERNAL:
05022 ffestc_R1207_finish ();
05023 break;
05024
05025 #if FFESTR_F90
05026 case FFESTR_firstINTENT:
05027 ffestc_R519_finish ();
05028 break;
05029 #endif
05030
05031 case FFESTR_firstINTRINSIC:
05032 ffestc_R1208_finish ();
05033 break;
05034
05035 #if FFESTR_F90
05036 case FFESTR_firstOPTIONAL:
05037 ffestc_R520_finish ();
05038 break;
05039 #endif
05040
05041 #if FFESTR_F90
05042 case FFESTR_firstPUBLIC:
05043 ffestc_R521Afinish ();
05044 break;
05045
05046 case FFESTR_firstPRIVATE:
05047 ffestc_R521Bfinish ();
05048 break;
05049 #endif
05050
05051 default:
05052 assert (FALSE);
05053 }
05054 }
05055 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
05056 }
05057
05058
05059
05060
05061
05062
05063
05064 static ffelexHandler
05065 ffestb_varlist6_ (ffelexToken t)
05066 {
05067 switch (ffelex_token_type (t))
05068 {
05069 case FFELEX_typeCOMMA:
05070 if (!ffesta_is_inhibited ())
05071 {
05072 switch (ffesta_first_kw)
05073 {
05074 case FFESTR_firstEXTERNAL:
05075 ffestc_R1207_item (ffesta_tokens[1]);
05076 break;
05077
05078 #if FFESTR_F90
05079 case FFESTR_firstINTENT:
05080 ffestc_R519_item (ffesta_tokens[1]);
05081 break;
05082 #endif
05083
05084 case FFESTR_firstINTRINSIC:
05085 ffestc_R1208_item (ffesta_tokens[1]);
05086 break;
05087
05088 #if FFESTR_F90
05089 case FFESTR_firstOPTIONAL:
05090 ffestc_R520_item (ffesta_tokens[1]);
05091 break;
05092 #endif
05093
05094 #if FFESTR_F90
05095 case FFESTR_firstPUBLIC:
05096 ffestc_R521Aitem (ffesta_tokens[1]);
05097 break;
05098
05099 case FFESTR_firstPRIVATE:
05100 ffestc_R521Bitem (ffesta_tokens[1]);
05101 break;
05102 #endif
05103
05104 default:
05105 assert (FALSE);
05106 }
05107 }
05108 ffelex_token_kill (ffesta_tokens[1]);
05109 return (ffelexHandler) ffestb_varlist5_;
05110
05111 case FFELEX_typeEOS:
05112 case FFELEX_typeSEMICOLON:
05113 if (!ffesta_is_inhibited ())
05114 {
05115 switch (ffesta_first_kw)
05116 {
05117 case FFESTR_firstEXTERNAL:
05118 ffestc_R1207_item (ffesta_tokens[1]);
05119 ffestc_R1207_finish ();
05120 break;
05121
05122 #if FFESTR_F90
05123 case FFESTR_firstINTENT:
05124 ffestc_R519_item (ffesta_tokens[1]);
05125 ffestc_R519_finish ();
05126 break;
05127 #endif
05128
05129 case FFESTR_firstINTRINSIC:
05130 ffestc_R1208_item (ffesta_tokens[1]);
05131 ffestc_R1208_finish ();
05132 break;
05133
05134 #if FFESTR_F90
05135 case FFESTR_firstOPTIONAL:
05136 ffestc_R520_item (ffesta_tokens[1]);
05137 ffestc_R520_finish ();
05138 break;
05139 #endif
05140
05141 #if FFESTR_F90
05142 case FFESTR_firstPUBLIC:
05143 ffestc_R521Aitem (ffesta_tokens[1]);
05144 ffestc_R521Afinish ();
05145 break;
05146
05147 case FFESTR_firstPRIVATE:
05148 ffestc_R521Bitem (ffesta_tokens[1]);
05149 ffestc_R521Bfinish ();
05150 break;
05151 #endif
05152
05153 default:
05154 assert (FALSE);
05155 }
05156 }
05157 ffelex_token_kill (ffesta_tokens[1]);
05158 return (ffelexHandler) ffesta_zero (t);
05159
05160 default:
05161 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.varlist.badname, t);
05162 break;
05163 }
05164
05165 if (!ffesta_is_inhibited ())
05166 {
05167 switch (ffesta_first_kw)
05168 {
05169 case FFESTR_firstEXTERNAL:
05170 ffestc_R1207_finish ();
05171 break;
05172
05173 #if FFESTR_F90
05174 case FFESTR_firstINTENT:
05175 ffestc_R519_finish ();
05176 break;
05177 #endif
05178
05179 case FFESTR_firstINTRINSIC:
05180 ffestc_R1208_finish ();
05181 break;
05182
05183 #if FFESTR_F90
05184 case FFESTR_firstOPTIONAL:
05185 ffestc_R520_finish ();
05186 break;
05187 #endif
05188
05189 #if FFESTR_F90
05190 case FFESTR_firstPUBLIC:
05191 ffestc_R521Afinish ();
05192 break;
05193
05194 case FFESTR_firstPRIVATE:
05195 ffestc_R521Bfinish ();
05196 break;
05197 #endif
05198
05199 default:
05200 assert (FALSE);
05201 }
05202 }
05203 ffelex_token_kill (ffesta_tokens[1]);
05204 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
05205 }
05206
05207
05208
05209
05210
05211
05212
05213
05214 #if FFESTR_F90
05215 ffelexHandler
05216 ffestb_R423B (ffelexToken t)
05217 {
05218 const char *p;
05219 ffeTokenLength i;
05220
05221 switch (ffelex_token_type (ffesta_tokens[0]))
05222 {
05223 case FFELEX_typeNAME:
05224 if (ffesta_first_kw != FFESTR_firstSEQUENCE)
05225 goto bad_0;
05226 break;
05227
05228 case FFELEX_typeNAMES:
05229 if (ffesta_first_kw != FFESTR_firstSEQUENCE)
05230 goto bad_0;
05231 if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlSEQUENCE)
05232 {
05233 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlSEQUENCE);
05234 goto bad_i;
05235 }
05236 break;
05237
05238 default:
05239 goto bad_0;
05240 }
05241
05242 switch (ffelex_token_type (t))
05243 {
05244 case FFELEX_typeEOS:
05245 case FFELEX_typeSEMICOLON:
05246 ffesta_confirmed ();
05247 if (!ffesta_is_inhibited ())
05248 ffestc_R423B ();
05249 return (ffelexHandler) ffesta_zero (t);
05250
05251 case FFELEX_typeCOMMA:
05252 case FFELEX_typeCOLONCOLON:
05253 ffesta_confirmed ();
05254 goto bad_1;
05255
05256 default:
05257 goto bad_1;
05258 }
05259
05260 bad_0:
05261 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "SEQUENCE", ffesta_tokens[0]);
05262 return (ffelexHandler) ffelex_swallow_tokens (t,
05263 (ffelexHandler) ffesta_zero);
05264
05265 bad_1:
05266 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "SEQUENCE", t);
05267 return (ffelexHandler) ffelex_swallow_tokens (t,
05268 (ffelexHandler) ffesta_zero);
05269
05270 bad_i:
05271 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "SEQUENCE", ffesta_tokens[0], i, t);
05272 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
05273 }
05274
05275 #endif
05276
05277
05278
05279
05280
05281
05282
05283 ffelexHandler
05284 ffestb_R522 (ffelexToken t)
05285 {
05286 ffeTokenLength i;
05287 unsigned const char *p;
05288 ffelexToken nt;
05289 ffelexHandler next;
05290
05291 switch (ffelex_token_type (ffesta_tokens[0]))
05292 {
05293 case FFELEX_typeNAME:
05294 if (ffesta_first_kw != FFESTR_firstSAVE)
05295 goto bad_0;
05296 switch (ffelex_token_type (t))
05297 {
05298 case FFELEX_typeCOMMA:
05299 ffesta_confirmed ();
05300 goto bad_1;
05301
05302 default:
05303 goto bad_1;
05304
05305 case FFELEX_typeEOS:
05306 case FFELEX_typeSEMICOLON:
05307 ffesta_confirmed ();
05308 if (!ffesta_is_inhibited ())
05309 ffestc_R522 ();
05310 return (ffelexHandler) ffesta_zero (t);
05311
05312 case FFELEX_typeNAME:
05313 case FFELEX_typeSLASH:
05314 ffesta_confirmed ();
05315 if (!ffesta_is_inhibited ())
05316 ffestc_R522start ();
05317 return (ffelexHandler) ffestb_R5221_ (t);
05318
05319 case FFELEX_typeCOLONCOLON:
05320 ffesta_confirmed ();
05321 if (!ffesta_is_inhibited ())
05322 ffestc_R522start ();
05323 return (ffelexHandler) ffestb_R5221_;
05324 }
05325
05326 case FFELEX_typeNAMES:
05327 if (ffesta_first_kw != FFESTR_firstSAVE)
05328 goto bad_0;
05329 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlSAVE);
05330 switch (ffelex_token_type (t))
05331 {
05332 default:
05333 goto bad_1;
05334
05335 case FFELEX_typeCOMMA:
05336 ffesta_confirmed ();
05337 break;
05338
05339 case FFELEX_typeEOS:
05340 case FFELEX_typeSEMICOLON:
05341 ffesta_confirmed ();
05342 if (*p != '\0')
05343 break;
05344 if (!ffesta_is_inhibited ())
05345 ffestc_R522 ();
05346 return (ffelexHandler) ffesta_zero (t);
05347
05348 case FFELEX_typeSLASH:
05349 ffesta_confirmed ();
05350 if (*p != '\0')
05351 goto bad_i;
05352 if (!ffesta_is_inhibited ())
05353 ffestc_R522start ();
05354 return (ffelexHandler) ffestb_R5221_ (t);
05355
05356 case FFELEX_typeCOLONCOLON:
05357 ffesta_confirmed ();
05358 if (*p != '\0')
05359 goto bad_i;
05360 if (!ffesta_is_inhibited ())
05361 ffestc_R522start ();
05362 return (ffelexHandler) ffestb_R5221_;
05363 }
05364
05365
05366
05367
05368 if (!ffesrc_is_name_init (*p))
05369 goto bad_i;
05370 nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
05371 if (!ffesta_is_inhibited ())
05372 ffestc_R522start ();
05373 next = (ffelexHandler) ffestb_R5221_ (nt);
05374 ffelex_token_kill (nt);
05375 return (ffelexHandler) (*next) (t);
05376
05377 default:
05378 goto bad_0;
05379 }
05380
05381 bad_0:
05382 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "SAVE", ffesta_tokens[0]);
05383 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
05384
05385 bad_1:
05386 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "SAVE", t);
05387 return (ffelexHandler) ffelex_swallow_tokens (t,
05388 (ffelexHandler) ffesta_zero);
05389
05390 bad_i:
05391 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "SAVE", ffesta_tokens[0], i, t);
05392 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
05393 }
05394
05395
05396
05397
05398
05399
05400
05401 static ffelexHandler
05402 ffestb_R5221_ (ffelexToken t)
05403 {
05404 switch (ffelex_token_type (t))
05405 {
05406 case FFELEX_typeNAME:
05407 ffestb_local_.R522.is_cblock = FALSE;
05408 ffesta_tokens[1] = ffelex_token_use (t);
05409 return (ffelexHandler) ffestb_R5224_;
05410
05411 case FFELEX_typeSLASH:
05412 ffestb_local_.R522.is_cblock = TRUE;
05413 return (ffelexHandler) ffestb_R5222_;
05414
05415 default:
05416 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "SAVE", t);
05417 break;
05418 }
05419
05420 if (!ffesta_is_inhibited ())
05421 ffestc_R522finish ();
05422 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
05423 }
05424
05425
05426
05427
05428
05429
05430
05431 static ffelexHandler
05432 ffestb_R5222_ (ffelexToken t)
05433 {
05434 switch (ffelex_token_type (t))
05435 {
05436 case FFELEX_typeNAME:
05437 ffesta_tokens[1] = ffelex_token_use (t);
05438 return (ffelexHandler) ffestb_R5223_;
05439
05440 default:
05441 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "SAVE", t);
05442 break;
05443 }
05444
05445 if (!ffesta_is_inhibited ())
05446 ffestc_R522finish ();
05447 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
05448 }
05449
05450
05451
05452
05453
05454
05455
05456 static ffelexHandler
05457 ffestb_R5223_ (ffelexToken t)
05458 {
05459 switch (ffelex_token_type (t))
05460 {
05461 case FFELEX_typeSLASH:
05462 return (ffelexHandler) ffestb_R5224_;
05463
05464 default:
05465 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "SAVE", t);
05466 break;
05467 }
05468
05469 if (!ffesta_is_inhibited ())
05470 ffestc_R522finish ();
05471 ffelex_token_kill (ffesta_tokens[1]);
05472 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
05473 }
05474
05475
05476
05477
05478
05479
05480
05481 static ffelexHandler
05482 ffestb_R5224_ (ffelexToken t)
05483 {
05484 switch (ffelex_token_type (t))
05485 {
05486 case FFELEX_typeCOMMA:
05487 if (!ffesta_is_inhibited ())
05488 {
05489 if (ffestb_local_.R522.is_cblock)
05490 ffestc_R522item_cblock (ffesta_tokens[1]);
05491 else
05492 ffestc_R522item_object (ffesta_tokens[1]);
05493 }
05494 ffelex_token_kill (ffesta_tokens[1]);
05495 return (ffelexHandler) ffestb_R5221_;
05496
05497 case FFELEX_typeEOS:
05498 case FFELEX_typeSEMICOLON:
05499 if (!ffesta_is_inhibited ())
05500 {
05501 if (ffestb_local_.R522.is_cblock)
05502 ffestc_R522item_cblock (ffesta_tokens[1]);
05503 else
05504 ffestc_R522item_object (ffesta_tokens[1]);
05505 ffestc_R522finish ();
05506 }
05507 ffelex_token_kill (ffesta_tokens[1]);
05508 return (ffelexHandler) ffesta_zero (t);
05509
05510 default:
05511 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "SAVE", t);
05512 break;
05513 }
05514
05515 if (!ffesta_is_inhibited ())
05516 ffestc_R522finish ();
05517 ffelex_token_kill (ffesta_tokens[1]);
05518 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
05519 }
05520
05521
05522
05523
05524
05525
05526
05527
05528 ffelexHandler
05529 ffestb_R528 (ffelexToken t)
05530 {
05531 unsigned const char *p;
05532 ffeTokenLength i;
05533 ffelexToken nt;
05534 ffelexHandler next;
05535
05536 switch (ffelex_token_type (ffesta_tokens[0]))
05537 {
05538 case FFELEX_typeNAME:
05539 if (ffesta_first_kw != FFESTR_firstDATA)
05540 goto bad_0;
05541 switch (ffelex_token_type (t))
05542 {
05543 case FFELEX_typeCOMMA:
05544 case FFELEX_typeEOS:
05545 case FFELEX_typeSEMICOLON:
05546 case FFELEX_typeSLASH:
05547 case FFELEX_typeCOLONCOLON:
05548 ffesta_confirmed ();
05549 goto bad_1;
05550
05551 default:
05552 goto bad_1;
05553
05554 case FFELEX_typeNAME:
05555 ffesta_confirmed ();
05556 break;
05557
05558 case FFELEX_typeOPEN_PAREN:
05559 break;
05560 }
05561 ffestb_local_.data.started = FALSE;
05562 return (ffelexHandler) (*((ffelexHandler)
05563 ffeexpr_lhs (ffesta_output_pool,
05564 FFEEXPR_contextDATA,
05565 (ffeexprCallback) ffestb_R5281_)))
05566 (t);
05567
05568 case FFELEX_typeNAMES:
05569 if (ffesta_first_kw != FFESTR_firstDATA)
05570 goto bad_0;
05571 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlDATA);
05572 switch (ffelex_token_type (t))
05573 {
05574 case FFELEX_typeEOS:
05575 case FFELEX_typeSEMICOLON:
05576 case FFELEX_typeCOLONCOLON:
05577 ffesta_confirmed ();
05578 goto bad_1;
05579
05580 default:
05581 goto bad_1;
05582
05583 case FFELEX_typeOPEN_PAREN:
05584 if (*p == '\0')
05585 {
05586 ffestb_local_.data.started = FALSE;
05587 return (ffelexHandler) (*((ffelexHandler)
05588 ffeexpr_lhs (ffesta_output_pool,
05589 FFEEXPR_contextDATA,
05590 (ffeexprCallback)
05591 ffestb_R5281_)))
05592 (t);
05593 }
05594 break;
05595
05596 case FFELEX_typeCOMMA:
05597 case FFELEX_typeSLASH:
05598 ffesta_confirmed ();
05599 break;
05600 }
05601 if (!ffesrc_is_name_init (*p))
05602 goto bad_i;
05603 ffestb_local_.data.started = FALSE;
05604 nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
05605 next = (ffelexHandler) (*((ffelexHandler)
05606 ffeexpr_lhs (ffesta_output_pool,
05607 FFEEXPR_contextDATA,
05608 (ffeexprCallback) ffestb_R5281_)))
05609 (nt);
05610 ffelex_token_kill (nt);
05611 return (ffelexHandler) (*next) (t);
05612
05613 default:
05614 goto bad_0;
05615 }
05616
05617 bad_0:
05618 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DATA", ffesta_tokens[0]);
05619 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
05620
05621 bad_1:
05622 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DATA", t);
05623 return (ffelexHandler) ffelex_swallow_tokens (t,
05624 (ffelexHandler) ffesta_zero);
05625
05626 bad_i:
05627 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "DATA", ffesta_tokens[0], i, t);
05628 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
05629 }
05630
05631
05632
05633
05634
05635
05636
05637 static ffelexHandler
05638 ffestb_R5281_ (ffelexToken ft, ffebld expr, ffelexToken t)
05639 {
05640 switch (ffelex_token_type (t))
05641 {
05642 case FFELEX_typeCOMMA:
05643 ffesta_confirmed ();
05644 if (expr == NULL)
05645 break;
05646 if (!ffesta_is_inhibited ())
05647 {
05648 if (!ffestb_local_.data.started)
05649 {
05650 ffestc_R528_start ();
05651 ffestb_local_.data.started = TRUE;
05652 }
05653 ffestc_R528_item_object (expr, ft);
05654 }
05655 return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
05656 FFEEXPR_contextDATA,
05657 (ffeexprCallback) ffestb_R5281_);
05658
05659 case FFELEX_typeSLASH:
05660 ffesta_confirmed ();
05661 if (expr == NULL)
05662 break;
05663 if (!ffesta_is_inhibited ())
05664 {
05665 if (!ffestb_local_.data.started)
05666 {
05667 ffestc_R528_start ();
05668 ffestb_local_.data.started = TRUE;
05669 }
05670 ffestc_R528_item_object (expr, ft);
05671 ffestc_R528_item_startvals ();
05672 }
05673 return (ffelexHandler) ffeexpr_rhs
05674 (ffesta_output_pool, FFEEXPR_contextDATA,
05675 (ffeexprCallback) ffestb_R5282_);
05676
05677 default:
05678 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DATA", t);
05679 break;
05680 }
05681
05682 if (ffestb_local_.data.started && !ffesta_is_inhibited ())
05683 ffestc_R528_finish ();
05684 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
05685 }
05686
05687
05688
05689
05690
05691
05692
05693 static ffelexHandler
05694 ffestb_R5282_ (ffelexToken ft, ffebld expr, ffelexToken t)
05695 {
05696 switch (ffelex_token_type (t))
05697 {
05698 case FFELEX_typeCOMMA:
05699 if (expr == NULL)
05700 break;
05701 if (!ffesta_is_inhibited ())
05702 ffestc_R528_item_value (NULL, NULL, expr, ft);
05703 return (ffelexHandler) ffeexpr_rhs
05704 (ffesta_output_pool, FFEEXPR_contextDATA,
05705 (ffeexprCallback) ffestb_R5282_);
05706
05707 case FFELEX_typeASTERISK:
05708 if (expr == NULL)
05709 break;
05710 ffestb_local_.data.expr = ffeexpr_convert (expr, ft, t,
05711 FFEINFO_basictypeINTEGER,
05712 FFEINFO_kindtypeINTEGER1,
05713 0,
05714 FFETARGET_charactersizeNONE,
05715 FFEEXPR_contextLET);
05716 ffesta_tokens[1] = ffelex_token_use (ft);
05717 return (ffelexHandler) ffeexpr_rhs
05718 (ffesta_output_pool, FFEEXPR_contextDATA,
05719 (ffeexprCallback) ffestb_R5283_);
05720
05721 case FFELEX_typeSLASH:
05722 if (expr == NULL)
05723 break;
05724 if (!ffesta_is_inhibited ())
05725 {
05726 ffestc_R528_item_value (NULL, NULL, expr, ft);
05727 ffestc_R528_item_endvals (t);
05728 }
05729 return (ffelexHandler) ffestb_R5284_;
05730
05731 default:
05732 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DATA", t);
05733 break;
05734 }
05735
05736 if (!ffesta_is_inhibited ())
05737 {
05738 ffestc_R528_item_endvals (t);
05739 ffestc_R528_finish ();
05740 }
05741 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
05742 }
05743
05744
05745
05746
05747
05748
05749
05750 static ffelexHandler
05751 ffestb_R5283_ (ffelexToken ft, ffebld expr, ffelexToken t)
05752 {
05753 switch (ffelex_token_type (t))
05754 {
05755 case FFELEX_typeCOMMA:
05756 if (expr == NULL)
05757 break;
05758 if (!ffesta_is_inhibited ())
05759 ffestc_R528_item_value (ffestb_local_.data.expr, ffesta_tokens[1],
05760 expr, ft);
05761 ffelex_token_kill (ffesta_tokens[1]);
05762 return (ffelexHandler) ffeexpr_rhs
05763 (ffesta_output_pool, FFEEXPR_contextDATA,
05764 (ffeexprCallback) ffestb_R5282_);
05765
05766 case FFELEX_typeSLASH:
05767 if (expr == NULL)
05768 break;
05769 if (!ffesta_is_inhibited ())
05770 {
05771 ffestc_R528_item_value (ffestb_local_.data.expr, ffesta_tokens[1],
05772 expr, ft);
05773 ffestc_R528_item_endvals (t);
05774 }
05775 ffelex_token_kill (ffesta_tokens[1]);
05776 return (ffelexHandler) ffestb_R5284_;
05777
05778 default:
05779 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DATA", t);
05780 break;
05781 }
05782
05783 if (!ffesta_is_inhibited ())
05784 {
05785 ffestc_R528_item_endvals (t);
05786 ffestc_R528_finish ();
05787 }
05788 ffelex_token_kill (ffesta_tokens[1]);
05789 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
05790 }
05791
05792
05793
05794
05795
05796
05797
05798 static ffelexHandler
05799 ffestb_R5284_ (ffelexToken t)
05800 {
05801 switch (ffelex_token_type (t))
05802 {
05803 case FFELEX_typeCOMMA:
05804 return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
05805 FFEEXPR_contextDATA,
05806 (ffeexprCallback) ffestb_R5281_);
05807
05808 case FFELEX_typeNAME:
05809 case FFELEX_typeOPEN_PAREN:
05810 return (ffelexHandler) (*((ffelexHandler)
05811 ffeexpr_lhs (ffesta_output_pool,
05812 FFEEXPR_contextDATA,
05813 (ffeexprCallback) ffestb_R5281_)))
05814 (t);
05815
05816 case FFELEX_typeEOS:
05817 case FFELEX_typeSEMICOLON:
05818 if (!ffesta_is_inhibited ())
05819 ffestc_R528_finish ();
05820 return (ffelexHandler) ffesta_zero (t);
05821
05822 default:
05823 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DATA", t);
05824 break;
05825 }
05826
05827 if (!ffesta_is_inhibited ())
05828 ffestc_R528_finish ();
05829 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
05830 }
05831
05832
05833
05834
05835
05836
05837
05838
05839 ffelexHandler
05840 ffestb_R537 (ffelexToken t)
05841 {
05842 switch (ffelex_token_type (ffesta_tokens[0]))
05843 {
05844 case FFELEX_typeNAME:
05845 if (ffesta_first_kw != FFESTR_firstPARAMETER)
05846 goto bad_0;
05847 break;
05848
05849 case FFELEX_typeNAMES:
05850 if (ffesta_first_kw != FFESTR_firstPARAMETER)
05851 goto bad_0;
05852 if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlPARAMETER)
05853 goto bad_0;
05854 break;
05855
05856 default:
05857 goto bad_0;
05858 }
05859
05860 switch (ffelex_token_type (t))
05861 {
05862 case FFELEX_typeOPEN_PAREN:
05863 break;
05864
05865 case FFELEX_typeEOS:
05866 case FFELEX_typeSEMICOLON:
05867 case FFELEX_typeCOMMA:
05868 case FFELEX_typeCOLONCOLON:
05869 ffesta_confirmed ();
05870 goto bad_1;
05871
05872 default:
05873 goto bad_1;
05874 }
05875
05876 ffestb_local_.parameter.started = FALSE;
05877 return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
05878 FFEEXPR_contextPARAMETER,
05879 (ffeexprCallback) ffestb_R5371_);
05880
05881 bad_0:
05882 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PARAMETER", ffesta_tokens[0]);
05883 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
05884
05885 bad_1:
05886 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PARAMETER", t);
05887 return (ffelexHandler) ffelex_swallow_tokens (t,
05888 (ffelexHandler) ffesta_zero);
05889 }
05890
05891
05892
05893
05894
05895
05896
05897 static ffelexHandler
05898 ffestb_R5371_ (ffelexToken ft, ffebld expr, ffelexToken t)
05899 {
05900 ffestb_local_.parameter.expr = expr;
05901
05902 switch (ffelex_token_type (t))
05903 {
05904 case FFELEX_typeEQUALS:
05905 ffesta_confirmed ();
05906 if (expr == NULL)
05907 break;
05908 ffesta_tokens[1] = ffelex_token_use (ft);
05909 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
05910 FFEEXPR_contextPARAMETER, (ffeexprCallback) ffestb_R5372_);
05911
05912 default:
05913 break;
05914 }
05915
05916 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PARAMETER", t);
05917 if (ffestb_local_.parameter.started)
05918 ffestc_R537_finish ();
05919 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
05920 }
05921
05922
05923
05924
05925
05926
05927
05928 static ffelexHandler
05929 ffestb_R5372_ (ffelexToken ft, ffebld expr, ffelexToken t)
05930 {
05931 switch (ffelex_token_type (t))
05932 {
05933 case FFELEX_typeCOMMA:
05934 if (expr == NULL)
05935 break;
05936 if (!ffesta_is_inhibited ())
05937 {
05938 if (!ffestb_local_.parameter.started)
05939 {
05940 ffestc_R537_start ();
05941 ffestb_local_.parameter.started = TRUE;
05942 }
05943 ffestc_R537_item (ffestb_local_.parameter.expr, ffesta_tokens[1],
05944 expr, ft);
05945 }
05946 ffelex_token_kill (ffesta_tokens[1]);
05947 return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
05948 FFEEXPR_contextPARAMETER,
05949 (ffeexprCallback) ffestb_R5371_);
05950
05951 case FFELEX_typeCLOSE_PAREN:
05952 if (expr == NULL)
05953 break;
05954 if (!ffesta_is_inhibited ())
05955 {
05956 if (!ffestb_local_.parameter.started)
05957 {
05958 ffestc_R537_start ();
05959 ffestb_local_.parameter.started = TRUE;
05960 }
05961 ffestc_R537_item (ffestb_local_.parameter.expr, ffesta_tokens[1],
05962 expr, ft);
05963 ffestc_R537_finish ();
05964 }
05965 ffelex_token_kill (ffesta_tokens[1]);
05966 return (ffelexHandler) ffestb_R5373_;
05967
05968 default:
05969 break;
05970 }
05971
05972 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PARAMETER", t);
05973 if (ffestb_local_.parameter.started)
05974 ffestc_R537_finish ();
05975 ffelex_token_kill (ffesta_tokens[1]);
05976 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
05977 }
05978
05979
05980
05981
05982
05983
05984
05985
05986 static ffelexHandler
05987 ffestb_R5373_ (ffelexToken t)
05988 {
05989 switch (ffelex_token_type (t))
05990 {
05991 case FFELEX_typeEOS:
05992 case FFELEX_typeSEMICOLON:
05993 return (ffelexHandler) ffesta_zero (t);
05994
05995 default:
05996 break;
05997 }
05998
05999 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PARAMETER", t);
06000 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
06001 }
06002
06003
06004
06005
06006
06007
06008
06009
06010 ffelexHandler
06011 ffestb_R542 (ffelexToken t)
06012 {
06013 const char *p;
06014 ffeTokenLength i;
06015
06016 switch (ffelex_token_type (ffesta_tokens[0]))
06017 {
06018 case FFELEX_typeNAME:
06019 if (ffesta_first_kw != FFESTR_firstNAMELIST)
06020 goto bad_0;
06021 break;
06022
06023 case FFELEX_typeNAMES:
06024 if (ffesta_first_kw != FFESTR_firstNAMELIST)
06025 goto bad_0;
06026 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlNAMELIST);
06027 if (*p != '\0')
06028 goto bad_i;
06029 break;
06030
06031 default:
06032 goto bad_0;
06033 }
06034
06035 switch (ffelex_token_type (t))
06036 {
06037 case FFELEX_typeCOMMA:
06038 case FFELEX_typeEOS:
06039 case FFELEX_typeSEMICOLON:
06040 case FFELEX_typeCOLONCOLON:
06041 ffesta_confirmed ();
06042 goto bad_1;
06043
06044 default:
06045 goto bad_1;
06046
06047 case FFELEX_typeSLASH:
06048 break;
06049 }
06050
06051 ffesta_confirmed ();
06052 if (!ffesta_is_inhibited ())
06053 ffestc_R542_start ();
06054 return (ffelexHandler) ffestb_R5421_;
06055
06056 bad_0:
06057 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "NAMELIST", ffesta_tokens[0]);
06058 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
06059
06060 bad_1:
06061 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "NAMELIST", t);
06062 return (ffelexHandler) ffelex_swallow_tokens (t,
06063 (ffelexHandler) ffesta_zero);
06064
06065 bad_i:
06066 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "NAMELIST", ffesta_tokens[0], i, t);
06067 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
06068 }
06069
06070
06071
06072
06073
06074
06075
06076 static ffelexHandler
06077 ffestb_R5421_ (ffelexToken t)
06078 {
06079 switch (ffelex_token_type (t))
06080 {
06081 case FFELEX_typeNAME:
06082 if (!ffesta_is_inhibited ())
06083 ffestc_R542_item_nlist (t);
06084 return (ffelexHandler) ffestb_R5422_;
06085
06086 default:
06087 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "NAMELIST", t);
06088 break;
06089 }
06090
06091 if (!ffesta_is_inhibited ())
06092 ffestc_R542_finish ();
06093 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
06094 }
06095
06096
06097
06098
06099
06100
06101
06102 static ffelexHandler
06103 ffestb_R5422_ (ffelexToken t)
06104 {
06105 switch (ffelex_token_type (t))
06106 {
06107 case FFELEX_typeSLASH:
06108 return (ffelexHandler) ffestb_R5423_;
06109
06110 default:
06111 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "NAMELIST", t);
06112 break;
06113 }
06114
06115 if (!ffesta_is_inhibited ())
06116 ffestc_R542_finish ();
06117 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
06118 }
06119
06120
06121
06122
06123
06124
06125
06126 static ffelexHandler
06127 ffestb_R5423_ (ffelexToken t)
06128 {
06129 switch (ffelex_token_type (t))
06130 {
06131 case FFELEX_typeNAME:
06132 if (!ffesta_is_inhibited ())
06133 ffestc_R542_item_nitem (t);
06134 return (ffelexHandler) ffestb_R5424_;
06135
06136 default:
06137 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "NAMELIST", t);
06138 break;
06139 }
06140
06141 if (!ffesta_is_inhibited ())
06142 ffestc_R542_finish ();
06143 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
06144 }
06145
06146
06147
06148
06149
06150
06151
06152 static ffelexHandler
06153 ffestb_R5424_ (ffelexToken t)
06154 {
06155 switch (ffelex_token_type (t))
06156 {
06157 case FFELEX_typeCOMMA:
06158 return (ffelexHandler) ffestb_R5425_;
06159
06160 case FFELEX_typeEOS:
06161 case FFELEX_typeSEMICOLON:
06162 if (!ffesta_is_inhibited ())
06163 ffestc_R542_finish ();
06164 return (ffelexHandler) ffesta_zero (t);
06165
06166 case FFELEX_typeSLASH:
06167 return (ffelexHandler) ffestb_R5421_;
06168
06169 default:
06170 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "NAMELIST", t);
06171 break;
06172 }
06173
06174 if (!ffesta_is_inhibited ())
06175 ffestc_R542_finish ();
06176 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
06177 }
06178
06179
06180
06181
06182
06183
06184
06185 static ffelexHandler
06186 ffestb_R5425_ (ffelexToken t)
06187 {
06188 switch (ffelex_token_type (t))
06189 {
06190 case FFELEX_typeNAME:
06191 if (!ffesta_is_inhibited ())
06192 ffestc_R542_item_nitem (t);
06193 return (ffelexHandler) ffestb_R5424_;
06194
06195 case FFELEX_typeSLASH:
06196 return (ffelexHandler) ffestb_R5421_;
06197
06198 default:
06199 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "NAMELIST", t);
06200 break;
06201 }
06202
06203 if (!ffesta_is_inhibited ())
06204 ffestc_R542_finish ();
06205 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
06206 }
06207
06208
06209
06210
06211
06212
06213
06214
06215 ffelexHandler
06216 ffestb_R544 (ffelexToken t)
06217 {
06218 switch (ffelex_token_type (ffesta_tokens[0]))
06219 {
06220 case FFELEX_typeNAME:
06221 if (ffesta_first_kw != FFESTR_firstEQUIVALENCE)
06222 goto bad_0;
06223 break;
06224
06225 case FFELEX_typeNAMES:
06226 if (ffesta_first_kw != FFESTR_firstEQUIVALENCE)
06227 goto bad_0;
06228 if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlEQUIVALENCE)
06229 goto bad_0;
06230 break;
06231
06232 default:
06233 goto bad_0;
06234 }
06235
06236 switch (ffelex_token_type (t))
06237 {
06238 case FFELEX_typeOPEN_PAREN:
06239 break;
06240
06241 case FFELEX_typeEOS:
06242 case FFELEX_typeSEMICOLON:
06243 case FFELEX_typeCOMMA:
06244 case FFELEX_typeCOLONCOLON:
06245 ffesta_confirmed ();
06246 goto bad_1;
06247
06248 default:
06249 goto bad_1;
06250 }
06251
06252 ffestb_local_.equivalence.started = FALSE;
06253 return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
06254 FFEEXPR_contextEQUIVALENCE,
06255 (ffeexprCallback) ffestb_R5441_);
06256
06257 bad_0:
06258 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "EQUIVALENCE", ffesta_tokens[0]);
06259 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
06260
06261 bad_1:
06262 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "EQUIVALENCE", t);
06263 return (ffelexHandler) ffelex_swallow_tokens (t,
06264 (ffelexHandler) ffesta_zero);
06265 }
06266
06267
06268
06269
06270
06271
06272
06273 static ffelexHandler
06274 ffestb_R5441_ (ffelexToken ft, ffebld expr, ffelexToken t)
06275 {
06276 switch (ffelex_token_type (t))
06277 {
06278 case FFELEX_typeCOMMA:
06279 if (expr == NULL)
06280 break;
06281 ffestb_local_.equivalence.exprs = ffestt_exprlist_create ();
06282 ffestt_exprlist_append (ffestb_local_.equivalence.exprs, expr,
06283 ffelex_token_use (ft));
06284 return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
06285 FFEEXPR_contextEQUIVALENCE,
06286 (ffeexprCallback) ffestb_R5442_);
06287
06288 default:
06289 break;
06290 }
06291
06292 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "EQUIVALENCE", t);
06293 if (ffestb_local_.equivalence.started)
06294 ffestc_R544_finish ();
06295 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
06296 }
06297
06298
06299
06300
06301
06302
06303
06304
06305
06306 static ffelexHandler
06307 ffestb_R5442_ (ffelexToken ft, ffebld expr, ffelexToken t)
06308 {
06309 switch (ffelex_token_type (t))
06310 {
06311 case FFELEX_typeCOMMA:
06312 if (expr == NULL)
06313 break;
06314 ffestt_exprlist_append (ffestb_local_.equivalence.exprs, expr,
06315 ffelex_token_use (ft));
06316 return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
06317 FFEEXPR_contextEQUIVALENCE,
06318 (ffeexprCallback) ffestb_R5442_);
06319
06320 case FFELEX_typeCLOSE_PAREN:
06321 if (expr == NULL)
06322 break;
06323 ffestt_exprlist_append (ffestb_local_.equivalence.exprs, expr,
06324 ffelex_token_use (ft));
06325 return (ffelexHandler) ffestb_R5443_;
06326
06327 default:
06328 break;
06329 }
06330
06331 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "EQUIVALENCE", t);
06332 if (ffestb_local_.equivalence.started)
06333 ffestc_R544_finish ();
06334 ffestt_exprlist_kill (ffestb_local_.equivalence.exprs);
06335 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
06336 }
06337
06338
06339
06340
06341
06342
06343
06344 static ffelexHandler
06345 ffestb_R5443_ (ffelexToken t)
06346 {
06347 switch (ffelex_token_type (t))
06348 {
06349 case FFELEX_typeCOMMA:
06350 ffesta_confirmed ();
06351 if (!ffesta_is_inhibited ())
06352 {
06353 if (!ffestb_local_.equivalence.started)
06354 {
06355 ffestc_R544_start ();
06356 ffestb_local_.equivalence.started = TRUE;
06357 }
06358 ffestc_R544_item (ffestb_local_.equivalence.exprs);
06359 }
06360 ffestt_exprlist_kill (ffestb_local_.equivalence.exprs);
06361 return (ffelexHandler) ffestb_R5444_;
06362
06363 case FFELEX_typeEOS:
06364 case FFELEX_typeSEMICOLON:
06365 ffesta_confirmed ();
06366 if (!ffesta_is_inhibited ())
06367 {
06368 if (!ffestb_local_.equivalence.started)
06369 {
06370 ffestc_R544_start ();
06371 ffestb_local_.equivalence.started = TRUE;
06372 }
06373 ffestc_R544_item (ffestb_local_.equivalence.exprs);
06374 ffestc_R544_finish ();
06375 }
06376 ffestt_exprlist_kill (ffestb_local_.equivalence.exprs);
06377 return (ffelexHandler) ffesta_zero (t);
06378
06379 default:
06380 break;
06381 }
06382
06383 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "EQUIVALENCE", t);
06384 if (ffestb_local_.equivalence.started)
06385 ffestc_R544_finish ();
06386 ffestt_exprlist_kill (ffestb_local_.equivalence.exprs);
06387 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
06388 }
06389
06390
06391
06392
06393
06394
06395
06396 static ffelexHandler
06397 ffestb_R5444_ (ffelexToken t)
06398 {
06399 switch (ffelex_token_type (t))
06400 {
06401 case FFELEX_typeOPEN_PAREN:
06402 return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
06403 FFEEXPR_contextEQUIVALENCE,
06404 (ffeexprCallback) ffestb_R5441_);
06405
06406 default:
06407 break;
06408 }
06409
06410 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "EQUIVALENCE", t);
06411 if (ffestb_local_.equivalence.started)
06412 ffestc_R544_finish ();
06413 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
06414 }
06415
06416
06417
06418
06419
06420
06421
06422
06423 ffelexHandler
06424 ffestb_R834 (ffelexToken t)
06425 {
06426 ffeTokenLength i;
06427 unsigned const char *p;
06428
06429 switch (ffelex_token_type (ffesta_tokens[0]))
06430 {
06431 case FFELEX_typeNAME:
06432 if (ffesta_first_kw != FFESTR_firstCYCLE)
06433 goto bad_0;
06434 switch (ffelex_token_type (t))
06435 {
06436 case FFELEX_typeCOMMA:
06437 case FFELEX_typeCOLONCOLON:
06438 ffesta_confirmed ();
06439 goto bad_1;
06440
06441 default:
06442 goto bad_1;
06443
06444 case FFELEX_typeNAME:
06445 ffesta_confirmed ();
06446 ffesta_tokens[1] = ffelex_token_use (t);
06447 return (ffelexHandler) ffestb_R8341_;
06448
06449 case FFELEX_typeEOS:
06450 case FFELEX_typeSEMICOLON:
06451 ffesta_confirmed ();
06452 ffesta_tokens[1] = NULL;
06453 return (ffelexHandler) ffestb_R8341_ (t);
06454 }
06455
06456 case FFELEX_typeNAMES:
06457 if (ffesta_first_kw != FFESTR_firstCYCLE)
06458 goto bad_0;
06459 switch (ffelex_token_type (t))
06460 {
06461 default:
06462 goto bad_1;
06463
06464 case FFELEX_typeEOS:
06465 case FFELEX_typeSEMICOLON:
06466 break;
06467 }
06468 ffesta_confirmed ();
06469 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlCYCLE);
06470 if (*p == '\0')
06471 {
06472 ffesta_tokens[1] = NULL;
06473 }
06474 else
06475 {
06476 if (!ffesrc_is_name_init (*p))
06477 goto bad_i;
06478 ffesta_tokens[1]
06479 = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
06480 }
06481 return (ffelexHandler) ffestb_R8341_ (t);
06482
06483 default:
06484 goto bad_0;
06485 }
06486
06487 bad_0:
06488 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CYCLE", ffesta_tokens[0]);
06489 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
06490
06491 bad_1:
06492 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CYCLE", t);
06493 return (ffelexHandler) ffelex_swallow_tokens (t,
06494 (ffelexHandler) ffesta_zero);
06495
06496 bad_i:
06497 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "CYCLE", ffesta_tokens[0], i, t);
06498 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
06499 }
06500
06501
06502
06503
06504
06505
06506
06507 static ffelexHandler
06508 ffestb_R8341_ (ffelexToken t)
06509 {
06510 switch (ffelex_token_type (t))
06511 {
06512 case FFELEX_typeEOS:
06513 case FFELEX_typeSEMICOLON:
06514 ffesta_confirmed ();
06515 if (!ffesta_is_inhibited ())
06516 ffestc_R834 (ffesta_tokens[1]);
06517 if (ffesta_tokens[1] != NULL)
06518 ffelex_token_kill (ffesta_tokens[1]);
06519 return (ffelexHandler) ffesta_zero (t);
06520
06521 default:
06522 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CYCLE", t);
06523 break;
06524 }
06525
06526 if (ffesta_tokens[1] != NULL)
06527 ffelex_token_kill (ffesta_tokens[1]);
06528 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
06529 }
06530
06531
06532
06533
06534
06535
06536
06537
06538 ffelexHandler
06539 ffestb_R835 (ffelexToken t)
06540 {
06541 ffeTokenLength i;
06542 unsigned const char *p;
06543
06544 switch (ffelex_token_type (ffesta_tokens[0]))
06545 {
06546 case FFELEX_typeNAME:
06547 if (ffesta_first_kw != FFESTR_firstEXIT)
06548 goto bad_0;
06549 switch (ffelex_token_type (t))
06550 {
06551 case FFELEX_typeCOMMA:
06552 case FFELEX_typeCOLONCOLON:
06553 ffesta_confirmed ();
06554 goto bad_1;
06555
06556 default:
06557 goto bad_1;
06558
06559 case FFELEX_typeNAME:
06560 ffesta_confirmed ();
06561 ffesta_tokens[1] = ffelex_token_use (t);
06562 return (ffelexHandler) ffestb_R8351_;
06563
06564 case FFELEX_typeEOS:
06565 case FFELEX_typeSEMICOLON:
06566 ffesta_confirmed ();
06567 ffesta_tokens[1] = NULL;
06568 return (ffelexHandler) ffestb_R8351_ (t);
06569 }
06570
06571 case FFELEX_typeNAMES:
06572 if (ffesta_first_kw != FFESTR_firstEXIT)
06573 goto bad_0;
06574 switch (ffelex_token_type (t))
06575 {
06576 default:
06577 goto bad_1;
06578
06579 case FFELEX_typeEOS:
06580 case FFELEX_typeSEMICOLON:
06581 break;
06582 }
06583 ffesta_confirmed ();
06584 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlEXIT);
06585 if (*p == '\0')
06586 {
06587 ffesta_tokens[1] = NULL;
06588 }
06589 else
06590 {
06591 if (!ffesrc_is_name_init (*p))
06592 goto bad_i;
06593 ffesta_tokens[1]
06594 = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
06595 }
06596 return (ffelexHandler) ffestb_R8351_ (t);
06597
06598 default:
06599 goto bad_0;
06600 }
06601
06602 bad_0:
06603 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "EXIT", ffesta_tokens[0]);
06604 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
06605
06606 bad_1:
06607 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "EXIT", t);
06608 return (ffelexHandler) ffelex_swallow_tokens (t,
06609 (ffelexHandler) ffesta_zero);
06610
06611 bad_i:
06612 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "EXIT", ffesta_tokens[0], i, t);
06613 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
06614 }
06615
06616
06617
06618
06619
06620
06621
06622 static ffelexHandler
06623 ffestb_R8351_ (ffelexToken t)
06624 {
06625 switch (ffelex_token_type (t))
06626 {
06627 case FFELEX_typeEOS:
06628 case FFELEX_typeSEMICOLON:
06629 ffesta_confirmed ();
06630 if (!ffesta_is_inhibited ())
06631 ffestc_R835 (ffesta_tokens[1]);
06632 if (ffesta_tokens[1] != NULL)
06633 ffelex_token_kill (ffesta_tokens[1]);
06634 return (ffelexHandler) ffesta_zero (t);
06635
06636 default:
06637 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "EXIT", t);
06638 break;
06639 }
06640
06641 if (ffesta_tokens[1] != NULL)
06642 ffelex_token_kill (ffesta_tokens[1]);
06643 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
06644 }
06645
06646
06647
06648
06649
06650
06651
06652
06653 ffelexHandler
06654 ffestb_R838 (ffelexToken t)
06655 {
06656 unsigned const char *p;
06657 ffeTokenLength i;
06658 ffelexHandler next;
06659 ffelexToken et;
06660
06661 switch (ffelex_token_type (ffesta_tokens[0]))
06662 {
06663 case FFELEX_typeNAME:
06664 if (ffesta_first_kw != FFESTR_firstASSIGN)
06665 goto bad_0;
06666 switch (ffelex_token_type (t))
06667 {
06668 case FFELEX_typeEOS:
06669 case FFELEX_typeSEMICOLON:
06670 case FFELEX_typeCOMMA:
06671 case FFELEX_typeCOLONCOLON:
06672 ffesta_confirmed ();
06673 goto bad_1;
06674
06675 default:
06676 goto bad_1;
06677
06678 case FFELEX_typeNUMBER:
06679 break;
06680 }
06681 ffesta_tokens[1] = ffelex_token_use (t);
06682 ffesta_confirmed ();
06683 return (ffelexHandler) ffestb_R8381_;
06684
06685 case FFELEX_typeNAMES:
06686 if (ffesta_first_kw != FFESTR_firstASSIGN)
06687 goto bad_0;
06688
06689 switch (ffelex_token_type (t))
06690 {
06691 case FFELEX_typeEOS:
06692 case FFELEX_typeSEMICOLON:
06693 ffesta_confirmed ();
06694
06695 case FFELEX_typePERCENT:
06696 case FFELEX_typeOPEN_PAREN:
06697 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlASSIGN);
06698 if (! ISDIGIT (*p))
06699 goto bad_i;
06700 ffesta_tokens[1]
06701 = ffelex_token_number_from_names (ffesta_tokens[0], i);
06702 p += ffelex_token_length (ffesta_tokens[1]);
06703 i += ffelex_token_length (ffesta_tokens[1]);
06704 if (!ffesrc_char_match_init (*p, 'T', 't')
06705 || (++i, !ffesrc_char_match_noninit (*++p, 'O', 'o')))
06706 {
06707 bad_i_1:
06708 ffelex_token_kill (ffesta_tokens[1]);
06709 goto bad_i;
06710 }
06711 ++p, ++i;
06712 if (!ffesrc_is_name_init (*p))
06713 goto bad_i_1;
06714 et = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
06715 next = (ffelexHandler)
06716 (*((ffelexHandler)
06717 ffeexpr_lhs (ffesta_output_pool,
06718 FFEEXPR_contextASSIGN,
06719 (ffeexprCallback)
06720 ffestb_R8383_)))
06721 (et);
06722 ffelex_token_kill (et);
06723 return (ffelexHandler) (*next) (t);
06724
06725 case FFELEX_typeCOMMA:
06726 case FFELEX_typeCOLONCOLON:
06727 ffesta_confirmed ();
06728 goto bad_1;
06729
06730 default:
06731 goto bad_1;
06732 }
06733
06734 default:
06735 goto bad_0;
06736 }
06737
06738 bad_0:
06739 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ASSIGN", ffesta_tokens[0]);
06740 return (ffelexHandler) ffelex_swallow_tokens (t,
06741 (ffelexHandler) ffesta_zero);
06742
06743 bad_1:
06744 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ASSIGN", t);
06745 return (ffelexHandler) ffelex_swallow_tokens (t,
06746 (ffelexHandler) ffesta_zero);
06747
06748 bad_i:
06749 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "ASSIGN", ffesta_tokens[0], i, t);
06750 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
06751 }
06752
06753
06754
06755
06756
06757
06758
06759 static ffelexHandler
06760 ffestb_R8381_ (ffelexToken t)
06761 {
06762 if ((ffelex_token_type (t) == FFELEX_typeNAME)
06763 && (ffesrc_strcmp_2c (ffe_case_match (), ffelex_token_text (t), "TO", "to",
06764 "To") == 0))
06765 {
06766 return (ffelexHandler) ffestb_R8382_;
06767 }
06768
06769 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ASSIGN", t);
06770 if (ffelex_token_type (t) == FFELEX_typeNAME)
06771 return (ffelexHandler) ffestb_R8382_ (t);
06772
06773 ffelex_token_kill (ffesta_tokens[1]);
06774 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
06775 }
06776
06777
06778
06779
06780
06781
06782
06783
06784 static ffelexHandler
06785 ffestb_R8382_ (ffelexToken t)
06786 {
06787 if (ffelex_token_type (t) == FFELEX_typeNAME)
06788 {
06789 return (ffelexHandler)
06790 (*((ffelexHandler)
06791 ffeexpr_lhs (ffesta_output_pool, FFEEXPR_contextASSIGN,
06792 (ffeexprCallback) ffestb_R8383_)))
06793 (t);
06794 }
06795
06796 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ASSIGN", t);
06797 ffelex_token_kill (ffesta_tokens[1]);
06798 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
06799 }
06800
06801
06802
06803
06804
06805
06806
06807 static ffelexHandler
06808 ffestb_R8383_ (ffelexToken ft, ffebld expr, ffelexToken t)
06809 {
06810 switch (ffelex_token_type (t))
06811 {
06812 case FFELEX_typeEOS:
06813 case FFELEX_typeSEMICOLON:
06814 ffesta_confirmed ();
06815 if (expr == NULL)
06816 break;
06817 if (!ffesta_is_inhibited ())
06818 ffestc_R838 (ffesta_tokens[1], expr, ft);
06819 ffelex_token_kill (ffesta_tokens[1]);
06820 return (ffelexHandler) ffesta_zero (t);
06821
06822 default:
06823 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ASSIGN", t);
06824 break;
06825 }
06826
06827 ffelex_token_kill (ffesta_tokens[1]);
06828 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
06829 }
06830
06831
06832
06833
06834
06835
06836
06837
06838 ffelexHandler
06839 ffestb_R840 (ffelexToken t)
06840 {
06841 switch (ffelex_token_type (ffesta_tokens[0]))
06842 {
06843 case FFELEX_typeNAME:
06844 if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlIF)
06845 goto bad_0;
06846 if (ffesta_first_kw != FFESTR_firstIF)
06847 goto bad_0;
06848 break;
06849
06850 case FFELEX_typeNAMES:
06851 if (ffesta_first_kw != FFESTR_firstIF)
06852 goto bad_0;
06853 break;
06854
06855 default:
06856 goto bad_0;
06857 }
06858
06859 switch (ffelex_token_type (t))
06860 {
06861 case FFELEX_typeOPEN_PAREN:
06862 break;
06863
06864 default:
06865 goto bad_1;
06866 }
06867
06868 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool, FFEEXPR_contextARITHIF,
06869 (ffeexprCallback) ffestb_R8401_);
06870
06871 bad_0:
06872 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "arithmetic-IF", ffesta_tokens[0]);
06873 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
06874
06875 bad_1:
06876 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "arithmetic-IF", t);
06877 return (ffelexHandler) ffelex_swallow_tokens (t,
06878 (ffelexHandler) ffesta_zero);
06879 }
06880
06881
06882
06883
06884
06885
06886
06887 static ffelexHandler
06888 ffestb_R8401_ (ffelexToken ft, ffebld expr, ffelexToken t)
06889 {
06890 ffestb_local_.if_stmt.expr = expr;
06891
06892 switch (ffelex_token_type (t))
06893 {
06894 case FFELEX_typeCLOSE_PAREN:
06895 if (expr == NULL)
06896 break;
06897 ffesta_tokens[1] = ffelex_token_use (ft);
06898 ffelex_set_names (TRUE);
06899 return (ffelexHandler) ffestb_R8402_;
06900
06901 default:
06902 break;
06903 }
06904
06905 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "arithmetic-IF", t);
06906 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
06907 }
06908
06909
06910
06911
06912
06913
06914
06915 static ffelexHandler
06916 ffestb_R8402_ (ffelexToken t)
06917 {
06918 ffelex_set_names (FALSE);
06919
06920 switch (ffelex_token_type (t))
06921 {
06922 case FFELEX_typeNUMBER:
06923 ffesta_confirmed ();
06924 ffesta_tokens[2] = ffelex_token_use (t);
06925 return (ffelexHandler) ffestb_R8403_;
06926
06927 default:
06928 break;
06929 }
06930
06931 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "arithmetic-IF", t);
06932 ffelex_token_kill (ffesta_tokens[1]);
06933 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
06934 }
06935
06936
06937
06938
06939
06940
06941
06942 static ffelexHandler
06943 ffestb_R8403_ (ffelexToken t)
06944 {
06945 switch (ffelex_token_type (t))
06946 {
06947 case FFELEX_typeCOMMA:
06948 return (ffelexHandler) ffestb_R8404_;
06949
06950 default:
06951 break;
06952 }
06953
06954 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "arithmetic-IF", t);
06955 ffelex_token_kill (ffesta_tokens[1]);
06956 ffelex_token_kill (ffesta_tokens[2]);
06957 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
06958 }
06959
06960
06961
06962
06963
06964
06965
06966 static ffelexHandler
06967 ffestb_R8404_ (ffelexToken t)
06968 {
06969 switch (ffelex_token_type (t))
06970 {
06971 case FFELEX_typeNUMBER:
06972 ffesta_tokens[3] = ffelex_token_use (t);
06973 return (ffelexHandler) ffestb_R8405_;
06974
06975 default:
06976 break;
06977 }
06978
06979 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "arithmetic-IF", t);
06980 ffelex_token_kill (ffesta_tokens[1]);
06981 ffelex_token_kill (ffesta_tokens[2]);
06982 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
06983 }
06984
06985
06986
06987
06988
06989
06990
06991 static ffelexHandler
06992 ffestb_R8405_ (ffelexToken t)
06993 {
06994 switch (ffelex_token_type (t))
06995 {
06996 case FFELEX_typeCOMMA:
06997 return (ffelexHandler) ffestb_R8406_;
06998
06999 default:
07000 break;
07001 }
07002
07003 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "arithmetic-IF", t);
07004 ffelex_token_kill (ffesta_tokens[1]);
07005 ffelex_token_kill (ffesta_tokens[2]);
07006 ffelex_token_kill (ffesta_tokens[3]);
07007 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
07008 }
07009
07010
07011
07012
07013
07014
07015
07016 static ffelexHandler
07017 ffestb_R8406_ (ffelexToken t)
07018 {
07019 switch (ffelex_token_type (t))
07020 {
07021 case FFELEX_typeNUMBER:
07022 ffesta_tokens[4] = ffelex_token_use (t);
07023 return (ffelexHandler) ffestb_R8407_;
07024
07025 default:
07026 break;
07027 }
07028
07029 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "arithmetic-IF", t);
07030 ffelex_token_kill (ffesta_tokens[1]);
07031 ffelex_token_kill (ffesta_tokens[2]);
07032 ffelex_token_kill (ffesta_tokens[3]);
07033 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
07034 }
07035
07036
07037
07038
07039
07040
07041
07042
07043 static ffelexHandler
07044 ffestb_R8407_ (ffelexToken t)
07045 {
07046 switch (ffelex_token_type (t))
07047 {
07048 case FFELEX_typeEOS:
07049 case FFELEX_typeSEMICOLON:
07050 if (!ffesta_is_inhibited ())
07051 ffestc_R840 (ffestb_local_.if_stmt.expr, ffesta_tokens[1],
07052 ffesta_tokens[2], ffesta_tokens[3], ffesta_tokens[4]);
07053 ffelex_token_kill (ffesta_tokens[1]);
07054 ffelex_token_kill (ffesta_tokens[2]);
07055 ffelex_token_kill (ffesta_tokens[3]);
07056 ffelex_token_kill (ffesta_tokens[4]);
07057 return (ffelexHandler) ffesta_zero (t);
07058
07059 default:
07060 break;
07061 }
07062
07063 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "arithmetic-IF", t);
07064 ffelex_token_kill (ffesta_tokens[1]);
07065 ffelex_token_kill (ffesta_tokens[2]);
07066 ffelex_token_kill (ffesta_tokens[3]);
07067 ffelex_token_kill (ffesta_tokens[4]);
07068 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
07069 }
07070
07071
07072
07073
07074
07075
07076
07077
07078 ffelexHandler
07079 ffestb_R841 (ffelexToken t)
07080 {
07081 const char *p;
07082 ffeTokenLength i;
07083
07084 switch (ffelex_token_type (ffesta_tokens[0]))
07085 {
07086 case FFELEX_typeNAME:
07087 if (ffesta_first_kw != FFESTR_firstCONTINUE)
07088 goto bad_0;
07089 break;
07090
07091 case FFELEX_typeNAMES:
07092 if (ffesta_first_kw != FFESTR_firstCONTINUE)
07093 goto bad_0;
07094 if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlCONTINUE)
07095 {
07096 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlCONTINUE);
07097 goto bad_i;
07098 }
07099 break;
07100
07101 default:
07102 goto bad_0;
07103 }
07104
07105 switch (ffelex_token_type (t))
07106 {
07107 case FFELEX_typeEOS:
07108 case FFELEX_typeSEMICOLON:
07109 ffesta_confirmed ();
07110 if (!ffesta_is_inhibited ())
07111 ffestc_R841 ();
07112 return (ffelexHandler) ffesta_zero (t);
07113
07114 case FFELEX_typeCOMMA:
07115 case FFELEX_typeCOLONCOLON:
07116 ffesta_confirmed ();
07117 goto bad_1;
07118
07119 default:
07120 goto bad_1;
07121 }
07122
07123 bad_0:
07124 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CONTINUE", ffesta_tokens[0]);
07125 return (ffelexHandler) ffelex_swallow_tokens (t,
07126 (ffelexHandler) ffesta_zero);
07127
07128 bad_1:
07129 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CONTINUE", t);
07130 return (ffelexHandler) ffelex_swallow_tokens (t,
07131 (ffelexHandler) ffesta_zero);
07132
07133 bad_i:
07134 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "CONTINUE", ffesta_tokens[0], i, t);
07135 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
07136 }
07137
07138
07139
07140
07141
07142
07143
07144
07145 ffelexHandler
07146 ffestb_R1102 (ffelexToken t)
07147 {
07148 ffeTokenLength i;
07149 unsigned const char *p;
07150
07151 switch (ffelex_token_type (ffesta_tokens[0]))
07152 {
07153 case FFELEX_typeNAME:
07154 if (ffesta_first_kw != FFESTR_firstPROGRAM)
07155 goto bad_0;
07156 switch (ffelex_token_type (t))
07157 {
07158 case FFELEX_typeEOS:
07159 case FFELEX_typeSEMICOLON:
07160 case FFELEX_typeCOMMA:
07161 case FFELEX_typeCOLONCOLON:
07162 ffesta_confirmed ();
07163 goto bad_1;
07164
07165 default:
07166 goto bad_1;
07167
07168 case FFELEX_typeNAME:
07169 break;
07170 }
07171
07172 ffesta_confirmed ();
07173 ffesta_tokens[1] = ffelex_token_use (t);
07174 return (ffelexHandler) ffestb_R11021_;
07175
07176 case FFELEX_typeNAMES:
07177 if (ffesta_first_kw != FFESTR_firstPROGRAM)
07178 goto bad_0;
07179 switch (ffelex_token_type (t))
07180 {
07181 case FFELEX_typeCOMMA:
07182 case FFELEX_typeCOLONCOLON:
07183 ffesta_confirmed ();
07184 goto bad_1;
07185
07186 default:
07187 goto bad_1;
07188
07189 case FFELEX_typeEOS:
07190 case FFELEX_typeSEMICOLON:
07191 break;
07192 }
07193 ffesta_confirmed ();
07194 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlPROGRAM);
07195 if (!ffesrc_is_name_init (*p))
07196 goto bad_i;
07197 ffesta_tokens[1]
07198 = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
07199 return (ffelexHandler) ffestb_R11021_ (t);
07200
07201 default:
07202 goto bad_0;
07203 }
07204
07205 bad_0:
07206 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PROGRAM", ffesta_tokens[0]);
07207 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
07208
07209 bad_1:
07210 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PROGRAM", t);
07211 return (ffelexHandler) ffelex_swallow_tokens (t,
07212 (ffelexHandler) ffesta_zero);
07213
07214 bad_i:
07215 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "PROGRAM", ffesta_tokens[0], i, t);
07216 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
07217 }
07218
07219
07220
07221
07222
07223
07224
07225 static ffelexHandler
07226 ffestb_R11021_ (ffelexToken t)
07227 {
07228 switch (ffelex_token_type (t))
07229 {
07230 case FFELEX_typeEOS:
07231 case FFELEX_typeSEMICOLON:
07232 ffesta_confirmed ();
07233 if (!ffesta_is_inhibited ())
07234 ffestc_R1102 (ffesta_tokens[1]);
07235 ffelex_token_kill (ffesta_tokens[1]);
07236 return (ffelexHandler) ffesta_zero (t);
07237
07238 default:
07239 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PROGRAM", t);
07240 break;
07241 }
07242
07243 ffelex_token_kill (ffesta_tokens[1]);
07244 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
07245 }
07246
07247
07248
07249
07250
07251
07252
07253
07254 ffelexHandler
07255 ffestb_block (ffelexToken t)
07256 {
07257 switch (ffelex_token_type (ffesta_tokens[0]))
07258 {
07259 case FFELEX_typeNAME:
07260 if (ffesta_first_kw != FFESTR_firstBLOCK)
07261 goto bad_0;
07262 switch (ffelex_token_type (t))
07263 {
07264 default:
07265 goto bad_1;
07266
07267 case FFELEX_typeNAME:
07268 if (ffesta_second_kw != FFESTR_secondDATA)
07269 goto bad_1;
07270 break;
07271 }
07272
07273 ffesta_confirmed ();
07274 return (ffelexHandler) ffestb_R1111_1_;
07275
07276 default:
07277 goto bad_0;
07278 }
07279
07280 bad_0:
07281 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "BLOCK DATA", ffesta_tokens[0]);
07282 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
07283
07284 bad_1:
07285 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "BLOCK DATA", t);
07286 return (ffelexHandler) ffelex_swallow_tokens (t,
07287 (ffelexHandler) ffesta_zero);
07288 }
07289
07290
07291
07292
07293
07294
07295
07296
07297 ffelexHandler
07298 ffestb_blockdata (ffelexToken t)
07299 {
07300 ffeTokenLength i;
07301 unsigned const char *p;
07302
07303 switch (ffelex_token_type (ffesta_tokens[0]))
07304 {
07305 case FFELEX_typeNAME:
07306 if (ffesta_first_kw != FFESTR_firstBLOCKDATA)
07307 goto bad_0;
07308 switch (ffelex_token_type (t))
07309 {
07310 case FFELEX_typeCOMMA:
07311 case FFELEX_typeCOLONCOLON:
07312 ffesta_confirmed ();
07313 goto bad_1;
07314
07315 default:
07316 goto bad_1;
07317
07318 case FFELEX_typeNAME:
07319 ffesta_confirmed ();
07320 ffesta_tokens[1] = ffelex_token_use (t);
07321 return (ffelexHandler) ffestb_R1111_2_;
07322
07323 case FFELEX_typeEOS:
07324 case FFELEX_typeSEMICOLON:
07325 ffesta_confirmed ();
07326 ffesta_tokens[1] = NULL;
07327 return (ffelexHandler) ffestb_R1111_2_ (t);
07328 }
07329
07330 case FFELEX_typeNAMES:
07331 if (ffesta_first_kw != FFESTR_firstBLOCKDATA)
07332 goto bad_0;
07333 switch (ffelex_token_type (t))
07334 {
07335 default:
07336 goto bad_1;
07337
07338 case FFELEX_typeEOS:
07339 case FFELEX_typeSEMICOLON:
07340 break;
07341 }
07342 ffesta_confirmed ();
07343 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlBLOCKDATA);
07344 if (*p == '\0')
07345 {
07346 ffesta_tokens[1] = NULL;
07347 }
07348 else
07349 {
07350 if (!ffesrc_is_name_init (*p))
07351 goto bad_i;
07352 ffesta_tokens[1]
07353 = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
07354 }
07355 return (ffelexHandler) ffestb_R1111_2_ (t);
07356
07357 default:
07358 goto bad_0;
07359 }
07360
07361 bad_0:
07362 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "BLOCK DATA", ffesta_tokens[0]);
07363 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
07364
07365 bad_1:
07366 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "BLOCK DATA", t);
07367 return (ffelexHandler) ffelex_swallow_tokens (t,
07368 (ffelexHandler) ffesta_zero);
07369
07370 bad_i:
07371 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "BLOCK DATA", ffesta_tokens[0], i, t);
07372 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
07373 }
07374
07375
07376
07377
07378
07379
07380
07381 static ffelexHandler
07382 ffestb_R1111_1_ (ffelexToken t)
07383 {
07384 switch (ffelex_token_type (t))
07385 {
07386 case FFELEX_typeNAME:
07387 ffesta_tokens[1] = ffelex_token_use (t);
07388 return (ffelexHandler) ffestb_R1111_2_;
07389
07390 case FFELEX_typeEOS:
07391 case FFELEX_typeSEMICOLON:
07392 ffesta_tokens[1] = NULL;
07393 return (ffelexHandler) ffestb_R1111_2_ (t);
07394
07395 default:
07396 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "BLOCK DATA", t);
07397 break;
07398 }
07399
07400 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
07401 }
07402
07403
07404
07405
07406
07407
07408
07409 static ffelexHandler
07410 ffestb_R1111_2_ (ffelexToken t)
07411 {
07412 switch (ffelex_token_type (t))
07413 {
07414 case FFELEX_typeEOS:
07415 case FFELEX_typeSEMICOLON:
07416 ffesta_confirmed ();
07417 if (!ffesta_is_inhibited ())
07418 ffestc_R1111 (ffesta_tokens[1]);
07419 if (ffesta_tokens[1] != NULL)
07420 ffelex_token_kill (ffesta_tokens[1]);
07421 return (ffelexHandler) ffesta_zero (t);
07422
07423 default:
07424 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "BLOCK DATA", t);
07425 break;
07426 }
07427
07428 if (ffesta_tokens[1] != NULL)
07429 ffelex_token_kill (ffesta_tokens[1]);
07430 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
07431 }
07432
07433
07434
07435
07436
07437
07438
07439
07440 ffelexHandler
07441 ffestb_R1212 (ffelexToken t)
07442 {
07443 ffeTokenLength i;
07444 unsigned const char *p;
07445 ffelexHandler next;
07446 ffelexToken nt;
07447
07448 switch (ffelex_token_type (ffesta_tokens[0]))
07449 {
07450 case FFELEX_typeNAME:
07451 if (ffesta_first_kw != FFESTR_firstCALL)
07452 goto bad_0;
07453 switch (ffelex_token_type (t))
07454 {
07455 case FFELEX_typeEOS:
07456 case FFELEX_typeSEMICOLON:
07457 case FFELEX_typeCOMMA:
07458 case FFELEX_typeCOLONCOLON:
07459 ffesta_confirmed ();
07460 goto bad_1;
07461
07462 default:
07463 goto bad_1;
07464
07465 case FFELEX_typeNAME:
07466 break;
07467 }
07468 ffesta_confirmed ();
07469 return (ffelexHandler)
07470 (*((ffelexHandler)
07471 ffeexpr_lhs (ffesta_output_pool, FFEEXPR_contextSUBROUTINEREF,
07472 (ffeexprCallback) ffestb_R12121_)))
07473 (t);
07474
07475 case FFELEX_typeNAMES:
07476 if (ffesta_first_kw != FFESTR_firstCALL)
07477 goto bad_0;
07478 switch (ffelex_token_type (t))
07479 {
07480 case FFELEX_typeCOLONCOLON:
07481 case FFELEX_typeCOMMA:
07482 ffesta_confirmed ();
07483 goto bad_1;
07484
07485 default:
07486 goto bad_1;
07487
07488 case FFELEX_typeOPEN_PAREN:
07489 break;
07490
07491 case FFELEX_typeEOS:
07492 case FFELEX_typeSEMICOLON:
07493 ffesta_confirmed ();
07494 break;
07495 }
07496 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlCALL);
07497 if (!ffesrc_is_name_init (*p))
07498 goto bad_i;
07499 nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
07500 next = (ffelexHandler)
07501 (*((ffelexHandler)
07502 ffeexpr_lhs (ffesta_output_pool, FFEEXPR_contextSUBROUTINEREF,
07503 (ffeexprCallback) ffestb_R12121_)))
07504 (nt);
07505 ffelex_token_kill (nt);
07506 return (ffelexHandler) (*next) (t);
07507
07508 default:
07509 goto bad_0;
07510 }
07511
07512 bad_0:
07513 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CALL", ffesta_tokens[0]);
07514 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
07515
07516 bad_1:
07517 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CALL", t);
07518 return (ffelexHandler) ffelex_swallow_tokens (t,
07519 (ffelexHandler) ffesta_zero);
07520
07521 bad_i:
07522 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "CALL", ffesta_tokens[0], i, t);
07523 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
07524 }
07525
07526
07527
07528
07529
07530
07531
07532
07533 static ffelexHandler
07534 ffestb_R12121_ (ffelexToken ft, ffebld expr, ffelexToken t)
07535 {
07536 switch (ffelex_token_type (t))
07537 {
07538 case FFELEX_typeEOS:
07539 case FFELEX_typeSEMICOLON:
07540 ffesta_confirmed ();
07541 if (expr == NULL)
07542 break;
07543 if (!ffesta_is_inhibited ())
07544 ffestc_R1212 (expr, ft);
07545 return (ffelexHandler) ffesta_zero (t);
07546
07547 default:
07548 break;
07549 }
07550
07551 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CALL", t);
07552 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
07553 }
07554
07555
07556
07557
07558
07559
07560
07561
07562 ffelexHandler
07563 ffestb_R1227 (ffelexToken t)
07564 {
07565 ffelexHandler next;
07566
07567 switch (ffelex_token_type (ffesta_tokens[0]))
07568 {
07569 case FFELEX_typeNAME:
07570 if (ffesta_first_kw != FFESTR_firstRETURN)
07571 goto bad_0;
07572 switch (ffelex_token_type (t))
07573 {
07574 case FFELEX_typeCOMMA:
07575 case FFELEX_typeCOLONCOLON:
07576 ffesta_confirmed ();
07577 goto bad_1;
07578
07579 case FFELEX_typeEQUALS:
07580 case FFELEX_typePOINTS:
07581 case FFELEX_typeCOLON:
07582 goto bad_1;
07583
07584 case FFELEX_typeEOS:
07585 case FFELEX_typeSEMICOLON:
07586 case FFELEX_typeNAME:
07587 case FFELEX_typeNUMBER:
07588 ffesta_confirmed ();
07589 break;
07590
07591 default:
07592 break;
07593 }
07594
07595 return (ffelexHandler) (*((ffelexHandler)
07596 ffeexpr_rhs (ffesta_output_pool, FFEEXPR_contextRETURN,
07597 (ffeexprCallback) ffestb_R12271_)))
07598 (t);
07599
07600 case FFELEX_typeNAMES:
07601 if (ffesta_first_kw != FFESTR_firstRETURN)
07602 goto bad_0;
07603 switch (ffelex_token_type (t))
07604 {
07605 case FFELEX_typeCOMMA:
07606 case FFELEX_typeCOLONCOLON:
07607 ffesta_confirmed ();
07608 goto bad_1;
07609
07610 case FFELEX_typeEQUALS:
07611 case FFELEX_typePOINTS:
07612 case FFELEX_typeCOLON:
07613 goto bad_1;
07614
07615 case FFELEX_typeEOS:
07616 case FFELEX_typeSEMICOLON:
07617 ffesta_confirmed ();
07618 break;
07619
07620 default:
07621 break;
07622 }
07623 next = (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
07624 FFEEXPR_contextRETURN, (ffeexprCallback) ffestb_R12271_);
07625 next = (ffelexHandler) ffelex_splice_tokens (next, ffesta_tokens[0],
07626 FFESTR_firstlRETURN);
07627 if (next == NULL)
07628 return (ffelexHandler) ffelex_swallow_tokens (t,
07629 (ffelexHandler) ffesta_zero);
07630 return (ffelexHandler) (*next) (t);
07631
07632 default:
07633 goto bad_0;
07634 }
07635
07636 bad_0:
07637 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "RETURN", ffesta_tokens[0]);
07638 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
07639
07640 bad_1:
07641 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "RETURN", t);
07642 return (ffelexHandler) ffelex_swallow_tokens (t,
07643 (ffelexHandler) ffesta_zero);
07644 }
07645
07646
07647
07648
07649
07650
07651
07652 static ffelexHandler
07653 ffestb_R12271_ (ffelexToken ft, ffebld expr, ffelexToken t)
07654 {
07655 switch (ffelex_token_type (t))
07656 {
07657 case FFELEX_typeEOS:
07658 case FFELEX_typeSEMICOLON:
07659 ffesta_confirmed ();
07660 if (!ffesta_is_inhibited ())
07661 ffestc_R1227 (expr, ft);
07662 return (ffelexHandler) ffesta_zero (t);
07663
07664 default:
07665 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "RETURN", t);
07666 break;
07667 }
07668
07669 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
07670 }
07671
07672
07673
07674
07675
07676
07677
07678
07679 #if FFESTR_F90
07680 ffelexHandler
07681 ffestb_R1228 (ffelexToken t)
07682 {
07683 const char *p;
07684 ffeTokenLength i;
07685
07686 switch (ffelex_token_type (ffesta_tokens[0]))
07687 {
07688 case FFELEX_typeNAME:
07689 if (ffesta_first_kw != FFESTR_firstCONTAINS)
07690 goto bad_0;
07691 break;
07692
07693 case FFELEX_typeNAMES:
07694 if (ffesta_first_kw != FFESTR_firstCONTAINS)
07695 goto bad_0;
07696 if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlCONTAINS)
07697 {
07698 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlCONTAINS);
07699 goto bad_i;
07700 }
07701 break;
07702
07703 default:
07704 goto bad_0;
07705 }
07706
07707 switch (ffelex_token_type (t))
07708 {
07709 case FFELEX_typeEOS:
07710 case FFELEX_typeSEMICOLON:
07711 ffesta_confirmed ();
07712 if (!ffesta_is_inhibited ())
07713 ffestc_R1228 ();
07714 return (ffelexHandler) ffesta_zero (t);
07715
07716 case FFELEX_typeCOMMA:
07717 case FFELEX_typeCOLONCOLON:
07718 ffesta_confirmed ();
07719 goto bad_1;
07720
07721 default:
07722 goto bad_1;
07723 }
07724
07725 bad_0:
07726 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CONTAINS", ffesta_tokens[0]);
07727 return (ffelexHandler) ffelex_swallow_tokens (t,
07728 (ffelexHandler) ffesta_zero);
07729
07730 bad_1:
07731 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CONTAINS", t);
07732 return (ffelexHandler) ffelex_swallow_tokens (t,
07733 (ffelexHandler) ffesta_zero);
07734
07735 bad_i:
07736 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "CONTAINS", ffesta_tokens[0], i, t);
07737 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
07738 }
07739
07740 #endif
07741
07742
07743
07744
07745
07746
07747
07748 #if FFESTR_VXT
07749 ffelexHandler
07750 ffestb_V009 (ffelexToken t)
07751 {
07752 const char *p;
07753 ffeTokenLength i;
07754
07755 switch (ffelex_token_type (ffesta_tokens[0]))
07756 {
07757 case FFELEX_typeNAME:
07758 if (ffesta_first_kw != FFESTR_firstUNION)
07759 goto bad_0;
07760 break;
07761
07762 case FFELEX_typeNAMES:
07763 if (ffesta_first_kw != FFESTR_firstUNION)
07764 goto bad_0;
07765 if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlUNION)
07766 {
07767 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlUNION);
07768 goto bad_i;
07769 }
07770 break;
07771
07772 default:
07773 goto bad_0;
07774 }
07775
07776 switch (ffelex_token_type (t))
07777 {
07778 case FFELEX_typeEOS:
07779 case FFELEX_typeSEMICOLON:
07780 ffesta_confirmed ();
07781 if (!ffesta_is_inhibited ())
07782 ffestc_V009 ();
07783 return (ffelexHandler) ffesta_zero (t);
07784
07785 case FFELEX_typeCOMMA:
07786 case FFELEX_typeCOLONCOLON:
07787 ffesta_confirmed ();
07788 goto bad_1;
07789
07790 default:
07791 goto bad_1;
07792 }
07793
07794 bad_0:
07795 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "UNION", ffesta_tokens[0]);
07796 return (ffelexHandler) ffelex_swallow_tokens (t,
07797 (ffelexHandler) ffesta_zero);
07798
07799 bad_1:
07800 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "UNION", t);
07801 return (ffelexHandler) ffelex_swallow_tokens (t,
07802 (ffelexHandler) ffesta_zero);
07803
07804 bad_i:
07805 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "UNION", ffesta_tokens[0], i, t);
07806 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
07807 }
07808
07809 #endif
07810
07811
07812
07813
07814
07815
07816
07817 ffelexHandler
07818 ffestb_construct (ffelexToken t UNUSED)
07819 {
07820
07821
07822
07823 ffesta_confirmed ();
07824 ffelex_set_names (TRUE);
07825 return (ffelexHandler) ffestb_construct1_;
07826 }
07827
07828
07829
07830
07831
07832
07833
07834 static ffelexHandler
07835 ffestb_construct1_ (ffelexToken t)
07836 {
07837 ffelex_set_names (FALSE);
07838
07839 switch (ffelex_token_type (t))
07840 {
07841 case FFELEX_typeNAME:
07842 ffesta_first_kw = ffestr_first (t);
07843 switch (ffesta_first_kw)
07844 {
07845 case FFESTR_firstIF:
07846 ffestb_local_.construct.next = (ffelexHandler) ffestb_if;
07847 break;
07848
07849 case FFESTR_firstDO:
07850 ffestb_local_.construct.next = (ffelexHandler) ffestb_do;
07851 break;
07852
07853 case FFESTR_firstDOWHILE:
07854 ffestb_local_.construct.next = (ffelexHandler) ffestb_dowhile;
07855 break;
07856
07857 case FFESTR_firstSELECT:
07858 case FFESTR_firstSELECTCASE:
07859 ffestb_local_.construct.next = (ffelexHandler) ffestb_R809;
07860 break;
07861
07862 default:
07863 goto bad;
07864 }
07865 ffesta_construct_name = ffesta_tokens[0];
07866 ffesta_tokens[0] = ffelex_token_use (t);
07867 return (ffelexHandler) ffestb_construct2_;
07868
07869 case FFELEX_typeNAMES:
07870 ffesta_first_kw = ffestr_first (t);
07871 switch (ffesta_first_kw)
07872 {
07873 case FFESTR_firstIF:
07874 if (ffelex_token_length (t) != FFESTR_firstlIF)
07875 goto bad;
07876 ffestb_local_.construct.next = (ffelexHandler) ffestb_if;
07877 break;
07878
07879 case FFESTR_firstDO:
07880 ffestb_local_.construct.next = (ffelexHandler) ffestb_do;
07881 break;
07882
07883 case FFESTR_firstDOWHILE:
07884 if (ffelex_token_length (t) != FFESTR_firstlDOWHILE)
07885 goto bad;
07886 ffestb_local_.construct.next = (ffelexHandler) ffestb_dowhile;
07887 break;
07888
07889 case FFESTR_firstSELECTCASE:
07890 if (ffelex_token_length (t) != FFESTR_firstlSELECTCASE)
07891 goto bad;
07892 ffestb_local_.construct.next = (ffelexHandler) ffestb_R809;
07893 break;
07894
07895 default:
07896 goto bad;
07897 }
07898 ffesta_construct_name = ffesta_tokens[0];
07899 ffesta_tokens[0] = ffelex_token_use (t);
07900 return (ffelexHandler) ffestb_construct2_;
07901
07902 default:
07903 break;
07904 }
07905
07906 bad:
07907 ffesta_ffebad_2st (FFEBAD_INVALID_STMT_FORM, "CONSTRUCT",
07908 ffesta_tokens[0], t);
07909 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
07910 }
07911
07912
07913
07914
07915
07916
07917
07918
07919 static ffelexHandler
07920 ffestb_construct2_ (ffelexToken t)
07921 {
07922 if (ffelex_token_type (t) == FFELEX_typeNAME)
07923 ffesta_second_kw = ffestr_second (t);
07924 return (ffelexHandler) (*ffestb_local_.construct.next) (t);
07925 }
07926
07927
07928
07929
07930
07931
07932
07933
07934 #if FFESTR_F90
07935 ffelexHandler
07936 ffestb_heap (ffelexToken t)
07937 {
07938 switch (ffelex_token_type (ffesta_tokens[0]))
07939 {
07940 case FFELEX_typeNAME:
07941 break;
07942
07943 case FFELEX_typeNAMES:
07944 if (ffelex_token_length (ffesta_tokens[0]) != ffestb_args.heap.len)
07945 goto bad_0;
07946 break;
07947
07948 default:
07949 goto bad_0;
07950 }
07951
07952 switch (ffelex_token_type (t))
07953 {
07954 case FFELEX_typeOPEN_PAREN:
07955 break;
07956
07957 case FFELEX_typeEOS:
07958 case FFELEX_typeSEMICOLON:
07959 case FFELEX_typeCOMMA:
07960 case FFELEX_typeCOLONCOLON:
07961 ffesta_confirmed ();
07962 goto bad_1;
07963
07964 default:
07965 goto bad_1;
07966 }
07967
07968 ffestb_local_.heap.exprs = ffestt_exprlist_create ();
07969 return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
07970 ffestb_args.heap.ctx,
07971 (ffeexprCallback) ffestb_heap1_);
07972
07973 bad_0:
07974 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.heap.badname, ffesta_tokens[0]);
07975 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
07976
07977 bad_1:
07978 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.heap.badname, t);
07979 return (ffelexHandler) ffelex_swallow_tokens (t,
07980 (ffelexHandler) ffesta_zero);
07981 }
07982
07983
07984
07985
07986
07987
07988
07989 static ffelexHandler
07990 ffestb_heap1_ (ffelexToken ft, ffebld expr, ffelexToken t)
07991 {
07992 switch (ffelex_token_type (t))
07993 {
07994 case FFELEX_typeCOMMA:
07995 if (expr == NULL)
07996 break;
07997 ffestt_exprlist_append (ffestb_local_.heap.exprs, expr,
07998 ffelex_token_use (t));
07999 return (ffelexHandler) ffestb_heap2_;
08000
08001 case FFELEX_typeCLOSE_PAREN:
08002 if (expr == NULL)
08003 break;
08004 ffestt_exprlist_append (ffestb_local_.heap.exprs, expr,
08005 ffelex_token_use (t));
08006 ffesta_tokens[1] = NULL;
08007 ffestb_local_.heap.expr = NULL;
08008 return (ffelexHandler) ffestb_heap5_;
08009
08010 default:
08011 break;
08012 }
08013
08014 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.heap.badname, t);
08015 ffestt_exprlist_kill (ffestb_local_.heap.exprs);
08016 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
08017 }
08018
08019
08020
08021
08022
08023
08024
08025 static ffelexHandler
08026 ffestb_heap2_ (ffelexToken t)
08027 {
08028 switch (ffelex_token_type (t))
08029 {
08030 case FFELEX_typeNAME:
08031 ffesta_tokens[1] = ffelex_token_use (t);
08032 return (ffelexHandler) ffestb_heap3_;
08033
08034 default:
08035 break;
08036 }
08037
08038 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.heap.badname, t);
08039 ffestt_exprlist_kill (ffestb_local_.heap.exprs);
08040 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
08041 }
08042
08043
08044
08045
08046
08047
08048
08049
08050 static ffelexHandler
08051 ffestb_heap3_ (ffelexToken t)
08052 {
08053 ffelexHandler next;
08054
08055 switch (ffelex_token_type (t))
08056 {
08057 case FFELEX_typeEQUALS:
08058 ffesta_confirmed ();
08059 if (ffestr_other (ffesta_tokens[1]) != FFESTR_otherSTAT)
08060 break;
08061 ffelex_token_kill (ffesta_tokens[1]);
08062 return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
08063 FFEEXPR_contextHEAPSTAT,
08064 (ffeexprCallback) ffestb_heap4_);
08065
08066 default:
08067 next = (ffelexHandler)
08068 (*((ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
08069 ffestb_args.heap.ctx,
08070 (ffeexprCallback) ffestb_heap1_)))
08071 (ffesta_tokens[1]);
08072 ffelex_token_kill (ffesta_tokens[1]);
08073 return (ffelexHandler) (*next) (t);
08074 }
08075
08076 ffelex_token_kill (ffesta_tokens[1]);
08077 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.heap.badname, t);
08078 ffestt_exprlist_kill (ffestb_local_.heap.exprs);
08079 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
08080 }
08081
08082
08083
08084
08085
08086
08087
08088
08089 static ffelexHandler
08090 ffestb_heap4_ (ffelexToken ft, ffebld expr, ffelexToken t)
08091 {
08092 switch (ffelex_token_type (t))
08093 {
08094 case FFELEX_typeCLOSE_PAREN:
08095 if (expr == NULL)
08096 break;
08097 ffesta_tokens[1] = ffelex_token_use (ft);
08098 ffestb_local_.heap.expr = expr;
08099 return (ffelexHandler) ffestb_heap5_;
08100
08101 default:
08102 break;
08103 }
08104
08105 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.heap.badname, t);
08106 ffestt_exprlist_kill (ffestb_local_.heap.exprs);
08107 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
08108 }
08109
08110
08111
08112
08113
08114
08115
08116 static ffelexHandler
08117 ffestb_heap5_ (ffelexToken t)
08118 {
08119 switch (ffelex_token_type (t))
08120 {
08121 case FFELEX_typeEOS:
08122 case FFELEX_typeSEMICOLON:
08123 ffesta_confirmed ();
08124 if (!ffesta_is_inhibited ())
08125 if (ffesta_first_kw == FFESTR_firstALLOCATE)
08126 ffestc_R620 (ffestb_local_.heap.exprs, ffestb_local_.heap.expr,
08127 ffesta_tokens[1]);
08128 else
08129 ffestc_R625 (ffestb_local_.heap.exprs, ffestb_local_.heap.expr,
08130 ffesta_tokens[1]);
08131 ffestt_exprlist_kill (ffestb_local_.heap.exprs);
08132 if (ffesta_tokens[1] != NULL)
08133 ffelex_token_kill (ffesta_tokens[1]);
08134 return (ffelexHandler) ffesta_zero (t);
08135
08136 default:
08137 break;
08138 }
08139
08140 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.heap.badname, t);
08141 ffestt_exprlist_kill (ffestb_local_.heap.exprs);
08142 if (ffesta_tokens[1] != NULL)
08143 ffelex_token_kill (ffesta_tokens[1]);
08144 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
08145 }
08146
08147 #endif
08148
08149
08150
08151
08152
08153
08154
08155
08156
08157
08158
08159 #if FFESTR_F90
08160 ffelexHandler
08161 ffestb_module (ffelexToken t)
08162 {
08163 ffeTokenLength i;
08164 const char *p;
08165 ffelexToken nt;
08166 ffelexToken mt;
08167
08168
08169 switch (ffelex_token_type (ffesta_tokens[0]))
08170 {
08171 case FFELEX_typeNAME:
08172 if (ffesta_first_kw != FFESTR_firstMODULE)
08173 goto bad_0;
08174 switch (ffelex_token_type (t))
08175 {
08176 case FFELEX_typeNAME:
08177 break;
08178
08179 case FFELEX_typeCOLONCOLON:
08180 case FFELEX_typeCOMMA:
08181 case FFELEX_typeEOS:
08182 case FFELEX_typeSEMICOLON:
08183 ffesta_confirmed ();
08184 goto bad_1m;
08185
08186 default:
08187 goto bad_1m;
08188 }
08189
08190 ffesta_confirmed ();
08191 if (ffesta_second_kw != FFESTR_secondPROCEDURE)
08192 {
08193 ffesta_tokens[1] = ffelex_token_use (t);
08194 return (ffelexHandler) ffestb_module3_;
08195 }
08196 ffestb_local_.moduleprocedure.started = FALSE;
08197 ffesta_tokens[1] = ffelex_token_use (t);
08198 return (ffelexHandler) ffestb_module1_;
08199
08200 case FFELEX_typeNAMES:
08201 p = ffelex_token_text (ffesta_tokens[0])
08202 + (i = FFESTR_firstlMODULEPROCEDURE);
08203 if ((ffesta_first_kw == FFESTR_firstMODULE)
08204 || ((ffesta_first_kw == FFESTR_firstMODULEPROCEDURE)
08205 && !ffesrc_is_name_init (*p)))
08206 {
08207 switch (ffelex_token_type (t))
08208 {
08209 case FFELEX_typeCOMMA:
08210 case FFELEX_typeCOLONCOLON:
08211 ffesta_confirmed ();
08212 goto bad_1m;
08213
08214 default:
08215 goto bad_1m;
08216
08217 case FFELEX_typeEOS:
08218 case FFELEX_typeSEMICOLON:
08219 ffesta_confirmed ();
08220 break;
08221 }
08222 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlMODULE);
08223 if (!ffesrc_is_name_init (*p))
08224 goto bad_im;
08225 nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
08226 if (!ffesta_is_inhibited ())
08227 ffestc_R1105 (nt);
08228 ffelex_token_kill (nt);
08229 return (ffelexHandler) ffesta_zero (t);
08230 }
08231
08232
08233
08234
08235
08236
08237
08238
08239
08240 if (ffesta_first_kw != FFESTR_firstMODULEPROCEDURE)
08241 goto bad_0;
08242 switch (ffelex_token_type (t))
08243 {
08244 case FFELEX_typeCOLONCOLON:
08245 ffesta_confirmed ();
08246 goto bad_1;
08247
08248 default:
08249 goto bad_1;
08250
08251 case FFELEX_typeCOMMA:
08252 ffesta_confirmed ();
08253 ffestb_local_.moduleprocedure.started = FALSE;
08254 ffesta_tokens[1]
08255 = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
08256 return (ffelexHandler) ffestb_module2_ (t);
08257
08258 case FFELEX_typeEOS:
08259
08260 case FFELEX_typeSEMICOLON:
08261 ffesta_confirmed ();
08262 break;
08263 }
08264 nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
08265 mt = ffelex_token_name_from_names (ffesta_tokens[0], FFESTR_firstlMODULE,
08266 0);
08267 if (!ffesta_is_inhibited ())
08268 ffestc_module (mt, nt);
08269 ffelex_token_kill (nt);
08270 ffelex_token_kill (mt);
08271 return (ffelexHandler) ffesta_zero (t);
08272
08273 default:
08274 goto bad_0;
08275 }
08276
08277 bad_0:
08278 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "MODULE PROCEDURE", ffesta_tokens[0]);
08279 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
08280
08281 bad_1:
08282 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "MODULE PROCEDURE", t);
08283 return (ffelexHandler) ffelex_swallow_tokens (t,
08284 (ffelexHandler) ffesta_zero);
08285
08286 bad_1m:
08287 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "MODULE", t);
08288 return (ffelexHandler) ffelex_swallow_tokens (t,
08289 (ffelexHandler) ffesta_zero);
08290
08291 bad_im:
08292 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "MODULE", ffesta_tokens[0], i, t);
08293 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
08294 }
08295
08296
08297
08298
08299
08300
08301
08302
08303 static ffelexHandler
08304 ffestb_module1_ (ffelexToken t)
08305 {
08306 switch (ffelex_token_type (t))
08307 {
08308 case FFELEX_typeNAME:
08309 if (!ffestb_local_.moduleprocedure.started
08310 && (ffelex_token_type (ffesta_tokens[0]) == FFELEX_typeNAME))
08311 {
08312 ffesta_confirmed ();
08313 ffelex_token_kill (ffesta_tokens[1]);
08314 }
08315 ffesta_tokens[1] = ffelex_token_use (t);
08316 return (ffelexHandler) ffestb_module2_;
08317
08318 case FFELEX_typeEOS:
08319 case FFELEX_typeSEMICOLON:
08320 if (ffestb_local_.moduleprocedure.started)
08321 break;
08322 ffesta_confirmed ();
08323 if (!ffesta_is_inhibited ())
08324 ffestc_R1105 (ffesta_tokens[1]);
08325 ffelex_token_kill (ffesta_tokens[1]);
08326 return (ffelexHandler) ffesta_zero (t);
08327
08328 case FFELEX_typeCOMMA:
08329 case FFELEX_typeCOLONCOLON:
08330 ffesta_confirmed ();
08331 break;
08332
08333 default:
08334 break;
08335 }
08336
08337 if (ffestb_local_.moduleprocedure.started && !ffesta_is_inhibited ())
08338 ffestc_R1205_finish ();
08339 else if (!ffestb_local_.moduleprocedure.started)
08340 ffelex_token_kill (ffesta_tokens[1]);
08341 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "MODULE PROCEDURE", t);
08342 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
08343 }
08344
08345
08346
08347
08348
08349
08350
08351
08352 static ffelexHandler
08353 ffestb_module2_ (ffelexToken t)
08354 {
08355 switch (ffelex_token_type (t))
08356 {
08357 case FFELEX_typeEOS:
08358 case FFELEX_typeSEMICOLON:
08359 if (!ffestb_local_.moduleprocedure.started)
08360 {
08361 ffesta_confirmed ();
08362 if (!ffesta_is_inhibited ())
08363 ffestc_R1205_start ();
08364 }
08365 if (!ffesta_is_inhibited ())
08366 {
08367 ffestc_R1205_item (ffesta_tokens[1]);
08368 ffestc_R1205_finish ();
08369 }
08370 ffelex_token_kill (ffesta_tokens[1]);
08371 return (ffelexHandler) ffesta_zero (t);
08372
08373 case FFELEX_typeCOMMA:
08374 if (!ffestb_local_.moduleprocedure.started)
08375 {
08376 ffestb_local_.moduleprocedure.started = TRUE;
08377 ffesta_confirmed ();
08378 if (!ffesta_is_inhibited ())
08379 ffestc_R1205_start ();
08380 }
08381 if (!ffesta_is_inhibited ())
08382 ffestc_R1205_item (ffesta_tokens[1]);
08383 ffelex_token_kill (ffesta_tokens[1]);
08384 return (ffelexHandler) ffestb_module1_;
08385
08386 default:
08387 break;
08388 }
08389
08390 if (ffestb_local_.moduleprocedure.started && !ffesta_is_inhibited ())
08391 ffestc_R1205_finish ();
08392 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "MODULE PROCEDURE", t);
08393 ffelex_token_kill (ffesta_tokens[1]);
08394 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
08395 }
08396
08397
08398
08399
08400
08401
08402
08403
08404 static ffelexHandler
08405 ffestb_module3_ (ffelexToken t)
08406 {
08407 switch (ffelex_token_type (t))
08408 {
08409 case FFELEX_typeEOS:
08410 case FFELEX_typeSEMICOLON:
08411 if (!ffesta_is_inhibited ())
08412 ffestc_R1105 (ffesta_tokens[1]);
08413 ffelex_token_kill (ffesta_tokens[1]);
08414 return (ffelexHandler) ffesta_zero (t);
08415
08416 default:
08417 break;
08418 }
08419
08420 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "MODULE", t);
08421 ffelex_token_kill (ffesta_tokens[1]);
08422 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
08423 }
08424
08425 #endif
08426
08427
08428
08429
08430
08431
08432
08433 ffelexHandler
08434 ffestb_R809 (ffelexToken t)
08435 {
08436 ffeTokenLength i;
08437 const char *p;
08438
08439 switch (ffelex_token_type (ffesta_tokens[0]))
08440 {
08441 case FFELEX_typeNAME:
08442 switch (ffesta_first_kw)
08443 {
08444 case FFESTR_firstSELECT:
08445 if ((ffelex_token_type (t) != FFELEX_typeNAME)
08446 || (ffesta_second_kw != FFESTR_secondCASE))
08447 goto bad_1;
08448 ffesta_confirmed ();
08449 return (ffelexHandler) ffestb_R8091_;
08450
08451 case FFESTR_firstSELECTCASE:
08452 return (ffelexHandler) ffestb_R8091_ (t);
08453
08454 default:
08455 goto bad_0;
08456 }
08457
08458 case FFELEX_typeNAMES:
08459 if (ffesta_first_kw != FFESTR_firstSELECTCASE)
08460 goto bad_0;
08461 switch (ffelex_token_type (t))
08462 {
08463 case FFELEX_typeCOMMA:
08464 case FFELEX_typeEOS:
08465 case FFELEX_typeSEMICOLON:
08466 case FFELEX_typeCOLONCOLON:
08467 ffesta_confirmed ();
08468 goto bad_1;
08469
08470 default:
08471 goto bad_1;
08472
08473 case FFELEX_typeOPEN_PAREN:
08474 break;
08475 }
08476 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlSELECTCASE);
08477 if (*p != '\0')
08478 goto bad_i;
08479 return (ffelexHandler) ffestb_R8091_ (t);
08480
08481 default:
08482 goto bad_0;
08483 }
08484
08485 bad_0:
08486 if (ffesta_construct_name != NULL)
08487 {
08488 ffelex_token_kill (ffesta_construct_name);
08489 ffesta_construct_name = NULL;
08490 }
08491 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "SELECT CASE", ffesta_tokens[0]);
08492 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
08493
08494 bad_1:
08495 if (ffesta_construct_name != NULL)
08496 {
08497 ffelex_token_kill (ffesta_construct_name);
08498 ffesta_construct_name = NULL;
08499 }
08500 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "SELECT CASE", t);
08501 return (ffelexHandler) ffelex_swallow_tokens (t,
08502 (ffelexHandler) ffesta_zero);
08503
08504 bad_i:
08505 if (ffesta_construct_name != NULL)
08506 {
08507 ffelex_token_kill (ffesta_construct_name);
08508 ffesta_construct_name = NULL;
08509 }
08510 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "SELECT CASE", ffesta_tokens[0], i, t);
08511 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
08512 }
08513
08514
08515
08516
08517
08518
08519
08520
08521 static ffelexHandler
08522 ffestb_R8091_ (ffelexToken t)
08523 {
08524 switch (ffelex_token_type (t))
08525 {
08526 case FFELEX_typeOPEN_PAREN:
08527 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
08528 FFEEXPR_contextSELECTCASE, (ffeexprCallback) ffestb_R8092_);
08529
08530 case FFELEX_typeEOS:
08531 case FFELEX_typeSEMICOLON:
08532 case FFELEX_typeCOMMA:
08533 case FFELEX_typeCOLONCOLON:
08534 ffesta_confirmed ();
08535 break;
08536
08537 default:
08538 break;
08539 }
08540
08541 if (ffesta_construct_name != NULL)
08542 {
08543 ffelex_token_kill (ffesta_construct_name);
08544 ffesta_construct_name = NULL;
08545 }
08546 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "SELECT CASE", t);
08547 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
08548 }
08549
08550
08551
08552
08553
08554
08555
08556
08557 static ffelexHandler
08558 ffestb_R8092_ (ffelexToken ft, ffebld expr, ffelexToken t)
08559 {
08560 switch (ffelex_token_type (t))
08561 {
08562 case FFELEX_typeCLOSE_PAREN:
08563 if (expr == NULL)
08564 break;
08565 ffesta_tokens[1] = ffelex_token_use (ft);
08566 ffestb_local_.selectcase.expr = expr;
08567 return (ffelexHandler) ffestb_R8093_;
08568
08569 default:
08570 break;
08571 }
08572
08573 if (ffesta_construct_name != NULL)
08574 {
08575 ffelex_token_kill (ffesta_construct_name);
08576 ffesta_construct_name = NULL;
08577 }
08578 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "SELECT CASE", t);
08579 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
08580 }
08581
08582
08583
08584
08585
08586
08587
08588
08589 static ffelexHandler
08590 ffestb_R8093_ (ffelexToken t)
08591 {
08592 switch (ffelex_token_type (t))
08593 {
08594 case FFELEX_typeEOS:
08595 case FFELEX_typeSEMICOLON:
08596 ffesta_confirmed ();
08597 if (!ffesta_is_inhibited ())
08598 ffestc_R809 (ffesta_construct_name, ffestb_local_.selectcase.expr,
08599 ffesta_tokens[1]);
08600 ffelex_token_kill (ffesta_tokens[1]);
08601 if (ffesta_construct_name != NULL)
08602 {
08603 ffelex_token_kill (ffesta_construct_name);
08604 ffesta_construct_name = NULL;
08605 }
08606 return ffesta_zero (t);
08607
08608 case FFELEX_typeCOMMA:
08609 case FFELEX_typeCOLONCOLON:
08610 ffesta_confirmed ();
08611 break;
08612
08613 default:
08614 break;
08615 }
08616
08617 ffelex_token_kill (ffesta_tokens[1]);
08618 if (ffesta_construct_name != NULL)
08619 {
08620 ffelex_token_kill (ffesta_construct_name);
08621 ffesta_construct_name = NULL;
08622 }
08623 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "SELECT CASE", t);
08624 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
08625 }
08626
08627
08628
08629
08630
08631
08632
08633
08634 ffelexHandler
08635 ffestb_R810 (ffelexToken t)
08636 {
08637 ffeTokenLength i;
08638 unsigned const char *p;
08639
08640 switch (ffelex_token_type (ffesta_tokens[0]))
08641 {
08642 case FFELEX_typeNAME:
08643 if (ffesta_first_kw != FFESTR_firstCASE)
08644 goto bad_0;
08645 switch (ffelex_token_type (t))
08646 {
08647 case FFELEX_typeCOMMA:
08648 case FFELEX_typeEOS:
08649 case FFELEX_typeSEMICOLON:
08650 case FFELEX_typeCOLONCOLON:
08651 ffesta_confirmed ();
08652 goto bad_1;
08653
08654 default:
08655 goto bad_1;
08656
08657 case FFELEX_typeNAME:
08658 ffesta_confirmed ();
08659 if (ffesta_second_kw != FFESTR_secondDEFAULT)
08660 goto bad_1;
08661 ffestb_local_.case_stmt.cases = NULL;
08662 return (ffelexHandler) ffestb_R8101_;
08663
08664 case FFELEX_typeOPEN_PAREN:
08665 ffestb_local_.case_stmt.cases = ffestt_caselist_create ();
08666 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
08667 FFEEXPR_contextCASE, (ffeexprCallback) ffestb_R8103_);
08668 }
08669
08670 case FFELEX_typeNAMES:
08671 switch (ffesta_first_kw)
08672 {
08673 case FFESTR_firstCASEDEFAULT:
08674 switch (ffelex_token_type (t))
08675 {
08676 case FFELEX_typeCOMMA:
08677 case FFELEX_typeCOLONCOLON:
08678 ffesta_confirmed ();
08679 goto bad_1;
08680
08681 default:
08682 goto bad_1;
08683
08684 case FFELEX_typeEOS:
08685 case FFELEX_typeSEMICOLON:
08686 ffesta_confirmed ();
08687 break;
08688 }
08689 ffestb_local_.case_stmt.cases = NULL;
08690 p = ffelex_token_text (ffesta_tokens[0])
08691 + (i = FFESTR_firstlCASEDEFAULT);
08692 if (*p == '\0')
08693 return (ffelexHandler) ffestb_R8101_ (t);
08694 if (!ffesrc_is_name_init (*p))
08695 goto bad_i;
08696 ffesta_tokens[1] = ffelex_token_name_from_names (ffesta_tokens[0], i,
08697 0);
08698 return (ffelexHandler) ffestb_R8102_ (t);
08699
08700 case FFESTR_firstCASE:
08701 break;
08702
08703 default:
08704 goto bad_0;
08705 }
08706
08707 switch (ffelex_token_type (t))
08708 {
08709 case FFELEX_typeCOMMA:
08710 case FFELEX_typeEOS:
08711 case FFELEX_typeSEMICOLON:
08712 case FFELEX_typeCOLONCOLON:
08713 ffesta_confirmed ();
08714 goto bad_1;
08715
08716 default:
08717 goto bad_1;
08718
08719 case FFELEX_typeOPEN_PAREN:
08720 break;
08721 }
08722 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlCASE);
08723 if (*p != '\0')
08724 goto bad_i;
08725 ffestb_local_.case_stmt.cases = ffestt_caselist_create ();
08726 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
08727 FFEEXPR_contextCASE, (ffeexprCallback) ffestb_R8103_);
08728
08729 default:
08730 goto bad_0;
08731 }
08732
08733 bad_0:
08734 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CASE", ffesta_tokens[0]);
08735 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
08736
08737 bad_1:
08738 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CASE", t);
08739 return (ffelexHandler) ffelex_swallow_tokens (t,
08740 (ffelexHandler) ffesta_zero);
08741
08742 bad_i:
08743 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "CASE", ffesta_tokens[0], i, t);
08744 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
08745 }
08746
08747
08748
08749
08750
08751
08752
08753
08754 static ffelexHandler
08755 ffestb_R8101_ (ffelexToken t)
08756 {
08757 switch (ffelex_token_type (t))
08758 {
08759 case FFELEX_typeNAME:
08760 ffesta_tokens[1] = ffelex_token_use (t);
08761 return (ffelexHandler) ffestb_R8102_;
08762
08763 case FFELEX_typeEOS:
08764 case FFELEX_typeSEMICOLON:
08765 ffesta_tokens[1] = NULL;
08766 return (ffelexHandler) ffestb_R8102_ (t);
08767
08768 case FFELEX_typeCOMMA:
08769 case FFELEX_typeCOLONCOLON:
08770 ffesta_confirmed ();
08771 break;
08772
08773 default:
08774 break;
08775 }
08776
08777 if (ffestb_local_.case_stmt.cases != NULL)
08778 ffestt_caselist_kill (ffestb_local_.case_stmt.cases);
08779 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CASE", t);
08780 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
08781 }
08782
08783
08784
08785
08786
08787
08788
08789
08790 static ffelexHandler
08791 ffestb_R8102_ (ffelexToken t)
08792 {
08793 switch (ffelex_token_type (t))
08794 {
08795 case FFELEX_typeEOS:
08796 case FFELEX_typeSEMICOLON:
08797 ffesta_confirmed ();
08798 if (!ffesta_is_inhibited ())
08799 ffestc_R810 (ffestb_local_.case_stmt.cases, ffesta_tokens[1]);
08800 if (ffestb_local_.case_stmt.cases != NULL)
08801 ffestt_caselist_kill (ffestb_local_.case_stmt.cases);
08802 if (ffesta_tokens[1] != NULL)
08803 ffelex_token_kill (ffesta_tokens[1]);
08804 return (ffelexHandler) ffesta_zero (t);
08805
08806 case FFELEX_typeCOMMA:
08807 case FFELEX_typeCOLONCOLON:
08808 ffesta_confirmed ();
08809 break;
08810
08811 default:
08812 break;
08813 }
08814
08815 if (ffestb_local_.case_stmt.cases != NULL)
08816 ffestt_caselist_kill (ffestb_local_.case_stmt.cases);
08817 if (ffesta_tokens[1] != NULL)
08818 ffelex_token_kill (ffesta_tokens[1]);
08819 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CASE", t);
08820 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
08821 }
08822
08823
08824
08825
08826
08827
08828
08829
08830 static ffelexHandler
08831 ffestb_R8103_ (ffelexToken ft, ffebld expr, ffelexToken t)
08832 {
08833 switch (ffelex_token_type (t))
08834 {
08835 case FFELEX_typeCLOSE_PAREN:
08836 ffestt_caselist_append (ffestb_local_.case_stmt.cases, FALSE, expr, NULL,
08837 ffelex_token_use (ft));
08838 return (ffelexHandler) ffestb_R8101_;
08839
08840 case FFELEX_typeCOMMA:
08841 ffestt_caselist_append (ffestb_local_.case_stmt.cases, FALSE, expr, NULL,
08842 ffelex_token_use (ft));
08843 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
08844 FFEEXPR_contextCASE, (ffeexprCallback) ffestb_R8103_);
08845
08846 case FFELEX_typeCOLON:
08847 ffestt_caselist_append (ffestb_local_.case_stmt.cases, TRUE, expr, NULL,
08848 ffelex_token_use (ft));
08849
08850 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
08851 FFEEXPR_contextCASE, (ffeexprCallback) ffestb_R8104_);
08852
08853 default:
08854 break;
08855 }
08856
08857 ffestt_caselist_kill (ffestb_local_.case_stmt.cases);
08858 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CASE", t);
08859 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
08860 }
08861
08862
08863
08864
08865
08866
08867
08868
08869 static ffelexHandler
08870 ffestb_R8104_ (ffelexToken ft UNUSED, ffebld expr, ffelexToken t)
08871 {
08872 switch (ffelex_token_type (t))
08873 {
08874 case FFELEX_typeCLOSE_PAREN:
08875 ffestb_local_.case_stmt.cases->previous->expr2 = expr;
08876 return (ffelexHandler) ffestb_R8101_;
08877
08878 case FFELEX_typeCOMMA:
08879 ffestb_local_.case_stmt.cases->previous->expr2 = expr;
08880 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
08881 FFEEXPR_contextCASE, (ffeexprCallback) ffestb_R8103_);
08882
08883 default:
08884 break;
08885 }
08886
08887 ffestt_caselist_kill (ffestb_local_.case_stmt.cases);
08888 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CASE", t);
08889 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
08890 }
08891
08892
08893
08894
08895
08896
08897
08898
08899 ffelexHandler
08900 ffestb_R1001 (ffelexToken t)
08901 {
08902 ffesttFormatList f;
08903
08904 switch (ffelex_token_type (ffesta_tokens[0]))
08905 {
08906 case FFELEX_typeNAME:
08907 if (ffesta_first_kw != FFESTR_firstFORMAT)
08908 goto bad_0;
08909 break;
08910
08911 case FFELEX_typeNAMES:
08912 if (ffesta_first_kw != FFESTR_firstFORMAT)
08913 goto bad_0;
08914 if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlFORMAT)
08915 goto bad_0;
08916 break;
08917
08918 default:
08919 goto bad_0;
08920 }
08921
08922 switch (ffelex_token_type (t))
08923 {
08924 case FFELEX_typeOPEN_PAREN:
08925 ffestb_local_.format.complained = FALSE;
08926 ffestb_local_.format.f = NULL;
08927 ffestb_local_.format.f = ffestt_formatlist_create (NULL,
08928 ffelex_token_use (t));
08929 ffelex_set_names_pure (TRUE);
08930
08931 return (ffelexHandler) ffestb_R10011_;
08932
08933 case FFELEX_typeOPEN_ARRAY:
08934 ffesta_confirmed ();
08935 ffestb_local_.format.complained = FALSE;
08936 ffestb_local_.format.f = ffestt_formatlist_create (NULL,
08937 ffelex_token_use (t));
08938 f = ffestt_formatlist_append (ffestb_local_.format.f);
08939 f->type = FFESTP_formattypeSLASH;
08940 f->t = ffelex_token_use (t);
08941 f->u.R1010.val.present = FALSE;
08942 f->u.R1010.val.rtexpr = FALSE;
08943 f->u.R1010.val.t = NULL;
08944 f->u.R1010.val.u.unsigned_val = 1;
08945 ffelex_set_names_pure (TRUE);
08946
08947 return (ffelexHandler) ffestb_R100112_;
08948
08949 case FFELEX_typeEOS:
08950 case FFELEX_typeSEMICOLON:
08951 case FFELEX_typeCOMMA:
08952 case FFELEX_typeCOLONCOLON:
08953 ffesta_confirmed ();
08954 goto bad_1;
08955
08956 default:
08957 goto bad_1;
08958 }
08959
08960 bad_0:
08961 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FORMAT", ffesta_tokens[0]);
08962 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
08963
08964 bad_1:
08965 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FORMAT", t);
08966 return (ffelexHandler) ffelex_swallow_tokens (t,
08967 (ffelexHandler) ffesta_zero);
08968 }
08969
08970
08971
08972
08973
08974
08975
08976
08977 static ffelexHandler
08978 ffestb_R10011_ (ffelexToken t)
08979 {
08980 ffesttFormatList f;
08981
08982 switch (ffelex_token_type (t))
08983 {
08984 case FFELEX_typeCLOSE_PAREN:
08985 break;
08986
08987 default:
08988 return (ffelexHandler) ffestb_R10012_ (t);
08989 }
08990
08991
08992
08993 f = ffestb_local_.format.f->u.root.parent;
08994
08995 if (f != NULL)
08996 {
08997 ffestb_local_.format.f = f->next;
08998 return (ffelexHandler) ffestb_R100111_;
08999 }
09000
09001 return (ffelexHandler) ffestb_R100114_;
09002 }
09003
09004
09005
09006
09007
09008
09009
09010
09011
09012
09013 static ffelexHandler
09014 ffestb_R10012_ (ffelexToken t)
09015 {
09016 unsigned long unsigned_val;
09017 ffesttFormatList f;
09018
09019 switch (ffelex_token_type (t))
09020 {
09021 case FFELEX_typeOPEN_ANGLE:
09022 ffesta_confirmed ();
09023 ffestb_local_.format.pre.t = ffelex_token_use (t);
09024 ffelex_set_names_pure (FALSE);
09025 if (!ffesta_seen_first_exec && !ffestb_local_.format.complained)
09026 {
09027 ffestb_local_.format.complained = TRUE;
09028 ffebad_start (FFEBAD_FORMAT_EXPR_SPEC);
09029 ffebad_here (0, ffelex_token_where_line (t), ffelex_token_where_column (t));
09030 ffebad_finish ();
09031 }
09032 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
09033 FFEEXPR_contextFORMAT, (ffeexprCallback) ffestb_R100115_);
09034
09035 case FFELEX_typeNUMBER:
09036 ffestb_local_.format.sign = FALSE;
09037 ffestb_local_.format.pre.present = TRUE;
09038 ffestb_local_.format.pre.rtexpr = FALSE;
09039 ffestb_local_.format.pre.t = ffelex_token_use (t);
09040 ffestb_local_.format.pre.u.unsigned_val = unsigned_val
09041 = strtoul (ffelex_token_text (t), NULL, 10);
09042 ffelex_set_expecting_hollerith (unsigned_val, '\0',
09043 ffelex_token_where_line (t),
09044 ffelex_token_where_column (t));
09045 return (ffelexHandler) ffestb_R10014_;
09046
09047 case FFELEX_typePLUS:
09048 ffestb_local_.format.sign = TRUE;
09049 ffestb_local_.format.pre.t = ffelex_token_use (t);
09050 return (ffelexHandler) ffestb_R10013_;
09051
09052 case FFELEX_typeMINUS:
09053 ffestb_local_.format.sign = FALSE;
09054 ffestb_local_.format.pre.t = ffelex_token_use (t);
09055 return (ffelexHandler) ffestb_R10013_;
09056
09057 case FFELEX_typeCOLON:
09058 case FFELEX_typeCOLONCOLON:
09059 case FFELEX_typeSLASH:
09060 case FFELEX_typeCONCAT:
09061 case FFELEX_typeNAMES:
09062 case FFELEX_typeDOLLAR:
09063 case FFELEX_typeOPEN_PAREN:
09064 case FFELEX_typeOPEN_ARRAY:
09065 ffestb_local_.format.sign = FALSE;
09066 ffestb_local_.format.pre.present = FALSE;
09067 ffestb_local_.format.pre.rtexpr = FALSE;
09068 ffestb_local_.format.pre.t = NULL;
09069 ffestb_local_.format.pre.u.unsigned_val = 1;
09070 return (ffelexHandler) ffestb_R10014_ (t);
09071
09072 case FFELEX_typeCOMMA:
09073 ffebad_start (FFEBAD_FORMAT_EXTRA_COMMA);
09074 ffebad_here (0, ffelex_token_where_line (t), ffelex_token_where_column (t));
09075 ffebad_finish ();
09076 return (ffelexHandler) ffestb_R10012_;
09077
09078 case FFELEX_typeCLOSE_PAREN:
09079 ffebad_start (FFEBAD_FORMAT_EXTRA_COMMA);
09080 ffebad_here (0, ffelex_token_where_line (t), ffelex_token_where_column (t));
09081 ffebad_finish ();
09082 f = ffestb_local_.format.f->u.root.parent;
09083 if (f == NULL)
09084 return (ffelexHandler) ffestb_R100114_;
09085 ffestb_local_.format.f = f->next;
09086 return (ffelexHandler) ffestb_R100111_;
09087
09088 case FFELEX_typeCLOSE_ARRAY:
09089 f = ffestt_formatlist_append (ffestb_local_.format.f);
09090 f->type = FFESTP_formattypeSLASH;
09091 f->t = ffelex_token_use (t);
09092 f->u.R1010.val.present = FALSE;
09093 f->u.R1010.val.rtexpr = FALSE;
09094 f->u.R1010.val.t = NULL;
09095 f->u.R1010.val.u.unsigned_val = 1;
09096 f = ffestb_local_.format.f->u.root.parent;
09097 if (f == NULL)
09098 return (ffelexHandler) ffestb_R100114_;
09099 ffestb_local_.format.f = f->next;
09100 return (ffelexHandler) ffestb_R100111_;
09101
09102 case FFELEX_typeEOS:
09103 case FFELEX_typeSEMICOLON:
09104 ffesta_confirmed ();
09105 ffesta_ffebad_1t (FFEBAD_FORMAT_MISSING_PAREN, t);
09106 for (f = ffestb_local_.format.f;
09107 f->u.root.parent != NULL;
09108 f = f->u.root.parent->next)
09109 ;
09110 ffestb_local_.format.f = f;
09111 return (ffelexHandler) ffestb_R100114_ (t);
09112
09113 case FFELEX_typeQUOTE:
09114 if (ffe_is_vxt ())
09115 break;
09116
09117 ffelex_set_expecting_hollerith (-1, '\"',
09118 ffelex_token_where_line (t),
09119 ffelex_token_where_column (t));
09120
09121 return (ffelexHandler) ffestb_R100113_;
09122
09123 case FFELEX_typeAPOSTROPHE:
09124 #if 0
09125
09126 ffesta_tokens[1] = ffelex_token_use (t);
09127 #endif
09128 ffelex_set_expecting_hollerith (-1, '\'',
09129 ffelex_token_where_line (t),
09130 ffelex_token_where_column (t));
09131
09132 return (ffelexHandler) ffestb_R100113_;
09133
09134 default:
09135 break;
09136 }
09137
09138 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FORMAT", t);
09139 ffestt_formatlist_kill (ffestb_local_.format.f);
09140 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
09141 }
09142
09143
09144
09145
09146
09147
09148
09149 static ffelexHandler
09150 ffestb_R10013_ (ffelexToken t)
09151 {
09152 unsigned long unsigned_val;
09153
09154 switch (ffelex_token_type (t))
09155 {
09156 case FFELEX_typeNUMBER:
09157 ffestb_local_.format.pre.present = TRUE;
09158 ffestb_local_.format.pre.rtexpr = FALSE;
09159 unsigned_val = strtoul (ffelex_token_text (t), NULL, 10);
09160 ffestb_local_.format.pre.u.signed_val = ffestb_local_.format.sign
09161 ? unsigned_val : -unsigned_val;
09162 ffestb_local_.format.sign = TRUE;
09163 return (ffelexHandler) ffestb_R10014_;
09164
09165 default:
09166 ffebad_start (FFEBAD_FORMAT_SPURIOUS_SIGN);
09167 ffebad_here (0, ffelex_token_where_line (ffestb_local_.format.pre.t),
09168 ffelex_token_where_column (ffestb_local_.format.pre.t));
09169 ffebad_finish ();
09170 ffelex_token_kill (ffestb_local_.format.pre.t);
09171 return (ffelexHandler) ffestb_R10012_ (t);
09172 }
09173 }
09174
09175
09176
09177
09178
09179
09180
09181
09182
09183
09184
09185
09186
09187
09188 static ffelexHandler
09189 ffestb_R10014_ (ffelexToken t)
09190 {
09191 ffesttFormatList f;
09192 ffeTokenLength i;
09193 const char *p;
09194 ffestrFormat kw;
09195
09196 ffelex_set_expecting_hollerith (0, '\0',
09197 ffewhere_line_unknown (),
09198 ffewhere_column_unknown ());
09199
09200 switch (ffelex_token_type (t))
09201 {
09202 case FFELEX_typeHOLLERITH:
09203 f = ffestt_formatlist_append (ffestb_local_.format.f);
09204 f->type = FFESTP_formattypeR1016;
09205 f->t = ffelex_token_use (t);
09206 ffelex_token_kill (ffestb_local_.format.pre.t);
09207 return (ffelexHandler) ffestb_R100111_;
09208
09209 case FFELEX_typeNUMBER:
09210 assert (ffestb_local_.format.pre.present);
09211 ffesta_confirmed ();
09212 if (ffestb_local_.format.pre.rtexpr)
09213 {
09214 ffebad_start (FFEBAD_FORMAT_SPURIOUS_NUMBER);
09215 ffebad_here (0, ffelex_token_where_line (t), ffelex_token_where_column (t));
09216 ffebad_finish ();
09217 return (ffelexHandler) ffestb_R10014_;
09218 }
09219 if (ffestb_local_.format.sign)
09220 {
09221 for (i = ffelex_token_length (t) + 1; i > 0; --i)
09222 ffestb_local_.format.pre.u.signed_val *= 10;
09223 ffestb_local_.format.pre.u.signed_val += strtoul (ffelex_token_text (t),
09224 NULL, 10);
09225 }
09226 else
09227 {
09228 for (i = ffelex_token_length (t) + 1; i > 0; --i)
09229 ffestb_local_.format.pre.u.unsigned_val *= 10;
09230 ffestb_local_.format.pre.u.unsigned_val += strtoul (ffelex_token_text (t),
09231 NULL, 10);
09232 ffelex_set_expecting_hollerith (ffestb_local_.format.pre.u.unsigned_val,
09233 '\0',
09234 ffelex_token_where_line (t),
09235 ffelex_token_where_column (t));
09236 }
09237 return (ffelexHandler) ffestb_R10014_;
09238
09239 case FFELEX_typeCOLONCOLON:
09240 if (ffestb_local_.format.pre.present)
09241 {
09242 ffesta_ffebad_1t (FFEBAD_FORMAT_BAD_COLON_SPEC,
09243 ffestb_local_.format.pre.t);
09244 ffelex_token_kill (ffestb_local_.format.pre.t);
09245 ffestb_local_.format.pre.present = FALSE;
09246 }
09247 else
09248 {
09249 f = ffestt_formatlist_append (ffestb_local_.format.f);
09250 f->type = FFESTP_formattypeCOLON;
09251 f->t = ffelex_token_use (t);
09252 f->u.R1010.val.present = FALSE;
09253 f->u.R1010.val.rtexpr = FALSE;
09254 f->u.R1010.val.t = NULL;
09255 f->u.R1010.val.u.unsigned_val = 1;
09256 }
09257 f = ffestt_formatlist_append (ffestb_local_.format.f);
09258 f->type = FFESTP_formattypeCOLON;
09259 f->t = ffelex_token_use (t);
09260 f->u.R1010.val.present = FALSE;
09261 f->u.R1010.val.rtexpr = FALSE;
09262 f->u.R1010.val.t = NULL;
09263 f->u.R1010.val.u.unsigned_val = 1;
09264 return (ffelexHandler) ffestb_R100112_;
09265
09266 case FFELEX_typeCOLON:
09267 if (ffestb_local_.format.pre.present)
09268 {
09269 ffesta_ffebad_1t (FFEBAD_FORMAT_BAD_COLON_SPEC,
09270 ffestb_local_.format.pre.t);
09271 ffelex_token_kill (ffestb_local_.format.pre.t);
09272 return (ffelexHandler) ffestb_R100112_;
09273 }
09274 f = ffestt_formatlist_append (ffestb_local_.format.f);
09275 f->type = FFESTP_formattypeCOLON;
09276 f->t = ffelex_token_use (t);
09277 f->u.R1010.val.present = FALSE;
09278 f->u.R1010.val.rtexpr = FALSE;
09279 f->u.R1010.val.t = NULL;
09280 f->u.R1010.val.u.unsigned_val = 1;
09281 return (ffelexHandler) ffestb_R100112_;
09282
09283 case FFELEX_typeCONCAT:
09284 if (ffestb_local_.format.sign)
09285 {
09286 ffebad_start (FFEBAD_FORMAT_SPURIOUS_SIGN);
09287 ffebad_here (0, ffelex_token_where_line (ffestb_local_.format.pre.t),
09288 ffelex_token_where_column (ffestb_local_.format.pre.t));
09289 ffebad_finish ();
09290 ffestb_local_.format.pre.u.unsigned_val
09291 = (ffestb_local_.format.pre.u.signed_val < 0)
09292 ? -ffestb_local_.format.pre.u.signed_val
09293 : ffestb_local_.format.pre.u.signed_val;
09294 }
09295 f = ffestt_formatlist_append (ffestb_local_.format.f);
09296 f->type = FFESTP_formattypeSLASH;
09297 f->t = ffelex_token_use (t);
09298 f->u.R1010.val = ffestb_local_.format.pre;
09299 ffestb_local_.format.pre.present = FALSE;
09300 ffestb_local_.format.pre.rtexpr = FALSE;
09301 ffestb_local_.format.pre.t = NULL;
09302 ffestb_local_.format.pre.u.unsigned_val = 1;
09303 f = ffestt_formatlist_append (ffestb_local_.format.f);
09304 f->type = FFESTP_formattypeSLASH;
09305 f->t = ffelex_token_use (t);
09306 f->u.R1010.val = ffestb_local_.format.pre;
09307 return (ffelexHandler) ffestb_R100112_;
09308
09309 case FFELEX_typeSLASH:
09310 if (ffestb_local_.format.sign)
09311 {
09312 ffebad_start (FFEBAD_FORMAT_SPURIOUS_SIGN);
09313 ffebad_here (0, ffelex_token_where_line (ffestb_local_.format.pre.t),
09314 ffelex_token_where_column (ffestb_local_.format.pre.t));
09315 ffebad_finish ();
09316 ffestb_local_.format.pre.u.unsigned_val
09317 = (ffestb_local_.format.pre.u.signed_val < 0)
09318 ? -ffestb_local_.format.pre.u.signed_val
09319 : ffestb_local_.format.pre.u.signed_val;
09320 }
09321 f = ffestt_formatlist_append (ffestb_local_.format.f);
09322 f->type = FFESTP_formattypeSLASH;
09323 f->t = ffelex_token_use (t);
09324 f->u.R1010.val = ffestb_local_.format.pre;
09325 return (ffelexHandler) ffestb_R100112_;
09326
09327 case FFELEX_typeOPEN_PAREN:
09328 if (ffestb_local_.format.sign)
09329 {
09330 ffebad_start (FFEBAD_FORMAT_SPURIOUS_SIGN);
09331 ffebad_here (0, ffelex_token_where_line (ffestb_local_.format.pre.t),
09332 ffelex_token_where_column (ffestb_local_.format.pre.t));
09333 ffebad_finish ();
09334 ffestb_local_.format.pre.u.unsigned_val
09335 = (ffestb_local_.format.pre.u.signed_val < 0)
09336 ? -ffestb_local_.format.pre.u.signed_val
09337 : ffestb_local_.format.pre.u.signed_val;
09338 }
09339 f = ffestt_formatlist_append (ffestb_local_.format.f);
09340 f->type = FFESTP_formattypeFORMAT;
09341 f->t = ffelex_token_use (t);
09342 f->u.R1003D.R1004 = ffestb_local_.format.pre;
09343 f->u.R1003D.format = ffestb_local_.format.f
09344 = ffestt_formatlist_create (f, ffelex_token_use (t));
09345 return (ffelexHandler) ffestb_R10011_;
09346
09347 case FFELEX_typeOPEN_ARRAY:
09348 if (ffestb_local_.format.sign)
09349 {
09350 ffebad_start (FFEBAD_FORMAT_SPURIOUS_SIGN);
09351 ffebad_here (0, ffelex_token_where_line (ffestb_local_.format.pre.t),
09352 ffelex_token_where_column (ffestb_local_.format.pre.t));
09353 ffebad_finish ();
09354 ffestb_local_.format.pre.u.unsigned_val
09355 = (ffestb_local_.format.pre.u.signed_val < 0)
09356 ? -ffestb_local_.format.pre.u.signed_val
09357 : ffestb_local_.format.pre.u.signed_val;
09358 }
09359 f = ffestt_formatlist_append (ffestb_local_.format.f);
09360 f->type = FFESTP_formattypeFORMAT;
09361 f->t = ffelex_token_use (t);
09362 f->u.R1003D.R1004 = ffestb_local_.format.pre;
09363 f->u.R1003D.format = ffestb_local_.format.f
09364 = ffestt_formatlist_create (f, ffelex_token_use (t));
09365 f = ffestt_formatlist_append (ffestb_local_.format.f);
09366 f->type = FFESTP_formattypeSLASH;
09367 f->t = ffelex_token_use (t);
09368 f->u.R1010.val.present = FALSE;
09369 f->u.R1010.val.rtexpr = FALSE;
09370 f->u.R1010.val.t = NULL;
09371 f->u.R1010.val.u.unsigned_val = 1;
09372 return (ffelexHandler) ffestb_R100112_;
09373
09374 case FFELEX_typeCLOSE_ARRAY:
09375 f = ffestt_formatlist_append (ffestb_local_.format.f);
09376 f->type = FFESTP_formattypeSLASH;
09377 f->t = ffelex_token_use (t);
09378 f->u.R1010.val = ffestb_local_.format.pre;
09379 f = ffestb_local_.format.f->u.root.parent;
09380 if (f == NULL)
09381 return (ffelexHandler) ffestb_R100114_;
09382 ffestb_local_.format.f = f->next;
09383 return (ffelexHandler) ffestb_R100111_;
09384
09385 case FFELEX_typeQUOTE:
09386 if (ffe_is_vxt ())
09387 break;
09388 ffebad_start (FFEBAD_FORMAT_SPURIOUS_NUMBER);
09389 ffebad_here (0, ffelex_token_where_line (ffestb_local_.format.pre.t),
09390 ffelex_token_where_column (ffestb_local_.format.pre.t));
09391 ffebad_finish ();
09392 ffelex_token_kill (ffestb_local_.format.pre.t);
09393 ffesta_confirmed ();
09394 #if 0
09395
09396 ffesta_tokens[1] = ffelex_token_use (t);
09397 #endif
09398 ffelex_set_expecting_hollerith (-1, '\"',
09399 ffelex_token_where_line (t),
09400 ffelex_token_where_column (t));
09401
09402 return (ffelexHandler) ffestb_R100113_;
09403
09404 case FFELEX_typeAPOSTROPHE:
09405 ffesta_confirmed ();
09406 ffebad_start (FFEBAD_FORMAT_SPURIOUS_NUMBER);
09407 ffebad_here (0, ffelex_token_where_line (ffestb_local_.format.pre.t),
09408 ffelex_token_where_column (ffestb_local_.format.pre.t));
09409 ffebad_finish ();
09410 ffelex_token_kill (ffestb_local_.format.pre.t);
09411 #if 0
09412
09413 ffesta_tokens[1] = ffelex_token_use (t);
09414 #endif
09415 ffelex_set_expecting_hollerith (-1, '\'', ffelex_token_where_line (t),
09416 ffelex_token_where_column (t));
09417
09418 return (ffelexHandler) ffestb_R100113_;
09419
09420 case FFELEX_typeEOS:
09421 case FFELEX_typeSEMICOLON:
09422 ffesta_confirmed ();
09423 ffesta_ffebad_1t (FFEBAD_FORMAT_MISSING_PAREN, t);
09424 for (f = ffestb_local_.format.f;
09425 f->u.root.parent != NULL;
09426 f = f->u.root.parent->next)
09427 ;
09428 ffestb_local_.format.f = f;
09429 ffelex_token_kill (ffestb_local_.format.pre.t);
09430 return (ffelexHandler) ffestb_R100114_ (t);
09431
09432 case FFELEX_typeDOLLAR:
09433 ffestb_local_.format.t = ffelex_token_use (t);
09434 if (ffestb_local_.format.pre.present)
09435 ffesta_confirmed ();
09436 ffestb_local_.format.current = FFESTP_formattypeDOLLAR;
09437 return (ffelexHandler) ffestb_R10015_;
09438
09439 case FFELEX_typeNAMES:
09440 kw = ffestr_format (t);
09441 ffestb_local_.format.t = ffelex_token_use (t);
09442 switch (kw)
09443 {
09444 case FFESTR_formatI:
09445 if (ffestb_local_.format.pre.present)
09446 ffesta_confirmed ();
09447 ffestb_local_.format.current = FFESTP_formattypeI;
09448 i = FFESTR_formatlI;
09449 break;
09450
09451 case FFESTR_formatB:
09452 if (ffestb_local_.format.pre.present)
09453 ffesta_confirmed ();
09454 ffestb_local_.format.current = FFESTP_formattypeB;
09455 i = FFESTR_formatlB;
09456 break;
09457
09458 case FFESTR_formatO:
09459 if (ffestb_local_.format.pre.present)
09460 ffesta_confirmed ();
09461 ffestb_local_.format.current = FFESTP_formattypeO;
09462 i = FFESTR_formatlO;
09463 break;
09464
09465 case FFESTR_formatZ:
09466 if (ffestb_local_.format.pre.present)
09467 ffesta_confirmed ();
09468 ffestb_local_.format.current = FFESTP_formattypeZ;
09469 i = FFESTR_formatlZ;
09470 break;
09471
09472 case FFESTR_formatF:
09473 if (ffestb_local_.format.pre.present)
09474 ffesta_confirmed ();
09475 ffestb_local_.format.current = FFESTP_formattypeF;
09476 i = FFESTR_formatlF;
09477 break;
09478
09479 case FFESTR_formatE:
09480 ffestb_local_.format.current = FFESTP_formattypeE;
09481 i = FFESTR_formatlE;
09482 break;
09483
09484 case FFESTR_formatEN:
09485 if (ffestb_local_.format.pre.present)
09486 ffesta_confirmed ();
09487 ffestb_local_.format.current = FFESTP_formattypeEN;
09488 i = FFESTR_formatlEN;
09489 break;
09490
09491 case FFESTR_formatG:
09492 if (ffestb_local_.format.pre.present)
09493 ffesta_confirmed ();
09494 ffestb_local_.format.current = FFESTP_formattypeG;
09495 i = FFESTR_formatlG;
09496 break;
09497
09498 case FFESTR_formatL:
09499 if (ffestb_local_.format.pre.present)
09500 ffesta_confirmed ();
09501 ffestb_local_.format.current = FFESTP_formattypeL;
09502 i = FFESTR_formatlL;
09503 break;
09504
09505 case FFESTR_formatA:
09506 if (ffestb_local_.format.pre.present)
09507 ffesta_confirmed ();
09508 ffestb_local_.format.current = FFESTP_formattypeA;
09509 i = FFESTR_formatlA;
09510 break;
09511
09512 case FFESTR_formatD:
09513 ffestb_local_.format.current = FFESTP_formattypeD;
09514 i = FFESTR_formatlD;
09515 break;
09516
09517 case FFESTR_formatQ:
09518 ffestb_local_.format.current = FFESTP_formattypeQ;
09519 i = FFESTR_formatlQ;
09520 break;
09521
09522 case FFESTR_formatDOLLAR:
09523 if (ffestb_local_.format.pre.present)
09524 ffesta_confirmed ();
09525 ffestb_local_.format.current = FFESTP_formattypeDOLLAR;
09526 i = FFESTR_formatlDOLLAR;
09527 break;
09528
09529 case FFESTR_formatP:
09530 if (ffestb_local_.format.pre.present)
09531 ffesta_confirmed ();
09532 ffestb_local_.format.current = FFESTP_formattypeP;
09533 i = FFESTR_formatlP;
09534 break;
09535
09536 case FFESTR_formatT:
09537 if (ffestb_local_.format.pre.present)
09538 ffesta_confirmed ();
09539 ffestb_local_.format.current = FFESTP_formattypeT;
09540 i = FFESTR_formatlT;
09541 break;
09542
09543 case FFESTR_formatTL:
09544 if (ffestb_local_.format.pre.present)
09545 ffesta_confirmed ();
09546 ffestb_local_.format.current = FFESTP_formattypeTL;
09547 i = FFESTR_formatlTL;
09548 break;
09549
09550 case FFESTR_formatTR:
09551 if (ffestb_local_.format.pre.present)
09552 ffesta_confirmed ();
09553 ffestb_local_.format.current = FFESTP_formattypeTR;
09554 i = FFESTR_formatlTR;
09555 break;
09556
09557 case FFESTR_formatX:
09558 if (ffestb_local_.format.pre.present)
09559 ffesta_confirmed ();
09560 ffestb_local_.format.current = FFESTP_formattypeX;
09561 i = FFESTR_formatlX;
09562 break;
09563
09564 case FFESTR_formatS:
09565 if (ffestb_local_.format.pre.present)
09566 ffesta_confirmed ();
09567 ffestb_local_.format.current = FFESTP_formattypeS;
09568 i = FFESTR_formatlS;
09569 break;
09570
09571 case FFESTR_formatSP:
09572 if (ffestb_local_.format.pre.present)
09573 ffesta_confirmed ();
09574 ffestb_local_.format.current = FFESTP_formattypeSP;
09575 i = FFESTR_formatlSP;
09576 break;
09577
09578 case FFESTR_formatSS:
09579 if (ffestb_local_.format.pre.present)
09580 ffesta_confirmed ();
09581 ffestb_local_.format.current = FFESTP_formattypeSS;
09582 i = FFESTR_formatlSS;
09583 break;
09584
09585 case FFESTR_formatBN:
09586 if (ffestb_local_.format.pre.present)
09587 ffesta_confirmed ();
09588 ffestb_local_.format.current = FFESTP_formattypeBN;
09589 i = FFESTR_formatlBN;
09590 break;
09591
09592 case FFESTR_formatBZ:
09593 if (ffestb_local_.format.pre.present)
09594 ffesta_confirmed ();
09595 ffestb_local_.format.current = FFESTP_formattypeBZ;
09596 i = FFESTR_formatlBZ;
09597 break;
09598
09599 case FFESTR_formatH:
09600 if (ffestb_local_.format.pre.present)
09601 ffesta_confirmed ();
09602 ffestb_local_.format.current = FFESTP_formattypeH;
09603 i = FFESTR_formatlH;
09604 break;
09605
09606 case FFESTR_formatPD:
09607 if (ffestb_local_.format.pre.present)
09608 ffesta_confirmed ();
09609 ffestb_subr_R1001_append_p_ ();
09610 ffestb_local_.format.t = ffelex_token_name_from_names (t,
09611 FFESTR_formatlP, 1);
09612 ffestb_local_.format.sign = FALSE;
09613 ffestb_local_.format.pre.present = FALSE;
09614 ffestb_local_.format.pre.rtexpr = FALSE;
09615 ffestb_local_.format.pre.t = NULL;
09616 ffestb_local_.format.pre.u.unsigned_val = 1;
09617 ffestb_local_.format.current = FFESTP_formattypeD;
09618 i = FFESTR_formatlPD;
09619 break;
09620
09621 case FFESTR_formatPE:
09622 if (ffestb_local_.format.pre.present)
09623 ffesta_confirmed ();
09624 ffestb_subr_R1001_append_p_ ();
09625 ffestb_local_.format.t = ffelex_token_name_from_names (t,
09626 FFESTR_formatlP, 1);
09627 ffestb_local_.format.sign = FALSE;
09628 ffestb_local_.format.pre.present = FALSE;
09629 ffestb_local_.format.pre.rtexpr = FALSE;
09630 ffestb_local_.format.pre.t = NULL;
09631 ffestb_local_.format.pre.u.unsigned_val = 1;
09632 ffestb_local_.format.current = FFESTP_formattypeE;
09633 i = FFESTR_formatlPE;
09634 break;
09635
09636 case FFESTR_formatPEN:
09637 if (ffestb_local_.format.pre.present)
09638 ffesta_confirmed ();
09639 ffestb_subr_R1001_append_p_ ();
09640 ffestb_local_.format.t = ffelex_token_name_from_names (t,
09641 FFESTR_formatlP, 1);
09642 ffestb_local_.format.sign = FALSE;
09643 ffestb_local_.format.pre.present = FALSE;
09644 ffestb_local_.format.pre.rtexpr = FALSE;
09645 ffestb_local_.format.pre.t = NULL;
09646 ffestb_local_.format.pre.u.unsigned_val = 1;
09647 ffestb_local_.format.current = FFESTP_formattypeEN;
09648 i = FFESTR_formatlPEN;
09649 break;
09650
09651 case FFESTR_formatPF:
09652 if (ffestb_local_.format.pre.present)
09653 ffesta_confirmed ();
09654 ffestb_subr_R1001_append_p_ ();
09655 ffestb_local_.format.t = ffelex_token_name_from_names (t,
09656 FFESTR_formatlP, 1);
09657 ffestb_local_.format.sign = FALSE;
09658 ffestb_local_.format.pre.present = FALSE;
09659 ffestb_local_.format.pre.rtexpr = FALSE;
09660 ffestb_local_.format.pre.t = NULL;
09661 ffestb_local_.format.pre.u.unsigned_val = 1;
09662 ffestb_local_.format.current = FFESTP_formattypeF;
09663 i = FFESTR_formatlPF;
09664 break;
09665
09666 case FFESTR_formatPG:
09667 if (ffestb_local_.format.pre.present)
09668 ffesta_confirmed ();
09669 ffestb_subr_R1001_append_p_ ();
09670 ffestb_local_.format.t = ffelex_token_name_from_names (t,
09671 FFESTR_formatlP, 1);
09672 ffestb_local_.format.sign = FALSE;
09673 ffestb_local_.format.pre.present = FALSE;
09674 ffestb_local_.format.pre.rtexpr = FALSE;
09675 ffestb_local_.format.pre.t = NULL;
09676 ffestb_local_.format.pre.u.unsigned_val = 1;
09677 ffestb_local_.format.current = FFESTP_formattypeG;
09678 i = FFESTR_formatlPG;
09679 break;
09680
09681 default:
09682 if (ffestb_local_.format.pre.present)
09683 ffesta_confirmed ();
09684 ffestb_local_.format.current = FFESTP_formattypeNone;
09685 p = strpbrk (ffelex_token_text (t), "0123456789");
09686 if (p == NULL)
09687 i = ffelex_token_length (t);
09688 else
09689 i = p - ffelex_token_text (t);
09690 break;
09691 }
09692 p = ffelex_token_text (t) + i;
09693 if (*p == '\0')
09694 return (ffelexHandler) ffestb_R10015_;
09695 if (! ISDIGIT (*p))
09696 {
09697 if (ffestb_local_.format.current == FFESTP_formattypeH)
09698 p = strpbrk (p, "0123456789");
09699 else
09700 {
09701 p = NULL;
09702 ffestb_local_.format.current = FFESTP_formattypeNone;
09703 }
09704 if (p == NULL)
09705 return (ffelexHandler) ffestb_R10015_;
09706 i = p - ffelex_token_text (t);
09707 }
09708 ffestb_local_.format.post.present = TRUE;
09709 ffestb_local_.format.post.rtexpr = FALSE;
09710 ffestb_local_.format.post.t = ffelex_token_number_from_names (t, i);
09711 ffestb_local_.format.post.u.unsigned_val
09712 = strtoul (ffelex_token_text (ffestb_local_.format.post.t), NULL, 10);
09713 p += ffelex_token_length (ffestb_local_.format.post.t);
09714 i += ffelex_token_length (ffestb_local_.format.post.t);
09715 if (*p == '\0')
09716 return (ffelexHandler) ffestb_R10016_;
09717 if ((kw != FFESTR_formatP) ||
09718 !ffelex_is_firstnamechar ((unsigned char)*p))
09719 {
09720 if (ffestb_local_.format.current != FFESTP_formattypeH)
09721 ffesta_ffebad_1p (FFEBAD_FORMAT_TEXT_IN_NUMBER, t, i, NULL);
09722 return (ffelexHandler) ffestb_R10016_;
09723 }
09724
09725
09726
09727
09728 ffestb_subr_R1001_append_p_ ();
09729 t = ffestb_local_.format.t = ffelex_token_names_from_names (t, i, 0);
09730 ffestb_local_.format.sign = FALSE;
09731 ffestb_local_.format.pre = ffestb_local_.format.post;
09732 kw = ffestr_format (t);
09733 switch (kw)
09734 {
09735 case FFESTR_formatD:
09736 ffestb_local_.format.current = FFESTP_formattypeD;
09737 i = FFESTR_formatlD;
09738 break;
09739
09740 case FFESTR_formatE:
09741 ffestb_local_.format.current = FFESTP_formattypeE;
09742 i = FFESTR_formatlE;
09743 break;
09744
09745 case FFESTR_formatEN:
09746 ffestb_local_.format.current = FFESTP_formattypeEN;
09747 i = FFESTR_formatlEN;
09748 break;
09749
09750 case FFESTR_formatF:
09751 ffestb_local_.format.current = FFESTP_formattypeF;
09752 i = FFESTR_formatlF;
09753 break;
09754
09755 case FFESTR_formatG:
09756 ffestb_local_.format.current = FFESTP_formattypeG;
09757 i = FFESTR_formatlG;
09758 break;
09759
09760 default:
09761 ffebad_start (FFEBAD_FORMAT_P_NOCOMMA);
09762 ffebad_here (0, ffelex_token_where_line (t), ffelex_token_where_column (t));
09763 ffebad_finish ();
09764 ffestb_local_.format.current = FFESTP_formattypeNone;
09765 p = strpbrk (ffelex_token_text (t), "0123456789");
09766 if (p == NULL)
09767 i = ffelex_token_length (t);
09768 else
09769 i = p - ffelex_token_text (t);
09770 }
09771 p = ffelex_token_text (t) + i;
09772 if (*p == '\0')
09773 return (ffelexHandler) ffestb_R10015_;
09774 if (! ISDIGIT (*p))
09775 {
09776 ffestb_local_.format.current = FFESTP_formattypeNone;
09777 p = strpbrk (p, "0123456789");
09778 if (p == NULL)
09779 return (ffelexHandler) ffestb_R10015_;
09780 i = p - ffelex_token_text (t);
09781 }
09782 ffestb_local_.format.post.present = TRUE;
09783 ffestb_local_.format.post.rtexpr = FALSE;
09784 ffestb_local_.format.post.t = ffelex_token_number_from_names (t, i);
09785 ffestb_local_.format.post.u.unsigned_val
09786 = strtoul (ffelex_token_text (ffestb_local_.format.post.t), NULL, 10);
09787 p += ffelex_token_length (ffestb_local_.format.post.t);
09788 i += ffelex_token_length (ffestb_local_.format.post.t);
09789 if (*p == '\0')
09790 return (ffelexHandler) ffestb_R10016_;
09791 ffesta_ffebad_1p (FFEBAD_FORMAT_TEXT_IN_NUMBER, t, i, NULL);
09792 return (ffelexHandler) ffestb_R10016_;
09793
09794 default:
09795 break;
09796 }
09797
09798 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FORMAT", t);
09799 if (ffestb_local_.format.pre.present)
09800 ffelex_token_kill (ffestb_local_.format.pre.t);
09801 ffestt_formatlist_kill (ffestb_local_.format.f);
09802 return (ffelexHandler) ffelex_swallow_tokens (t,
09803 (ffelexHandler) ffesta_zero);
09804 }
09805
09806
09807
09808
09809
09810
09811
09812
09813
09814
09815
09816 static ffelexHandler
09817 ffestb_R10015_ (ffelexToken t)
09818 {
09819 bool split_pea;
09820
09821 ffestrFormat kw;
09822 const char *p;
09823 ffeTokenLength i;
09824
09825 switch (ffelex_token_type (t))
09826 {
09827 case FFELEX_typeOPEN_ANGLE:
09828 ffesta_confirmed ();
09829 ffestb_local_.format.post.t = ffelex_token_use (t);
09830 ffelex_set_names_pure (FALSE);
09831 if (!ffesta_seen_first_exec && !ffestb_local_.format.complained)
09832 {
09833 ffestb_local_.format.complained = TRUE;
09834 ffebad_start (FFEBAD_FORMAT_EXPR_SPEC);
09835 ffebad_here (0, ffelex_token_where_line (t), ffelex_token_where_column (t));
09836 ffebad_finish ();
09837 }
09838 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
09839 FFEEXPR_contextFORMAT, (ffeexprCallback) ffestb_R100116_);
09840
09841 case FFELEX_typeNUMBER:
09842 ffestb_local_.format.post.present = TRUE;
09843 ffestb_local_.format.post.rtexpr = FALSE;
09844 ffestb_local_.format.post.t = ffelex_token_use (t);
09845 ffestb_local_.format.post.u.unsigned_val
09846 = strtoul (ffelex_token_text (t), NULL, 10);
09847 return (ffelexHandler) ffestb_R10016_;
09848
09849 case FFELEX_typeNAMES:
09850 ffesta_confirmed ();
09851
09852 kw = ffestr_format (t);
09853 switch (ffestb_local_.format.current)
09854 {
09855 case FFESTP_formattypeP:
09856 split_pea = TRUE;
09857 break;
09858
09859 case FFESTP_formattypeH:
09860 kw = FFESTR_formatNone;
09861 split_pea = FALSE;
09862 break;
09863
09864 default:
09865 split_pea = FALSE;
09866 break;
09867 }
09868
09869 switch (kw)
09870 {
09871 case FFESTR_formatF:
09872 switch (ffestb_local_.format.current)
09873 {
09874 case FFESTP_formattypeP:
09875 ffestb_local_.format.current = FFESTP_formattypeF;
09876 break;
09877
09878 default:
09879 ffestb_local_.format.current = FFESTP_formattypeNone;
09880 break;
09881 }
09882 i = FFESTR_formatlF;
09883 break;
09884
09885 case FFESTR_formatE:
09886 switch (ffestb_local_.format.current)
09887 {
09888 case FFESTP_formattypeP:
09889 ffestb_local_.format.current = FFESTP_formattypeE;
09890 break;
09891
09892 default:
09893 ffestb_local_.format.current = FFESTP_formattypeNone;
09894 break;
09895 }
09896 i = FFESTR_formatlE;
09897 break;
09898
09899 case FFESTR_formatEN:
09900 switch (ffestb_local_.format.current)
09901 {
09902 case FFESTP_formattypeP:
09903 ffestb_local_.format.current = FFESTP_formattypeEN;
09904 break;
09905
09906 default:
09907 ffestb_local_.format.current = FFESTP_formattypeNone;
09908 break;
09909 }
09910 i = FFESTR_formatlEN;
09911 break;
09912
09913 case FFESTR_formatG:
09914 switch (ffestb_local_.format.current)
09915 {
09916 case FFESTP_formattypeP:
09917 ffestb_local_.format.current = FFESTP_formattypeG;
09918 break;
09919
09920 default:
09921 ffestb_local_.format.current = FFESTP_formattypeNone;
09922 break;
09923 }
09924 i = FFESTR_formatlG;
09925 break;
09926
09927 case FFESTR_formatL:
09928 switch (ffestb_local_.format.current)
09929 {
09930 case FFESTP_formattypeT:
09931 ffestb_local_.format.current = FFESTP_formattypeTL;
09932 break;
09933
09934 default:
09935 ffestb_local_.format.current = FFESTP_formattypeNone;
09936 break;
09937 }
09938 i = FFESTR_formatlL;
09939 break;
09940
09941 case FFESTR_formatD:
09942 switch (ffestb_local_.format.current)
09943 {
09944 case FFESTP_formattypeP:
09945 ffestb_local_.format.current = FFESTP_formattypeD;
09946 break;
09947
09948 default:
09949 ffestb_local_.format.current = FFESTP_formattypeNone;
09950 break;
09951 }
09952 i = FFESTR_formatlD;
09953 break;
09954
09955 case FFESTR_formatS:
09956 switch (ffestb_local_.format.current)
09957 {
09958 case FFESTP_formattypeS:
09959 ffestb_local_.format.current = FFESTP_formattypeSS;
09960 break;
09961
09962 default:
09963 ffestb_local_.format.current = FFESTP_formattypeNone;
09964 break;
09965 }
09966 i = FFESTR_formatlS;
09967 break;
09968
09969 case FFESTR_formatP:
09970 switch (ffestb_local_.format.current)
09971 {
09972 case FFESTP_formattypeS:
09973 ffestb_local_.format.current = FFESTP_formattypeSP;
09974 break;
09975
09976 default:
09977 ffestb_local_.format.current = FFESTP_formattypeNone;
09978 break;
09979 }
09980 i = FFESTR_formatlP;
09981 break;
09982
09983 case FFESTR_formatR:
09984 switch (ffestb_local_.format.current)
09985 {
09986 case FFESTP_formattypeT:
09987 ffestb_local_.format.current = FFESTP_formattypeTR;
09988 break;
09989
09990 default:
09991 ffestb_local_.format.current = FFESTP_formattypeNone;
09992 break;
09993 }
09994 i = FFESTR_formatlR;
09995 break;
09996
09997 case FFESTR_formatZ:
09998 switch (ffestb_local_.format.current)
09999 {
10000 case FFESTP_formattypeB:
10001 ffestb_local_.format.current = FFESTP_formattypeBZ;
10002 break;
10003
10004 default:
10005 ffestb_local_.format.current = FFESTP_formattypeNone;
10006 break;
10007 }
10008 i = FFESTR_formatlZ;
10009 break;
10010
10011 case FFESTR_formatN:
10012 switch (ffestb_local_.format.current)
10013 {
10014 case FFESTP_formattypeE:
10015 ffestb_local_.format.current = FFESTP_formattypeEN;
10016 break;
10017
10018 case FFESTP_formattypeB:
10019 ffestb_local_.format.current = FFESTP_formattypeBN;
10020 break;
10021
10022 default:
10023 ffestb_local_.format.current = FFESTP_formattypeNone;
10024 break;
10025 }
10026 i = FFESTR_formatlN;
10027 break;
10028
10029 default:
10030 if (ffestb_local_.format.current != FFESTP_formattypeH)
10031 ffestb_local_.format.current = FFESTP_formattypeNone;
10032 split_pea = FALSE;
10033 p = strpbrk (ffelex_token_text (t), "0123456789");
10034 if (p == NULL)
10035 i = ffelex_token_length (t);
10036 else
10037 i = p - ffelex_token_text (t);
10038 }
10039
10040 if (split_pea)
10041 {
10042 ffestb_subr_R1001_append_p_ ();
10043 ffestb_local_.format.t = ffelex_token_use (t);
10044 ffestb_local_.format.sign = FALSE;
10045 ffestb_local_.format.pre.present = FALSE;
10046 ffestb_local_.format.pre.rtexpr = FALSE;
10047 ffestb_local_.format.pre.t = NULL;
10048 ffestb_local_.format.pre.u.unsigned_val = 1;
10049 }
10050
10051 p = ffelex_token_text (t) + i;
10052 if (*p == '\0')
10053 return (ffelexHandler) ffestb_R10015_;
10054 if (! ISDIGIT (*p))
10055 {
10056 ffestb_local_.format.current = FFESTP_formattypeNone;
10057 p = strpbrk (p, "0123456789");
10058 if (p == NULL)
10059 return (ffelexHandler) ffestb_R10015_;
10060 i = p - ffelex_token_text (t);
10061 }
10062 ffestb_local_.format.post.present = TRUE;
10063 ffestb_local_.format.post.rtexpr = FALSE;
10064 ffestb_local_.format.post.t = ffelex_token_number_from_names (t, i);
10065 ffestb_local_.format.post.u.unsigned_val
10066 = strtoul (ffelex_token_text (ffestb_local_.format.post.t), NULL, 10);
10067 p += ffelex_token_length (ffestb_local_.format.post.t);
10068 i += ffelex_token_length (ffestb_local_.format.post.t);
10069 if (*p == '\0')
10070 return (ffelexHandler) ffestb_R10016_;
10071 ffesta_ffebad_1p (FFEBAD_FORMAT_TEXT_IN_NUMBER, t, i, NULL);
10072 return (ffelexHandler) ffestb_R10016_;
10073
10074 default:
10075 ffestb_local_.format.post.present = FALSE;
10076 ffestb_local_.format.post.rtexpr = FALSE;
10077 ffestb_local_.format.post.t = NULL;
10078 ffestb_local_.format.post.u.unsigned_val = 1;
10079 return (ffelexHandler) ffestb_R10016_ (t);
10080 }
10081 }
10082
10083
10084
10085
10086
10087
10088
10089
10090
10091
10092
10093 static ffelexHandler
10094 ffestb_R10016_ (ffelexToken t)
10095 {
10096 ffeTokenLength i;
10097
10098 switch (ffelex_token_type (t))
10099 {
10100 case FFELEX_typePERIOD:
10101 return (ffelexHandler) ffestb_R10017_;
10102
10103 case FFELEX_typeNUMBER:
10104 assert (ffestb_local_.format.post.present);
10105 ffesta_confirmed ();
10106 if (ffestb_local_.format.post.rtexpr)
10107 {
10108 ffebad_start (FFEBAD_FORMAT_SPURIOUS_NUMBER);
10109 ffebad_here (0, ffelex_token_where_line (t), ffelex_token_where_column (t));
10110 ffebad_finish ();
10111 return (ffelexHandler) ffestb_R10016_;
10112 }
10113 for (i = ffelex_token_length (t) + 1; i > 0; --i)
10114 ffestb_local_.format.post.u.unsigned_val *= 10;
10115 ffestb_local_.format.post.u.unsigned_val += strtoul (ffelex_token_text (t),
10116 NULL, 10);
10117 return (ffelexHandler) ffestb_R10016_;
10118
10119 case FFELEX_typeNAMES:
10120 ffesta_confirmed ();
10121 if (ffestb_local_.format.current != FFESTP_formattypeP)
10122 {
10123 ffesta_ffebad_1t (FFEBAD_FORMAT_TEXT_IN_NUMBER, t);
10124 return (ffelexHandler) ffestb_R10016_;
10125 }
10126 ffestb_subr_R1001_append_p_ ();
10127 ffestb_local_.format.sign = FALSE;
10128 ffestb_local_.format.pre = ffestb_local_.format.post;
10129 return (ffelexHandler) ffestb_R10014_ (t);
10130
10131 default:
10132 ffestb_local_.format.dot.present = FALSE;
10133 ffestb_local_.format.dot.rtexpr = FALSE;
10134 ffestb_local_.format.dot.t = NULL;
10135 ffestb_local_.format.dot.u.unsigned_val = 1;
10136 return (ffelexHandler) ffestb_R10018_ (t);
10137 }
10138 }
10139
10140
10141
10142
10143
10144
10145
10146
10147
10148 static ffelexHandler
10149 ffestb_R10017_ (ffelexToken t)
10150 {
10151 switch (ffelex_token_type (t))
10152 {
10153 case FFELEX_typeOPEN_ANGLE:
10154 ffestb_local_.format.dot.t = ffelex_token_use (t);
10155 ffelex_set_names_pure (FALSE);
10156 if (!ffesta_seen_first_exec && !ffestb_local_.format.complained)
10157 {
10158 ffestb_local_.format.complained = TRUE;
10159 ffebad_start (FFEBAD_FORMAT_EXPR_SPEC);
10160 ffebad_here (0, ffelex_token_where_line (t), ffelex_token_where_column (t));
10161 ffebad_finish ();
10162 }
10163 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
10164 FFEEXPR_contextFORMAT, (ffeexprCallback) ffestb_R100117_);
10165
10166 case FFELEX_typeNUMBER:
10167 ffestb_local_.format.dot.present = TRUE;
10168 ffestb_local_.format.dot.rtexpr = FALSE;
10169 ffestb_local_.format.dot.t = ffelex_token_use (t);
10170 ffestb_local_.format.dot.u.unsigned_val
10171 = strtoul (ffelex_token_text (t), NULL, 10);
10172 return (ffelexHandler) ffestb_R10018_;
10173
10174 default:
10175 ffelex_token_kill (ffestb_local_.format.t);
10176 if (ffestb_local_.format.pre.present)
10177 ffelex_token_kill (ffestb_local_.format.pre.t);
10178 if (ffestb_local_.format.post.present)
10179 ffelex_token_kill (ffestb_local_.format.post.t);
10180 ffesta_ffebad_1t (FFEBAD_FORMAT_MISSING_DOT, t);
10181 ffestt_formatlist_kill (ffestb_local_.format.f);
10182 return (ffelexHandler) ffelex_swallow_tokens (t,
10183 (ffelexHandler) ffesta_zero);
10184 }
10185 }
10186
10187
10188
10189
10190
10191
10192
10193
10194
10195 static ffelexHandler
10196 ffestb_R10018_ (ffelexToken t)
10197 {
10198 ffeTokenLength i;
10199 const char *p;
10200
10201 switch (ffelex_token_type (t))
10202 {
10203 case FFELEX_typeNUMBER:
10204 assert (ffestb_local_.format.dot.present);
10205 ffesta_confirmed ();
10206 if (ffestb_local_.format.dot.rtexpr)
10207 {
10208 ffebad_start (FFEBAD_FORMAT_SPURIOUS_NUMBER);
10209 ffebad_here (0, ffelex_token_where_line (t), ffelex_token_where_column (t));
10210 ffebad_finish ();
10211 return (ffelexHandler) ffestb_R10018_;
10212 }
10213 for (i = ffelex_token_length (t) + 1; i > 0; --i)
10214 ffestb_local_.format.dot.u.unsigned_val *= 10;
10215 ffestb_local_.format.dot.u.unsigned_val += strtoul (ffelex_token_text (t),
10216 NULL, 10);
10217 return (ffelexHandler) ffestb_R10018_;
10218
10219 case FFELEX_typeNAMES:
10220 if (!ffesrc_char_match_init (*(p = ffelex_token_text (t)), 'E', 'e'))
10221 {
10222 ffesta_ffebad_1t (FFEBAD_FORMAT_TEXT_IN_NUMBER, t);
10223 return (ffelexHandler) ffestb_R10018_;
10224 }
10225 if (*++p == '\0')
10226 return (ffelexHandler) ffestb_R10019_;
10227 i = 1;
10228 if (! ISDIGIT (*p))
10229 {
10230 ffesta_ffebad_1p (FFEBAD_FORMAT_TEXT_IN_NUMBER, t, 1, NULL);
10231 return (ffelexHandler) ffestb_R10018_;
10232 }
10233 ffestb_local_.format.exp.present = TRUE;
10234 ffestb_local_.format.exp.rtexpr = FALSE;
10235 ffestb_local_.format.exp.t = ffelex_token_number_from_names (t, i);
10236 ffestb_local_.format.exp.u.unsigned_val
10237 = strtoul (ffelex_token_text (ffestb_local_.format.exp.t), NULL, 10);
10238 p += ffelex_token_length (ffestb_local_.format.exp.t);
10239 i += ffelex_token_length (ffestb_local_.format.exp.t);
10240 if (*p == '\0')
10241 return (ffelexHandler) ffestb_R100110_;
10242 ffesta_ffebad_1p (FFEBAD_FORMAT_TEXT_IN_NUMBER, t, i, NULL);
10243 return (ffelexHandler) ffestb_R100110_;
10244
10245 default:
10246 ffestb_local_.format.exp.present = FALSE;
10247 ffestb_local_.format.exp.rtexpr = FALSE;
10248 ffestb_local_.format.exp.t = NULL;
10249 ffestb_local_.format.exp.u.unsigned_val = 1;
10250 return (ffelexHandler) ffestb_R100110_ (t);
10251 }
10252 }
10253
10254
10255
10256
10257
10258
10259
10260
10261 static ffelexHandler
10262 ffestb_R10019_ (ffelexToken t)
10263 {
10264 switch (ffelex_token_type (t))
10265 {
10266 case FFELEX_typeOPEN_ANGLE:
10267 ffestb_local_.format.exp.t = ffelex_token_use (t);
10268 ffelex_set_names_pure (FALSE);
10269 if (!ffesta_seen_first_exec && !ffestb_local_.format.complained)
10270 {
10271 ffestb_local_.format.complained = TRUE;
10272 ffebad_start (FFEBAD_FORMAT_EXPR_SPEC);
10273 ffebad_here (0, ffelex_token_where_line (t), ffelex_token_where_column (t));
10274 ffebad_finish ();
10275 }
10276 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
10277 FFEEXPR_contextFORMAT, (ffeexprCallback) ffestb_R100118_);
10278
10279 case FFELEX_typeNUMBER:
10280 ffestb_local_.format.exp.present = TRUE;
10281 ffestb_local_.format.exp.rtexpr = FALSE;
10282 ffestb_local_.format.exp.t = ffelex_token_use (t);
10283 ffestb_local_.format.exp.u.unsigned_val
10284 = strtoul (ffelex_token_text (t), NULL, 10);
10285 return (ffelexHandler) ffestb_R100110_;
10286
10287 default:
10288 ffelex_token_kill (ffestb_local_.format.t);
10289 if (ffestb_local_.format.pre.present)
10290 ffelex_token_kill (ffestb_local_.format.pre.t);
10291 if (ffestb_local_.format.post.present)
10292 ffelex_token_kill (ffestb_local_.format.post.t);
10293 if (ffestb_local_.format.dot.present)
10294 ffelex_token_kill (ffestb_local_.format.dot.t);
10295 ffesta_ffebad_1t (FFEBAD_FORMAT_MISSING_EXP, t);
10296 ffestt_formatlist_kill (ffestb_local_.format.f);
10297 return (ffelexHandler) ffelex_swallow_tokens (t,
10298 (ffelexHandler) ffesta_zero);
10299 }
10300 }
10301
10302
10303
10304
10305
10306
10307
10308
10309
10310 static ffelexHandler
10311 ffestb_R100110_ (ffelexToken t)
10312 {
10313 ffeTokenLength i;
10314 enum expect
10315 {
10316 required,
10317 optional,
10318 disallowed
10319 };
10320 ffebad err;
10321 enum expect pre;
10322 enum expect post;
10323 enum expect dot;
10324 enum expect exp;
10325 bool R1005;
10326 ffesttFormatList f;
10327
10328 switch (ffelex_token_type (t))
10329 {
10330 case FFELEX_typeNUMBER:
10331 assert (ffestb_local_.format.exp.present);
10332 ffesta_confirmed ();
10333 if (ffestb_local_.format.exp.rtexpr)
10334 {
10335 ffebad_start (FFEBAD_FORMAT_SPURIOUS_NUMBER);
10336 ffebad_here (0, ffelex_token_where_line (t), ffelex_token_where_column (t));
10337 ffebad_finish ();
10338 return (ffelexHandler) ffestb_R100110_;
10339 }
10340 for (i = ffelex_token_length (t) + 1; i > 0; --i)
10341 ffestb_local_.format.exp.u.unsigned_val *= 10;
10342 ffestb_local_.format.exp.u.unsigned_val += strtoul (ffelex_token_text (t),
10343 NULL, 10);
10344 return (ffelexHandler) ffestb_R100110_;
10345
10346 default:
10347 if (ffestb_local_.format.sign
10348 && (ffestb_local_.format.current != FFESTP_formattypeP)
10349 && (ffestb_local_.format.current != FFESTP_formattypeH))
10350 {
10351 ffebad_start (FFEBAD_FORMAT_SPURIOUS_SIGN);
10352 ffebad_here (0, ffelex_token_where_line (ffestb_local_.format.pre.t),
10353 ffelex_token_where_column (ffestb_local_.format.pre.t));
10354 ffebad_finish ();
10355 ffestb_local_.format.pre.u.unsigned_val
10356 = (ffestb_local_.format.pre.u.signed_val < 0)
10357 ? -ffestb_local_.format.pre.u.signed_val
10358 : ffestb_local_.format.pre.u.signed_val;
10359 }
10360 switch (ffestb_local_.format.current)
10361 {
10362 case FFESTP_formattypeI:
10363 err = FFEBAD_FORMAT_BAD_I_SPEC;
10364 pre = optional;
10365 post = required;
10366 dot = optional;
10367 exp = disallowed;
10368 R1005 = TRUE;
10369 break;
10370
10371 case FFESTP_formattypeB:
10372 err = FFEBAD_FORMAT_BAD_B_SPEC;
10373 pre = optional;
10374 post = required;
10375 dot = optional;
10376 exp = disallowed;
10377 R1005 = TRUE;
10378 break;
10379
10380 case FFESTP_formattypeO:
10381 err = FFEBAD_FORMAT_BAD_O_SPEC;
10382 pre = optional;
10383 post = required;
10384 dot = optional;
10385 exp = disallowed;
10386 R1005 = TRUE;
10387 break;
10388
10389 case FFESTP_formattypeZ:
10390 err = FFEBAD_FORMAT_BAD_Z_SPEC;
10391 pre = optional;
10392 post = required;
10393 dot = optional;
10394 exp = disallowed;
10395 R1005 = TRUE;
10396 break;
10397
10398 case FFESTP_formattypeF:
10399 err = FFEBAD_FORMAT_BAD_F_SPEC;
10400 pre = optional;
10401 post = required;
10402 dot = required;
10403 exp = disallowed;
10404 R1005 = TRUE;
10405 break;
10406
10407 case FFESTP_formattypeE:
10408 err = FFEBAD_FORMAT_BAD_E_SPEC;
10409 pre = optional;
10410 post = required;
10411 dot = required;
10412 exp = optional;
10413 R1005 = TRUE;
10414 break;
10415
10416 case FFESTP_formattypeEN:
10417 err = FFEBAD_FORMAT_BAD_EN_SPEC;
10418 pre = optional;
10419 post = required;
10420 dot = required;
10421 exp = optional;
10422 R1005 = TRUE;
10423 break;
10424
10425 case FFESTP_formattypeG:
10426 err = FFEBAD_FORMAT_BAD_G_SPEC;
10427 pre = optional;
10428 post = required;
10429 dot = required;
10430 exp = optional;
10431 R1005 = TRUE;
10432 break;
10433
10434 case FFESTP_formattypeL:
10435 err = FFEBAD_FORMAT_BAD_L_SPEC;
10436 pre = optional;
10437 post = required;
10438 dot = disallowed;
10439 exp = disallowed;
10440 R1005 = TRUE;
10441 break;
10442
10443 case FFESTP_formattypeA:
10444 err = FFEBAD_FORMAT_BAD_A_SPEC;
10445 pre = optional;
10446 post = optional;
10447 dot = disallowed;
10448 exp = disallowed;
10449 R1005 = TRUE;
10450 break;
10451
10452 case FFESTP_formattypeD:
10453 err = FFEBAD_FORMAT_BAD_D_SPEC;
10454 pre = optional;
10455 post = required;
10456 dot = required;
10457 exp = disallowed;
10458 R1005 = TRUE;
10459 break;
10460
10461 case FFESTP_formattypeQ:
10462 err = FFEBAD_FORMAT_BAD_Q_SPEC;
10463 pre = disallowed;
10464 post = disallowed;
10465 dot = disallowed;
10466 exp = disallowed;
10467 R1005 = FALSE;
10468 break;
10469
10470 case FFESTP_formattypeDOLLAR:
10471 err = FFEBAD_FORMAT_BAD_DOLLAR_SPEC;
10472 pre = disallowed;
10473 post = disallowed;
10474 dot = disallowed;
10475 exp = disallowed;
10476 R1005 = FALSE;
10477 break;
10478
10479 case FFESTP_formattypeP:
10480 err = FFEBAD_FORMAT_BAD_P_SPEC;
10481 pre = required;
10482 post = disallowed;
10483 dot = disallowed;
10484 exp = disallowed;
10485 R1005 = FALSE;
10486 break;
10487
10488 case FFESTP_formattypeT:
10489 err = FFEBAD_FORMAT_BAD_T_SPEC;
10490 pre = disallowed;
10491 post = required;
10492 dot = disallowed;
10493 exp = disallowed;
10494 R1005 = FALSE;
10495 break;
10496
10497 case FFESTP_formattypeTL:
10498 err = FFEBAD_FORMAT_BAD_TL_SPEC;
10499 pre = disallowed;
10500 post = required;
10501 dot = disallowed;
10502 exp = disallowed;
10503 R1005 = FALSE;
10504 break;
10505
10506 case FFESTP_formattypeTR:
10507 err = FFEBAD_FORMAT_BAD_TR_SPEC;
10508 pre = disallowed;
10509 post = required;
10510 dot = disallowed;
10511 exp = disallowed;
10512 R1005 = FALSE;
10513 break;
10514
10515 case FFESTP_formattypeX:
10516 err = FFEBAD_FORMAT_BAD_X_SPEC;
10517 pre = required;
10518 post = disallowed;
10519 dot = disallowed;
10520 exp = disallowed;
10521 R1005 = FALSE;
10522 break;
10523
10524 case FFESTP_formattypeS:
10525 err = FFEBAD_FORMAT_BAD_S_SPEC;
10526 pre = disallowed;
10527 post = disallowed;
10528 dot = disallowed;
10529 exp = disallowed;
10530 R1005 = FALSE;
10531 break;
10532
10533 case FFESTP_formattypeSP:
10534 err = FFEBAD_FORMAT_BAD_SP_SPEC;
10535 pre = disallowed;
10536 post = disallowed;
10537 dot = disallowed;
10538 exp = disallowed;
10539 R1005 = FALSE;
10540 break;
10541
10542 case FFESTP_formattypeSS:
10543 err = FFEBAD_FORMAT_BAD_SS_SPEC;
10544 pre = disallowed;
10545 post = disallowed;
10546 dot = disallowed;
10547 exp = disallowed;
10548 R1005 = FALSE;
10549 break;
10550
10551 case FFESTP_formattypeBN:
10552 err = FFEBAD_FORMAT_BAD_BN_SPEC;
10553 pre = disallowed;
10554 post = disallowed;
10555 dot = disallowed;
10556 exp = disallowed;
10557 R1005 = FALSE;
10558 break;
10559
10560 case FFESTP_formattypeBZ:
10561 err = FFEBAD_FORMAT_BAD_BZ_SPEC;
10562 pre = disallowed;
10563 post = disallowed;
10564 dot = disallowed;
10565 exp = disallowed;
10566 R1005 = FALSE;
10567 break;
10568
10569 case FFESTP_formattypeH:
10570
10571 err = FFEBAD_FORMAT_BAD_H_SPEC;
10572 pre = ffestb_local_.format.pre.present ? disallowed : required;
10573 post = disallowed;
10574 dot = disallowed;
10575 exp = disallowed;
10576 R1005 = FALSE;
10577 break;
10578
10579 case FFESTP_formattypeNone:
10580 ffesta_ffebad_1t (FFEBAD_FORMAT_BAD_SPEC,
10581 ffestb_local_.format.t);
10582
10583 clean_up_to_11_:
10584
10585 ffelex_token_kill (ffestb_local_.format.t);
10586 if (ffestb_local_.format.pre.present)
10587 ffelex_token_kill (ffestb_local_.format.pre.t);
10588 if (ffestb_local_.format.post.present)
10589 ffelex_token_kill (ffestb_local_.format.post.t);
10590 if (ffestb_local_.format.dot.present)
10591 ffelex_token_kill (ffestb_local_.format.dot.t);
10592 if (ffestb_local_.format.exp.present)
10593 ffelex_token_kill (ffestb_local_.format.exp.t);
10594 return (ffelexHandler) ffestb_R100111_ (t);
10595
10596 default:
10597 assert ("bad format item" == NULL);
10598 err = FFEBAD_FORMAT_BAD_H_SPEC;
10599 pre = disallowed;
10600 post = disallowed;
10601 dot = disallowed;
10602 exp = disallowed;
10603 R1005 = FALSE;
10604 break;
10605 }
10606 if (((pre == disallowed) && ffestb_local_.format.pre.present)
10607 || ((pre == required) && !ffestb_local_.format.pre.present))
10608 {
10609 ffesta_ffebad_1t (err, (pre == required)
10610 ? ffestb_local_.format.t : ffestb_local_.format.pre.t);
10611 goto clean_up_to_11_;
10612 }
10613 if (((post == disallowed) && ffestb_local_.format.post.present)
10614 || ((post == required) && !ffestb_local_.format.post.present))
10615 {
10616 ffesta_ffebad_1t (err, (post == required)
10617 ? ffestb_local_.format.t : ffestb_local_.format.post.t);
10618 goto clean_up_to_11_;
10619 }
10620 if (((dot == disallowed) && ffestb_local_.format.dot.present)
10621 || ((dot == required) && !ffestb_local_.format.dot.present))
10622 {
10623 ffesta_ffebad_1t (err, (dot == required)
10624 ? ffestb_local_.format.t : ffestb_local_.format.dot.t);
10625 goto clean_up_to_11_;
10626 }
10627 if (((exp == disallowed) && ffestb_local_.format.exp.present)
10628 || ((exp == required) && !ffestb_local_.format.exp.present))
10629 {
10630 ffesta_ffebad_1t (err, (exp == required)
10631 ? ffestb_local_.format.t : ffestb_local_.format.exp.t);
10632 goto clean_up_to_11_;
10633 }
10634 f = ffestt_formatlist_append (ffestb_local_.format.f);
10635 f->type = ffestb_local_.format.current;
10636 f->t = ffestb_local_.format.t;
10637 if (R1005)
10638 {
10639 f->u.R1005.R1004 = ffestb_local_.format.pre;
10640 f->u.R1005.R1006 = ffestb_local_.format.post;
10641 f->u.R1005.R1007_or_R1008 = ffestb_local_.format.dot;
10642 f->u.R1005.R1009 = ffestb_local_.format.exp;
10643 }
10644 else
10645
10646 {
10647 if (pre == disallowed)
10648 f->u.R1010.val = ffestb_local_.format.post;
10649 else
10650 f->u.R1010.val = ffestb_local_.format.pre;
10651 }
10652 return (ffelexHandler) ffestb_R100111_ (t);
10653 }
10654 }
10655
10656
10657
10658
10659
10660
10661
10662
10663 static ffelexHandler
10664 ffestb_R100111_ (ffelexToken t)
10665 {
10666 ffesttFormatList f;
10667
10668 switch (ffelex_token_type (t))
10669 {
10670 case FFELEX_typeCOMMA:
10671 return (ffelexHandler) ffestb_R10012_;
10672
10673 case FFELEX_typeCOLON:
10674 case FFELEX_typeCOLONCOLON:
10675 case FFELEX_typeSLASH:
10676 case FFELEX_typeCONCAT:
10677 return (ffelexHandler) ffestb_R10012_ (t);
10678
10679 case FFELEX_typeCLOSE_PAREN:
10680 f = ffestb_local_.format.f->u.root.parent;
10681 if (f == NULL)
10682 return (ffelexHandler) ffestb_R100114_;
10683 ffestb_local_.format.f = f->next;
10684 return (ffelexHandler) ffestb_R100111_;
10685
10686 case FFELEX_typeCLOSE_ARRAY:
10687 f = ffestt_formatlist_append (ffestb_local_.format.f);
10688 f->type = FFESTP_formattypeSLASH;
10689 f->t = ffelex_token_use (t);
10690 f->u.R1010.val.present = FALSE;
10691 f->u.R1010.val.rtexpr = FALSE;
10692 f->u.R1010.val.t = NULL;
10693 f->u.R1010.val.u.unsigned_val = 1;
10694 f = ffestb_local_.format.f->u.root.parent;
10695 if (f == NULL)
10696 return (ffelexHandler) ffestb_R100114_;
10697 ffestb_local_.format.f = f->next;
10698 return (ffelexHandler) ffestb_R100111_;
10699
10700 case FFELEX_typeOPEN_ANGLE:
10701 case FFELEX_typeDOLLAR:
10702 case FFELEX_typeNUMBER:
10703 case FFELEX_typeOPEN_PAREN:
10704 case FFELEX_typeOPEN_ARRAY:
10705 case FFELEX_typeQUOTE:
10706 case FFELEX_typeAPOSTROPHE:
10707 case FFELEX_typeNAMES:
10708 ffesta_ffebad_1t (FFEBAD_FORMAT_MISSING_COMMA, t);
10709 return (ffelexHandler) ffestb_R10012_ (t);
10710
10711 case FFELEX_typeEOS:
10712 case FFELEX_typeSEMICOLON:
10713 ffesta_confirmed ();
10714 ffesta_ffebad_1t (FFEBAD_FORMAT_MISSING_PAREN, t);
10715 for (f = ffestb_local_.format.f;
10716 f->u.root.parent != NULL;
10717 f = f->u.root.parent->next)
10718 ;
10719 ffestb_local_.format.f = f;
10720 return (ffelexHandler) ffestb_R100114_ (t);
10721
10722 default:
10723 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FORMAT", t);
10724 ffestt_formatlist_kill (ffestb_local_.format.f);
10725 return (ffelexHandler) ffelex_swallow_tokens (t,
10726 (ffelexHandler) ffesta_zero);
10727 }
10728 }
10729
10730
10731
10732
10733
10734
10735
10736 static ffelexHandler
10737 ffestb_R100112_ (ffelexToken t)
10738 {
10739 ffesttFormatList f;
10740
10741 switch (ffelex_token_type (t))
10742 {
10743 case FFELEX_typeCOMMA:
10744 return (ffelexHandler) ffestb_R10012_;
10745
10746 case FFELEX_typeCOLON:
10747 case FFELEX_typeCOLONCOLON:
10748 case FFELEX_typeSLASH:
10749 case FFELEX_typeCONCAT:
10750 case FFELEX_typeOPEN_ANGLE:
10751 case FFELEX_typeNAMES:
10752 case FFELEX_typeDOLLAR:
10753 case FFELEX_typeNUMBER:
10754 case FFELEX_typeOPEN_PAREN:
10755 case FFELEX_typeOPEN_ARRAY:
10756 case FFELEX_typeQUOTE:
10757 case FFELEX_typeAPOSTROPHE:
10758 case FFELEX_typePLUS:
10759 case FFELEX_typeMINUS:
10760 return (ffelexHandler) ffestb_R10012_ (t);
10761
10762 case FFELEX_typeCLOSE_PAREN:
10763 f = ffestb_local_.format.f->u.root.parent;
10764 if (f == NULL)
10765 return (ffelexHandler) ffestb_R100114_;
10766 ffestb_local_.format.f = f->next;
10767 return (ffelexHandler) ffestb_R100111_;
10768
10769 case FFELEX_typeCLOSE_ARRAY:
10770 f = ffestt_formatlist_append (ffestb_local_.format.f);
10771 f->type = FFESTP_formattypeSLASH;
10772 f->t = ffelex_token_use (t);
10773 f->u.R1010.val.present = FALSE;
10774 f->u.R1010.val.rtexpr = FALSE;
10775 f->u.R1010.val.t = NULL;
10776 f->u.R1010.val.u.unsigned_val = 1;
10777 f = ffestb_local_.format.f->u.root.parent;
10778 if (f == NULL)
10779 return (ffelexHandler) ffestb_R100114_;
10780 ffestb_local_.format.f = f->next;
10781 return (ffelexHandler) ffestb_R100111_;
10782
10783 case FFELEX_typeEOS:
10784 case FFELEX_typeSEMICOLON:
10785 ffesta_confirmed ();
10786 ffesta_ffebad_1t (FFEBAD_FORMAT_MISSING_PAREN, t);
10787 for (f = ffestb_local_.format.f;
10788 f->u.root.parent != NULL;
10789 f = f->u.root.parent->next)
10790 ;
10791 ffestb_local_.format.f = f;
10792 return (ffelexHandler) ffestb_R100114_ (t);
10793
10794 default:
10795 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FORMAT", t);
10796 ffestt_formatlist_kill (ffestb_local_.format.f);
10797 return (ffelexHandler) ffelex_swallow_tokens (t,
10798 (ffelexHandler) ffesta_zero);
10799 }
10800 }
10801
10802
10803
10804
10805
10806
10807
10808 static ffelexHandler
10809 ffestb_R100113_ (ffelexToken t)
10810 {
10811 ffesttFormatList f;
10812
10813 assert (ffelex_token_type (t) == FFELEX_typeCHARACTER);
10814
10815 if (ffe_is_pedantic_not_90 () && (ffelex_token_length (t) == 0))
10816 {
10817 ffebad_start (FFEBAD_NULL_CHAR_CONST);
10818 ffebad_here (0, ffelex_token_where_line (t),
10819 ffelex_token_where_column (t));
10820 ffebad_finish ();
10821 }
10822
10823 f = ffestt_formatlist_append (ffestb_local_.format.f);
10824 f->type = FFESTP_formattypeR1016;
10825 f->t = ffelex_token_use (t);
10826 return (ffelexHandler) ffestb_R100111_;
10827 }
10828
10829
10830
10831
10832
10833
10834
10835 static ffelexHandler
10836 ffestb_R100114_ (ffelexToken t)
10837 {
10838 ffelex_set_names_pure (FALSE);
10839
10840 switch (ffelex_token_type (t))
10841 {
10842 case FFELEX_typeEOS:
10843 case FFELEX_typeSEMICOLON:
10844 ffesta_confirmed ();
10845 if (!ffesta_is_inhibited () && !ffestb_local_.format.complained)
10846 ffestc_R1001 (ffestb_local_.format.f);
10847 ffestt_formatlist_kill (ffestb_local_.format.f);
10848 return (ffelexHandler) ffesta_zero (t);
10849
10850 default:
10851 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FORMAT", t);
10852 ffestt_formatlist_kill (ffestb_local_.format.f);
10853 return (ffelexHandler) ffelex_swallow_tokens (t,
10854 (ffelexHandler) ffesta_zero);
10855 }
10856 }
10857
10858
10859
10860
10861
10862
10863
10864 static ffelexHandler
10865 ffestb_R100115_ (ffelexToken ft UNUSED, ffebld expr, ffelexToken t)
10866 {
10867 switch (ffelex_token_type (t))
10868 {
10869 case FFELEX_typeCLOSE_ANGLE:
10870 ffestb_local_.format.pre.present = TRUE;
10871 ffestb_local_.format.pre.rtexpr = TRUE;
10872 ffestb_local_.format.pre.u.expr = expr;
10873 ffelex_set_names_pure (TRUE);
10874 return (ffelexHandler) ffestb_R10014_;
10875
10876 default:
10877 ffelex_token_kill (ffestb_local_.format.pre.t);
10878 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FORMAT", t);
10879 ffestt_formatlist_kill (ffestb_local_.format.f);
10880 return (ffelexHandler) ffelex_swallow_tokens (t,
10881 (ffelexHandler) ffesta_zero);
10882 }
10883 }
10884
10885
10886
10887
10888
10889
10890
10891 static ffelexHandler
10892 ffestb_R100116_ (ffelexToken ft UNUSED, ffebld expr, ffelexToken t)
10893 {
10894 switch (ffelex_token_type (t))
10895 {
10896 case FFELEX_typeCLOSE_ANGLE:
10897 ffestb_local_.format.post.present = TRUE;
10898 ffestb_local_.format.post.rtexpr = TRUE;
10899 ffestb_local_.format.post.u.expr = expr;
10900 ffelex_set_names_pure (TRUE);
10901 return (ffelexHandler) ffestb_R10016_;
10902
10903 default:
10904 ffelex_token_kill (ffestb_local_.format.t);
10905 ffelex_token_kill (ffestb_local_.format.post.t);
10906 if (ffestb_local_.format.pre.present)
10907 ffelex_token_kill (ffestb_local_.format.pre.t);
10908 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FORMAT", t);
10909 ffestt_formatlist_kill (ffestb_local_.format.f);
10910 return (ffelexHandler) ffelex_swallow_tokens (t,
10911 (ffelexHandler) ffesta_zero);
10912 }
10913 }
10914
10915
10916
10917
10918
10919
10920
10921 static ffelexHandler
10922 ffestb_R100117_ (ffelexToken ft UNUSED, ffebld expr, ffelexToken t)
10923 {
10924 switch (ffelex_token_type (t))
10925 {
10926 case FFELEX_typeCLOSE_ANGLE:
10927 ffestb_local_.format.dot.present = TRUE;
10928 ffestb_local_.format.dot.rtexpr = TRUE;
10929 ffestb_local_.format.dot.u.expr = expr;
10930 ffelex_set_names_pure (TRUE);
10931 return (ffelexHandler) ffestb_R10018_;
10932
10933 default:
10934 ffelex_token_kill (ffestb_local_.format.t);
10935 ffelex_token_kill (ffestb_local_.format.dot.t);
10936 if (ffestb_local_.format.pre.present)
10937 ffelex_token_kill (ffestb_local_.format.pre.t);
10938 if (ffestb_local_.format.post.present)
10939 ffelex_token_kill (ffestb_local_.format.post.t);
10940 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FORMAT", t);
10941 ffestt_formatlist_kill (ffestb_local_.format.f);
10942 return (ffelexHandler) ffelex_swallow_tokens (t,
10943 (ffelexHandler) ffesta_zero);
10944 }
10945 }
10946
10947
10948
10949
10950
10951
10952
10953 static ffelexHandler
10954 ffestb_R100118_ (ffelexToken ft UNUSED, ffebld expr, ffelexToken t)
10955 {
10956 switch (ffelex_token_type (t))
10957 {
10958 case FFELEX_typeCLOSE_ANGLE:
10959 ffestb_local_.format.exp.present = TRUE;
10960 ffestb_local_.format.exp.rtexpr = TRUE;
10961 ffestb_local_.format.exp.u.expr = expr;
10962 ffelex_set_names_pure (TRUE);
10963 return (ffelexHandler) ffestb_R100110_;
10964
10965 default:
10966 ffelex_token_kill (ffestb_local_.format.t);
10967 ffelex_token_kill (ffestb_local_.format.exp.t);
10968 if (ffestb_local_.format.pre.present)
10969 ffelex_token_kill (ffestb_local_.format.pre.t);
10970 if (ffestb_local_.format.post.present)
10971 ffelex_token_kill (ffestb_local_.format.post.t);
10972 if (ffestb_local_.format.dot.present)
10973 ffelex_token_kill (ffestb_local_.format.dot.t);
10974 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FORMAT", t);
10975 ffestt_formatlist_kill (ffestb_local_.format.f);
10976 return (ffelexHandler) ffelex_swallow_tokens (t,
10977 (ffelexHandler) ffesta_zero);
10978 }
10979 }
10980
10981
10982
10983
10984
10985
10986
10987
10988 #if FFESTR_F90
10989 ffelexHandler
10990 ffestb_R1107 (ffelexToken t)
10991 {
10992 ffeTokenLength i;
10993 const char *p;
10994
10995 switch (ffelex_token_type (ffesta_tokens[0]))
10996 {
10997 case FFELEX_typeNAME:
10998 if (ffesta_first_kw != FFESTR_firstUSE)
10999 goto bad_0;
11000 switch (ffelex_token_type (t))
11001 {
11002 case FFELEX_typeNAME:
11003 break;
11004
11005 case FFELEX_typeEOS:
11006 case FFELEX_typeSEMICOLON:
11007 case FFELEX_typeCOMMA:
11008 case FFELEX_typeCOLONCOLON:
11009 ffesta_confirmed ();
11010 goto bad_1;
11011
11012 default:
11013 goto bad_0;
11014 }
11015 ffesta_confirmed ();
11016 ffesta_tokens[1] = ffelex_token_use (t);
11017 return (ffelexHandler) ffestb_R11071_;
11018
11019 case FFELEX_typeNAMES:
11020 if (ffesta_first_kw != FFESTR_firstUSE)
11021 goto bad_0;
11022 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlUSE);
11023 if (!ffesrc_is_name_init (*p))
11024 goto bad_i;
11025 switch (ffelex_token_type (t))
11026 {
11027 case FFELEX_typeCOLONCOLON:
11028 ffesta_confirmed ();
11029 goto bad_1;
11030
11031 default:
11032 goto bad_1;
11033
11034 case FFELEX_typeCOMMA:
11035 case FFELEX_typeEOS:
11036 case FFELEX_typeSEMICOLON:
11037 break;
11038 }
11039 ffesta_confirmed ();
11040 ffesta_tokens[1]
11041 = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
11042 return (ffelexHandler) ffestb_R11071_ (t);
11043
11044 default:
11045 goto bad_0;
11046 }
11047
11048 bad_0:
11049 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "USE", ffesta_tokens[0]);
11050 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
11051
11052 bad_1:
11053 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "USE", t);
11054 return (ffelexHandler) ffelex_swallow_tokens (t,
11055 (ffelexHandler) ffesta_zero);
11056
11057 bad_i:
11058 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "USE", ffesta_tokens[0], i, t);
11059 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
11060 }
11061
11062
11063
11064
11065
11066
11067
11068
11069 static ffelexHandler
11070 ffestb_R11071_ (ffelexToken t)
11071 {
11072 switch (ffelex_token_type (t))
11073 {
11074 case FFELEX_typeEOS:
11075 case FFELEX_typeSEMICOLON:
11076 if (!ffesta_is_inhibited ())
11077 {
11078 ffestc_R1107_start (ffesta_tokens[1], FALSE);
11079 ffestc_R1107_finish ();
11080 }
11081 ffelex_token_kill (ffesta_tokens[1]);
11082 return (ffelexHandler) ffesta_zero (t);
11083
11084 case FFELEX_typeCOMMA:
11085 return (ffelexHandler) ffestb_R11072_;
11086
11087 default:
11088 break;
11089 }
11090
11091 ffelex_token_kill (ffesta_tokens[1]);
11092 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "USE", t);
11093 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
11094 }
11095
11096
11097
11098
11099
11100
11101
11102
11103 static ffelexHandler
11104 ffestb_R11072_ (ffelexToken t)
11105 {
11106 switch (ffelex_token_type (t))
11107 {
11108 case FFELEX_typeNAME:
11109 ffesta_tokens[2] = ffelex_token_use (t);
11110 return (ffelexHandler) ffestb_R11073_;
11111
11112 default:
11113 break;
11114 }
11115
11116 ffelex_token_kill (ffesta_tokens[1]);
11117 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "USE", t);
11118 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
11119 }
11120
11121
11122
11123
11124
11125
11126
11127
11128 static ffelexHandler
11129 ffestb_R11073_ (ffelexToken t)
11130 {
11131 switch (ffelex_token_type (t))
11132 {
11133 case FFELEX_typeCOLON:
11134 if (ffestr_other (ffesta_tokens[2]) != FFESTR_otherONLY)
11135 break;
11136 if (!ffesta_is_inhibited ())
11137 ffestc_R1107_start (ffesta_tokens[1], TRUE);
11138 ffelex_token_kill (ffesta_tokens[1]);
11139 ffelex_token_kill (ffesta_tokens[2]);
11140 return (ffelexHandler) ffestb_R11074_;
11141
11142 case FFELEX_typePOINTS:
11143 if (!ffesta_is_inhibited ())
11144 ffestc_R1107_start (ffesta_tokens[1], FALSE);
11145 ffelex_token_kill (ffesta_tokens[1]);
11146 ffesta_tokens[1] = ffesta_tokens[2];
11147 return (ffelexHandler) ffestb_R110711_;
11148
11149 default:
11150 break;
11151 }
11152
11153 ffelex_token_kill (ffesta_tokens[1]);
11154 ffelex_token_kill (ffesta_tokens[2]);
11155 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "USE", t);
11156 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
11157 }
11158
11159
11160
11161
11162
11163
11164
11165
11166 static ffelexHandler
11167 ffestb_R11074_ (ffelexToken t)
11168 {
11169 switch (ffelex_token_type (t))
11170 {
11171 case FFELEX_typeNAME:
11172 ffesta_tokens[1] = ffelex_token_use (t);
11173 return (ffelexHandler) ffestb_R11075_;
11174
11175 case FFELEX_typeEOS:
11176 case FFELEX_typeSEMICOLON:
11177 if (!ffesta_is_inhibited ())
11178 ffestc_R1107_finish ();
11179 return (ffelexHandler) ffesta_zero (t);
11180
11181 default:
11182 break;
11183 }
11184
11185 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "USE", t);
11186 ffestc_R1107_finish ();
11187 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
11188 }
11189
11190
11191
11192
11193
11194
11195
11196
11197 static ffelexHandler
11198 ffestb_R11075_ (ffelexToken t)
11199 {
11200 switch (ffelex_token_type (t))
11201 {
11202 case FFELEX_typeEOS:
11203 case FFELEX_typeSEMICOLON:
11204 if (!ffesta_is_inhibited ())
11205 {
11206 ffestc_R1107_item (NULL, ffesta_tokens[1]);
11207 ffestc_R1107_finish ();
11208 }
11209 ffelex_token_kill (ffesta_tokens[1]);
11210 return (ffelexHandler) ffesta_zero (t);
11211
11212 case FFELEX_typeCOMMA:
11213 if (!ffesta_is_inhibited ())
11214 ffestc_R1107_item (NULL, ffesta_tokens[1]);
11215 ffelex_token_kill (ffesta_tokens[1]);
11216 return (ffelexHandler) ffestb_R11078_;
11217
11218 case FFELEX_typePOINTS:
11219 return (ffelexHandler) ffestb_R11076_;
11220
11221 default:
11222 break;
11223 }
11224
11225 ffelex_token_kill (ffesta_tokens[1]);
11226 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "USE", t);
11227 ffestc_R1107_finish ();
11228 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
11229 }
11230
11231
11232
11233
11234
11235
11236
11237
11238 static ffelexHandler
11239 ffestb_R11076_ (ffelexToken t)
11240 {
11241 switch (ffelex_token_type (t))
11242 {
11243 case FFELEX_typeNAME:
11244 if (!ffesta_is_inhibited ())
11245 ffestc_R1107_item (ffesta_tokens[1], t);
11246 ffelex_token_kill (ffesta_tokens[1]);
11247 return (ffelexHandler) ffestb_R11077_;
11248
11249 default:
11250 break;
11251 }
11252
11253 ffelex_token_kill (ffesta_tokens[1]);
11254 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "USE", t);
11255 ffestc_R1107_finish ();
11256 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
11257 }
11258
11259
11260
11261
11262
11263
11264
11265
11266 static ffelexHandler
11267 ffestb_R11077_ (ffelexToken t)
11268 {
11269 switch (ffelex_token_type (t))
11270 {
11271 case FFELEX_typeEOS:
11272 case FFELEX_typeSEMICOLON:
11273 if (!ffesta_is_inhibited ())
11274 ffestc_R1107_finish ();
11275 return (ffelexHandler) ffesta_zero (t);
11276
11277 case FFELEX_typeCOMMA:
11278 return (ffelexHandler) ffestb_R11078_;
11279
11280 default:
11281 break;
11282 }
11283
11284 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "USE", t);
11285 ffestc_R1107_finish ();
11286 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
11287 }
11288
11289
11290
11291
11292
11293
11294
11295
11296 static ffelexHandler
11297 ffestb_R11078_ (ffelexToken t)
11298 {
11299 switch (ffelex_token_type (t))
11300 {
11301 case FFELEX_typeNAME:
11302 ffesta_tokens[1] = ffelex_token_use (t);
11303 return (ffelexHandler) ffestb_R11075_;
11304
11305 default:
11306 break;
11307 }
11308
11309 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "USE", t);
11310 ffestc_R1107_finish ();
11311 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
11312 }
11313
11314
11315
11316
11317
11318
11319
11320
11321 static ffelexHandler
11322 ffestb_R11079_ (ffelexToken t)
11323 {
11324 switch (ffelex_token_type (t))
11325 {
11326 case FFELEX_typeNAME:
11327 ffesta_tokens[1] = ffelex_token_use (t);
11328 return (ffelexHandler) ffestb_R110710_;
11329
11330 default:
11331 break;
11332 }
11333
11334 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "USE", t);
11335 ffestc_R1107_finish ();
11336 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
11337 }
11338
11339
11340
11341
11342
11343
11344
11345
11346 static ffelexHandler
11347 ffestb_R110710_ (ffelexToken t)
11348 {
11349 switch (ffelex_token_type (t))
11350 {
11351 case FFELEX_typePOINTS:
11352 return (ffelexHandler) ffestb_R110711_;
11353
11354 default:
11355 break;
11356 }
11357
11358 ffelex_token_kill (ffesta_tokens[1]);
11359 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "USE", t);
11360 ffestc_R1107_finish ();
11361 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
11362 }
11363
11364
11365
11366
11367
11368
11369
11370
11371 static ffelexHandler
11372 ffestb_R110711_ (ffelexToken t)
11373 {
11374 switch (ffelex_token_type (t))
11375 {
11376 case FFELEX_typeNAME:
11377 if (!ffesta_is_inhibited ())
11378 ffestc_R1107_item (ffesta_tokens[1], t);
11379 ffelex_token_kill (ffesta_tokens[1]);
11380 return (ffelexHandler) ffestb_R110712_;
11381
11382 default:
11383 break;
11384 }
11385
11386 ffelex_token_kill (ffesta_tokens[1]);
11387 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "USE", t);
11388 ffestc_R1107_finish ();
11389 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
11390 }
11391
11392
11393
11394
11395
11396
11397
11398
11399 static ffelexHandler
11400 ffestb_R110712_ (ffelexToken t)
11401 {
11402 switch (ffelex_token_type (t))
11403 {
11404 case FFELEX_typeEOS:
11405 case FFELEX_typeSEMICOLON:
11406 if (!ffesta_is_inhibited ())
11407 ffestc_R1107_finish ();
11408 return (ffelexHandler) ffesta_zero (t);
11409
11410 case FFELEX_typeCOMMA:
11411 return (ffelexHandler) ffestb_R11079_;
11412
11413 default:
11414 break;
11415 }
11416
11417 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "USE", t);
11418 ffestc_R1107_finish ();
11419 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
11420 }
11421
11422 #endif
11423
11424
11425
11426
11427
11428
11429
11430
11431
11432
11433
11434 #if FFESTR_F90
11435 ffelexHandler
11436 ffestb_R1202 (ffelexToken t)
11437 {
11438 ffeTokenLength i;
11439 const char *p;
11440
11441 switch (ffelex_token_type (ffesta_tokens[0]))
11442 {
11443 case FFELEX_typeNAME:
11444 if (ffesta_first_kw != FFESTR_firstINTERFACE)
11445 goto bad_0;
11446 switch (ffelex_token_type (t))
11447 {
11448 case FFELEX_typeNAME:
11449 break;
11450
11451 case FFELEX_typeEOS:
11452 case FFELEX_typeSEMICOLON:
11453 ffesta_confirmed ();
11454 if (!ffesta_is_inhibited ())
11455 ffestc_R1202 (FFESTP_definedoperatorNone, NULL);
11456 return (ffelexHandler) ffesta_zero (t);
11457
11458 case FFELEX_typeCOMMA:
11459 case FFELEX_typeCOLONCOLON:
11460 ffesta_confirmed ();
11461 goto bad_1;
11462
11463 default:
11464 goto bad_1;
11465 }
11466
11467 ffesta_confirmed ();
11468 switch (ffesta_second_kw)
11469 {
11470 case FFESTR_secondOPERATOR:
11471 ffestb_local_.interface.operator = FFESTP_definedoperatorOPERATOR;
11472 break;
11473
11474 case FFESTR_secondASSIGNMENT:
11475 ffestb_local_.interface.operator = FFESTP_definedoperatorASSIGNMENT;
11476 break;
11477
11478 default:
11479 ffestb_local_.interface.operator = FFESTP_definedoperatorNone;
11480 break;
11481 }
11482 ffesta_tokens[1] = ffelex_token_use (t);
11483 return (ffelexHandler) ffestb_R12021_;
11484
11485 case FFELEX_typeNAMES:
11486 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlINTERFACE);
11487 switch (ffesta_first_kw)
11488 {
11489 case FFESTR_firstINTERFACEOPERATOR:
11490 if (*(ffelex_token_text (ffesta_tokens[0])
11491 + FFESTR_firstlINTERFACEOPERATOR) == '\0')
11492 ffestb_local_.interface.operator
11493 = FFESTP_definedoperatorOPERATOR;
11494 break;
11495
11496 case FFESTR_firstINTERFACEASSGNMNT:
11497 if (*(ffelex_token_text (ffesta_tokens[0])
11498 + FFESTR_firstlINTERFACEASSGNMNT) == '\0')
11499 ffestb_local_.interface.operator
11500 = FFESTP_definedoperatorASSIGNMENT;
11501 break;
11502
11503 case FFESTR_firstINTERFACE:
11504 ffestb_local_.interface.operator = FFESTP_definedoperatorNone;
11505 break;
11506
11507 default:
11508 goto bad_0;
11509 }
11510 switch (ffelex_token_type (t))
11511 {
11512 case FFELEX_typeCOMMA:
11513 case FFELEX_typeCOLONCOLON:
11514 ffesta_confirmed ();
11515 goto bad_1;
11516
11517 default:
11518 goto bad_1;
11519
11520 case FFELEX_typeOPEN_PAREN:
11521 case FFELEX_typeOPEN_ARRAY:
11522 break;
11523
11524 case FFELEX_typeEOS:
11525 case FFELEX_typeSEMICOLON:
11526 ffesta_confirmed ();
11527 if (*p == '\0')
11528 {
11529 if (!ffesta_is_inhibited ())
11530 ffestc_R1202 (FFESTP_definedoperatorNone, NULL);
11531 return (ffelexHandler) ffesta_zero (t);
11532 }
11533 break;
11534 }
11535 if (!ffesrc_is_name_init (*p))
11536 goto bad_i;
11537 ffesta_tokens[1] = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
11538 return (ffelexHandler) ffestb_R12021_ (t);
11539
11540 default:
11541 goto bad_0;
11542 }
11543
11544 bad_0:
11545 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INTERFACE", ffesta_tokens[0]);
11546 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
11547
11548 bad_1:
11549 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INTERFACE", t);
11550 return (ffelexHandler) ffelex_swallow_tokens (t,
11551 (ffelexHandler) ffesta_zero);
11552
11553 bad_i:
11554 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "INTERFACE", ffesta_tokens[0], i, t);
11555 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
11556 }
11557
11558
11559
11560
11561
11562
11563
11564
11565 static ffelexHandler
11566 ffestb_R12021_ (ffelexToken t)
11567 {
11568 ffestb_local_.interface.slash = TRUE;
11569
11570 switch (ffelex_token_type (t))
11571 {
11572 case FFELEX_typeEOS:
11573 case FFELEX_typeSEMICOLON:
11574 if (!ffesta_is_inhibited ())
11575 ffestc_R1202 (FFESTP_definedoperatorNone, ffesta_tokens[1]);
11576 ffelex_token_kill (ffesta_tokens[1]);
11577 return (ffelexHandler) ffesta_zero (t);
11578
11579 case FFELEX_typeOPEN_PAREN:
11580 ffestb_local_.interface.slash = FALSE;
11581
11582 case FFELEX_typeOPEN_ARRAY:
11583 switch (ffestb_local_.interface.operator)
11584 {
11585 case FFESTP_definedoperatorNone:
11586 break;
11587
11588 case FFESTP_definedoperatorOPERATOR:
11589 ffestb_local_.interface.assignment = FALSE;
11590 return (ffelexHandler) ffestb_R12022_;
11591
11592 case FFESTP_definedoperatorASSIGNMENT:
11593 ffestb_local_.interface.assignment = TRUE;
11594 return (ffelexHandler) ffestb_R12022_;
11595
11596 default:
11597 assert (FALSE);
11598 }
11599 break;
11600
11601 case FFELEX_typeCOMMA:
11602 case FFELEX_typeCOLONCOLON:
11603 ffesta_confirmed ();
11604 break;
11605
11606 default:
11607 break;
11608 }
11609
11610 ffelex_token_kill (ffesta_tokens[1]);
11611 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INTERFACE", t);
11612 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
11613 }
11614
11615
11616
11617
11618
11619
11620
11621
11622 static ffelexHandler
11623 ffestb_R12022_ (ffelexToken t)
11624 {
11625 ffesta_tokens[2] = ffelex_token_use (t);
11626
11627 switch (ffelex_token_type (t))
11628 {
11629 case FFELEX_typePERIOD:
11630 if (ffestb_local_.interface.slash)
11631 break;
11632 return (ffelexHandler) ffestb_R12023_;
11633
11634 case FFELEX_typePOWER:
11635 if (ffestb_local_.interface.slash)
11636 break;
11637 ffestb_local_.interface.operator = FFESTP_definedoperatorPOWER;
11638 return (ffelexHandler) ffestb_R12025_;
11639
11640 case FFELEX_typeASTERISK:
11641 if (ffestb_local_.interface.slash)
11642 break;
11643 ffestb_local_.interface.operator = FFESTP_definedoperatorMULT;
11644 return (ffelexHandler) ffestb_R12025_;
11645
11646 case FFELEX_typePLUS:
11647 if (ffestb_local_.interface.slash)
11648 break;
11649 ffestb_local_.interface.operator = FFESTP_definedoperatorADD;
11650 return (ffelexHandler) ffestb_R12025_;
11651
11652 case FFELEX_typeCONCAT:
11653 if (ffestb_local_.interface.slash)
11654 break;
11655 ffestb_local_.interface.operator = FFESTP_definedoperatorCONCAT;
11656 return (ffelexHandler) ffestb_R12025_;
11657
11658 case FFELEX_typeSLASH:
11659 if (ffestb_local_.interface.slash)
11660 {
11661 ffestb_local_.interface.operator = FFESTP_definedoperatorCONCAT;
11662 return (ffelexHandler) ffestb_R12025_;
11663 }
11664 ffestb_local_.interface.operator = FFESTP_definedoperatorDIVIDE;
11665 return (ffelexHandler) ffestb_R12025_;
11666
11667 case FFELEX_typeMINUS:
11668 if (ffestb_local_.interface.slash)
11669 break;
11670 ffestb_local_.interface.operator = FFESTP_definedoperatorSUBTRACT;
11671 return (ffelexHandler) ffestb_R12025_;
11672
11673 case FFELEX_typeREL_EQ:
11674 if (ffestb_local_.interface.slash)
11675 break;
11676 ffestb_local_.interface.operator = FFESTP_definedoperatorEQ;
11677 return (ffelexHandler) ffestb_R12025_;
11678
11679 case FFELEX_typeREL_NE:
11680 if (ffestb_local_.interface.slash)
11681 break;
11682 ffestb_local_.interface.operator = FFESTP_definedoperatorNE;
11683 return (ffelexHandler) ffestb_R12025_;
11684
11685 case FFELEX_typeOPEN_ANGLE:
11686 if (ffestb_local_.interface.slash)
11687 break;
11688 ffestb_local_.interface.operator = FFESTP_definedoperatorLT;
11689 return (ffelexHandler) ffestb_R12025_;
11690
11691 case FFELEX_typeREL_LE:
11692 if (ffestb_local_.interface.slash)
11693 break;
11694 ffestb_local_.interface.operator = FFESTP_definedoperatorLE;
11695 return (ffelexHandler) ffestb_R12025_;
11696
11697 case FFELEX_typeCLOSE_ANGLE:
11698 if (ffestb_local_.interface.slash)
11699 break;
11700 ffestb_local_.interface.operator = FFESTP_definedoperatorGT;
11701 return (ffelexHandler) ffestb_R12025_;
11702
11703 case FFELEX_typeREL_GE:
11704 if (ffestb_local_.interface.slash)
11705 break;
11706 ffestb_local_.interface.operator = FFESTP_definedoperatorGE;
11707 return (ffelexHandler) ffestb_R12025_;
11708
11709 case FFELEX_typeEQUALS:
11710 if (ffestb_local_.interface.slash)
11711 {
11712 ffestb_local_.interface.operator = FFESTP_definedoperatorNE;
11713 return (ffelexHandler) ffestb_R12025_;
11714 }
11715 ffestb_local_.interface.operator = FFESTP_definedoperatorASSIGNMENT;
11716 return (ffelexHandler) ffestb_R12025_;
11717
11718 case FFELEX_typeCLOSE_ARRAY:
11719 if (!ffestb_local_.interface.slash)
11720 {
11721 ffestb_local_.interface.operator = FFESTP_definedoperatorDIVIDE;
11722 return (ffelexHandler) ffestb_R12026_;
11723 }
11724 ffestb_local_.interface.operator = FFESTP_definedoperatorCONCAT;
11725 return (ffelexHandler) ffestb_R12026_;
11726
11727 case FFELEX_typeCLOSE_PAREN:
11728 if (!ffestb_local_.interface.slash)
11729 break;
11730 ffestb_local_.interface.operator = FFESTP_definedoperatorDIVIDE;
11731 return (ffelexHandler) ffestb_R12026_;
11732
11733 default:
11734 break;
11735 }
11736
11737 ffelex_token_kill (ffesta_tokens[1]);
11738 ffelex_token_kill (ffesta_tokens[2]);
11739 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INTERFACE", t);
11740 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
11741 }
11742
11743
11744
11745
11746
11747
11748
11749
11750 static ffelexHandler
11751 ffestb_R12023_ (ffelexToken t)
11752 {
11753 switch (ffelex_token_type (t))
11754 {
11755 case FFELEX_typeNAME:
11756 ffelex_token_kill (ffesta_tokens[2]);
11757 ffesta_tokens[2] = ffelex_token_use (t);
11758 return (ffelexHandler) ffestb_R12024_;
11759
11760 default:
11761 break;
11762 }
11763
11764 ffelex_token_kill (ffesta_tokens[1]);
11765 ffelex_token_kill (ffesta_tokens[2]);
11766 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INTERFACE", t);
11767 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
11768 }
11769
11770
11771
11772
11773
11774
11775
11776
11777 static ffelexHandler
11778 ffestb_R12024_ (ffelexToken t)
11779 {
11780 switch (ffelex_token_type (t))
11781 {
11782 case FFELEX_typePERIOD:
11783 return (ffelexHandler) ffestb_R12025_;
11784
11785 default:
11786 break;
11787 }
11788
11789 ffelex_token_kill (ffesta_tokens[1]);
11790 ffelex_token_kill (ffesta_tokens[2]);
11791 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INTERFACE", t);
11792 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
11793 }
11794
11795
11796
11797
11798
11799
11800
11801
11802 static ffelexHandler
11803 ffestb_R12025_ (ffelexToken t)
11804 {
11805 switch (ffelex_token_type (t))
11806 {
11807 case FFELEX_typeCLOSE_PAREN:
11808 return (ffelexHandler) ffestb_R12026_;
11809
11810 default:
11811 break;
11812 }
11813
11814 ffelex_token_kill (ffesta_tokens[1]);
11815 ffelex_token_kill (ffesta_tokens[2]);
11816 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INTERFACE", t);
11817 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
11818 }
11819
11820
11821
11822
11823
11824
11825
11826
11827 static ffelexHandler
11828 ffestb_R12026_ (ffelexToken t)
11829 {
11830 const char *p;
11831
11832 switch (ffelex_token_type (t))
11833 {
11834 case FFELEX_typeEOS:
11835 case FFELEX_typeSEMICOLON:
11836 ffesta_confirmed ();
11837 if (ffestb_local_.interface.assignment
11838 && (ffestb_local_.interface.operator
11839 != FFESTP_definedoperatorASSIGNMENT))
11840 {
11841 ffebad_start (FFEBAD_INTERFACE_ASSIGNMENT);
11842 ffebad_here (0, ffelex_token_where_line (ffesta_tokens[1]),
11843 ffelex_token_where_column (ffesta_tokens[1]));
11844 ffebad_here (1, ffelex_token_where_line (ffesta_tokens[2]),
11845 ffelex_token_where_column (ffesta_tokens[2]));
11846 ffebad_finish ();
11847 }
11848 switch (ffelex_token_type (ffesta_tokens[2]))
11849 {
11850 case FFELEX_typeNAME:
11851 switch (ffestr_other (ffesta_tokens[2]))
11852 {
11853 case FFESTR_otherNOT:
11854 if (!ffesta_is_inhibited ())
11855 ffestc_R1202 (FFESTP_definedoperatorNOT, NULL);
11856 break;
11857
11858 case FFESTR_otherAND:
11859 if (!ffesta_is_inhibited ())
11860 ffestc_R1202 (FFESTP_definedoperatorAND, NULL);
11861 break;
11862
11863 case FFESTR_otherOR:
11864 if (!ffesta_is_inhibited ())
11865 ffestc_R1202 (FFESTP_definedoperatorOR, NULL);
11866 break;
11867
11868 case FFESTR_otherEQV:
11869 if (!ffesta_is_inhibited ())
11870 ffestc_R1202 (FFESTP_definedoperatorEQV, NULL);
11871 break;
11872
11873 case FFESTR_otherNEQV:
11874 if (!ffesta_is_inhibited ())
11875 ffestc_R1202 (FFESTP_definedoperatorNEQV, NULL);
11876 break;
11877
11878 case FFESTR_otherEQ:
11879 if (!ffesta_is_inhibited ())
11880 ffestc_R1202 (FFESTP_definedoperatorEQ, NULL);
11881 break;
11882
11883 case FFESTR_otherNE:
11884 if (!ffesta_is_inhibited ())
11885 ffestc_R1202 (FFESTP_definedoperatorNE, NULL);
11886 break;
11887
11888 case FFESTR_otherLT:
11889 if (!ffesta_is_inhibited ())
11890 ffestc_R1202 (FFESTP_definedoperatorLT, NULL);
11891 break;
11892
11893 case FFESTR_otherLE:
11894 if (!ffesta_is_inhibited ())
11895 ffestc_R1202 (FFESTP_definedoperatorLE, NULL);
11896 break;
11897
11898 case FFESTR_otherGT:
11899 if (!ffesta_is_inhibited ())
11900 ffestc_R1202 (FFESTP_definedoperatorGT, NULL);
11901 break;
11902
11903 case FFESTR_otherGE:
11904 if (!ffesta_is_inhibited ())
11905 ffestc_R1202 (FFESTP_definedoperatorGE, NULL);
11906 break;
11907
11908 default:
11909 for (p = ffelex_token_text (ffesta_tokens[2]); *p != '\0'; ++p)
11910 {
11911 if (! ISALPHA (*p))
11912 {
11913 ffelex_token_kill (ffesta_tokens[1]);
11914 ffelex_token_kill (ffesta_tokens[2]);
11915 ffesta_ffebad_1t (FFEBAD_INTERFACE_NONLETTER,
11916 ffesta_tokens[2]);
11917 return (ffelexHandler) ffelex_swallow_tokens (t,
11918 (ffelexHandler) ffesta_zero);
11919 }
11920 }
11921 if (!ffesta_is_inhibited ())
11922 ffestc_R1202 (FFESTP_definedoperatorOPERATOR,
11923 ffesta_tokens[2]);
11924 }
11925 break;
11926
11927 case FFELEX_typeEQUALS:
11928 if (!ffestb_local_.interface.assignment
11929 && (ffestb_local_.interface.operator
11930 == FFESTP_definedoperatorASSIGNMENT))
11931 {
11932 ffebad_start (FFEBAD_INTERFACE_OPERATOR);
11933 ffebad_here (0, ffelex_token_where_line (ffesta_tokens[1]),
11934 ffelex_token_where_column (ffesta_tokens[1]));
11935 ffebad_here (1, ffelex_token_where_line (ffesta_tokens[2]),
11936 ffelex_token_where_column (ffesta_tokens[2]));
11937 ffebad_finish ();
11938 }
11939 if (!ffesta_is_inhibited ())
11940 ffestc_R1202 (ffestb_local_.interface.operator, NULL);
11941 break;
11942
11943 default:
11944 if (!ffesta_is_inhibited ())
11945 ffestc_R1202 (ffestb_local_.interface.operator, NULL);
11946 }
11947 ffelex_token_kill (ffesta_tokens[1]);
11948 ffelex_token_kill (ffesta_tokens[2]);
11949 return (ffelexHandler) ffesta_zero (t);
11950
11951 default:
11952 break;
11953 }
11954
11955 ffelex_token_kill (ffesta_tokens[1]);
11956 ffelex_token_kill (ffesta_tokens[2]);
11957 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INTERFACE", t);
11958 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
11959 }
11960
11961 #endif
11962
11963
11964
11965
11966
11967
11968
11969 ffelexHandler
11970 ffestb_S3P4 (ffelexToken t)
11971 {
11972 ffeTokenLength i;
11973 const char *p;
11974 ffelexHandler next;
11975 ffelexToken nt;
11976 ffelexToken ut;
11977
11978 switch (ffelex_token_type (ffesta_tokens[0]))
11979 {
11980 case FFELEX_typeNAME:
11981 if (ffesta_first_kw != FFESTR_firstINCLUDE)
11982 goto bad_0;
11983 switch (ffelex_token_type (t))
11984 {
11985 case FFELEX_typeNUMBER:
11986 case FFELEX_typeAPOSTROPHE:
11987 case FFELEX_typeQUOTE:
11988 break;
11989
11990 default:
11991 goto bad_1;
11992 }
11993 ffesta_confirmed ();
11994 return (ffelexHandler) (*((ffelexHandler)
11995 ffeexpr_rhs (ffesta_output_pool, FFEEXPR_contextINCLUDE,
11996 (ffeexprCallback) ffestb_S3P41_)))
11997 (t);
11998
11999 case FFELEX_typeNAMES:
12000 if (ffesta_first_kw != FFESTR_firstINCLUDE)
12001 goto bad_0;
12002 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlINCLUDE);
12003 switch (ffelex_token_type (t))
12004 {
12005 default:
12006 goto bad_1;
12007
12008 case FFELEX_typeAPOSTROPHE:
12009 case FFELEX_typeQUOTE:
12010 break;
12011 }
12012 ffesta_confirmed ();
12013 if (*p == '\0')
12014 return (ffelexHandler) (*((ffelexHandler)
12015 ffeexpr_rhs (ffesta_output_pool, FFEEXPR_contextINCLUDE,
12016 (ffeexprCallback) ffestb_S3P41_)))
12017 (t);
12018 if (! ISDIGIT (*p))
12019 goto bad_i;
12020 nt = ffelex_token_number_from_names (ffesta_tokens[0], i);
12021 p += ffelex_token_length (nt);
12022 i += ffelex_token_length (nt);
12023 if ((*p != '_') || (++i, *++p != '\0'))
12024 {
12025 ffelex_token_kill (nt);
12026 goto bad_i;
12027 }
12028 ut = ffelex_token_uscore_from_names (ffesta_tokens[0], i - 1);
12029 next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs
12030 (ffesta_output_pool, FFEEXPR_contextINCLUDE,
12031 (ffeexprCallback) ffestb_S3P41_)))
12032 (nt);
12033 ffelex_token_kill (nt);
12034 next = (ffelexHandler) (*next) (ut);
12035 ffelex_token_kill (ut);
12036 return (ffelexHandler) (*next) (t);
12037
12038 default:
12039 goto bad_0;
12040 }
12041
12042 bad_0:
12043 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INCLUDE", ffesta_tokens[0]);
12044 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
12045
12046 bad_1:
12047 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INCLUDE", t);
12048 return (ffelexHandler) ffelex_swallow_tokens (t,
12049 (ffelexHandler) ffesta_zero);
12050
12051 bad_i:
12052 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "INCLUDE", ffesta_tokens[0], i, t);
12053 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
12054 }
12055
12056
12057
12058
12059
12060
12061
12062 static ffelexHandler
12063 ffestb_S3P41_ (ffelexToken ft, ffebld expr, ffelexToken t)
12064 {
12065 switch (ffelex_token_type (t))
12066 {
12067 case FFELEX_typeEOS:
12068 case FFELEX_typeSEMICOLON:
12069 if (expr == NULL)
12070 break;
12071 if (!ffesta_is_inhibited ())
12072 {
12073 if (ffe_is_pedantic ()
12074 && ((ffelex_token_type (t) == FFELEX_typeSEMICOLON)
12075 || ffesta_line_has_semicolons))
12076 {
12077
12078 ffebad_start_msg ("INCLUDE at %0 not the only statement on the source line", FFEBAD_severityWARNING);
12079 ffebad_here (0, ffelex_token_where_line (ffesta_tokens[0]),
12080 ffelex_token_where_column (ffesta_tokens[0]));
12081 ffebad_finish ();
12082 }
12083 ffestc_S3P4 (expr, ft);
12084 }
12085 return (ffelexHandler) ffesta_zero (t);
12086
12087 default:
12088 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INCLUDE", t);
12089 break;
12090 }
12091
12092 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
12093 }
12094
12095
12096
12097
12098
12099
12100
12101
12102 #if FFESTR_VXT
12103 ffelexHandler
12104 ffestb_V012 (ffelexToken t)
12105 {
12106 const char *p;
12107 ffeTokenLength i;
12108
12109 switch (ffelex_token_type (ffesta_tokens[0]))
12110 {
12111 case FFELEX_typeNAME:
12112 if (ffesta_first_kw != FFESTR_firstMAP)
12113 goto bad_0;
12114 break;
12115
12116 case FFELEX_typeNAMES:
12117 if (ffesta_first_kw != FFESTR_firstMAP)
12118 goto bad_0;
12119 if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlMAP)
12120 {
12121 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlMAP);
12122 goto bad_i;
12123 }
12124 break;
12125
12126 default:
12127 goto bad_0;
12128 }
12129
12130 switch (ffelex_token_type (t))
12131 {
12132 case FFELEX_typeEOS:
12133 case FFELEX_typeSEMICOLON:
12134 ffesta_confirmed ();
12135 if (!ffesta_is_inhibited ())
12136 ffestc_V012 ();
12137 return (ffelexHandler) ffesta_zero (t);
12138
12139 case FFELEX_typeCOMMA:
12140 case FFELEX_typeCOLONCOLON:
12141 ffesta_confirmed ();
12142 goto bad_1;
12143
12144 default:
12145 goto bad_1;
12146 }
12147
12148 bad_0:
12149 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "MAP", ffesta_tokens[0]);
12150 return (ffelexHandler) ffelex_swallow_tokens (t,
12151 (ffelexHandler) ffesta_zero);
12152
12153 bad_1:
12154 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "MAP", t);
12155 return (ffelexHandler) ffelex_swallow_tokens (t,
12156 (ffelexHandler) ffesta_zero);
12157
12158 bad_i:
12159 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "MAP", ffesta_tokens[0], i, t);
12160 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
12161 }
12162
12163 #endif
12164
12165
12166
12167
12168
12169
12170
12171 ffelexHandler
12172 ffestb_V014 (ffelexToken t)
12173 {
12174 ffeTokenLength i;
12175 unsigned const char *p;
12176 ffelexToken nt;
12177 ffelexHandler next;
12178
12179 switch (ffelex_token_type (ffesta_tokens[0]))
12180 {
12181 case FFELEX_typeNAME:
12182 if (ffesta_first_kw != FFESTR_firstVOLATILE)
12183 goto bad_0;
12184 switch (ffelex_token_type (t))
12185 {
12186 case FFELEX_typeEOS:
12187 case FFELEX_typeSEMICOLON:
12188 case FFELEX_typeCOMMA:
12189 ffesta_confirmed ();
12190 goto bad_1;
12191
12192 default:
12193 goto bad_1;
12194
12195 case FFELEX_typeNAME:
12196 case FFELEX_typeSLASH:
12197 ffesta_confirmed ();
12198 if (!ffesta_is_inhibited ())
12199 ffestc_V014_start ();
12200 return (ffelexHandler) ffestb_V0141_ (t);
12201
12202 case FFELEX_typeCOLONCOLON:
12203 ffesta_confirmed ();
12204 if (!ffesta_is_inhibited ())
12205 ffestc_V014_start ();
12206 return (ffelexHandler) ffestb_V0141_;
12207 }
12208
12209 case FFELEX_typeNAMES:
12210 if (ffesta_first_kw != FFESTR_firstVOLATILE)
12211 goto bad_0;
12212 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlVOLATILE);
12213 switch (ffelex_token_type (t))
12214 {
12215 default:
12216 goto bad_1;
12217
12218 case FFELEX_typeCOMMA:
12219 case FFELEX_typeEOS:
12220 case FFELEX_typeSEMICOLON:
12221 ffesta_confirmed ();
12222 break;
12223
12224 case FFELEX_typeSLASH:
12225 ffesta_confirmed ();
12226 if (*p != '\0')
12227 goto bad_i;
12228 if (!ffesta_is_inhibited ())
12229 ffestc_V014_start ();
12230 return (ffelexHandler) ffestb_V0141_ (t);
12231
12232 case FFELEX_typeCOLONCOLON:
12233 ffesta_confirmed ();
12234 if (*p != '\0')
12235 goto bad_i;
12236 if (!ffesta_is_inhibited ())
12237 ffestc_V014_start ();
12238 return (ffelexHandler) ffestb_V0141_;
12239 }
12240
12241
12242
12243
12244 if (!ffesrc_is_name_init (*p))
12245 goto bad_i;
12246 nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
12247 if (!ffesta_is_inhibited ())
12248 ffestc_V014_start ();
12249 next = (ffelexHandler) ffestb_V0141_ (nt);
12250 ffelex_token_kill (nt);
12251 return (ffelexHandler) (*next) (t);
12252
12253 default:
12254 goto bad_0;
12255 }
12256
12257 bad_0:
12258 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "VOLATILE", ffesta_tokens[0]);
12259 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
12260
12261 bad_1:
12262 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "VOLATILE", t);
12263 return (ffelexHandler) ffelex_swallow_tokens (t,
12264 (ffelexHandler) ffesta_zero);
12265
12266 bad_i:
12267 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "VOLATILE", ffesta_tokens[0], i, t);
12268 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
12269 }
12270
12271
12272
12273
12274
12275
12276
12277 static ffelexHandler
12278 ffestb_V0141_ (ffelexToken t)
12279 {
12280 switch (ffelex_token_type (t))
12281 {
12282 case FFELEX_typeNAME:
12283 ffestb_local_.V014.is_cblock = FALSE;
12284 ffesta_tokens[1] = ffelex_token_use (t);
12285 return (ffelexHandler) ffestb_V0144_;
12286
12287 case FFELEX_typeSLASH:
12288 ffestb_local_.V014.is_cblock = TRUE;
12289 return (ffelexHandler) ffestb_V0142_;
12290
12291 default:
12292 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "VOLATILE", t);
12293 break;
12294 }
12295
12296 if (!ffesta_is_inhibited ())
12297 ffestc_V014_finish ();
12298 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
12299 }
12300
12301
12302
12303
12304
12305
12306
12307 static ffelexHandler
12308 ffestb_V0142_ (ffelexToken t)
12309 {
12310 switch (ffelex_token_type (t))
12311 {
12312 case FFELEX_typeNAME:
12313 ffesta_tokens[1] = ffelex_token_use (t);
12314 return (ffelexHandler) ffestb_V0143_;
12315
12316 default:
12317 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "VOLATILE", t);
12318 break;
12319 }
12320
12321 if (!ffesta_is_inhibited ())
12322 ffestc_V014_finish ();
12323 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
12324 }
12325
12326
12327
12328
12329
12330
12331
12332 static ffelexHandler
12333 ffestb_V0143_ (ffelexToken t)
12334 {
12335 switch (ffelex_token_type (t))
12336 {
12337 case FFELEX_typeSLASH:
12338 return (ffelexHandler) ffestb_V0144_;
12339
12340 default:
12341 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "VOLATILE", t);
12342 break;
12343 }
12344
12345 if (!ffesta_is_inhibited ())
12346 ffestc_V014_finish ();
12347 ffelex_token_kill (ffesta_tokens[1]);
12348 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
12349 }
12350
12351
12352
12353
12354
12355
12356
12357 static ffelexHandler
12358 ffestb_V0144_ (ffelexToken t)
12359 {
12360 switch (ffelex_token_type (t))
12361 {
12362 case FFELEX_typeCOMMA:
12363 if (!ffesta_is_inhibited ())
12364 {
12365 if (ffestb_local_.V014.is_cblock)
12366 ffestc_V014_item_cblock (ffesta_tokens[1]);
12367 else
12368 ffestc_V014_item_object (ffesta_tokens[1]);
12369 }
12370 ffelex_token_kill (ffesta_tokens[1]);
12371 return (ffelexHandler) ffestb_V0141_;
12372
12373 case FFELEX_typeEOS:
12374 case FFELEX_typeSEMICOLON:
12375 if (!ffesta_is_inhibited ())
12376 {
12377 if (ffestb_local_.V014.is_cblock)
12378 ffestc_V014_item_cblock (ffesta_tokens[1]);
12379 else
12380 ffestc_V014_item_object (ffesta_tokens[1]);
12381 ffestc_V014_finish ();
12382 }
12383 ffelex_token_kill (ffesta_tokens[1]);
12384 return (ffelexHandler) ffesta_zero (t);
12385
12386 default:
12387 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "VOLATILE", t);
12388 break;
12389 }
12390
12391 if (!ffesta_is_inhibited ())
12392 ffestc_V014_finish ();
12393 ffelex_token_kill (ffesta_tokens[1]);
12394 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
12395 }
12396
12397
12398
12399
12400
12401
12402
12403
12404 #if FFESTR_VXT
12405 ffelexHandler
12406 ffestb_V025 (ffelexToken t)
12407 {
12408 ffeTokenLength i;
12409 const char *p;
12410 ffelexToken nt;
12411 ffelexHandler next;
12412
12413 ffestb_local_.V025.started = FALSE;
12414 switch (ffelex_token_type (ffesta_tokens[0]))
12415 {
12416 case FFELEX_typeNAME:
12417 switch (ffesta_first_kw)
12418 {
12419 case FFESTR_firstDEFINE:
12420 if ((ffelex_token_type (t) != FFELEX_typeNAME)
12421 || (ffesta_second_kw != FFESTR_secondFILE))
12422 goto bad_1;
12423 ffesta_confirmed ();
12424 return (ffelexHandler) ffestb_V0251_;
12425
12426 case FFESTR_firstDEFINEFILE:
12427 return (ffelexHandler) ffestb_V0251_ (t);
12428
12429 default:
12430 goto bad_0;
12431 }
12432
12433 case FFELEX_typeNAMES:
12434 if (ffesta_first_kw != FFESTR_firstDEFINEFILE)
12435 goto bad_0;
12436 switch (ffelex_token_type (t))
12437 {
12438 case FFELEX_typeCOMMA:
12439 case FFELEX_typeEOS:
12440 case FFELEX_typeSEMICOLON:
12441 case FFELEX_typeCOLONCOLON:
12442 ffesta_confirmed ();
12443 goto bad_1;
12444
12445 default:
12446 goto bad_1;
12447
12448 case FFELEX_typeOPEN_PAREN:
12449 break;
12450 }
12451 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlDEFINEFILE);
12452 if (ISDIGIT (*p))
12453 nt = ffelex_token_number_from_names (ffesta_tokens[0], i);
12454 else if (ffesrc_is_name_init (*p))
12455 nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
12456 else
12457 goto bad_i;
12458 next = (ffelexHandler) ffestb_V0251_ (nt);
12459 ffelex_token_kill (nt);
12460 return (ffelexHandler) (*next) (t);
12461
12462 default:
12463 goto bad_0;
12464 }
12465
12466 bad_0:
12467 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DEFINE FILE", ffesta_tokens[0]);
12468 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
12469
12470 bad_1:
12471 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DEFINE FILE", t);
12472 return (ffelexHandler) ffelex_swallow_tokens (t,
12473 (ffelexHandler) ffesta_zero);
12474
12475 bad_i:
12476 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "DEFINE FILE", ffesta_tokens[0], i, t);
12477 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
12478 }
12479
12480
12481
12482
12483
12484
12485
12486
12487 static ffelexHandler
12488 ffestb_V0251_ (ffelexToken t)
12489 {
12490 switch (ffelex_token_type (t))
12491 {
12492 case FFELEX_typeNAME:
12493 case FFELEX_typeNUMBER:
12494 if (ffelex_token_type (ffesta_tokens[0]) == FFELEX_typeNAME)
12495 ffesta_confirmed ();
12496 return (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
12497 FFEEXPR_contextFILEUNIT_DF, (ffeexprCallback) ffestb_V0252_)))
12498 (t);
12499
12500 case FFELEX_typeEOS:
12501 case FFELEX_typeSEMICOLON:
12502 case FFELEX_typeCOMMA:
12503 case FFELEX_typeCOLONCOLON:
12504 ffesta_confirmed ();
12505 break;
12506
12507 default:
12508 break;
12509 }
12510
12511 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DEFINE FILE", t);
12512 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
12513 }
12514
12515
12516
12517
12518
12519
12520
12521
12522 static ffelexHandler
12523 ffestb_V0252_ (ffelexToken ft, ffebld expr, ffelexToken t)
12524 {
12525 switch (ffelex_token_type (t))
12526 {
12527 case FFELEX_typeOPEN_PAREN:
12528 ffestb_local_.V025.u = expr;
12529 ffesta_tokens[1] = ffelex_token_use (ft);
12530 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
12531 FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_V0253_);
12532
12533 default:
12534 break;
12535 }
12536
12537 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DEFINE FILE", t);
12538 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
12539 }
12540
12541
12542
12543
12544
12545
12546
12547
12548 static ffelexHandler
12549 ffestb_V0253_ (ffelexToken ft, ffebld expr, ffelexToken t)
12550 {
12551 switch (ffelex_token_type (t))
12552 {
12553 case FFELEX_typeCOMMA:
12554 ffestb_local_.V025.m = expr;
12555 ffesta_tokens[2] = ffelex_token_use (ft);
12556 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
12557 FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_V0254_);
12558
12559 default:
12560 break;
12561 }
12562
12563 ffelex_token_kill (ffesta_tokens[1]);
12564 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DEFINE FILE", t);
12565 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
12566 }
12567
12568
12569
12570
12571
12572
12573
12574
12575 static ffelexHandler
12576 ffestb_V0254_ (ffelexToken ft, ffebld expr, ffelexToken t)
12577 {
12578 switch (ffelex_token_type (t))
12579 {
12580 case FFELEX_typeCOMMA:
12581 ffestb_local_.V025.n = expr;
12582 ffesta_tokens[3] = ffelex_token_use (ft);
12583 return (ffelexHandler) ffestb_V0255_;
12584
12585 default:
12586 break;
12587 }
12588
12589 ffelex_token_kill (ffesta_tokens[1]);
12590 ffelex_token_kill (ffesta_tokens[2]);
12591 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DEFINE FILE", t);
12592 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
12593 }
12594
12595
12596
12597
12598
12599
12600
12601
12602 static ffelexHandler
12603 ffestb_V0255_ (ffelexToken t)
12604 {
12605 const char *p;
12606
12607 switch (ffelex_token_type (t))
12608 {
12609 case FFELEX_typeNAME:
12610 p = ffelex_token_text (t);
12611 if (!ffesrc_char_match_init (*p, 'U', 'u') || (*++p != '\0'))
12612 break;
12613 return (ffelexHandler) ffestb_V0256_;
12614
12615 default:
12616 break;
12617 }
12618
12619 ffelex_token_kill (ffesta_tokens[1]);
12620 ffelex_token_kill (ffesta_tokens[2]);
12621 ffelex_token_kill (ffesta_tokens[3]);
12622 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DEFINE FILE", t);
12623 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
12624 }
12625
12626
12627
12628
12629
12630
12631
12632
12633 static ffelexHandler
12634 ffestb_V0256_ (ffelexToken t)
12635 {
12636 switch (ffelex_token_type (t))
12637 {
12638 case FFELEX_typeCOMMA:
12639 return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
12640 FFEEXPR_contextFILEASSOC,
12641 (ffeexprCallback) ffestb_V0257_);
12642
12643 default:
12644 break;
12645 }
12646
12647 ffelex_token_kill (ffesta_tokens[1]);
12648 ffelex_token_kill (ffesta_tokens[2]);
12649 ffelex_token_kill (ffesta_tokens[3]);
12650 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DEFINE FILE", t);
12651 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
12652 }
12653
12654
12655
12656
12657
12658
12659
12660
12661
12662 static ffelexHandler
12663 ffestb_V0257_ (ffelexToken ft, ffebld expr, ffelexToken t)
12664 {
12665 switch (ffelex_token_type (t))
12666 {
12667 case FFELEX_typeCLOSE_PAREN:
12668 ffestb_local_.V025.asv = expr;
12669 ffesta_tokens[4] = ffelex_token_use (ft);
12670 return (ffelexHandler) ffestb_V0258_;
12671
12672 default:
12673 break;
12674 }
12675
12676 ffelex_token_kill (ffesta_tokens[1]);
12677 ffelex_token_kill (ffesta_tokens[2]);
12678 ffelex_token_kill (ffesta_tokens[3]);
12679 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DEFINE FILE", t);
12680 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
12681 }
12682
12683
12684
12685
12686
12687
12688
12689
12690
12691 static ffelexHandler
12692 ffestb_V0258_ (ffelexToken t)
12693 {
12694 switch (ffelex_token_type (t))
12695 {
12696 case FFELEX_typeCOMMA:
12697 case FFELEX_typeEOS:
12698 case FFELEX_typeSEMICOLON:
12699 if (!ffestb_local_.V025.started)
12700 {
12701 ffesta_confirmed ();
12702 if (!ffesta_is_inhibited ())
12703 ffestc_V025_start ();
12704 ffestb_local_.V025.started = TRUE;
12705 }
12706 if (!ffesta_is_inhibited ())
12707 ffestc_V025_item (ffestb_local_.V025.u, ffesta_tokens[1],
12708 ffestb_local_.V025.m, ffesta_tokens[2],
12709 ffestb_local_.V025.n, ffesta_tokens[3],
12710 ffestb_local_.V025.asv, ffesta_tokens[4]);
12711 ffelex_token_kill (ffesta_tokens[1]);
12712 ffelex_token_kill (ffesta_tokens[2]);
12713 ffelex_token_kill (ffesta_tokens[3]);
12714 ffelex_token_kill (ffesta_tokens[4]);
12715 if (ffelex_token_type (t) == FFELEX_typeCOMMA)
12716 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
12717 FFEEXPR_contextFILEUNIT_DF, (ffeexprCallback) ffestb_V0252_);
12718 if (!ffesta_is_inhibited ())
12719 ffestc_V025_finish ();
12720 return (ffelexHandler) ffesta_zero (t);
12721
12722 default:
12723 break;
12724 }
12725
12726 ffelex_token_kill (ffesta_tokens[1]);
12727 ffelex_token_kill (ffesta_tokens[2]);
12728 ffelex_token_kill (ffesta_tokens[3]);
12729 ffelex_token_kill (ffesta_tokens[4]);
12730 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DEFINE FILE", t);
12731 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
12732 }
12733
12734 #endif
12735
12736
12737
12738
12739
12740
12741
12742
12743
12744 #if FFESTB_KILL_EASY_
12745 static void
12746 ffestb_subr_kill_easy_ (ffestpInquireIx max)
12747 {
12748 ffestpInquireIx ix;
12749
12750 for (ix = 0; ix < max; ++ix)
12751 {
12752 if (ffestp_file.inquire.inquire_spec[ix].kw_or_val_present)
12753 {
12754 if (ffestp_file.inquire.inquire_spec[ix].kw_present)
12755 ffelex_token_kill (ffestp_file.inquire.inquire_spec[ix].kw);
12756 if (ffestp_file.inquire.inquire_spec[ix].value_present)
12757 ffelex_token_kill (ffestp_file.inquire.inquire_spec[ix].value);
12758 }
12759 }
12760 }
12761
12762 #endif
12763
12764
12765
12766
12767
12768
12769 #if !FFESTB_KILL_EASY_
12770 static void
12771 ffestb_subr_kill_accept_ ()
12772 {
12773 ffestpAcceptIx ix;
12774
12775 for (ix = 0; ix < FFESTP_acceptix; ++ix)
12776 {
12777 if (ffestp_file.accept.accept_spec[ix].kw_or_val_present)
12778 {
12779 if (ffestp_file.accept.accept_spec[ix].kw_present)
12780 ffelex_token_kill (ffestp_file.accept.accept_spec[ix].kw);
12781 if (ffestp_file.accept.accept_spec[ix].value_present)
12782 ffelex_token_kill (ffestp_file.accept.accept_spec[ix].value);
12783 }
12784 }
12785 }
12786
12787 #endif
12788
12789
12790
12791
12792
12793
12794
12795 #if !FFESTB_KILL_EASY_
12796 static void
12797 ffestb_subr_kill_beru_ ()
12798 {
12799 ffestpBeruIx ix;
12800
12801 for (ix = 0; ix < FFESTP_beruix; ++ix)
12802 {
12803 if (ffestp_file.beru.beru_spec[ix].kw_or_val_present)
12804 {
12805 if (ffestp_file.beru.beru_spec[ix].kw_present)
12806 ffelex_token_kill (ffestp_file.beru.beru_spec[ix].kw);
12807 if (ffestp_file.beru.beru_spec[ix].value_present)
12808 ffelex_token_kill (ffestp_file.beru.beru_spec[ix].value);
12809 }
12810 }
12811 }
12812
12813 #endif
12814
12815
12816
12817
12818
12819
12820 #if !FFESTB_KILL_EASY_
12821 static void
12822 ffestb_subr_kill_close_ ()
12823 {
12824 ffestpCloseIx ix;
12825
12826 for (ix = 0; ix < FFESTP_closeix; ++ix)
12827 {
12828 if (ffestp_file.close.close_spec[ix].kw_or_val_present)
12829 {
12830 if (ffestp_file.close.close_spec[ix].kw_present)
12831 ffelex_token_kill (ffestp_file.close.close_spec[ix].kw);
12832 if (ffestp_file.close.close_spec[ix].value_present)
12833 ffelex_token_kill (ffestp_file.close.close_spec[ix].value);
12834 }
12835 }
12836 }
12837
12838 #endif
12839
12840
12841
12842
12843
12844
12845 #if !FFESTB_KILL_EASY_
12846 static void
12847 ffestb_subr_kill_delete_ ()
12848 {
12849 ffestpDeleteIx ix;
12850
12851 for (ix = 0; ix < FFESTP_deleteix; ++ix)
12852 {
12853 if (ffestp_file.delete.delete_spec[ix].kw_or_val_present)
12854 {
12855 if (ffestp_file.delete.delete_spec[ix].kw_present)
12856 ffelex_token_kill (ffestp_file.delete.delete_spec[ix].kw);
12857 if (ffestp_file.delete.delete_spec[ix].value_present)
12858 ffelex_token_kill (ffestp_file.delete.delete_spec[ix].value);
12859 }
12860 }
12861 }
12862
12863 #endif
12864
12865
12866
12867
12868
12869
12870 #if !FFESTB_KILL_EASY_
12871 static void
12872 ffestb_subr_kill_inquire_ ()
12873 {
12874 ffestpInquireIx ix;
12875
12876 for (ix = 0; ix < FFESTP_inquireix; ++ix)
12877 {
12878 if (ffestp_file.inquire.inquire_spec[ix].kw_or_val_present)
12879 {
12880 if (ffestp_file.inquire.inquire_spec[ix].kw_present)
12881 ffelex_token_kill (ffestp_file.inquire.inquire_spec[ix].kw);
12882 if (ffestp_file.inquire.inquire_spec[ix].value_present)
12883 ffelex_token_kill (ffestp_file.inquire.inquire_spec[ix].value);
12884 }
12885 }
12886 }
12887
12888 #endif
12889
12890
12891
12892
12893
12894
12895 #if !FFESTB_KILL_EASY_
12896 static void
12897 ffestb_subr_kill_open_ ()
12898 {
12899 ffestpOpenIx ix;
12900
12901 for (ix = 0; ix < FFESTP_openix; ++ix)
12902 {
12903 if (ffestp_file.open.open_spec[ix].kw_or_val_present)
12904 {
12905 if (ffestp_file.open.open_spec[ix].kw_present)
12906 ffelex_token_kill (ffestp_file.open.open_spec[ix].kw);
12907 if (ffestp_file.open.open_spec[ix].value_present)
12908 ffelex_token_kill (ffestp_file.open.open_spec[ix].value);
12909 }
12910 }
12911 }
12912
12913 #endif
12914
12915
12916
12917
12918
12919
12920 #if !FFESTB_KILL_EASY_
12921 static void
12922 ffestb_subr_kill_print_ ()
12923 {
12924 ffestpPrintIx ix;
12925
12926 for (ix = 0; ix < FFESTP_printix; ++ix)
12927 {
12928 if (ffestp_file.print.print_spec[ix].kw_or_val_present)
12929 {
12930 if (ffestp_file.print.print_spec[ix].kw_present)
12931 ffelex_token_kill (ffestp_file.print.print_spec[ix].kw);
12932 if (ffestp_file.print.print_spec[ix].value_present)
12933 ffelex_token_kill (ffestp_file.print.print_spec[ix].value);
12934 }
12935 }
12936 }
12937
12938 #endif
12939
12940
12941
12942
12943
12944
12945 #if !FFESTB_KILL_EASY_
12946 static void
12947 ffestb_subr_kill_read_ ()
12948 {
12949 ffestpReadIx ix;
12950
12951 for (ix = 0; ix < FFESTP_readix; ++ix)
12952 {
12953 if (ffestp_file.read.read_spec[ix].kw_or_val_present)
12954 {
12955 if (ffestp_file.read.read_spec[ix].kw_present)
12956 ffelex_token_kill (ffestp_file.read.read_spec[ix].kw);
12957 if (ffestp_file.read.read_spec[ix].value_present)
12958 ffelex_token_kill (ffestp_file.read.read_spec[ix].value);
12959 }
12960 }
12961 }
12962
12963 #endif
12964
12965
12966
12967
12968
12969
12970 #if !FFESTB_KILL_EASY_
12971 static void
12972 ffestb_subr_kill_rewrite_ ()
12973 {
12974 ffestpRewriteIx ix;
12975
12976 for (ix = 0; ix < FFESTP_rewriteix; ++ix)
12977 {
12978 if (ffestp_file.rewrite.rewrite_spec[ix].kw_or_val_present)
12979 {
12980 if (ffestp_file.rewrite.rewrite_spec[ix].kw_present)
12981 ffelex_token_kill (ffestp_file.rewrite.rewrite_spec[ix].kw);
12982 if (ffestp_file.rewrite.rewrite_spec[ix].value_present)
12983 ffelex_token_kill (ffestp_file.rewrite.rewrite_spec[ix].value);
12984 }
12985 }
12986 }
12987
12988 #endif
12989
12990
12991
12992
12993
12994
12995 #if !FFESTB_KILL_EASY_
12996 static void
12997 ffestb_subr_kill_type_ ()
12998 {
12999 ffestpTypeIx ix;
13000
13001 for (ix = 0; ix < FFESTP_typeix; ++ix)
13002 {
13003 if (ffestp_file.type.type_spec[ix].kw_or_val_present)
13004 {
13005 if (ffestp_file.type.type_spec[ix].kw_present)
13006 ffelex_token_kill (ffestp_file.type.type_spec[ix].kw);
13007 if (ffestp_file.type.type_spec[ix].value_present)
13008 ffelex_token_kill (ffestp_file.type.type_spec[ix].value);
13009 }
13010 }
13011 }
13012
13013 #endif
13014
13015
13016
13017
13018
13019
13020 #if !FFESTB_KILL_EASY_
13021 static void
13022 ffestb_subr_kill_write_ ()
13023 {
13024 ffestpWriteIx ix;
13025
13026 for (ix = 0; ix < FFESTP_writeix; ++ix)
13027 {
13028 if (ffestp_file.write.write_spec[ix].kw_or_val_present)
13029 {
13030 if (ffestp_file.write.write_spec[ix].kw_present)
13031 ffelex_token_kill (ffestp_file.write.write_spec[ix].kw);
13032 if (ffestp_file.write.write_spec[ix].value_present)
13033 ffelex_token_kill (ffestp_file.write.write_spec[ix].value);
13034 }
13035 }
13036 }
13037
13038 #endif
13039
13040
13041
13042
13043
13044
13045
13046 ffelexHandler
13047 ffestb_beru (ffelexToken t)
13048 {
13049 ffelexHandler next;
13050 ffestpBeruIx ix;
13051
13052 switch (ffelex_token_type (ffesta_tokens[0]))
13053 {
13054 case FFELEX_typeNAME:
13055 switch (ffelex_token_type (t))
13056 {
13057 case FFELEX_typeCOMMA:
13058 case FFELEX_typeCOLONCOLON:
13059 case FFELEX_typeEOS:
13060 case FFELEX_typeSEMICOLON:
13061 ffesta_confirmed ();
13062 goto bad_1;
13063
13064 case FFELEX_typeEQUALS:
13065 case FFELEX_typePOINTS:
13066 case FFELEX_typeCOLON:
13067 goto bad_1;
13068
13069 case FFELEX_typeNAME:
13070 case FFELEX_typeNUMBER:
13071 ffesta_confirmed ();
13072 break;
13073
13074 case FFELEX_typeOPEN_PAREN:
13075 for (ix = 0; ix < FFESTP_beruix; ++ix)
13076 ffestp_file.beru.beru_spec[ix].kw_or_val_present = FALSE;
13077 ffesta_tokens[1] = ffelex_token_use (t);
13078 return (ffelexHandler) ffestb_beru2_;
13079
13080 default:
13081 break;
13082 }
13083
13084 for (ix = 0; ix < FFESTP_beruix; ++ix)
13085 ffestp_file.beru.beru_spec[ix].kw_or_val_present = FALSE;
13086 return (ffelexHandler) (*((ffelexHandler)
13087 ffeexpr_rhs (ffesta_output_pool,
13088 FFEEXPR_contextFILENUM,
13089 (ffeexprCallback) ffestb_beru1_)))
13090 (t);
13091
13092 case FFELEX_typeNAMES:
13093 switch (ffelex_token_type (t))
13094 {
13095 case FFELEX_typeCOMMA:
13096 case FFELEX_typeCOLONCOLON:
13097 ffesta_confirmed ();
13098 goto bad_1;
13099
13100 case FFELEX_typeEQUALS:
13101 case FFELEX_typePOINTS:
13102 case FFELEX_typeCOLON:
13103 goto bad_1;
13104
13105 case FFELEX_typeEOS:
13106 case FFELEX_typeSEMICOLON:
13107 ffesta_confirmed ();
13108 break;
13109
13110 case FFELEX_typeOPEN_PAREN:
13111 if (ffelex_token_length (ffesta_tokens[0])
13112 != ffestb_args.beru.len)
13113 break;
13114
13115 for (ix = 0; ix < FFESTP_beruix; ++ix)
13116 ffestp_file.beru.beru_spec[ix].kw_or_val_present = FALSE;
13117 ffesta_tokens[1] = ffelex_token_use (t);
13118 return (ffelexHandler) ffestb_beru2_;
13119
13120 default:
13121 break;
13122 }
13123 for (ix = 0; ix < FFESTP_beruix; ++ix)
13124 ffestp_file.beru.beru_spec[ix].kw_or_val_present = FALSE;
13125 next = (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
13126 FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_beru1_);
13127 next = (ffelexHandler) ffelex_splice_tokens (next, ffesta_tokens[0],
13128 ffestb_args.beru.len);
13129 if (next == NULL)
13130 return (ffelexHandler) ffelex_swallow_tokens (t,
13131 (ffelexHandler) ffesta_zero);
13132 return (ffelexHandler) (*next) (t);
13133
13134 default:
13135 goto bad_0;
13136 }
13137
13138 bad_0:
13139 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.beru.badname, ffesta_tokens[0]);
13140 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
13141
13142 bad_1:
13143 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.beru.badname, t);
13144 return (ffelexHandler) ffelex_swallow_tokens (t,
13145 (ffelexHandler) ffesta_zero);
13146 }
13147
13148
13149
13150
13151
13152
13153
13154 static ffelexHandler
13155 ffestb_beru1_ (ffelexToken ft, ffebld expr, ffelexToken t)
13156 {
13157 switch (ffelex_token_type (t))
13158 {
13159 case FFELEX_typeEOS:
13160 case FFELEX_typeSEMICOLON:
13161 if (expr == NULL)
13162 break;
13163 ffesta_confirmed ();
13164 ffestp_file.beru.beru_spec[FFESTP_beruixUNIT].kw_or_val_present
13165 = TRUE;
13166 ffestp_file.beru.beru_spec[FFESTP_beruixUNIT].kw_present = FALSE;
13167 ffestp_file.beru.beru_spec[FFESTP_beruixUNIT].value_present = TRUE;
13168 ffestp_file.beru.beru_spec[FFESTP_beruixUNIT].value_is_label
13169 = FALSE;
13170 ffestp_file.beru.beru_spec[FFESTP_beruixUNIT].value
13171 = ffelex_token_use (ft);
13172 ffestp_file.beru.beru_spec[FFESTP_beruixUNIT].u.expr = expr;
13173 if (!ffesta_is_inhibited ())
13174 {
13175 switch (ffesta_first_kw)
13176 {
13177 case FFESTR_firstBACKSPACE:
13178 ffestc_R919 ();
13179 break;
13180
13181 case FFESTR_firstENDFILE:
13182 case FFESTR_firstEND:
13183 ffestc_R920 ();
13184 break;
13185
13186 case FFESTR_firstREWIND:
13187 ffestc_R921 ();
13188 break;
13189
13190 #if FFESTR_VXT
13191 case FFESTR_firstUNLOCK:
13192 ffestc_V022 ();
13193 break;
13194 #endif
13195
13196 default:
13197 assert (FALSE);
13198 }
13199 }
13200 ffestb_subr_kill_beru_ ();
13201 return (ffelexHandler) ffesta_zero (t);
13202
13203 default:
13204 break;
13205 }
13206
13207 ffestb_subr_kill_beru_ ();
13208 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.beru.badname, t);
13209 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
13210 }
13211
13212
13213
13214
13215
13216
13217
13218 static ffelexHandler
13219 ffestb_beru2_ (ffelexToken t)
13220 {
13221 ffelexToken nt;
13222 ffelexHandler next;
13223
13224 switch (ffelex_token_type (t))
13225 {
13226 case FFELEX_typeNAME:
13227 ffesta_tokens[2] = ffelex_token_use (t);
13228 return (ffelexHandler) ffestb_beru3_;
13229
13230 default:
13231 nt = ffesta_tokens[1];
13232 next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
13233 FFEEXPR_contextFILENUMAMBIG, (ffeexprCallback) ffestb_beru4_)))
13234 (nt);
13235 ffelex_token_kill (nt);
13236 return (ffelexHandler) (*next) (t);
13237 }
13238 }
13239
13240
13241
13242
13243
13244
13245
13246
13247 static ffelexHandler
13248 ffestb_beru3_ (ffelexToken t)
13249 {
13250 ffelexHandler next;
13251 ffelexToken nt;
13252 ffelexToken ot;
13253
13254 switch (ffelex_token_type (t))
13255 {
13256 case FFELEX_typeEQUALS:
13257 ffelex_token_kill (ffesta_tokens[1]);
13258 nt = ffesta_tokens[2];
13259 next = (ffelexHandler) ffestb_beru5_ (nt);
13260 ffelex_token_kill (nt);
13261 return (ffelexHandler) (*next) (t);
13262
13263 default:
13264 nt = ffesta_tokens[1];
13265 ot = ffesta_tokens[2];
13266 next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
13267 FFEEXPR_contextFILENUMAMBIG, (ffeexprCallback) ffestb_beru4_)))
13268 (nt);
13269 ffelex_token_kill (nt);
13270 next = (ffelexHandler) (*next) (ot);
13271 ffelex_token_kill (ot);
13272 return (ffelexHandler) (*next) (t);
13273 }
13274 }
13275
13276
13277
13278
13279
13280
13281
13282
13283
13284
13285
13286
13287
13288
13289
13290
13291
13292
13293 static ffelexHandler
13294 ffestb_beru4_ (ffelexToken ft, ffebld expr, ffelexToken t)
13295 {
13296 bool inlist;
13297
13298 switch (ffelex_token_type (t))
13299 {
13300 case FFELEX_typeCOMMA:
13301 case FFELEX_typeEOS:
13302 case FFELEX_typeSEMICOLON:
13303 case FFELEX_typeCLOSE_PAREN:
13304 if (expr == NULL)
13305 break;
13306 if (ffebld_op (expr) == FFEBLD_opITEM)
13307 {
13308 inlist = TRUE;
13309 expr = ffebld_head (expr);
13310 }
13311 else
13312 inlist = FALSE;
13313 ffestp_file.beru.beru_spec[FFESTP_beruixUNIT].kw_or_val_present
13314 = TRUE;
13315 ffestp_file.beru.beru_spec[FFESTP_beruixUNIT].kw_present = FALSE;
13316 ffestp_file.beru.beru_spec[FFESTP_beruixUNIT].value_present = TRUE;
13317 ffestp_file.beru.beru_spec[FFESTP_beruixUNIT].value_is_label
13318 = FALSE;
13319 ffestp_file.beru.beru_spec[FFESTP_beruixUNIT].value
13320 = ffelex_token_use (ft);
13321 ffestp_file.beru.beru_spec[FFESTP_beruixUNIT].u.expr = expr;
13322 if (inlist)
13323 return (ffelexHandler) ffestb_beru9_ (t);
13324 return (ffelexHandler) ffestb_beru10_ (t);
13325
13326 default:
13327 break;
13328 }
13329
13330 ffestb_subr_kill_beru_ ();
13331 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.beru.badname, t);
13332 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
13333 }
13334
13335
13336
13337
13338
13339
13340
13341
13342 static ffelexHandler
13343 ffestb_beru5_ (ffelexToken t)
13344 {
13345 ffestrGenio kw;
13346
13347 ffestb_local_.beru.label = FALSE;
13348
13349 switch (ffelex_token_type (t))
13350 {
13351 case FFELEX_typeNAME:
13352 kw = ffestr_genio (t);
13353 switch (kw)
13354 {
13355 case FFESTR_genioERR:
13356 ffestb_local_.beru.ix = FFESTP_beruixERR;
13357 ffestb_local_.beru.label = TRUE;
13358 break;
13359
13360 case FFESTR_genioIOSTAT:
13361 ffestb_local_.beru.ix = FFESTP_beruixIOSTAT;
13362 ffestb_local_.beru.left = TRUE;
13363 ffestb_local_.beru.context = FFEEXPR_contextFILEINT;
13364 break;
13365
13366 case FFESTR_genioUNIT:
13367 ffestb_local_.beru.ix = FFESTP_beruixUNIT;
13368 ffestb_local_.beru.left = FALSE;
13369 ffestb_local_.beru.context = FFEEXPR_contextFILENUM;
13370 break;
13371
13372 default:
13373 goto bad;
13374 }
13375 if (ffestp_file.beru.beru_spec[ffestb_local_.beru.ix]
13376 .kw_or_val_present)
13377 break;
13378 ffestp_file.beru.beru_spec[ffestb_local_.beru.ix]
13379 .kw_or_val_present = TRUE;
13380 ffestp_file.beru.beru_spec[ffestb_local_.beru.ix]
13381 .kw_present = TRUE;
13382 ffestp_file.beru.beru_spec[ffestb_local_.beru.ix]
13383 .value_present = FALSE;
13384 ffestp_file.beru.beru_spec[ffestb_local_.beru.ix].value_is_label
13385 = ffestb_local_.beru.label;
13386 ffestp_file.beru.beru_spec[ffestb_local_.beru.ix].kw
13387 = ffelex_token_use (t);
13388 return (ffelexHandler) ffestb_beru6_;
13389
13390 default:
13391 break;
13392 }
13393
13394 bad:
13395 ffestb_subr_kill_beru_ ();
13396 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.beru.badname, t);
13397 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
13398 }
13399
13400
13401
13402
13403
13404
13405
13406
13407 static ffelexHandler
13408 ffestb_beru6_ (ffelexToken t)
13409 {
13410
13411 switch (ffelex_token_type (t))
13412 {
13413 case FFELEX_typeEQUALS:
13414 ffesta_confirmed ();
13415 if (ffestb_local_.beru.label)
13416 return (ffelexHandler) ffestb_beru8_;
13417 if (ffestb_local_.beru.left)
13418 return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
13419 ffestb_local_.beru.context,
13420 (ffeexprCallback) ffestb_beru7_);
13421 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
13422 ffestb_local_.beru.context,
13423 (ffeexprCallback) ffestb_beru7_);
13424
13425 default:
13426 break;
13427 }
13428
13429 ffestb_subr_kill_beru_ ();
13430 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.beru.badname, t);
13431 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
13432 }
13433
13434
13435
13436
13437
13438
13439
13440 static ffelexHandler
13441 ffestb_beru7_ (ffelexToken ft, ffebld expr, ffelexToken t)
13442 {
13443 switch (ffelex_token_type (t))
13444 {
13445 case FFELEX_typeCOMMA:
13446 case FFELEX_typeCLOSE_PAREN:
13447 if (expr == NULL)
13448 break;
13449 ffestp_file.beru.beru_spec[ffestb_local_.beru.ix].value_present
13450 = TRUE;
13451 ffestp_file.beru.beru_spec[ffestb_local_.beru.ix].value
13452 = ffelex_token_use (ft);
13453 ffestp_file.beru.beru_spec[ffestb_local_.beru.ix].u.expr = expr;
13454 if (ffelex_token_type (t) == FFELEX_typeCOMMA)
13455 return (ffelexHandler) ffestb_beru5_;
13456 return (ffelexHandler) ffestb_beru10_;
13457
13458 default:
13459 break;
13460 }
13461
13462 ffestb_subr_kill_beru_ ();
13463 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.beru.badname, t);
13464 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
13465 }
13466
13467
13468
13469
13470
13471
13472
13473 static ffelexHandler
13474 ffestb_beru8_ (ffelexToken t)
13475 {
13476 switch (ffelex_token_type (t))
13477 {
13478 case FFELEX_typeNUMBER:
13479 ffestp_file.beru.beru_spec[ffestb_local_.beru.ix].value_present
13480 = TRUE;
13481 ffestp_file.beru.beru_spec[ffestb_local_.beru.ix].value
13482 = ffelex_token_use (t);
13483 return (ffelexHandler) ffestb_beru9_;
13484
13485 default:
13486 break;
13487 }
13488
13489 ffestb_subr_kill_beru_ ();
13490 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.beru.badname, t);
13491 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
13492 }
13493
13494
13495
13496
13497
13498
13499
13500
13501 static ffelexHandler
13502 ffestb_beru9_ (ffelexToken t)
13503 {
13504 switch (ffelex_token_type (t))
13505 {
13506 case FFELEX_typeCOMMA:
13507 return (ffelexHandler) ffestb_beru5_;
13508
13509 case FFELEX_typeCLOSE_PAREN:
13510 return (ffelexHandler) ffestb_beru10_;
13511
13512 default:
13513 break;
13514 }
13515
13516 ffestb_subr_kill_beru_ ();
13517 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.beru.badname, t);
13518 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
13519 }
13520
13521
13522
13523
13524
13525
13526
13527 static ffelexHandler
13528 ffestb_beru10_ (ffelexToken t)
13529 {
13530 switch (ffelex_token_type (t))
13531 {
13532 case FFELEX_typeEOS:
13533 case FFELEX_typeSEMICOLON:
13534 ffesta_confirmed ();
13535 if (!ffesta_is_inhibited ())
13536 {
13537 switch (ffesta_first_kw)
13538 {
13539 case FFESTR_firstBACKSPACE:
13540 ffestc_R919 ();
13541 break;
13542
13543 case FFESTR_firstENDFILE:
13544 case FFESTR_firstEND:
13545 ffestc_R920 ();
13546 break;
13547
13548 case FFESTR_firstREWIND:
13549 ffestc_R921 ();
13550 break;
13551
13552 #if FFESTR_VXT
13553 case FFESTR_firstUNLOCK:
13554 ffestc_V022 ();
13555 break;
13556 #endif
13557
13558 default:
13559 assert (FALSE);
13560 }
13561 }
13562 ffestb_subr_kill_beru_ ();
13563 return (ffelexHandler) ffesta_zero (t);
13564
13565 default:
13566 break;
13567 }
13568
13569 ffestb_subr_kill_beru_ ();
13570 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.beru.badname, t);
13571 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
13572 }
13573
13574
13575
13576
13577
13578
13579
13580
13581 #if FFESTR_VXT
13582 ffelexHandler
13583 ffestb_vxtcode (ffelexToken t)
13584 {
13585 ffestpVxtcodeIx ix;
13586
13587 switch (ffelex_token_type (ffesta_tokens[0]))
13588 {
13589 case FFELEX_typeNAME:
13590 switch (ffelex_token_type (t))
13591 {
13592 case FFELEX_typeCOMMA:
13593 case FFELEX_typeCOLONCOLON:
13594 case FFELEX_typeEOS:
13595 case FFELEX_typeSEMICOLON:
13596 case FFELEX_typeNAME:
13597 case FFELEX_typeNUMBER:
13598 ffesta_confirmed ();
13599 goto bad_1;
13600
13601 default:
13602 goto bad_1;
13603
13604 case FFELEX_typeOPEN_PAREN:
13605 for (ix = 0; ix < FFESTP_vxtcodeix; ++ix)
13606 ffestp_file.vxtcode.vxtcode_spec[ix].kw_or_val_present = FALSE;
13607 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
13608 FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_vxtcode1_);
13609 }
13610
13611 case FFELEX_typeNAMES:
13612 switch (ffelex_token_type (t))
13613 {
13614 case FFELEX_typeEOS:
13615 case FFELEX_typeSEMICOLON:
13616 case FFELEX_typeCOMMA:
13617 case FFELEX_typeCOLONCOLON:
13618 ffesta_confirmed ();
13619 goto bad_1;
13620
13621 default:
13622 goto bad_1;
13623
13624 case FFELEX_typeOPEN_PAREN:
13625 if (ffelex_token_length (ffesta_tokens[0])
13626 != ffestb_args.vxtcode.len)
13627 goto bad_0;
13628
13629 for (ix = 0; ix < FFESTP_vxtcodeix; ++ix)
13630 ffestp_file.vxtcode.vxtcode_spec[ix].kw_or_val_present = FALSE;
13631 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
13632 FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_vxtcode1_);
13633 }
13634
13635 default:
13636 goto bad_0;
13637 }
13638
13639 bad_0:
13640 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.vxtcode.badname, ffesta_tokens[0]);
13641 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
13642
13643 bad_1:
13644 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.vxtcode.badname, t);
13645 return (ffelexHandler) ffelex_swallow_tokens (t,
13646 (ffelexHandler) ffesta_zero);
13647 }
13648
13649
13650
13651
13652
13653
13654
13655 static ffelexHandler
13656 ffestb_vxtcode1_ (ffelexToken ft, ffebld expr, ffelexToken t)
13657 {
13658 switch (ffelex_token_type (t))
13659 {
13660 case FFELEX_typeCOMMA:
13661 if (expr == NULL)
13662 break;
13663 ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixC].kw_or_val_present
13664 = TRUE;
13665 ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixC].kw_present = FALSE;
13666 ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixC].value_present = TRUE;
13667 ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixC].value_is_label
13668 = FALSE;
13669 ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixC].value
13670 = ffelex_token_use (ft);
13671 ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixC].u.expr = expr;
13672 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
13673 FFEEXPR_contextFILEFORMAT, (ffeexprCallback) ffestb_vxtcode2_);
13674
13675 default:
13676 break;
13677 }
13678
13679 ffestb_subr_kill_vxtcode_ ();
13680 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.vxtcode.badname, t);
13681 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
13682 }
13683
13684
13685
13686
13687
13688
13689
13690 static ffelexHandler
13691 ffestb_vxtcode2_ (ffelexToken ft, ffebld expr, ffelexToken t)
13692 {
13693 switch (ffelex_token_type (t))
13694 {
13695 case FFELEX_typeCOMMA:
13696 ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixF].kw_or_val_present
13697 = TRUE;
13698 ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixF].kw_present = FALSE;
13699 ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixF].value_present = TRUE;
13700 ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixF].value_is_label
13701 = (expr == NULL);
13702 ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixF].value
13703 = ffelex_token_use (ft);
13704 ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixF].u.expr = expr;
13705 if (ffesta_first_kw == FFESTR_firstENCODE)
13706 return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
13707 FFEEXPR_contextFILEVXTCODE,
13708 (ffeexprCallback) ffestb_vxtcode3_);
13709 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
13710 FFEEXPR_contextFILEVXTCODE,
13711 (ffeexprCallback) ffestb_vxtcode3_);
13712
13713 default:
13714 break;
13715 }
13716
13717 ffestb_subr_kill_vxtcode_ ();
13718 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.vxtcode.badname, t);
13719 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
13720 }
13721
13722
13723
13724
13725
13726
13727
13728 static ffelexHandler
13729 ffestb_vxtcode3_ (ffelexToken ft, ffebld expr, ffelexToken t)
13730 {
13731 switch (ffelex_token_type (t))
13732 {
13733 case FFELEX_typeCOMMA:
13734 case FFELEX_typeCLOSE_PAREN:
13735 if (expr == NULL)
13736 break;
13737 ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixB].kw_or_val_present
13738 = TRUE;
13739 ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixB].kw_present = FALSE;
13740 ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixB].value_present = TRUE;
13741 ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixB].value_is_label
13742 = FALSE;
13743 ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixB].value
13744 = ffelex_token_use (ft);
13745 ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixB].u.expr = expr;
13746 if (ffelex_token_type (t) == FFELEX_typeCOMMA)
13747 return (ffelexHandler) ffestb_vxtcode4_;
13748 return (ffelexHandler) ffestb_vxtcode9_;
13749
13750 default:
13751 break;
13752 }
13753
13754 ffestb_subr_kill_vxtcode_ ();
13755 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.vxtcode.badname, t);
13756 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
13757 }
13758
13759
13760
13761
13762
13763
13764
13765 static ffelexHandler
13766 ffestb_vxtcode4_ (ffelexToken t)
13767 {
13768 ffestrGenio kw;
13769
13770 ffestb_local_.vxtcode.label = FALSE;
13771
13772 switch (ffelex_token_type (t))
13773 {
13774 case FFELEX_typeNAME:
13775 kw = ffestr_genio (t);
13776 switch (kw)
13777 {
13778 case FFESTR_genioERR:
13779 ffestb_local_.vxtcode.ix = FFESTP_vxtcodeixERR;
13780 ffestb_local_.vxtcode.label = TRUE;
13781 break;
13782
13783 case FFESTR_genioIOSTAT:
13784 ffestb_local_.vxtcode.ix = FFESTP_vxtcodeixIOSTAT;
13785 ffestb_local_.vxtcode.left = TRUE;
13786 ffestb_local_.vxtcode.context = FFEEXPR_contextFILEINT;
13787 break;
13788
13789 default:
13790 goto bad;
13791 }
13792 if (ffestp_file.vxtcode.vxtcode_spec[ffestb_local_.vxtcode.ix]
13793 .kw_or_val_present)
13794 break;
13795 ffestp_file.vxtcode.vxtcode_spec[ffestb_local_.vxtcode.ix]
13796 .kw_or_val_present = TRUE;
13797 ffestp_file.vxtcode.vxtcode_spec[ffestb_local_.vxtcode.ix]
13798 .kw_present = TRUE;
13799 ffestp_file.vxtcode.vxtcode_spec[ffestb_local_.vxtcode.ix]
13800 .value_present = FALSE;
13801 ffestp_file.vxtcode.vxtcode_spec[ffestb_local_.vxtcode.ix].value_is_label
13802 = ffestb_local_.vxtcode.label;
13803 ffestp_file.vxtcode.vxtcode_spec[ffestb_local_.vxtcode.ix].kw
13804 = ffelex_token_use (t);
13805 return (ffelexHandler) ffestb_vxtcode5_;
13806
13807 default:
13808 break;
13809 }
13810
13811 bad:
13812 ffestb_subr_kill_vxtcode_ ();
13813 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.vxtcode.badname, t);
13814 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
13815 }
13816
13817
13818
13819
13820
13821
13822
13823
13824 static ffelexHandler
13825 ffestb_vxtcode5_ (ffelexToken t)
13826 {
13827 switch (ffelex_token_type (t))
13828 {
13829 case FFELEX_typeEQUALS:
13830 ffesta_confirmed ();
13831 if (ffestb_local_.vxtcode.label)
13832 return (ffelexHandler) ffestb_vxtcode7_;
13833 if (ffestb_local_.vxtcode.left)
13834 return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
13835 ffestb_local_.vxtcode.context,
13836 (ffeexprCallback) ffestb_vxtcode6_);
13837 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
13838 ffestb_local_.vxtcode.context,
13839 (ffeexprCallback) ffestb_vxtcode6_);
13840
13841 default:
13842 break;
13843 }
13844
13845 ffestb_subr_kill_vxtcode_ ();
13846 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.vxtcode.badname, t);
13847 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
13848 }
13849
13850
13851
13852
13853
13854
13855
13856 static ffelexHandler
13857 ffestb_vxtcode6_ (ffelexToken ft, ffebld expr, ffelexToken t)
13858 {
13859 switch (ffelex_token_type (t))
13860 {
13861 case FFELEX_typeCOMMA:
13862 case FFELEX_typeCLOSE_PAREN:
13863 if (expr == NULL)
13864 break;
13865 ffestp_file.vxtcode.vxtcode_spec[ffestb_local_.vxtcode.ix].value_present
13866 = TRUE;
13867 ffestp_file.vxtcode.vxtcode_spec[ffestb_local_.vxtcode.ix].value
13868 = ffelex_token_use (ft);
13869 ffestp_file.vxtcode.vxtcode_spec[ffestb_local_.vxtcode.ix].u.expr = expr;
13870 if (ffelex_token_type (t) == FFELEX_typeCOMMA)
13871 return (ffelexHandler) ffestb_vxtcode4_;
13872 return (ffelexHandler) ffestb_vxtcode9_;
13873
13874 default:
13875 break;
13876 }
13877
13878 ffestb_subr_kill_vxtcode_ ();
13879 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.vxtcode.badname, t);
13880 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
13881 }
13882
13883
13884
13885
13886
13887
13888
13889 static ffelexHandler
13890 ffestb_vxtcode7_ (ffelexToken t)
13891 {
13892 switch (ffelex_token_type (t))
13893 {
13894 case FFELEX_typeNUMBER:
13895 ffestp_file.vxtcode.vxtcode_spec[ffestb_local_.vxtcode.ix].value_present
13896 = TRUE;
13897 ffestp_file.vxtcode.vxtcode_spec[ffestb_local_.vxtcode.ix].value
13898 = ffelex_token_use (t);
13899 return (ffelexHandler) ffestb_vxtcode8_;
13900
13901 default:
13902 break;
13903 }
13904
13905 ffestb_subr_kill_vxtcode_ ();
13906 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.vxtcode.badname, t);
13907 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
13908 }
13909
13910
13911
13912
13913
13914
13915
13916 static ffelexHandler
13917 ffestb_vxtcode8_ (ffelexToken t)
13918 {
13919 switch (ffelex_token_type (t))
13920 {
13921 case FFELEX_typeCOMMA:
13922 return (ffelexHandler) ffestb_vxtcode4_;
13923
13924 case FFELEX_typeCLOSE_PAREN:
13925 return (ffelexHandler) ffestb_vxtcode9_;
13926
13927 default:
13928 break;
13929 }
13930
13931 ffestb_subr_kill_vxtcode_ ();
13932 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.vxtcode.badname, t);
13933 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
13934 }
13935
13936
13937
13938
13939
13940
13941
13942
13943
13944
13945
13946 static ffelexHandler
13947 ffestb_vxtcode9_ (ffelexToken t)
13948 {
13949 ffelexHandler next;
13950
13951 switch (ffelex_token_type (t))
13952 {
13953 case FFELEX_typeEOS:
13954 case FFELEX_typeSEMICOLON:
13955 ffesta_confirmed ();
13956 if (!ffesta_is_inhibited ())
13957 {
13958 if (ffesta_first_kw == FFESTR_firstENCODE)
13959 {
13960 ffestc_V023_start ();
13961 ffestc_V023_finish ();
13962 }
13963 else
13964 {
13965 ffestc_V024_start ();
13966 ffestc_V024_finish ();
13967 }
13968 }
13969 ffestb_subr_kill_vxtcode_ ();
13970 return (ffelexHandler) ffesta_zero (t);
13971
13972 case FFELEX_typeNAME:
13973 case FFELEX_typeOPEN_PAREN:
13974 case FFELEX_typeCOMMA:
13975 ffesta_confirmed ();
13976 if (!ffesta_is_inhibited ())
13977 if (ffesta_first_kw == FFESTR_firstENCODE)
13978 ffestc_V023_start ();
13979 else
13980 ffestc_V024_start ();
13981 ffestb_subr_kill_vxtcode_ ();
13982 if (ffesta_first_kw == FFESTR_firstDECODE)
13983 next = (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
13984 FFEEXPR_contextIOLISTDF,
13985 (ffeexprCallback) ffestb_vxtcode10_);
13986 else
13987 next = (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
13988 FFEEXPR_contextIOLISTDF,
13989 (ffeexprCallback) ffestb_vxtcode10_);
13990
13991
13992
13993
13994 if (!ffe_is_pedantic () && (ffelex_token_type (t) == FFELEX_typeCOMMA))
13995 return next;
13996
13997 return (ffelexHandler) (*next) (t);
13998
13999 default:
14000 break;
14001 }
14002
14003 ffestb_subr_kill_vxtcode_ ();
14004 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.vxtcode.badname, t);
14005 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
14006 }
14007
14008
14009
14010
14011
14012
14013
14014
14015
14016
14017
14018 static ffelexHandler
14019 ffestb_vxtcode10_ (ffelexToken ft, ffebld expr, ffelexToken t)
14020 {
14021 switch (ffelex_token_type (t))
14022 {
14023 case FFELEX_typeCOMMA:
14024 if (expr == NULL)
14025 break;
14026 if (!ffesta_is_inhibited ())
14027 if (ffesta_first_kw == FFESTR_firstENCODE)
14028 ffestc_V023_item (expr, ft);
14029 else
14030 ffestc_V024_item (expr, ft);
14031 if (ffesta_first_kw == FFESTR_firstDECODE)
14032 return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
14033 FFEEXPR_contextIOLISTDF,
14034 (ffeexprCallback) ffestb_vxtcode10_);
14035 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
14036 FFEEXPR_contextIOLISTDF,
14037 (ffeexprCallback) ffestb_vxtcode10_);
14038
14039 case FFELEX_typeEOS:
14040 case FFELEX_typeSEMICOLON:
14041 if (expr == NULL)
14042 break;
14043 if (!ffesta_is_inhibited ())
14044 {
14045 if (ffesta_first_kw == FFESTR_firstENCODE)
14046 {
14047 ffestc_V023_item (expr, ft);
14048 ffestc_V023_finish ();
14049 }
14050 else
14051 {
14052 ffestc_V024_item (expr, ft);
14053 ffestc_V024_finish ();
14054 }
14055 }
14056 return (ffelexHandler) ffesta_zero (t);
14057
14058 default:
14059 break;
14060 }
14061
14062 if (!ffesta_is_inhibited ())
14063 if (ffesta_first_kw == FFESTR_firstENCODE)
14064 ffestc_V023_finish ();
14065 else
14066 ffestc_V024_finish ();
14067 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.vxtcode.badname, t);
14068 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
14069 }
14070
14071 #endif
14072
14073
14074
14075
14076
14077
14078
14079 ffelexHandler
14080 ffestb_R904 (ffelexToken t)
14081 {
14082 ffestpOpenIx ix;
14083
14084 switch (ffelex_token_type (ffesta_tokens[0]))
14085 {
14086 case FFELEX_typeNAME:
14087 if (ffesta_first_kw != FFESTR_firstOPEN)
14088 goto bad_0;
14089 break;
14090
14091 case FFELEX_typeNAMES:
14092 if (ffesta_first_kw != FFESTR_firstOPEN)
14093 goto bad_0;
14094 if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlOPEN)
14095 goto bad_0;
14096 break;
14097
14098 default:
14099 goto bad_0;
14100 }
14101
14102 switch (ffelex_token_type (t))
14103 {
14104 case FFELEX_typeOPEN_PAREN:
14105 break;
14106
14107 case FFELEX_typeEOS:
14108 case FFELEX_typeSEMICOLON:
14109 case FFELEX_typeCOMMA:
14110 case FFELEX_typeCOLONCOLON:
14111 ffesta_confirmed ();
14112 goto bad_1;
14113
14114 default:
14115 goto bad_1;
14116 }
14117
14118 for (ix = 0; ix < FFESTP_openix; ++ix)
14119 ffestp_file.open.open_spec[ix].kw_or_val_present = FALSE;
14120
14121 return (ffelexHandler) ffestb_R9041_;
14122
14123 bad_0:
14124 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "OPEN", ffesta_tokens[0]);
14125 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
14126
14127 bad_1:
14128 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "OPEN", t);
14129 return (ffelexHandler) ffelex_swallow_tokens (t,
14130 (ffelexHandler) ffesta_zero);
14131 }
14132
14133
14134
14135
14136
14137
14138
14139 static ffelexHandler
14140 ffestb_R9041_ (ffelexToken t)
14141 {
14142 switch (ffelex_token_type (t))
14143 {
14144 case FFELEX_typeNAME:
14145 ffesta_tokens[1] = ffelex_token_use (t);
14146 return (ffelexHandler) ffestb_R9042_;
14147
14148 default:
14149 return (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
14150 FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_R9043_)))
14151 (t);
14152 }
14153 }
14154
14155
14156
14157
14158
14159
14160
14161
14162 static ffelexHandler
14163 ffestb_R9042_ (ffelexToken t)
14164 {
14165 ffelexHandler next;
14166 ffelexToken nt;
14167
14168 switch (ffelex_token_type (t))
14169 {
14170 case FFELEX_typeEQUALS:
14171 nt = ffesta_tokens[1];
14172 next = (ffelexHandler) ffestb_R9044_ (nt);
14173 ffelex_token_kill (nt);
14174 return (ffelexHandler) (*next) (t);
14175
14176 default:
14177 next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
14178 FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_R9043_)))
14179 (ffesta_tokens[1]);
14180 ffelex_token_kill (ffesta_tokens[1]);
14181 return (ffelexHandler) (*next) (t);
14182 }
14183 }
14184
14185
14186
14187
14188
14189
14190
14191 static ffelexHandler
14192 ffestb_R9043_ (ffelexToken ft, ffebld expr, ffelexToken t)
14193 {
14194 switch (ffelex_token_type (t))
14195 {
14196 case FFELEX_typeCOMMA:
14197 case FFELEX_typeCLOSE_PAREN:
14198 if (expr == NULL)
14199 break;
14200 ffestp_file.open.open_spec[FFESTP_openixUNIT].kw_or_val_present
14201 = TRUE;
14202 ffestp_file.open.open_spec[FFESTP_openixUNIT].kw_present = FALSE;
14203 ffestp_file.open.open_spec[FFESTP_openixUNIT].value_present = TRUE;
14204 ffestp_file.open.open_spec[FFESTP_openixUNIT].value_is_label
14205 = FALSE;
14206 ffestp_file.open.open_spec[FFESTP_openixUNIT].value
14207 = ffelex_token_use (ft);
14208 ffestp_file.open.open_spec[FFESTP_openixUNIT].u.expr = expr;
14209 if (ffelex_token_type (t) == FFELEX_typeCOMMA)
14210 return (ffelexHandler) ffestb_R9044_;
14211 return (ffelexHandler) ffestb_R9049_;
14212
14213 default:
14214 break;
14215 }
14216
14217 ffestb_subr_kill_open_ ();
14218 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "OPEN", t);
14219 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
14220 }
14221
14222
14223
14224
14225
14226
14227
14228 static ffelexHandler
14229 ffestb_R9044_ (ffelexToken t)
14230 {
14231 ffestrOpen kw;
14232
14233 ffestb_local_.open.label = FALSE;
14234
14235 switch (ffelex_token_type (t))
14236 {
14237 case FFELEX_typeNAME:
14238 kw = ffestr_open (t);
14239 switch (kw)
14240 {
14241 case FFESTR_openACCESS:
14242 ffestb_local_.open.ix = FFESTP_openixACCESS;
14243 ffestb_local_.open.left = FALSE;
14244 ffestb_local_.open.context = FFEEXPR_contextFILEDFCHAR;
14245 break;
14246
14247 case FFESTR_openACTION:
14248 ffestb_local_.open.ix = FFESTP_openixACTION;
14249 ffestb_local_.open.left = FALSE;
14250 ffestb_local_.open.context = FFEEXPR_contextFILEDFCHAR;
14251 break;
14252
14253 case FFESTR_openASSOCIATEVARIABLE:
14254 ffestb_local_.open.ix = FFESTP_openixASSOCIATEVARIABLE;
14255 ffestb_local_.open.left = TRUE;
14256 ffestb_local_.open.context = FFEEXPR_contextFILEASSOC;
14257 break;
14258
14259 case FFESTR_openBLANK:
14260 ffestb_local_.open.ix = FFESTP_openixBLANK;
14261 ffestb_local_.open.left = FALSE;
14262 ffestb_local_.open.context = FFEEXPR_contextFILEDFCHAR;
14263 break;
14264
14265 case FFESTR_openBLOCKSIZE:
14266 ffestb_local_.open.ix = FFESTP_openixBLOCKSIZE;
14267 ffestb_local_.open.left = FALSE;
14268 ffestb_local_.open.context = FFEEXPR_contextFILENUM;
14269 break;
14270
14271 case FFESTR_openBUFFERCOUNT:
14272 ffestb_local_.open.ix = FFESTP_openixBUFFERCOUNT;
14273 ffestb_local_.open.left = FALSE;
14274 ffestb_local_.open.context = FFEEXPR_contextFILENUM;
14275 break;
14276
14277 case FFESTR_openCARRIAGECONTROL:
14278 ffestb_local_.open.ix = FFESTP_openixCARRIAGECONTROL;
14279 ffestb_local_.open.left = FALSE;
14280 ffestb_local_.open.context = FFEEXPR_contextFILECHAR;
14281 break;
14282
14283 case FFESTR_openDEFAULTFILE:
14284 ffestb_local_.open.ix = FFESTP_openixDEFAULTFILE;
14285 ffestb_local_.open.left = FALSE;
14286 ffestb_local_.open.context = FFEEXPR_contextFILECHAR;
14287 break;
14288
14289 case FFESTR_openDELIM:
14290 ffestb_local_.open.ix = FFESTP_openixDELIM;
14291 ffestb_local_.open.left = FALSE;
14292 ffestb_local_.open.context = FFEEXPR_contextFILEDFCHAR;
14293 break;
14294
14295 case FFESTR_openDISP:
14296 case FFESTR_openDISPOSE:
14297 ffestb_local_.open.ix = FFESTP_openixDISPOSE;
14298 ffestb_local_.open.left = FALSE;
14299 ffestb_local_.open.context = FFEEXPR_contextFILECHAR;
14300 break;
14301
14302 case FFESTR_openERR:
14303 ffestb_local_.open.ix = FFESTP_openixERR;
14304 ffestb_local_.open.label = TRUE;
14305 break;
14306
14307 case FFESTR_openEXTENDSIZE:
14308 ffestb_local_.open.ix = FFESTP_openixEXTENDSIZE;
14309 ffestb_local_.open.left = FALSE;
14310 ffestb_local_.open.context = FFEEXPR_contextFILENUM;
14311 break;
14312
14313 case FFESTR_openFILE:
14314 case FFESTR_openNAME:
14315 ffestb_local_.open.ix = FFESTP_openixFILE;
14316 ffestb_local_.open.left = FALSE;
14317 ffestb_local_.open.context = FFEEXPR_contextFILECHAR;
14318 break;
14319
14320 case FFESTR_openFORM:
14321 ffestb_local_.open.ix = FFESTP_openixFORM;
14322 ffestb_local_.open.left = FALSE;
14323 ffestb_local_.open.context = FFEEXPR_contextFILEDFCHAR;
14324 break;
14325
14326 case FFESTR_openINITIALSIZE:
14327 ffestb_local_.open.ix = FFESTP_openixINITIALSIZE;
14328 ffestb_local_.open.left = FALSE;
14329 ffestb_local_.open.context = FFEEXPR_contextFILENUM;
14330 break;
14331
14332 case FFESTR_openIOSTAT:
14333 ffestb_local_.open.ix = FFESTP_openixIOSTAT;
14334 ffestb_local_.open.left = TRUE;
14335 ffestb_local_.open.context = FFEEXPR_contextFILEINT;
14336 break;
14337
14338 #if 0
14339
14340 case FFESTR_openKEY:
14341 ffestb_local_.open.ix = FFESTP_openixKEY;
14342 ffestb_local_.open.left = FALSE;
14343 ffestb_local_.open.context = FFEEXPR_contextFILEKEY;
14344 break;
14345 #endif
14346
14347 case FFESTR_openMAXREC:
14348 ffestb_local_.open.ix = FFESTP_openixMAXREC;
14349 ffestb_local_.open.left = FALSE;
14350 ffestb_local_.open.context = FFEEXPR_contextFILENUM;
14351 break;
14352
14353 case FFESTR_openNOSPANBLOCKS:
14354 if (ffestp_file.open.open_spec[FFESTP_openixNOSPANBLOCKS]
14355 .kw_or_val_present)
14356 goto bad;
14357 ffestp_file.open.open_spec[FFESTP_openixNOSPANBLOCKS]
14358 .kw_or_val_present = TRUE;
14359 ffestp_file.open.open_spec[FFESTP_openixNOSPANBLOCKS]
14360 .kw_present = TRUE;
14361 ffestp_file.open.open_spec[FFESTP_openixNOSPANBLOCKS]
14362 .value_present = FALSE;
14363 ffestp_file.open.open_spec[FFESTP_openixNOSPANBLOCKS].kw
14364 = ffelex_token_use (t);
14365 return (ffelexHandler) ffestb_R9048_;
14366
14367 case FFESTR_openORGANIZATION:
14368 ffestb_local_.open.ix = FFESTP_openixORGANIZATION;
14369 ffestb_local_.open.left = FALSE;
14370 ffestb_local_.open.context = FFEEXPR_contextFILECHAR;
14371 break;
14372
14373 case FFESTR_openPAD:
14374 ffestb_local_.open.ix = FFESTP_openixPAD;
14375 ffestb_local_.open.left = FALSE;
14376 ffestb_local_.open.context = FFEEXPR_contextFILEDFCHAR;
14377 break;
14378
14379 case FFESTR_openPOSITION:
14380 ffestb_local_.open.ix = FFESTP_openixPOSITION;
14381 ffestb_local_.open.left = FALSE;
14382 ffestb_local_.open.context = FFEEXPR_contextFILEDFCHAR;
14383 break;
14384
14385 case FFESTR_openREADONLY:
14386 if (ffestp_file.open.open_spec[FFESTP_openixREADONLY]
14387 .kw_or_val_present)
14388 goto bad;
14389 ffestp_file.open.open_spec[FFESTP_openixREADONLY]
14390 .kw_or_val_present = TRUE;
14391 ffestp_file.open.open_spec[FFESTP_openixREADONLY]
14392 .kw_present = TRUE;
14393 ffestp_file.open.open_spec[FFESTP_openixREADONLY]
14394 .value_present = FALSE;
14395 ffestp_file.open.open_spec[FFESTP_openixREADONLY].kw
14396 = ffelex_token_use (t);
14397 return (ffelexHandler) ffestb_R9048_;
14398
14399 case FFESTR_openRECL:
14400 case FFESTR_openRECORDSIZE:
14401 ffestb_local_.open.ix = FFESTP_openixRECL;
14402 ffestb_local_.open.left = FALSE;
14403 ffestb_local_.open.context = FFEEXPR_contextFILENUM;
14404 break;
14405
14406 case FFESTR_openRECORDTYPE:
14407 ffestb_local_.open.ix = FFESTP_openixRECORDTYPE;
14408 ffestb_local_.open.left = FALSE;
14409 ffestb_local_.open.context = FFEEXPR_contextFILECHAR;
14410 break;
14411
14412 case FFESTR_openSHARED:
14413 if (ffestp_file.open.open_spec[FFESTP_openixSHARED]
14414 .kw_or_val_present)
14415 goto bad;
14416 ffestp_file.open.open_spec[FFESTP_openixSHARED]
14417 .kw_or_val_present = TRUE;
14418 ffestp_file.open.open_spec[FFESTP_openixSHARED]
14419 .kw_present = TRUE;
14420 ffestp_file.open.open_spec[FFESTP_openixSHARED]
14421 .value_present = FALSE;
14422 ffestp_file.open.open_spec[FFESTP_openixSHARED].kw
14423 = ffelex_token_use (t);
14424 return (ffelexHandler) ffestb_R9048_;
14425
14426 case FFESTR_openSTATUS:
14427 case FFESTR_openTYPE:
14428 ffestb_local_.open.ix = FFESTP_openixSTATUS;
14429 ffestb_local_.open.left = FALSE;
14430 ffestb_local_.open.context = FFEEXPR_contextFILEDFCHAR;
14431 break;
14432
14433 case FFESTR_openUNIT:
14434 ffestb_local_.open.ix = FFESTP_openixUNIT;
14435 ffestb_local_.open.left = FALSE;
14436 ffestb_local_.open.context = FFEEXPR_contextFILENUM;
14437 break;
14438
14439 case FFESTR_openUSEROPEN:
14440 ffestb_local_.open.ix = FFESTP_openixUSEROPEN;
14441 ffestb_local_.open.left = TRUE;
14442 ffestb_local_.open.context = FFEEXPR_contextFILEEXTFUNC;
14443 break;
14444
14445 default:
14446 goto bad;
14447 }
14448 if (ffestp_file.open.open_spec[ffestb_local_.open.ix]
14449 .kw_or_val_present)
14450 break;
14451 ffestp_file.open.open_spec[ffestb_local_.open.ix]
14452 .kw_or_val_present = TRUE;
14453 ffestp_file.open.open_spec[ffestb_local_.open.ix]
14454 .kw_present = TRUE;
14455 ffestp_file.open.open_spec[ffestb_local_.open.ix]
14456 .value_present = FALSE;
14457 ffestp_file.open.open_spec[ffestb_local_.open.ix].value_is_label
14458 = ffestb_local_.open.label;
14459 ffestp_file.open.open_spec[ffestb_local_.open.ix].kw
14460 = ffelex_token_use (t);
14461 return (ffelexHandler) ffestb_R9045_;
14462
14463 default:
14464 break;
14465 }
14466
14467 bad:
14468 ffestb_subr_kill_open_ ();
14469 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "OPEN", t);
14470 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
14471 }
14472
14473
14474
14475
14476
14477
14478
14479 static ffelexHandler
14480 ffestb_R9045_ (ffelexToken t)
14481 {
14482 switch (ffelex_token_type (t))
14483 {
14484 case FFELEX_typeEQUALS:
14485 ffesta_confirmed ();
14486 if (ffestb_local_.open.label)
14487 return (ffelexHandler) ffestb_R9047_;
14488 if (ffestb_local_.open.left)
14489 return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
14490 ffestb_local_.open.context,
14491 (ffeexprCallback) ffestb_R9046_);
14492 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
14493 ffestb_local_.open.context,
14494 (ffeexprCallback) ffestb_R9046_);
14495
14496 default:
14497 break;
14498 }
14499
14500 ffestb_subr_kill_open_ ();
14501 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "OPEN", t);
14502 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
14503 }
14504
14505
14506
14507
14508
14509
14510
14511 static ffelexHandler
14512 ffestb_R9046_ (ffelexToken ft, ffebld expr, ffelexToken t)
14513 {
14514 switch (ffelex_token_type (t))
14515 {
14516 case FFELEX_typeCOMMA:
14517 case FFELEX_typeCLOSE_PAREN:
14518 if (expr == NULL)
14519 break;
14520 ffestp_file.open.open_spec[ffestb_local_.open.ix].value_present
14521 = TRUE;
14522 ffestp_file.open.open_spec[ffestb_local_.open.ix].value
14523 = ffelex_token_use (ft);
14524 ffestp_file.open.open_spec[ffestb_local_.open.ix].u.expr = expr;
14525 if (ffelex_token_type (t) == FFELEX_typeCOMMA)
14526 return (ffelexHandler) ffestb_R9044_;
14527 return (ffelexHandler) ffestb_R9049_;
14528
14529 default:
14530 break;
14531 }
14532
14533 ffestb_subr_kill_open_ ();
14534 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "OPEN", t);
14535 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
14536 }
14537
14538
14539
14540
14541
14542
14543
14544 static ffelexHandler
14545 ffestb_R9047_ (ffelexToken t)
14546 {
14547 switch (ffelex_token_type (t))
14548 {
14549 case FFELEX_typeNUMBER:
14550 ffestp_file.open.open_spec[ffestb_local_.open.ix].value_present
14551 = TRUE;
14552 ffestp_file.open.open_spec[ffestb_local_.open.ix].value
14553 = ffelex_token_use (t);
14554 return (ffelexHandler) ffestb_R9048_;
14555
14556 default:
14557 break;
14558 }
14559
14560 ffestb_subr_kill_open_ ();
14561 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "OPEN", t);
14562 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
14563 }
14564
14565
14566
14567
14568
14569
14570
14571 static ffelexHandler
14572 ffestb_R9048_ (ffelexToken t)
14573 {
14574 switch (ffelex_token_type (t))
14575 {
14576 case FFELEX_typeCOMMA:
14577 return (ffelexHandler) ffestb_R9044_;
14578
14579 case FFELEX_typeCLOSE_PAREN:
14580 return (ffelexHandler) ffestb_R9049_;
14581
14582 default:
14583 break;
14584 }
14585
14586 ffestb_subr_kill_open_ ();
14587 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "OPEN", t);
14588 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
14589 }
14590
14591
14592
14593
14594
14595
14596
14597 static ffelexHandler
14598 ffestb_R9049_ (ffelexToken t)
14599 {
14600 switch (ffelex_token_type (t))
14601 {
14602 case FFELEX_typeEOS:
14603 case FFELEX_typeSEMICOLON:
14604 ffesta_confirmed ();
14605 if (!ffesta_is_inhibited ())
14606 ffestc_R904 ();
14607 ffestb_subr_kill_open_ ();
14608 return (ffelexHandler) ffesta_zero (t);
14609
14610 default:
14611 break;
14612 }
14613
14614 ffestb_subr_kill_open_ ();
14615 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "OPEN", t);
14616 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
14617 }
14618
14619
14620
14621
14622
14623
14624
14625
14626 ffelexHandler
14627 ffestb_R907 (ffelexToken t)
14628 {
14629 ffestpCloseIx ix;
14630
14631 switch (ffelex_token_type (ffesta_tokens[0]))
14632 {
14633 case FFELEX_typeNAME:
14634 if (ffesta_first_kw != FFESTR_firstCLOSE)
14635 goto bad_0;
14636 break;
14637
14638 case FFELEX_typeNAMES:
14639 if (ffesta_first_kw != FFESTR_firstCLOSE)
14640 goto bad_0;
14641 if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlCLOSE)
14642 goto bad_0;
14643 break;
14644
14645 default:
14646 goto bad_0;
14647 }
14648
14649 switch (ffelex_token_type (t))
14650 {
14651 case FFELEX_typeOPEN_PAREN:
14652 break;
14653
14654 case FFELEX_typeEOS:
14655 case FFELEX_typeSEMICOLON:
14656 case FFELEX_typeCOMMA:
14657 case FFELEX_typeCOLONCOLON:
14658 ffesta_confirmed ();
14659 goto bad_1;
14660
14661 default:
14662 goto bad_1;
14663 }
14664
14665 for (ix = 0; ix < FFESTP_closeix; ++ix)
14666 ffestp_file.close.close_spec[ix].kw_or_val_present = FALSE;
14667
14668 return (ffelexHandler) ffestb_R9071_;
14669
14670 bad_0:
14671 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CLOSE", ffesta_tokens[0]);
14672 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
14673
14674 bad_1:
14675 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CLOSE", t);
14676 return (ffelexHandler) ffelex_swallow_tokens (t,
14677 (ffelexHandler) ffesta_zero);
14678 }
14679
14680
14681
14682
14683
14684
14685
14686 static ffelexHandler
14687 ffestb_R9071_ (ffelexToken t)
14688 {
14689 switch (ffelex_token_type (t))
14690 {
14691 case FFELEX_typeNAME:
14692 ffesta_tokens[1] = ffelex_token_use (t);
14693 return (ffelexHandler) ffestb_R9072_;
14694
14695 default:
14696 return (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
14697 FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_R9073_)))
14698 (t);
14699 }
14700 }
14701
14702
14703
14704
14705
14706
14707
14708
14709 static ffelexHandler
14710 ffestb_R9072_ (ffelexToken t)
14711 {
14712 ffelexHandler next;
14713 ffelexToken nt;
14714
14715 switch (ffelex_token_type (t))
14716 {
14717 case FFELEX_typeEQUALS:
14718 nt = ffesta_tokens[1];
14719 next = (ffelexHandler) ffestb_R9074_ (nt);
14720 ffelex_token_kill (nt);
14721 return (ffelexHandler) (*next) (t);
14722
14723 default:
14724 next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
14725 FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_R9073_)))
14726 (ffesta_tokens[1]);
14727 ffelex_token_kill (ffesta_tokens[1]);
14728 return (ffelexHandler) (*next) (t);
14729 }
14730 }
14731
14732
14733
14734
14735
14736
14737
14738 static ffelexHandler
14739 ffestb_R9073_ (ffelexToken ft, ffebld expr, ffelexToken t)
14740 {
14741 switch (ffelex_token_type (t))
14742 {
14743 case FFELEX_typeCOMMA:
14744 case FFELEX_typeCLOSE_PAREN:
14745 if (expr == NULL)
14746 break;
14747 ffestp_file.close.close_spec[FFESTP_closeixUNIT].kw_or_val_present
14748 = TRUE;
14749 ffestp_file.close.close_spec[FFESTP_closeixUNIT].kw_present = FALSE;
14750 ffestp_file.close.close_spec[FFESTP_closeixUNIT].value_present = TRUE;
14751 ffestp_file.close.close_spec[FFESTP_closeixUNIT].value_is_label
14752 = FALSE;
14753 ffestp_file.close.close_spec[FFESTP_closeixUNIT].value
14754 = ffelex_token_use (ft);
14755 ffestp_file.close.close_spec[FFESTP_closeixUNIT].u.expr = expr;
14756 if (ffelex_token_type (t) == FFELEX_typeCOMMA)
14757 return (ffelexHandler) ffestb_R9074_;
14758 return (ffelexHandler) ffestb_R9079_;
14759
14760 default:
14761 break;
14762 }
14763
14764 ffestb_subr_kill_close_ ();
14765 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CLOSE", t);
14766 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
14767 }
14768
14769
14770
14771
14772
14773
14774
14775 static ffelexHandler
14776 ffestb_R9074_ (ffelexToken t)
14777 {
14778 ffestrGenio kw;
14779
14780 ffestb_local_.close.label = FALSE;
14781
14782 switch (ffelex_token_type (t))
14783 {
14784 case FFELEX_typeNAME:
14785 kw = ffestr_genio (t);
14786 switch (kw)
14787 {
14788 case FFESTR_genioERR:
14789 ffestb_local_.close.ix = FFESTP_closeixERR;
14790 ffestb_local_.close.label = TRUE;
14791 break;
14792
14793 case FFESTR_genioIOSTAT:
14794 ffestb_local_.close.ix = FFESTP_closeixIOSTAT;
14795 ffestb_local_.close.left = TRUE;
14796 ffestb_local_.close.context = FFEEXPR_contextFILEINT;
14797 break;
14798
14799 case FFESTR_genioSTATUS:
14800 case FFESTR_genioDISP:
14801 case FFESTR_genioDISPOSE:
14802 ffestb_local_.close.ix = FFESTP_closeixSTATUS;
14803 ffestb_local_.close.left = FALSE;
14804 ffestb_local_.close.context = FFEEXPR_contextFILEDFCHAR;
14805 break;
14806
14807 case FFESTR_genioUNIT:
14808 ffestb_local_.close.ix = FFESTP_closeixUNIT;
14809 ffestb_local_.close.left = FALSE;
14810 ffestb_local_.close.context = FFEEXPR_contextFILENUM;
14811 break;
14812
14813 default:
14814 goto bad;
14815 }
14816 if (ffestp_file.close.close_spec[ffestb_local_.close.ix]
14817 .kw_or_val_present)
14818 break;
14819 ffestp_file.close.close_spec[ffestb_local_.close.ix]
14820 .kw_or_val_present = TRUE;
14821 ffestp_file.close.close_spec[ffestb_local_.close.ix]
14822 .kw_present = TRUE;
14823 ffestp_file.close.close_spec[ffestb_local_.close.ix]
14824 .value_present = FALSE;
14825 ffestp_file.close.close_spec[ffestb_local_.close.ix].value_is_label
14826 = ffestb_local_.close.label;
14827 ffestp_file.close.close_spec[ffestb_local_.close.ix].kw
14828 = ffelex_token_use (t);
14829 return (ffelexHandler) ffestb_R9075_;
14830
14831 default:
14832 break;
14833 }
14834
14835 bad:
14836 ffestb_subr_kill_close_ ();
14837 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CLOSE", t);
14838 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
14839 }
14840
14841
14842
14843
14844
14845
14846
14847 static ffelexHandler
14848 ffestb_R9075_ (ffelexToken t)
14849 {
14850 switch (ffelex_token_type (t))
14851 {
14852 case FFELEX_typeEQUALS:
14853 ffesta_confirmed ();
14854 if (ffestb_local_.close.label)
14855 return (ffelexHandler) ffestb_R9077_;
14856 if (ffestb_local_.close.left)
14857 return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
14858 ffestb_local_.close.context,
14859 (ffeexprCallback) ffestb_R9076_);
14860 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
14861 ffestb_local_.close.context,
14862 (ffeexprCallback) ffestb_R9076_);
14863
14864 default:
14865 break;
14866 }
14867
14868 ffestb_subr_kill_close_ ();
14869 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CLOSE", t);
14870 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
14871 }
14872
14873
14874
14875
14876
14877
14878
14879 static ffelexHandler
14880 ffestb_R9076_ (ffelexToken ft, ffebld expr, ffelexToken t)
14881 {
14882 switch (ffelex_token_type (t))
14883 {
14884 case FFELEX_typeCOMMA:
14885 case FFELEX_typeCLOSE_PAREN:
14886 if (expr == NULL)
14887 break;
14888 ffestp_file.close.close_spec[ffestb_local_.close.ix].value_present
14889 = TRUE;
14890 ffestp_file.close.close_spec[ffestb_local_.close.ix].value
14891 = ffelex_token_use (ft);
14892 ffestp_file.close.close_spec[ffestb_local_.close.ix].u.expr = expr;
14893 if (ffelex_token_type (t) == FFELEX_typeCOMMA)
14894 return (ffelexHandler) ffestb_R9074_;
14895 return (ffelexHandler) ffestb_R9079_;
14896
14897 default:
14898 break;
14899 }
14900
14901 ffestb_subr_kill_close_ ();
14902 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CLOSE", t);
14903 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
14904 }
14905
14906
14907
14908
14909
14910
14911
14912 static ffelexHandler
14913 ffestb_R9077_ (ffelexToken t)
14914 {
14915 switch (ffelex_token_type (t))
14916 {
14917 case FFELEX_typeNUMBER:
14918 ffestp_file.close.close_spec[ffestb_local_.close.ix].value_present
14919 = TRUE;
14920 ffestp_file.close.close_spec[ffestb_local_.close.ix].value
14921 = ffelex_token_use (t);
14922 return (ffelexHandler) ffestb_R9078_;
14923
14924 default:
14925 break;
14926 }
14927
14928 ffestb_subr_kill_close_ ();
14929 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CLOSE", t);
14930 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
14931 }
14932
14933
14934
14935
14936
14937
14938
14939 static ffelexHandler
14940 ffestb_R9078_ (ffelexToken t)
14941 {
14942 switch (ffelex_token_type (t))
14943 {
14944 case FFELEX_typeCOMMA:
14945 return (ffelexHandler) ffestb_R9074_;
14946
14947 case FFELEX_typeCLOSE_PAREN:
14948 return (ffelexHandler) ffestb_R9079_;
14949
14950 default:
14951 break;
14952 }
14953
14954 ffestb_subr_kill_close_ ();
14955 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CLOSE", t);
14956 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
14957 }
14958
14959
14960
14961
14962
14963
14964
14965 static ffelexHandler
14966 ffestb_R9079_ (ffelexToken t)
14967 {
14968 switch (ffelex_token_type (t))
14969 {
14970 case FFELEX_typeEOS:
14971 case FFELEX_typeSEMICOLON:
14972 ffesta_confirmed ();
14973 if (!ffesta_is_inhibited ())
14974 ffestc_R907 ();
14975 ffestb_subr_kill_close_ ();
14976 return (ffelexHandler) ffesta_zero (t);
14977
14978 default:
14979 break;
14980 }
14981
14982 ffestb_subr_kill_close_ ();
14983 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CLOSE", t);
14984 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
14985 }
14986
14987
14988
14989
14990
14991
14992
14993
14994 ffelexHandler
14995 ffestb_R909 (ffelexToken t)
14996 {
14997 ffelexHandler next;
14998 ffestpReadIx ix;
14999
15000 switch (ffelex_token_type (ffesta_tokens[0]))
15001 {
15002 case FFELEX_typeNAME:
15003 if (ffesta_first_kw != FFESTR_firstREAD)
15004 goto bad_0;
15005 switch (ffelex_token_type (t))
15006 {
15007 case FFELEX_typeCOMMA:
15008 case FFELEX_typeCOLONCOLON:
15009 case FFELEX_typeEOS:
15010 case FFELEX_typeSEMICOLON:
15011 ffesta_confirmed ();
15012 goto bad_1;
15013
15014 case FFELEX_typeEQUALS:
15015 case FFELEX_typePOINTS:
15016 case FFELEX_typeCOLON:
15017 goto bad_1;
15018
15019 case FFELEX_typeNAME:
15020 case FFELEX_typeNUMBER:
15021 ffesta_confirmed ();
15022 break;
15023
15024 case FFELEX_typeOPEN_PAREN:
15025 for (ix = 0; ix < FFESTP_readix; ++ix)
15026 ffestp_file.read.read_spec[ix].kw_or_val_present = FALSE;
15027 ffesta_tokens[1] = ffelex_token_use (t);
15028 return (ffelexHandler) ffestb_R9092_;
15029
15030 default:
15031 break;
15032 }
15033
15034 for (ix = 0; ix < FFESTP_readix; ++ix)
15035 ffestp_file.read.read_spec[ix].kw_or_val_present = FALSE;
15036 return (ffelexHandler) (*((ffelexHandler)
15037 ffeexpr_rhs (ffesta_output_pool,
15038 FFEEXPR_contextFILEFORMATNML, (ffeexprCallback) ffestb_R9091_)))
15039 (t);
15040
15041 case FFELEX_typeNAMES:
15042 if (ffesta_first_kw != FFESTR_firstREAD)
15043 goto bad_0;
15044 switch (ffelex_token_type (t))
15045 {
15046 case FFELEX_typeEOS:
15047 case FFELEX_typeSEMICOLON:
15048 case FFELEX_typeCOMMA:
15049 ffesta_confirmed ();
15050 if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlREAD)
15051 break;
15052 goto bad_1;
15053
15054 case FFELEX_typeCOLONCOLON:
15055 ffesta_confirmed ();
15056 goto bad_1;
15057
15058 case FFELEX_typeEQUALS:
15059 case FFELEX_typePOINTS:
15060 case FFELEX_typeCOLON:
15061 goto bad_1;
15062
15063 case FFELEX_typeOPEN_PAREN:
15064 if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlREAD)
15065 break;
15066
15067 for (ix = 0; ix < FFESTP_readix; ++ix)
15068 ffestp_file.read.read_spec[ix].kw_or_val_present = FALSE;
15069 ffesta_tokens[1] = ffelex_token_use (t);
15070 return (ffelexHandler) ffestb_R9092_;
15071
15072 default:
15073 break;
15074 }
15075 for (ix = 0; ix < FFESTP_readix; ++ix)
15076 ffestp_file.read.read_spec[ix].kw_or_val_present = FALSE;
15077 next = (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
15078 FFEEXPR_contextFILEFORMATNML, (ffeexprCallback) ffestb_R9091_);
15079 next = (ffelexHandler) ffelex_splice_tokens (next, ffesta_tokens[0],
15080 FFESTR_firstlREAD);
15081 if (next == NULL)
15082 return (ffelexHandler) ffelex_swallow_tokens (t,
15083 (ffelexHandler) ffesta_zero);
15084 return (ffelexHandler) (*next) (t);
15085
15086 default:
15087 goto bad_0;
15088 }
15089
15090 bad_0:
15091 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "READ", ffesta_tokens[0]);
15092 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
15093
15094 bad_1:
15095 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "READ", t);
15096 return (ffelexHandler) ffelex_swallow_tokens (t,
15097 (ffelexHandler) ffesta_zero);
15098 }
15099
15100
15101
15102
15103
15104
15105
15106 static ffelexHandler
15107 ffestb_R9091_ (ffelexToken ft, ffebld expr, ffelexToken t)
15108 {
15109 switch (ffelex_token_type (t))
15110 {
15111 case FFELEX_typeEOS:
15112 case FFELEX_typeSEMICOLON:
15113 case FFELEX_typeCOMMA:
15114 ffesta_confirmed ();
15115 ffestp_file.read.read_spec[FFESTP_readixFORMAT].kw_or_val_present
15116 = TRUE;
15117 ffestp_file.read.read_spec[FFESTP_readixFORMAT].kw_present = FALSE;
15118 ffestp_file.read.read_spec[FFESTP_readixFORMAT].value_present = TRUE;
15119 ffestp_file.read.read_spec[FFESTP_readixFORMAT].value_is_label
15120 = (expr == NULL);
15121 ffestp_file.read.read_spec[FFESTP_readixFORMAT].value
15122 = ffelex_token_use (ft);
15123 ffestp_file.read.read_spec[FFESTP_readixFORMAT].u.expr = expr;
15124 if (!ffesta_is_inhibited ())
15125 ffestc_R909_start (TRUE);
15126 ffestb_subr_kill_read_ ();
15127 if (ffelex_token_type (t) == FFELEX_typeCOMMA)
15128 return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
15129 ffestc_context_iolist (),
15130 (ffeexprCallback) ffestb_R90915_);
15131 if (!ffesta_is_inhibited ())
15132 ffestc_R909_finish ();
15133 return (ffelexHandler) ffesta_zero (t);
15134
15135 default:
15136 break;
15137 }
15138
15139 ffestb_subr_kill_read_ ();
15140 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "READ", t);
15141 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
15142 }
15143
15144
15145
15146
15147
15148
15149
15150 static ffelexHandler
15151 ffestb_R9092_ (ffelexToken t)
15152 {
15153 ffelexToken nt;
15154 ffelexHandler next;
15155
15156 switch (ffelex_token_type (t))
15157 {
15158 case FFELEX_typeNAME:
15159 ffesta_tokens[2] = ffelex_token_use (t);
15160 return (ffelexHandler) ffestb_R9093_;
15161
15162 default:
15163 nt = ffesta_tokens[1];
15164 next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
15165 FFEEXPR_contextFILEUNITAMBIG, (ffeexprCallback) ffestb_R9094_)))
15166 (nt);
15167 ffelex_token_kill (nt);
15168 return (ffelexHandler) (*next) (t);
15169 }
15170 }
15171
15172
15173
15174
15175
15176
15177
15178
15179 static ffelexHandler
15180 ffestb_R9093_ (ffelexToken t)
15181 {
15182 ffelexHandler next;
15183 ffelexToken nt;
15184 ffelexToken ot;
15185
15186 switch (ffelex_token_type (t))
15187 {
15188 case FFELEX_typeEQUALS:
15189 ffelex_token_kill (ffesta_tokens[1]);
15190 nt = ffesta_tokens[2];
15191 next = (ffelexHandler) ffestb_R9098_ (nt);
15192 ffelex_token_kill (nt);
15193 return (ffelexHandler) (*next) (t);
15194
15195 default:
15196 nt = ffesta_tokens[1];
15197 ot = ffesta_tokens[2];
15198 next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
15199 FFEEXPR_contextFILEUNITAMBIG, (ffeexprCallback) ffestb_R9094_)))
15200 (nt);
15201 ffelex_token_kill (nt);
15202 next = (ffelexHandler) (*next) (ot);
15203 ffelex_token_kill (ot);
15204 return (ffelexHandler) (*next) (t);
15205 }
15206 }
15207
15208
15209
15210
15211
15212
15213
15214
15215
15216
15217
15218
15219 static ffelexHandler
15220 ffestb_R9094_ (ffelexToken ft, ffebld expr, ffelexToken t)
15221 {
15222 if (expr == NULL)
15223 goto bad;
15224
15225 if (ffebld_op (expr) != FFEBLD_opITEM)
15226 {
15227 switch (ffelex_token_type (t))
15228 {
15229 case FFELEX_typeCOMMA:
15230 case FFELEX_typeEOS:
15231 case FFELEX_typeSEMICOLON:
15232 ffesta_confirmed ();
15233 ffestp_file.read.read_spec[FFESTP_readixFORMAT].kw_or_val_present
15234 = TRUE;
15235 ffestp_file.read.read_spec[FFESTP_readixFORMAT].kw_present = FALSE;
15236 ffestp_file.read.read_spec[FFESTP_readixFORMAT].value_present = TRUE;
15237 ffestp_file.read.read_spec[FFESTP_readixFORMAT].value_is_label
15238 = FALSE;
15239 ffestp_file.read.read_spec[FFESTP_readixFORMAT].value
15240 = ffelex_token_use (ft);
15241 ffestp_file.read.read_spec[FFESTP_readixFORMAT].u.expr = expr;
15242 if (!ffesta_is_inhibited ())
15243 ffestc_R909_start (TRUE);
15244 ffestb_subr_kill_read_ ();
15245 if (ffelex_token_type (t) == FFELEX_typeCOMMA)
15246 return (ffelexHandler)
15247 ffeexpr_lhs (ffesta_output_pool,
15248 ffestc_context_iolist (),
15249 (ffeexprCallback) ffestb_R90915_);
15250 if (!ffesta_is_inhibited ())
15251 ffestc_R909_finish ();
15252 return (ffelexHandler) ffesta_zero (t);
15253
15254 default:
15255 goto bad;
15256 }
15257 }
15258
15259 expr = ffebld_head (expr);
15260
15261 if (expr == NULL)
15262 goto bad;
15263
15264 switch (ffelex_token_type (t))
15265 {
15266 case FFELEX_typeCOMMA:
15267 case FFELEX_typeCLOSE_PAREN:
15268 ffestp_file.read.read_spec[FFESTP_readixUNIT].kw_or_val_present
15269 = TRUE;
15270 ffestp_file.read.read_spec[FFESTP_readixUNIT].kw_present = FALSE;
15271 ffestp_file.read.read_spec[FFESTP_readixUNIT].value_present = TRUE;
15272 ffestp_file.read.read_spec[FFESTP_readixUNIT].value_is_label
15273 = FALSE;
15274 ffestp_file.read.read_spec[FFESTP_readixUNIT].value
15275 = ffelex_token_use (ft);
15276 ffestp_file.read.read_spec[FFESTP_readixUNIT].u.expr = expr;
15277 if (ffelex_token_type (t) == FFELEX_typeCOMMA)
15278 return (ffelexHandler) ffestb_R9095_;
15279 return (ffelexHandler) ffestb_R90913_;
15280
15281 default:
15282 break;
15283 }
15284
15285 bad:
15286 ffestb_subr_kill_read_ ();
15287 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "READ", t);
15288 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
15289 }
15290
15291
15292
15293
15294
15295
15296
15297 static ffelexHandler
15298 ffestb_R9095_ (ffelexToken t)
15299 {
15300 switch (ffelex_token_type (t))
15301 {
15302 case FFELEX_typeNAME:
15303 ffesta_tokens[1] = ffelex_token_use (t);
15304 return (ffelexHandler) ffestb_R9096_;
15305
15306 default:
15307 return (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
15308 FFEEXPR_contextFILEFORMATNML, (ffeexprCallback) ffestb_R9097_)))
15309 (t);
15310 }
15311 }
15312
15313
15314
15315
15316
15317
15318
15319
15320 static ffelexHandler
15321 ffestb_R9096_ (ffelexToken t)
15322 {
15323 ffelexHandler next;
15324 ffelexToken nt;
15325
15326 switch (ffelex_token_type (t))
15327 {
15328 case FFELEX_typeEQUALS:
15329 nt = ffesta_tokens[1];
15330 next = (ffelexHandler) ffestb_R9098_ (nt);
15331 ffelex_token_kill (nt);
15332 return (ffelexHandler) (*next) (t);
15333
15334 default:
15335 nt = ffesta_tokens[1];
15336 next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
15337 FFEEXPR_contextFILEFORMATNML, (ffeexprCallback) ffestb_R9097_)))
15338 (nt);
15339 ffelex_token_kill (nt);
15340 return (ffelexHandler) (*next) (t);
15341 }
15342 }
15343
15344
15345
15346
15347
15348
15349
15350 static ffelexHandler
15351 ffestb_R9097_ (ffelexToken ft, ffebld expr, ffelexToken t)
15352 {
15353 switch (ffelex_token_type (t))
15354 {
15355 case FFELEX_typeCOMMA:
15356 case FFELEX_typeCLOSE_PAREN:
15357 ffestp_file.read.read_spec[FFESTP_readixFORMAT].kw_or_val_present
15358 = TRUE;
15359 ffestp_file.read.read_spec[FFESTP_readixFORMAT].kw_present = FALSE;
15360 ffestp_file.read.read_spec[FFESTP_readixFORMAT].value_present = TRUE;
15361 ffestp_file.read.read_spec[FFESTP_readixFORMAT].value_is_label
15362 = (expr == NULL);
15363 ffestp_file.read.read_spec[FFESTP_readixFORMAT].value
15364 = ffelex_token_use (ft);
15365 ffestp_file.read.read_spec[FFESTP_readixFORMAT].u.expr = expr;
15366 if (ffelex_token_type (t) == FFELEX_typeCOMMA)
15367 return (ffelexHandler) ffestb_R9098_;
15368 return (ffelexHandler) ffestb_R90913_;
15369
15370 default:
15371 break;
15372 }
15373
15374 ffestb_subr_kill_read_ ();
15375 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "READ", t);
15376 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
15377 }
15378
15379
15380
15381
15382
15383
15384
15385
15386 static ffelexHandler
15387 ffestb_R9098_ (ffelexToken t)
15388 {
15389 ffestrGenio kw;
15390
15391 ffestb_local_.read.label = FALSE;
15392
15393 switch (ffelex_token_type (t))
15394 {
15395 case FFELEX_typeNAME:
15396 kw = ffestr_genio (t);
15397 switch (kw)
15398 {
15399 case FFESTR_genioADVANCE:
15400 ffestb_local_.read.ix = FFESTP_readixADVANCE;
15401 ffestb_local_.read.left = FALSE;
15402 ffestb_local_.read.context = FFEEXPR_contextFILEDFCHAR;
15403 break;
15404
15405 case FFESTR_genioEOR:
15406 ffestb_local_.read.ix = FFESTP_readixEOR;
15407 ffestb_local_.read.label = TRUE;
15408 break;
15409
15410 case FFESTR_genioERR:
15411 ffestb_local_.read.ix = FFESTP_readixERR;
15412 ffestb_local_.read.label = TRUE;
15413 break;
15414
15415 case FFESTR_genioEND:
15416 ffestb_local_.read.ix = FFESTP_readixEND;
15417 ffestb_local_.read.label = TRUE;
15418 break;
15419
15420 case FFESTR_genioFMT:
15421 ffestb_local_.read.ix = FFESTP_readixFORMAT;
15422 ffestb_local_.read.left = FALSE;
15423 ffestb_local_.read.context = FFEEXPR_contextFILEFORMAT;
15424 break;
15425
15426 case FFESTR_genioIOSTAT:
15427 ffestb_local_.read.ix = FFESTP_readixIOSTAT;
15428 ffestb_local_.read.left = TRUE;
15429 ffestb_local_.read.context = FFEEXPR_contextFILEINT;
15430 break;
15431
15432 case FFESTR_genioKEY:
15433 case FFESTR_genioKEYEQ:
15434 ffestb_local_.read.ix = FFESTP_readixKEYEQ;
15435 ffestb_local_.read.left = FALSE;
15436 ffestb_local_.read.context = FFEEXPR_contextFILENUMCHAR;
15437 break;
15438
15439 case FFESTR_genioKEYGE:
15440 ffestb_local_.read.ix = FFESTP_readixKEYGE;
15441 ffestb_local_.read.left = FALSE;
15442 ffestb_local_.read.context = FFEEXPR_contextFILENUMCHAR;
15443 break;
15444
15445 case FFESTR_genioKEYGT:
15446 ffestb_local_.read.ix = FFESTP_readixKEYGT;
15447 ffestb_local_.read.left = FALSE;
15448 ffestb_local_.read.context = FFEEXPR_contextFILENUMCHAR;
15449 break;
15450
15451 case FFESTR_genioKEYID:
15452 ffestb_local_.read.ix = FFESTP_readixKEYID;
15453 ffestb_local_.read.left = FALSE;
15454 ffestb_local_.read.context = FFEEXPR_contextFILENUM;
15455 break;
15456
15457 case FFESTR_genioNML:
15458 ffestb_local_.read.ix = FFESTP_readixFORMAT;
15459 ffestb_local_.read.left = TRUE;
15460 ffestb_local_.read.context = FFEEXPR_contextFILENAMELIST;
15461 break;
15462
15463 case FFESTR_genioNULLS:
15464 ffestb_local_.read.ix = FFESTP_readixNULLS;
15465 ffestb_local_.read.left = TRUE;
15466 ffestb_local_.read.context = FFEEXPR_contextFILEINT;
15467 break;
15468
15469 case FFESTR_genioREC:
15470 ffestb_local_.read.ix = FFESTP_readixREC;
15471 ffestb_local_.read.left = FALSE;
15472 ffestb_local_.read.context = FFEEXPR_contextFILENUM;
15473 break;
15474
15475 case FFESTR_genioSIZE:
15476 ffestb_local_.read.ix = FFESTP_readixSIZE;
15477 ffestb_local_.read.left = TRUE;
15478 ffestb_local_.read.context = FFEEXPR_contextFILEINT;
15479 break;
15480
15481 case FFESTR_genioUNIT:
15482 ffestb_local_.read.ix = FFESTP_readixUNIT;
15483 ffestb_local_.read.left = FALSE;
15484 ffestb_local_.read.context = FFEEXPR_contextFILEUNIT;
15485 break;
15486
15487 default:
15488 goto bad;
15489 }
15490 if (ffestp_file.read.read_spec[ffestb_local_.read.ix]
15491 .kw_or_val_present)
15492 break;
15493 ffestp_file.read.read_spec[ffestb_local_.read.ix]
15494 .kw_or_val_present = TRUE;
15495 ffestp_file.read.read_spec[ffestb_local_.read.ix]
15496 .kw_present = TRUE;
15497 ffestp_file.read.read_spec[ffestb_local_.read.ix]
15498 .value_present = FALSE;
15499 ffestp_file.read.read_spec[ffestb_local_.read.ix].value_is_label
15500 = ffestb_local_.read.label;
15501 ffestp_file.read.read_spec[ffestb_local_.read.ix].kw
15502 = ffelex_token_use (t);
15503 return (ffelexHandler) ffestb_R9099_;
15504
15505 default:
15506 break;
15507 }
15508
15509 bad:
15510 ffestb_subr_kill_read_ ();
15511 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "READ", t);
15512 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
15513 }
15514
15515
15516
15517
15518
15519
15520
15521
15522 static ffelexHandler
15523 ffestb_R9099_ (ffelexToken t)
15524 {
15525 switch (ffelex_token_type (t))
15526 {
15527 case FFELEX_typeEQUALS:
15528 ffesta_confirmed ();
15529 if (ffestb_local_.read.label)
15530 return (ffelexHandler) ffestb_R90911_;
15531 if (ffestb_local_.read.left)
15532 return (ffelexHandler)
15533 ffeexpr_lhs (ffesta_output_pool,
15534 ffestb_local_.read.context,
15535 (ffeexprCallback) ffestb_R90910_);
15536 return (ffelexHandler)
15537 ffeexpr_rhs (ffesta_output_pool,
15538 ffestb_local_.read.context,
15539 (ffeexprCallback) ffestb_R90910_);
15540
15541 default:
15542 break;
15543 }
15544
15545 ffestb_subr_kill_read_ ();
15546 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "READ", t);
15547 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
15548 }
15549
15550
15551
15552
15553
15554
15555
15556 static ffelexHandler
15557 ffestb_R90910_ (ffelexToken ft, ffebld expr, ffelexToken t)
15558 {
15559 switch (ffelex_token_type (t))
15560 {
15561 case FFELEX_typeCOMMA:
15562 case FFELEX_typeCLOSE_PAREN:
15563 if (expr == NULL)
15564 {
15565 if (ffestb_local_.read.context == FFEEXPR_contextFILEFORMAT)
15566 ffestp_file.read.read_spec[ffestb_local_.read.ix]
15567 .value_is_label = TRUE;
15568 else
15569 break;
15570 }
15571 ffestp_file.read.read_spec[ffestb_local_.read.ix].value_present
15572 = TRUE;
15573 ffestp_file.read.read_spec[ffestb_local_.read.ix].value
15574 = ffelex_token_use (ft);
15575 ffestp_file.read.read_spec[ffestb_local_.read.ix].u.expr = expr;
15576 if (ffelex_token_type (t) == FFELEX_typeCOMMA)
15577 return (ffelexHandler) ffestb_R9098_;
15578 return (ffelexHandler) ffestb_R90913_;
15579
15580 default:
15581 break;
15582 }
15583
15584 ffestb_subr_kill_read_ ();
15585 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "READ", t);
15586 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
15587 }
15588
15589
15590
15591
15592
15593
15594
15595 static ffelexHandler
15596 ffestb_R90911_ (ffelexToken t)
15597 {
15598 switch (ffelex_token_type (t))
15599 {
15600 case FFELEX_typeNUMBER:
15601 ffestp_file.read.read_spec[ffestb_local_.read.ix].value_present
15602 = TRUE;
15603 ffestp_file.read.read_spec[ffestb_local_.read.ix].value
15604 = ffelex_token_use (t);
15605 return (ffelexHandler) ffestb_R90912_;
15606
15607 default:
15608 break;
15609 }
15610
15611 ffestb_subr_kill_read_ ();
15612 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "READ", t);
15613 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
15614 }
15615
15616
15617
15618
15619
15620
15621
15622 static ffelexHandler
15623 ffestb_R90912_ (ffelexToken t)
15624 {
15625 switch (ffelex_token_type (t))
15626 {
15627 case FFELEX_typeCOMMA:
15628 return (ffelexHandler) ffestb_R9098_;
15629
15630 case FFELEX_typeCLOSE_PAREN:
15631 return (ffelexHandler) ffestb_R90913_;
15632
15633 default:
15634 break;
15635 }
15636
15637 ffestb_subr_kill_read_ ();
15638 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "READ", t);
15639 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
15640 }
15641
15642
15643
15644
15645
15646
15647
15648
15649
15650
15651
15652
15653 static ffelexHandler
15654 ffestb_R90913_ (ffelexToken t)
15655 {
15656 switch (ffelex_token_type (t))
15657 {
15658 case FFELEX_typeEOS:
15659 case FFELEX_typeSEMICOLON:
15660 ffesta_confirmed ();
15661 if (!ffesta_is_inhibited ())
15662 {
15663 ffestc_R909_start (FALSE);
15664 ffestc_R909_finish ();
15665 }
15666 ffestb_subr_kill_read_ ();
15667 return (ffelexHandler) ffesta_zero (t);
15668
15669 default:
15670 ffesta_confirmed ();
15671
15672 case FFELEX_typeOPEN_PAREN:
15673 break;
15674 }
15675
15676
15677
15678
15679
15680
15681
15682 if (!ffe_is_pedantic () && (ffelex_token_type (t) == FFELEX_typeCOMMA))
15683 return (ffelexHandler)
15684 ffeexpr_lhs (ffesta_output_pool,
15685 ffestc_context_iolist (),
15686 (ffeexprCallback) ffestb_R90914_);
15687
15688 return (ffelexHandler) (*((ffelexHandler)
15689 ffeexpr_lhs (ffesta_output_pool,
15690 ffestc_context_iolist (),
15691 (ffeexprCallback) ffestb_R90914_)))
15692 (t);
15693 }
15694
15695
15696
15697
15698
15699
15700
15701 static ffelexHandler
15702 ffestb_R90914_ (ffelexToken ft, ffebld expr, ffelexToken t)
15703 {
15704 switch (ffelex_token_type (t))
15705 {
15706 case FFELEX_typeCOMMA:
15707 if (expr == NULL)
15708 break;
15709
15710 ffesta_confirmed ();
15711 if (!ffesta_is_inhibited ())
15712 ffestc_R909_start (FALSE);
15713 ffestb_subr_kill_read_ ();
15714
15715 if (!ffesta_is_inhibited ())
15716 ffestc_R909_item (expr, ft);
15717 return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
15718 ffestc_context_iolist (),
15719 (ffeexprCallback) ffestb_R90915_);
15720
15721 case FFELEX_typeEOS:
15722 case FFELEX_typeSEMICOLON:
15723 if (expr == NULL)
15724 break;
15725
15726 ffesta_confirmed ();
15727 if (!ffesta_is_inhibited ())
15728 ffestc_R909_start (FALSE);
15729 ffestb_subr_kill_read_ ();
15730
15731 if (!ffesta_is_inhibited ())
15732 {
15733 ffestc_R909_item (expr, ft);
15734 ffestc_R909_finish ();
15735 }
15736 return (ffelexHandler) ffesta_zero (t);
15737
15738 default:
15739 break;
15740 }
15741
15742 ffestb_subr_kill_read_ ();
15743 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "READ", t);
15744 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
15745 }
15746
15747
15748
15749
15750
15751
15752
15753 static ffelexHandler
15754 ffestb_R90915_ (ffelexToken ft, ffebld expr, ffelexToken t)
15755 {
15756 switch (ffelex_token_type (t))
15757 {
15758 case FFELEX_typeCOMMA:
15759 if (expr == NULL)
15760 break;
15761 if (!ffesta_is_inhibited ())
15762 ffestc_R909_item (expr, ft);
15763 return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
15764 ffestc_context_iolist (),
15765 (ffeexprCallback) ffestb_R90915_);
15766
15767 case FFELEX_typeEOS:
15768 case FFELEX_typeSEMICOLON:
15769 if (expr == NULL)
15770 break;
15771 if (!ffesta_is_inhibited ())
15772 {
15773 ffestc_R909_item (expr, ft);
15774 ffestc_R909_finish ();
15775 }
15776 return (ffelexHandler) ffesta_zero (t);
15777
15778 default:
15779 break;
15780 }
15781
15782 if (!ffesta_is_inhibited ())
15783 ffestc_R909_finish ();
15784 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "READ", t);
15785 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
15786 }
15787
15788
15789
15790
15791
15792
15793
15794
15795 ffelexHandler
15796 ffestb_R910 (ffelexToken t)
15797 {
15798 ffestpWriteIx ix;
15799
15800 switch (ffelex_token_type (ffesta_tokens[0]))
15801 {
15802 case FFELEX_typeNAME:
15803 if (ffesta_first_kw != FFESTR_firstWRITE)
15804 goto bad_0;
15805 switch (ffelex_token_type (t))
15806 {
15807 case FFELEX_typeCOMMA:
15808 case FFELEX_typeCOLONCOLON:
15809 case FFELEX_typeEOS:
15810 case FFELEX_typeSEMICOLON:
15811 case FFELEX_typeNAME:
15812 case FFELEX_typeNUMBER:
15813 ffesta_confirmed ();
15814 goto bad_1;
15815
15816 default:
15817 goto bad_1;
15818
15819 case FFELEX_typeOPEN_PAREN:
15820 for (ix = 0; ix < FFESTP_writeix; ++ix)
15821 ffestp_file.write.write_spec[ix].kw_or_val_present = FALSE;
15822 return (ffelexHandler) ffestb_R9101_;
15823 }
15824
15825 case FFELEX_typeNAMES:
15826 if (ffesta_first_kw != FFESTR_firstWRITE)
15827 goto bad_0;
15828 switch (ffelex_token_type (t))
15829 {
15830 case FFELEX_typeEOS:
15831 case FFELEX_typeSEMICOLON:
15832 case FFELEX_typeCOMMA:
15833 case FFELEX_typeCOLONCOLON:
15834 ffesta_confirmed ();
15835 goto bad_1;
15836
15837 default:
15838 goto bad_1;
15839
15840 case FFELEX_typeOPEN_PAREN:
15841 if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlWRITE)
15842 goto bad_0;
15843
15844 for (ix = 0; ix < FFESTP_writeix; ++ix)
15845 ffestp_file.write.write_spec[ix].kw_or_val_present = FALSE;
15846 return (ffelexHandler) ffestb_R9101_;
15847 }
15848
15849 default:
15850 goto bad_0;
15851 }
15852
15853 bad_0:
15854 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WRITE", ffesta_tokens[0]);
15855 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
15856
15857 bad_1:
15858 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WRITE", t);
15859 return (ffelexHandler) ffelex_swallow_tokens (t,
15860 (ffelexHandler) ffesta_zero);
15861 }
15862
15863
15864
15865
15866
15867
15868
15869 static ffelexHandler
15870 ffestb_R9101_ (ffelexToken t)
15871 {
15872 switch (ffelex_token_type (t))
15873 {
15874 case FFELEX_typeNAME:
15875 ffesta_tokens[1] = ffelex_token_use (t);
15876 return (ffelexHandler) ffestb_R9102_;
15877
15878 default:
15879 return (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
15880 FFEEXPR_contextFILEUNIT, (ffeexprCallback) ffestb_R9103_)))
15881 (t);
15882 }
15883 }
15884
15885
15886
15887
15888
15889
15890
15891
15892 static ffelexHandler
15893 ffestb_R9102_ (ffelexToken t)
15894 {
15895 ffelexHandler next;
15896 ffelexToken nt;
15897
15898 switch (ffelex_token_type (t))
15899 {
15900 case FFELEX_typeEQUALS:
15901 nt = ffesta_tokens[1];
15902 next = (ffelexHandler) ffestb_R9107_ (nt);
15903 ffelex_token_kill (nt);
15904 return (ffelexHandler) (*next) (t);
15905
15906 default:
15907 nt = ffesta_tokens[1];
15908 next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
15909 FFEEXPR_contextFILEUNIT, (ffeexprCallback) ffestb_R9103_)))
15910 (nt);
15911 ffelex_token_kill (nt);
15912 return (ffelexHandler) (*next) (t);
15913 }
15914 }
15915
15916
15917
15918
15919
15920
15921
15922 static ffelexHandler
15923 ffestb_R9103_ (ffelexToken ft, ffebld expr, ffelexToken t)
15924 {
15925 switch (ffelex_token_type (t))
15926 {
15927 case FFELEX_typeCOMMA:
15928 case FFELEX_typeCLOSE_PAREN:
15929 if (expr == NULL)
15930 break;
15931 ffestp_file.write.write_spec[FFESTP_writeixUNIT].kw_or_val_present
15932 = TRUE;
15933 ffestp_file.write.write_spec[FFESTP_writeixUNIT].kw_present = FALSE;
15934 ffestp_file.write.write_spec[FFESTP_writeixUNIT].value_present = TRUE;
15935 ffestp_file.write.write_spec[FFESTP_writeixUNIT].value_is_label
15936 = FALSE;
15937 ffestp_file.write.write_spec[FFESTP_writeixUNIT].value
15938 = ffelex_token_use (ft);
15939 ffestp_file.write.write_spec[FFESTP_writeixUNIT].u.expr = expr;
15940 if (ffelex_token_type (t) == FFELEX_typeCOMMA)
15941 return (ffelexHandler) ffestb_R9104_;
15942 return (ffelexHandler) ffestb_R91012_;
15943
15944 default:
15945 break;
15946 }
15947
15948 ffestb_subr_kill_write_ ();
15949 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WRITE", t);
15950 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
15951 }
15952
15953
15954
15955
15956
15957
15958
15959 static ffelexHandler
15960 ffestb_R9104_ (ffelexToken t)
15961 {
15962 switch (ffelex_token_type (t))
15963 {
15964 case FFELEX_typeNAME:
15965 ffesta_tokens[1] = ffelex_token_use (t);
15966 return (ffelexHandler) ffestb_R9105_;
15967
15968 default:
15969 return (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
15970 FFEEXPR_contextFILEFORMATNML, (ffeexprCallback) ffestb_R9106_)))
15971 (t);
15972 }
15973 }
15974
15975
15976
15977
15978
15979
15980
15981
15982 static ffelexHandler
15983 ffestb_R9105_ (ffelexToken t)
15984 {
15985 ffelexHandler next;
15986 ffelexToken nt;
15987
15988 switch (ffelex_token_type (t))
15989 {
15990 case FFELEX_typeEQUALS:
15991 nt = ffesta_tokens[1];
15992 next = (ffelexHandler) ffestb_R9107_ (nt);
15993 ffelex_token_kill (nt);
15994 return (ffelexHandler) (*next) (t);
15995
15996 default:
15997 nt = ffesta_tokens[1];
15998 next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
15999 FFEEXPR_contextFILEFORMATNML, (ffeexprCallback) ffestb_R9106_)))
16000 (nt);
16001 ffelex_token_kill (nt);
16002 return (ffelexHandler) (*next) (t);
16003 }
16004 }
16005
16006
16007
16008
16009
16010
16011
16012 static ffelexHandler
16013 ffestb_R9106_ (ffelexToken ft, ffebld expr, ffelexToken t)
16014 {
16015 switch (ffelex_token_type (t))
16016 {
16017 case FFELEX_typeCOMMA:
16018 case FFELEX_typeCLOSE_PAREN:
16019 ffestp_file.write.write_spec[FFESTP_writeixFORMAT].kw_or_val_present
16020 = TRUE;
16021 ffestp_file.write.write_spec[FFESTP_writeixFORMAT].kw_present = FALSE;
16022 ffestp_file.write.write_spec[FFESTP_writeixFORMAT].value_present = TRUE;
16023 ffestp_file.write.write_spec[FFESTP_writeixFORMAT].value_is_label
16024 = (expr == NULL);
16025 ffestp_file.write.write_spec[FFESTP_writeixFORMAT].value
16026 = ffelex_token_use (ft);
16027 ffestp_file.write.write_spec[FFESTP_writeixFORMAT].u.expr = expr;
16028 if (ffelex_token_type (t) == FFELEX_typeCOMMA)
16029 return (ffelexHandler) ffestb_R9107_;
16030 return (ffelexHandler) ffestb_R91012_;
16031
16032 default:
16033 break;
16034 }
16035
16036 ffestb_subr_kill_write_ ();
16037 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WRITE", t);
16038 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
16039 }
16040
16041
16042
16043
16044
16045
16046
16047
16048 static ffelexHandler
16049 ffestb_R9107_ (ffelexToken t)
16050 {
16051 ffestrGenio kw;
16052
16053 ffestb_local_.write.label = FALSE;
16054
16055 switch (ffelex_token_type (t))
16056 {
16057 case FFELEX_typeNAME:
16058 kw = ffestr_genio (t);
16059 switch (kw)
16060 {
16061 case FFESTR_genioADVANCE:
16062 ffestb_local_.write.ix = FFESTP_writeixADVANCE;
16063 ffestb_local_.write.left = FALSE;
16064 ffestb_local_.write.context = FFEEXPR_contextFILEDFCHAR;
16065 break;
16066
16067 case FFESTR_genioEOR:
16068 ffestb_local_.write.ix = FFESTP_writeixEOR;
16069 ffestb_local_.write.label = TRUE;
16070 break;
16071
16072 case FFESTR_genioERR:
16073 ffestb_local_.write.ix = FFESTP_writeixERR;
16074 ffestb_local_.write.label = TRUE;
16075 break;
16076
16077 case FFESTR_genioFMT:
16078 ffestb_local_.write.ix = FFESTP_writeixFORMAT;
16079 ffestb_local_.write.left = FALSE;
16080 ffestb_local_.write.context = FFEEXPR_contextFILEFORMAT;
16081 break;
16082
16083 case FFESTR_genioIOSTAT:
16084 ffestb_local_.write.ix = FFESTP_writeixIOSTAT;
16085 ffestb_local_.write.left = TRUE;
16086 ffestb_local_.write.context = FFEEXPR_contextFILEINT;
16087 break;
16088
16089 case FFESTR_genioNML:
16090 ffestb_local_.write.ix = FFESTP_writeixFORMAT;
16091 ffestb_local_.write.left = TRUE;
16092 ffestb_local_.write.context = FFEEXPR_contextFILENAMELIST;
16093 break;
16094
16095 case FFESTR_genioREC:
16096 ffestb_local_.write.ix = FFESTP_writeixREC;
16097 ffestb_local_.write.left = FALSE;
16098 ffestb_local_.write.context = FFEEXPR_contextFILENUM;
16099 break;
16100
16101 case FFESTR_genioUNIT:
16102 ffestb_local_.write.ix = FFESTP_writeixUNIT;
16103 ffestb_local_.write.left = FALSE;
16104 ffestb_local_.write.context = FFEEXPR_contextFILEUNIT;
16105 break;
16106
16107 default:
16108 goto bad;
16109 }
16110 if (ffestp_file.write.write_spec[ffestb_local_.write.ix]
16111 .kw_or_val_present)
16112 break;
16113 ffestp_file.write.write_spec[ffestb_local_.write.ix]
16114 .kw_or_val_present = TRUE;
16115 ffestp_file.write.write_spec[ffestb_local_.write.ix]
16116 .kw_present = TRUE;
16117 ffestp_file.write.write_spec[ffestb_local_.write.ix]
16118 .value_present = FALSE;
16119 ffestp_file.write.write_spec[ffestb_local_.write.ix].value_is_label
16120 = ffestb_local_.write.label;
16121 ffestp_file.write.write_spec[ffestb_local_.write.ix].kw
16122 = ffelex_token_use (t);
16123 return (ffelexHandler) ffestb_R9108_;
16124
16125 default:
16126 break;
16127 }
16128
16129 bad:
16130 ffestb_subr_kill_write_ ();
16131 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WRITE", t);
16132 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
16133 }
16134
16135
16136
16137
16138
16139
16140
16141
16142 static ffelexHandler
16143 ffestb_R9108_ (ffelexToken t)
16144 {
16145 switch (ffelex_token_type (t))
16146 {
16147 case FFELEX_typeEQUALS:
16148 ffesta_confirmed ();
16149 if (ffestb_local_.write.label)
16150 return (ffelexHandler) ffestb_R91010_;
16151 if (ffestb_local_.write.left)
16152 return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
16153 ffestb_local_.write.context,
16154 (ffeexprCallback) ffestb_R9109_);
16155 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
16156 ffestb_local_.write.context,
16157 (ffeexprCallback) ffestb_R9109_);
16158
16159 default:
16160 break;
16161 }
16162
16163 ffestb_subr_kill_write_ ();
16164 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WRITE", t);
16165 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
16166 }
16167
16168
16169
16170
16171
16172
16173
16174 static ffelexHandler
16175 ffestb_R9109_ (ffelexToken ft, ffebld expr, ffelexToken t)
16176 {
16177 switch (ffelex_token_type (t))
16178 {
16179 case FFELEX_typeCOMMA:
16180 case FFELEX_typeCLOSE_PAREN:
16181 if (expr == NULL)
16182 {
16183 if (ffestb_local_.write.context == FFEEXPR_contextFILEFORMAT)
16184 ffestp_file.write.write_spec[ffestb_local_.write.ix]
16185 .value_is_label = TRUE;
16186 else
16187 break;
16188 }
16189 ffestp_file.write.write_spec[ffestb_local_.write.ix].value_present
16190 = TRUE;
16191 ffestp_file.write.write_spec[ffestb_local_.write.ix].value
16192 = ffelex_token_use (ft);
16193 ffestp_file.write.write_spec[ffestb_local_.write.ix].u.expr = expr;
16194 if (ffelex_token_type (t) == FFELEX_typeCOMMA)
16195 return (ffelexHandler) ffestb_R9107_;
16196 return (ffelexHandler) ffestb_R91012_;
16197
16198 default:
16199 break;
16200 }
16201
16202 ffestb_subr_kill_write_ ();
16203 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WRITE", t);
16204 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
16205 }
16206
16207
16208
16209
16210
16211
16212
16213 static ffelexHandler
16214 ffestb_R91010_ (ffelexToken t)
16215 {
16216 switch (ffelex_token_type (t))
16217 {
16218 case FFELEX_typeNUMBER:
16219 ffestp_file.write.write_spec[ffestb_local_.write.ix].value_present
16220 = TRUE;
16221 ffestp_file.write.write_spec[ffestb_local_.write.ix].value
16222 = ffelex_token_use (t);
16223 return (ffelexHandler) ffestb_R91011_;
16224
16225 default:
16226 break;
16227 }
16228
16229 ffestb_subr_kill_write_ ();
16230 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WRITE", t);
16231 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
16232 }
16233
16234
16235
16236
16237
16238
16239
16240 static ffelexHandler
16241 ffestb_R91011_ (ffelexToken t)
16242 {
16243 switch (ffelex_token_type (t))
16244 {
16245 case FFELEX_typeCOMMA:
16246 return (ffelexHandler) ffestb_R9107_;
16247
16248 case FFELEX_typeCLOSE_PAREN:
16249 return (ffelexHandler) ffestb_R91012_;
16250
16251 default:
16252 break;
16253 }
16254
16255 ffestb_subr_kill_write_ ();
16256 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WRITE", t);
16257 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
16258 }
16259
16260
16261
16262
16263
16264
16265
16266 static ffelexHandler
16267 ffestb_R91012_ (ffelexToken t)
16268 {
16269 switch (ffelex_token_type (t))
16270 {
16271 case FFELEX_typeEOS:
16272 case FFELEX_typeSEMICOLON:
16273 ffesta_confirmed ();
16274 if (!ffesta_is_inhibited ())
16275 {
16276 ffestc_R910_start ();
16277 ffestc_R910_finish ();
16278 }
16279 ffestb_subr_kill_write_ ();
16280 return (ffelexHandler) ffesta_zero (t);
16281
16282 default:
16283 ffesta_confirmed ();
16284
16285 case FFELEX_typeOPEN_PAREN:
16286
16287
16288
16289
16290 if (!ffe_is_pedantic () && (ffelex_token_type (t) == FFELEX_typeCOMMA))
16291 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
16292 ffestc_context_iolist (), (ffeexprCallback) ffestb_R91013_);
16293
16294 return (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
16295 ffestc_context_iolist (), (ffeexprCallback) ffestb_R91013_)))
16296 (t);
16297
16298 case FFELEX_typeEQUALS:
16299 case FFELEX_typePOINTS:
16300 break;
16301 }
16302
16303 ffestb_subr_kill_write_ ();
16304 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WRITE", t);
16305 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
16306 }
16307
16308
16309
16310
16311
16312
16313
16314 static ffelexHandler
16315 ffestb_R91013_ (ffelexToken ft, ffebld expr, ffelexToken t)
16316 {
16317 switch (ffelex_token_type (t))
16318 {
16319 case FFELEX_typeCOMMA:
16320 if (expr == NULL)
16321 break;
16322
16323 ffesta_confirmed ();
16324 if (!ffesta_is_inhibited ())
16325 ffestc_R910_start ();
16326 ffestb_subr_kill_write_ ();
16327
16328 if (!ffesta_is_inhibited ())
16329 ffestc_R910_item (expr, ft);
16330 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
16331 ffestc_context_iolist (), (ffeexprCallback) ffestb_R91014_);
16332
16333 case FFELEX_typeEOS:
16334 case FFELEX_typeSEMICOLON:
16335 if (expr == NULL)
16336 break;
16337
16338 ffesta_confirmed ();
16339 if (!ffesta_is_inhibited ())
16340 ffestc_R910_start ();
16341 ffestb_subr_kill_write_ ();
16342
16343 if (!ffesta_is_inhibited ())
16344 {
16345 ffestc_R910_item (expr, ft);
16346 ffestc_R910_finish ();
16347 }
16348 return (ffelexHandler) ffesta_zero (t);
16349
16350 default:
16351 break;
16352 }
16353
16354 ffestb_subr_kill_write_ ();
16355 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WRITE", t);
16356 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
16357 }
16358
16359
16360
16361
16362
16363
16364
16365 static ffelexHandler
16366 ffestb_R91014_ (ffelexToken ft, ffebld expr, ffelexToken t)
16367 {
16368 switch (ffelex_token_type (t))
16369 {
16370 case FFELEX_typeCOMMA:
16371 if (expr == NULL)
16372 break;
16373 if (!ffesta_is_inhibited ())
16374 ffestc_R910_item (expr, ft);
16375 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
16376 ffestc_context_iolist (), (ffeexprCallback) ffestb_R91014_);
16377
16378 case FFELEX_typeEOS:
16379 case FFELEX_typeSEMICOLON:
16380 if (expr == NULL)
16381 break;
16382 if (!ffesta_is_inhibited ())
16383 {
16384 ffestc_R910_item (expr, ft);
16385 ffestc_R910_finish ();
16386 }
16387 return (ffelexHandler) ffesta_zero (t);
16388
16389 default:
16390 break;
16391 }
16392
16393 if (!ffesta_is_inhibited ())
16394 ffestc_R910_finish ();
16395 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WRITE", t);
16396 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
16397 }
16398
16399
16400
16401
16402
16403
16404
16405
16406 ffelexHandler
16407 ffestb_R911 (ffelexToken t)
16408 {
16409 ffelexHandler next;
16410 ffestpPrintIx ix;
16411
16412 switch (ffelex_token_type (ffesta_tokens[0]))
16413 {
16414 case FFELEX_typeNAME:
16415 if (ffesta_first_kw != FFESTR_firstPRINT)
16416 goto bad_0;
16417 switch (ffelex_token_type (t))
16418 {
16419 case FFELEX_typeCOMMA:
16420 case FFELEX_typeCOLONCOLON:
16421 case FFELEX_typeEOS:
16422 case FFELEX_typeSEMICOLON:
16423 ffesta_confirmed ();
16424 goto bad_1;
16425
16426 case FFELEX_typeEQUALS:
16427 case FFELEX_typePOINTS:
16428 case FFELEX_typeCOLON:
16429 goto bad_1;
16430
16431 case FFELEX_typeNAME:
16432 case FFELEX_typeNUMBER:
16433 ffesta_confirmed ();
16434 break;
16435
16436 default:
16437 break;
16438 }
16439
16440 for (ix = 0; ix < FFESTP_printix; ++ix)
16441 ffestp_file.print.print_spec[ix].kw_or_val_present = FALSE;
16442 return (ffelexHandler) (*((ffelexHandler)
16443 ffeexpr_rhs (ffesta_output_pool,
16444 FFEEXPR_contextFILEFORMATNML, (ffeexprCallback) ffestb_R9111_)))
16445 (t);
16446
16447 case FFELEX_typeNAMES:
16448 if (ffesta_first_kw != FFESTR_firstPRINT)
16449 goto bad_0;
16450 switch (ffelex_token_type (t))
16451 {
16452 case FFELEX_typeEOS:
16453 case FFELEX_typeSEMICOLON:
16454 case FFELEX_typeCOMMA:
16455 ffesta_confirmed ();
16456 if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlPRINT)
16457 break;
16458 goto bad_1;
16459
16460 case FFELEX_typeCOLONCOLON:
16461 ffesta_confirmed ();
16462 goto bad_1;
16463
16464 case FFELEX_typeEQUALS:
16465 case FFELEX_typePOINTS:
16466 case FFELEX_typeCOLON:
16467 goto bad_1;
16468
16469 default:
16470 break;
16471 }
16472 for (ix = 0; ix < FFESTP_printix; ++ix)
16473 ffestp_file.print.print_spec[ix].kw_or_val_present = FALSE;
16474 next = (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
16475 FFEEXPR_contextFILEFORMATNML, (ffeexprCallback) ffestb_R9111_);
16476 next = (ffelexHandler) ffelex_splice_tokens (next, ffesta_tokens[0],
16477 FFESTR_firstlPRINT);
16478 if (next == NULL)
16479 return (ffelexHandler) ffelex_swallow_tokens (t,
16480 (ffelexHandler) ffesta_zero);
16481 return (ffelexHandler) (*next) (t);
16482
16483 default:
16484 goto bad_0;
16485 }
16486
16487 bad_0:
16488 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PRINT", ffesta_tokens[0]);
16489 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
16490
16491 bad_1:
16492 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PRINT", t);
16493 return (ffelexHandler) ffelex_swallow_tokens (t,
16494 (ffelexHandler) ffesta_zero);
16495 }
16496
16497
16498
16499
16500
16501
16502
16503 static ffelexHandler
16504 ffestb_R9111_ (ffelexToken ft, ffebld expr, ffelexToken t)
16505 {
16506 switch (ffelex_token_type (t))
16507 {
16508 case FFELEX_typeEOS:
16509 case FFELEX_typeSEMICOLON:
16510 case FFELEX_typeCOMMA:
16511 ffesta_confirmed ();
16512 ffestp_file.print.print_spec[FFESTP_printixFORMAT].kw_or_val_present
16513 = TRUE;
16514 ffestp_file.print.print_spec[FFESTP_printixFORMAT].kw_present = FALSE;
16515 ffestp_file.print.print_spec[FFESTP_printixFORMAT].value_present = TRUE;
16516 ffestp_file.print.print_spec[FFESTP_printixFORMAT].value_is_label
16517 = (expr == NULL);
16518 ffestp_file.print.print_spec[FFESTP_printixFORMAT].value
16519 = ffelex_token_use (ft);
16520 ffestp_file.print.print_spec[FFESTP_printixFORMAT].u.expr = expr;
16521 if (!ffesta_is_inhibited ())
16522 ffestc_R911_start ();
16523 ffestb_subr_kill_print_ ();
16524 if (ffelex_token_type (t) == FFELEX_typeCOMMA)
16525 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
16526 FFEEXPR_contextIOLIST, (ffeexprCallback) ffestb_R9112_);
16527 if (!ffesta_is_inhibited ())
16528 ffestc_R911_finish ();
16529 return (ffelexHandler) ffesta_zero (t);
16530
16531 default:
16532 break;
16533 }
16534
16535 ffestb_subr_kill_print_ ();
16536 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PRINT", t);
16537 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
16538 }
16539
16540
16541
16542
16543
16544
16545
16546 static ffelexHandler
16547 ffestb_R9112_ (ffelexToken ft, ffebld expr, ffelexToken t)
16548 {
16549 switch (ffelex_token_type (t))
16550 {
16551 case FFELEX_typeCOMMA:
16552 if (expr == NULL)
16553 break;
16554 if (!ffesta_is_inhibited ())
16555 ffestc_R911_item (expr, ft);
16556 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
16557 FFEEXPR_contextIOLIST, (ffeexprCallback) ffestb_R9112_);
16558
16559 case FFELEX_typeEOS:
16560 case FFELEX_typeSEMICOLON:
16561 if (expr == NULL)
16562 break;
16563 if (!ffesta_is_inhibited ())
16564 {
16565 ffestc_R911_item (expr, ft);
16566 ffestc_R911_finish ();
16567 }
16568 return (ffelexHandler) ffesta_zero (t);
16569
16570 default:
16571 break;
16572 }
16573
16574 if (!ffesta_is_inhibited ())
16575 ffestc_R911_finish ();
16576 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PRINT", t);
16577 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
16578 }
16579
16580
16581
16582
16583
16584
16585
16586
16587 ffelexHandler
16588 ffestb_R923 (ffelexToken t)
16589 {
16590 ffestpInquireIx ix;
16591
16592 switch (ffelex_token_type (ffesta_tokens[0]))
16593 {
16594 case FFELEX_typeNAME:
16595 if (ffesta_first_kw != FFESTR_firstINQUIRE)
16596 goto bad_0;
16597 break;
16598
16599 case FFELEX_typeNAMES:
16600 if (ffesta_first_kw != FFESTR_firstINQUIRE)
16601 goto bad_0;
16602 if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlINQUIRE)
16603 goto bad_0;
16604 break;
16605
16606 default:
16607 goto bad_0;
16608 }
16609
16610 switch (ffelex_token_type (t))
16611 {
16612 case FFELEX_typeOPEN_PAREN:
16613 break;
16614
16615 case FFELEX_typeEOS:
16616 case FFELEX_typeSEMICOLON:
16617 case FFELEX_typeCOMMA:
16618 case FFELEX_typeCOLONCOLON:
16619 ffesta_confirmed ();
16620 goto bad_1;
16621
16622 default:
16623 goto bad_1;
16624 }
16625
16626 for (ix = 0; ix < FFESTP_inquireix; ++ix)
16627 ffestp_file.inquire.inquire_spec[ix].kw_or_val_present = FALSE;
16628
16629 ffestb_local_.inquire.may_be_iolength = TRUE;
16630 return (ffelexHandler) ffestb_R9231_;
16631
16632 bad_0:
16633 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INQUIRE", ffesta_tokens[0]);
16634 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
16635
16636 bad_1:
16637 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INQUIRE", t);
16638 return (ffelexHandler) ffelex_swallow_tokens (t,
16639 (ffelexHandler) ffesta_zero);
16640 }
16641
16642
16643
16644
16645
16646
16647
16648 static ffelexHandler
16649 ffestb_R9231_ (ffelexToken t)
16650 {
16651 switch (ffelex_token_type (t))
16652 {
16653 case FFELEX_typeNAME:
16654 ffesta_tokens[1] = ffelex_token_use (t);
16655 return (ffelexHandler) ffestb_R9232_;
16656
16657 default:
16658 ffestb_local_.inquire.may_be_iolength = FALSE;
16659 return (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
16660 FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_R9233_)))
16661 (t);
16662 }
16663 }
16664
16665
16666
16667
16668
16669
16670
16671
16672 static ffelexHandler
16673 ffestb_R9232_ (ffelexToken t)
16674 {
16675 ffelexHandler next;
16676 ffelexToken nt;
16677
16678 switch (ffelex_token_type (t))
16679 {
16680 case FFELEX_typeEQUALS:
16681 nt = ffesta_tokens[1];
16682 next = (ffelexHandler) ffestb_R9234_ (nt);
16683 ffelex_token_kill (nt);
16684 return (ffelexHandler) (*next) (t);
16685
16686 default:
16687 ffestb_local_.inquire.may_be_iolength = FALSE;
16688 next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
16689 FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_R9233_)))
16690 (ffesta_tokens[1]);
16691 ffelex_token_kill (ffesta_tokens[1]);
16692 return (ffelexHandler) (*next) (t);
16693 }
16694 }
16695
16696
16697
16698
16699
16700
16701
16702 static ffelexHandler
16703 ffestb_R9233_ (ffelexToken ft, ffebld expr, ffelexToken t)
16704 {
16705 switch (ffelex_token_type (t))
16706 {
16707 case FFELEX_typeCOMMA:
16708 case FFELEX_typeCLOSE_PAREN:
16709 if (expr == NULL)
16710 break;
16711 ffestp_file.inquire.inquire_spec[FFESTP_inquireixUNIT].kw_or_val_present
16712 = TRUE;
16713 ffestp_file.inquire.inquire_spec[FFESTP_inquireixUNIT].kw_present = FALSE;
16714 ffestp_file.inquire.inquire_spec[FFESTP_inquireixUNIT].value_present = TRUE;
16715 ffestp_file.inquire.inquire_spec[FFESTP_inquireixUNIT].value_is_label
16716 = FALSE;
16717 ffestp_file.inquire.inquire_spec[FFESTP_inquireixUNIT].value
16718 = ffelex_token_use (ft);
16719 ffestp_file.inquire.inquire_spec[FFESTP_inquireixUNIT].u.expr = expr;
16720 if (ffelex_token_type (t) == FFELEX_typeCOMMA)
16721 return (ffelexHandler) ffestb_R9234_;
16722 return (ffelexHandler) ffestb_R9239_;
16723
16724 default:
16725 break;
16726 }
16727
16728 ffestb_subr_kill_inquire_ ();
16729 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INQUIRE", t);
16730 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
16731 }
16732
16733
16734
16735
16736
16737
16738
16739 static ffelexHandler
16740 ffestb_R9234_ (ffelexToken t)
16741 {
16742 ffestrInquire kw;
16743
16744 ffestb_local_.inquire.label = FALSE;
16745
16746 switch (ffelex_token_type (t))
16747 {
16748 case FFELEX_typeNAME:
16749 kw = ffestr_inquire (t);
16750 if (kw != FFESTR_inquireIOLENGTH)
16751 ffestb_local_.inquire.may_be_iolength = FALSE;
16752 switch (kw)
16753 {
16754 case FFESTR_inquireACCESS:
16755 ffestb_local_.inquire.ix = FFESTP_inquireixACCESS;
16756 ffestb_local_.inquire.left = TRUE;
16757 ffestb_local_.inquire.context = FFEEXPR_contextFILEDFCHAR;
16758 break;
16759
16760 case FFESTR_inquireACTION:
16761 ffestb_local_.inquire.ix = FFESTP_inquireixACTION;
16762 ffestb_local_.inquire.left = TRUE;
16763 ffestb_local_.inquire.context = FFEEXPR_contextFILEDFCHAR;
16764 break;
16765
16766 case FFESTR_inquireBLANK:
16767 ffestb_local_.inquire.ix = FFESTP_inquireixBLANK;
16768 ffestb_local_.inquire.left = TRUE;
16769 ffestb_local_.inquire.context = FFEEXPR_contextFILEDFCHAR;
16770 break;
16771
16772 case FFESTR_inquireCARRIAGECONTROL:
16773 ffestb_local_.inquire.ix = FFESTP_inquireixCARRIAGECONTROL;
16774 ffestb_local_.inquire.left = TRUE;
16775 ffestb_local_.inquire.context = FFEEXPR_contextFILECHAR;
16776 break;
16777
16778 case FFESTR_inquireDEFAULTFILE:
16779 ffestb_local_.inquire.ix = FFESTP_inquireixDEFAULTFILE;
16780 ffestb_local_.inquire.left = FALSE;
16781 ffestb_local_.inquire.context = FFEEXPR_contextFILECHAR;
16782 break;
16783
16784 case FFESTR_inquireDELIM:
16785 ffestb_local_.inquire.ix = FFESTP_inquireixDELIM;
16786 ffestb_local_.inquire.left = TRUE;
16787 ffestb_local_.inquire.context = FFEEXPR_contextFILEDFCHAR;
16788 break;
16789
16790 case FFESTR_inquireDIRECT:
16791 ffestb_local_.inquire.ix = FFESTP_inquireixDIRECT;
16792 ffestb_local_.inquire.left = TRUE;
16793 ffestb_local_.inquire.context = FFEEXPR_contextFILEDFCHAR;
16794 break;
16795
16796 case FFESTR_inquireERR:
16797 ffestb_local_.inquire.ix = FFESTP_inquireixERR;
16798 ffestb_local_.inquire.label = TRUE;
16799 break;
16800
16801 case FFESTR_inquireEXIST:
16802 ffestb_local_.inquire.ix = FFESTP_inquireixEXIST;
16803 ffestb_local_.inquire.left = TRUE;
16804 ffestb_local_.inquire.context = FFEEXPR_contextFILELOG;
16805 break;
16806
16807 case FFESTR_inquireFILE:
16808 ffestb_local_.inquire.ix = FFESTP_inquireixFILE;
16809 ffestb_local_.inquire.left = FALSE;
16810 ffestb_local_.inquire.context = FFEEXPR_contextFILECHAR;
16811 break;
16812
16813 case FFESTR_inquireFORM:
16814 ffestb_local_.inquire.ix = FFESTP_inquireixFORM;
16815 ffestb_local_.inquire.left = TRUE;
16816 ffestb_local_.inquire.context = FFEEXPR_contextFILEDFCHAR;
16817 break;
16818
16819 case FFESTR_inquireFORMATTED:
16820 ffestb_local_.inquire.ix = FFESTP_inquireixFORMATTED;
16821 ffestb_local_.inquire.left = TRUE;
16822 ffestb_local_.inquire.context = FFEEXPR_contextFILEDFCHAR;
16823 break;
16824
16825 case FFESTR_inquireIOLENGTH:
16826 if (!ffestb_local_.inquire.may_be_iolength)
16827 goto bad;
16828 ffestb_local_.inquire.ix = FFESTP_inquireixIOLENGTH;
16829 ffestb_local_.inquire.left = TRUE;
16830 ffestb_local_.inquire.context = FFEEXPR_contextFILEINT;
16831 break;
16832
16833 case FFESTR_inquireIOSTAT:
16834 ffestb_local_.inquire.ix = FFESTP_inquireixIOSTAT;
16835 ffestb_local_.inquire.left = TRUE;
16836 ffestb_local_.inquire.context = FFEEXPR_contextFILEINT;
16837 break;
16838
16839 case FFESTR_inquireKEYED:
16840 ffestb_local_.inquire.ix = FFESTP_inquireixKEYED;
16841 ffestb_local_.inquire.left = TRUE;
16842 ffestb_local_.inquire.context = FFEEXPR_contextFILECHAR;
16843 break;
16844
16845 case FFESTR_inquireNAME:
16846 ffestb_local_.inquire.ix = FFESTP_inquireixNAME;
16847 ffestb_local_.inquire.left = TRUE;
16848 ffestb_local_.inquire.context = FFEEXPR_contextFILECHAR;
16849 break;
16850
16851 case FFESTR_inquireNAMED:
16852 ffestb_local_.inquire.ix = FFESTP_inquireixNAMED;
16853 ffestb_local_.inquire.left = TRUE;
16854 ffestb_local_.inquire.context = FFEEXPR_contextFILELOG;
16855 break;
16856
16857 case FFESTR_inquireNEXTREC:
16858 ffestb_local_.inquire.ix = FFESTP_inquireixNEXTREC;
16859 ffestb_local_.inquire.left = TRUE;
16860 ffestb_local_.inquire.context = FFEEXPR_contextFILEDFINT;
16861 break;
16862
16863 case FFESTR_inquireNUMBER:
16864 ffestb_local_.inquire.ix = FFESTP_inquireixNUMBER;
16865 ffestb_local_.inquire.left = TRUE;
16866 ffestb_local_.inquire.context = FFEEXPR_contextFILEINT;
16867 break;
16868
16869 case FFESTR_inquireOPENED:
16870 ffestb_local_.inquire.ix = FFESTP_inquireixOPENED;
16871 ffestb_local_.inquire.left = TRUE;
16872 ffestb_local_.inquire.context = FFEEXPR_contextFILELOG;
16873 break;
16874
16875 case FFESTR_inquireORGANIZATION:
16876 ffestb_local_.inquire.ix = FFESTP_inquireixORGANIZATION;
16877 ffestb_local_.inquire.left = TRUE;
16878 ffestb_local_.inquire.context = FFEEXPR_contextFILECHAR;
16879 break;
16880
16881 case FFESTR_inquirePAD:
16882 ffestb_local_.inquire.ix = FFESTP_inquireixPAD;
16883 ffestb_local_.inquire.left = TRUE;
16884 ffestb_local_.inquire.context = FFEEXPR_contextFILEDFCHAR;
16885 break;
16886
16887 case FFESTR_inquirePOSITION:
16888 ffestb_local_.inquire.ix = FFESTP_inquireixPOSITION;
16889 ffestb_local_.inquire.left = TRUE;
16890 ffestb_local_.inquire.context = FFEEXPR_contextFILEDFCHAR;
16891 break;
16892
16893 case FFESTR_inquireREAD:
16894 ffestb_local_.inquire.ix = FFESTP_inquireixREAD;
16895 ffestb_local_.inquire.left = TRUE;
16896 ffestb_local_.inquire.context = FFEEXPR_contextFILEDFCHAR;
16897 break;
16898
16899 case FFESTR_inquireREADWRITE:
16900 ffestb_local_.inquire.ix = FFESTP_inquireixREADWRITE;
16901 ffestb_local_.inquire.left = TRUE;
16902 ffestb_local_.inquire.context = FFEEXPR_contextFILEDFCHAR;
16903 break;
16904
16905 case FFESTR_inquireRECL:
16906 ffestb_local_.inquire.ix = FFESTP_inquireixRECL;
16907 ffestb_local_.inquire.left = TRUE;
16908 ffestb_local_.inquire.context = FFEEXPR_contextFILEINT;
16909 break;
16910
16911 case FFESTR_inquireRECORDTYPE:
16912 ffestb_local_.inquire.ix = FFESTP_inquireixRECORDTYPE;
16913 ffestb_local_.inquire.left = TRUE;
16914 ffestb_local_.inquire.context = FFEEXPR_contextFILECHAR;
16915 break;
16916
16917 case FFESTR_inquireSEQUENTIAL:
16918 ffestb_local_.inquire.ix = FFESTP_inquireixSEQUENTIAL;
16919 ffestb_local_.inquire.left = TRUE;
16920 ffestb_local_.inquire.context = FFEEXPR_contextFILEDFCHAR;
16921 break;
16922
16923 case FFESTR_inquireUNFORMATTED:
16924 ffestb_local_.inquire.ix = FFESTP_inquireixUNFORMATTED;
16925 ffestb_local_.inquire.left = TRUE;
16926 ffestb_local_.inquire.context = FFEEXPR_contextFILEDFCHAR;
16927 break;
16928
16929 case FFESTR_inquireUNIT:
16930 ffestb_local_.inquire.ix = FFESTP_inquireixUNIT;
16931 ffestb_local_.inquire.left = FALSE;
16932 ffestb_local_.inquire.context = FFEEXPR_contextFILENUM;
16933 break;
16934
16935 default:
16936 goto bad;
16937 }
16938 if (ffestp_file.inquire.inquire_spec[ffestb_local_.inquire.ix]
16939 .kw_or_val_present)
16940 break;
16941 ffestp_file.inquire.inquire_spec[ffestb_local_.inquire.ix]
16942 .kw_or_val_present = TRUE;
16943 ffestp_file.inquire.inquire_spec[ffestb_local_.inquire.ix]
16944 .kw_present = TRUE;
16945 ffestp_file.inquire.inquire_spec[ffestb_local_.inquire.ix]
16946 .value_present = FALSE;
16947 ffestp_file.inquire.inquire_spec[ffestb_local_.inquire.ix].value_is_label
16948 = ffestb_local_.inquire.label;
16949 ffestp_file.inquire.inquire_spec[ffestb_local_.inquire.ix].kw
16950 = ffelex_token_use (t);
16951 return (ffelexHandler) ffestb_R9235_;
16952
16953 default:
16954 break;
16955 }
16956
16957 bad:
16958 ffestb_subr_kill_inquire_ ();
16959 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INQUIRE", t);
16960 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
16961 }
16962
16963
16964
16965
16966
16967
16968
16969 static ffelexHandler
16970 ffestb_R9235_ (ffelexToken t)
16971 {
16972 switch (ffelex_token_type (t))
16973 {
16974 case FFELEX_typeEQUALS:
16975 ffesta_confirmed ();
16976 if (ffestb_local_.inquire.label)
16977 return (ffelexHandler) ffestb_R9237_;
16978 if (ffestb_local_.inquire.left)
16979 return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
16980 ffestb_local_.inquire.context,
16981 (ffeexprCallback) ffestb_R9236_);
16982 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
16983 ffestb_local_.inquire.context,
16984 (ffeexprCallback) ffestb_R9236_);
16985
16986 default:
16987 break;
16988 }
16989
16990 ffestb_subr_kill_inquire_ ();
16991 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INQUIRE", t);
16992 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
16993 }
16994
16995
16996
16997
16998
16999
17000
17001 static ffelexHandler
17002 ffestb_R9236_ (ffelexToken ft, ffebld expr, ffelexToken t)
17003 {
17004 switch (ffelex_token_type (t))
17005 {
17006 case FFELEX_typeCOMMA:
17007 if (ffestb_local_.inquire.ix == FFESTP_inquireixIOLENGTH)
17008 break;
17009
17010
17011 case FFELEX_typeCLOSE_PAREN:
17012 if (expr == NULL)
17013 break;
17014 ffestp_file.inquire.inquire_spec[ffestb_local_.inquire.ix].value_present
17015 = TRUE;
17016 ffestp_file.inquire.inquire_spec[ffestb_local_.inquire.ix].value
17017 = ffelex_token_use (ft);
17018 ffestp_file.inquire.inquire_spec[ffestb_local_.inquire.ix].u.expr = expr;
17019 if (ffelex_token_type (t) == FFELEX_typeCOMMA)
17020 return (ffelexHandler) ffestb_R9234_;
17021 if (ffestb_local_.inquire.ix == FFESTP_inquireixIOLENGTH)
17022 return (ffelexHandler) ffestb_R92310_;
17023 return (ffelexHandler) ffestb_R9239_;
17024
17025 default:
17026 break;
17027 }
17028
17029 ffestb_subr_kill_inquire_ ();
17030 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INQUIRE", t);
17031 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
17032 }
17033
17034
17035
17036
17037
17038
17039
17040 static ffelexHandler
17041 ffestb_R9237_ (ffelexToken t)
17042 {
17043 switch (ffelex_token_type (t))
17044 {
17045 case FFELEX_typeNUMBER:
17046 ffestp_file.inquire.inquire_spec[ffestb_local_.inquire.ix].value_present
17047 = TRUE;
17048 ffestp_file.inquire.inquire_spec[ffestb_local_.inquire.ix].value
17049 = ffelex_token_use (t);
17050 return (ffelexHandler) ffestb_R9238_;
17051
17052 default:
17053 break;
17054 }
17055
17056 ffestb_subr_kill_inquire_ ();
17057 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INQUIRE", t);
17058 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
17059 }
17060
17061
17062
17063
17064
17065
17066
17067 static ffelexHandler
17068 ffestb_R9238_ (ffelexToken t)
17069 {
17070 switch (ffelex_token_type (t))
17071 {
17072 case FFELEX_typeCOMMA:
17073 return (ffelexHandler) ffestb_R9234_;
17074
17075 case FFELEX_typeCLOSE_PAREN:
17076 return (ffelexHandler) ffestb_R9239_;
17077
17078 default:
17079 break;
17080 }
17081
17082 ffestb_subr_kill_inquire_ ();
17083 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INQUIRE", t);
17084 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
17085 }
17086
17087
17088
17089
17090
17091
17092
17093 static ffelexHandler
17094 ffestb_R9239_ (ffelexToken t)
17095 {
17096 switch (ffelex_token_type (t))
17097 {
17098 case FFELEX_typeEOS:
17099 case FFELEX_typeSEMICOLON:
17100 ffesta_confirmed ();
17101 if (!ffesta_is_inhibited ())
17102 ffestc_R923A ();
17103 ffestb_subr_kill_inquire_ ();
17104 return (ffelexHandler) ffesta_zero (t);
17105
17106 default:
17107 break;
17108 }
17109
17110 ffestb_subr_kill_inquire_ ();
17111 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INQUIRE", t);
17112 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
17113 }
17114
17115
17116
17117
17118
17119
17120
17121
17122 static ffelexHandler
17123 ffestb_R92310_ (ffelexToken t)
17124 {
17125 switch (ffelex_token_type (t))
17126 {
17127 case FFELEX_typeEOS:
17128 case FFELEX_typeSEMICOLON:
17129 break;
17130
17131 default:
17132 ffesta_confirmed ();
17133 if (!ffesta_is_inhibited ())
17134 ffestc_R923B_start ();
17135 ffestb_subr_kill_inquire_ ();
17136 return (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
17137 FFEEXPR_contextIOLIST, (ffeexprCallback) ffestb_R92311_)))
17138 (t);
17139 }
17140
17141 ffestb_subr_kill_inquire_ ();
17142 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INQUIRE", t);
17143 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
17144 }
17145
17146
17147
17148
17149
17150
17151
17152 static ffelexHandler
17153 ffestb_R92311_ (ffelexToken ft, ffebld expr, ffelexToken t)
17154 {
17155 switch (ffelex_token_type (t))
17156 {
17157 case FFELEX_typeCOMMA:
17158 if (expr == NULL)
17159 break;
17160 if (!ffesta_is_inhibited ())
17161 ffestc_R923B_item (expr, ft);
17162 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
17163 FFEEXPR_contextIOLIST, (ffeexprCallback) ffestb_R92311_);
17164
17165 case FFELEX_typeEOS:
17166 case FFELEX_typeSEMICOLON:
17167 if (expr == NULL)
17168 break;
17169 if (!ffesta_is_inhibited ())
17170 {
17171 ffestc_R923B_item (expr, ft);
17172 ffestc_R923B_finish ();
17173 }
17174 return (ffelexHandler) ffesta_zero (t);
17175
17176 default:
17177 break;
17178 }
17179
17180 if (!ffesta_is_inhibited ())
17181 ffestc_R923B_finish ();
17182 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INQUIRE", t);
17183 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
17184 }
17185
17186
17187
17188
17189
17190
17191
17192
17193 #if FFESTR_VXT
17194 ffelexHandler
17195 ffestb_V018 (ffelexToken t)
17196 {
17197 ffestpRewriteIx ix;
17198
17199 switch (ffelex_token_type (ffesta_tokens[0]))
17200 {
17201 case FFELEX_typeNAME:
17202 if (ffesta_first_kw != FFESTR_firstREWRITE)
17203 goto bad_0;
17204 switch (ffelex_token_type (t))
17205 {
17206 case FFELEX_typeCOMMA:
17207 case FFELEX_typeCOLONCOLON:
17208 case FFELEX_typeEOS:
17209 case FFELEX_typeSEMICOLON:
17210 case FFELEX_typeNAME:
17211 case FFELEX_typeNUMBER:
17212 ffesta_confirmed ();
17213 goto bad_1;
17214
17215 default:
17216 goto bad_1;
17217
17218 case FFELEX_typeOPEN_PAREN:
17219 for (ix = 0; ix < FFESTP_rewriteix; ++ix)
17220 ffestp_file.rewrite.rewrite_spec[ix].kw_or_val_present = FALSE;
17221 return (ffelexHandler) ffestb_V0181_;
17222 }
17223
17224 case FFELEX_typeNAMES:
17225 if (ffesta_first_kw != FFESTR_firstREWRITE)
17226 goto bad_0;
17227 switch (ffelex_token_type (t))
17228 {
17229 case FFELEX_typeEOS:
17230 case FFELEX_typeSEMICOLON:
17231 case FFELEX_typeCOMMA:
17232 case FFELEX_typeCOLONCOLON:
17233 ffesta_confirmed ();
17234 goto bad_1;
17235
17236 default:
17237 goto bad_1;
17238
17239 case FFELEX_typeOPEN_PAREN:
17240 if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlREWRITE)
17241 goto bad_0;
17242
17243 for (ix = 0; ix < FFESTP_rewriteix; ++ix)
17244 ffestp_file.rewrite.rewrite_spec[ix].kw_or_val_present = FALSE;
17245 return (ffelexHandler) ffestb_V0181_;
17246 }
17247
17248 default:
17249 goto bad_0;
17250 }
17251
17252 bad_0:
17253 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "REWRITE", ffesta_tokens[0]);
17254 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
17255
17256 bad_1:
17257 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "REWRITE", t);
17258 return (ffelexHandler) ffelex_swallow_tokens (t,
17259 (ffelexHandler) ffesta_zero);
17260 }
17261
17262
17263
17264
17265
17266
17267
17268 static ffelexHandler
17269 ffestb_V0181_ (ffelexToken t)
17270 {
17271 switch (ffelex_token_type (t))
17272 {
17273 case FFELEX_typeNAME:
17274 ffesta_tokens[1] = ffelex_token_use (t);
17275 return (ffelexHandler) ffestb_V0182_;
17276
17277 default:
17278 return (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
17279 FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_V0183_)))
17280 (t);
17281 }
17282 }
17283
17284
17285
17286
17287
17288
17289
17290
17291 static ffelexHandler
17292 ffestb_V0182_ (ffelexToken t)
17293 {
17294 ffelexHandler next;
17295 ffelexToken nt;
17296
17297 switch (ffelex_token_type (t))
17298 {
17299 case FFELEX_typeEQUALS:
17300 nt = ffesta_tokens[1];
17301 next = (ffelexHandler) ffestb_V0187_ (nt);
17302 ffelex_token_kill (nt);
17303 return (ffelexHandler) (*next) (t);
17304
17305 default:
17306 nt = ffesta_tokens[1];
17307 next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
17308 FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_V0183_)))
17309 (nt);
17310 ffelex_token_kill (nt);
17311 return (ffelexHandler) (*next) (t);
17312 }
17313 }
17314
17315
17316
17317
17318
17319
17320
17321 static ffelexHandler
17322 ffestb_V0183_ (ffelexToken ft, ffebld expr, ffelexToken t)
17323 {
17324 switch (ffelex_token_type (t))
17325 {
17326 case FFELEX_typeCOMMA:
17327 case FFELEX_typeCLOSE_PAREN:
17328 if (expr == NULL)
17329 break;
17330 ffestp_file.rewrite.rewrite_spec[FFESTP_rewriteixUNIT].kw_or_val_present
17331 = TRUE;
17332 ffestp_file.rewrite.rewrite_spec[FFESTP_rewriteixUNIT].kw_present = FALSE;
17333 ffestp_file.rewrite.rewrite_spec[FFESTP_rewriteixUNIT].value_present = TRUE;
17334 ffestp_file.rewrite.rewrite_spec[FFESTP_rewriteixUNIT].value_is_label
17335 = FALSE;
17336 ffestp_file.rewrite.rewrite_spec[FFESTP_rewriteixUNIT].value
17337 = ffelex_token_use (ft);
17338 ffestp_file.rewrite.rewrite_spec[FFESTP_rewriteixUNIT].u.expr = expr;
17339 if (ffelex_token_type (t) == FFELEX_typeCOMMA)
17340 return (ffelexHandler) ffestb_V0184_;
17341 return (ffelexHandler) ffestb_V01812_;
17342
17343 default:
17344 break;
17345 }
17346
17347 ffestb_subr_kill_rewrite_ ();
17348 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "REWRITE", t);
17349 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
17350 }
17351
17352
17353
17354
17355
17356
17357
17358 static ffelexHandler
17359 ffestb_V0184_ (ffelexToken t)
17360 {
17361 switch (ffelex_token_type (t))
17362 {
17363 case FFELEX_typeNAME:
17364 ffesta_tokens[1] = ffelex_token_use (t);
17365 return (ffelexHandler) ffestb_V0185_;
17366
17367 default:
17368 return (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
17369 FFEEXPR_contextFILEFORMAT, (ffeexprCallback) ffestb_V0186_)))
17370 (t);
17371 }
17372 }
17373
17374
17375
17376
17377
17378
17379
17380
17381 static ffelexHandler
17382 ffestb_V0185_ (ffelexToken t)
17383 {
17384 ffelexHandler next;
17385 ffelexToken nt;
17386
17387 switch (ffelex_token_type (t))
17388 {
17389 case FFELEX_typeEQUALS:
17390 nt = ffesta_tokens[1];
17391 next = (ffelexHandler) ffestb_V0187_ (nt);
17392 ffelex_token_kill (nt);
17393 return (ffelexHandler) (*next) (t);
17394
17395 default:
17396 nt = ffesta_tokens[1];
17397 next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
17398 FFEEXPR_contextFILEFORMAT, (ffeexprCallback) ffestb_V0186_)))
17399 (nt);
17400 ffelex_token_kill (nt);
17401 return (ffelexHandler) (*next) (t);
17402 }
17403 }
17404
17405
17406
17407
17408
17409
17410
17411 static ffelexHandler
17412 ffestb_V0186_ (ffelexToken ft, ffebld expr, ffelexToken t)
17413 {
17414 switch (ffelex_token_type (t))
17415 {
17416 case FFELEX_typeCOMMA:
17417 case FFELEX_typeCLOSE_PAREN:
17418 ffestp_file.rewrite.rewrite_spec[FFESTP_rewriteixFMT].kw_or_val_present
17419 = TRUE;
17420 ffestp_file.rewrite.rewrite_spec[FFESTP_rewriteixFMT].kw_present = FALSE;
17421 ffestp_file.rewrite.rewrite_spec[FFESTP_rewriteixFMT].value_present = TRUE;
17422 ffestp_file.rewrite.rewrite_spec[FFESTP_rewriteixFMT].value_is_label
17423 = (expr == NULL);
17424 ffestp_file.rewrite.rewrite_spec[FFESTP_rewriteixFMT].value
17425 = ffelex_token_use (ft);
17426 ffestp_file.rewrite.rewrite_spec[FFESTP_rewriteixFMT].u.expr = expr;
17427 if (ffelex_token_type (t) == FFELEX_typeCOMMA)
17428 return (ffelexHandler) ffestb_V0187_;
17429 return (ffelexHandler) ffestb_V01812_;
17430
17431 default:
17432 break;
17433 }
17434
17435 ffestb_subr_kill_rewrite_ ();
17436 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "REWRITE", t);
17437 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
17438 }
17439
17440
17441
17442
17443
17444
17445
17446
17447 static ffelexHandler
17448 ffestb_V0187_ (ffelexToken t)
17449 {
17450 ffestrGenio kw;
17451
17452 ffestb_local_.rewrite.label = FALSE;
17453
17454 switch (ffelex_token_type (t))
17455 {
17456 case FFELEX_typeNAME:
17457 kw = ffestr_genio (t);
17458 switch (kw)
17459 {
17460 case FFESTR_genioERR:
17461 ffestb_local_.rewrite.ix = FFESTP_rewriteixERR;
17462 ffestb_local_.rewrite.label = TRUE;
17463 break;
17464
17465 case FFESTR_genioFMT:
17466 ffestb_local_.rewrite.ix = FFESTP_rewriteixFMT;
17467 ffestb_local_.rewrite.left = FALSE;
17468 ffestb_local_.rewrite.context = FFEEXPR_contextFILEFORMAT;
17469 break;
17470
17471 case FFESTR_genioIOSTAT:
17472 ffestb_local_.rewrite.ix = FFESTP_rewriteixIOSTAT;
17473 ffestb_local_.rewrite.left = TRUE;
17474 ffestb_local_.rewrite.context = FFEEXPR_contextFILEINT;
17475 break;
17476
17477 case FFESTR_genioUNIT:
17478 ffestb_local_.rewrite.ix = FFESTP_rewriteixUNIT;
17479 ffestb_local_.rewrite.left = FALSE;
17480 ffestb_local_.rewrite.context = FFEEXPR_contextFILENUM;
17481 break;
17482
17483 default:
17484 goto bad;
17485 }
17486 if (ffestp_file.rewrite.rewrite_spec[ffestb_local_.rewrite.ix]
17487 .kw_or_val_present)
17488 break;
17489 ffestp_file.rewrite.rewrite_spec[ffestb_local_.rewrite.ix]
17490 .kw_or_val_present = TRUE;
17491 ffestp_file.rewrite.rewrite_spec[ffestb_local_.rewrite.ix]
17492 .kw_present = TRUE;
17493 ffestp_file.rewrite.rewrite_spec[ffestb_local_.rewrite.ix]
17494 .value_present = FALSE;
17495 ffestp_file.rewrite.rewrite_spec[ffestb_local_.rewrite.ix].value_is_label
17496 = ffestb_local_.rewrite.label;
17497 ffestp_file.rewrite.rewrite_spec[ffestb_local_.rewrite.ix].kw
17498 = ffelex_token_use (t);
17499 return (ffelexHandler) ffestb_V0188_;
17500
17501 default:
17502 break;
17503 }
17504
17505 bad:
17506 ffestb_subr_kill_rewrite_ ();
17507 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "REWRITE", t);
17508 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
17509 }
17510
17511
17512
17513
17514
17515
17516
17517
17518 static ffelexHandler
17519 ffestb_V0188_ (ffelexToken t)
17520 {
17521 switch (ffelex_token_type (t))
17522 {
17523 case FFELEX_typeEQUALS:
17524 ffesta_confirmed ();
17525 if (ffestb_local_.rewrite.label)
17526 return (ffelexHandler) ffestb_V01810_;
17527 if (ffestb_local_.rewrite.left)
17528 return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
17529 ffestb_local_.rewrite.context,
17530 (ffeexprCallback) ffestb_V0189_);
17531 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
17532 ffestb_local_.rewrite.context,
17533 (ffeexprCallback) ffestb_V0189_);
17534
17535 default:
17536 break;
17537 }
17538
17539 ffestb_subr_kill_rewrite_ ();
17540 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "REWRITE", t);
17541 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
17542 }
17543
17544
17545
17546
17547
17548
17549
17550 static ffelexHandler
17551 ffestb_V0189_ (ffelexToken ft, ffebld expr, ffelexToken t)
17552 {
17553 switch (ffelex_token_type (t))
17554 {
17555 case FFELEX_typeCOMMA:
17556 case FFELEX_typeCLOSE_PAREN:
17557 if (expr == NULL)
17558 if (ffestb_local_.rewrite.context == FFEEXPR_contextFILEFORMAT)
17559 ffestp_file.rewrite.rewrite_spec[ffestb_local_.rewrite.ix]
17560 .value_is_label = TRUE;
17561 else
17562 break;
17563 ffestp_file.rewrite.rewrite_spec[ffestb_local_.rewrite.ix].value_present
17564 = TRUE;
17565 ffestp_file.rewrite.rewrite_spec[ffestb_local_.rewrite.ix].value
17566 = ffelex_token_use (ft);
17567 ffestp_file.rewrite.rewrite_spec[ffestb_local_.rewrite.ix].u.expr = expr;
17568 if (ffelex_token_type (t) == FFELEX_typeCOMMA)
17569 return (ffelexHandler) ffestb_V0187_;
17570 return (ffelexHandler) ffestb_V01812_;
17571
17572 default:
17573 break;
17574 }
17575
17576 ffestb_subr_kill_rewrite_ ();
17577 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "REWRITE", t);
17578 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
17579 }
17580
17581
17582
17583
17584
17585
17586
17587 static ffelexHandler
17588 ffestb_V01810_ (ffelexToken t)
17589 {
17590 switch (ffelex_token_type (t))
17591 {
17592 case FFELEX_typeNUMBER:
17593 ffestp_file.rewrite.rewrite_spec[ffestb_local_.rewrite.ix].value_present
17594 = TRUE;
17595 ffestp_file.rewrite.rewrite_spec[ffestb_local_.rewrite.ix].value
17596 = ffelex_token_use (t);
17597 return (ffelexHandler) ffestb_V01811_;
17598
17599 default:
17600 break;
17601 }
17602
17603 ffestb_subr_kill_rewrite_ ();
17604 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "REWRITE", t);
17605 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
17606 }
17607
17608
17609
17610
17611
17612
17613
17614 static ffelexHandler
17615 ffestb_V01811_ (ffelexToken t)
17616 {
17617 switch (ffelex_token_type (t))
17618 {
17619 case FFELEX_typeCOMMA:
17620 return (ffelexHandler) ffestb_V0187_;
17621
17622 case FFELEX_typeCLOSE_PAREN:
17623 return (ffelexHandler) ffestb_V01812_;
17624
17625 default:
17626 break;
17627 }
17628
17629 ffestb_subr_kill_rewrite_ ();
17630 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "REWRITE", t);
17631 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
17632 }
17633
17634
17635
17636
17637
17638
17639
17640 static ffelexHandler
17641 ffestb_V01812_ (ffelexToken t)
17642 {
17643 switch (ffelex_token_type (t))
17644 {
17645 case FFELEX_typeEOS:
17646 case FFELEX_typeSEMICOLON:
17647 ffesta_confirmed ();
17648 if (!ffesta_is_inhibited ())
17649 {
17650 ffestc_V018_start ();
17651 ffestc_V018_finish ();
17652 }
17653 ffestb_subr_kill_rewrite_ ();
17654 return (ffelexHandler) ffesta_zero (t);
17655
17656 case FFELEX_typeNAME:
17657 case FFELEX_typeOPEN_PAREN:
17658 case FFELEX_typeCOMMA:
17659 ffesta_confirmed ();
17660 if (!ffesta_is_inhibited ())
17661 ffestc_V018_start ();
17662 ffestb_subr_kill_rewrite_ ();
17663
17664
17665
17666
17667 if (!ffe_is_pedantic () && (ffelex_token_type (t) == FFELEX_typeCOMMA))
17668 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
17669 FFEEXPR_contextIOLIST, (ffeexprCallback) ffestb_V01813_);
17670
17671 return (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
17672 FFEEXPR_contextIOLIST, (ffeexprCallback) ffestb_V01813_)))
17673 (t);
17674
17675 default:
17676 break;
17677 }
17678
17679 ffestb_subr_kill_rewrite_ ();
17680 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "REWRITE", t);
17681 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
17682 }
17683
17684
17685
17686
17687
17688
17689
17690 static ffelexHandler
17691 ffestb_V01813_ (ffelexToken ft, ffebld expr, ffelexToken t)
17692 {
17693 switch (ffelex_token_type (t))
17694 {
17695 case FFELEX_typeCOMMA:
17696 if (expr == NULL)
17697 break;
17698 if (!ffesta_is_inhibited ())
17699 ffestc_V018_item (expr, ft);
17700 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
17701 FFEEXPR_contextIOLIST, (ffeexprCallback) ffestb_V01813_);
17702
17703 case FFELEX_typeEOS:
17704 case FFELEX_typeSEMICOLON:
17705 if (expr == NULL)
17706 break;
17707 if (!ffesta_is_inhibited ())
17708 {
17709 ffestc_V018_item (expr, ft);
17710 ffestc_V018_finish ();
17711 }
17712 return (ffelexHandler) ffesta_zero (t);
17713
17714 default:
17715 break;
17716 }
17717
17718 if (!ffesta_is_inhibited ())
17719 ffestc_V018_finish ();
17720 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "REWRITE", t);
17721 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
17722 }
17723
17724
17725
17726
17727
17728
17729
17730
17731 ffelexHandler
17732 ffestb_V019 (ffelexToken t)
17733 {
17734 ffelexHandler next;
17735 ffestpAcceptIx ix;
17736
17737 switch (ffelex_token_type (ffesta_tokens[0]))
17738 {
17739 case FFELEX_typeNAME:
17740 if (ffesta_first_kw != FFESTR_firstACCEPT)
17741 goto bad_0;
17742 switch (ffelex_token_type (t))
17743 {
17744 case FFELEX_typeCOMMA:
17745 case FFELEX_typeCOLONCOLON:
17746 case FFELEX_typeEOS:
17747 case FFELEX_typeSEMICOLON:
17748 ffesta_confirmed ();
17749 goto bad_1;
17750
17751 case FFELEX_typeEQUALS:
17752 case FFELEX_typePOINTS:
17753 case FFELEX_typeCOLON:
17754 goto bad_1;
17755
17756 case FFELEX_typeNAME:
17757 case FFELEX_typeNUMBER:
17758 ffesta_confirmed ();
17759 break;
17760
17761 default:
17762 break;
17763 }
17764
17765 for (ix = 0; ix < FFESTP_acceptix; ++ix)
17766 ffestp_file.accept.accept_spec[ix].kw_or_val_present = FALSE;
17767 return (ffelexHandler) (*((ffelexHandler)
17768 ffeexpr_rhs (ffesta_output_pool,
17769 FFEEXPR_contextFILEFORMATNML, (ffeexprCallback) ffestb_V0191_)))
17770 (t);
17771
17772 case FFELEX_typeNAMES:
17773 if (ffesta_first_kw != FFESTR_firstACCEPT)
17774 goto bad_0;
17775 switch (ffelex_token_type (t))
17776 {
17777 case FFELEX_typeEOS:
17778 case FFELEX_typeSEMICOLON:
17779 case FFELEX_typeCOMMA:
17780 ffesta_confirmed ();
17781 if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlACCEPT)
17782 break;
17783 goto bad_1;
17784
17785 case FFELEX_typeCOLONCOLON:
17786 ffesta_confirmed ();
17787 goto bad_1;
17788
17789 case FFELEX_typeEQUALS:
17790 case FFELEX_typePOINTS:
17791 case FFELEX_typeCOLON:
17792 goto bad_1;
17793
17794 default:
17795 break;
17796 }
17797 for (ix = 0; ix < FFESTP_acceptix; ++ix)
17798 ffestp_file.accept.accept_spec[ix].kw_or_val_present = FALSE;
17799 next = (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
17800 FFEEXPR_contextFILEFORMATNML, (ffeexprCallback) ffestb_V0191_);
17801 next = (ffelexHandler) ffelex_splice_tokens (next, ffesta_tokens[0],
17802 FFESTR_firstlACCEPT);
17803 if (next == NULL)
17804 return (ffelexHandler) ffelex_swallow_tokens (t,
17805 (ffelexHandler) ffesta_zero);
17806 return (ffelexHandler) (*next) (t);
17807
17808 default:
17809 goto bad_0;
17810 }
17811
17812 bad_0:
17813 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ACCEPT", ffesta_tokens[0]);
17814 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
17815
17816 bad_1:
17817 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ACCEPT", t);
17818 return (ffelexHandler) ffelex_swallow_tokens (t,
17819 (ffelexHandler) ffesta_zero);
17820 }
17821
17822
17823
17824
17825
17826
17827
17828 static ffelexHandler
17829 ffestb_V0191_ (ffelexToken ft, ffebld expr, ffelexToken t)
17830 {
17831 switch (ffelex_token_type (t))
17832 {
17833 case FFELEX_typeEOS:
17834 case FFELEX_typeSEMICOLON:
17835 case FFELEX_typeCOMMA:
17836 ffesta_confirmed ();
17837 ffestp_file.accept.accept_spec[FFESTP_acceptixFORMAT].kw_or_val_present
17838 = TRUE;
17839 ffestp_file.accept.accept_spec[FFESTP_acceptixFORMAT].kw_present = FALSE;
17840 ffestp_file.accept.accept_spec[FFESTP_acceptixFORMAT].value_present = TRUE;
17841 ffestp_file.accept.accept_spec[FFESTP_acceptixFORMAT].value_is_label
17842 = (expr == NULL);
17843 ffestp_file.accept.accept_spec[FFESTP_acceptixFORMAT].value
17844 = ffelex_token_use (ft);
17845 ffestp_file.accept.accept_spec[FFESTP_acceptixFORMAT].u.expr = expr;
17846 if (!ffesta_is_inhibited ())
17847 ffestc_V019_start ();
17848 ffestb_subr_kill_accept_ ();
17849 if (ffelex_token_type (t) == FFELEX_typeCOMMA)
17850 return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
17851 FFEEXPR_contextIOLIST,
17852 (ffeexprCallback) ffestb_V0192_);
17853 if (!ffesta_is_inhibited ())
17854 ffestc_V019_finish ();
17855 return (ffelexHandler) ffesta_zero (t);
17856
17857 default:
17858 break;
17859 }
17860
17861 ffestb_subr_kill_accept_ ();
17862 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ACCEPT", t);
17863 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
17864 }
17865
17866
17867
17868
17869
17870
17871
17872 static ffelexHandler
17873 ffestb_V0192_ (ffelexToken ft, ffebld expr, ffelexToken t)
17874 {
17875 switch (ffelex_token_type (t))
17876 {
17877 case FFELEX_typeCOMMA:
17878 if (expr == NULL)
17879 break;
17880 if (!ffesta_is_inhibited ())
17881 ffestc_V019_item (expr, ft);
17882 return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
17883 FFEEXPR_contextIOLIST,
17884 (ffeexprCallback) ffestb_V0192_);
17885
17886 case FFELEX_typeEOS:
17887 case FFELEX_typeSEMICOLON:
17888 if (expr == NULL)
17889 break;
17890 if (!ffesta_is_inhibited ())
17891 {
17892 ffestc_V019_item (expr, ft);
17893 ffestc_V019_finish ();
17894 }
17895 return (ffelexHandler) ffesta_zero (t);
17896
17897 default:
17898 break;
17899 }
17900
17901 if (!ffesta_is_inhibited ())
17902 ffestc_V019_finish ();
17903 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ACCEPT", t);
17904 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
17905 }
17906
17907 #endif
17908
17909
17910
17911
17912
17913
17914
17915 ffelexHandler
17916 ffestb_V020 (ffelexToken t)
17917 {
17918 ffeTokenLength i;
17919 const char *p;
17920 ffelexHandler next;
17921 ffestpTypeIx ix;
17922
17923 switch (ffelex_token_type (ffesta_tokens[0]))
17924 {
17925 case FFELEX_typeNAME:
17926 if (ffesta_first_kw != FFESTR_firstTYPE)
17927 goto bad_0;
17928 switch (ffelex_token_type (t))
17929 {
17930 case FFELEX_typeCOLONCOLON:
17931 case FFELEX_typeEOS:
17932 case FFELEX_typeSEMICOLON:
17933 ffesta_confirmed ();
17934 goto bad_1;
17935
17936 case FFELEX_typeEQUALS:
17937 case FFELEX_typePOINTS:
17938 case FFELEX_typeCOLON:
17939 case FFELEX_typeCOMMA:
17940
17941 goto bad_1;
17942
17943 case FFELEX_typeNUMBER:
17944 ffesta_confirmed ();
17945 break;
17946
17947 case FFELEX_typeNAME:
17948 default:
17949 break;
17950 }
17951
17952 for (ix = 0; ix < FFESTP_typeix; ++ix)
17953 ffestp_file.type.type_spec[ix].kw_or_val_present = FALSE;
17954 return (ffelexHandler) (*((ffelexHandler)
17955 ffeexpr_rhs (ffesta_output_pool,
17956 FFEEXPR_contextFILEFORMATNML, (ffeexprCallback) ffestb_V0201_)))
17957 (t);
17958
17959 case FFELEX_typeNAMES:
17960 if (ffesta_first_kw != FFESTR_firstTYPE)
17961 goto bad_0;
17962 switch (ffelex_token_type (t))
17963 {
17964 case FFELEX_typeEOS:
17965 case FFELEX_typeSEMICOLON:
17966 case FFELEX_typeCOMMA:
17967 if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlTYPE)
17968 break;
17969 goto bad_1;
17970
17971 case FFELEX_typeCOLONCOLON:
17972 ffesta_confirmed ();
17973 goto bad_1;
17974
17975 case FFELEX_typeOPEN_PAREN:
17976 if (ffelex_token_length (ffesta_tokens[0]) == FFESTR_firstlTYPE)
17977 break;
17978 goto bad_1;
17979
17980 case FFELEX_typeEQUALS:
17981 case FFELEX_typePOINTS:
17982 case FFELEX_typeCOLON:
17983 goto bad_1;
17984
17985 default:
17986 break;
17987 }
17988 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlTYPE);
17989 if (ISDIGIT (*p))
17990 ffesta_confirmed ();
17991 for (ix = 0; ix < FFESTP_typeix; ++ix)
17992 ffestp_file.type.type_spec[ix].kw_or_val_present = FALSE;
17993 next = (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
17994 FFEEXPR_contextFILEFORMATNML, (ffeexprCallback) ffestb_V0201_);
17995 next = (ffelexHandler) ffelex_splice_tokens (next, ffesta_tokens[0],
17996 FFESTR_firstlTYPE);
17997 if (next == NULL)
17998 return (ffelexHandler) ffelex_swallow_tokens (t,
17999 (ffelexHandler) ffesta_zero);
18000 return (ffelexHandler) (*next) (t);
18001
18002 default:
18003 goto bad_0;
18004 }
18005
18006 bad_0:
18007 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "TYPE I/O", ffesta_tokens[0]);
18008 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
18009
18010 bad_1:
18011 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "TYPE I/O", t);
18012 return (ffelexHandler) ffelex_swallow_tokens (t,
18013 (ffelexHandler) ffesta_zero);
18014 }
18015
18016
18017
18018
18019
18020
18021
18022 static ffelexHandler
18023 ffestb_V0201_ (ffelexToken ft, ffebld expr, ffelexToken t)
18024 {
18025 bool comma = TRUE;
18026
18027 switch (ffelex_token_type (t))
18028 {
18029 case FFELEX_typeEOS:
18030 case FFELEX_typeSEMICOLON:
18031 if (!ffe_is_vxt () && (expr != NULL)
18032 && (ffebld_op (expr) == FFEBLD_opSYMTER))
18033 break;
18034 comma = FALSE;
18035
18036 case FFELEX_typeCOMMA:
18037 if (!ffe_is_vxt () && comma && (expr != NULL)
18038 && (ffebld_op (expr) == FFEBLD_opPAREN)
18039 && (ffebld_op (ffebld_left (expr)) == FFEBLD_opSYMTER))
18040 break;
18041 ffesta_confirmed ();
18042 ffestp_file.type.type_spec[FFESTP_typeixFORMAT].kw_or_val_present
18043 = TRUE;
18044 ffestp_file.type.type_spec[FFESTP_typeixFORMAT].kw_present = FALSE;
18045 ffestp_file.type.type_spec[FFESTP_typeixFORMAT].value_present = TRUE;
18046 ffestp_file.type.type_spec[FFESTP_typeixFORMAT].value_is_label
18047 = (expr == NULL);
18048 ffestp_file.type.type_spec[FFESTP_typeixFORMAT].value
18049 = ffelex_token_use (ft);
18050 ffestp_file.type.type_spec[FFESTP_typeixFORMAT].u.expr = expr;
18051 if (!ffesta_is_inhibited ())
18052 ffestc_V020_start ();
18053 ffestb_subr_kill_type_ ();
18054 if (ffelex_token_type (t) == FFELEX_typeCOMMA)
18055 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
18056 FFEEXPR_contextIOLIST, (ffeexprCallback) ffestb_V0202_);
18057 if (!ffesta_is_inhibited ())
18058 ffestc_V020_finish ();
18059 return (ffelexHandler) ffesta_zero (t);
18060
18061 default:
18062 break;
18063 }
18064
18065 ffestb_subr_kill_type_ ();
18066 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "TYPE I/O", t);
18067 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
18068 }
18069
18070
18071
18072
18073
18074
18075
18076 static ffelexHandler
18077 ffestb_V0202_ (ffelexToken ft, ffebld expr, ffelexToken t)
18078 {
18079 switch (ffelex_token_type (t))
18080 {
18081 case FFELEX_typeCOMMA:
18082 if (expr == NULL)
18083 break;
18084 if (!ffesta_is_inhibited ())
18085 ffestc_V020_item (expr, ft);
18086 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
18087 FFEEXPR_contextIOLIST, (ffeexprCallback) ffestb_V0202_);
18088
18089 case FFELEX_typeEOS:
18090 case FFELEX_typeSEMICOLON:
18091 if (expr == NULL)
18092 break;
18093 if (!ffesta_is_inhibited ())
18094 {
18095 ffestc_V020_item (expr, ft);
18096 ffestc_V020_finish ();
18097 }
18098 return (ffelexHandler) ffesta_zero (t);
18099
18100 default:
18101 break;
18102 }
18103
18104 if (!ffesta_is_inhibited ())
18105 ffestc_V020_finish ();
18106 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "TYPE I/O", t);
18107 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
18108 }
18109
18110
18111
18112
18113
18114
18115
18116
18117 #if FFESTR_VXT
18118 ffelexHandler
18119 ffestb_V021 (ffelexToken t)
18120 {
18121 ffestpDeleteIx ix;
18122
18123 switch (ffelex_token_type (ffesta_tokens[0]))
18124 {
18125 case FFELEX_typeNAME:
18126 if (ffesta_first_kw != FFESTR_firstDELETE)
18127 goto bad_0;
18128 break;
18129
18130 case FFELEX_typeNAMES:
18131 if (ffesta_first_kw != FFESTR_firstDELETE)
18132 goto bad_0;
18133 if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlDELETE)
18134 goto bad_0;
18135 break;
18136
18137 default:
18138 goto bad_0;
18139 }
18140
18141 switch (ffelex_token_type (t))
18142 {
18143 case FFELEX_typeOPEN_PAREN:
18144 break;
18145
18146 case FFELEX_typeEOS:
18147 case FFELEX_typeSEMICOLON:
18148 case FFELEX_typeCOMMA:
18149 case FFELEX_typeCOLONCOLON:
18150 ffesta_confirmed ();
18151 goto bad_1;
18152
18153 default:
18154 goto bad_1;
18155 }
18156
18157 for (ix = 0; ix < FFESTP_deleteix; ++ix)
18158 ffestp_file.delete.delete_spec[ix].kw_or_val_present = FALSE;
18159
18160 return (ffelexHandler) ffestb_V0211_;
18161
18162 bad_0:
18163 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DELETE", ffesta_tokens[0]);
18164 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
18165
18166 bad_1:
18167 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DELETE", t);
18168 return (ffelexHandler) ffelex_swallow_tokens (t,
18169 (ffelexHandler) ffesta_zero);
18170 }
18171
18172
18173
18174
18175
18176
18177
18178 static ffelexHandler
18179 ffestb_V0211_ (ffelexToken t)
18180 {
18181 switch (ffelex_token_type (t))
18182 {
18183 case FFELEX_typeNAME:
18184 ffesta_tokens[1] = ffelex_token_use (t);
18185 return (ffelexHandler) ffestb_V0212_;
18186
18187 default:
18188 return (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
18189 FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_V0213_)))
18190 (t);
18191 }
18192 }
18193
18194
18195
18196
18197
18198
18199
18200
18201 static ffelexHandler
18202 ffestb_V0212_ (ffelexToken t)
18203 {
18204 ffelexHandler next;
18205 ffelexToken nt;
18206
18207 switch (ffelex_token_type (t))
18208 {
18209 case FFELEX_typeEQUALS:
18210 nt = ffesta_tokens[1];
18211 next = (ffelexHandler) ffestb_V0214_ (nt);
18212 ffelex_token_kill (nt);
18213 return (ffelexHandler) (*next) (t);
18214
18215 default:
18216 next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
18217 FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_V0213_)))
18218 (ffesta_tokens[1]);
18219 ffelex_token_kill (ffesta_tokens[1]);
18220 return (ffelexHandler) (*next) (t);
18221 }
18222 }
18223
18224
18225
18226
18227
18228
18229
18230 static ffelexHandler
18231 ffestb_V0213_ (ffelexToken ft, ffebld expr, ffelexToken t)
18232 {
18233 switch (ffelex_token_type (t))
18234 {
18235 case FFELEX_typeCOMMA:
18236 case FFELEX_typeCLOSE_PAREN:
18237 if (expr == NULL)
18238 break;
18239 ffestp_file.delete.delete_spec[FFESTP_deleteixUNIT].kw_or_val_present
18240 = TRUE;
18241 ffestp_file.delete.delete_spec[FFESTP_deleteixUNIT].kw_present = FALSE;
18242 ffestp_file.delete.delete_spec[FFESTP_deleteixUNIT].value_present = TRUE;
18243 ffestp_file.delete.delete_spec[FFESTP_deleteixUNIT].value_is_label
18244 = FALSE;
18245 ffestp_file.delete.delete_spec[FFESTP_deleteixUNIT].value
18246 = ffelex_token_use (ft);
18247 ffestp_file.delete.delete_spec[FFESTP_deleteixUNIT].u.expr = expr;
18248 if (ffelex_token_type (t) == FFELEX_typeCOMMA)
18249 return (ffelexHandler) ffestb_V0214_;
18250 return (ffelexHandler) ffestb_V0219_;
18251
18252 default:
18253 break;
18254 }
18255
18256 ffestb_subr_kill_delete_ ();
18257 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DELETE", t);
18258 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
18259 }
18260
18261
18262
18263
18264
18265
18266
18267 static ffelexHandler
18268 ffestb_V0214_ (ffelexToken t)
18269 {
18270 ffestrGenio kw;
18271
18272 ffestb_local_.delete.label = FALSE;
18273
18274 switch (ffelex_token_type (t))
18275 {
18276 case FFELEX_typeNAME:
18277 kw = ffestr_genio (t);
18278 switch (kw)
18279 {
18280 case FFESTR_genioERR:
18281 ffestb_local_.delete.ix = FFESTP_deleteixERR;
18282 ffestb_local_.delete.label = TRUE;
18283 break;
18284
18285 case FFESTR_genioIOSTAT:
18286 ffestb_local_.delete.ix = FFESTP_deleteixIOSTAT;
18287 ffestb_local_.delete.left = TRUE;
18288 ffestb_local_.delete.context = FFEEXPR_contextFILEINT;
18289 break;
18290
18291 case FFESTR_genioREC:
18292 ffestb_local_.delete.ix = FFESTP_deleteixREC;
18293 ffestb_local_.delete.left = FALSE;
18294 ffestb_local_.delete.context = FFEEXPR_contextFILENUM;
18295 break;
18296
18297 case FFESTR_genioUNIT:
18298 ffestb_local_.delete.ix = FFESTP_deleteixUNIT;
18299 ffestb_local_.delete.left = FALSE;
18300 ffestb_local_.delete.context = FFEEXPR_contextFILENUM;
18301 break;
18302
18303 default:
18304 goto bad;
18305 }
18306 if (ffestp_file.delete.delete_spec[ffestb_local_.delete.ix]
18307 .kw_or_val_present)
18308 break;
18309 ffestp_file.delete.delete_spec[ffestb_local_.delete.ix]
18310 .kw_or_val_present = TRUE;
18311 ffestp_file.delete.delete_spec[ffestb_local_.delete.ix]
18312 .kw_present = TRUE;
18313 ffestp_file.delete.delete_spec[ffestb_local_.delete.ix]
18314 .value_present = FALSE;
18315 ffestp_file.delete.delete_spec[ffestb_local_.delete.ix].value_is_label
18316 = ffestb_local_.delete.label;
18317 ffestp_file.delete.delete_spec[ffestb_local_.delete.ix].kw
18318 = ffelex_token_use (t);
18319 return (ffelexHandler) ffestb_V0215_;
18320
18321 default:
18322 break;
18323 }
18324
18325 bad:
18326 ffestb_subr_kill_delete_ ();
18327 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DELETE", t);
18328 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
18329 }
18330
18331
18332
18333
18334
18335
18336
18337 static ffelexHandler
18338 ffestb_V0215_ (ffelexToken t)
18339 {
18340 switch (ffelex_token_type (t))
18341 {
18342 case FFELEX_typeEQUALS:
18343 ffesta_confirmed ();
18344 if (ffestb_local_.delete.label)
18345 return (ffelexHandler) ffestb_V0217_;
18346 if (ffestb_local_.delete.left)
18347 return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
18348 ffestb_local_.delete.context,
18349 (ffeexprCallback) ffestb_V0216_);
18350 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
18351 ffestb_local_.delete.context, (ffeexprCallback) ffestb_V0216_);
18352
18353 default:
18354 break;
18355 }
18356
18357 ffestb_subr_kill_delete_ ();
18358 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DELETE", t);
18359 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
18360 }
18361
18362
18363
18364
18365
18366
18367
18368 static ffelexHandler
18369 ffestb_V0216_ (ffelexToken ft, ffebld expr, ffelexToken t)
18370 {
18371 switch (ffelex_token_type (t))
18372 {
18373 case FFELEX_typeCOMMA:
18374 case FFELEX_typeCLOSE_PAREN:
18375 if (expr == NULL)
18376 break;
18377 ffestp_file.delete.delete_spec[ffestb_local_.delete.ix].value_present
18378 = TRUE;
18379 ffestp_file.delete.delete_spec[ffestb_local_.delete.ix].value
18380 = ffelex_token_use (ft);
18381 ffestp_file.delete.delete_spec[ffestb_local_.delete.ix].u.expr = expr;
18382 if (ffelex_token_type (t) == FFELEX_typeCOMMA)
18383 return (ffelexHandler) ffestb_V0214_;
18384 return (ffelexHandler) ffestb_V0219_;
18385
18386 default:
18387 break;
18388 }
18389
18390 ffestb_subr_kill_delete_ ();
18391 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DELETE", t);
18392 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
18393 }
18394
18395
18396
18397
18398
18399
18400
18401 static ffelexHandler
18402 ffestb_V0217_ (ffelexToken t)
18403 {
18404 switch (ffelex_token_type (t))
18405 {
18406 case FFELEX_typeNUMBER:
18407 ffestp_file.delete.delete_spec[ffestb_local_.delete.ix].value_present
18408 = TRUE;
18409 ffestp_file.delete.delete_spec[ffestb_local_.delete.ix].value
18410 = ffelex_token_use (t);
18411 return (ffelexHandler) ffestb_V0218_;
18412
18413 default:
18414 break;
18415 }
18416
18417 ffestb_subr_kill_delete_ ();
18418 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DELETE", t);
18419 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
18420 }
18421
18422
18423
18424
18425
18426
18427
18428 static ffelexHandler
18429 ffestb_V0218_ (ffelexToken t)
18430 {
18431 switch (ffelex_token_type (t))
18432 {
18433 case FFELEX_typeCOMMA:
18434 return (ffelexHandler) ffestb_V0214_;
18435
18436 case FFELEX_typeCLOSE_PAREN:
18437 return (ffelexHandler) ffestb_V0219_;
18438
18439 default:
18440 break;
18441 }
18442
18443 ffestb_subr_kill_delete_ ();
18444 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DELETE", t);
18445 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
18446 }
18447
18448
18449
18450
18451
18452
18453
18454 static ffelexHandler
18455 ffestb_V0219_ (ffelexToken t)
18456 {
18457 switch (ffelex_token_type (t))
18458 {
18459 case FFELEX_typeEOS:
18460 case FFELEX_typeSEMICOLON:
18461 ffesta_confirmed ();
18462 if (!ffesta_is_inhibited ())
18463 ffestc_V021 ();
18464 ffestb_subr_kill_delete_ ();
18465 return (ffelexHandler) ffesta_zero (t);
18466
18467 default:
18468 break;
18469 }
18470
18471 ffestb_subr_kill_delete_ ();
18472 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DELETE", t);
18473 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
18474 }
18475
18476
18477
18478
18479
18480
18481
18482
18483 ffelexHandler
18484 ffestb_V026 (ffelexToken t)
18485 {
18486 ffestpFindIx ix;
18487
18488 switch (ffelex_token_type (ffesta_tokens[0]))
18489 {
18490 case FFELEX_typeNAME:
18491 if (ffesta_first_kw != FFESTR_firstFIND)
18492 goto bad_0;
18493 break;
18494
18495 case FFELEX_typeNAMES:
18496 if (ffesta_first_kw != FFESTR_firstFIND)
18497 goto bad_0;
18498 if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlFIND)
18499 goto bad_0;
18500 break;
18501
18502 default:
18503 goto bad_0;
18504 }
18505
18506 switch (ffelex_token_type (t))
18507 {
18508 case FFELEX_typeOPEN_PAREN:
18509 break;
18510
18511 case FFELEX_typeEOS:
18512 case FFELEX_typeSEMICOLON:
18513 case FFELEX_typeCOMMA:
18514 case FFELEX_typeCOLONCOLON:
18515 ffesta_confirmed ();
18516 goto bad_1;
18517
18518 default:
18519 goto bad_1;
18520 }
18521
18522 for (ix = 0; ix < FFESTP_findix; ++ix)
18523 ffestp_file.find.find_spec[ix].kw_or_val_present = FALSE;
18524
18525 return (ffelexHandler) ffestb_V0261_;
18526
18527 bad_0:
18528 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FIND", ffesta_tokens[0]);
18529 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
18530
18531 bad_1:
18532 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FIND", t);
18533 return (ffelexHandler) ffelex_swallow_tokens (t,
18534 (ffelexHandler) ffesta_zero);
18535 }
18536
18537
18538
18539
18540
18541
18542
18543 static ffelexHandler
18544 ffestb_V0261_ (ffelexToken t)
18545 {
18546 switch (ffelex_token_type (t))
18547 {
18548 case FFELEX_typeNAME:
18549 ffesta_tokens[1] = ffelex_token_use (t);
18550 return (ffelexHandler) ffestb_V0262_;
18551
18552 default:
18553 return (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
18554 FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_V0263_)))
18555 (t);
18556 }
18557 }
18558
18559
18560
18561
18562
18563
18564
18565
18566 static ffelexHandler
18567 ffestb_V0262_ (ffelexToken t)
18568 {
18569 ffelexHandler next;
18570 ffelexToken nt;
18571
18572 switch (ffelex_token_type (t))
18573 {
18574 case FFELEX_typeEQUALS:
18575 nt = ffesta_tokens[1];
18576 next = (ffelexHandler) ffestb_V0264_ (nt);
18577 ffelex_token_kill (nt);
18578 return (ffelexHandler) (*next) (t);
18579
18580 default:
18581 next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
18582 FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_V0263_)))
18583 (ffesta_tokens[1]);
18584 ffelex_token_kill (ffesta_tokens[1]);
18585 return (ffelexHandler) (*next) (t);
18586 }
18587 }
18588
18589
18590
18591
18592
18593
18594
18595 static ffelexHandler
18596 ffestb_V0263_ (ffelexToken ft, ffebld expr, ffelexToken t)
18597 {
18598 switch (ffelex_token_type (t))
18599 {
18600 case FFELEX_typeCOMMA:
18601 case FFELEX_typeCLOSE_PAREN:
18602 if (expr == NULL)
18603 break;
18604 ffestp_file.find.find_spec[FFESTP_findixUNIT].kw_or_val_present
18605 = TRUE;
18606 ffestp_file.find.find_spec[FFESTP_findixUNIT].kw_present = FALSE;
18607 ffestp_file.find.find_spec[FFESTP_findixUNIT].value_present = TRUE;
18608 ffestp_file.find.find_spec[FFESTP_findixUNIT].value_is_label
18609 = FALSE;
18610 ffestp_file.find.find_spec[FFESTP_findixUNIT].value
18611 = ffelex_token_use (ft);
18612 ffestp_file.find.find_spec[FFESTP_findixUNIT].u.expr = expr;
18613 if (ffelex_token_type (t) == FFELEX_typeCOMMA)
18614 return (ffelexHandler) ffestb_V0264_;
18615 return (ffelexHandler) ffestb_V0269_;
18616
18617 default:
18618 break;
18619 }
18620
18621 ffestb_subr_kill_find_ ();
18622 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FIND", t);
18623 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
18624 }
18625
18626
18627
18628
18629
18630
18631
18632 static ffelexHandler
18633 ffestb_V0264_ (ffelexToken t)
18634 {
18635 ffestrGenio kw;
18636
18637 ffestb_local_.find.label = FALSE;
18638
18639 switch (ffelex_token_type (t))
18640 {
18641 case FFELEX_typeNAME:
18642 kw = ffestr_genio (t);
18643 switch (kw)
18644 {
18645 case FFESTR_genioERR:
18646 ffestb_local_.find.ix = FFESTP_findixERR;
18647 ffestb_local_.find.label = TRUE;
18648 break;
18649
18650 case FFESTR_genioIOSTAT:
18651 ffestb_local_.find.ix = FFESTP_findixIOSTAT;
18652 ffestb_local_.find.left = TRUE;
18653 ffestb_local_.find.context = FFEEXPR_contextFILEINT;
18654 break;
18655
18656 case FFESTR_genioREC:
18657 ffestb_local_.find.ix = FFESTP_findixREC;
18658 ffestb_local_.find.left = FALSE;
18659 ffestb_local_.find.context = FFEEXPR_contextFILENUM;
18660 break;
18661
18662 case FFESTR_genioUNIT:
18663 ffestb_local_.find.ix = FFESTP_findixUNIT;
18664 ffestb_local_.find.left = FALSE;
18665 ffestb_local_.find.context = FFEEXPR_contextFILENUM;
18666 break;
18667
18668 default:
18669 goto bad;
18670 }
18671 if (ffestp_file.find.find_spec[ffestb_local_.find.ix]
18672 .kw_or_val_present)
18673 break;
18674 ffestp_file.find.find_spec[ffestb_local_.find.ix]
18675 .kw_or_val_present = TRUE;
18676 ffestp_file.find.find_spec[ffestb_local_.find.ix]
18677 .kw_present = TRUE;
18678 ffestp_file.find.find_spec[ffestb_local_.find.ix]
18679 .value_present = FALSE;
18680 ffestp_file.find.find_spec[ffestb_local_.find.ix].value_is_label
18681 = ffestb_local_.find.label;
18682 ffestp_file.find.find_spec[ffestb_local_.find.ix].kw
18683 = ffelex_token_use (t);
18684 return (ffelexHandler) ffestb_V0265_;
18685
18686 default:
18687 break;
18688 }
18689
18690 bad:
18691 ffestb_subr_kill_find_ ();
18692 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FIND", t);
18693 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
18694 }
18695
18696
18697
18698
18699
18700
18701
18702 static ffelexHandler
18703 ffestb_V0265_ (ffelexToken t)
18704 {
18705 switch (ffelex_token_type (t))
18706 {
18707 case FFELEX_typeEQUALS:
18708 ffesta_confirmed ();
18709 if (ffestb_local_.find.label)
18710 return (ffelexHandler) ffestb_V0267_;
18711 if (ffestb_local_.find.left)
18712 return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
18713 ffestb_local_.find.context,
18714 (ffeexprCallback) ffestb_V0266_);
18715 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
18716 ffestb_local_.find.context,
18717 (ffeexprCallback) ffestb_V0266_);
18718
18719 default:
18720 break;
18721 }
18722
18723 ffestb_subr_kill_find_ ();
18724 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FIND", t);
18725 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
18726 }
18727
18728
18729
18730
18731
18732
18733
18734 static ffelexHandler
18735 ffestb_V0266_ (ffelexToken ft, ffebld expr, ffelexToken t)
18736 {
18737 switch (ffelex_token_type (t))
18738 {
18739 case FFELEX_typeCOMMA:
18740 case FFELEX_typeCLOSE_PAREN:
18741 if (expr == NULL)
18742 break;
18743 ffestp_file.find.find_spec[ffestb_local_.find.ix].value_present
18744 = TRUE;
18745 ffestp_file.find.find_spec[ffestb_local_.find.ix].value
18746 = ffelex_token_use (ft);
18747 ffestp_file.find.find_spec[ffestb_local_.find.ix].u.expr = expr;
18748 if (ffelex_token_type (t) == FFELEX_typeCOMMA)
18749 return (ffelexHandler) ffestb_V0264_;
18750 return (ffelexHandler) ffestb_V0269_;
18751
18752 default:
18753 break;
18754 }
18755
18756 ffestb_subr_kill_find_ ();
18757 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FIND", t);
18758 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
18759 }
18760
18761
18762
18763
18764
18765
18766
18767 static ffelexHandler
18768 ffestb_V0267_ (ffelexToken t)
18769 {
18770 switch (ffelex_token_type (t))
18771 {
18772 case FFELEX_typeNUMBER:
18773 ffestp_file.find.find_spec[ffestb_local_.find.ix].value_present
18774 = TRUE;
18775 ffestp_file.find.find_spec[ffestb_local_.find.ix].value
18776 = ffelex_token_use (t);
18777 return (ffelexHandler) ffestb_V0268_;
18778
18779 default:
18780 break;
18781 }
18782
18783 ffestb_subr_kill_find_ ();
18784 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FIND", t);
18785 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
18786 }
18787
18788
18789
18790
18791
18792
18793
18794 static ffelexHandler
18795 ffestb_V0268_ (ffelexToken t)
18796 {
18797 switch (ffelex_token_type (t))
18798 {
18799 case FFELEX_typeCOMMA:
18800 return (ffelexHandler) ffestb_V0264_;
18801
18802 case FFELEX_typeCLOSE_PAREN:
18803 return (ffelexHandler) ffestb_V0269_;
18804
18805 default:
18806 break;
18807 }
18808
18809 ffestb_subr_kill_find_ ();
18810 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FIND", t);
18811 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
18812 }
18813
18814
18815
18816
18817
18818
18819
18820 static ffelexHandler
18821 ffestb_V0269_ (ffelexToken t)
18822 {
18823 switch (ffelex_token_type (t))
18824 {
18825 case FFELEX_typeEOS:
18826 case FFELEX_typeSEMICOLON:
18827 ffesta_confirmed ();
18828 if (!ffesta_is_inhibited ())
18829 ffestc_V026 ();
18830 ffestb_subr_kill_find_ ();
18831 return (ffelexHandler) ffesta_zero (t);
18832
18833 default:
18834 break;
18835 }
18836
18837 ffestb_subr_kill_find_ ();
18838 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FIND", t);
18839 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
18840 }
18841
18842 #endif
18843
18844
18845
18846
18847
18848
18849
18850 #if FFESTR_F90
18851 ffelexHandler
18852 ffestb_dimlist (ffelexToken t)
18853 {
18854 ffeTokenLength i;
18855 const char *p;
18856 ffelexToken nt;
18857 ffelexHandler next;
18858
18859 switch (ffelex_token_type (ffesta_tokens[0]))
18860 {
18861 case FFELEX_typeNAME:
18862 switch (ffelex_token_type (t))
18863 {
18864 case FFELEX_typeCOMMA:
18865 case FFELEX_typeEOS:
18866 case FFELEX_typeSEMICOLON:
18867 ffesta_confirmed ();
18868 goto bad_1;
18869
18870 default:
18871 goto bad_1;
18872
18873 case FFELEX_typeCOLONCOLON:
18874 ffesta_confirmed ();
18875 if (!ffesta_is_inhibited ())
18876 {
18877 switch (ffesta_first_kw)
18878 {
18879 case FFESTR_firstALLOCATABLE:
18880 ffestc_R525_start ();
18881 break;
18882
18883 case FFESTR_firstPOINTER:
18884 ffestc_R526_start ();
18885 break;
18886
18887 case FFESTR_firstTARGET:
18888 ffestc_R527_start ();
18889 break;
18890
18891 default:
18892 assert (FALSE);
18893 }
18894 }
18895 ffestb_local_.dimlist.started = TRUE;
18896 return (ffelexHandler) ffestb_dimlist1_;
18897
18898 case FFELEX_typeNAME:
18899 ffesta_confirmed ();
18900 if (!ffesta_is_inhibited ())
18901 {
18902 switch (ffesta_first_kw)
18903 {
18904 case FFESTR_firstALLOCATABLE:
18905 ffestc_R525_start ();
18906 break;
18907
18908 case FFESTR_firstPOINTER:
18909 ffestc_R526_start ();
18910 break;
18911
18912 case FFESTR_firstTARGET:
18913 ffestc_R527_start ();
18914 break;
18915
18916 default:
18917 assert (FALSE);
18918 }
18919 }
18920 ffestb_local_.dimlist.started = TRUE;
18921 return (ffelexHandler) ffestb_dimlist1_ (t);
18922 }
18923
18924 case FFELEX_typeNAMES:
18925 p = ffelex_token_text (ffesta_tokens[0]) + (i = ffestb_args.dimlist.len);
18926 switch (ffelex_token_type (t))
18927 {
18928 default:
18929 goto bad_1;
18930
18931 case FFELEX_typeEOS:
18932 case FFELEX_typeSEMICOLON:
18933 case FFELEX_typeCOMMA:
18934 ffesta_confirmed ();
18935 if (!ffesrc_is_name_init (*p))
18936 goto bad_i;
18937 nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
18938 if (!ffesta_is_inhibited ())
18939 {
18940 switch (ffesta_first_kw)
18941 {
18942 case FFESTR_firstALLOCATABLE:
18943 ffestc_R525_start ();
18944 break;
18945
18946 case FFESTR_firstPOINTER:
18947 ffestc_R526_start ();
18948 break;
18949
18950 case FFESTR_firstTARGET:
18951 ffestc_R527_start ();
18952 break;
18953
18954 default:
18955 assert (FALSE);
18956 }
18957 }
18958 ffestb_local_.dimlist.started = TRUE;
18959 next = (ffelexHandler) ffestb_dimlist1_ (nt);
18960 ffelex_token_kill (nt);
18961 return (ffelexHandler) (*next) (t);
18962
18963 case FFELEX_typeCOLONCOLON:
18964 ffesta_confirmed ();
18965 if (*p != '\0')
18966 goto bad_i;
18967 if (!ffesta_is_inhibited ())
18968 {
18969 switch (ffesta_first_kw)
18970 {
18971 case FFESTR_firstALLOCATABLE:
18972 ffestc_R525_start ();
18973 break;
18974
18975 case FFESTR_firstPOINTER:
18976 ffestc_R526_start ();
18977 break;
18978
18979 case FFESTR_firstTARGET:
18980 ffestc_R527_start ();
18981 break;
18982
18983 default:
18984 assert (FALSE);
18985 }
18986 }
18987 ffestb_local_.dimlist.started = TRUE;
18988 return (ffelexHandler) ffestb_dimlist1_;
18989
18990 case FFELEX_typeOPEN_PAREN:
18991 if (!ffesrc_is_name_init (*p))
18992 goto bad_i;
18993 nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
18994 ffestb_local_.dimlist.started = FALSE;
18995 next = (ffelexHandler) ffestb_dimlist1_ (nt);
18996 ffelex_token_kill (nt);
18997 return (ffelexHandler) (*next) (t);
18998 }
18999
19000 default:
19001 goto bad_0;
19002 }
19003
19004 bad_0:
19005 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.dimlist.badname, ffesta_tokens[0]);
19006 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
19007
19008 bad_1:
19009 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.dimlist.badname, t);
19010 return (ffelexHandler) ffelex_swallow_tokens (t,
19011 (ffelexHandler) ffesta_zero);
19012
19013 bad_i:
19014 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, ffestb_args.dimlist.badname, ffesta_tokens[0], i, t);
19015 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
19016 }
19017
19018
19019
19020
19021
19022
19023
19024 static ffelexHandler
19025 ffestb_dimlist1_ (ffelexToken t)
19026 {
19027 switch (ffelex_token_type (t))
19028 {
19029 case FFELEX_typeNAME:
19030 ffesta_tokens[1] = ffelex_token_use (t);
19031 return (ffelexHandler) ffestb_dimlist2_;
19032
19033 default:
19034 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.dimlist.badname, t);
19035 break;
19036 }
19037
19038 if (!ffesta_is_inhibited ())
19039 {
19040 switch (ffesta_first_kw)
19041 {
19042 case FFESTR_firstALLOCATABLE:
19043 ffestc_R525_finish ();
19044 break;
19045
19046 case FFESTR_firstPOINTER:
19047 ffestc_R526_finish ();
19048 break;
19049
19050 case FFESTR_firstTARGET:
19051 ffestc_R527_finish ();
19052 break;
19053
19054 default:
19055 assert (FALSE);
19056 }
19057 }
19058 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
19059 }
19060
19061
19062
19063
19064
19065
19066
19067 static ffelexHandler
19068 ffestb_dimlist2_ (ffelexToken t)
19069 {
19070 switch (ffelex_token_type (t))
19071 {
19072 case FFELEX_typeOPEN_PAREN:
19073 ffestb_subrargs_.dim_list.dims = ffestt_dimlist_create ();
19074 ffestb_subrargs_.dim_list.handler = (ffelexHandler) ffestb_dimlist3_;
19075 ffestb_subrargs_.dim_list.pool = ffesta_output_pool;
19076 ffestb_subrargs_.dim_list.ctx = FFEEXPR_contextDIMLIST;
19077 #ifdef FFECOM_dimensionsMAX
19078 ffestb_subrargs_.dim_list.ndims = 0;
19079 #endif
19080 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
19081 FFEEXPR_contextDIMLIST, (ffeexprCallback) ffestb_subr_dimlist_);
19082
19083 case FFELEX_typeCOMMA:
19084 ffesta_confirmed ();
19085 if (!ffesta_is_inhibited ())
19086 {
19087 if (!ffestb_local_.dimlist.started)
19088 {
19089 switch (ffesta_first_kw)
19090 {
19091 case FFESTR_firstALLOCATABLE:
19092 ffestc_R525_start ();
19093 break;
19094
19095 case FFESTR_firstPOINTER:
19096 ffestc_R526_start ();
19097 break;
19098
19099 case FFESTR_firstTARGET:
19100 ffestc_R527_start ();
19101 break;
19102
19103 default:
19104 assert (FALSE);
19105 }
19106 ffestb_local_.dimlist.started = TRUE;
19107 }
19108 switch (ffesta_first_kw)
19109 {
19110 case FFESTR_firstALLOCATABLE:
19111 ffestc_R525_item (ffesta_tokens[1], NULL);
19112 break;
19113
19114 case FFESTR_firstPOINTER:
19115 ffestc_R526_item (ffesta_tokens[1], NULL);
19116 break;
19117
19118 case FFESTR_firstTARGET:
19119 ffestc_R527_item (ffesta_tokens[1], NULL);
19120 break;
19121
19122 default:
19123 assert (FALSE);
19124 }
19125 }
19126 ffelex_token_kill (ffesta_tokens[1]);
19127 return (ffelexHandler) ffestb_dimlist4_;
19128
19129 case FFELEX_typeEOS:
19130 case FFELEX_typeSEMICOLON:
19131 ffesta_confirmed ();
19132 if (!ffesta_is_inhibited ())
19133 {
19134 if (!ffestb_local_.dimlist.started)
19135 {
19136 switch (ffesta_first_kw)
19137 {
19138 case FFESTR_firstALLOCATABLE:
19139 ffestc_R525_start ();
19140 break;
19141
19142 case FFESTR_firstPOINTER:
19143 ffestc_R526_start ();
19144 break;
19145
19146 case FFESTR_firstTARGET:
19147 ffestc_R527_start ();
19148 break;
19149
19150 default:
19151 assert (FALSE);
19152 }
19153 }
19154 switch (ffesta_first_kw)
19155 {
19156 case FFESTR_firstALLOCATABLE:
19157 ffestc_R525_item (ffesta_tokens[1], NULL);
19158 ffestc_R525_finish ();
19159 break;
19160
19161 case FFESTR_firstPOINTER:
19162 ffestc_R526_item (ffesta_tokens[1], NULL);
19163 ffestc_R526_finish ();
19164 break;
19165
19166 case FFESTR_firstTARGET:
19167 ffestc_R527_item (ffesta_tokens[1], NULL);
19168 ffestc_R527_finish ();
19169 break;
19170
19171 default:
19172 assert (FALSE);
19173 }
19174 }
19175 ffelex_token_kill (ffesta_tokens[1]);
19176 return (ffelexHandler) ffesta_zero (t);
19177
19178 default:
19179 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.dimlist.badname, t);
19180 break;
19181 }
19182
19183 if (!ffesta_is_inhibited ())
19184 {
19185 switch (ffesta_first_kw)
19186 {
19187 case FFESTR_firstALLOCATABLE:
19188 ffestc_R525_finish ();
19189 break;
19190
19191 case FFESTR_firstPOINTER:
19192 ffestc_R526_finish ();
19193 break;
19194
19195 case FFESTR_firstTARGET:
19196 ffestc_R527_finish ();
19197 break;
19198
19199 default:
19200 assert (FALSE);
19201 }
19202 }
19203 ffelex_token_kill (ffesta_tokens[1]);
19204 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
19205 }
19206
19207
19208
19209
19210
19211
19212
19213
19214 static ffelexHandler
19215 ffestb_dimlist3_ (ffelexToken t)
19216 {
19217 if (!ffestb_subrargs_.dim_list.ok)
19218 goto bad;
19219
19220 switch (ffelex_token_type (t))
19221 {
19222 case FFELEX_typeCOMMA:
19223 ffesta_confirmed ();
19224 if (!ffesta_is_inhibited ())
19225 {
19226 if (!ffestb_local_.dimlist.started)
19227 {
19228 switch (ffesta_first_kw)
19229 {
19230 case FFESTR_firstALLOCATABLE:
19231 ffestc_R525_start ();
19232 break;
19233
19234 case FFESTR_firstPOINTER:
19235 ffestc_R526_start ();
19236 break;
19237
19238 case FFESTR_firstTARGET:
19239 ffestc_R527_start ();
19240 break;
19241
19242 default:
19243 assert (FALSE);
19244 }
19245 ffestb_local_.dimlist.started = TRUE;
19246 }
19247 switch (ffesta_first_kw)
19248 {
19249 case FFESTR_firstALLOCATABLE:
19250 ffestc_R525_item (ffesta_tokens[1],
19251 ffestb_subrargs_.dim_list.dims);
19252 break;
19253
19254 case FFESTR_firstPOINTER:
19255 ffestc_R526_item (ffesta_tokens[1],
19256 ffestb_subrargs_.dim_list.dims);
19257 break;
19258
19259 case FFESTR_firstTARGET:
19260 ffestc_R527_item (ffesta_tokens[1],
19261 ffestb_subrargs_.dim_list.dims);
19262 break;
19263
19264 default:
19265 assert (FALSE);
19266 }
19267 }
19268 ffelex_token_kill (ffesta_tokens[1]);
19269 ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
19270 return (ffelexHandler) ffestb_dimlist4_;
19271
19272 case FFELEX_typeEOS:
19273 case FFELEX_typeSEMICOLON:
19274 ffesta_confirmed ();
19275 if (!ffesta_is_inhibited ())
19276 {
19277 if (!ffestb_local_.dimlist.started)
19278 {
19279 switch (ffesta_first_kw)
19280 {
19281 case FFESTR_firstALLOCATABLE:
19282 ffestc_R525_start ();
19283 break;
19284
19285 case FFESTR_firstPOINTER:
19286 ffestc_R526_start ();
19287 break;
19288
19289 case FFESTR_firstTARGET:
19290 ffestc_R527_start ();
19291 break;
19292
19293 default:
19294 assert (FALSE);
19295 }
19296 }
19297 switch (ffesta_first_kw)
19298 {
19299 case FFESTR_firstALLOCATABLE:
19300 ffestc_R525_item (ffesta_tokens[1],
19301 ffestb_subrargs_.dim_list.dims);
19302 ffestc_R525_finish ();
19303 break;
19304
19305 case FFESTR_firstPOINTER:
19306 ffestc_R526_item (ffesta_tokens[1],
19307 ffestb_subrargs_.dim_list.dims);
19308 ffestc_R526_finish ();
19309 break;
19310
19311 case FFESTR_firstTARGET:
19312 ffestc_R527_item (ffesta_tokens[1],
19313 ffestb_subrargs_.dim_list.dims);
19314 ffestc_R527_finish ();
19315 break;
19316
19317 default:
19318 assert (FALSE);
19319 }
19320 }
19321 ffelex_token_kill (ffesta_tokens[1]);
19322 ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
19323 return (ffelexHandler) ffesta_zero (t);
19324
19325 default:
19326 break;
19327 }
19328
19329 bad:
19330 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.dimlist.badname, t);
19331 if (ffestb_local_.dimlist.started && !ffesta_is_inhibited ())
19332 {
19333 switch (ffesta_first_kw)
19334 {
19335 case FFESTR_firstALLOCATABLE:
19336 ffestc_R525_finish ();
19337 break;
19338
19339 case FFESTR_firstPOINTER:
19340 ffestc_R526_finish ();
19341 break;
19342
19343 case FFESTR_firstTARGET:
19344 ffestc_R527_finish ();
19345 break;
19346
19347 default:
19348 assert (FALSE);
19349 }
19350 }
19351 ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
19352 ffelex_token_kill (ffesta_tokens[1]);
19353 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
19354 }
19355
19356
19357
19358
19359
19360
19361
19362 static ffelexHandler
19363 ffestb_dimlist4_ (ffelexToken t)
19364 {
19365 switch (ffelex_token_type (t))
19366 {
19367 case FFELEX_typeEOS:
19368 case FFELEX_typeSEMICOLON:
19369 if (!ffesta_is_inhibited ())
19370 {
19371 switch (ffesta_first_kw)
19372 {
19373 case FFESTR_firstALLOCATABLE:
19374 ffestc_R525_finish ();
19375 break;
19376
19377 case FFESTR_firstPOINTER:
19378 ffestc_R526_finish ();
19379 break;
19380
19381 case FFESTR_firstTARGET:
19382 ffestc_R527_finish ();
19383 break;
19384
19385 default:
19386 assert (FALSE);
19387 }
19388 }
19389 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.dimlist.badname, t);
19390 return (ffelexHandler) ffesta_zero (t);
19391
19392 default:
19393 return (ffelexHandler) ffestb_dimlist1_ (t);
19394 }
19395 }
19396
19397 #endif
19398
19399
19400
19401
19402
19403
19404
19405 ffelexHandler
19406 ffestb_dummy (ffelexToken t)
19407 {
19408 ffeTokenLength i;
19409 unsigned const char *p;
19410
19411 switch (ffelex_token_type (ffesta_tokens[0]))
19412 {
19413 case FFELEX_typeNAME:
19414 switch (ffelex_token_type (t))
19415 {
19416 case FFELEX_typeEOS:
19417 case FFELEX_typeSEMICOLON:
19418 case FFELEX_typeCOMMA:
19419 case FFELEX_typeCOLONCOLON:
19420 ffesta_confirmed ();
19421 goto bad_1;
19422
19423 default:
19424 goto bad_1;
19425
19426 case FFELEX_typeNAME:
19427 break;
19428 }
19429
19430 ffesta_confirmed ();
19431 ffesta_tokens[1] = ffelex_token_use (t);
19432 ffestb_local_.decl.recursive = NULL;
19433 ffestb_local_.dummy.badname = ffestb_args.dummy.badname;
19434 ffestb_local_.dummy.is_subr = ffestb_args.dummy.is_subr;
19435 ffestb_local_.dummy.first_kw = ffesta_first_kw;
19436 return (ffelexHandler) ffestb_dummy1_;
19437
19438 case FFELEX_typeNAMES:
19439 switch (ffelex_token_type (t))
19440 {
19441 case FFELEX_typeCOMMA:
19442 case FFELEX_typeCOLONCOLON:
19443 ffesta_confirmed ();
19444 goto bad_1;
19445
19446 default:
19447 goto bad_1;
19448
19449 case FFELEX_typeEOS:
19450 case FFELEX_typeSEMICOLON:
19451 ffesta_confirmed ();
19452 break;
19453
19454 case FFELEX_typeOPEN_PAREN:
19455 break;
19456 }
19457 p = ffelex_token_text (ffesta_tokens[0]) + (i = ffestb_args.dummy.len);
19458 if (!ffesrc_is_name_init (*p))
19459 goto bad_i;
19460 ffesta_tokens[1]
19461 = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
19462 ffestb_local_.decl.recursive = NULL;
19463 ffestb_local_.dummy.badname = ffestb_args.dummy.badname;
19464 ffestb_local_.dummy.is_subr = ffestb_args.dummy.is_subr;
19465 ffestb_local_.dummy.first_kw = ffesta_first_kw;
19466 return (ffelexHandler) ffestb_dummy1_ (t);
19467
19468 default:
19469 goto bad_0;
19470 }
19471
19472 bad_0:
19473 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.dummy.badname, ffesta_tokens[0]);
19474 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
19475
19476 bad_1:
19477 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.dummy.badname, t);
19478 return (ffelexHandler) ffelex_swallow_tokens (t,
19479 (ffelexHandler) ffesta_zero);
19480
19481 bad_i:
19482 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, ffestb_args.dummy.badname, ffesta_tokens[0], i, t);
19483 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
19484 }
19485
19486
19487
19488
19489
19490
19491
19492
19493
19494 static ffelexHandler
19495 ffestb_dummy1_ (ffelexToken t)
19496 {
19497 switch (ffelex_token_type (t))
19498 {
19499 case FFELEX_typeEOS:
19500 case FFELEX_typeSEMICOLON:
19501 if (ffestb_local_.dummy.first_kw == FFESTR_firstFUNCTION)
19502 {
19503 ffesta_confirmed ();
19504 break;
19505
19506 }
19507 ffesta_confirmed ();
19508 if (!ffesta_is_inhibited ())
19509 {
19510
19511 ffestb_subrargs_.name_list.args = NULL;
19512 ffestb_subrargs_.name_list.ok = TRUE;
19513 ffestb_subrargs_.name_list.close_paren = ffelex_token_use (t);
19514 return (ffelexHandler) ffestb_dummy2_ (t);
19515 }
19516 if (ffestb_local_.decl.recursive != NULL)
19517 ffelex_token_kill (ffestb_local_.decl.recursive);
19518 ffelex_token_kill (ffesta_tokens[1]);
19519 return (ffelexHandler) ffesta_zero (t);
19520
19521 case FFELEX_typeOPEN_PAREN:
19522 ffestb_subrargs_.name_list.args = ffestt_tokenlist_create ();
19523 ffestb_subrargs_.name_list.handler = (ffelexHandler) ffestb_dummy2_;
19524 ffestb_subrargs_.name_list.is_subr = ffestb_local_.dummy.is_subr;
19525 ffestb_subrargs_.name_list.names = FALSE;
19526 return (ffelexHandler) ffestb_subr_name_list_;
19527
19528 default:
19529 break;
19530 }
19531
19532 if (ffestb_local_.decl.recursive != NULL)
19533 ffelex_token_kill (ffestb_local_.decl.recursive);
19534 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_local_.dummy.badname, t);
19535 ffelex_token_kill (ffesta_tokens[1]);
19536 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
19537 }
19538
19539
19540
19541
19542
19543
19544
19545
19546 static ffelexHandler
19547 ffestb_dummy2_ (ffelexToken t)
19548 {
19549 if (!ffestb_subrargs_.name_list.ok)
19550 goto bad;
19551
19552 switch (ffelex_token_type (t))
19553 {
19554 case FFELEX_typeEOS:
19555 case FFELEX_typeSEMICOLON:
19556 ffesta_confirmed ();
19557 if (!ffesta_is_inhibited ())
19558 {
19559 switch (ffestb_local_.dummy.first_kw)
19560 {
19561 case FFESTR_firstFUNCTION:
19562 ffestc_R1219 (ffesta_tokens[1], ffestb_subrargs_.name_list.args,
19563 ffestb_subrargs_.name_list.close_paren, FFESTP_typeNone,
19564 NULL, NULL, NULL, NULL, ffestb_local_.decl.recursive, NULL);
19565 break;
19566
19567 case FFESTR_firstSUBROUTINE:
19568 ffestc_R1223 (ffesta_tokens[1], ffestb_subrargs_.name_list.args,
19569 ffestb_subrargs_.name_list.close_paren,
19570 ffestb_local_.decl.recursive);
19571 break;
19572
19573 case FFESTR_firstENTRY:
19574 ffestc_R1226 (ffesta_tokens[1], ffestb_subrargs_.name_list.args,
19575 ffestb_subrargs_.name_list.close_paren);
19576 break;
19577
19578 default:
19579 assert (FALSE);
19580 }
19581 }
19582 ffelex_token_kill (ffesta_tokens[1]);
19583 if (ffestb_local_.decl.recursive != NULL)
19584 ffelex_token_kill (ffestb_local_.decl.recursive);
19585 ffelex_token_kill (ffestb_subrargs_.name_list.close_paren);
19586 if (ffestb_subrargs_.name_list.args != NULL)
19587 ffestt_tokenlist_kill (ffestb_subrargs_.name_list.args);
19588 return (ffelexHandler) ffesta_zero (t);
19589
19590 case FFELEX_typeNAME:
19591 ffesta_confirmed ();
19592 if ((ffestb_local_.dummy.first_kw != FFESTR_firstFUNCTION)
19593 || (ffestr_other (t) != FFESTR_otherRESULT))
19594 break;
19595 ffestb_local_.decl.type = FFESTP_typeNone;
19596 ffestb_local_.decl.kind = NULL;
19597 ffestb_local_.decl.kindt = NULL;
19598 ffestb_local_.decl.len = NULL;
19599 ffestb_local_.decl.lent = NULL;
19600 return (ffelexHandler) ffestb_decl_funcname_6_;
19601
19602 default:
19603 break;
19604 }
19605
19606 bad:
19607 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_local_.dummy.badname, t);
19608 ffelex_token_kill (ffesta_tokens[1]);
19609 if (ffestb_local_.decl.recursive != NULL)
19610 ffelex_token_kill (ffestb_local_.decl.recursive);
19611 ffelex_token_kill (ffestb_subrargs_.name_list.close_paren);
19612 if (ffestb_subrargs_.name_list.args != NULL)
19613 ffestt_tokenlist_kill (ffestb_subrargs_.name_list.args);
19614 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
19615 }
19616
19617
19618
19619
19620
19621
19622
19623
19624 ffelexHandler
19625 ffestb_R524 (ffelexToken t)
19626 {
19627 ffeTokenLength i;
19628 unsigned const char *p;
19629 ffelexToken nt;
19630 ffelexHandler next;
19631
19632 switch (ffelex_token_type (ffesta_tokens[0]))
19633 {
19634 case FFELEX_typeNAME:
19635 switch (ffelex_token_type (t))
19636 {
19637 case FFELEX_typeCOMMA:
19638 case FFELEX_typeCOLONCOLON:
19639 case FFELEX_typeEOS:
19640 case FFELEX_typeSEMICOLON:
19641 ffesta_confirmed ();
19642 goto bad_1;
19643
19644 default:
19645 goto bad_1;
19646
19647 case FFELEX_typeNAME:
19648 ffesta_confirmed ();
19649 if (!ffesta_is_inhibited ())
19650 ffestc_R524_start (ffesta_first_kw == FFESTR_firstVIRTUAL);
19651 ffestb_local_.dimension.started = TRUE;
19652 return (ffelexHandler) ffestb_R5241_ (t);
19653 }
19654
19655 case FFELEX_typeNAMES:
19656 p = ffelex_token_text (ffesta_tokens[0]) + (i = ffestb_args.R524.len);
19657 switch (ffelex_token_type (t))
19658 {
19659 default:
19660 goto bad_1;
19661
19662 case FFELEX_typeEOS:
19663 case FFELEX_typeSEMICOLON:
19664 case FFELEX_typeCOMMA:
19665 case FFELEX_typeCOLONCOLON:
19666 ffesta_confirmed ();
19667 goto bad_1;
19668
19669 case FFELEX_typeOPEN_PAREN:
19670 break;
19671 }
19672
19673
19674
19675
19676 if (!ffesrc_is_name_init (*p))
19677 goto bad_i;
19678 nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
19679 ffestb_local_.dimension.started = FALSE;
19680 next = (ffelexHandler) ffestb_R5241_ (nt);
19681 ffelex_token_kill (nt);
19682 return (ffelexHandler) (*next) (t);
19683
19684 default:
19685 goto bad_0;
19686 }
19687
19688 bad_0:
19689 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.R524.badname, ffesta_tokens[0]);
19690 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
19691
19692 bad_1:
19693 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.R524.badname, t);
19694 return (ffelexHandler) ffelex_swallow_tokens (t,
19695 (ffelexHandler) ffesta_zero);
19696
19697 bad_i:
19698 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, ffestb_args.R524.badname, ffesta_tokens[0], i, t);
19699 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
19700 }
19701
19702
19703
19704
19705
19706
19707
19708 static ffelexHandler
19709 ffestb_R5241_ (ffelexToken t)
19710 {
19711 switch (ffelex_token_type (t))
19712 {
19713 case FFELEX_typeNAME:
19714 ffesta_tokens[1] = ffelex_token_use (t);
19715 return (ffelexHandler) ffestb_R5242_;
19716
19717 default:
19718 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.R524.badname, t);
19719 break;
19720 }
19721
19722 if (!ffesta_is_inhibited ())
19723 ffestc_R524_finish ();
19724 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
19725 }
19726
19727
19728
19729
19730
19731
19732
19733 static ffelexHandler
19734 ffestb_R5242_ (ffelexToken t)
19735 {
19736 switch (ffelex_token_type (t))
19737 {
19738 case FFELEX_typeOPEN_PAREN:
19739 ffestb_subrargs_.dim_list.dims = ffestt_dimlist_create ();
19740 ffestb_subrargs_.dim_list.handler = (ffelexHandler) ffestb_R5243_;
19741 ffestb_subrargs_.dim_list.pool = ffesta_output_pool;
19742 ffestb_subrargs_.dim_list.ctx = ffesta_is_entry_valid
19743 ? FFEEXPR_contextDIMLIST : FFEEXPR_contextDIMLISTCOMMON;
19744 #ifdef FFECOM_dimensionsMAX
19745 ffestb_subrargs_.dim_list.ndims = 0;
19746 #endif
19747 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
19748 ffestb_subrargs_.dim_list.ctx,
19749 (ffeexprCallback) ffestb_subr_dimlist_);
19750
19751 default:
19752 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.R524.badname, t);
19753 break;
19754 }
19755
19756 if (!ffesta_is_inhibited ())
19757 ffestc_R524_finish ();
19758 ffelex_token_kill (ffesta_tokens[1]);
19759 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
19760 }
19761
19762
19763
19764
19765
19766
19767
19768 static ffelexHandler
19769 ffestb_R5243_ (ffelexToken t)
19770 {
19771 if (!ffestb_subrargs_.dim_list.ok)
19772 goto bad;
19773
19774 switch (ffelex_token_type (t))
19775 {
19776 case FFELEX_typeCOMMA:
19777 ffesta_confirmed ();
19778 if (!ffesta_is_inhibited ())
19779 {
19780 if (!ffestb_local_.dimension.started)
19781 {
19782 ffestc_R524_start (ffesta_first_kw == FFESTR_firstVIRTUAL);
19783 ffestb_local_.dimension.started = TRUE;
19784 }
19785 ffestc_R524_item (ffesta_tokens[1],
19786 ffestb_subrargs_.dim_list.dims);
19787 }
19788 ffelex_token_kill (ffesta_tokens[1]);
19789 ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
19790 return (ffelexHandler) ffestb_R5244_;
19791
19792 case FFELEX_typeEOS:
19793 case FFELEX_typeSEMICOLON:
19794 ffesta_confirmed ();
19795 if (!ffesta_is_inhibited ())
19796 {
19797 if (!ffestb_local_.dimension.started)
19798 {
19799 ffestc_R524_start (ffesta_first_kw == FFESTR_firstVIRTUAL);
19800 ffestb_local_.dimension.started = TRUE;
19801 }
19802 ffestc_R524_item (ffesta_tokens[1],
19803 ffestb_subrargs_.dim_list.dims);
19804 ffestc_R524_finish ();
19805 }
19806 ffelex_token_kill (ffesta_tokens[1]);
19807 ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
19808 return (ffelexHandler) ffesta_zero (t);
19809
19810 default:
19811 break;
19812 }
19813
19814 bad:
19815 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.R524.badname, t);
19816 if (ffestb_local_.dimension.started && !ffesta_is_inhibited ())
19817 ffestc_R524_finish ();
19818 ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
19819 ffelex_token_kill (ffesta_tokens[1]);
19820 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
19821 }
19822
19823
19824
19825
19826
19827
19828
19829 static ffelexHandler
19830 ffestb_R5244_ (ffelexToken t)
19831 {
19832 switch (ffelex_token_type (t))
19833 {
19834 case FFELEX_typeEOS:
19835 case FFELEX_typeSEMICOLON:
19836 if (!ffesta_is_inhibited ())
19837 ffestc_R524_finish ();
19838 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.R524.badname, t);
19839 return (ffelexHandler) ffesta_zero (t);
19840
19841 default:
19842 return (ffelexHandler) ffestb_R5241_ (t);
19843 }
19844 }
19845
19846
19847
19848
19849
19850
19851
19852
19853 ffelexHandler
19854 ffestb_R547 (ffelexToken t)
19855 {
19856 ffeTokenLength i;
19857 unsigned const char *p;
19858 ffelexToken nt;
19859 ffelexHandler next;
19860
19861 switch (ffelex_token_type (ffesta_tokens[0]))
19862 {
19863 case FFELEX_typeNAME:
19864 if (ffesta_first_kw != FFESTR_firstCOMMON)
19865 goto bad_0;
19866 switch (ffelex_token_type (t))
19867 {
19868 case FFELEX_typeCOMMA:
19869 case FFELEX_typeCOLONCOLON:
19870 case FFELEX_typeEOS:
19871 case FFELEX_typeSEMICOLON:
19872 ffesta_confirmed ();
19873 goto bad_1;
19874
19875 default:
19876 goto bad_1;
19877
19878 case FFELEX_typeNAME:
19879 case FFELEX_typeSLASH:
19880 case FFELEX_typeCONCAT:
19881 ffesta_confirmed ();
19882 if (!ffesta_is_inhibited ())
19883 ffestc_R547_start ();
19884 ffestb_local_.common.started = TRUE;
19885 return (ffelexHandler) ffestb_R5471_ (t);
19886 }
19887
19888 case FFELEX_typeNAMES:
19889 if (ffesta_first_kw != FFESTR_firstCOMMON)
19890 goto bad_0;
19891 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlCOMMON);
19892 switch (ffelex_token_type (t))
19893 {
19894 default:
19895 goto bad_1;
19896
19897 case FFELEX_typeEOS:
19898 case FFELEX_typeSEMICOLON:
19899 case FFELEX_typeCOMMA:
19900 case FFELEX_typeCOLONCOLON:
19901 ffesta_confirmed ();
19902 break;
19903
19904 case FFELEX_typeSLASH:
19905 case FFELEX_typeCONCAT:
19906 ffesta_confirmed ();
19907 if (*p != '\0')
19908 break;
19909 if (!ffesta_is_inhibited ())
19910 ffestc_R547_start ();
19911 ffestb_local_.common.started = TRUE;
19912 return (ffelexHandler) ffestb_R5471_ (t);
19913
19914 case FFELEX_typeOPEN_PAREN:
19915 break;
19916 }
19917
19918
19919
19920
19921 if (!ffesrc_is_name_init (*p))
19922 goto bad_i;
19923 nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
19924 if (ffelex_token_type (t) == FFELEX_typeOPEN_PAREN)
19925 ffestb_local_.common.started = FALSE;
19926 else
19927 {
19928 if (!ffesta_is_inhibited ())
19929 ffestc_R547_start ();
19930 ffestb_local_.common.started = TRUE;
19931 }
19932 next = (ffelexHandler) ffestb_R5471_ (nt);
19933 ffelex_token_kill (nt);
19934 return (ffelexHandler) (*next) (t);
19935
19936 default:
19937 goto bad_0;
19938 }
19939
19940 bad_0:
19941 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "COMMON", ffesta_tokens[0]);
19942 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
19943
19944 bad_1:
19945 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "COMMON", t);
19946 return (ffelexHandler) ffelex_swallow_tokens (t,
19947 (ffelexHandler) ffesta_zero);
19948
19949 bad_i:
19950 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "COMMON", ffesta_tokens[0], i, t);
19951 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
19952 }
19953
19954
19955
19956
19957
19958
19959
19960 static ffelexHandler
19961 ffestb_R5471_ (ffelexToken t)
19962 {
19963 switch (ffelex_token_type (t))
19964 {
19965 case FFELEX_typeNAME:
19966 return (ffelexHandler) ffestb_R5474_ (t);
19967
19968 case FFELEX_typeSLASH:
19969 return (ffelexHandler) ffestb_R5472_;
19970
19971 case FFELEX_typeCONCAT:
19972 if (!ffesta_is_inhibited ())
19973 ffestc_R547_item_cblock (NULL);
19974 return (ffelexHandler) ffestb_R5474_;
19975
19976 default:
19977 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "COMMON", t);
19978 break;
19979 }
19980
19981 if (!ffesta_is_inhibited ())
19982 ffestc_R547_finish ();
19983 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
19984 }
19985
19986
19987
19988
19989
19990
19991
19992 static ffelexHandler
19993 ffestb_R5472_ (ffelexToken t)
19994 {
19995 switch (ffelex_token_type (t))
19996 {
19997 case FFELEX_typeNAME:
19998 ffesta_tokens[1] = ffelex_token_use (t);
19999 return (ffelexHandler) ffestb_R5473_;
20000
20001 case FFELEX_typeSLASH:
20002 if (!ffesta_is_inhibited ())
20003 ffestc_R547_item_cblock (NULL);
20004 return (ffelexHandler) ffestb_R5474_;
20005
20006 default:
20007 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "COMMON", t);
20008 break;
20009 }
20010
20011 if (!ffesta_is_inhibited ())
20012 ffestc_R547_finish ();
20013 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
20014 }
20015
20016
20017
20018
20019
20020
20021
20022 static ffelexHandler
20023 ffestb_R5473_ (ffelexToken t)
20024 {
20025 switch (ffelex_token_type (t))
20026 {
20027 case FFELEX_typeSLASH:
20028 if (!ffesta_is_inhibited ())
20029 ffestc_R547_item_cblock (ffesta_tokens[1]);
20030 ffelex_token_kill (ffesta_tokens[1]);
20031 return (ffelexHandler) ffestb_R5474_;
20032
20033 default:
20034 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "COMMON", t);
20035 break;
20036 }
20037
20038 if (!ffesta_is_inhibited ())
20039 ffestc_R547_finish ();
20040 ffelex_token_kill (ffesta_tokens[1]);
20041 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
20042 }
20043
20044
20045
20046
20047
20048
20049
20050 static ffelexHandler
20051 ffestb_R5474_ (ffelexToken t)
20052 {
20053 switch (ffelex_token_type (t))
20054 {
20055 case FFELEX_typeNAME:
20056 ffesta_tokens[1] = ffelex_token_use (t);
20057 return (ffelexHandler) ffestb_R5475_;
20058
20059 default:
20060 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "COMMON", t);
20061 break;
20062 }
20063
20064 if (!ffesta_is_inhibited ())
20065 ffestc_R547_finish ();
20066 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
20067 }
20068
20069
20070
20071
20072
20073
20074
20075 static ffelexHandler
20076 ffestb_R5475_ (ffelexToken t)
20077 {
20078 switch (ffelex_token_type (t))
20079 {
20080 case FFELEX_typeOPEN_PAREN:
20081 ffestb_subrargs_.dim_list.dims = ffestt_dimlist_create ();
20082 ffestb_subrargs_.dim_list.handler = (ffelexHandler) ffestb_R5476_;
20083 ffestb_subrargs_.dim_list.pool = ffesta_output_pool;
20084 ffestb_subrargs_.dim_list.ctx = FFEEXPR_contextDIMLISTCOMMON;
20085 #ifdef FFECOM_dimensionsMAX
20086 ffestb_subrargs_.dim_list.ndims = 0;
20087 #endif
20088 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
20089 FFEEXPR_contextDIMLISTCOMMON, (ffeexprCallback) ffestb_subr_dimlist_);
20090
20091 case FFELEX_typeCOMMA:
20092 if (!ffesta_is_inhibited ())
20093 ffestc_R547_item_object (ffesta_tokens[1], NULL);
20094 ffelex_token_kill (ffesta_tokens[1]);
20095 return (ffelexHandler) ffestb_R5477_;
20096
20097 case FFELEX_typeSLASH:
20098 case FFELEX_typeCONCAT:
20099 if (!ffesta_is_inhibited ())
20100 ffestc_R547_item_object (ffesta_tokens[1], NULL);
20101 ffelex_token_kill (ffesta_tokens[1]);
20102 return (ffelexHandler) ffestb_R5471_ (t);
20103
20104 case FFELEX_typeEOS:
20105 case FFELEX_typeSEMICOLON:
20106 if (!ffesta_is_inhibited ())
20107 {
20108 ffestc_R547_item_object (ffesta_tokens[1], NULL);
20109 ffestc_R547_finish ();
20110 }
20111 ffelex_token_kill (ffesta_tokens[1]);
20112 return (ffelexHandler) ffesta_zero (t);
20113
20114 default:
20115 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "COMMON", t);
20116 break;
20117 }
20118
20119 if (!ffesta_is_inhibited ())
20120 ffestc_R547_finish ();
20121 ffelex_token_kill (ffesta_tokens[1]);
20122 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
20123 }
20124
20125
20126
20127
20128
20129
20130
20131 static ffelexHandler
20132 ffestb_R5476_ (ffelexToken t)
20133 {
20134 if (!ffestb_subrargs_.dim_list.ok)
20135 goto bad;
20136
20137 switch (ffelex_token_type (t))
20138 {
20139 case FFELEX_typeCOMMA:
20140 ffesta_confirmed ();
20141 if (!ffesta_is_inhibited ())
20142 {
20143 if (!ffestb_local_.common.started)
20144 {
20145 ffestc_R547_start ();
20146 ffestb_local_.common.started = TRUE;
20147 }
20148 ffestc_R547_item_object (ffesta_tokens[1],
20149 ffestb_subrargs_.dim_list.dims);
20150 }
20151 ffelex_token_kill (ffesta_tokens[1]);
20152 ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
20153 return (ffelexHandler) ffestb_R5477_;
20154
20155 case FFELEX_typeSLASH:
20156 case FFELEX_typeCONCAT:
20157 ffesta_confirmed ();
20158 if (!ffesta_is_inhibited ())
20159 {
20160 if (!ffestb_local_.common.started)
20161 {
20162 ffestc_R547_start ();
20163 ffestb_local_.common.started = TRUE;
20164 }
20165 ffestc_R547_item_object (ffesta_tokens[1],
20166 ffestb_subrargs_.dim_list.dims);
20167 }
20168 ffelex_token_kill (ffesta_tokens[1]);
20169 ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
20170 return (ffelexHandler) ffestb_R5471_ (t);
20171
20172 case FFELEX_typeEOS:
20173 case FFELEX_typeSEMICOLON:
20174 ffesta_confirmed ();
20175 if (!ffesta_is_inhibited ())
20176 {
20177 if (!ffestb_local_.common.started)
20178 ffestc_R547_start ();
20179 ffestc_R547_item_object (ffesta_tokens[1],
20180 ffestb_subrargs_.dim_list.dims);
20181 ffestc_R547_finish ();
20182 }
20183 ffelex_token_kill (ffesta_tokens[1]);
20184 ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
20185 return (ffelexHandler) ffesta_zero (t);
20186
20187 default:
20188 break;
20189 }
20190
20191 bad:
20192 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "COMMON", t);
20193 if (ffestb_local_.common.started && !ffesta_is_inhibited ())
20194 ffestc_R547_finish ();
20195 ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
20196 ffelex_token_kill (ffesta_tokens[1]);
20197 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
20198 }
20199
20200
20201
20202
20203
20204
20205
20206 static ffelexHandler
20207 ffestb_R5477_ (ffelexToken t)
20208 {
20209 switch (ffelex_token_type (t))
20210 {
20211 case FFELEX_typeEOS:
20212 case FFELEX_typeSEMICOLON:
20213 if (!ffesta_is_inhibited ())
20214 ffestc_R547_finish ();
20215 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "COMMON", t);
20216 return (ffelexHandler) ffesta_zero (t);
20217
20218 default:
20219 return (ffelexHandler) ffestb_R5471_ (t);
20220 }
20221 }
20222
20223
20224
20225
20226
20227
20228
20229
20230
20231
20232
20233
20234
20235
20236 #if FFESTR_F90
20237 ffelexHandler
20238 ffestb_R624 (ffelexToken t)
20239 {
20240 switch (ffelex_token_type (ffesta_tokens[0]))
20241 {
20242 case FFELEX_typeNAME:
20243 if (ffesta_first_kw != FFESTR_firstNULLIFY)
20244 goto bad_0;
20245 break;
20246
20247 case FFELEX_typeNAMES:
20248 if (ffesta_first_kw != FFESTR_firstNULLIFY)
20249 goto bad_0;
20250 if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlNULLIFY)
20251 goto bad_0;
20252 break;
20253
20254 default:
20255 goto bad_0;
20256 }
20257
20258 switch (ffelex_token_type (t))
20259 {
20260 case FFELEX_typeOPEN_PAREN:
20261 break;
20262
20263 case FFELEX_typeEOS:
20264 case FFELEX_typeSEMICOLON:
20265 case FFELEX_typeCOMMA:
20266 case FFELEX_typeCOLONCOLON:
20267 case FFELEX_typeNAME:
20268 ffesta_confirmed ();
20269 goto bad_1;
20270
20271 default:
20272 goto bad_1;
20273 }
20274
20275 ffestb_local_.R624.exprs = ffestt_exprlist_create ();
20276 return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
20277 FFEEXPR_contextNULLIFY,
20278 (ffeexprCallback) ffestb_R6241_);
20279
20280 bad_0:
20281 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "NULLIFY", ffesta_tokens[0]);
20282 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
20283
20284 bad_1:
20285 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "NULLIFY", t);
20286 return (ffelexHandler) ffelex_swallow_tokens (t,
20287 (ffelexHandler) ffesta_zero);
20288 }
20289
20290
20291
20292
20293
20294
20295
20296
20297
20298
20299
20300
20301
20302
20303 static ffelexHandler
20304 ffestb_R6241_ (ffelexToken ft, ffebld expr, ffelexToken t)
20305 {
20306 switch (ffelex_token_type (t))
20307 {
20308 case FFELEX_typeCLOSE_PAREN:
20309 if (expr == NULL)
20310 break;
20311 ffestt_exprlist_append (ffestb_local_.R624.exprs, expr,
20312 ffelex_token_use (t));
20313 return (ffelexHandler) ffestb_R6242_;
20314
20315 case FFELEX_typeCOMMA:
20316 if (expr == NULL)
20317 break;
20318 ffestt_exprlist_append (ffestb_local_.R624.exprs, expr,
20319 ffelex_token_use (t));
20320 return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
20321 FFEEXPR_contextNULLIFY,
20322 (ffeexprCallback) ffestb_R6241_);
20323
20324 default:
20325 break;
20326 }
20327
20328 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "NULLIFY", t);
20329 ffestt_exprlist_kill (ffestb_local_.R624.exprs);
20330 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
20331 }
20332
20333
20334
20335
20336
20337
20338
20339
20340 static ffelexHandler
20341 ffestb_R6242_ (ffelexToken t)
20342 {
20343 switch (ffelex_token_type (t))
20344 {
20345 case FFELEX_typeEOS:
20346 case FFELEX_typeSEMICOLON:
20347 ffesta_confirmed ();
20348 if (!ffesta_is_inhibited ())
20349 ffestc_R624 (ffestb_local_.R624.exprs);
20350 ffestt_exprlist_kill (ffestb_local_.R624.exprs);
20351 return (ffelexHandler) ffesta_zero (t);
20352
20353 default:
20354 break;
20355 }
20356
20357 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "NULLIFY", t);
20358 ffestt_exprlist_kill (ffestb_local_.R624.exprs);
20359 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
20360 }
20361
20362 #endif
20363
20364
20365
20366
20367
20368
20369
20370 ffelexHandler
20371 ffestb_R1229 (ffelexToken t)
20372 {
20373 switch (ffelex_token_type (ffesta_tokens[0]))
20374 {
20375 case FFELEX_typeNAME:
20376 case FFELEX_typeNAMES:
20377 break;
20378
20379 default:
20380 goto bad_0;
20381 }
20382
20383 switch (ffelex_token_type (t))
20384 {
20385 case FFELEX_typeOPEN_PAREN:
20386 break;
20387
20388 case FFELEX_typeEOS:
20389 case FFELEX_typeSEMICOLON:
20390 case FFELEX_typeCOMMA:
20391 case FFELEX_typeCOLONCOLON:
20392 case FFELEX_typeNAME:
20393 ffesta_confirmed ();
20394 goto bad_1;
20395
20396 default:
20397 goto bad_1;
20398 }
20399
20400 ffestb_subrargs_.name_list.args = ffestt_tokenlist_create ();
20401 ffestb_subrargs_.name_list.handler = (ffelexHandler) ffestb_R12291_;
20402 ffestb_subrargs_.name_list.is_subr = FALSE;
20403 ffestb_subrargs_.name_list.names = TRUE;
20404
20405 return (ffelexHandler) ffestb_subr_name_list_;
20406
20407 bad_0:
20408 bad_1:
20409 ffesta_ffebad_2t (FFEBAD_UNREC_STMT, ffesta_tokens[0], t);
20410 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
20411 }
20412
20413
20414
20415
20416
20417
20418
20419
20420 static ffelexHandler
20421 ffestb_R12291_ (ffelexToken t)
20422 {
20423 ffelex_set_names (FALSE);
20424
20425 if (!ffestb_subrargs_.name_list.ok)
20426 goto bad;
20427
20428 switch (ffelex_token_type (t))
20429 {
20430 case FFELEX_typeEQUALS:
20431 ffesta_confirmed ();
20432 if (!ffesta_is_inhibited ())
20433 ffestc_R1229_start (ffesta_tokens[0],
20434 ffestb_subrargs_.name_list.args,
20435 ffestb_subrargs_.name_list.close_paren);
20436 ffelex_token_kill (ffestb_subrargs_.name_list.close_paren);
20437 ffestt_tokenlist_kill (ffestb_subrargs_.name_list.args);
20438 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
20439 FFEEXPR_contextSFUNCDEF, (ffeexprCallback) ffestb_R12292_);
20440
20441 default:
20442 break;
20443 }
20444
20445 bad:
20446 ffesta_ffebad_2t (FFEBAD_UNREC_STMT, ffesta_tokens[0], t);
20447 ffelex_token_kill (ffestb_subrargs_.name_list.close_paren);
20448 ffestt_tokenlist_kill (ffestb_subrargs_.name_list.args);
20449 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
20450 }
20451
20452
20453
20454
20455
20456
20457
20458
20459
20460 static ffelexHandler
20461 ffestb_R12292_ (ffelexToken ft, ffebld expr, ffelexToken t)
20462 {
20463 if (expr == NULL)
20464 goto bad;
20465
20466 switch (ffelex_token_type (t))
20467 {
20468 case FFELEX_typeEOS:
20469 case FFELEX_typeSEMICOLON:
20470 if (!ffesta_is_inhibited ())
20471 ffestc_R1229_finish (expr, ft);
20472 return (ffelexHandler) ffesta_zero (t);
20473
20474 default:
20475 break;
20476 }
20477
20478 bad:
20479 ffestc_R1229_finish (NULL, NULL);
20480 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "statement-function-definition", t);
20481 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
20482 }
20483
20484
20485
20486
20487
20488
20489
20490
20491 ffelexHandler
20492 ffestb_decl_chartype (ffelexToken t)
20493 {
20494 ffeTokenLength i;
20495 unsigned const char *p;
20496
20497 ffestb_local_.decl.type = FFESTP_typeCHARACTER;
20498 ffestb_local_.decl.recursive = NULL;
20499 ffestb_local_.decl.parameter = FALSE;
20500 ffestb_local_.decl.coloncolon = FALSE;
20501
20502 switch (ffelex_token_type (ffesta_tokens[0]))
20503 {
20504 case FFELEX_typeNAME:
20505 if (ffesta_first_kw != FFESTR_firstCHRCTR)
20506 goto bad_0;
20507 switch (ffelex_token_type (t))
20508 {
20509 case FFELEX_typeEOS:
20510 case FFELEX_typeSEMICOLON:
20511 ffesta_confirmed ();
20512 goto bad_1;
20513
20514 default:
20515 goto bad_1;
20516
20517 case FFELEX_typeCOMMA:
20518 ffesta_confirmed ();
20519 if (!ffesta_is_inhibited ())
20520 ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
20521 NULL, NULL, NULL, NULL);
20522 return (ffelexHandler) ffestb_decl_attrs_;
20523
20524 case FFELEX_typeCOLONCOLON:
20525 ffestb_local_.decl.coloncolon = TRUE;
20526 ffesta_confirmed ();
20527 if (!ffesta_is_inhibited ())
20528 ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
20529 NULL, NULL, NULL, NULL);
20530 return (ffelexHandler) ffestb_decl_ents_;
20531
20532 case FFELEX_typeASTERISK:
20533 ffesta_confirmed ();
20534 ffestb_local_.decl.handler = (ffelexHandler) ffestb_decl_chartype1_;
20535 ffestb_local_.decl.badname = "TYPEDECL";
20536 return (ffelexHandler) ffestb_decl_starlen_;
20537
20538 case FFELEX_typeOPEN_PAREN:
20539 ffestb_local_.decl.kind = NULL;
20540 ffestb_local_.decl.kindt = NULL;
20541 ffestb_local_.decl.len = NULL;
20542 ffestb_local_.decl.lent = NULL;
20543 ffestb_local_.decl.handler = (ffelexHandler) ffestb_decl_attrsp_;
20544 ffestb_local_.decl.badname = "_TYPEDECL";
20545 return (ffelexHandler) ffestb_decl_typeparams_;
20546
20547 case FFELEX_typeNAME:
20548 ffesta_confirmed ();
20549 ffestb_local_.decl.kind = NULL;
20550 ffestb_local_.decl.kindt = NULL;
20551 ffestb_local_.decl.len = NULL;
20552 ffestb_local_.decl.lent = NULL;
20553 return (ffelexHandler) ffestb_decl_entsp_ (t);
20554 }
20555
20556 case FFELEX_typeNAMES:
20557 if (ffesta_first_kw != FFESTR_firstCHRCTR)
20558 goto bad_0;
20559 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlCHRCTR);
20560 switch (ffelex_token_type (t))
20561 {
20562 default:
20563 goto bad_1;
20564
20565 case FFELEX_typeEOS:
20566 case FFELEX_typeSEMICOLON:
20567 ffesta_confirmed ();
20568 break;
20569
20570 case FFELEX_typeCOMMA:
20571 ffesta_confirmed ();
20572 if (*p != '\0')
20573 break;
20574 if (!ffesta_is_inhibited ())
20575 ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
20576 NULL, NULL, NULL, NULL);
20577 return (ffelexHandler) ffestb_decl_attrs_;
20578
20579 case FFELEX_typeCOLONCOLON:
20580 ffestb_local_.decl.coloncolon = TRUE;
20581 ffesta_confirmed ();
20582 if (*p != '\0')
20583 goto bad_i;
20584 if (!ffesta_is_inhibited ())
20585 ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
20586 NULL, NULL, NULL, NULL);
20587 return (ffelexHandler) ffestb_decl_ents_;
20588
20589 case FFELEX_typeASTERISK:
20590 ffesta_confirmed ();
20591 if (*p != '\0')
20592 break;
20593 ffestb_local_.decl.handler = (ffelexHandler) ffestb_decl_chartype1_;
20594 ffestb_local_.decl.badname = "TYPEDECL";
20595 return (ffelexHandler) ffestb_decl_starlen_;
20596
20597 case FFELEX_typeSLASH:
20598 ffesta_confirmed ();
20599 if (*p != '\0')
20600 break;
20601 goto bad_1;
20602
20603 case FFELEX_typeOPEN_PAREN:
20604 if (*p != '\0')
20605 break;
20606 ffestb_local_.decl.kind = NULL;
20607 ffestb_local_.decl.kindt = NULL;
20608 ffestb_local_.decl.len = NULL;
20609 ffestb_local_.decl.lent = NULL;
20610 ffestb_local_.decl.handler = (ffelexHandler) ffestb_decl_attrsp_;
20611 ffestb_local_.decl.badname = "TYPEDECL";
20612 return (ffelexHandler) ffestb_decl_typeparams_;
20613 }
20614 if (!ffesrc_is_name_init (*p))
20615 goto bad_i;
20616 ffestb_local_.decl.kind = NULL;
20617 ffestb_local_.decl.kindt = NULL;
20618 ffestb_local_.decl.len = NULL;
20619 ffestb_local_.decl.lent = NULL;
20620 ffesta_tokens[1] = ffelex_token_names_from_names (ffesta_tokens[0], i, 0);
20621 return (ffelexHandler) ffestb_decl_entsp_2_ (t);
20622
20623 default:
20624 goto bad_0;
20625 }
20626
20627 bad_0:
20628 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", ffesta_tokens[0]);
20629 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
20630
20631 bad_1:
20632 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
20633 return (ffelexHandler) ffelex_swallow_tokens (t,
20634 (ffelexHandler) ffesta_zero);
20635
20636 bad_i:
20637 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "type-declaration", ffesta_tokens[0], i, t);
20638 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
20639 }
20640
20641
20642
20643
20644
20645
20646
20647 static ffelexHandler
20648 ffestb_decl_chartype1_ (ffelexToken t)
20649 {
20650 ffelex_set_names (FALSE);
20651
20652 switch (ffelex_token_type (t))
20653 {
20654 case FFELEX_typeCOLONCOLON:
20655 ffestb_local_.decl.coloncolon = TRUE;
20656
20657 case FFELEX_typeCOMMA:
20658 ffesta_confirmed ();
20659 if (!ffesta_is_inhibited ())
20660 ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
20661 NULL, NULL, ffestb_local_.decl.len, ffestb_local_.decl.lent);
20662 if (ffestb_local_.decl.lent != NULL)
20663 ffelex_token_kill (ffestb_local_.decl.lent);
20664 return (ffelexHandler) ffestb_decl_ents_;
20665
20666 default:
20667 return (ffelexHandler) ffestb_decl_entsp_ (t);
20668 }
20669 }
20670
20671
20672
20673
20674
20675
20676
20677
20678 ffelexHandler
20679 ffestb_decl_dbltype (ffelexToken t)
20680 {
20681 ffeTokenLength i;
20682 unsigned const char *p;
20683
20684 ffestb_local_.decl.type = ffestb_args.decl.type;
20685 ffestb_local_.decl.recursive = NULL;
20686 ffestb_local_.decl.parameter = FALSE;
20687 ffestb_local_.decl.coloncolon = FALSE;
20688
20689 switch (ffelex_token_type (ffesta_tokens[0]))
20690 {
20691 case FFELEX_typeNAME:
20692 switch (ffelex_token_type (t))
20693 {
20694 case FFELEX_typeEOS:
20695 case FFELEX_typeSEMICOLON:
20696 ffesta_confirmed ();
20697 goto bad_1;
20698
20699 default:
20700 goto bad_1;
20701
20702 case FFELEX_typeCOMMA:
20703 ffesta_confirmed ();
20704 if (!ffesta_is_inhibited ())
20705 ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
20706 NULL, NULL, NULL, NULL);
20707 return (ffelexHandler) ffestb_decl_attrs_;
20708
20709 case FFELEX_typeCOLONCOLON:
20710 ffestb_local_.decl.coloncolon = TRUE;
20711 ffesta_confirmed ();
20712 if (!ffesta_is_inhibited ())
20713 ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
20714 NULL, NULL, NULL, NULL);
20715 return (ffelexHandler) ffestb_decl_ents_;
20716
20717 case FFELEX_typeNAME:
20718 ffesta_confirmed ();
20719 ffestb_local_.decl.kind = NULL;
20720 ffestb_local_.decl.kindt = NULL;
20721 ffestb_local_.decl.len = NULL;
20722 ffestb_local_.decl.lent = NULL;
20723 return (ffelexHandler) ffestb_decl_entsp_ (t);
20724 }
20725
20726 case FFELEX_typeNAMES:
20727 p = ffelex_token_text (ffesta_tokens[0]) + (i = ffestb_args.decl.len);
20728 switch (ffelex_token_type (t))
20729 {
20730 default:
20731 goto bad_1;
20732
20733 case FFELEX_typeEOS:
20734 case FFELEX_typeSEMICOLON:
20735 ffesta_confirmed ();
20736 break;
20737
20738 case FFELEX_typeCOMMA:
20739 ffesta_confirmed ();
20740 if (*p != '\0')
20741 break;
20742 if (!ffesta_is_inhibited ())
20743 ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
20744 NULL, NULL, NULL, NULL);
20745 return (ffelexHandler) ffestb_decl_attrs_;
20746
20747 case FFELEX_typeCOLONCOLON:
20748 ffestb_local_.decl.coloncolon = TRUE;
20749 ffesta_confirmed ();
20750 if (*p != '\0')
20751 goto bad_i;
20752 if (!ffesta_is_inhibited ())
20753 ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
20754 NULL, NULL, NULL, NULL);
20755 return (ffelexHandler) ffestb_decl_ents_;
20756
20757 case FFELEX_typeSLASH:
20758 ffesta_confirmed ();
20759 if (*p != '\0')
20760 break;
20761 goto bad_1;
20762
20763 case FFELEX_typeOPEN_PAREN:
20764 if (*p != '\0')
20765 break;
20766 goto bad_1;
20767 }
20768 if (!ffesrc_is_name_init (*p))
20769 goto bad_i;
20770 ffestb_local_.decl.kind = NULL;
20771 ffestb_local_.decl.kindt = NULL;
20772 ffestb_local_.decl.len = NULL;
20773 ffestb_local_.decl.lent = NULL;
20774 ffesta_tokens[1] = ffelex_token_names_from_names (ffesta_tokens[0], i, 0);
20775 return (ffelexHandler) ffestb_decl_entsp_2_ (t);
20776
20777 default:
20778 goto bad_0;
20779 }
20780
20781 bad_0:
20782 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", ffesta_tokens[0]);
20783 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
20784
20785 bad_1:
20786 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
20787 return (ffelexHandler) ffelex_swallow_tokens (t,
20788 (ffelexHandler) ffesta_zero);
20789
20790 bad_i:
20791 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "type-declaration", ffesta_tokens[0], i, t);
20792 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
20793 }
20794
20795
20796
20797
20798
20799
20800
20801
20802 ffelexHandler
20803 ffestb_decl_double (ffelexToken t)
20804 {
20805 ffestb_local_.decl.recursive = NULL;
20806 ffestb_local_.decl.parameter = FALSE;
20807 ffestb_local_.decl.coloncolon = FALSE;
20808
20809 switch (ffelex_token_type (ffesta_tokens[0]))
20810 {
20811 case FFELEX_typeNAME:
20812 if (ffesta_first_kw != FFESTR_firstDBL)
20813 goto bad_0;
20814 switch (ffelex_token_type (t))
20815 {
20816 case FFELEX_typeEOS:
20817 case FFELEX_typeSEMICOLON:
20818 case FFELEX_typeCOMMA:
20819 case FFELEX_typeCOLONCOLON:
20820 ffesta_confirmed ();
20821 goto bad_1;
20822
20823 default:
20824 goto bad_1;
20825
20826 case FFELEX_typeNAME:
20827 ffesta_confirmed ();
20828 switch (ffestr_second (t))
20829 {
20830 case FFESTR_secondCOMPLEX:
20831 ffestb_local_.decl.type = FFESTP_typeDBLCMPLX;
20832 break;
20833
20834 case FFESTR_secondPRECISION:
20835 ffestb_local_.decl.type = FFESTP_typeDBLPRCSN;
20836 break;
20837
20838 default:
20839 goto bad_1;
20840 }
20841 ffestb_local_.decl.kind = NULL;
20842 ffestb_local_.decl.kindt = NULL;
20843 ffestb_local_.decl.len = NULL;
20844 ffestb_local_.decl.lent = NULL;
20845 return (ffelexHandler) ffestb_decl_attrsp_;
20846 }
20847
20848 default:
20849 goto bad_0;
20850 }
20851
20852 bad_0:
20853 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", ffesta_tokens[0]);
20854 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
20855
20856 bad_1:
20857 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
20858 return (ffelexHandler) ffelex_swallow_tokens (t,
20859 (ffelexHandler) ffesta_zero);
20860 }
20861
20862
20863
20864
20865
20866
20867
20868
20869 ffelexHandler
20870 ffestb_decl_gentype (ffelexToken t)
20871 {
20872 ffeTokenLength i;
20873 unsigned const char *p;
20874
20875 ffestb_local_.decl.type = ffestb_args.decl.type;
20876 ffestb_local_.decl.recursive = NULL;
20877 ffestb_local_.decl.parameter = FALSE;
20878 ffestb_local_.decl.coloncolon = FALSE;
20879
20880 switch (ffelex_token_type (ffesta_tokens[0]))
20881 {
20882 case FFELEX_typeNAME:
20883 switch (ffelex_token_type (t))
20884 {
20885 case FFELEX_typeEOS:
20886 case FFELEX_typeSEMICOLON:
20887 ffesta_confirmed ();
20888 goto bad_1;
20889
20890 default:
20891 goto bad_1;
20892
20893 case FFELEX_typeCOMMA:
20894 ffesta_confirmed ();
20895 if (!ffesta_is_inhibited ())
20896 ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
20897 NULL, NULL, NULL, NULL);
20898 return (ffelexHandler) ffestb_decl_attrs_;
20899
20900 case FFELEX_typeCOLONCOLON:
20901 ffestb_local_.decl.coloncolon = TRUE;
20902 ffesta_confirmed ();
20903 if (!ffesta_is_inhibited ())
20904 ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
20905 NULL, NULL, NULL, NULL);
20906 return (ffelexHandler) ffestb_decl_ents_;
20907
20908 case FFELEX_typeASTERISK:
20909 ffesta_confirmed ();
20910 ffestb_local_.decl.handler = (ffelexHandler) ffestb_decl_attrsp_;
20911 ffestb_local_.decl.badname = "TYPEDECL";
20912 return (ffelexHandler) ffestb_decl_starkind_;
20913
20914 case FFELEX_typeOPEN_PAREN:
20915 ffestb_local_.decl.handler = (ffelexHandler) ffestb_decl_attrsp_;
20916 ffestb_local_.decl.badname = "TYPEDECL";
20917 return (ffelexHandler) ffestb_decl_kindparam_;
20918
20919 case FFELEX_typeNAME:
20920 ffesta_confirmed ();
20921 ffestb_local_.decl.kind = NULL;
20922 ffestb_local_.decl.kindt = NULL;
20923 ffestb_local_.decl.len = NULL;
20924 ffestb_local_.decl.lent = NULL;
20925 return (ffelexHandler) ffestb_decl_entsp_ (t);
20926 }
20927
20928 case FFELEX_typeNAMES:
20929 p = ffelex_token_text (ffesta_tokens[0]) + (i = ffestb_args.decl.len);
20930 switch (ffelex_token_type (t))
20931 {
20932 default:
20933 goto bad_1;
20934
20935 case FFELEX_typeEOS:
20936 case FFELEX_typeSEMICOLON:
20937 ffesta_confirmed ();
20938 break;
20939
20940 case FFELEX_typeCOMMA:
20941 ffesta_confirmed ();
20942 if (*p != '\0')
20943 break;
20944 if (!ffesta_is_inhibited ())
20945 ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
20946 NULL, NULL, NULL, NULL);
20947 return (ffelexHandler) ffestb_decl_attrs_;
20948
20949 case FFELEX_typeCOLONCOLON:
20950 ffestb_local_.decl.coloncolon = TRUE;
20951 ffesta_confirmed ();
20952 if (*p != '\0')
20953 goto bad_i;
20954 if (!ffesta_is_inhibited ())
20955 ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
20956 NULL, NULL, NULL, NULL);
20957 return (ffelexHandler) ffestb_decl_ents_;
20958
20959 case FFELEX_typeSLASH:
20960 ffesta_confirmed ();
20961 if (*p != '\0')
20962 break;
20963 goto bad_1;
20964
20965 case FFELEX_typeASTERISK:
20966 ffesta_confirmed ();
20967 if (*p != '\0')
20968 break;
20969 ffestb_local_.decl.handler = (ffelexHandler) ffestb_decl_attrsp_;
20970 ffestb_local_.decl.badname = "TYPEDECL";
20971 return (ffelexHandler) ffestb_decl_starkind_;
20972
20973 case FFELEX_typeOPEN_PAREN:
20974 if (*p != '\0')
20975 break;
20976 ffestb_local_.decl.handler = (ffelexHandler) ffestb_decl_attrsp_;
20977 ffestb_local_.decl.badname = "TYPEDECL";
20978 return (ffelexHandler) ffestb_decl_kindparam_;
20979 }
20980 if (!ffesrc_is_name_init (*p))
20981 goto bad_i;
20982 ffestb_local_.decl.kind = NULL;
20983 ffestb_local_.decl.kindt = NULL;
20984 ffestb_local_.decl.len = NULL;
20985 ffestb_local_.decl.lent = NULL;
20986 ffesta_tokens[1] = ffelex_token_names_from_names (ffesta_tokens[0], i, 0);
20987 return (ffelexHandler) ffestb_decl_entsp_2_ (t);
20988
20989 default:
20990 goto bad_0;
20991 }
20992
20993 bad_0:
20994 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", ffesta_tokens[0]);
20995 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
20996
20997 bad_1:
20998 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
20999 return (ffelexHandler) ffelex_swallow_tokens (t,
21000 (ffelexHandler) ffesta_zero);
21001
21002 bad_i:
21003 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "type-declaration", ffesta_tokens[0], i, t);
21004 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
21005 }
21006
21007
21008
21009
21010
21011
21012
21013
21014 #if FFESTR_F90
21015 ffelexHandler
21016 ffestb_decl_recursive (ffelexToken t)
21017 {
21018 ffeTokenLength i;
21019 const char *p;
21020 ffelexToken nt;
21021 ffelexToken ot;
21022 ffelexHandler next;
21023 bool needfunc;
21024
21025 switch (ffelex_token_type (ffesta_tokens[0]))
21026 {
21027 case FFELEX_typeNAME:
21028 if (ffesta_first_kw != FFESTR_firstRECURSIVE)
21029 goto bad_0;
21030 switch (ffelex_token_type (t))
21031 {
21032 case FFELEX_typeEOS:
21033 case FFELEX_typeSEMICOLON:
21034 case FFELEX_typeCOMMA:
21035 case FFELEX_typeCOLONCOLON:
21036 ffesta_confirmed ();
21037 goto bad_1;
21038
21039 default:
21040 goto bad_1;
21041
21042 case FFELEX_typeNAME:
21043 break;
21044 }
21045 ffesta_confirmed ();
21046 ffestb_local_.decl.recursive = ffelex_token_use (ffesta_tokens[0]);
21047 switch (ffesta_second_kw)
21048 {
21049 case FFESTR_secondINTEGER:
21050 ffestb_local_.decl.type = FFESTP_typeINTEGER;
21051 return (ffelexHandler) ffestb_decl_recursive1_;
21052
21053 case FFESTR_secondBYTE:
21054 ffestb_local_.decl.type = FFESTP_typeBYTE;
21055 return (ffelexHandler) ffestb_decl_recursive1_;
21056
21057 case FFESTR_secondWORD:
21058 ffestb_local_.decl.type = FFESTP_typeWORD;
21059 return (ffelexHandler) ffestb_decl_recursive1_;
21060
21061 case FFESTR_secondREAL:
21062 ffestb_local_.decl.type = FFESTP_typeREAL;
21063 return (ffelexHandler) ffestb_decl_recursive1_;
21064
21065 case FFESTR_secondCOMPLEX:
21066 ffestb_local_.decl.type = FFESTP_typeCOMPLEX;
21067 return (ffelexHandler) ffestb_decl_recursive1_;
21068
21069 case FFESTR_secondLOGICAL:
21070 ffestb_local_.decl.type = FFESTP_typeLOGICAL;
21071 return (ffelexHandler) ffestb_decl_recursive1_;
21072
21073 case FFESTR_secondCHARACTER:
21074 ffestb_local_.decl.type = FFESTP_typeCHARACTER;
21075 return (ffelexHandler) ffestb_decl_recursive1_;
21076
21077 case FFESTR_secondDOUBLE:
21078 return (ffelexHandler) ffestb_decl_recursive2_;
21079
21080 case FFESTR_secondDOUBLEPRECISION:
21081 ffestb_local_.decl.type = FFESTP_typeDBLPRCSN;
21082 ffestb_local_.decl.kind = NULL;
21083 ffestb_local_.decl.kindt = NULL;
21084 ffestb_local_.decl.len = NULL;
21085 ffestb_local_.decl.lent = NULL;
21086 return (ffelexHandler) ffestb_decl_func_;
21087
21088 case FFESTR_secondDOUBLECOMPLEX:
21089 ffestb_local_.decl.type = FFESTP_typeDBLCMPLX;
21090 ffestb_local_.decl.kind = NULL;
21091 ffestb_local_.decl.kindt = NULL;
21092 ffestb_local_.decl.len = NULL;
21093 ffestb_local_.decl.lent = NULL;
21094 return (ffelexHandler) ffestb_decl_func_;
21095
21096 case FFESTR_secondTYPE:
21097 ffestb_local_.decl.type = FFESTP_typeTYPE;
21098 return (ffelexHandler) ffestb_decl_recursive3_;
21099
21100 case FFESTR_secondFUNCTION:
21101 ffestb_local_.dummy.first_kw = FFESTR_firstFUNCTION;
21102 ffestb_local_.dummy.badname = "FUNCTION";
21103 ffestb_local_.dummy.is_subr = FALSE;
21104 return (ffelexHandler) ffestb_decl_recursive4_;
21105
21106 case FFESTR_secondSUBROUTINE:
21107 ffestb_local_.dummy.first_kw = FFESTR_firstSUBROUTINE;
21108 ffestb_local_.dummy.badname = "SUBROUTINE";
21109 ffestb_local_.dummy.is_subr = TRUE;
21110 return (ffelexHandler) ffestb_decl_recursive4_;
21111
21112 default:
21113 ffelex_token_kill (ffestb_local_.decl.recursive);
21114 goto bad_1;
21115 }
21116
21117 case FFELEX_typeNAMES:
21118 if (ffesta_first_kw != FFESTR_firstRECURSIVE)
21119 goto bad_0;
21120 switch (ffelex_token_type (t))
21121 {
21122 case FFELEX_typeCOMMA:
21123 case FFELEX_typeCOLONCOLON:
21124 case FFELEX_typeASTERISK:
21125 case FFELEX_typeSEMICOLON:
21126 case FFELEX_typeEOS:
21127 ffesta_confirmed ();
21128 break;
21129
21130 default:
21131 break;
21132 }
21133 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlRECURSIVE);
21134 if (!ffesrc_is_name_init (*p))
21135 goto bad_0;
21136 ffestb_local_.decl.recursive
21137 = ffelex_token_name_from_names (ffesta_tokens[0], 0,
21138 FFESTR_firstlRECURSIVE);
21139 nt = ffelex_token_names_from_names (ffesta_tokens[0],
21140 FFESTR_firstlRECURSIVE, 0);
21141 switch (ffestr_first (nt))
21142 {
21143 case FFESTR_firstINTGR:
21144 p = ffelex_token_text (nt) + (i = FFESTR_firstlINTGR);
21145 ffestb_local_.decl.type = FFESTP_typeINTEGER;
21146 needfunc = FALSE;
21147 goto typefunc;
21148
21149 case FFESTR_firstBYTE:
21150 p = ffelex_token_text (nt) + (i = FFESTR_firstlBYTE);
21151 ffestb_local_.decl.type = FFESTP_typeBYTE;
21152 needfunc = FALSE;
21153 goto typefunc;
21154
21155 case FFESTR_firstWORD:
21156 p = ffelex_token_text (nt) + (i = FFESTR_firstlWORD);
21157 ffestb_local_.decl.type = FFESTP_typeWORD;
21158 needfunc = FALSE;
21159 goto typefunc;
21160
21161 case FFESTR_firstREAL:
21162 p = ffelex_token_text (nt) + (i = FFESTR_firstlREAL);
21163 ffestb_local_.decl.type = FFESTP_typeREAL;
21164 needfunc = FALSE;
21165 goto typefunc;
21166
21167 case FFESTR_firstCMPLX:
21168 p = ffelex_token_text (nt) + (i = FFESTR_firstlCMPLX);
21169 ffestb_local_.decl.type = FFESTP_typeCOMPLEX;
21170 needfunc = FALSE;
21171 goto typefunc;
21172
21173 case FFESTR_firstLGCL:
21174 p = ffelex_token_text (nt) + (i = FFESTR_firstlLGCL);
21175 ffestb_local_.decl.type = FFESTP_typeLOGICAL;
21176 needfunc = FALSE;
21177 goto typefunc;
21178
21179 case FFESTR_firstCHRCTR:
21180 p = ffelex_token_text (nt) + (i = FFESTR_firstlCHRCTR);
21181 ffestb_local_.decl.type = FFESTP_typeCHARACTER;
21182 needfunc = FALSE;
21183 goto typefunc;
21184
21185 case FFESTR_firstDBLPRCSN:
21186 p = ffelex_token_text (nt) + (i = FFESTR_firstlDBLPRCSN);
21187 ffestb_local_.decl.type = FFESTP_typeDBLPRCSN;
21188 needfunc = TRUE;
21189 goto typefunc;
21190
21191 case FFESTR_firstDBLCMPLX:
21192 p = ffelex_token_text (nt) + (i = FFESTR_firstlDBLCMPLX);
21193 ffestb_local_.decl.type = FFESTP_typeDBLCMPLX;
21194 needfunc = TRUE;
21195 goto typefunc;
21196
21197 case FFESTR_firstTYPE:
21198 p = ffelex_token_text (nt) + (i = FFESTR_firstlTYPE);
21199 ffestb_local_.decl.type = FFESTP_typeTYPE;
21200 next = (ffelexHandler) ffestb_decl_recursive3_;
21201 break;
21202
21203 case FFESTR_firstFUNCTION:
21204 p = ffelex_token_text (nt) + (i = FFESTR_firstlFUNCTION);
21205 ffestb_local_.dummy.first_kw = FFESTR_firstFUNCTION;
21206 ffestb_local_.dummy.badname = "FUNCTION";
21207 ffestb_local_.dummy.is_subr = FALSE;
21208 next = (ffelexHandler) ffestb_decl_recursive4_;
21209 break;
21210
21211 case FFESTR_firstSUBROUTINE:
21212 p = ffelex_token_text (nt) + (i = FFESTR_firstlSUBROUTINE);
21213 ffestb_local_.dummy.first_kw = FFESTR_firstSUBROUTINE;
21214 ffestb_local_.dummy.badname = "SUBROUTINE";
21215 ffestb_local_.dummy.is_subr = TRUE;
21216 next = (ffelexHandler) ffestb_decl_recursive4_;
21217 break;
21218
21219 default:
21220 ffelex_token_kill (ffestb_local_.decl.recursive);
21221 ffelex_token_kill (nt);
21222 goto bad_1;
21223 }
21224 if (*p == '\0')
21225 {
21226 ffelex_token_kill (nt);
21227 return (ffelexHandler) (*next) (t);
21228 }
21229 if (!ffesrc_is_name_init (*p))
21230 goto bad_i;
21231 ot = ffelex_token_name_from_names (nt, i, 0);
21232 ffelex_token_kill (nt);
21233 next = (ffelexHandler) (*next) (ot);
21234 ffelex_token_kill (ot);
21235 return (ffelexHandler) (*next) (t);
21236
21237 default:
21238 goto bad_0;
21239 }
21240
21241 typefunc:
21242 if (*p == '\0')
21243 {
21244 ffelex_token_kill (nt);
21245 if (needfunc)
21246 {
21247 ffelex_token_kill (ffestb_local_.decl.recursive);
21248 goto bad_1;
21249 }
21250 return (ffelexHandler) ffestb_decl_recursive1_ (t);
21251 }
21252 if (!ffesrc_is_name_init (*p))
21253 goto bad_i;
21254 ot = ffelex_token_names_from_names (nt, i, 0);
21255 ffelex_token_kill (nt);
21256 if (ffestr_first (ot) != FFESTR_firstFUNCTION)
21257 goto bad_o;
21258 p = ffelex_token_text (ot) + (i = FFESTR_firstlFUNCTION);
21259 if (!ffesrc_is_name_init (*p))
21260 goto bad_i;
21261 ffesta_tokens[1] = ffelex_token_name_from_names (ot, i, 0);
21262 ffelex_token_kill (ot);
21263 ffestb_local_.decl.kind = NULL;
21264 ffestb_local_.decl.kindt = NULL;
21265 ffestb_local_.decl.len = NULL;
21266 ffestb_local_.decl.lent = NULL;
21267 return (ffelexHandler) ffestb_decl_funcname_1_ (t);
21268
21269 bad_0:
21270 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", ffesta_tokens[0]);
21271 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
21272
21273 bad_1:
21274 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
21275 return (ffelexHandler) ffelex_swallow_tokens (t,
21276 (ffelexHandler) ffesta_zero);
21277
21278 bad_i:
21279 ffelex_token_kill (ffestb_local_.decl.recursive);
21280 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "type-declaration", nt, i, t);
21281 ffelex_token_kill (nt);
21282 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
21283
21284 bad_o:
21285 ffelex_token_kill (ffestb_local_.decl.recursive);
21286 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", ot);
21287 ffelex_token_kill (ot);
21288 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
21289 }
21290
21291
21292
21293
21294
21295
21296
21297 static ffelexHandler
21298 ffestb_decl_recursive1_ (ffelexToken t)
21299 {
21300 switch (ffelex_token_type (t))
21301 {
21302 case FFELEX_typeASTERISK:
21303 ffesta_confirmed ();
21304 ffestb_local_.decl.handler = (ffelexHandler) ffestb_decl_func_;
21305 ffestb_local_.decl.badname = "TYPEFUNC";
21306 if (ffestb_local_.decl.type == FFESTP_typeCHARACTER)
21307 return (ffelexHandler) ffestb_decl_starlen_;
21308 return (ffelexHandler) ffestb_decl_starkind_;
21309
21310 case FFELEX_typeOPEN_PAREN:
21311 ffestb_local_.decl.handler = (ffelexHandler) ffestb_decl_func_;
21312 ffestb_local_.decl.badname = "TYPEFUNC";
21313 if (ffestb_local_.decl.type == FFESTP_typeCHARACTER)
21314 {
21315 ffestb_local_.decl.kind = NULL;
21316 ffestb_local_.decl.kindt = NULL;
21317 ffestb_local_.decl.len = NULL;
21318 ffestb_local_.decl.lent = NULL;
21319 return (ffelexHandler) ffestb_decl_typeparams_;
21320 }
21321 return (ffelexHandler) ffestb_decl_kindparam_;
21322
21323 case FFELEX_typeNAME:
21324 ffestb_local_.decl.kind = NULL;
21325 ffestb_local_.decl.kindt = NULL;
21326 ffestb_local_.decl.len = NULL;
21327 ffestb_local_.decl.lent = NULL;
21328 return (ffelexHandler) ffestb_decl_func_ (t);
21329
21330 default:
21331 break;
21332 }
21333
21334 if (ffestb_local_.decl.recursive != NULL)
21335 ffelex_token_kill (ffestb_local_.decl.recursive);
21336 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
21337 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
21338 }
21339
21340
21341
21342
21343
21344
21345
21346 static ffelexHandler
21347 ffestb_decl_recursive2_ (ffelexToken t)
21348 {
21349 switch (ffelex_token_type (t))
21350 {
21351 case FFELEX_typeNAME:
21352 switch (ffestr_second (t))
21353 {
21354 case FFESTR_secondPRECISION:
21355 ffestb_local_.decl.type = FFESTP_typeDBLPRCSN;
21356 break;
21357
21358 case FFESTR_secondCOMPLEX:
21359 ffestb_local_.decl.type = FFESTP_typeDBLCMPLX;
21360 break;
21361
21362 default:
21363 goto bad;
21364 }
21365 ffestb_local_.decl.kind = NULL;
21366 ffestb_local_.decl.kindt = NULL;
21367 ffestb_local_.decl.len = NULL;
21368 ffestb_local_.decl.lent = NULL;
21369 return (ffelexHandler) ffestb_decl_func_;
21370
21371 default:
21372 break;
21373 }
21374
21375 bad:
21376 if (ffestb_local_.decl.recursive != NULL)
21377 ffelex_token_kill (ffestb_local_.decl.recursive);
21378 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
21379 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
21380 }
21381
21382
21383
21384
21385
21386
21387
21388 static ffelexHandler
21389 ffestb_decl_recursive3_ (ffelexToken t)
21390 {
21391 switch (ffelex_token_type (t))
21392 {
21393 case FFELEX_typeOPEN_PAREN:
21394 ffestb_local_.decl.handler = (ffelexHandler) ffestb_decl_func_;
21395 ffestb_local_.decl.badname = "TYPEFUNC";
21396 return (ffelexHandler) ffestb_decl_typetype1_;
21397
21398 default:
21399 break;
21400 }
21401
21402 if (ffestb_local_.decl.recursive != NULL)
21403 ffelex_token_kill (ffestb_local_.decl.recursive);
21404 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
21405 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
21406 }
21407
21408
21409
21410
21411
21412
21413
21414 static ffelexHandler
21415 ffestb_decl_recursive4_ (ffelexToken t)
21416 {
21417 switch (ffelex_token_type (t))
21418 {
21419 case FFELEX_typeNAME:
21420 ffesta_tokens[1] = ffelex_token_use (t);
21421 return (ffelexHandler) ffestb_dummy1_;
21422
21423 default:
21424 break;
21425 }
21426
21427 if (ffestb_local_.decl.recursive != NULL)
21428 ffelex_token_kill (ffestb_local_.decl.recursive);
21429 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
21430 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
21431 }
21432
21433 #endif
21434
21435
21436
21437
21438
21439
21440
21441 #if FFESTR_F90
21442 ffelexHandler
21443 ffestb_decl_typetype (ffelexToken t)
21444 {
21445 switch (ffelex_token_type (ffesta_tokens[0]))
21446 {
21447 case FFELEX_typeNAME:
21448 if (ffesta_first_kw != FFESTR_firstTYPE)
21449 goto bad_0;
21450 break;
21451
21452 case FFELEX_typeNAMES:
21453 if (ffesta_first_kw != FFESTR_firstTYPE)
21454 goto bad_0;
21455 if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlTYPE)
21456 goto bad_0;
21457 break;
21458
21459 default:
21460 goto bad_0;
21461 }
21462
21463 switch (ffelex_token_type (t))
21464 {
21465 case FFELEX_typeOPEN_PAREN:
21466 break;
21467
21468 case FFELEX_typeEOS:
21469 case FFELEX_typeSEMICOLON:
21470 case FFELEX_typeCOLONCOLON:
21471 ffesta_confirmed ();
21472 goto bad_1;
21473
21474 default:
21475 goto bad_1;
21476 }
21477
21478 ffestb_local_.decl.recursive = NULL;
21479 ffestb_local_.decl.parameter = FALSE;
21480 ffestb_local_.decl.coloncolon = FALSE;
21481
21482 ffestb_local_.decl.handler = (ffelexHandler) ffestb_decl_attrsp_;
21483 ffestb_local_.decl.badname = "type-declaration";
21484 return (ffelexHandler) ffestb_decl_typetype1_;
21485
21486 bad_0:
21487 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", ffesta_tokens[0]);
21488 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
21489
21490 bad_1:
21491 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
21492 return (ffelexHandler) ffelex_swallow_tokens (t,
21493 (ffelexHandler) ffesta_zero);
21494 }
21495
21496 #endif
21497
21498
21499
21500
21501
21502
21503 static ffelexHandler
21504 ffestb_decl_attrs_ (ffelexToken t)
21505 {
21506 switch (ffelex_token_type (t))
21507 {
21508 case FFELEX_typeNAME:
21509 switch (ffestr_first (t))
21510 {
21511 #if FFESTR_F90
21512 case FFESTR_firstALLOCATABLE:
21513 if (!ffesta_is_inhibited ())
21514 ffestc_decl_attrib (FFESTP_attribALLOCATABLE, t,
21515 FFESTR_otherNone, NULL);
21516 return (ffelexHandler) ffestb_decl_attrs_7_;
21517 #endif
21518
21519 case FFESTR_firstDIMENSION:
21520 ffesta_tokens[1] = ffelex_token_use (t);
21521 return (ffelexHandler) ffestb_decl_attrs_1_;
21522
21523 case FFESTR_firstEXTERNAL:
21524 if (!ffesta_is_inhibited ())
21525 ffestc_decl_attrib (FFESTP_attribEXTERNAL, t,
21526 FFESTR_otherNone, NULL);
21527 return (ffelexHandler) ffestb_decl_attrs_7_;
21528
21529 #if FFESTR_F90
21530 case FFESTR_firstINTENT:
21531 ffesta_tokens[1] = ffelex_token_use (t);
21532 return (ffelexHandler) ffestb_decl_attrs_3_;
21533 #endif
21534
21535 case FFESTR_firstINTRINSIC:
21536 if (!ffesta_is_inhibited ())
21537 ffestc_decl_attrib (FFESTP_attribINTRINSIC, t,
21538 FFESTR_otherNone, NULL);
21539 return (ffelexHandler) ffestb_decl_attrs_7_;
21540
21541 #if FFESTR_F90
21542 case FFESTR_firstOPTIONAL:
21543 if (!ffesta_is_inhibited ())
21544 ffestc_decl_attrib (FFESTP_attribOPTIONAL, t,
21545 FFESTR_otherNone, NULL);
21546 return (ffelexHandler) ffestb_decl_attrs_7_;
21547 #endif
21548
21549 case FFESTR_firstPARAMETER:
21550 ffestb_local_.decl.parameter = TRUE;
21551 if (!ffesta_is_inhibited ())
21552 ffestc_decl_attrib (FFESTP_attribPARAMETER, t,
21553 FFESTR_otherNone, NULL);
21554 return (ffelexHandler) ffestb_decl_attrs_7_;
21555
21556 #if FFESTR_F90
21557 case FFESTR_firstPOINTER:
21558 if (!ffesta_is_inhibited ())
21559 ffestc_decl_attrib (FFESTP_attribPOINTER, t,
21560 FFESTR_otherNone, NULL);
21561 return (ffelexHandler) ffestb_decl_attrs_7_;
21562 #endif
21563
21564 #if FFESTR_F90
21565 case FFESTR_firstPRIVATE:
21566 if (!ffesta_is_inhibited ())
21567 ffestc_decl_attrib (FFESTP_attribPRIVATE, t,
21568 FFESTR_otherNone, NULL);
21569 return (ffelexHandler) ffestb_decl_attrs_7_;
21570
21571 case FFESTR_firstPUBLIC:
21572 if (!ffesta_is_inhibited ())
21573 ffestc_decl_attrib (FFESTP_attribPUBLIC, t,
21574 FFESTR_otherNone, NULL);
21575 return (ffelexHandler) ffestb_decl_attrs_7_;
21576 #endif
21577
21578 case FFESTR_firstSAVE:
21579 if (!ffesta_is_inhibited ())
21580 ffestc_decl_attrib (FFESTP_attribSAVE, t,
21581 FFESTR_otherNone, NULL);
21582 return (ffelexHandler) ffestb_decl_attrs_7_;
21583
21584 #if FFESTR_F90
21585 case FFESTR_firstTARGET:
21586 if (!ffesta_is_inhibited ())
21587 ffestc_decl_attrib (FFESTP_attribTARGET, t,
21588 FFESTR_otherNone, NULL);
21589 return (ffelexHandler) ffestb_decl_attrs_7_;
21590 #endif
21591
21592 default:
21593 ffesta_ffebad_1t (FFEBAD_INVALID_TYPEDECL_ATTR, t);
21594 return (ffelexHandler) ffestb_decl_attrs_7_;
21595 }
21596 break;
21597
21598 default:
21599 break;
21600 }
21601
21602 if (!ffesta_is_inhibited ())
21603 ffestc_decl_finish ();
21604 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
21605 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
21606 }
21607
21608
21609
21610
21611
21612
21613
21614 static ffelexHandler
21615 ffestb_decl_attrs_1_ (ffelexToken t)
21616 {
21617 switch (ffelex_token_type (t))
21618 {
21619 case FFELEX_typeOPEN_PAREN:
21620 ffestb_subrargs_.dim_list.dims = ffestt_dimlist_create ();
21621 ffestb_subrargs_.dim_list.handler = (ffelexHandler) ffestb_decl_attrs_2_;
21622 ffestb_subrargs_.dim_list.pool = ffesta_scratch_pool;
21623 ffestb_subrargs_.dim_list.ctx = ffesta_is_entry_valid
21624 ? FFEEXPR_contextDIMLIST : FFEEXPR_contextDIMLISTCOMMON;
21625 #ifdef FFECOM_dimensionsMAX
21626 ffestb_subrargs_.dim_list.ndims = 0;
21627 #endif
21628 return (ffelexHandler) ffeexpr_rhs (ffesta_scratch_pool,
21629 ffestb_subrargs_.dim_list.ctx,
21630 (ffeexprCallback) ffestb_subr_dimlist_);
21631
21632 case FFELEX_typeCOMMA:
21633 case FFELEX_typeCOLONCOLON:
21634 ffesta_ffebad_1t (FFEBAD_INVALID_TYPEDECL_ATTR, ffesta_tokens[1]);
21635 ffelex_token_kill (ffesta_tokens[1]);
21636 return (ffelexHandler) ffestb_decl_attrs_7_ (t);
21637
21638 default:
21639 break;
21640 }
21641
21642 if (!ffesta_is_inhibited ())
21643 ffestc_decl_finish ();
21644 ffelex_token_kill (ffesta_tokens[1]);
21645 ffesta_ffebad_1t (FFEBAD_INVALID_TYPEDECL_ATTR, t);
21646 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
21647 }
21648
21649
21650
21651
21652
21653
21654
21655
21656 static ffelexHandler
21657 ffestb_decl_attrs_2_ (ffelexToken t)
21658 {
21659 if (!ffestb_subrargs_.dim_list.ok)
21660 goto bad;
21661
21662 switch (ffelex_token_type (t))
21663 {
21664 case FFELEX_typeCOMMA:
21665 case FFELEX_typeCOLONCOLON:
21666 if (!ffesta_is_inhibited ())
21667 ffestc_decl_attrib (FFESTP_attribDIMENSION, ffesta_tokens[1],
21668 FFESTR_otherNone, ffestb_subrargs_.dim_list.dims);
21669 ffelex_token_kill (ffesta_tokens[1]);
21670 ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
21671 return (ffelexHandler) ffestb_decl_attrs_7_ (t);
21672
21673 default:
21674 break;
21675 }
21676
21677 bad:
21678 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
21679 if (!ffesta_is_inhibited ())
21680 ffestc_decl_finish ();
21681 ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
21682 ffelex_token_kill (ffesta_tokens[1]);
21683 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
21684 }
21685
21686
21687
21688
21689
21690
21691
21692 #if FFESTR_F90
21693 static ffelexHandler
21694 ffestb_decl_attrs_3_ (ffelexToken t)
21695 {
21696 switch (ffelex_token_type (t))
21697 {
21698 case FFELEX_typeOPEN_PAREN:
21699 return (ffelexHandler) ffestb_decl_attrs_4_;
21700
21701 case FFELEX_typeCOMMA:
21702 case FFELEX_typeCOLONCOLON:
21703 ffesta_ffebad_1t (FFEBAD_INVALID_TYPEDECL_ATTR, ffesta_tokens[1]);
21704 ffelex_token_kill (ffesta_tokens[1]);
21705 return (ffelexHandler) ffestb_decl_attrs_7_ (t);
21706
21707 default:
21708 break;
21709 }
21710
21711 if (!ffesta_is_inhibited ())
21712 ffestc_decl_finish ();
21713 ffelex_token_kill (ffesta_tokens[1]);
21714 ffesta_ffebad_1t (FFEBAD_INVALID_TYPEDECL_ATTR, t);
21715 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
21716 }
21717
21718
21719
21720
21721
21722
21723
21724 static ffelexHandler
21725 ffestb_decl_attrs_4_ (ffelexToken t)
21726 {
21727 switch (ffelex_token_type (t))
21728 {
21729 case FFELEX_typeNAME:
21730 ffestb_local_.decl.kw = ffestr_other (t);
21731 switch (ffestb_local_.decl.kw)
21732 {
21733 case FFESTR_otherIN:
21734 return (ffelexHandler) ffestb_decl_attrs_5_;
21735
21736 case FFESTR_otherINOUT:
21737 return (ffelexHandler) ffestb_decl_attrs_6_;
21738
21739 case FFESTR_otherOUT:
21740 return (ffelexHandler) ffestb_decl_attrs_6_;
21741
21742 default:
21743 ffestb_local_.decl.kw = FFESTR_otherNone;
21744 ffesta_ffebad_1t (FFEBAD_INVALID_TYPEDECL_ATTR, t);
21745 return (ffelexHandler) ffestb_decl_attrs_5_;
21746 }
21747 break;
21748
21749 default:
21750 break;
21751 }
21752
21753 if (!ffesta_is_inhibited ())
21754 ffestc_decl_finish ();
21755 ffelex_token_kill (ffesta_tokens[1]);
21756 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
21757 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
21758 }
21759
21760
21761
21762
21763
21764
21765
21766 static ffelexHandler
21767 ffestb_decl_attrs_5_ (ffelexToken t)
21768 {
21769 switch (ffelex_token_type (t))
21770 {
21771 case FFELEX_typeNAME:
21772 switch (ffestr_other (t))
21773 {
21774 case FFESTR_otherOUT:
21775 if (ffestb_local_.decl.kw != FFESTR_otherNone)
21776 ffestb_local_.decl.kw = FFESTR_otherINOUT;
21777 return (ffelexHandler) ffestb_decl_attrs_6_;
21778
21779 default:
21780 if (ffestb_local_.decl.kw != FFESTR_otherNone)
21781 {
21782 ffestb_local_.decl.kw = FFESTR_otherNone;
21783 ffesta_ffebad_1t (FFEBAD_INVALID_TYPEDECL_ATTR, t);
21784 }
21785 return (ffelexHandler) ffestb_decl_attrs_5_;
21786 }
21787 break;
21788
21789 case FFELEX_typeCLOSE_PAREN:
21790 return (ffelexHandler) ffestb_decl_attrs_6_ (t);
21791
21792 default:
21793 break;
21794 }
21795
21796 if (!ffesta_is_inhibited ())
21797 ffestc_decl_finish ();
21798 ffelex_token_kill (ffesta_tokens[1]);
21799 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
21800 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
21801 }
21802
21803
21804
21805
21806
21807
21808
21809
21810 static ffelexHandler
21811 ffestb_decl_attrs_6_ (ffelexToken t)
21812 {
21813 switch (ffelex_token_type (t))
21814 {
21815 case FFELEX_typeCLOSE_PAREN:
21816 if ((ffestb_local_.decl.kw != FFESTR_otherNone)
21817 && !ffesta_is_inhibited ())
21818 ffestc_decl_attrib (FFESTP_attribINTENT, ffesta_tokens[1],
21819 ffestb_local_.decl.kw, NULL);
21820 ffelex_token_kill (ffesta_tokens[1]);
21821 return (ffelexHandler) ffestb_decl_attrs_7_;
21822
21823 default:
21824 break;
21825 }
21826
21827 if (!ffesta_is_inhibited ())
21828 ffestc_decl_finish ();
21829 ffelex_token_kill (ffesta_tokens[1]);
21830 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
21831 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
21832 }
21833
21834 #endif
21835
21836
21837
21838
21839
21840
21841 static ffelexHandler
21842 ffestb_decl_attrs_7_ (ffelexToken t)
21843 {
21844 switch (ffelex_token_type (t))
21845 {
21846 case FFELEX_typeCOMMA:
21847 return (ffelexHandler) ffestb_decl_attrs_;
21848
21849 case FFELEX_typeCOLONCOLON:
21850 ffestb_local_.decl.coloncolon = TRUE;
21851 return (ffelexHandler) ffestb_decl_ents_;
21852
21853 default:
21854 break;
21855 }
21856
21857 if (!ffesta_is_inhibited ())
21858 ffestc_decl_finish ();
21859 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
21860 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
21861 }
21862
21863
21864
21865
21866
21867
21868
21869
21870
21871 static ffelexHandler
21872 ffestb_decl_attrsp_ (ffelexToken t)
21873 {
21874 ffelex_set_names (FALSE);
21875
21876 switch (ffelex_token_type (t))
21877 {
21878 case FFELEX_typeCOMMA:
21879 ffesta_confirmed ();
21880 if (!ffesta_is_inhibited ())
21881 ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
21882 ffestb_local_.decl.kind, ffestb_local_.decl.kindt,
21883 ffestb_local_.decl.len, ffestb_local_.decl.lent);
21884 if (ffestb_local_.decl.kindt != NULL)
21885 ffelex_token_kill (ffestb_local_.decl.kindt);
21886 if (ffestb_local_.decl.lent != NULL)
21887 ffelex_token_kill (ffestb_local_.decl.lent);
21888 return (ffelexHandler) ffestb_decl_attrs_;
21889
21890 case FFELEX_typeCOLONCOLON:
21891 ffestb_local_.decl.coloncolon = TRUE;
21892 ffesta_confirmed ();
21893 if (!ffesta_is_inhibited ())
21894 ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
21895 ffestb_local_.decl.kind, ffestb_local_.decl.kindt,
21896 ffestb_local_.decl.len, ffestb_local_.decl.lent);
21897 if (ffestb_local_.decl.kindt != NULL)
21898 ffelex_token_kill (ffestb_local_.decl.kindt);
21899 if (ffestb_local_.decl.lent != NULL)
21900 ffelex_token_kill (ffestb_local_.decl.lent);
21901 return (ffelexHandler) ffestb_decl_ents_;
21902
21903 default:
21904 return (ffelexHandler) ffestb_decl_entsp_ (t);
21905 }
21906 }
21907
21908
21909
21910
21911
21912
21913
21914 static ffelexHandler
21915 ffestb_decl_ents_ (ffelexToken t)
21916 {
21917 switch (ffelex_token_type (t))
21918 {
21919 case FFELEX_typeNAME:
21920 ffesta_tokens[1] = ffelex_token_use (t);
21921 return (ffelexHandler) ffestb_decl_ents_1_;
21922
21923 default:
21924 break;
21925 }
21926
21927 if (!ffesta_is_inhibited ())
21928 ffestc_decl_finish ();
21929 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
21930 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
21931 }
21932
21933
21934
21935
21936
21937
21938
21939 static ffelexHandler
21940 ffestb_decl_ents_1_ (ffelexToken t)
21941 {
21942 switch (ffelex_token_type (t))
21943 {
21944 case FFELEX_typeCOMMA:
21945 if (!ffesta_is_inhibited ())
21946 ffestc_decl_item (ffesta_tokens[1], NULL, NULL, NULL, NULL, NULL, NULL,
21947 NULL, FALSE);
21948 ffelex_token_kill (ffesta_tokens[1]);
21949 return (ffelexHandler) ffestb_decl_ents_;
21950
21951 case FFELEX_typeEOS:
21952 case FFELEX_typeSEMICOLON:
21953 if (!ffesta_is_inhibited ())
21954 {
21955 ffestc_decl_item (ffesta_tokens[1], NULL, NULL, NULL, NULL, NULL, NULL,
21956 NULL, FALSE);
21957 ffestc_decl_finish ();
21958 }
21959 ffelex_token_kill (ffesta_tokens[1]);
21960 return (ffelexHandler) ffesta_zero (t);
21961
21962 case FFELEX_typeASTERISK:
21963 ffestb_local_.decl.len = NULL;
21964 ffestb_local_.decl.lent = NULL;
21965 return (ffelexHandler) ffestb_decl_ents_2_;
21966
21967 case FFELEX_typeOPEN_PAREN:
21968 ffestb_local_.decl.kind = NULL;
21969 ffestb_local_.decl.kindt = NULL;
21970 ffestb_local_.decl.len = NULL;
21971 ffestb_local_.decl.lent = NULL;
21972 return (ffelexHandler) ffestb_decl_ents_3_ (t);
21973
21974 case FFELEX_typeEQUALS:
21975 case FFELEX_typeSLASH:
21976 ffestb_local_.decl.kind = NULL;
21977 ffestb_local_.decl.kindt = NULL;
21978 ffestb_subrargs_.dim_list.dims = NULL;
21979 ffestb_local_.decl.len = NULL;
21980 ffestb_local_.decl.lent = NULL;
21981 return (ffelexHandler) ffestb_decl_ents_7_ (t);
21982
21983 default:
21984 break;
21985 }
21986
21987 if (!ffesta_is_inhibited ())
21988 ffestc_decl_finish ();
21989 ffelex_token_kill (ffesta_tokens[1]);
21990 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
21991 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
21992 }
21993
21994
21995
21996
21997
21998
21999
22000
22001 static ffelexHandler
22002 ffestb_decl_ents_2_ (ffelexToken t)
22003 {
22004 switch (ffelex_token_type (t))
22005 {
22006 case FFELEX_typeNUMBER:
22007 if (ffestb_local_.decl.type != FFESTP_typeCHARACTER)
22008 {
22009 ffestb_local_.decl.kind = NULL;
22010 ffestb_local_.decl.kindt = ffelex_token_use (t);
22011 return (ffelexHandler) ffestb_decl_ents_3_;
22012 }
22013
22014 case FFELEX_typeOPEN_PAREN:
22015
22016 ffestb_local_.decl.kind = NULL;
22017 ffestb_local_.decl.kindt = NULL;
22018 ffestb_subrargs_.dim_list.dims = NULL;
22019 return (ffelexHandler) ffestb_decl_ents_5_ (t);
22020
22021 default:
22022 break;
22023 }
22024
22025 if (!ffesta_is_inhibited ())
22026 ffestc_decl_finish ();
22027 ffelex_token_kill (ffesta_tokens[1]);
22028 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
22029 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
22030 }
22031
22032
22033
22034
22035
22036
22037
22038
22039 static ffelexHandler
22040 ffestb_decl_ents_3_ (ffelexToken t)
22041 {
22042 switch (ffelex_token_type (t))
22043 {
22044 case FFELEX_typeCOMMA:
22045 if (!ffesta_is_inhibited ())
22046 ffestc_decl_item (ffesta_tokens[1], ffestb_local_.decl.kind,
22047 ffestb_local_.decl.kindt, NULL, NULL, NULL, NULL, NULL, FALSE);
22048 ffelex_token_kill (ffesta_tokens[1]);
22049 if (ffestb_local_.decl.kindt != NULL)
22050 ffelex_token_kill (ffestb_local_.decl.kindt);
22051 return (ffelexHandler) ffestb_decl_ents_;
22052
22053 case FFELEX_typeEOS:
22054 case FFELEX_typeSEMICOLON:
22055 if (!ffesta_is_inhibited ())
22056 {
22057 ffestc_decl_item (ffesta_tokens[1], ffestb_local_.decl.kind,
22058 ffestb_local_.decl.kindt, NULL, NULL, NULL, NULL, NULL, FALSE);
22059 ffestc_decl_finish ();
22060 }
22061 ffelex_token_kill (ffesta_tokens[1]);
22062 if (ffestb_local_.decl.kindt != NULL)
22063 ffelex_token_kill (ffestb_local_.decl.kindt);
22064 return (ffelexHandler) ffesta_zero (t);
22065
22066 case FFELEX_typeASTERISK:
22067 ffestb_subrargs_.dim_list.dims = NULL;
22068 return (ffelexHandler) ffestb_decl_ents_5_;
22069
22070 case FFELEX_typeOPEN_PAREN:
22071 ffestb_subrargs_.dim_list.dims = ffestt_dimlist_create ();
22072 ffestb_subrargs_.dim_list.handler = (ffelexHandler) ffestb_decl_ents_4_;
22073 ffestb_subrargs_.dim_list.pool = ffesta_output_pool;
22074 ffestb_subrargs_.dim_list.ctx = ffesta_is_entry_valid
22075 ? FFEEXPR_contextDIMLIST : FFEEXPR_contextDIMLISTCOMMON;
22076 #ifdef FFECOM_dimensionsMAX
22077 ffestb_subrargs_.dim_list.ndims = 0;
22078 #endif
22079 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
22080 ffestb_subrargs_.dim_list.ctx,
22081 (ffeexprCallback) ffestb_subr_dimlist_);
22082
22083 case FFELEX_typeEQUALS:
22084 case FFELEX_typeSLASH:
22085 ffestb_local_.decl.kind = NULL;
22086 ffestb_local_.decl.kindt = NULL;
22087 ffestb_subrargs_.dim_list.dims = NULL;
22088 ffestb_local_.decl.len = NULL;
22089 ffestb_local_.decl.lent = NULL;
22090 return (ffelexHandler) ffestb_decl_ents_7_ (t);
22091
22092 default:
22093 break;
22094 }
22095
22096 if (!ffesta_is_inhibited ())
22097 ffestc_decl_finish ();
22098 ffelex_token_kill (ffesta_tokens[1]);
22099 if (ffestb_local_.decl.kindt != NULL)
22100 ffelex_token_kill (ffestb_local_.decl.kindt);
22101 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
22102 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
22103 }
22104
22105
22106
22107
22108
22109
22110
22111
22112 static ffelexHandler
22113 ffestb_decl_ents_4_ (ffelexToken t)
22114 {
22115 ffelexToken nt;
22116
22117 if (!ffestb_subrargs_.dim_list.ok)
22118 goto bad;
22119
22120 if (ffelex_token_type (ffesta_tokens[1]) == FFELEX_typeNAMES)
22121 {
22122 switch (ffelex_token_type (t))
22123 {
22124 case FFELEX_typeCOMMA:
22125 case FFELEX_typeEOS:
22126 case FFELEX_typeSEMICOLON:
22127 case FFELEX_typeASTERISK:
22128 case FFELEX_typeSLASH:
22129 case FFELEX_typeCOLONCOLON:
22130 break;
22131
22132 default:
22133
22134 goto bad;
22135 }
22136 ffesta_confirmed ();
22137 if (!ffesta_is_inhibited ())
22138 {
22139 nt = ffelex_token_name_from_names (ffesta_tokens[1], 0, 0);
22140 ffelex_token_kill (ffesta_tokens[1]);
22141 ffesta_tokens[1] = nt;
22142 ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
22143 NULL, NULL, NULL, NULL);
22144 }
22145 }
22146
22147 switch (ffelex_token_type (t))
22148 {
22149 case FFELEX_typeCOMMA:
22150 if (!ffesta_is_inhibited ())
22151 ffestc_decl_item (ffesta_tokens[1], ffestb_local_.decl.kind,
22152 ffestb_local_.decl.kindt, ffestb_subrargs_.dim_list.dims,
22153 ffestb_local_.decl.len, ffestb_local_.decl.lent, NULL, NULL,
22154 FALSE);
22155 ffelex_token_kill (ffesta_tokens[1]);
22156 if (ffestb_local_.decl.kindt != NULL)
22157 ffelex_token_kill (ffestb_local_.decl.kindt);
22158 if (ffestb_local_.decl.lent != NULL)
22159 ffelex_token_kill (ffestb_local_.decl.lent);
22160 ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
22161 return (ffelexHandler) ffestb_decl_ents_;
22162
22163 case FFELEX_typeEOS:
22164 case FFELEX_typeSEMICOLON:
22165 if (!ffesta_is_inhibited ())
22166 {
22167 ffestc_decl_item (ffesta_tokens[1], ffestb_local_.decl.kind,
22168 ffestb_local_.decl.kindt, ffestb_subrargs_.dim_list.dims,
22169 ffestb_local_.decl.len, ffestb_local_.decl.lent, NULL, NULL,
22170 FALSE);
22171 ffestc_decl_finish ();
22172 }
22173 ffelex_token_kill (ffesta_tokens[1]);
22174 if (ffestb_local_.decl.kindt != NULL)
22175 ffelex_token_kill (ffestb_local_.decl.kindt);
22176 if (ffestb_local_.decl.lent != NULL)
22177 ffelex_token_kill (ffestb_local_.decl.lent);
22178 ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
22179 return (ffelexHandler) ffesta_zero (t);
22180
22181 case FFELEX_typeASTERISK:
22182 if (ffestb_local_.decl.lent != NULL)
22183 break;
22184 return (ffelexHandler) ffestb_decl_ents_5_;
22185
22186 case FFELEX_typeEQUALS:
22187 case FFELEX_typeSLASH:
22188 return (ffelexHandler) ffestb_decl_ents_7_ (t);
22189
22190 default:
22191 break;
22192 }
22193
22194 bad:
22195 if ((ffelex_token_type (ffesta_tokens[1]) != FFELEX_typeNAMES)
22196 && !ffesta_is_inhibited ())
22197 ffestc_decl_finish ();
22198 ffelex_token_kill (ffesta_tokens[1]);
22199 if (ffestb_local_.decl.kindt != NULL)
22200 ffelex_token_kill (ffestb_local_.decl.kindt);
22201 if (ffestb_local_.decl.lent != NULL)
22202 ffelex_token_kill (ffestb_local_.decl.lent);
22203 ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
22204 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
22205 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
22206 }
22207
22208
22209
22210
22211
22212
22213
22214
22215
22216 static ffelexHandler
22217 ffestb_decl_ents_5_ (ffelexToken t)
22218 {
22219 switch (ffelex_token_type (t))
22220 {
22221 case FFELEX_typeNUMBER:
22222 ffestb_local_.decl.len = NULL;
22223 ffestb_local_.decl.lent = ffelex_token_use (t);
22224 return (ffelexHandler) ffestb_decl_ents_7_;
22225
22226 case FFELEX_typeOPEN_PAREN:
22227 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
22228 FFEEXPR_contextCHARACTERSIZE, (ffeexprCallback) ffestb_decl_ents_6_);
22229
22230 default:
22231 break;
22232 }
22233
22234 if (!ffesta_is_inhibited ())
22235 ffestc_decl_finish ();
22236 ffelex_token_kill (ffesta_tokens[1]);
22237 if (ffestb_local_.decl.kindt != NULL)
22238 ffelex_token_kill (ffestb_local_.decl.kindt);
22239 if (ffestb_subrargs_.dim_list.dims != NULL)
22240 ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
22241 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
22242 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
22243 }
22244
22245
22246
22247
22248
22249
22250
22251
22252
22253 static ffelexHandler
22254 ffestb_decl_ents_6_ (ffelexToken ft, ffebld expr, ffelexToken t)
22255 {
22256 switch (ffelex_token_type (t))
22257 {
22258 case FFELEX_typeCLOSE_PAREN:
22259 if (expr == NULL)
22260 break;
22261 ffestb_local_.decl.len = expr;
22262 ffestb_local_.decl.lent = ffelex_token_use (ft);
22263 return (ffelexHandler) ffestb_decl_ents_7_;
22264
22265 default:
22266 break;
22267 }
22268
22269 if (!ffesta_is_inhibited ())
22270 ffestc_decl_finish ();
22271 ffelex_token_kill (ffesta_tokens[1]);
22272 if (ffestb_local_.decl.kindt != NULL)
22273 ffelex_token_kill (ffestb_local_.decl.kindt);
22274 if (ffestb_subrargs_.dim_list.dims != NULL)
22275 ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
22276 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
22277 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
22278 }
22279
22280
22281
22282
22283
22284
22285
22286
22287
22288 static ffelexHandler
22289 ffestb_decl_ents_7_ (ffelexToken t)
22290 {
22291 switch (ffelex_token_type (t))
22292 {
22293 case FFELEX_typeCOMMA:
22294 if (!ffesta_is_inhibited ())
22295 ffestc_decl_item (ffesta_tokens[1], ffestb_local_.decl.kind,
22296 ffestb_local_.decl.kindt, ffestb_subrargs_.dim_list.dims,
22297 ffestb_local_.decl.len, ffestb_local_.decl.lent, NULL, NULL,
22298 FALSE);
22299 ffelex_token_kill (ffesta_tokens[1]);
22300 if (ffestb_local_.decl.kindt != NULL)
22301 ffelex_token_kill (ffestb_local_.decl.kindt);
22302 if (ffestb_subrargs_.dim_list.dims != NULL)
22303 ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
22304 if (ffestb_local_.decl.lent != NULL)
22305 ffelex_token_kill (ffestb_local_.decl.lent);
22306 return (ffelexHandler) ffestb_decl_ents_;
22307
22308 case FFELEX_typeEOS:
22309 case FFELEX_typeSEMICOLON:
22310 if (!ffesta_is_inhibited ())
22311 {
22312 ffestc_decl_item (ffesta_tokens[1], ffestb_local_.decl.kind,
22313 ffestb_local_.decl.kindt, ffestb_subrargs_.dim_list.dims,
22314 ffestb_local_.decl.len, ffestb_local_.decl.lent, NULL, NULL,
22315 FALSE);
22316 ffestc_decl_finish ();
22317 }
22318 ffelex_token_kill (ffesta_tokens[1]);
22319 if (ffestb_local_.decl.kindt != NULL)
22320 ffelex_token_kill (ffestb_local_.decl.kindt);
22321 if (ffestb_subrargs_.dim_list.dims != NULL)
22322 ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
22323 if (ffestb_local_.decl.lent != NULL)
22324 ffelex_token_kill (ffestb_local_.decl.lent);
22325 return (ffelexHandler) ffesta_zero (t);
22326
22327 case FFELEX_typeEQUALS:
22328 if (!ffestb_local_.decl.coloncolon)
22329 ffesta_ffebad_1t (FFEBAD_INVALID_TYPEDECL_INIT, t);
22330 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
22331 ffestb_local_.decl.parameter ? FFEEXPR_contextPARAMETER
22332 : FFEEXPR_contextINITVAL, (ffeexprCallback) ffestb_decl_ents_8_);
22333
22334 case FFELEX_typeSLASH:
22335 if (!ffesta_is_inhibited ())
22336 {
22337 ffestc_decl_item (ffesta_tokens[1], ffestb_local_.decl.kind,
22338 ffestb_local_.decl.kindt, ffestb_subrargs_.dim_list.dims,
22339 ffestb_local_.decl.len, ffestb_local_.decl.lent, NULL, NULL,
22340 TRUE);
22341 ffestc_decl_itemstartvals ();
22342 }
22343 ffelex_token_kill (ffesta_tokens[1]);
22344 if (ffestb_local_.decl.kindt != NULL)
22345 ffelex_token_kill (ffestb_local_.decl.kindt);
22346 if (ffestb_subrargs_.dim_list.dims != NULL)
22347 ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
22348 if (ffestb_local_.decl.lent != NULL)
22349 ffelex_token_kill (ffestb_local_.decl.lent);
22350 return (ffelexHandler) ffeexpr_rhs
22351 (ffesta_output_pool, FFEEXPR_contextDATA,
22352 (ffeexprCallback) ffestb_decl_ents_9_);
22353
22354 default:
22355 break;
22356 }
22357
22358 if (!ffesta_is_inhibited ())
22359 ffestc_decl_finish ();
22360 ffelex_token_kill (ffesta_tokens[1]);
22361 if (ffestb_local_.decl.kindt != NULL)
22362 ffelex_token_kill (ffestb_local_.decl.kindt);
22363 if (ffestb_subrargs_.dim_list.dims != NULL)
22364 ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
22365 if (ffestb_local_.decl.lent != NULL)
22366 ffelex_token_kill (ffestb_local_.decl.lent);
22367 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
22368 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
22369 }
22370
22371
22372
22373
22374
22375
22376
22377
22378
22379 static ffelexHandler
22380 ffestb_decl_ents_8_ (ffelexToken ft, ffebld expr, ffelexToken t)
22381 {
22382 switch (ffelex_token_type (t))
22383 {
22384 case FFELEX_typeCOMMA:
22385 if (expr == NULL)
22386 break;
22387 if (!ffesta_is_inhibited ())
22388 ffestc_decl_item (ffesta_tokens[1], ffestb_local_.decl.kind,
22389 ffestb_local_.decl.kindt, ffestb_subrargs_.dim_list.dims,
22390 ffestb_local_.decl.len, ffestb_local_.decl.lent, expr, ft,
22391 FALSE);
22392 ffelex_token_kill (ffesta_tokens[1]);
22393 if (ffestb_local_.decl.kindt != NULL)
22394 ffelex_token_kill (ffestb_local_.decl.kindt);
22395 if (ffestb_subrargs_.dim_list.dims != NULL)
22396 ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
22397 if (ffestb_local_.decl.lent != NULL)
22398 ffelex_token_kill (ffestb_local_.decl.lent);
22399 return (ffelexHandler) ffestb_decl_ents_;
22400
22401 case FFELEX_typeEOS:
22402 case FFELEX_typeSEMICOLON:
22403 if (!ffesta_is_inhibited ())
22404 {
22405 ffestc_decl_item (ffesta_tokens[1], ffestb_local_.decl.kind,
22406 ffestb_local_.decl.kindt, ffestb_subrargs_.dim_list.dims,
22407 ffestb_local_.decl.len, ffestb_local_.decl.lent, expr, ft,
22408 FALSE);
22409 ffestc_decl_finish ();
22410 }
22411 ffelex_token_kill (ffesta_tokens[1]);
22412 if (ffestb_local_.decl.kindt != NULL)
22413 ffelex_token_kill (ffestb_local_.decl.kindt);
22414 if (ffestb_subrargs_.dim_list.dims != NULL)
22415 ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
22416 if (ffestb_local_.decl.lent != NULL)
22417 ffelex_token_kill (ffestb_local_.decl.lent);
22418 return (ffelexHandler) ffesta_zero (t);
22419
22420 default:
22421 break;
22422 }
22423
22424 if (!ffesta_is_inhibited ())
22425 ffestc_decl_finish ();
22426 ffelex_token_kill (ffesta_tokens[1]);
22427 if (ffestb_local_.decl.kindt != NULL)
22428 ffelex_token_kill (ffestb_local_.decl.kindt);
22429 if (ffestb_subrargs_.dim_list.dims != NULL)
22430 ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
22431 if (ffestb_local_.decl.lent != NULL)
22432 ffelex_token_kill (ffestb_local_.decl.lent);
22433 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
22434 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
22435 }
22436
22437
22438
22439
22440
22441
22442
22443 static ffelexHandler
22444 ffestb_decl_ents_9_ (ffelexToken ft, ffebld expr, ffelexToken t)
22445 {
22446 switch (ffelex_token_type (t))
22447 {
22448 case FFELEX_typeCOMMA:
22449 if (expr == NULL)
22450 break;
22451 if (!ffesta_is_inhibited ())
22452 ffestc_decl_itemvalue (NULL, NULL, expr, ft);
22453 return (ffelexHandler) ffeexpr_rhs
22454 (ffesta_output_pool, FFEEXPR_contextDATA,
22455 (ffeexprCallback) ffestb_decl_ents_9_);
22456
22457 case FFELEX_typeASTERISK:
22458 if (expr == NULL)
22459 break;
22460 ffestb_local_.decl.expr = expr;
22461 ffesta_tokens[1] = ffelex_token_use (ft);
22462 return (ffelexHandler) ffeexpr_rhs
22463 (ffesta_output_pool, FFEEXPR_contextDATA,
22464 (ffeexprCallback) ffestb_decl_ents_10_);
22465
22466 case FFELEX_typeSLASH:
22467 if (expr == NULL)
22468 break;
22469 if (!ffesta_is_inhibited ())
22470 {
22471 ffestc_decl_itemvalue (NULL, NULL, expr, ft);
22472 ffestc_decl_itemendvals (t);
22473 }
22474 return (ffelexHandler) ffestb_decl_ents_11_;
22475
22476 default:
22477 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
22478 break;
22479 }
22480
22481 if (!ffesta_is_inhibited ())
22482 {
22483 ffestc_decl_itemendvals (t);
22484 ffestc_decl_finish ();
22485 }
22486 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
22487 }
22488
22489
22490
22491
22492
22493
22494
22495 static ffelexHandler
22496 ffestb_decl_ents_10_ (ffelexToken ft, ffebld expr, ffelexToken t)
22497 {
22498 switch (ffelex_token_type (t))
22499 {
22500 case FFELEX_typeCOMMA:
22501 if (expr == NULL)
22502 break;
22503 if (!ffesta_is_inhibited ())
22504 ffestc_decl_itemvalue (ffestb_local_.decl.expr, ffesta_tokens[1],
22505 expr, ft);
22506 ffelex_token_kill (ffesta_tokens[1]);
22507 return (ffelexHandler) ffeexpr_rhs
22508 (ffesta_output_pool, FFEEXPR_contextDATA,
22509 (ffeexprCallback) ffestb_decl_ents_9_);
22510
22511 case FFELEX_typeSLASH:
22512 if (expr == NULL)
22513 break;
22514 if (!ffesta_is_inhibited ())
22515 {
22516 ffestc_decl_itemvalue (ffestb_local_.decl.expr, ffesta_tokens[1],
22517 expr, ft);
22518 ffestc_decl_itemendvals (t);
22519 }
22520 ffelex_token_kill (ffesta_tokens[1]);
22521 return (ffelexHandler) ffestb_decl_ents_11_;
22522
22523 default:
22524 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
22525 break;
22526 }
22527
22528 if (!ffesta_is_inhibited ())
22529 {
22530 ffestc_decl_itemendvals (t);
22531 ffestc_decl_finish ();
22532 }
22533 ffelex_token_kill (ffesta_tokens[1]);
22534 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
22535 }
22536
22537
22538
22539
22540
22541
22542
22543
22544
22545 static ffelexHandler
22546 ffestb_decl_ents_11_ (ffelexToken t)
22547 {
22548 switch (ffelex_token_type (t))
22549 {
22550 case FFELEX_typeCOMMA:
22551 return (ffelexHandler) ffestb_decl_ents_;
22552
22553 case FFELEX_typeEOS:
22554 case FFELEX_typeSEMICOLON:
22555 if (!ffesta_is_inhibited ())
22556 ffestc_decl_finish ();
22557 return (ffelexHandler) ffesta_zero (t);
22558
22559 default:
22560 break;
22561 }
22562
22563 if (!ffesta_is_inhibited ())
22564 ffestc_decl_finish ();
22565 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
22566 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
22567 }
22568
22569
22570
22571
22572
22573
22574
22575
22576 static ffelexHandler
22577 ffestb_decl_entsp_ (ffelexToken t)
22578 {
22579 switch (ffelex_token_type (t))
22580 {
22581 case FFELEX_typeNAME:
22582 ffesta_confirmed ();
22583 ffesta_tokens[1] = ffelex_token_use (t);
22584 return (ffelexHandler) ffestb_decl_entsp_1_;
22585
22586 case FFELEX_typeNAMES:
22587 ffesta_confirmed ();
22588 ffesta_tokens[1] = ffelex_token_use (t);
22589 return (ffelexHandler) ffestb_decl_entsp_2_;
22590
22591 default:
22592 break;
22593 }
22594
22595 if (ffestb_local_.decl.kindt != NULL)
22596 ffelex_token_kill (ffestb_local_.decl.kindt);
22597 if (ffestb_local_.decl.lent != NULL)
22598 ffelex_token_kill (ffestb_local_.decl.lent);
22599 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
22600 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
22601 }
22602
22603
22604
22605
22606
22607
22608
22609
22610
22611 static ffelexHandler
22612 ffestb_decl_entsp_1_ (ffelexToken t)
22613 {
22614 switch (ffelex_token_type (t))
22615 {
22616 case FFELEX_typeNAME:
22617 switch (ffestr_first (ffesta_tokens[1]))
22618 {
22619 #if FFESTR_F90
22620 case FFESTR_firstRECURSIVE:
22621 if (ffestr_first (t) != FFESTR_firstFUNCTION)
22622 {
22623 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
22624 break;
22625 }
22626 ffestb_local_.decl.recursive = ffesta_tokens[1];
22627 return (ffelexHandler) ffestb_decl_funcname_;
22628 #endif
22629
22630 case FFESTR_firstFUNCTION:
22631 ffelex_token_kill (ffesta_tokens[1]);
22632 return (ffelexHandler) ffestb_decl_funcname_ (t);
22633
22634 default:
22635 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", ffesta_tokens[1]);
22636 break;
22637 }
22638 break;
22639
22640 default:
22641 if ((ffelex_token_type (ffesta_tokens[1]) != FFELEX_typeNAMES)
22642 && !ffesta_is_inhibited ())
22643 ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
22644 ffestb_local_.decl.kind, ffestb_local_.decl.kindt,
22645 ffestb_local_.decl.len, ffestb_local_.decl.lent);
22646 if (ffestb_local_.decl.kindt != NULL)
22647 ffelex_token_kill (ffestb_local_.decl.kindt);
22648 if (ffestb_local_.decl.lent != NULL)
22649 ffelex_token_kill (ffestb_local_.decl.lent);
22650
22651 return (ffelexHandler) ffestb_decl_ents_1_ (t);
22652 }
22653
22654 if (ffestb_local_.decl.kindt != NULL)
22655 ffelex_token_kill (ffestb_local_.decl.kindt);
22656 if (ffestb_local_.decl.lent != NULL)
22657 ffelex_token_kill (ffestb_local_.decl.lent);
22658 ffelex_token_kill (ffesta_tokens[1]);
22659 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
22660 }
22661
22662
22663
22664
22665
22666
22667
22668
22669
22670
22671
22672 static ffelexHandler
22673 ffestb_decl_entsp_2_ (ffelexToken t)
22674 {
22675 ffelexToken nt;
22676 bool asterisk_ok;
22677 unsigned const char *p;
22678 ffeTokenLength i;
22679
22680 switch (ffelex_token_type (t))
22681 {
22682 case FFELEX_typeASTERISK:
22683 ffesta_confirmed ();
22684 switch (ffestb_local_.decl.type)
22685 {
22686 case FFESTP_typeINTEGER:
22687 case FFESTP_typeREAL:
22688 case FFESTP_typeCOMPLEX:
22689 case FFESTP_typeLOGICAL:
22690 asterisk_ok = (ffestb_local_.decl.kindt == NULL);
22691 break;
22692
22693 case FFESTP_typeCHARACTER:
22694 asterisk_ok = (ffestb_local_.decl.lent == NULL);
22695 break;
22696
22697 case FFESTP_typeBYTE:
22698 case FFESTP_typeWORD:
22699 default:
22700 asterisk_ok = FALSE;
22701 break;
22702 }
22703 switch (ffestr_first (ffesta_tokens[1]))
22704 {
22705 #if FFESTR_F90
22706 case FFESTR_firstRECURSIVEFNCTN:
22707 if (!asterisk_ok)
22708 break;
22709
22710 p = ffelex_token_text (ffesta_tokens[1])
22711 + (i = FFESTR_firstlRECURSIVEFNCTN);
22712 if (!ffesrc_is_name_init (*p))
22713 break;
22714 ffestb_local_.decl.recursive
22715 = ffelex_token_name_from_names (ffesta_tokens[1], 0,
22716 FFESTR_firstlRECURSIVEFNCTN);
22717 ffesta_tokens[2] = ffelex_token_name_from_names (ffesta_tokens[1],
22718 FFESTR_firstlRECURSIVEFNCTN, 0);
22719 return (ffelexHandler) ffestb_decl_entsp_3_;
22720 #endif
22721
22722 case FFESTR_firstFUNCTION:
22723 if (!asterisk_ok)
22724 break;
22725
22726 p = ffelex_token_text (ffesta_tokens[1])
22727 + (i = FFESTR_firstlFUNCTION);
22728 if (!ffesrc_is_name_init (*p))
22729 break;
22730 ffestb_local_.decl.recursive = NULL;
22731 ffesta_tokens[2] = ffelex_token_name_from_names (ffesta_tokens[1],
22732 FFESTR_firstlFUNCTION, 0);
22733 return (ffelexHandler) ffestb_decl_entsp_3_;
22734
22735 default:
22736 break;
22737 }
22738 break;
22739
22740 case FFELEX_typeOPEN_PAREN:
22741 ffestb_local_.decl.aster_after = FALSE;
22742 switch (ffestr_first (ffesta_tokens[1]))
22743 {
22744 #if FFESTR_F90
22745 case FFESTR_firstRECURSIVEFNCTN:
22746 p = ffelex_token_text (ffesta_tokens[1])
22747 + (i = FFESTR_firstlRECURSIVEFNCTN);
22748 if (!ffesrc_is_name_init (*p))
22749 break;
22750 ffestb_local_.decl.recursive
22751 = ffelex_token_name_from_names (ffesta_tokens[1], 0,
22752 FFESTR_firstlRECURSIVEFNCTN);
22753 ffesta_tokens[2] = ffelex_token_name_from_names (ffesta_tokens[1],
22754 FFESTR_firstlRECURSIVEFNCTN, 0);
22755 return (ffelexHandler) ffestb_decl_entsp_5_ (t);
22756 #endif
22757
22758 case FFESTR_firstFUNCTION:
22759 p = ffelex_token_text (ffesta_tokens[1])
22760 + (i = FFESTR_firstlFUNCTION);
22761 if (!ffesrc_is_name_init (*p))
22762 break;
22763 ffestb_local_.decl.recursive = NULL;
22764 ffesta_tokens[2] = ffelex_token_name_from_names (ffesta_tokens[1],
22765 FFESTR_firstlFUNCTION, 0);
22766 return (ffelexHandler) ffestb_decl_entsp_5_ (t);
22767
22768 default:
22769 break;
22770 }
22771 if ((ffestb_local_.decl.kindt != NULL)
22772 || (ffestb_local_.decl.lent != NULL))
22773 break;
22774
22775 return (ffelexHandler) ffestb_decl_entsp_1_ (t);
22776
22777 default:
22778 break;
22779 }
22780
22781 nt = ffelex_token_name_from_names (ffesta_tokens[1], 0, 0);
22782 ffelex_token_kill (ffesta_tokens[1]);
22783 ffesta_tokens[1] = nt;
22784 return (ffelexHandler) ffestb_decl_entsp_1_ (t);
22785 }
22786
22787
22788
22789
22790
22791
22792
22793
22794 static ffelexHandler
22795 ffestb_decl_entsp_3_ (ffelexToken t)
22796 {
22797 ffestb_local_.decl.aster_after = TRUE;
22798
22799 switch (ffelex_token_type (t))
22800 {
22801 case FFELEX_typeNUMBER:
22802 switch (ffestb_local_.decl.type)
22803 {
22804 case FFESTP_typeINTEGER:
22805 case FFESTP_typeREAL:
22806 case FFESTP_typeCOMPLEX:
22807 case FFESTP_typeLOGICAL:
22808 ffestb_local_.decl.kindt = ffelex_token_use (t);
22809 break;
22810
22811 case FFESTP_typeCHARACTER:
22812 ffestb_local_.decl.lent = ffelex_token_use (t);
22813 break;
22814
22815 case FFESTP_typeBYTE:
22816 case FFESTP_typeWORD:
22817 default:
22818 assert (FALSE);
22819 }
22820 return (ffelexHandler) ffestb_decl_entsp_5_;
22821
22822 case FFELEX_typeOPEN_PAREN:
22823 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
22824 FFEEXPR_contextCHARACTERSIZE,
22825 (ffeexprCallback) ffestb_decl_entsp_4_);
22826
22827 default:
22828 break;
22829 }
22830
22831 if (ffestb_local_.decl.recursive != NULL)
22832 ffelex_token_kill (ffestb_local_.decl.recursive);
22833 if (ffestb_local_.decl.kindt != NULL)
22834 ffelex_token_kill (ffestb_local_.decl.kindt);
22835 if (ffestb_local_.decl.lent != NULL)
22836 ffelex_token_kill (ffestb_local_.decl.lent);
22837 ffelex_token_kill (ffesta_tokens[1]);
22838 ffelex_token_kill (ffesta_tokens[2]);
22839 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
22840 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
22841 }
22842
22843
22844
22845
22846
22847
22848
22849
22850 static ffelexHandler
22851 ffestb_decl_entsp_4_ (ffelexToken ft, ffebld expr, ffelexToken t)
22852 {
22853 switch (ffelex_token_type (t))
22854 {
22855 case FFELEX_typeCLOSE_PAREN:
22856 if (expr == NULL)
22857 break;
22858 switch (ffestb_local_.decl.type)
22859 {
22860 case FFESTP_typeCHARACTER:
22861 ffestb_local_.decl.len = expr;
22862 ffestb_local_.decl.lent = ffelex_token_use (ft);
22863 break;
22864
22865 default:
22866 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
22867 break;
22868 }
22869 return (ffelexHandler) ffestb_decl_entsp_5_;
22870
22871 default:
22872 break;
22873 }
22874
22875 if (ffestb_local_.decl.recursive != NULL)
22876 ffelex_token_kill (ffestb_local_.decl.recursive);
22877 if (ffestb_local_.decl.kindt != NULL)
22878 ffelex_token_kill (ffestb_local_.decl.kindt);
22879 if (ffestb_local_.decl.lent != NULL)
22880 ffelex_token_kill (ffestb_local_.decl.lent);
22881 ffelex_token_kill (ffesta_tokens[1]);
22882 ffelex_token_kill (ffesta_tokens[2]);
22883 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
22884 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
22885 }
22886
22887
22888
22889
22890
22891
22892
22893
22894
22895
22896
22897
22898
22899
22900
22901
22902 static ffelexHandler
22903 ffestb_decl_entsp_5_ (ffelexToken t)
22904 {
22905 switch (ffelex_token_type (t))
22906 {
22907 case FFELEX_typeOPEN_PAREN:
22908 if (ffestb_local_.decl.aster_after && (ffestb_local_.decl.len != NULL))
22909 {
22910
22911
22912
22913
22914 ffelex_token_kill (ffesta_tokens[1]);
22915 ffesta_tokens[1] = ffesta_tokens[2];
22916 return (ffelexHandler) ffestb_decl_funcname_4_ (t);
22917 }
22918 ffestb_local_.decl.toklist = ffestt_tokenlist_create ();
22919 ffestb_local_.decl.empty = TRUE;
22920 ffestt_tokenlist_append (ffestb_local_.decl.toklist, ffelex_token_use (t));
22921 return (ffelexHandler) ffestb_decl_entsp_6_;
22922
22923 default:
22924 break;
22925 }
22926
22927 assert (ffestb_local_.decl.aster_after);
22928 ffesta_confirmed ();
22929
22930 ffestb_subr_ambig_to_ents_ ();
22931 ffestb_subrargs_.dim_list.dims = NULL;
22932 return (ffelexHandler) ffestb_decl_ents_7_ (t);
22933 }
22934
22935
22936
22937
22938
22939
22940
22941
22942
22943 static ffelexHandler
22944 ffestb_decl_entsp_6_ (ffelexToken t)
22945 {
22946 ffelexHandler next;
22947
22948 switch (ffelex_token_type (t))
22949 {
22950 case FFELEX_typeCLOSE_PAREN:
22951 if (!ffestb_local_.decl.empty)
22952 {
22953
22954 ffestt_tokenlist_append (ffestb_local_.decl.toklist,
22955 ffelex_token_use (t));
22956 return (ffelexHandler) ffestb_decl_entsp_8_;
22957 }
22958 ffelex_token_kill (ffesta_tokens[1]);
22959 ffesta_tokens[1] = ffesta_tokens[2];
22960 next = (ffelexHandler) ffestt_tokenlist_handle
22961 (ffestb_local_.decl.toklist, (ffelexHandler) ffestb_decl_funcname_4_);
22962 ffestt_tokenlist_kill (ffestb_local_.decl.toklist);
22963 return (ffelexHandler) (*next) (t);
22964
22965 case FFELEX_typeNAME:
22966 ffestb_local_.decl.empty = FALSE;
22967 ffestt_tokenlist_append (ffestb_local_.decl.toklist, ffelex_token_use (t));
22968 return (ffelexHandler) ffestb_decl_entsp_7_;
22969
22970 case FFELEX_typeEQUALS:
22971 case FFELEX_typePOINTS:
22972 case FFELEX_typePERCENT:
22973 case FFELEX_typePERIOD:
22974 case FFELEX_typeOPEN_PAREN:
22975 if ((ffestb_local_.decl.kindt != NULL)
22976 || (ffestb_local_.decl.lent != NULL))
22977 break;
22978
22979 return (ffelexHandler) ffestb_subr_ambig_nope_ (t);
22980
22981 default:
22982 break;
22983 }
22984
22985 ffesta_confirmed ();
22986 ffestb_subr_ambig_to_ents_ ();
22987 next = (ffelexHandler) ffestt_tokenlist_handle (ffestb_local_.decl.toklist,
22988 (ffelexHandler) ffestb_decl_ents_3_);
22989 ffestt_tokenlist_kill (ffestb_local_.decl.toklist);
22990 return (ffelexHandler) (*next) (t);
22991 }
22992
22993
22994
22995
22996
22997
22998
22999
23000
23001 static ffelexHandler
23002 ffestb_decl_entsp_7_ (ffelexToken t)
23003 {
23004 ffelexHandler next;
23005
23006 switch (ffelex_token_type (t))
23007 {
23008 case FFELEX_typeCLOSE_PAREN:
23009 ffestt_tokenlist_append (ffestb_local_.decl.toklist, ffelex_token_use (t));
23010 return (ffelexHandler) ffestb_decl_entsp_8_;
23011
23012 case FFELEX_typeCOMMA:
23013 ffestt_tokenlist_append (ffestb_local_.decl.toklist, ffelex_token_use (t));
23014 return (ffelexHandler) ffestb_decl_entsp_6_;
23015
23016 case FFELEX_typeEQUALS:
23017 case FFELEX_typePOINTS:
23018 case FFELEX_typePERCENT:
23019 case FFELEX_typePERIOD:
23020 case FFELEX_typeOPEN_PAREN:
23021 if ((ffestb_local_.decl.kindt != NULL)
23022 || (ffestb_local_.decl.lent != NULL))
23023 break;
23024
23025 return (ffelexHandler) ffestb_subr_ambig_nope_ (t);
23026
23027 default:
23028 break;
23029 }
23030
23031 ffesta_confirmed ();
23032 ffestb_subr_ambig_to_ents_ ();
23033 next = (ffelexHandler) ffestt_tokenlist_handle (ffestb_local_.decl.toklist,
23034 (ffelexHandler) ffestb_decl_ents_3_);
23035 ffestt_tokenlist_kill (ffestb_local_.decl.toklist);
23036 return (ffelexHandler) (*next) (t);
23037 }
23038
23039
23040
23041
23042
23043
23044
23045
23046
23047
23048
23049 static ffelexHandler
23050 ffestb_decl_entsp_8_ (ffelexToken t)
23051 {
23052 ffelexHandler next;
23053
23054 switch (ffelex_token_type (t))
23055 {
23056 case FFELEX_typeEOS:
23057 case FFELEX_typeSEMICOLON:
23058 ffesta_confirmed ();
23059 if (ffestc_is_decl_not_R1219 ())
23060 break;
23061
23062 case FFELEX_typeNAME:
23063 ffesta_confirmed ();
23064 ffelex_token_kill (ffesta_tokens[1]);
23065 ffesta_tokens[1] = ffesta_tokens[2];
23066 next = (ffelexHandler) ffestt_tokenlist_handle
23067 (ffestb_local_.decl.toklist, (ffelexHandler) ffestb_decl_funcname_4_);
23068 ffestt_tokenlist_kill (ffestb_local_.decl.toklist);
23069 return (ffelexHandler) (*next) (t);
23070
23071 case FFELEX_typeEQUALS:
23072 case FFELEX_typePOINTS:
23073 case FFELEX_typePERCENT:
23074 case FFELEX_typePERIOD:
23075 case FFELEX_typeOPEN_PAREN:
23076 if ((ffestb_local_.decl.kindt != NULL)
23077 || (ffestb_local_.decl.lent != NULL))
23078 break;
23079
23080 return (ffelexHandler) ffestb_subr_ambig_nope_ (t);
23081
23082 default:
23083 break;
23084 }
23085
23086 ffesta_confirmed ();
23087 ffestb_subr_ambig_to_ents_ ();
23088 next = (ffelexHandler) ffestt_tokenlist_handle (ffestb_local_.decl.toklist,
23089 (ffelexHandler) ffestb_decl_ents_3_);
23090 ffestt_tokenlist_kill (ffestb_local_.decl.toklist);
23091 return (ffelexHandler) (*next) (t);
23092 }
23093
23094
23095
23096
23097
23098
23099
23100 #if FFESTR_F90
23101 static ffelexHandler
23102 ffestb_decl_func_ (ffelexToken t)
23103 {
23104 const char *p;
23105 ffeTokenLength i;
23106
23107 ffelex_set_names (FALSE);
23108
23109 switch (ffelex_token_type (t))
23110 {
23111 case FFELEX_typeNAME:
23112 if (ffestr_first (t) != FFESTR_firstFUNCTION)
23113 break;
23114 return (ffelexHandler) ffestb_decl_funcname_;
23115
23116 case FFELEX_typeNAMES:
23117 ffesta_confirmed ();
23118 if (ffestr_first (t) != FFESTR_firstFUNCTION)
23119 break;
23120 p = ffelex_token_text (t) + (i = FFESTR_firstlFUNCTION);
23121 if (*p == '\0')
23122 break;
23123 if (!ffesrc_is_name_init (*p))
23124 goto bad_i;
23125 ffesta_tokens[1] = ffelex_token_name_from_names (t, i, 0);
23126 return (ffelexHandler) ffestb_decl_funcname_1_;
23127
23128 default:
23129 break;
23130 }
23131
23132 if (ffestb_local_.decl.recursive != NULL)
23133 ffelex_token_kill (ffestb_local_.decl.recursive);
23134 if (ffestb_local_.decl.kindt != NULL)
23135 ffelex_token_kill (ffestb_local_.decl.kindt);
23136 if (ffestb_local_.decl.lent != NULL)
23137 ffelex_token_kill (ffestb_local_.decl.lent);
23138 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
23139 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
23140
23141 bad_i:
23142 if (ffestb_local_.decl.recursive != NULL)
23143 ffelex_token_kill (ffestb_local_.decl.recursive);
23144 if (ffestb_local_.decl.kindt != NULL)
23145 ffelex_token_kill (ffestb_local_.decl.kindt);
23146 if (ffestb_local_.decl.lent != NULL)
23147 ffelex_token_kill (ffestb_local_.decl.lent);
23148 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t, i, NULL);
23149 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
23150 }
23151
23152 #endif
23153
23154
23155
23156
23157
23158
23159 static ffelexHandler
23160 ffestb_decl_funcname_ (ffelexToken t)
23161 {
23162 switch (ffelex_token_type (t))
23163 {
23164 case FFELEX_typeNAME:
23165 ffesta_tokens[1] = ffelex_token_use (t);
23166 return (ffelexHandler) ffestb_decl_funcname_1_;
23167
23168 default:
23169 break;
23170 }
23171
23172 if (ffestb_local_.decl.recursive != NULL)
23173 ffelex_token_kill (ffestb_local_.decl.recursive);
23174 if (ffestb_local_.decl.kindt != NULL)
23175 ffelex_token_kill (ffestb_local_.decl.kindt);
23176 if (ffestb_local_.decl.lent != NULL)
23177 ffelex_token_kill (ffestb_local_.decl.lent);
23178 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
23179 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
23180 }
23181
23182
23183
23184
23185
23186
23187
23188
23189 static ffelexHandler
23190 ffestb_decl_funcname_1_ (ffelexToken t)
23191 {
23192 switch (ffelex_token_type (t))
23193 {
23194 case FFELEX_typeASTERISK:
23195 return (ffelexHandler) ffestb_decl_funcname_2_;
23196
23197 case FFELEX_typeOPEN_PAREN:
23198 return (ffelexHandler) ffestb_decl_funcname_4_ (t);
23199
23200 default:
23201 break;
23202 }
23203
23204 if (ffestb_local_.decl.recursive != NULL)
23205 ffelex_token_kill (ffestb_local_.decl.recursive);
23206 if (ffestb_local_.decl.kindt != NULL)
23207 ffelex_token_kill (ffestb_local_.decl.kindt);
23208 if (ffestb_local_.decl.lent != NULL)
23209 ffelex_token_kill (ffestb_local_.decl.lent);
23210 ffelex_token_kill (ffesta_tokens[1]);
23211 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
23212 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
23213 }
23214
23215
23216
23217
23218
23219
23220
23221
23222 static ffelexHandler
23223 ffestb_decl_funcname_2_ (ffelexToken t)
23224 {
23225 switch (ffelex_token_type (t))
23226 {
23227 case FFELEX_typeNUMBER:
23228 switch (ffestb_local_.decl.type)
23229 {
23230 case FFESTP_typeINTEGER:
23231 case FFESTP_typeREAL:
23232 case FFESTP_typeCOMPLEX:
23233 case FFESTP_typeLOGICAL:
23234 if (ffestb_local_.decl.kindt == NULL)
23235 ffestb_local_.decl.kindt = ffelex_token_use (t);
23236 else
23237 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
23238 break;
23239
23240 case FFESTP_typeCHARACTER:
23241 if (ffestb_local_.decl.lent == NULL)
23242 ffestb_local_.decl.lent = ffelex_token_use (t);
23243 else
23244 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
23245 break;
23246
23247 case FFESTP_typeBYTE:
23248 case FFESTP_typeWORD:
23249 default:
23250 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
23251 break;
23252 }
23253 return (ffelexHandler) ffestb_decl_funcname_4_;
23254
23255 case FFELEX_typeOPEN_PAREN:
23256 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
23257 FFEEXPR_contextCHARACTERSIZE,
23258 (ffeexprCallback) ffestb_decl_funcname_3_);
23259
23260 default:
23261 break;
23262 }
23263
23264 if (ffestb_local_.decl.recursive != NULL)
23265 ffelex_token_kill (ffestb_local_.decl.recursive);
23266 if (ffestb_local_.decl.kindt != NULL)
23267 ffelex_token_kill (ffestb_local_.decl.kindt);
23268 if (ffestb_local_.decl.lent != NULL)
23269 ffelex_token_kill (ffestb_local_.decl.lent);
23270 ffelex_token_kill (ffesta_tokens[1]);
23271 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
23272 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
23273 }
23274
23275
23276
23277
23278
23279
23280
23281
23282 static ffelexHandler
23283 ffestb_decl_funcname_3_ (ffelexToken ft, ffebld expr, ffelexToken t)
23284 {
23285 switch (ffelex_token_type (t))
23286 {
23287 case FFELEX_typeCLOSE_PAREN:
23288 if (expr == NULL)
23289 break;
23290 switch (ffestb_local_.decl.type)
23291 {
23292 case FFESTP_typeCHARACTER:
23293 if (ffestb_local_.decl.lent == NULL)
23294 {
23295 ffestb_local_.decl.len = expr;
23296 ffestb_local_.decl.lent = ffelex_token_use (ft);
23297 }
23298 else
23299 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
23300 break;
23301
23302 default:
23303 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
23304 break;
23305 }
23306 return (ffelexHandler) ffestb_decl_funcname_4_;
23307
23308 default:
23309 break;
23310 }
23311
23312 if (ffestb_local_.decl.recursive != NULL)
23313 ffelex_token_kill (ffestb_local_.decl.recursive);
23314 if (ffestb_local_.decl.kindt != NULL)
23315 ffelex_token_kill (ffestb_local_.decl.kindt);
23316 if (ffestb_local_.decl.lent != NULL)
23317 ffelex_token_kill (ffestb_local_.decl.lent);
23318 ffelex_token_kill (ffesta_tokens[1]);
23319 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
23320 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
23321 }
23322
23323
23324
23325
23326
23327
23328
23329
23330
23331 static ffelexHandler
23332 ffestb_decl_funcname_4_ (ffelexToken t)
23333 {
23334 switch (ffelex_token_type (t))
23335 {
23336 case FFELEX_typeOPEN_PAREN:
23337 ffestb_subrargs_.name_list.args = ffestt_tokenlist_create ();
23338 ffestb_subrargs_.name_list.handler
23339 = (ffelexHandler) ffestb_decl_funcname_5_;
23340 ffestb_subrargs_.name_list.is_subr = FALSE;
23341 ffestb_subrargs_.name_list.names = FALSE;
23342 return (ffelexHandler) ffestb_subr_name_list_;
23343
23344 default:
23345 break;
23346 }
23347
23348 if (ffestb_local_.decl.recursive != NULL)
23349 ffelex_token_kill (ffestb_local_.decl.recursive);
23350 if (ffestb_local_.decl.kindt != NULL)
23351 ffelex_token_kill (ffestb_local_.decl.kindt);
23352 if (ffestb_local_.decl.lent != NULL)
23353 ffelex_token_kill (ffestb_local_.decl.lent);
23354 ffelex_token_kill (ffesta_tokens[1]);
23355 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
23356 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
23357 }
23358
23359
23360
23361
23362
23363
23364
23365
23366
23367 static ffelexHandler
23368 ffestb_decl_funcname_5_ (ffelexToken t)
23369 {
23370 if (!ffestb_subrargs_.name_list.ok)
23371 goto bad;
23372
23373 switch (ffelex_token_type (t))
23374 {
23375 case FFELEX_typeEOS:
23376 case FFELEX_typeSEMICOLON:
23377 ffesta_confirmed ();
23378 if (!ffesta_is_inhibited ())
23379 ffestc_R1219 (ffesta_tokens[1], ffestb_subrargs_.name_list.args,
23380 ffestb_subrargs_.name_list.close_paren, ffestb_local_.decl.type,
23381 ffestb_local_.decl.kind, ffestb_local_.decl.kindt,
23382 ffestb_local_.decl.len, ffestb_local_.decl.lent,
23383 ffestb_local_.decl.recursive, NULL);
23384 if (ffestb_local_.decl.recursive != NULL)
23385 ffelex_token_kill (ffestb_local_.decl.recursive);
23386 if (ffestb_local_.decl.kindt != NULL)
23387 ffelex_token_kill (ffestb_local_.decl.kindt);
23388 if (ffestb_local_.decl.lent != NULL)
23389 ffelex_token_kill (ffestb_local_.decl.lent);
23390 ffelex_token_kill (ffesta_tokens[1]);
23391 ffelex_token_kill (ffestb_subrargs_.name_list.close_paren);
23392 ffestt_tokenlist_kill (ffestb_subrargs_.name_list.args);
23393 return (ffelexHandler) ffesta_zero (t);
23394
23395 case FFELEX_typeNAME:
23396 if (ffestr_other (t) != FFESTR_otherRESULT)
23397 break;
23398 return (ffelexHandler) ffestb_decl_funcname_6_;
23399
23400 default:
23401 break;
23402 }
23403
23404 bad:
23405 if (ffestb_local_.decl.recursive != NULL)
23406 ffelex_token_kill (ffestb_local_.decl.recursive);
23407 if (ffestb_local_.decl.kindt != NULL)
23408 ffelex_token_kill (ffestb_local_.decl.kindt);
23409 if (ffestb_local_.decl.lent != NULL)
23410 ffelex_token_kill (ffestb_local_.decl.lent);
23411 ffelex_token_kill (ffesta_tokens[1]);
23412 ffelex_token_kill (ffestb_subrargs_.name_list.close_paren);
23413 ffestt_tokenlist_kill (ffestb_subrargs_.name_list.args);
23414 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
23415 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
23416 }
23417
23418
23419
23420
23421
23422
23423
23424
23425
23426 static ffelexHandler
23427 ffestb_decl_funcname_6_ (ffelexToken t)
23428 {
23429 switch (ffelex_token_type (t))
23430 {
23431 case FFELEX_typeOPEN_PAREN:
23432 return (ffelexHandler) ffestb_decl_funcname_7_;
23433
23434 default:
23435 break;
23436 }
23437
23438 if (ffestb_local_.decl.recursive != NULL)
23439 ffelex_token_kill (ffestb_local_.decl.recursive);
23440 if (ffestb_local_.decl.kindt != NULL)
23441 ffelex_token_kill (ffestb_local_.decl.kindt);
23442 if (ffestb_local_.decl.lent != NULL)
23443 ffelex_token_kill (ffestb_local_.decl.lent);
23444 ffelex_token_kill (ffesta_tokens[1]);
23445 ffelex_token_kill (ffestb_subrargs_.name_list.close_paren);
23446 ffestt_tokenlist_kill (ffestb_subrargs_.name_list.args);
23447 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
23448 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
23449 }
23450
23451
23452
23453
23454
23455
23456
23457
23458
23459 static ffelexHandler
23460 ffestb_decl_funcname_7_ (ffelexToken t)
23461 {
23462 switch (ffelex_token_type (t))
23463 {
23464 case FFELEX_typeNAME:
23465 ffesta_tokens[2] = ffelex_token_use (t);
23466 return (ffelexHandler) ffestb_decl_funcname_8_;
23467
23468 default:
23469 break;
23470 }
23471
23472 if (ffestb_local_.decl.recursive != NULL)
23473 ffelex_token_kill (ffestb_local_.decl.recursive);
23474 if (ffestb_local_.decl.kindt != NULL)
23475 ffelex_token_kill (ffestb_local_.decl.kindt);
23476 if (ffestb_local_.decl.lent != NULL)
23477 ffelex_token_kill (ffestb_local_.decl.lent);
23478 ffelex_token_kill (ffesta_tokens[1]);
23479 ffelex_token_kill (ffestb_subrargs_.name_list.close_paren);
23480 ffestt_tokenlist_kill (ffestb_subrargs_.name_list.args);
23481 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
23482 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
23483 }
23484
23485
23486
23487
23488
23489
23490
23491
23492
23493 static ffelexHandler
23494 ffestb_decl_funcname_8_ (ffelexToken t)
23495 {
23496 switch (ffelex_token_type (t))
23497 {
23498 case FFELEX_typeCLOSE_PAREN:
23499 return (ffelexHandler) ffestb_decl_funcname_9_;
23500
23501 default:
23502 break;
23503 }
23504
23505 if (ffestb_local_.decl.recursive != NULL)
23506 ffelex_token_kill (ffestb_local_.decl.recursive);
23507 if (ffestb_local_.decl.kindt != NULL)
23508 ffelex_token_kill (ffestb_local_.decl.kindt);
23509 if (ffestb_local_.decl.lent != NULL)
23510 ffelex_token_kill (ffestb_local_.decl.lent);
23511 ffelex_token_kill (ffesta_tokens[1]);
23512 ffelex_token_kill (ffesta_tokens[2]);
23513 ffelex_token_kill (ffestb_subrargs_.name_list.close_paren);
23514 ffestt_tokenlist_kill (ffestb_subrargs_.name_list.args);
23515 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
23516 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
23517 }
23518
23519
23520
23521
23522
23523
23524
23525
23526
23527 static ffelexHandler
23528 ffestb_decl_funcname_9_ (ffelexToken t)
23529 {
23530 switch (ffelex_token_type (t))
23531 {
23532 case FFELEX_typeEOS:
23533 case FFELEX_typeSEMICOLON:
23534 if (!ffesta_is_inhibited ())
23535 ffestc_R1219 (ffesta_tokens[1], ffestb_subrargs_.name_list.args,
23536 ffestb_subrargs_.name_list.close_paren, ffestb_local_.decl.type,
23537 ffestb_local_.decl.kind, ffestb_local_.decl.kindt,
23538 ffestb_local_.decl.len, ffestb_local_.decl.lent,
23539 ffestb_local_.decl.recursive, ffesta_tokens[2]);
23540 if (ffestb_local_.decl.recursive != NULL)
23541 ffelex_token_kill (ffestb_local_.decl.recursive);
23542 if (ffestb_local_.decl.kindt != NULL)
23543 ffelex_token_kill (ffestb_local_.decl.kindt);
23544 if (ffestb_local_.decl.lent != NULL)
23545 ffelex_token_kill (ffestb_local_.decl.lent);
23546 ffelex_token_kill (ffesta_tokens[1]);
23547 ffelex_token_kill (ffesta_tokens[2]);
23548 ffelex_token_kill (ffestb_subrargs_.name_list.close_paren);
23549 ffestt_tokenlist_kill (ffestb_subrargs_.name_list.args);
23550 return (ffelexHandler) ffesta_zero (t);
23551
23552 default:
23553 break;
23554 }
23555
23556 if (ffestb_local_.decl.recursive != NULL)
23557 ffelex_token_kill (ffestb_local_.decl.recursive);
23558 if (ffestb_local_.decl.kindt != NULL)
23559 ffelex_token_kill (ffestb_local_.decl.kindt);
23560 if (ffestb_local_.decl.lent != NULL)
23561 ffelex_token_kill (ffestb_local_.decl.lent);
23562 ffelex_token_kill (ffesta_tokens[1]);
23563 ffelex_token_kill (ffesta_tokens[2]);
23564 ffelex_token_kill (ffestb_subrargs_.name_list.close_paren);
23565 ffestt_tokenlist_kill (ffestb_subrargs_.name_list.args);
23566 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
23567 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
23568 }
23569
23570
23571
23572
23573
23574
23575
23576
23577 #if FFESTR_VXT
23578 ffelexHandler
23579 ffestb_V003 (ffelexToken t)
23580 {
23581 ffeTokenLength i;
23582 const char *p;
23583 ffelexToken nt;
23584 ffelexHandler next;
23585
23586 switch (ffelex_token_type (ffesta_tokens[0]))
23587 {
23588 case FFELEX_typeNAME:
23589 if (ffesta_first_kw != FFESTR_firstSTRUCTURE)
23590 goto bad_0;
23591 switch (ffelex_token_type (t))
23592 {
23593 case FFELEX_typeCOMMA:
23594 case FFELEX_typeCOLONCOLON:
23595 case FFELEX_typeEOS:
23596 case FFELEX_typeSEMICOLON:
23597 ffesta_confirmed ();
23598 goto bad_1;
23599
23600 default:
23601 goto bad_1;
23602
23603 case FFELEX_typeNAME:
23604 ffesta_confirmed ();
23605 if (!ffesta_is_inhibited ())
23606 ffestc_V003_start (NULL);
23607 ffestb_local_.structure.started = TRUE;
23608 return (ffelexHandler) ffestb_V0034_ (t);
23609
23610 case FFELEX_typeSLASH:
23611 ffesta_confirmed ();
23612 return (ffelexHandler) ffestb_V0031_;
23613 }
23614
23615 case FFELEX_typeNAMES:
23616 if (ffesta_first_kw != FFESTR_firstSTRUCTURE)
23617 goto bad_0;
23618 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlSTRUCTURE);
23619 switch (ffelex_token_type (t))
23620 {
23621 default:
23622 goto bad_1;
23623
23624 case FFELEX_typeEOS:
23625 case FFELEX_typeSEMICOLON:
23626 case FFELEX_typeCOMMA:
23627 case FFELEX_typeCOLONCOLON:
23628 ffesta_confirmed ();
23629 break;
23630
23631 case FFELEX_typeSLASH:
23632 ffesta_confirmed ();
23633 if (*p != '\0')
23634 goto bad_1;
23635 return (ffelexHandler) ffestb_V0031_;
23636
23637 case FFELEX_typeOPEN_PAREN:
23638 break;
23639 }
23640
23641
23642
23643
23644 if (!ffesrc_is_name_init (*p))
23645 goto bad_i;
23646 nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
23647 if (ffelex_token_type (t) == FFELEX_typeOPEN_PAREN)
23648 ffestb_local_.structure.started = FALSE;
23649 else
23650 {
23651 if (!ffesta_is_inhibited ())
23652 ffestc_V003_start (NULL);
23653 ffestb_local_.structure.started = TRUE;
23654 }
23655 next = (ffelexHandler) ffestb_V0034_ (nt);
23656 ffelex_token_kill (nt);
23657 return (ffelexHandler) (*next) (t);
23658
23659 default:
23660 goto bad_0;
23661 }
23662
23663 bad_0:
23664 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "STRUCTURE", ffesta_tokens[0]);
23665 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
23666
23667 bad_1:
23668 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "STRUCTURE", t);
23669 return (ffelexHandler) ffelex_swallow_tokens (t,
23670 (ffelexHandler) ffesta_zero);
23671
23672 bad_i:
23673 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "STRUCTURE", ffesta_tokens[0], i, t);
23674 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
23675 }
23676
23677
23678
23679
23680
23681
23682
23683 static ffelexHandler
23684 ffestb_V0031_ (ffelexToken t)
23685 {
23686 switch (ffelex_token_type (t))
23687 {
23688 case FFELEX_typeNAME:
23689 ffesta_tokens[1] = ffelex_token_use (t);
23690 return (ffelexHandler) ffestb_V0032_;
23691
23692 default:
23693 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "STRUCTURE", t);
23694 break;
23695 }
23696
23697 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
23698 }
23699
23700
23701
23702
23703
23704
23705
23706 static ffelexHandler
23707 ffestb_V0032_ (ffelexToken t)
23708 {
23709 switch (ffelex_token_type (t))
23710 {
23711 case FFELEX_typeSLASH:
23712 if (!ffesta_is_inhibited ())
23713 ffestc_V003_start (ffesta_tokens[1]);
23714 ffestb_local_.structure.started = TRUE;
23715 ffelex_token_kill (ffesta_tokens[1]);
23716 return (ffelexHandler) ffestb_V0033_;
23717
23718 default:
23719 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "STRUCTURE", t);
23720 break;
23721 }
23722
23723 ffelex_token_kill (ffesta_tokens[1]);
23724 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
23725 }
23726
23727
23728
23729
23730
23731
23732
23733 static ffelexHandler
23734 ffestb_V0033_ (ffelexToken t)
23735 {
23736 switch (ffelex_token_type (t))
23737 {
23738 case FFELEX_typeNAME:
23739 return (ffelexHandler) ffestb_V0034_ (t);
23740
23741 case FFELEX_typeEOS:
23742 case FFELEX_typeSEMICOLON:
23743 if (!ffesta_is_inhibited ())
23744 ffestc_V003_finish ();
23745 return (ffelexHandler) ffesta_zero (t);
23746
23747 default:
23748 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "STRUCTURE", t);
23749 break;
23750 }
23751
23752 ffelex_token_kill (ffesta_tokens[1]);
23753 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
23754 }
23755
23756
23757
23758
23759
23760
23761
23762 static ffelexHandler
23763 ffestb_V0034_ (ffelexToken t)
23764 {
23765 switch (ffelex_token_type (t))
23766 {
23767 case FFELEX_typeNAME:
23768 ffesta_tokens[1] = ffelex_token_use (t);
23769 return (ffelexHandler) ffestb_V0035_;
23770
23771 default:
23772 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "STRUCTURE", t);
23773 break;
23774 }
23775
23776 if (!ffesta_is_inhibited ())
23777 ffestc_V003_finish ();
23778 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
23779 }
23780
23781
23782
23783
23784
23785
23786
23787 static ffelexHandler
23788 ffestb_V0035_ (ffelexToken t)
23789 {
23790 switch (ffelex_token_type (t))
23791 {
23792 case FFELEX_typeOPEN_PAREN:
23793 ffestb_subrargs_.dim_list.dims = ffestt_dimlist_create ();
23794 ffestb_subrargs_.dim_list.handler = (ffelexHandler) ffestb_V0036_;
23795 ffestb_subrargs_.dim_list.pool = ffesta_output_pool;
23796 ffestb_subrargs_.dim_list.ctx = FFEEXPR_contextDIMLISTCOMMON;
23797 #ifdef FFECOM_dimensionsMAX
23798 ffestb_subrargs_.dim_list.ndims = 0;
23799 #endif
23800 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
23801 FFEEXPR_contextDIMLISTCOMMON, (ffeexprCallback) ffestb_subr_dimlist_);
23802
23803 case FFELEX_typeCOMMA:
23804 if (!ffesta_is_inhibited ())
23805 ffestc_V003_item (ffesta_tokens[1], NULL);
23806 ffelex_token_kill (ffesta_tokens[1]);
23807 return (ffelexHandler) ffestb_V0034_;
23808
23809 case FFELEX_typeEOS:
23810 case FFELEX_typeSEMICOLON:
23811 if (!ffesta_is_inhibited ())
23812 {
23813 ffestc_V003_item (ffesta_tokens[1], NULL);
23814 ffestc_V003_finish ();
23815 }
23816 ffelex_token_kill (ffesta_tokens[1]);
23817 return (ffelexHandler) ffesta_zero (t);
23818
23819 default:
23820 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "STRUCTURE", t);
23821 break;
23822 }
23823
23824 if (!ffesta_is_inhibited ())
23825 ffestc_V003_finish ();
23826 ffelex_token_kill (ffesta_tokens[1]);
23827 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
23828 }
23829
23830
23831
23832
23833
23834
23835
23836 static ffelexHandler
23837 ffestb_V0036_ (ffelexToken t)
23838 {
23839 if (!ffestb_subrargs_.dim_list.ok)
23840 goto bad;
23841
23842 switch (ffelex_token_type (t))
23843 {
23844 case FFELEX_typeCOMMA:
23845 ffesta_confirmed ();
23846 if (!ffesta_is_inhibited ())
23847 {
23848 if (!ffestb_local_.structure.started)
23849 {
23850 ffestc_V003_start (NULL);
23851 ffestb_local_.structure.started = TRUE;
23852 }
23853 ffestc_V003_item (ffesta_tokens[1],
23854 ffestb_subrargs_.dim_list.dims);
23855 }
23856 ffelex_token_kill (ffesta_tokens[1]);
23857 ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
23858 return (ffelexHandler) ffestb_V0034_;
23859
23860 case FFELEX_typeEOS:
23861 case FFELEX_typeSEMICOLON:
23862 ffesta_confirmed ();
23863 if (!ffesta_is_inhibited ())
23864 {
23865 if (!ffestb_local_.structure.started)
23866 ffestc_V003_start (NULL);
23867 ffestc_V003_item (ffesta_tokens[1],
23868 ffestb_subrargs_.dim_list.dims);
23869 ffestc_V003_finish ();
23870 }
23871 ffelex_token_kill (ffesta_tokens[1]);
23872 ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
23873 return (ffelexHandler) ffesta_zero (t);
23874
23875 default:
23876 break;
23877 }
23878
23879 bad:
23880 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "STRUCTURE", t);
23881 if (ffestb_local_.structure.started && !ffesta_is_inhibited ())
23882 ffestc_V003_finish ();
23883 ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
23884 ffelex_token_kill (ffesta_tokens[1]);
23885 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
23886 }
23887
23888
23889
23890
23891
23892
23893
23894
23895 ffelexHandler
23896 ffestb_V016 (ffelexToken t)
23897 {
23898 const char *p;
23899 ffeTokenLength i;
23900
23901 switch (ffelex_token_type (ffesta_tokens[0]))
23902 {
23903 case FFELEX_typeNAME:
23904 if (ffesta_first_kw != FFESTR_firstRECORD)
23905 goto bad_0;
23906 break;
23907
23908 case FFELEX_typeNAMES:
23909 if (ffesta_first_kw != FFESTR_firstRECORD)
23910 goto bad_0;
23911 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlRECORD);
23912 if (*p != '\0')
23913 goto bad_i;
23914 break;
23915
23916 default:
23917 goto bad_0;
23918 }
23919
23920 switch (ffelex_token_type (t))
23921 {
23922 case FFELEX_typeCOMMA:
23923 case FFELEX_typeEOS:
23924 case FFELEX_typeSEMICOLON:
23925 case FFELEX_typeCOLONCOLON:
23926 ffesta_confirmed ();
23927 goto bad_1;
23928
23929 default:
23930 goto bad_1;
23931
23932 case FFELEX_typeSLASH:
23933 break;
23934 }
23935
23936 ffesta_confirmed ();
23937 if (!ffesta_is_inhibited ())
23938 ffestc_V016_start ();
23939 return (ffelexHandler) ffestb_V0161_;
23940
23941 bad_0:
23942 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "RECORD", ffesta_tokens[0]);
23943 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
23944
23945 bad_1:
23946 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "RECORD", t);
23947 return (ffelexHandler) ffelex_swallow_tokens (t,
23948 (ffelexHandler) ffesta_zero);
23949
23950 bad_i:
23951 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "RECORD", ffesta_tokens[0], i, t);
23952 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
23953 }
23954
23955
23956
23957
23958
23959
23960
23961 static ffelexHandler
23962 ffestb_V0161_ (ffelexToken t)
23963 {
23964 switch (ffelex_token_type (t))
23965 {
23966 case FFELEX_typeNAME:
23967 if (!ffesta_is_inhibited ())
23968 ffestc_V016_item_structure (t);
23969 return (ffelexHandler) ffestb_V0162_;
23970
23971 default:
23972 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "RECORD", t);
23973 break;
23974 }
23975
23976 if (!ffesta_is_inhibited ())
23977 ffestc_V016_finish ();
23978 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
23979 }
23980
23981
23982
23983
23984
23985
23986
23987 static ffelexHandler
23988 ffestb_V0162_ (ffelexToken t)
23989 {
23990 switch (ffelex_token_type (t))
23991 {
23992 case FFELEX_typeSLASH:
23993 return (ffelexHandler) ffestb_V0163_;
23994
23995 default:
23996 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "RECORD", t);
23997 break;
23998 }
23999
24000 if (!ffesta_is_inhibited ())
24001 ffestc_V016_finish ();
24002 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
24003 }
24004
24005
24006
24007
24008
24009
24010
24011 static ffelexHandler
24012 ffestb_V0163_ (ffelexToken t)
24013 {
24014 switch (ffelex_token_type (t))
24015 {
24016 case FFELEX_typeNAME:
24017 ffesta_tokens[1] = ffelex_token_use (t);
24018 return (ffelexHandler) ffestb_V0164_;
24019
24020 default:
24021 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "RECORD", t);
24022 break;
24023 }
24024
24025 if (!ffesta_is_inhibited ())
24026 ffestc_V016_finish ();
24027 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
24028 }
24029
24030
24031
24032
24033
24034
24035
24036 static ffelexHandler
24037 ffestb_V0164_ (ffelexToken t)
24038 {
24039 switch (ffelex_token_type (t))
24040 {
24041 case FFELEX_typeOPEN_PAREN:
24042 ffestb_subrargs_.dim_list.dims = ffestt_dimlist_create ();
24043 ffestb_subrargs_.dim_list.handler = (ffelexHandler) ffestb_V0165_;
24044 ffestb_subrargs_.dim_list.pool = ffesta_output_pool;
24045 ffestb_subrargs_.dim_list.ctx = FFEEXPR_contextDIMLISTCOMMON;
24046 #ifdef FFECOM_dimensionsMAX
24047 ffestb_subrargs_.dim_list.ndims = 0;
24048 #endif
24049 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
24050 FFEEXPR_contextDIMLISTCOMMON, (ffeexprCallback) ffestb_subr_dimlist_);
24051
24052 case FFELEX_typeCOMMA:
24053 if (!ffesta_is_inhibited ())
24054 ffestc_V016_item_object (ffesta_tokens[1], NULL);
24055 ffelex_token_kill (ffesta_tokens[1]);
24056 return (ffelexHandler) ffestb_V0166_;
24057
24058 case FFELEX_typeEOS:
24059 case FFELEX_typeSEMICOLON:
24060 if (!ffesta_is_inhibited ())
24061 {
24062 ffestc_V016_item_object (ffesta_tokens[1], NULL);
24063 ffestc_V016_finish ();
24064 }
24065 ffelex_token_kill (ffesta_tokens[1]);
24066 return (ffelexHandler) ffesta_zero (t);
24067
24068 default:
24069 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "RECORD", t);
24070 break;
24071 }
24072
24073 if (!ffesta_is_inhibited ())
24074 ffestc_V016_finish ();
24075 ffelex_token_kill (ffesta_tokens[1]);
24076 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
24077 }
24078
24079
24080
24081
24082
24083
24084
24085 static ffelexHandler
24086 ffestb_V0165_ (ffelexToken t)
24087 {
24088 if (!ffestb_subrargs_.dim_list.ok)
24089 goto bad;
24090
24091 switch (ffelex_token_type (t))
24092 {
24093 case FFELEX_typeCOMMA:
24094 if (!ffesta_is_inhibited ())
24095 ffestc_V016_item_object (ffesta_tokens[1],
24096 ffestb_subrargs_.dim_list.dims);
24097 ffelex_token_kill (ffesta_tokens[1]);
24098 ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
24099 return (ffelexHandler) ffestb_V0166_;
24100
24101 case FFELEX_typeEOS:
24102 case FFELEX_typeSEMICOLON:
24103 if (!ffesta_is_inhibited ())
24104 {
24105 ffestc_V016_item_object (ffesta_tokens[1],
24106 ffestb_subrargs_.dim_list.dims);
24107 ffestc_V016_finish ();
24108 }
24109 ffelex_token_kill (ffesta_tokens[1]);
24110 ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
24111 return (ffelexHandler) ffesta_zero (t);
24112
24113 default:
24114 break;
24115 }
24116
24117 bad:
24118 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "RECORD", t);
24119 if (ffestb_local_.structure.started && !ffesta_is_inhibited ())
24120 ffestc_V016_finish ();
24121 ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
24122 ffelex_token_kill (ffesta_tokens[1]);
24123 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
24124 }
24125
24126
24127
24128
24129
24130
24131
24132
24133 static ffelexHandler
24134 ffestb_V0166_ (ffelexToken t)
24135 {
24136 switch (ffelex_token_type (t))
24137 {
24138 case FFELEX_typeNAME:
24139 ffesta_tokens[1] = ffelex_token_use (t);
24140 return (ffelexHandler) ffestb_V0164_;
24141
24142 case FFELEX_typeSLASH:
24143 return (ffelexHandler) ffestb_V0161_;
24144
24145 default:
24146 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "RECORD", t);
24147 break;
24148 }
24149
24150 if (!ffesta_is_inhibited ())
24151 ffestc_V016_finish ();
24152 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
24153 }
24154
24155 #endif
24156
24157
24158
24159
24160
24161
24162
24163 ffelexHandler
24164 ffestb_V027 (ffelexToken t)
24165 {
24166 unsigned const char *p;
24167 ffeTokenLength i;
24168
24169 switch (ffelex_token_type (ffesta_tokens[0]))
24170 {
24171 case FFELEX_typeNAME:
24172 if (ffesta_first_kw != FFESTR_firstPARAMETER)
24173 goto bad_0;
24174 switch (ffelex_token_type (t))
24175 {
24176 case FFELEX_typeNAME:
24177 break;
24178
24179 default:
24180 goto bad_1;
24181 }
24182 ffesta_confirmed ();
24183 ffestb_local_.vxtparam.started = TRUE;
24184 if (!ffesta_is_inhibited ())
24185 ffestc_V027_start ();
24186 ffesta_tokens[1] = ffelex_token_use (t);
24187 return (ffelexHandler) ffestb_V0271_;
24188
24189 case FFELEX_typeNAMES:
24190 if (ffesta_first_kw != FFESTR_firstPARAMETER)
24191 goto bad_0;
24192 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlPARAMETER);
24193 switch (ffelex_token_type (t))
24194 {
24195 case FFELEX_typeEQUALS:
24196 break;
24197
24198 default:
24199 goto bad_1;
24200 }
24201 if (!ffesrc_is_name_init (*p))
24202 goto bad_i;
24203 ffestb_local_.vxtparam.started = FALSE;
24204 ffesta_tokens[1] = ffelex_token_name_from_names (ffesta_tokens[0], i,
24205 0);
24206 return (ffelexHandler) ffestb_V0271_ (t);
24207
24208 default:
24209 goto bad_0;
24210 }
24211
24212 bad_0:
24213 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PARAMETER", ffesta_tokens[0]);
24214 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
24215
24216 bad_1:
24217 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PARAMETER", t);
24218 return (ffelexHandler) ffelex_swallow_tokens (t,
24219 (ffelexHandler) ffesta_zero);
24220
24221 bad_i:
24222 ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "PARAMETER", ffesta_tokens[0], i, t);
24223 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
24224 }
24225
24226
24227
24228
24229
24230
24231
24232 static ffelexHandler
24233 ffestb_V0271_ (ffelexToken t)
24234 {
24235 switch (ffelex_token_type (t))
24236 {
24237 case FFELEX_typeEQUALS:
24238 return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
24239 FFEEXPR_contextPARAMETER, (ffeexprCallback) ffestb_V0272_);
24240
24241 default:
24242 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PARAMETER", t);
24243 break;
24244 }
24245
24246 ffelex_token_kill (ffesta_tokens[1]);
24247 if (ffestb_local_.vxtparam.started && !ffesta_is_inhibited ())
24248 ffestc_V027_finish ();
24249 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
24250 }
24251
24252
24253
24254
24255
24256
24257
24258 static ffelexHandler
24259 ffestb_V0272_ (ffelexToken ft, ffebld expr, ffelexToken t)
24260 {
24261 switch (ffelex_token_type (t))
24262 {
24263 case FFELEX_typeEOS:
24264 case FFELEX_typeSEMICOLON:
24265 if (!ffestb_local_.vxtparam.started)
24266 {
24267 if (ffestc_is_let_not_V027 ())
24268 break;
24269 ffesta_confirmed ();
24270 if (!ffesta_is_inhibited ())
24271 ffestc_V027_start ();
24272 ffestb_local_.vxtparam.started = TRUE;
24273 }
24274 if (expr == NULL)
24275 break;
24276 if (!ffesta_is_inhibited ())
24277 {
24278 ffestc_V027_item (ffesta_tokens[1], expr, ft);
24279 ffestc_V027_finish ();
24280 }
24281 ffelex_token_kill (ffesta_tokens[1]);
24282 return (ffelexHandler) ffesta_zero (t);
24283
24284 case FFELEX_typeCOMMA:
24285 ffesta_confirmed ();
24286 if (!ffestb_local_.vxtparam.started)
24287 {
24288 if (!ffesta_is_inhibited ())
24289 ffestc_V027_start ();
24290 ffestb_local_.vxtparam.started = TRUE;
24291 }
24292 if (expr == NULL)
24293 break;
24294 if (!ffesta_is_inhibited ())
24295 ffestc_V027_item (ffesta_tokens[1], expr, ft);
24296 ffelex_token_kill (ffesta_tokens[1]);
24297 return (ffelexHandler) ffestb_V0273_;
24298
24299 default:
24300 break;
24301 }
24302
24303 ffelex_token_kill (ffesta_tokens[1]);
24304 if (ffestb_local_.vxtparam.started && !ffesta_is_inhibited ())
24305 ffestc_V027_finish ();
24306 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PARAMETER", t);
24307 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
24308 }
24309
24310
24311
24312
24313
24314
24315
24316 static ffelexHandler
24317 ffestb_V0273_ (ffelexToken t)
24318 {
24319 switch (ffelex_token_type (t))
24320 {
24321 case FFELEX_typeNAME:
24322 ffesta_tokens[1] = ffelex_token_use (t);
24323 return (ffelexHandler) ffestb_V0271_;
24324
24325 default:
24326 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PARAMETER", t);
24327 break;
24328 }
24329
24330 if (ffestb_local_.vxtparam.started && !ffesta_is_inhibited ())
24331 ffestc_V027_finish ();
24332 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
24333 }
24334
24335
24336
24337
24338
24339
24340
24341
24342 ffelexHandler
24343 ffestb_decl_R539 (ffelexToken t)
24344 {
24345 ffeTokenLength i;
24346 unsigned const char *p;
24347 ffelexToken nt;
24348 ffestrSecond kw;
24349
24350 ffestb_local_.decl.recursive = NULL;
24351
24352 switch (ffelex_token_type (ffesta_tokens[0]))
24353 {
24354 case FFELEX_typeNAME:
24355 if (ffesta_first_kw != FFESTR_firstIMPLICIT)
24356 goto bad_0;
24357 switch (ffelex_token_type (t))
24358 {
24359 case FFELEX_typeEOS:
24360 case FFELEX_typeSEMICOLON:
24361 case FFELEX_typeCOMMA:
24362 case FFELEX_typeCOLONCOLON:
24363 ffesta_confirmed ();
24364 goto bad_1;
24365
24366 default:
24367 goto bad_1;
24368
24369 case FFELEX_typeNAME:
24370 break;
24371 }
24372 ffesta_confirmed ();
24373 ffestb_local_.decl.imp_started = FALSE;
24374 switch (ffesta_second_kw)
24375 {
24376 case FFESTR_secondINTEGER:
24377 ffestb_local_.decl.type = FFESTP_typeINTEGER;
24378 return (ffelexHandler) ffestb_decl_R5391_;
24379
24380 case FFESTR_secondBYTE:
24381 ffestb_local_.decl.type = FFESTP_typeBYTE;
24382 return (ffelexHandler) ffestb_decl_R5391_;
24383
24384 case FFESTR_secondWORD:
24385 ffestb_local_.decl.type = FFESTP_typeWORD;
24386 return (ffelexHandler) ffestb_decl_R5391_;
24387
24388 case FFESTR_secondREAL:
24389 ffestb_local_.decl.type = FFESTP_typeREAL;
24390 return (ffelexHandler) ffestb_decl_R5391_;
24391
24392 case FFESTR_secondCOMPLEX:
24393 ffestb_local_.decl.type = FFESTP_typeCOMPLEX;
24394 return (ffelexHandler) ffestb_decl_R5391_;
24395
24396 case FFESTR_secondLOGICAL:
24397 ffestb_local_.decl.type = FFESTP_typeLOGICAL;
24398 return (ffelexHandler) ffestb_decl_R5391_;
24399
24400 case FFESTR_secondCHARACTER:
24401 ffestb_local_.decl.type = FFESTP_typeCHARACTER;
24402 return (ffelexHandler) ffestb_decl_R5391_;
24403
24404 case FFESTR_secondDOUBLE:
24405 return (ffelexHandler) ffestb_decl_R5392_;
24406
24407 case FFESTR_secondDOUBLEPRECISION:
24408 ffestb_local_.decl.type = FFESTP_typeDBLPRCSN;
24409 ffestb_local_.decl.kind = NULL;
24410 ffestb_local_.decl.kindt = NULL;
24411 ffestb_local_.decl.len = NULL;
24412 ffestb_local_.decl.lent = NULL;
24413 return (ffelexHandler) ffestb_decl_R539letters_;
24414
24415 case FFESTR_secondDOUBLECOMPLEX:
24416 ffestb_local_.decl.type = FFESTP_typeDBLCMPLX;
24417 ffestb_local_.decl.kind = NULL;
24418 ffestb_local_.decl.kindt = NULL;
24419 ffestb_local_.decl.len = NULL;
24420 ffestb_local_.decl.lent = NULL;
24421 return (ffelexHandler) ffestb_decl_R539letters_;
24422
24423 case FFESTR_secondNONE:
24424 return (ffelexHandler) ffestb_decl_R5394_;
24425
24426 #if FFESTR_F90
24427 case FFESTR_secondTYPE:
24428 ffestb_local_.decl.type = FFESTP_typeTYPE;
24429 return (ffelexHandler) ffestb_decl_R5393_;
24430 #endif
24431
24432 default:
24433 goto bad_1;
24434 }
24435
24436 case FFELEX_typeNAMES:
24437 if (ffesta_first_kw != FFESTR_firstIMPLICIT)
24438 goto bad_0;
24439 switch (ffelex_token_type (t))
24440 {
24441 case FFELEX_typeCOMMA:
24442 case FFELEX_typeCOLONCOLON:
24443 case FFELEX_typeASTERISK:
24444 case FFELEX_typeSEMICOLON:
24445 case FFELEX_typeEOS:
24446 ffesta_confirmed ();
24447 break;
24448
24449 case FFELEX_typeOPEN_PAREN:
24450 break;
24451
24452 default:
24453 goto bad_1;
24454 }
24455 p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlIMPLICIT);
24456 if (!ffesrc_is_name_init (*p))
24457 goto bad_0;
24458 ffestb_local_.decl.imp_started = FALSE;
24459 nt = ffelex_token_name_from_names (ffesta_tokens[0],
24460 FFESTR_firstlIMPLICIT, 0);
24461 kw = ffestr_second (nt);
24462 ffelex_token_kill (nt);
24463 switch (kw)
24464 {
24465 case FFESTR_secondINTEGER:
24466 ffestb_local_.decl.type = FFESTP_typeINTEGER;
24467 return (ffelexHandler) ffestb_decl_R5391_ (t);
24468
24469 case FFESTR_secondBYTE:
24470 ffestb_local_.decl.type = FFESTP_typeBYTE;
24471 return (ffelexHandler) ffestb_decl_R5391_ (t);
24472
24473 case FFESTR_secondWORD:
24474 ffestb_local_.decl.type = FFESTP_typeWORD;
24475 return (ffelexHandler) ffestb_decl_R5391_ (t);
24476
24477 case FFESTR_secondREAL:
24478 ffestb_local_.decl.type = FFESTP_typeREAL;
24479 return (ffelexHandler) ffestb_decl_R5391_ (t);
24480
24481 case FFESTR_secondCOMPLEX:
24482 ffestb_local_.decl.type = FFESTP_typeCOMPLEX;
24483 return (ffelexHandler) ffestb_decl_R5391_ (t);
24484
24485 case FFESTR_secondLOGICAL:
24486 ffestb_local_.decl.type = FFESTP_typeLOGICAL;
24487 return (ffelexHandler) ffestb_decl_R5391_ (t);
24488
24489 case FFESTR_secondCHARACTER:
24490 ffestb_local_.decl.type = FFESTP_typeCHARACTER;
24491 return (ffelexHandler) ffestb_decl_R5391_ (t);
24492
24493 case FFESTR_secondDOUBLEPRECISION:
24494 ffestb_local_.decl.type = FFESTP_typeDBLPRCSN;
24495 ffestb_local_.decl.kind = NULL;
24496 ffestb_local_.decl.kindt = NULL;
24497 ffestb_local_.decl.len = NULL;
24498 ffestb_local_.decl.lent = NULL;
24499 return (ffelexHandler) ffestb_decl_R539letters_ (t);
24500
24501 case FFESTR_secondDOUBLECOMPLEX:
24502 ffestb_local_.decl.type = FFESTP_typeDBLCMPLX;
24503 ffestb_local_.decl.kind = NULL;
24504 ffestb_local_.decl.kindt = NULL;
24505 ffestb_local_.decl.len = NULL;
24506 ffestb_local_.decl.lent = NULL;
24507 return (ffelexHandler) ffestb_decl_R539letters_ (t);
24508
24509 case FFESTR_secondNONE:
24510 return (ffelexHandler) ffestb_decl_R5394_ (t);
24511
24512 #if FFESTR_F90
24513 case FFESTR_secondTYPE:
24514 ffestb_local_.decl.type = FFESTP_typeTYPE;
24515 return (ffelexHandler) ffestb_decl_R5393_ (t);
24516 #endif
24517
24518 default:
24519 goto bad_1;
24520 }
24521
24522 default:
24523 goto bad_0;
24524 }
24525
24526 bad_0:
24527 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IMPLICIT", ffesta_tokens[0]);
24528 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
24529
24530 bad_1:
24531 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IMPLICIT", t);
24532 return (ffelexHandler) ffelex_swallow_tokens (t,
24533 (ffelexHandler) ffesta_zero);
24534 }
24535
24536
24537
24538
24539
24540
24541
24542 static ffelexHandler
24543 ffestb_decl_R5391_ (ffelexToken t)
24544 {
24545 switch (ffelex_token_type (t))
24546 {
24547 case FFELEX_typeASTERISK:
24548 ffesta_confirmed ();
24549 ffestb_local_.decl.handler = (ffelexHandler) ffestb_decl_R539letters_;
24550 ffestb_local_.decl.badname = "IMPLICIT";
24551 if (ffestb_local_.decl.type == FFESTP_typeCHARACTER)
24552 return (ffelexHandler) ffestb_decl_starlen_;
24553 return (ffelexHandler) ffestb_decl_starkind_;
24554
24555 case FFELEX_typeOPEN_PAREN:
24556 ffestb_local_.decl.handler = (ffelexHandler) ffestb_decl_R539letters_;
24557 ffestb_local_.decl.badname = "IMPLICIT";
24558 ffestb_local_.decl.kind = NULL;
24559 ffestb_local_.decl.kindt = NULL;
24560 ffestb_local_.decl.len = NULL;
24561 ffestb_local_.decl.lent = NULL;
24562 if (ffestb_local_.decl.type == FFESTP_typeCHARACTER)
24563 ffestb_local_.decl.imp_handler
24564 = (ffelexHandler) ffestb_decl_typeparams_;
24565 else
24566 ffestb_local_.decl.imp_handler
24567 = (ffelexHandler) ffestb_decl_kindparam_;
24568 return (ffelexHandler) ffestb_decl_R539maybe_ (t);
24569
24570 default:
24571 break;
24572 }
24573
24574 if (ffestb_local_.decl.imp_started && !ffesta_is_inhibited ())
24575 ffestc_R539finish ();
24576 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IMPLICIT", t);
24577 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
24578 }
24579
24580
24581
24582
24583
24584
24585
24586 static ffelexHandler
24587 ffestb_decl_R5392_ (ffelexToken t)
24588 {
24589 switch (ffelex_token_type (t))
24590 {
24591 case FFELEX_typeNAME:
24592 switch (ffestr_second (t))
24593 {
24594 case FFESTR_secondPRECISION:
24595 ffestb_local_.decl.type = FFESTP_typeDBLPRCSN;
24596 break;
24597
24598 case FFESTR_secondCOMPLEX:
24599 ffestb_local_.decl.type = FFESTP_typeDBLCMPLX;
24600 break;
24601
24602 default:
24603 goto bad;
24604 }
24605 ffestb_local_.decl.kind = NULL;
24606 ffestb_local_.decl.kindt = NULL;
24607 ffestb_local_.decl.len = NULL;
24608 ffestb_local_.decl.lent = NULL;
24609 return (ffelexHandler) ffestb_decl_R539letters_;
24610
24611 default:
24612 break;
24613 }
24614
24615 bad:
24616 if (ffestb_local_.decl.imp_started && !ffesta_is_inhibited ())
24617 ffestc_R539finish ();
24618 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IMPLICIT", t);
24619 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
24620 }
24621
24622
24623
24624
24625
24626
24627
24628 #if FFESTR_F90
24629 static ffelexHandler
24630 ffestb_decl_R5393_ (ffelexToken t)
24631 {
24632 switch (ffelex_token_type (t))
24633 {
24634 case FFELEX_typeOPEN_PAREN:
24635 ffestb_local_.decl.handler = (ffelexHandler) ffestb_decl_R539letters_;
24636 ffestb_local_.decl.badname = "IMPLICIT";
24637 return (ffelexHandler) ffestb_decl_typetype1_;
24638
24639 default:
24640 break;
24641 }
24642
24643 if (ffestb_local_.decl.imp_started && !ffesta_is_inhibited ())
24644 ffestc_R539finish ();
24645 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IMPLICIT", t);
24646 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
24647 }
24648
24649 #endif
24650
24651
24652
24653
24654
24655
24656 static ffelexHandler
24657 ffestb_decl_R5394_ (ffelexToken t)
24658 {
24659 switch (ffelex_token_type (t))
24660 {
24661 case FFELEX_typeEOS:
24662 case FFELEX_typeSEMICOLON:
24663 ffesta_confirmed ();
24664 if (!ffesta_is_inhibited ())
24665 ffestc_R539 ();
24666 return (ffelexHandler) ffesta_zero (t);
24667
24668 default:
24669 break;
24670 }
24671
24672 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IMPLICIT", t);
24673 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
24674 }
24675
24676
24677
24678
24679
24680
24681
24682 static ffelexHandler
24683 ffestb_decl_R5395_ (ffelexToken t)
24684 {
24685 switch (ffelex_token_type (t))
24686 {
24687 case FFELEX_typeNAME:
24688 switch (ffestr_second (t))
24689 {
24690 case FFESTR_secondINTEGER:
24691 ffestb_local_.decl.type = FFESTP_typeINTEGER;
24692 return (ffelexHandler) ffestb_decl_R5391_;
24693
24694 case FFESTR_secondBYTE:
24695 ffestb_local_.decl.type = FFESTP_typeBYTE;
24696 return (ffelexHandler) ffestb_decl_R5391_;
24697
24698 case FFESTR_secondWORD:
24699 ffestb_local_.decl.type = FFESTP_typeWORD;
24700 return (ffelexHandler) ffestb_decl_R5391_;
24701
24702 case FFESTR_secondREAL:
24703 ffestb_local_.decl.type = FFESTP_typeREAL;
24704 return (ffelexHandler) ffestb_decl_R5391_;
24705
24706 case FFESTR_secondCOMPLEX:
24707 ffestb_local_.decl.type = FFESTP_typeCOMPLEX;
24708 return (ffelexHandler) ffestb_decl_R5391_;
24709
24710 case FFESTR_secondLOGICAL:
24711 ffestb_local_.decl.type = FFESTP_typeLOGICAL;
24712 return (ffelexHandler) ffestb_decl_R5391_;
24713
24714 case FFESTR_secondCHARACTER:
24715 ffestb_local_.decl.type = FFESTP_typeCHARACTER;
24716 return (ffelexHandler) ffestb_decl_R5391_;
24717
24718 case FFESTR_secondDOUBLE:
24719 return (ffelexHandler) ffestb_decl_R5392_;
24720
24721 case FFESTR_secondDOUBLEPRECISION:
24722 ffestb_local_.decl.type = FFESTP_typeDBLPRCSN;
24723 ffestb_local_.decl.kind = NULL;
24724 ffestb_local_.decl.kindt = NULL;
24725 ffestb_local_.decl.len = NULL;
24726 ffestb_local_.decl.lent = NULL;
24727 return (ffelexHandler) ffestb_decl_R539letters_;
24728
24729 case FFESTR_secondDOUBLECOMPLEX:
24730 ffestb_local_.decl.type = FFESTP_typeDBLCMPLX;
24731 ffestb_local_.decl.kind = NULL;
24732 ffestb_local_.decl.kindt = NULL;
24733 ffestb_local_.decl.len = NULL;
24734 ffestb_local_.decl.lent = NULL;
24735 return (ffelexHandler) ffestb_decl_R539letters_;
24736
24737 #if FFESTR_F90
24738 case FFESTR_secondTYPE:
24739 ffestb_local_.decl.type = FFESTP_typeTYPE;
24740 return (ffelexHandler) ffestb_decl_R5393_;
24741 #endif
24742
24743 default:
24744 break;
24745 }
24746 break;
24747
24748 default:
24749 break;
24750 }
24751
24752 if (ffestb_local_.decl.imp_started && !ffesta_is_inhibited ())
24753 ffestc_R539finish ();
24754 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IMPLICIT", t);
24755 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
24756 }
24757
24758
24759
24760
24761
24762
24763
24764 static ffelexHandler
24765 ffestb_decl_R539letters_ (ffelexToken t)
24766 {
24767 ffelex_set_names (FALSE);
24768
24769 switch (ffelex_token_type (t))
24770 {
24771 case FFELEX_typeOPEN_PAREN:
24772 ffestb_local_.decl.imps = ffestt_implist_create ();
24773 return (ffelexHandler) ffestb_decl_R539letters_1_;
24774
24775 default:
24776 break;
24777 }
24778
24779 if (ffestb_local_.decl.kindt != NULL)
24780 ffelex_token_kill (ffestb_local_.decl.kindt);
24781 if (ffestb_local_.decl.lent != NULL)
24782 ffelex_token_kill (ffestb_local_.decl.lent);
24783 if (ffestb_local_.decl.imp_started && !ffesta_is_inhibited ())
24784 ffestc_R539finish ();
24785 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IMPLICIT", t);
24786 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
24787 }
24788
24789
24790
24791
24792
24793
24794
24795 static ffelexHandler
24796 ffestb_decl_R539letters_1_ (ffelexToken t)
24797 {
24798 switch (ffelex_token_type (t))
24799 {
24800 case FFELEX_typeNAME:
24801 if (ffelex_token_length (t) != 1)
24802 break;
24803 ffesta_tokens[1] = ffelex_token_use (t);
24804 return (ffelexHandler) ffestb_decl_R539letters_2_;
24805
24806 default:
24807 break;
24808 }
24809
24810 ffestt_implist_kill (ffestb_local_.decl.imps);
24811 if (ffestb_local_.decl.kindt != NULL)
24812 ffelex_token_kill (ffestb_local_.decl.kindt);
24813 if (ffestb_local_.decl.lent != NULL)
24814 ffelex_token_kill (ffestb_local_.decl.lent);
24815 if (ffestb_local_.decl.imp_started && !ffesta_is_inhibited ())
24816 ffestc_R539finish ();
24817 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IMPLICIT", t);
24818 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
24819 }
24820
24821
24822
24823
24824
24825
24826
24827 static ffelexHandler
24828 ffestb_decl_R539letters_2_ (ffelexToken t)
24829 {
24830 switch (ffelex_token_type (t))
24831 {
24832 case FFELEX_typeCOMMA:
24833 ffestt_implist_append (ffestb_local_.decl.imps, ffesta_tokens[1], NULL);
24834 return (ffelexHandler) ffestb_decl_R539letters_1_;
24835
24836 case FFELEX_typeCLOSE_PAREN:
24837 ffestt_implist_append (ffestb_local_.decl.imps, ffesta_tokens[1], NULL);
24838 return (ffelexHandler) ffestb_decl_R539letters_5_;
24839
24840 case FFELEX_typeMINUS:
24841 return (ffelexHandler) ffestb_decl_R539letters_3_;
24842
24843 default:
24844 break;
24845 }
24846
24847 ffelex_token_kill (ffesta_tokens[1]);
24848 ffestt_implist_kill (ffestb_local_.decl.imps);
24849 if (ffestb_local_.decl.kindt != NULL)
24850 ffelex_token_kill (ffestb_local_.decl.kindt);
24851 if (ffestb_local_.decl.lent != NULL)
24852 ffelex_token_kill (ffestb_local_.decl.lent);
24853 if (ffestb_local_.decl.imp_started && !ffesta_is_inhibited ())
24854 ffestc_R539finish ();
24855 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IMPLICIT", t);
24856 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
24857 }
24858
24859
24860
24861
24862
24863
24864
24865 static ffelexHandler
24866 ffestb_decl_R539letters_3_ (ffelexToken t)
24867 {
24868 switch (ffelex_token_type (t))
24869 {
24870 case FFELEX_typeNAME:
24871 if (ffelex_token_length (t) != 1)
24872 break;
24873 ffestt_implist_append (ffestb_local_.decl.imps, ffesta_tokens[1],
24874 ffelex_token_use (t));
24875 return (ffelexHandler) ffestb_decl_R539letters_4_;
24876
24877 default:
24878 break;
24879 }
24880
24881 ffelex_token_kill (ffesta_tokens[1]);
24882 ffestt_implist_kill (ffestb_local_.decl.imps);
24883 if (ffestb_local_.decl.kindt != NULL)
24884 ffelex_token_kill (ffestb_local_.decl.kindt);
24885 if (ffestb_local_.decl.lent != NULL)
24886 ffelex_token_kill (ffestb_local_.decl.lent);
24887 if (ffestb_local_.decl.imp_started && !ffesta_is_inhibited ())
24888 ffestc_R539finish ();
24889 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IMPLICIT", t);
24890 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
24891 }
24892
24893
24894
24895
24896
24897
24898
24899
24900 static ffelexHandler
24901 ffestb_decl_R539letters_4_ (ffelexToken t)
24902 {
24903 switch (ffelex_token_type (t))
24904 {
24905 case FFELEX_typeCOMMA:
24906 return (ffelexHandler) ffestb_decl_R539letters_1_;
24907
24908 case FFELEX_typeCLOSE_PAREN:
24909 return (ffelexHandler) ffestb_decl_R539letters_5_;
24910
24911 default:
24912 break;
24913 }
24914
24915 ffestt_implist_kill (ffestb_local_.decl.imps);
24916 if (ffestb_local_.decl.kindt != NULL)
24917 ffelex_token_kill (ffestb_local_.decl.kindt);
24918 if (ffestb_local_.decl.lent != NULL)
24919 ffelex_token_kill (ffestb_local_.decl.lent);
24920 if (ffestb_local_.decl.imp_started && !ffesta_is_inhibited ())
24921 ffestc_R539finish ();
24922 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IMPLICIT", t);
24923 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
24924 }
24925
24926
24927
24928
24929
24930
24931
24932
24933 static ffelexHandler
24934 ffestb_decl_R539letters_5_ (ffelexToken t)
24935 {
24936 switch (ffelex_token_type (t))
24937 {
24938 case FFELEX_typeCOMMA:
24939 case FFELEX_typeEOS:
24940 case FFELEX_typeSEMICOLON:
24941 if (!ffestb_local_.decl.imp_started)
24942 {
24943 ffestb_local_.decl.imp_started = TRUE;
24944 ffesta_confirmed ();
24945 if (!ffesta_is_inhibited ())
24946 ffestc_R539start ();
24947 }
24948 if (!ffesta_is_inhibited ())
24949 ffestc_R539item (ffestb_local_.decl.type, ffestb_local_.decl.kind,
24950 ffestb_local_.decl.kindt, ffestb_local_.decl.len,
24951 ffestb_local_.decl.lent, ffestb_local_.decl.imps);
24952 if (ffestb_local_.decl.kindt != NULL)
24953 ffelex_token_kill (ffestb_local_.decl.kindt);
24954 if (ffestb_local_.decl.lent != NULL)
24955 ffelex_token_kill (ffestb_local_.decl.lent);
24956 ffestt_implist_kill (ffestb_local_.decl.imps);
24957 if (ffelex_token_type (t) == FFELEX_typeCOMMA)
24958 return (ffelexHandler) ffestb_decl_R5395_;
24959 if (!ffesta_is_inhibited ())
24960 ffestc_R539finish ();
24961 return (ffelexHandler) ffesta_zero (t);
24962
24963 default:
24964 break;
24965 }
24966
24967 ffestt_implist_kill (ffestb_local_.decl.imps);
24968 if (ffestb_local_.decl.kindt != NULL)
24969 ffelex_token_kill (ffestb_local_.decl.kindt);
24970 if (ffestb_local_.decl.lent != NULL)
24971 ffelex_token_kill (ffestb_local_.decl.lent);
24972 if (ffestb_local_.decl.imp_started && !ffesta_is_inhibited ())
24973 ffestc_R539finish ();
24974 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IMPLICIT", t);
24975 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
24976 }
24977
24978
24979
24980
24981
24982
24983
24984 static ffelexHandler
24985 ffestb_decl_R539maybe_ (ffelexToken t)
24986 {
24987 assert (ffelex_token_type (t) == FFELEX_typeOPEN_PAREN);
24988 ffestb_local_.decl.imps = ffestt_implist_create ();
24989 ffestb_local_.decl.toklist = ffestt_tokenlist_create ();
24990 ffestb_local_.decl.imp_seen_comma
24991 = (ffestb_local_.decl.type != FFESTP_typeCHARACTER);
24992 return (ffelexHandler) ffestb_decl_R539maybe_1_;
24993 }
24994
24995
24996
24997
24998
24999
25000
25001 static ffelexHandler
25002 ffestb_decl_R539maybe_1_ (ffelexToken t)
25003 {
25004 ffelexHandler next;
25005
25006 switch (ffelex_token_type (t))
25007 {
25008 case FFELEX_typeNAME:
25009 if (ffelex_token_length (t) != 1)
25010 break;
25011 ffesta_tokens[1] = ffelex_token_use (t);
25012 ffestt_tokenlist_append (ffestb_local_.decl.toklist, ffelex_token_use (t));
25013 return (ffelexHandler) ffestb_decl_R539maybe_2_;
25014
25015 default:
25016 break;
25017 }
25018
25019 ffestt_implist_kill (ffestb_local_.decl.imps);
25020 next = (ffelexHandler) ffestt_tokenlist_handle (ffestb_local_.decl.toklist,
25021 (ffelexHandler) ffestb_local_.decl.imp_handler);
25022 ffestt_tokenlist_kill (ffestb_local_.decl.toklist);
25023 return (ffelexHandler) (*next) (t);
25024 }
25025
25026
25027
25028
25029
25030
25031
25032 static ffelexHandler
25033 ffestb_decl_R539maybe_2_ (ffelexToken t)
25034 {
25035 ffelexHandler next;
25036
25037 switch (ffelex_token_type (t))
25038 {
25039 case FFELEX_typeCOMMA:
25040 ffestt_implist_append (ffestb_local_.decl.imps, ffesta_tokens[1], NULL);
25041 if (ffestb_local_.decl.imp_seen_comma)
25042 {
25043 ffestt_tokenlist_kill (ffestb_local_.decl.toklist);
25044 return (ffelexHandler) ffestb_decl_R539letters_1_;
25045 }
25046 ffestb_local_.decl.imp_seen_comma = TRUE;
25047 ffestt_tokenlist_append (ffestb_local_.decl.toklist, ffelex_token_use (t));
25048 return (ffelexHandler) ffestb_decl_R539maybe_1_;
25049
25050 case FFELEX_typeCLOSE_PAREN:
25051 ffestt_implist_append (ffestb_local_.decl.imps, ffesta_tokens[1], NULL);
25052 ffestt_tokenlist_append (ffestb_local_.decl.toklist, ffelex_token_use (t));
25053 return (ffelexHandler) ffestb_decl_R539maybe_5_;
25054
25055 case FFELEX_typeMINUS:
25056 ffestt_tokenlist_append (ffestb_local_.decl.toklist, ffelex_token_use (t));
25057 return (ffelexHandler) ffestb_decl_R539maybe_3_;
25058
25059 default:
25060 break;
25061 }
25062
25063 ffelex_token_kill (ffesta_tokens[1]);
25064 ffestt_implist_kill (ffestb_local_.decl.imps);
25065 next = (ffelexHandler) ffestt_tokenlist_handle (ffestb_local_.decl.toklist,
25066 (ffelexHandler) ffestb_local_.decl.imp_handler);
25067 ffestt_tokenlist_kill (ffestb_local_.decl.toklist);
25068 return (ffelexHandler) (*next) (t);
25069 }
25070
25071
25072
25073
25074
25075
25076
25077 static ffelexHandler
25078 ffestb_decl_R539maybe_3_ (ffelexToken t)
25079 {
25080 ffelexHandler next;
25081
25082 switch (ffelex_token_type (t))
25083 {
25084 case FFELEX_typeNAME:
25085 if (ffelex_token_length (t) != 1)
25086 break;
25087 ffestt_implist_append (ffestb_local_.decl.imps, ffesta_tokens[1],
25088 ffelex_token_use (t));
25089 ffestt_tokenlist_append (ffestb_local_.decl.toklist, ffelex_token_use (t));
25090 return (ffelexHandler) ffestb_decl_R539maybe_4_;
25091
25092 default:
25093 break;
25094 }
25095
25096 ffelex_token_kill (ffesta_tokens[1]);
25097 ffestt_implist_kill (ffestb_local_.decl.imps);
25098 next = (ffelexHandler) ffestt_tokenlist_handle (ffestb_local_.decl.toklist,
25099 (ffelexHandler) ffestb_local_.decl.imp_handler);
25100 ffestt_tokenlist_kill (ffestb_local_.decl.toklist);
25101 return (ffelexHandler) (*next) (t);
25102 }
25103
25104
25105
25106
25107
25108
25109
25110
25111 static ffelexHandler
25112 ffestb_decl_R539maybe_4_ (ffelexToken t)
25113 {
25114 ffelexHandler next;
25115
25116 switch (ffelex_token_type (t))
25117 {
25118 case FFELEX_typeCOMMA:
25119 if (ffestb_local_.decl.imp_seen_comma)
25120 {
25121 ffestt_tokenlist_kill (ffestb_local_.decl.toklist);
25122 return (ffelexHandler) ffestb_decl_R539letters_1_;
25123 }
25124 ffestb_local_.decl.imp_seen_comma = TRUE;
25125 ffestt_tokenlist_append (ffestb_local_.decl.toklist, ffelex_token_use (t));
25126 return (ffelexHandler) ffestb_decl_R539maybe_1_;
25127
25128 case FFELEX_typeCLOSE_PAREN:
25129 ffestt_tokenlist_append (ffestb_local_.decl.toklist, ffelex_token_use (t));
25130 return (ffelexHandler) ffestb_decl_R539maybe_5_;
25131
25132 default:
25133 break;
25134 }
25135
25136 ffestt_implist_kill (ffestb_local_.decl.imps);
25137 next = (ffelexHandler) ffestt_tokenlist_handle (ffestb_local_.decl.toklist,
25138 (ffelexHandler) ffestb_local_.decl.imp_handler);
25139 ffestt_tokenlist_kill (ffestb_local_.decl.toklist);
25140 return (ffelexHandler) (*next) (t);
25141 }
25142
25143
25144
25145
25146
25147
25148
25149
25150 static ffelexHandler
25151 ffestb_decl_R539maybe_5_ (ffelexToken t)
25152 {
25153 ffelexHandler next;
25154
25155 switch (ffelex_token_type (t))
25156 {
25157 case FFELEX_typeCOMMA:
25158 case FFELEX_typeEOS:
25159 case FFELEX_typeSEMICOLON:
25160 ffestt_tokenlist_kill (ffestb_local_.decl.toklist);
25161 if (!ffestb_local_.decl.imp_started)
25162 {
25163 ffestb_local_.decl.imp_started = TRUE;
25164 ffesta_confirmed ();
25165 if (!ffesta_is_inhibited ())
25166 ffestc_R539start ();
25167 }
25168 if (!ffesta_is_inhibited ())
25169 ffestc_R539item (ffestb_local_.decl.type, ffestb_local_.decl.kind,
25170 ffestb_local_.decl.kindt, ffestb_local_.decl.len,
25171 ffestb_local_.decl.lent, ffestb_local_.decl.imps);
25172 if (ffestb_local_.decl.kindt != NULL)
25173 ffelex_token_kill (ffestb_local_.decl.kindt);
25174 if (ffestb_local_.decl.lent != NULL)
25175 ffelex_token_kill (ffestb_local_.decl.lent);
25176 ffestt_implist_kill (ffestb_local_.decl.imps);
25177 if (ffelex_token_type (t) == FFELEX_typeCOMMA)
25178 return (ffelexHandler) ffestb_decl_R5395_;
25179 if (!ffesta_is_inhibited ())
25180 ffestc_R539finish ();
25181 return (ffelexHandler) ffesta_zero (t);
25182
25183 case FFELEX_typeOPEN_PAREN:
25184 ffesta_confirmed ();
25185 ffestt_implist_kill (ffestb_local_.decl.imps);
25186 next = (ffelexHandler) ffestt_tokenlist_handle (ffestb_local_.decl.toklist,
25187 (ffelexHandler) ffestb_local_.decl.imp_handler);
25188 ffestt_tokenlist_kill (ffestb_local_.decl.toklist);
25189 return (ffelexHandler) (*next) (t);
25190
25191 default:
25192 break;
25193 }
25194
25195 ffestt_implist_kill (ffestb_local_.decl.imps);
25196 ffestt_tokenlist_kill (ffestb_local_.decl.toklist);
25197 if (ffestb_local_.decl.kindt != NULL)
25198 ffelex_token_kill (ffestb_local_.decl.kindt);
25199 if (ffestb_local_.decl.lent != NULL)
25200 ffelex_token_kill (ffestb_local_.decl.lent);
25201 if (ffestb_local_.decl.imp_started && !ffesta_is_inhibited ())
25202 ffestc_R539finish ();
25203 ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IMPLICIT", t);
25204 return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
25205 }