⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 existing.at

📁 GNU的词法/语法分析器bison源码
💻 AT
📖 第 1 页 / 共 5 页
字号:
		|	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 + -