亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? globals.h

?? 編譯原理學(xué)習(xí)使用的代碼 內(nèi)容有從詞法分析到中間代碼生成的代碼 并且含有注釋
?? H
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/*******************************************************************/
/* 文件	 globals.h											       */
/* 說(shuō)明  類PASCAL語(yǔ)言編譯器的全局類型和變量,應(yīng)在其他包含文件之前   */
/* 主題  編譯器結(jié)構(gòu):原理和實(shí)例								       */	
/*******************************************************************/

/* 如已經(jīng)聯(lián)入頭文件globals.h則不再聯(lián)入 */
#ifndef _GLOBALS_H_
#define _GLOBALS_H_

/****** globals.h所包含頭文件 ******/  
#include "stdio.h"
#include "stdlib.h"

/* 定義常量FALSE為0 */
#ifndef FALSE
#define FALSE 0
#endif

/* 定義常量TRUE為1 */
#ifndef TRUE
#define TRUE 1
#endif


/* 定義保留字?jǐn)?shù)量常量MAXRESERVED為21 */
#define MAXRESERVED 21


/* MAXTOKENLEN為單詞最大長(zhǎng)度定義為40 */
#define MAXTOKENLEN 40

/*初始化符號(hào)表中變量的偏移*/
#define INITOFF 7

/* SCOPESIZE為符號(hào)表scope棧的大小*/
#define SCOPESIZE 1000

/*定義token的長(zhǎng)度*/
#define TOKENLEN sizeof (TokenType)

/*定義鏈表節(jié)點(diǎn)的長(zhǎng)度*/
#define CHAINNODELEN sizeof (ChainNodeType) 


/********************** 單詞的詞法類型 ********************/
typedef enum 
{
	/* 簿記單詞符號(hào) */
    ENDFILE,	ERROR,               
	/* 保留字 */
    PROGRAM,	PROCEDURE,	TYPE,	 VAR,		 IF,
	THEN,		ELSE,		FI,		 WHILE,		 DO,
	ENDWH,		BEGIN,		END,	 READ,		 WRITE,
	ARRAY,		OF,			RECORD,	 RETURN, 

	INTEGER,	CHAR,
	/* 多字符單詞符號(hào) */
    ID,			INTC,		CHARC,
    /*特殊符號(hào) */
	ASSIGN,		EQ,			LT,		 PLUS,		 MINUS,/****begin 和 end算不算呢?*****/
	TIMES,		OVER,		LPAREN,	 RPAREN,	 DOT,
	COLON,		SEMI,		COMMA,	 LMIDPAREN,	 RMIDPAREN,
	UNDERANGE
} LexType;


/*********** 單詞的類型,包括詞法信息和語(yǔ)義信息 ************/
typedef struct tokenType
    { int     lineshow;
	  LexType Lex;
      char    Sem[MAXTOKENLEN+1];
    } TokenType; 


/***********鏈表的結(jié)點(diǎn)類型,包括Token部分和指針部分**********/
typedef struct  node  
    { TokenType   Token;      //單詞
      struct node *nextToken; //指向下一個(gè)單詞的指針
    } ChainNodeType;  




/******************************************************
 ******************   語(yǔ)法分析樹   ********************
 ******************************************************/

/*語(yǔ)法樹根節(jié)點(diǎn)ProK,程序頭結(jié)點(diǎn)PheadK,聲明類型節(jié)點(diǎn)DecK,
  標(biāo)志子結(jié)點(diǎn)都是類型聲明的結(jié)點(diǎn)TypeK,標(biāo)志子結(jié)點(diǎn)都是變量聲明的結(jié)點(diǎn)VarK,
  函數(shù)聲明結(jié)點(diǎn)FuncDecK,語(yǔ)句序列節(jié)點(diǎn)StmLK,語(yǔ)句聲明結(jié)點(diǎn)StmtK,
  表達(dá)式結(jié)點(diǎn)ExpK*/
typedef enum {ProK,PheadK,DecK,TypeK,VarK,ProcDecK,StmLK,StmtK,ExpK}
              NodeKind;


/*聲明類型Deckind 類型的枚舉定義:
  數(shù)組類型ArrayK,字符類型CharK,
  整數(shù)類型IntegerK,記錄類型RecordK,
  以類型標(biāo)識(shí)符作為類型的IdK*/ 
typedef enum {ArrayK,CharK,IntegerK,RecordK,IdK}  DecKind;



/* 語(yǔ)句類型StmtKind類型的枚舉定義:			*
 * 判斷類型IfK,循環(huán)類型WhileK				*
 * 賦值類型AssignK,讀類型ReadK              *
 * 寫類型WriteK,函數(shù)調(diào)用類型CallK          */
typedef enum {IfK,WhileK,AssignK,ReadK,WriteK,CallK,ReturnK} StmtKind;


/* 表達(dá)式類型ExpKind類型的枚舉定義:         *
 * 操作類型OpK,常數(shù)類型ConstK,變量類型VarK */
typedef enum {OpK,ConstK,VariK} ExpKind;


/* 變量類型VarKind類型的枚舉定義:           *
 * 標(biāo)識(shí)符IdV,數(shù)組成員ArrayMembV,域成員FieldMembV*/
typedef enum {IdV,ArrayMembV,FieldMembV} VarKind; 


/* 類型檢查ExpType類型的枚舉定義:           *
 * 空Void,整數(shù)類型Integer,字符類型Char      */ 
typedef enum {Void,Integer,Boolean} ExpType;

/* 參數(shù)類型ParamType類型的枚舉定義:        *
 * 值參valparamType,變參varparamType        */
typedef enum {valparamType,varparamType} ParamType; 

/* 定義語(yǔ)法樹節(jié)點(diǎn)的最大子節(jié)點(diǎn)數(shù)MAXCHILDRREN為3 */
/* 過(guò)程聲明部分的子節(jié)點(diǎn)child[0]指向參數(shù)部分,
   子節(jié)點(diǎn)child[1]指向聲明體部分,子節(jié)點(diǎn)child[2]
   指向函數(shù)的語(yǔ)句部分;*/ 
#define MAXCHILDREN 3 

/*提前聲明符號(hào)表結(jié)構(gòu)*/
struct symbtable;

/********** 語(yǔ)法樹節(jié)點(diǎn)treeNode類型 *********/
typedef struct treeNode

   { 
	 struct treeNode * child[MAXCHILDREN];		/* 子節(jié)點(diǎn)指針	*/			
     struct treeNode * sibling;					/* 兄弟節(jié)點(diǎn)指針	*/
     int lineno;								/* 源代碼行號(hào)	*/
     NodeKind nodekind;						    /* 節(jié)點(diǎn)類型		*/
     union 
	 {
		 DecKind  dec;
	     StmtKind stmt; 
		 ExpKind  exp; 
	 } kind;                       /* 具體類型     */

	 int idnum;                    /* 相同類型的變量個(gè)數(shù) */ 
	 
	 char name[10][10];            /* 標(biāo)識(shí)符的名稱  */

	 struct symbtable * table[10]; /* 與標(biāo)志符對(duì)應(yīng)的符號(hào)表地址,在語(yǔ)義分析階段填入*/  

	 struct 
	 {
		struct
			{	
				int low;              /* 數(shù)組下界     */
				int up;               /* 數(shù)組上界     */
				DecKind   childtype;  /* 數(shù)組的子類型 */
			}ArrayAttr;               /* 數(shù)組屬性     */
	         
		struct
			{	
				ParamType  paramt;     /* 過(guò)程的參數(shù)類型*/
			}ProcAttr;                 /* 過(guò)程屬性      */ 
		
		struct
			{
				LexType op;           /* 表達(dá)式的操作符*/						
				int val;		      /* 表達(dá)式的值	   */ 
				VarKind  varkind;     /* 變量的類別    */
				ExpType type;         /* 用于類型檢查  */
			}ExpAttr;	              /* 表達(dá)式屬性    */

      char type_name[10];             /* 類型名是標(biāo)識(shí)符  */      
             
	 } attr;                          /* 屬性	       */
}TreeNode;

/*非終極符的總數(shù)*/
#define  NTMLNUM    68

/*終極符的總數(shù)*/
#define  TMLNUM     42

/*LL1分析表的大小*/
#define  TABLESIZE  104

/******************類型和變量聲明*********************/

/* 1.進(jìn)行LL1語(yǔ)法分析用到的類型及對(duì)應(yīng)的變量  */

/*所有非終極符,其各自含義可參考LL1文法*/
typedef enum
{ 
  Program,	      ProgramHead,	    ProgramName,	DeclarePart,
  TypeDec,        TypeDeclaration,	TypeDecList,	TypeDecMore,
  TypeId,	      TypeName,			BaseType,	    StructureType,
  ArrayType,      Low,	            Top,            RecType,
  FieldDecList,   FieldDecMore,	    IdList,	        IdMore,
  VarDec,	      VarDeclaration,	VarDecList,		VarDecMore,
  VarIdList,	  VarIdMore,		ProcDec,		ProcDeclaration,
  ProcDecMore,    ProcName,		    ParamList,		ParamDecList,
  ParamMore,      Param,		    FormList,		FidMore,
  ProcDecPart,    ProcBody,	    	ProgramBody,	StmList,
  StmMore,        Stm,				AssCall,		AssignmentRest,
  ConditionalStm, StmL,			    LoopStm,		InputStm,
  InVar,          OutputStm,		ReturnStm,		CallStmRest,
  ActParamList,   ActParamMore,		RelExp,			OtherRelE,
  Exp,			  OtherTerm,		Term,           OtherFactor,
  Factor,         Variable,			VariMore,		FieldVar,
  FieldVarMore,   CmpOp,			AddOp,          MultOp
  
}  NontmlType; 

/*所有終極符,取自單詞的詞法類型的枚舉定義,可參考zglobals.h頭文件*/
typedef LexType  TmlType;


/*實(shí)現(xiàn)LL1分析用的分析棧,存放的是終極符和非終極符 */
typedef struct Node
{  /*內(nèi)容標(biāo)志*/
   int flag;    /* flag為1,表示棧中內(nèi)容為非終極符;*/
                /* flag為2,表示棧中內(nèi)容為終極符    */
   /*內(nèi)容*/
   union { NontmlType Ntmlvar ;  /*非終極符部分*/ 
           TmlType tmlvar;       /*終極符部分*/
         } var;   

   /*指向下一個(gè)節(jié)點(diǎn)的指針*/
   struct Node *underNode;

}  StackNode;


/* 2.創(chuàng)建語(yǔ)法樹所需的類型及變量**/

/*為建立聲明和語(yǔ)句部分的語(yǔ)法樹所設(shè)的指針棧,*
 *注意棧中存的是存放指針的地址              */
typedef struct NodePA
{  TreeNode       **pointer;
   struct NodePA  *underNode;
}  StackNodePA;


/*為生成表達(dá)式部分的語(yǔ)法樹所設(shè)的指針棧,*
 *棧中存的是存放指向樹節(jié)點(diǎn)的指針        */
typedef struct NodeP
{  TreeNode      *pointer;
   struct NodeP  *underNode;
}StackNodeP;

/*符號(hào)棧頂指針*/
extern StackNode *StackTop;

/*棧空標(biāo)志*/
extern  int STACKEMPTY; 

/*語(yǔ)法樹棧頂指針*/
extern  StackNodePA  *StackTopPA;
/*棧空標(biāo)志*/
extern  int  paSTACKEMPTY;

/*操作符棧的棧頂指針*/
extern  StackNodeP  *OpStackTop;
/*操作符棧空標(biāo)志*/
extern  int OpSTACKEMPTY ;  

/*操作數(shù)棧的棧頂指針*/
extern  StackNodeP  *NumStackTop;

/*操作數(shù)棧空標(biāo)志*/
extern  int NumSTACKEMPTY ;



/******************************************************
 **********語(yǔ)義分析需要用到的類型及變量定義************
 ******************************************************/


/*標(biāo)識(shí)符的類型*/
typedef  enum    {typeKind,varKind,procKind}IdKind;

/*變量的類別。dir表直接變量(值參),indir表示間接變量(變參)*/						
typedef  enum    {dir,indir}AccessKind;

/*形參表的結(jié)構(gòu)定義*/
typedef struct  paramTable
{ 
	struct symbtable   *  entry;/*指向該形參所在符號(hào)表中的地址入口*/
	struct paramTable  *  next;
}ParamTable;


struct typeIR;
/*標(biāo)識(shí)符的屬性結(jié)構(gòu)定義*/
typedef struct 
{
	struct typeIR  * idtype;		/*指向標(biāo)識(shí)符的類型內(nèi)部表示*/
	IdKind    kind;					/*標(biāo)識(shí)符的類型*/
	union   
	{
		struct
		{
			AccessKind   access;   /*判斷是變參還是值參*/
			int          level;    
			int          off;
			bool         isParam;  /*判斷是參數(shù)還是普通變量*/

		}VarAttr;/*變量標(biāo)識(shí)符的屬性*/	
		struct
		{
			int         level;     /*該過(guò)程的層數(shù)*/

			ParamTable  * param;   /*參數(shù)表*/

			int         mOff;	   /*過(guò)程活動(dòng)記錄的大小*/
			                
			int         nOff;  	   /*sp到display表的偏移量*/
							
			int         procEntry; /*過(guò)程的入口地址*/

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久欧美一区二区| 日本一区二区三区四区| 国产成人av电影在线播放| 一区二区三区四区亚洲| 精品电影一区二区| 欧洲亚洲精品在线| 国产福利一区二区三区| 亚洲不卡一区二区三区| 中文字幕乱码日本亚洲一区二区| 欧美影院一区二区三区| 国产99久久久国产精品潘金网站| 亚洲与欧洲av电影| 国产精品久久影院| 精品国精品国产尤物美女| 在线视频欧美精品| aa级大片欧美| 国产精品1区2区| 日本sm残虐另类| 一区二区三区日韩精品视频| 国产视频一区在线观看| 69堂成人精品免费视频| 在线观看日韩高清av| 成人精品在线视频观看| 国产在线精品免费av| 日韩激情一二三区| 亚洲午夜视频在线观看| 亚洲欧洲韩国日本视频| 欧美激情一区二区三区全黄| 欧美精品一区二区在线观看| 日韩一级精品视频在线观看| 欧美日韩电影在线播放| 在线观看精品一区| 色婷婷久久一区二区三区麻豆| 粉嫩av一区二区三区在线播放 | 国产精品一区免费在线观看| 丝袜亚洲另类欧美| 亚洲成人7777| 亚洲一级二级三级在线免费观看| 1024亚洲合集| 亚洲日本在线天堂| ...av二区三区久久精品| 中文久久乱码一区二区| 欧美激情综合五月色丁香小说| www激情久久| 久久亚洲欧美国产精品乐播| 精品国产污污免费网站入口 | 免播放器亚洲一区| 日本大胆欧美人术艺术动态| 日韩电影免费一区| 美女视频黄久久| 久久99最新地址| 国产suv精品一区二区6| a美女胸又www黄视频久久| 成人国产一区二区三区精品| 99久久精品国产一区| 色综合天天综合色综合av| 欧美自拍丝袜亚洲| 91精品国产综合久久国产大片| 在线成人小视频| 精品久久久久久无| 国产网红主播福利一区二区| 专区另类欧美日韩| 亚洲成av人片一区二区梦乃| 奇米影视在线99精品| 国产美女精品人人做人人爽 | av成人动漫在线观看| 欧美在线观看视频一区二区| 欧美日韩视频在线第一区 | 一区二区在线观看av| 丝瓜av网站精品一区二区| 老鸭窝一区二区久久精品| 国产一区二区三区不卡在线观看| 成人午夜视频在线| 欧美日韩免费一区二区三区| 欧美变态口味重另类| 国产精品美女一区二区在线观看| 中文字幕一区二区视频| 亚洲一区视频在线观看视频| 久久精品国产亚洲5555| www.av亚洲| 欧美裸体一区二区三区| 国产视频一区在线观看| 亚洲国产色一区| 国产一区美女在线| 日本精品视频一区二区| 久久综合色之久久综合| 亚洲精品水蜜桃| 久久91精品国产91久久小草| 99久久精品99国产精品 | 在线一区二区三区做爰视频网站| 777奇米成人网| 国产精品你懂的在线欣赏| 天天av天天翘天天综合网色鬼国产 | 日韩欧美中文字幕精品| 国产精品久久久久影院亚瑟| 午夜精品免费在线| 夫妻av一区二区| 9191精品国产综合久久久久久 | 日韩欧美一区二区久久婷婷| 国产精品理论片在线观看| 日韩和的一区二区| 不卡的av在线| 精品国产精品一区二区夜夜嗨| 亚洲免费视频成人| 国产二区国产一区在线观看| 3d动漫精品啪啪| 1024亚洲合集| 国产成人免费视频网站| 欧美一级二级三级蜜桃| 亚洲精品成a人| 成人一区在线看| 久久网这里都是精品| 亚洲成人精品一区二区| 99这里只有精品| 欧美国产日韩精品免费观看| 美女尤物国产一区| 欧美日韩精品一区视频| 自拍偷拍亚洲激情| 成人精品视频一区| 久久精品一区二区三区不卡| 奇米777欧美一区二区| 欧美少妇性性性| 亚洲码国产岛国毛片在线| 成人免费视频国产在线观看| 久久亚洲一级片| 激情小说亚洲一区| 日韩欧美国产一区二区三区 | 国产真实乱偷精品视频免| 在线播放91灌醉迷j高跟美女| 亚洲精品视频观看| 91麻豆视频网站| 成人免费在线播放视频| av一区二区三区黑人| 亚洲国产精品精华液2区45| 国产一区二区免费视频| 欧美成人综合网站| 蜜臀久久99精品久久久久久9| 欧美裸体bbwbbwbbw| 天堂精品中文字幕在线| 91精品国产综合久久久蜜臀图片| 亚洲国产日韩综合久久精品| 欧美午夜视频网站| 午夜精品视频在线观看| 欧美日韩黄色影视| 五月激情六月综合| 日韩午夜电影av| 美女爽到高潮91| 精品国产免费一区二区三区四区 | 综合分类小说区另类春色亚洲小说欧美| 国产精品888| 国产精品入口麻豆九色| 91在线看国产| 亚洲制服丝袜在线| 7777精品伊人久久久大香线蕉超级流畅| 亚洲va欧美va人人爽| 91精品国产综合久久精品性色| 日韩精品欧美精品| 欧美精品一区二区三区高清aⅴ| 麻豆国产精品一区二区三区| 久久久久久久久久看片| 成人在线视频一区| 亚洲永久免费av| 制服丝袜亚洲精品中文字幕| 国模娜娜一区二区三区| 国产精品的网站| 欧美三日本三级三级在线播放| 三级一区在线视频先锋| 久久综合网色—综合色88| jvid福利写真一区二区三区| 一区二区三区免费看视频| 在线成人免费观看| 国产乱码精品一品二品| 亚洲另类在线一区| 日韩一级二级三级| www.亚洲免费av| 日韩经典一区二区| 国产精品女同互慰在线看| 欧美日韩视频专区在线播放| 国产乱理伦片在线观看夜一区| 日韩一区在线播放| 欧美一级片在线观看| 成人的网站免费观看| 三级欧美在线一区| 国产欧美一区二区精品久导航| 欧美性色aⅴ视频一区日韩精品| 精品在线观看视频| 亚洲精品免费在线播放| 精品免费99久久| 欧美网站大全在线观看| 国产成人精品免费视频网站| 天天射综合影视| 国产精品久久二区二区| 欧美一区二区在线免费播放| 成人精品视频.| 蜜臀精品一区二区三区在线观看| 亚洲视频一二区| 久久久精品一品道一区| 欧美日韩久久久| 91一区二区在线| 国产一区不卡精品|