📄 existing.at
字号:
| HBEGIN HEND ;EXT_LIST : EXT_ITEM | EXT_LIST HPAREXPSEPARATOR EXT_ITEM ;EXT_ITEM : HIDENTIFIER EXT_IDENT { lesinn_external_spec($1,$2, kind);} ;EXT_IDENT : /* EMPTY */ { $$=NULL;} | HVALRELOPERATOR { if($1!=HEQ)yerror (9); external=TRUE;} HTEXTKONST { $$=$3;external=FALSE;} ;/* GRAMATIKK FOR TYPER */NO_TYPE : /*EMPT*/ { type=TNOTY;} ;MBEE_TYPE : NO_TYPE | TYPE ;TYPE : HREF HBEGPAR HIDENTIFIER { prefquantident=$3; type=TREF;} HENDPAR | HTEXT { type=TTEXT;} | HBOOLEAN { type=TBOOL;} | HCHARACTER { type=TCHAR;} | HSHORT HINTEGER { type=TSHORT;} | HINTEGER { type=TINTG;} | HREAL { type=TREAL;} | HLONG HREAL { type=TLONG;} ;/* GRAMATIKK FOR DEL AV SETNINGER */MBEE_ELSE_PART : /*EMPT*//* | HELSE HIF EXPRESSION HTHEN { mout(MELSE); mout(MIF); OBSBLOCK();} BLOCK { MBEEENDBLOCK();} MBEE_ELSE_PART { mout(MENDIF);}*/ | HELSE { OBSBLOCK(); mout(MELSE);} BLOCK { MBEEENDBLOCK();} ;FOR_LIST : FOR_LIST_ELEMENT { mout(MENDSEP); mout(MLISTSEP);} | FOR_LIST_ELEMENT HPAREXPSEPARATOR FOR_LIST { mout(MLISTSEP);} ;FOR_LIST_ELEMENT: EXPRESSION MBEE_F_L_EL_R_PT ;MBEE_F_L_EL_R_PT: /*EMPT*/ | HWHILE EXPRESSION { mout(MFORWHILE);} | HSTEP EXPRESSION HUNTIL EXPRESSION { mout(MUNTIL); mout(MSTEP);} ;GOTO : HGO HTO | HGOTO ;CONN_STATE_R_PT : WHEN_CLAUSE_LIST | HDO { beginBlock(KCON); mout(MDO); OBSBLOCK(); } BLOCK { endBlock(NULL,CCNO); MBEEENDBLOCK(); mout(MENDDO);} ;WHEN_CLAUSE_LIST: HWHEN HIDENTIFIER HDO { beginBlock(KCON); mout(MIDENTIFIER); OBSBLOCK(); moutId($2); mout(MWHEN);} BLOCK { endBlock(NULL,CCNO); MBEEENDBLOCK(); mout(MENDWHEN);} | WHEN_CLAUSE_LIST HWHEN HIDENTIFIER HDO { beginBlock(KCON); mout(MIDENTIFIER); OBSBLOCK(); moutId($3); mout(MWHEN);} BLOCK { endBlock(NULL,CCNO); MBEEENDBLOCK(); mout(MENDWHEN);} ;MBEE_OTWI_CLAUS : /*EMPT*/ | HOTHERWISE {OBSBLOCK(); mout(MOTHERWISE);} BLOCK {MBEEENDBLOCK();mout(MENDOTHERWISE);} ;ACTIVATOR : HACTIVATE { mout(MBOOLEANKONST); moutIval(FALSE);} | HREACTIVATE { mout(MBOOLEANKONST); moutIval(TRUE);} ;SCHEDULE : /*EMPT*/ { mout(MCHARACTERKONST); moutIval(DIRECT); mout(MINTEGERKONST); moutIval(0); mout(MNONE); mout(MBOOLEANKONST); moutIval(FALSE);} | ATDELAY EXPRESSION { mout(MNONE);} PRIOR | BEFOREAFTER { mout(MINTEGERKONST); moutIval(0);} EXPRESSION { mout(MBOOLEANKONST); moutIval(FALSE);} ;ATDELAY : HAT { mout(MCHARACTERKONST); moutIval(AT);} | HDELAY { mout(MCHARACTERKONST); moutIval(DELAYS);} ;BEFOREAFTER : HBEFORE { mout(MCHARACTERKONST); moutIval(BEFORE);} | HAFTER { mout(MCHARACTERKONST); moutIval(AFTER);} ;PRIOR : /*EMPT*/ { mout(MBOOLEANKONST); moutIval(FALSE);} | HPRIOR { mout(MBOOLEANKONST); moutIval(TRUE);} ;/* GRAMATIKK FOR SETNINGER OG DEKLARASJONER */MODULSTATEMENT : HWHILE EXPRESSION HDO { STOPOBSBLOCK(); mout(MWHILE); OBSBLOCK();} BLOCK { MBEEENDBLOCK(); mout(MENDWHILE); $$=STATEMENT;} | HIF EXPRESSION HTHEN { STOPOBSBLOCK(); mout(MIF); OBSBLOCK();} BLOCK { MBEEENDBLOCK();} MBEE_ELSE_PART { mout(MENDIF); $$=STATEMENT;} | HFOR HIDENTIFIER HASSIGN { STOPOBSBLOCK(); mout(MIDENTIFIER); moutId($2);} FOR_LIST HDO { beginBlock(KFOR); if($3==HASSIGNVALUE) mout(MFOR); else mout(MFORR); OBSBLOCK(); mout(MFORDO);} BLOCK { MBEEENDBLOCK(); endBlock(NULL,CCNO); mout(MENDFOR); $$=STATEMENT;} | GOTO EXPRESSION { mout(MGOTO); STOPOBSBLOCK(); $$=STATEMENT;} | HINSPECT EXPRESSION { mout(MINSPECT); STOPOBSBLOCK(); beginBlock(KINSP);} CONN_STATE_R_PT { endBlock(NULL,CCNO);} MBEE_OTWI_CLAUS { mout(MENDINSPECT); $$=STATEMENT;} | HINNER { STOPOBSBLOCK(); mout(MINNER); regInner(); $$=STATEMENT;} | HIDENTIFIER HLABELSEPARATOR { STOPOBSBLOCK(); regDecl($1, TLABEL, KSIMPLE, categ); mout(MLABEL); moutId($1); mout(MENDLABEL);} DECLSTATEMENT { if($4<=DECLARATION) { yerror (27); $$=DECLARATION;} else $$=$4;} | EXPRESSION_SIMP HBEGIN { $<ident>$=$1; } IMPORT_SPEC_MODULE { mout(MPRBLOCK); prefquantident=$1; beginBlock(KPRBLK);} MBEE_DECLSTMS HEND { endBlock(NULL,CCNO); mout(MENDPRBLOCK); $$=STATEMENT;} | EXPRESSION_SIMP HBEGIN error HSTATEMENTSEPARATOR MBEE_DECLSTMS HEND { $$=STATEMENT; endBlock(NULL,CCNO); mout(MENDPRBLOCK);} | EXPRESSION_SIMP HBEGIN error HEND { $$=STATEMENT; endBlock(NULL,CCNO); mout(MENDPRBLOCK);} | EXPRESSION_SIMP { STOPOBSBLOCK(); $$=STATEMENT; mout(MENDASSIGN);} | ACTIVATOR EXPRESSION SCHEDULE { $$=STATEMENT; mout(MENDSEP); mout(MARGUMENTSEP); mout(MARGUMENTSEP); mout(MARGUMENTSEP); mout(MARGUMENTSEP); mout(MARGUMENTSEP); mout(MARGUMENTSEP); mout(MARGUMENT); moutId(activateid); mout(MENDASSIGN);} | HBEGIN { STOPOBSBLOCK(); OBSBLOCK();} MBEE_DECLSTMS HEND { MBEEENDBLOCK(); $$=STATEMENT;} | MBEE_TYPE HPROCEDURE HIDENTIFIER { MBEENEWBLOCK(); mout(MPROCEDURE); regDecl($3, type, KPROC, categ); beginBlock(KPROC);} HEADING BLOCK { endBlock(NULL,CCNO); $$=DECLARATION; mout(MENDPROCEDURE);} | HIDENTIFIER HCLASS NO_TYPE { $<ident>$=$1; } IMPORT_SPEC_MODULE HIDENTIFIER { prefquantident=$1; mout(MCLASS); regDecl($6, TNOTY, KCLASS, categ); beginBlock(KCLASS);} HEADING BLOCK { endBlock(NULL,CCNO); $$=DECLARATION; mout(MENDCLASS);} | HCLASS NO_TYPE HIDENTIFIER { prefquantident=0; MBEENEWBLOCK(); mout(MCLASS); regDecl($3, TNOTY, KCLASS, categ); beginBlock(KCLASS);} HEADING BLOCK { endBlock(NULL,CCNO); $$=DECLARATION; mout(MENDCLASS);} | EXT_DECLARATION { $$=EXTDECLARATION;} | /*EMPT*/{ STOPOBSBLOCK(); $$=EMPTYSTATEMENT;} ;IMPORT_SPEC_MODULE: { MBEENEWBLOCK(); kind=KCLASS; if($<ident>0==simsetident && findDecl(simsetident,cblock,FALSE)==NULL) lesinn_external_spec(simsetident, SIMSETATRFILE, kind); if($<ident>0==simulationident && findDecl( simulationident,cblock,FALSE)==NULL) lesinn_external_spec(simulationident, SIMULATIONATRFILE, kind); if(($<ident>0==fileident && findDecl( fileident,cblock,FALSE)==NULL) || ($<ident>0==outfileident && findDecl( outfileident,cblock,FALSE)==NULL) || ($<ident>0==infileident && findDecl( infileident,cblock,FALSE)==NULL) || ($<ident>0==directfileident && findDecl( directfileident,cblock,FALSE)==NULL) || ($<ident>0==printfileident && findDecl( printfileident,cblock,FALSE)==NULL) || ($<ident>0==bytefileident && findDecl( bytefileident,cblock,FALSE)==NULL) || ($<ident>0==inbytefileident && findDecl( inbytefileident,cblock,FALSE)==NULL) || ($<ident>0==outbytefileident && findDecl( outbytefileident,cblock,FALSE)==NULL) || ($<ident>0==directbytefileident && findDecl( directbytefileident,cblock,FALSE)==NULL)) lesinn_external_spec(fileident, FILEATRFILE, kind);} ;DECLSTATEMENT : MODULSTATEMENT | TYPE HIDENTIFIER MBEE_CONSTANT HPAREXPSEPARATOR { MBEENEWBLOCK(); kind=KSIMPLE; regDecl($2, type, KSIMPLE, categ); categ=CLOCAL;} IDENTIFIER_LISTC { $$=DECLARATION;} | TYPE HIDENTIFIER MBEE_CONSTANT { MBEENEWBLOCK(); regDecl($2, type, KSIMPLE, categ); categ=CLOCAL; $$=DECLARATION;} | MBEE_TYPE HARRAY { MBEENEWBLOCK(); kind=KARRAY;} ARR_SEGMENT_LIST { $$=DECLARATION;} | HSWITCH HIDENTIFIER HASSIGN { MBEENEWBLOCK(); mout(MIDENTIFIER); moutId($2); regDecl($2, TLABEL, KARRAY, categ);} SWITCH_LIST { $$=DECLARATION; mout(MSWITCH); mout(MENDSWITCH);} ;BLOCK : DECLSTATEMENT { if($1<=DECLARATION)yerror (29);} | HBEGIN MBEE_DECLSTMS HEND | HBEGIN error HSTATEMENTSEPARATOR MBEE_DECLSTMS HEND | HBEGIN error HEND ;MBEE_DECLSTMS : MBEE_DECLSTMSU { if($1<=DECLARATION)yerror (28); $$=$1;} ;MBEE_DECLSTMSU : DECLSTATEMENT { $$=$1;} | MBEE_DECLSTMSU HSTATEMENTSEPARATOR DECLSTATEMENT { if($1>=STATEMENT && $3<=DECLARATION) yerror (26); $$=$3;} ;MODULS : MODULSTATEMENT { if($1==DECLARATION) {separat_comp=TRUE;gettimestamp();} $$=$1;} | MODULS HSTATEMENTSEPARATOR MODULSTATEMENT { if($1>=STATEMENT && $3<=DECLARATION) yerror (26);else if($1>=STATEMENT && $3!=EMPTYSTATEMENT)yerror (25); if(separat_comp && $3==STATEMENT) yerror (25); if($3==DECLARATION && !separat_comp) {separat_comp=TRUE;gettimestamp();} $$=$3;} ;/* GRAMATIKK FOR DEL AV DEKLARASJONER */ARR_SEGMENT_LIST: ARR_SEGMENT | ARR_SEGMENT_LIST HPAREXPSEPARATOR ARR_SEGMENT ;ARR_SEGMENT : ARRAY_SEGMENT HBEGPAR BAUND_PAIR_LIST HENDPAR { mout(MARRAY); mout(MENDARRAY); setArrayDim($3);} ;ARRAY_SEGMENT : ARRAY_SEGMENT_EL { mout(MENDSEP); mout(MARRAYSEP);} | ARRAY_SEGMENT_EL HPAREXPSEPARATOR ARRAY_SEGMENT { mout(MARRAYSEP);} ;ARRAY_SEGMENT_EL: HIDENTIFIER { mout(MIDENTIFIER); moutId($1); regDecl($1, type, kind, categ); if(lastArray==NULL) lastArray=cblock->lastparloc;} ;BAUND_PAIR_LIST : BAUND_PAIR { mout(MENDSEP); mout(MBOUNDSEP); $$=1;} | BAUND_PAIR HPAREXPSEPARATOR BAUND_PAIR_LIST { mout(MBOUNDSEP); $$=$3+1;} ;BAUND_PAIR : EXPRESSION HLABELSEPARATOR EXPRESSION { mout(MBOUNDPARSEP);} ;SWITCH_LIST : EXPRESSION { mout(MENDSEP); mout(MSWITCHSEP);} | EXPRESSION HPAREXPSEPARATOR SWITCH_LIST { mout(MSWITCHSEP);} ;HEADING : MBEE_FMAL_PAR_P HSTATEMENTSEPARATOR { kind=KNOKD;} MBEE_MODE_PART { categ=CSPEC;} MBEE_SPEC_PART { kind=KNOKD;} MBEE_PROT_PART { categ=CVIRT;} MBEE_VIRT_PART { categ=CLOCAL;} ;MBEE_FMAL_PAR_P : /*EMPT*/ | FMAL_PAR_PART ;FMAL_PAR_PART : HBEGPAR NO_TYPE MBEE_LISTV HENDPAR ;MBEE_LISTV : /*EMPT*/ | LISTV ;LISTV : HIDENTIFIER { regDecl($1, type, KNOKD, CDEFLT);} | FPP_CATEG HDOTDOTDOT { regDecl(varargsid, TVARARGS, KNOKD, categ);} | HIDENTIFIER { regDecl($1, type, KNOKD, CDEFLT);} HPAREXPSEPARATOR LISTV {} | FPP_SPEC | FPP_SPEC HPAREXPSEPARATOR LISTV ;FPP_HEADING : HBEGPAR NO_TYPE FPP_MBEE_LISTV HENDPAR ;FPP_MBEE_LISTV : /*EMPT*/ | FPP_LISTV ;FPP_LISTV : FPP_CATEG HDOTDOTDOT { regDecl(varargsid, TVARARGS, KNOKD, categ);} | FPP_SPEC | FPP_SPEC HPAREXPSEPARATOR LISTV ;FPP_SPEC : FPP_CATEG SPECIFIER HIDENTIFIER { regDecl($3, type, kind, categ);} | FPP_CATEG FPP_PROC_DECL_IN_SPEC ;FPP_CATEG : HNAME HLABELSEPARATOR { categ=CNAME;} | HVALUE HLABELSEPARATOR { categ=CVALUE;} | HVAR HLABELSEPARATOR { categ=CVAR;} | /*EMPT*/ { categ=CDEFLT;} ;FPP_PROC_DECL_IN_SPEC: MBEE_TYPE HPROCEDURE HIDENTIFIER { $<ival>$=categ; regDecl($3, type, KPROC, categ); beginBlock(KPROC);} FPP_HEADING { categ=$<ival>4; /* M} settes tilbake*/} { endBlock(NULL,CCNO);} ;IDENTIFIER_LISTV: HIDENTIFIER { regDecl($1, type, kind, categ);} | HDOTDOTDOT { regDecl(varargsid, TVARARGS, kind, categ);} | HIDENTIFIER { regDecl($1, type, kind, categ);} HPAREXPSEPARATOR IDENTIFIER_LISTV {} ;MBEE_MODE_PART : /*EMPT*/ | MODE_PART ;MODE_PART : NAME_PART | VALUE_PART | VAR_PART | NAME_PART VALUE_PART | VALUE_PART NAME_PART | NAME_PART VAR_PART | VAR_PART NAME_PART | VALUE_PART VAR_PART | VAR_PART VALUE_PART | VAR_PART NAME_PART VALUE_PART | NAME_PART VAR_PART VALUE_PART | NAME_PART VALUE_PART VAR_PART | VAR_PART VALUE_PART NAME_PART | VALUE_PART VAR_PART NAME_PART | VALUE_PART NAME_PART VAR_PART ;NAME_PART : HNAME { categ=CNAME;} IDENTIFIER_LISTV HSTATEMENTSEPARATOR ;VAR_PART : HVAR { categ=CVAR;} IDENTIFIER_LISTV HSTATEMENTSEPARATOR ;VALUE_PART : HVALUE { categ=CVALUE;} IDENTIFIER_LISTV HSTATEMENTSEPARATOR ;MBEE_SPEC_PART : /*EMPT*/ | SPEC_PART ;SPEC_PART : ONE_SPEC | SPEC_PART ONE_SPEC ;ONE_SPEC : SPECIFIER IDENTIFIER_LIST HSTATEMENTSEPARATOR | NO_TYPE HPROCEDURE HIDENTIFIER HOBJRELOPERATOR { if($4!=HIS) yerror (8);} PROC_DECL_IN_SPEC HSTATEMENTSEPARATOR | FPP_PROC_DECL_IN_SPEC HSTATEMENTSEPARATOR | MBEE_TYPE HPROCEDURE HIDENTIFIER HSTATEMENTSEPARATOR { yerror (45);} | MBEE_TYPE HPROCEDURE HIDENTIFIER HPAREXPSEPARATOR IDENTIFIER_LIST HSTATEMENTSEPARATOR { yerror (45);} ;SPECIFIER : TYPE { kind=KSIMPLE;} | MBEE_TYPE HARRAY { kind=KARRAY;} | HLABEL { type=TLABEL; kind=KSIMPLE;} | HSWITCH { type=TLABEL; kind=KARRAY;} ;PROC_DECL_IN_SPEC: MBEE_TYPE HPROCEDURE HIDENTIFIER { $<ival>$=categ; regDecl($3, type, KPROC, categ); beginBlock(KPROC);} HEADING { categ=$<ival>4; /* M} settes tilbake*/} MBEE_BEGIN_END { endBlock(NULL,CCNO);} ;MBEE_BEGIN_END : /* EMPTY */ | HBEGIN HEND ;MBEE_PROT_PART : /*EMPT*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -