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

📄 common.h

📁 PL语言到中间代码的编译程序
💻 H
字号:
#include <stdio.h>		
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>		//提供了许多与“字符”相关的处理函数
#include <string.h>
#include <assert.h>		//提供了一个函数assert,提供用户判断表达式的真假值

#define FILENAMESIZE 512
#define SYMNAMESIZE 255
#define VARNAMESIZE 255
#define MAXVARNUMBER 255
#define MAXLEVELNUMBER 100
#define MAXDIMENSION 20
enum SYMBOL
{
	NUL,IDENT,INTCON,CHARCON,PLUS,MINUS,TIMES,DIVSYM,
    EQL,NEQ,LSS,LEQ,GTR,GEQ,OFSYM,ARRAYSYM,PROGRAMSYM,MODSYM,
    ANDSYM,ORSYM,NOTSYM,LBRACK,RBRACK,LPAREN,RPAREN,COMMA,
    SEMICOLON,PERIOD,BECOME,COLON,BEGINSYM,ENDSYM,IFSYM,THENSYM,
    ELSESYM,WHILESYM,DOSYM,CALLSYM,CONSTSYM,TYPESYM,
    VARSYM,PROCSYM,DPOINT
};

enum NAMEKIND
{
	CONSTANT,NTYPE,VARIABLE,PROCEDURE
};

enum VARIABLE_TYPES
{
	NOTYPE,TINT,TCHAR,TBOOL,TARRAY
};

enum OBJCODEDEFINE
{
	LIT,LOD,ILOD,LODA,LODT,LODB,STO,CPYB,JMP,JPC,RED,WRT,CAL,RETP,UDIS,OPAC,ENTP,
	ENDP,ANDS,ORS,NOTS,IMOD,MUS,ADD,SUB,MULT,IDIV,EQ,NE,LS,LE,GT,GE
};

typedef struct SYMBOL_ITEM
{
	int LineNumber;
	int Type;
	union SYMBOL_VALUE
	{
		int iValue;
		char *lpValue;
	}Value;
	struct SYMBOL_ITEM *Next;
}SymbolItem;

typedef struct NAMETAB_ITEM
{
	char *Name;
	int	Kind;
	int Type;
	int Level;
	int Normal;
	int Value;
	void *Ref;
	struct NAMETAB_ITEM *Link;
	struct NAMETAB_ITEM *Next;
}NametabItem;

typedef struct PROGRAM_BLOCK_ITEM
{
	NametabItem *LastPar;
	NametabItem *LastVar;
	int PSize;
	int VSize;
	struct PROGRAM_BLOCK_ITEM *Next;
}BlockItem;

typedef struct OBJCODE_ITEM
{
	int LineNum;
	int Instruction;
	int SrcOp;
	union DestOpFormat
	{
		int iValue;
		struct OBJCODE_ITEM * addrValue;
	}DestOp;
	struct OBJCODE_ITEM *Next;
}ObjItem;

typedef struct ARRAY_INFORMATION_ITEM
{
	int Low;
	int High;
	int Elsize;
	int Size;
	struct ARRAY_INFORMATION_ITEM *Elref;
	struct ARRAY_INFORMATION_ITEM *Next;
}ArrayItem;

#include "global.h"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -