📄 stc.c
字号:
|| (ffestw_label (ffestw_stack_top ()) != label)) { /* Top of stack interrupts flow between two DOs specifying label. */ ffelab_set_type (label, FFELAB_typeANY); ffestd_labeldef_any (label); ffebad_start (FFEBAD_LABEL_DO_BLOCK_DO); ffebad_here (0, ffelab_doref_line (label), ffelab_doref_column (label)); ffebad_here (1, ffestw_line (ffestw_stack_top ()), ffestw_col (ffestw_stack_top ())); ffebad_here (2, ffelex_token_where_line (label_token), ffelex_token_where_column (label_token)); ffebad_finish (); ffestc_try_shriek_do_ (); return FALSE; } break; case FFELAB_typeNOTLOOP: case FFELAB_typeFORMAT: if (ffewhere_line_is_unknown (ffelab_definition_line (label))) { ffelab_set_type (label, FFELAB_typeANY); ffestd_labeldef_any (label); ffebad_start (FFEBAD_LABEL_USE_USE); ffebad_here (0, ffelab_firstref_line (label), ffelab_firstref_column (label)); ffebad_here (1, ffelex_token_where_line (label_token), ffelex_token_where_column (label_token)); ffebad_finish (); ffestc_try_shriek_do_ (); return FALSE; } /* Fall through. */ case FFELAB_typeUSELESS: case FFELAB_typeENDIF: ffelab_set_type (label, FFELAB_typeANY); ffestd_labeldef_any (label); ffebad_start (FFEBAD_LABEL_USE_DEF); ffebad_here (0, ffelab_definition_line (label), ffelab_definition_column (label)); ffebad_here (1, ffelex_token_where_line (label_token), ffelex_token_where_column (label_token)); ffebad_finish (); ffestc_try_shriek_do_ (); return FALSE; default: assert ("bad label" == NULL); /* Fall through. */ case FFELAB_typeANY: break; } *x_label = label; return TRUE;}/* ffestc_order_access_ -- Check ordering on <access> statement if (ffestc_order_access_() != FFESTC_orderOK_) return; */#if FFESTR_F90static ffestcOrder_ffestc_order_access_ (){ recurse: switch (ffestw_state (ffestw_stack_top ())) { case FFESTV_stateNIL: ffestc_shriek_begin_program_ (); goto recurse; /* :::::::::::::::::::: */ case FFESTV_stateMODULE0: case FFESTV_stateMODULE1: case FFESTV_stateMODULE2: ffestw_update (NULL); ffestw_set_state (ffestw_stack_top (), FFESTV_stateMODULE3); return FFESTC_orderOK_; case FFESTV_stateMODULE3: return FFESTC_orderOK_; case FFESTV_stateUSE:#if FFESTR_F90 ffestc_shriek_end_uses_ (TRUE);#endif goto recurse; /* :::::::::::::::::::: */ case FFESTV_stateWHERE: ffestc_order_bad_ ();#if FFESTR_F90 ffestc_shriek_where_ (FALSE);#endif return FFESTC_orderBAD_; case FFESTV_stateIF: ffestc_order_bad_ (); ffestc_shriek_if_ (FALSE); return FFESTC_orderBAD_; default: ffestc_order_bad_ (); return FFESTC_orderBAD_; }}#endif/* ffestc_order_actiondo_ -- Check ordering on <actiondo> statement if (ffestc_order_actiondo_() != FFESTC_orderOK_) return; */static ffestcOrder_ffestc_order_actiondo_ (){ recurse: switch (ffestw_state (ffestw_stack_top ())) { case FFESTV_stateNIL: ffestc_shriek_begin_program_ (); goto recurse; /* :::::::::::::::::::: */ case FFESTV_stateDO: return FFESTC_orderOK_; case FFESTV_stateIFTHEN: case FFESTV_stateSELECT1: if (ffestw_top_do (ffestw_stack_top ()) == NULL) break; return FFESTC_orderOK_; case FFESTV_stateIF: if (ffestw_top_do (ffestw_stack_top ()) == NULL) break; ffestc_shriek_after1_ = ffestc_shriek_if_; return FFESTC_orderOK_; case FFESTV_stateUSE:#if FFESTR_F90 ffestc_shriek_end_uses_ (TRUE);#endif goto recurse; /* :::::::::::::::::::: */ case FFESTV_stateWHERE: ffestc_order_bad_ ();#if FFESTR_F90 ffestc_shriek_where_ (FALSE);#endif return FFESTC_orderBAD_; default: break; } ffestc_order_bad_ (); return FFESTC_orderBAD_;}/* ffestc_order_actionif_ -- Check ordering on <actionif> statement if (ffestc_order_actionif_() != FFESTC_orderOK_) return; */static ffestcOrder_ffestc_order_actionif_ (){ bool update;recurse: switch (ffestw_state (ffestw_stack_top ())) { case FFESTV_stateNIL: ffestc_shriek_begin_program_ (); goto recurse; /* :::::::::::::::::::: */ case FFESTV_statePROGRAM0: case FFESTV_statePROGRAM1: case FFESTV_statePROGRAM2: case FFESTV_statePROGRAM3: ffestw_set_state (ffestw_stack_top (), FFESTV_statePROGRAM4); update = TRUE; break; case FFESTV_stateSUBROUTINE0: case FFESTV_stateSUBROUTINE1: case FFESTV_stateSUBROUTINE2: case FFESTV_stateSUBROUTINE3: ffestw_set_state (ffestw_stack_top (), FFESTV_stateSUBROUTINE4); update = TRUE; break; case FFESTV_stateFUNCTION0: case FFESTV_stateFUNCTION1: case FFESTV_stateFUNCTION2: case FFESTV_stateFUNCTION3: ffestw_set_state (ffestw_stack_top (), FFESTV_stateFUNCTION4); update = TRUE; break; case FFESTV_statePROGRAM4: case FFESTV_stateSUBROUTINE4: case FFESTV_stateFUNCTION4: update = FALSE; break; case FFESTV_stateIFTHEN: case FFESTV_stateDO: case FFESTV_stateSELECT1: return FFESTC_orderOK_; case FFESTV_stateIF: ffestc_shriek_after1_ = ffestc_shriek_if_; return FFESTC_orderOK_; case FFESTV_stateUSE:#if FFESTR_F90 ffestc_shriek_end_uses_ (TRUE);#endif goto recurse; /* :::::::::::::::::::: */ case FFESTV_stateWHERE: ffestc_order_bad_ ();#if FFESTR_F90 ffestc_shriek_where_ (FALSE);#endif return FFESTC_orderBAD_; default: ffestc_order_bad_ (); return FFESTC_orderBAD_; } switch (ffestw_state (ffestw_previous (ffestw_stack_top ()))) { case FFESTV_stateINTERFACE0: ffestc_order_bad_ (); if (update) ffestw_update (NULL); return FFESTC_orderBAD_; default: if (update) ffestw_update (NULL); return FFESTC_orderOK_; }}/* ffestc_order_actionwhere_ -- Check ordering on <actionwhere> statement if (ffestc_order_actionwhere_() != FFESTC_orderOK_) return; */static ffestcOrder_ffestc_order_actionwhere_ (){ bool update;recurse: switch (ffestw_state (ffestw_stack_top ())) { case FFESTV_stateNIL: ffestc_shriek_begin_program_ (); goto recurse; /* :::::::::::::::::::: */ case FFESTV_statePROGRAM0: case FFESTV_statePROGRAM1: case FFESTV_statePROGRAM2: case FFESTV_statePROGRAM3: ffestw_set_state (ffestw_stack_top (), FFESTV_statePROGRAM4); update = TRUE; break; case FFESTV_stateSUBROUTINE0: case FFESTV_stateSUBROUTINE1: case FFESTV_stateSUBROUTINE2: case FFESTV_stateSUBROUTINE3: ffestw_set_state (ffestw_stack_top (), FFESTV_stateSUBROUTINE4); update = TRUE; break; case FFESTV_stateFUNCTION0: case FFESTV_stateFUNCTION1: case FFESTV_stateFUNCTION2: case FFESTV_stateFUNCTION3: ffestw_set_state (ffestw_stack_top (), FFESTV_stateFUNCTION4); update = TRUE; break; case FFESTV_statePROGRAM4: case FFESTV_stateSUBROUTINE4: case FFESTV_stateFUNCTION4: update = FALSE; break; case FFESTV_stateWHERETHEN: case FFESTV_stateIFTHEN: case FFESTV_stateDO: case FFESTV_stateSELECT1: return FFESTC_orderOK_; case FFESTV_stateWHERE:#if FFESTR_F90 ffestc_shriek_after1_ = ffestc_shriek_where_;#endif return FFESTC_orderOK_; case FFESTV_stateIF: ffestc_shriek_after1_ = ffestc_shriek_if_; return FFESTC_orderOK_; case FFESTV_stateUSE:#if FFESTR_F90 ffestc_shriek_end_uses_ (TRUE);#endif goto recurse; /* :::::::::::::::::::: */ default: ffestc_order_bad_ (); return FFESTC_orderBAD_; } switch (ffestw_state (ffestw_previous (ffestw_stack_top ()))) { case FFESTV_stateINTERFACE0: ffestc_order_bad_ (); if (update) ffestw_update (NULL); return FFESTC_orderBAD_; default: if (update) ffestw_update (NULL); return FFESTC_orderOK_; }}/* Check ordering on "any" statement. Like _actionwhere_, but doesn't produce any diagnostics. */static voidffestc_order_any_ (){ bool update;recurse: switch (ffestw_state (ffestw_stack_top ())) { case FFESTV_stateNIL: ffestc_shriek_begin_program_ (); goto recurse; /* :::::::::::::::::::: */ case FFESTV_statePROGRAM0: case FFESTV_statePROGRAM1: case FFESTV_statePROGRAM2: case FFESTV_statePROGRAM3: ffestw_set_state (ffestw_stack_top (), FFESTV_statePROGRAM4); update = TRUE; break; case FFESTV_stateSUBROUTINE0: case FFESTV_stateSUBROUTINE1: case FFESTV_stateSUBROUTINE2: case FFESTV_stateSUBROUTINE3: ffestw_set_state (ffestw_stack_top (), FFESTV_stateSUBROUTINE4); update = TRUE; break; case FFESTV_stateFUNCTION0: case FFESTV_stateFUNCTION1: case FFESTV_stateFUNCTION2: case FFESTV_stateFUNCTION3: ffestw_set_state (ffestw_stack_top (), FFESTV_stateFUNCTION4); update = TRUE; break; case FFESTV_statePROGRAM4: case FFESTV_stateSUBROUTINE4: case FFESTV_stateFUNCTION4: update = FALSE; break; case FFESTV_stateWHERETHEN: case FFESTV_stateIFTHEN: case FFESTV_stateDO: case FFESTV_stateSELECT1: return; case FFESTV_stateWHERE:#if FFESTR_F90 ffestc_shriek_after1_ = ffestc_shriek_where_;#endif return; case FFESTV_stateIF: ffestc_shriek_after1_ = ffestc_shriek_if_; return; case FFESTV_stateUSE:#if FFESTR_F90 ffestc_shriek_end_uses_ (TRUE);#endif goto recurse; /* :::::::::::::::::::: */ default: return; } switch (ffestw_state (ffestw_previous (ffestw_stack_top ()))) { case FFESTV_stateINTERFACE0: if (update) ffestw_update (NULL); return; default: if (update) ffestw_update (NULL); return; }}/* ffestc_order_bad_ -- Whine about statement ordering violation ffestc_order_bad_(); Uses current ffesta_tokens[0] and, if available, info on where current state started to produce generic message. Someday we should do
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -