📄 common.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 + -