📄 define.h
字号:
#include "stdafx.h"
#ifndef _DEFINE_
#define _DEFINE_
//单词属性
enum LEXPROPERTY{KeyWord,Id,Const,OprSym,BndSym,IllegalChar};//关键字,变量,常量,运算符,界符,非法字符
#pragma pack(push,1)
//由词和属性构成的属性对
struct LEXPROPERTYVS
{
int nStrPos; //该字符串在要编译的字符串中的位置
int nStrLen; //该字符串的长度
LEXPROPERTY lpProperty;//该字符串的属性
char *szStr; //字符串
};
//语法错误对应的结构体
struct SYNTAXERR
{
int iSyntaxErrCode;//语法错误代码
int iLine; //该错误所在的行数
};
#pragma pack(push,1)
//语法错误编号
#define SE_ILLEGALCHAR 0//非法的字符
#define SE_PROGHEAD 1//程序必须以Program开头
#define SE_PROGTAIL 2//定义程序名的变量名后必须以分号结束
#define SE_ID_PROGNAMEFIRST 3//定义程序名的变量名的第一个字符必须为字母
#define SE_ID_PROGNAMEMID 4//定义程序名的变量名的中间字符或为字母或为数字
#define SE_FE_PROGNEEDIDSYMBLOCK 5//遇到意外的文件结束:Program后应有程序名,分号和程序块
#define SE_FE_NEEDSYMBLOCK 6//遇到意外的文件结束:程序名后必须有分号和程序块
#define SE_FE_NEEDBLOCK 7//遇到意外的文件结束:程序必须有程序块
#define SE_CONSTHEAD 8//定义常量时必须以关键字Const开头
#define SE_FE_CONSTEND 9//遇到意外的文件结束:关键字Const后面必须有变量名
#define SE_ID_CONSTNAME 10//定义常量的变量名的第一个字符必须为字母
#define SE_FE_CONSTIDEND 11//遇到意外的文件结束:必须给常量赋值
#define SE_CONSTSYMBOL 12//常量赋值符号应为“:=”
#define SE_FE_CONSTSYMBOLEND 13//遇到意外的文件结束:常量赋值符号“:=”后应有常量
#define SE_INT_CONST 14//Const定义的常量应为整数
#define SE_FE_CONSTSYMEND 15//遇到意外的文件结束:定义常量时,“,”后面应该有变量
#define SE_FE_NEEDBODY 16//遇到意外的文件结束:程序必须有程序体
#define SE_FE_VAREND 17//遇到意外的文件结束:关键字Var后面必须有变量名
#define SE_ID_VARNAMEFIRST 18//定义变量的变量名的第一个字符必须为字母
#define SE_ID_VARNAMEMID 19//定义变量的变量名的中间字符或为字母或为数字
#define SE_FE_VARNOEND 20//遇到意外的文件结束:定义变量还未结束,“,”后必须有变量
#define SE_ID_PROCNAMEFIRST 21//定义过程名的变量名的第一个字符必须为字母
#define SE_ID_PROCNAMEMID 22//定义过程名的变量名的中间字符或为字母或为数字
#define SE_FE_PROCNONAME 23//遇到意外的文件结束:关键字Procedure后面必须有过程名
#define SE_PROCLSYMBOL 24//定义过程名后必须加'('
#define SE_PROCRSYMBOL 25//写完过程参数后必须加')'
#define SE_FE_NOPROCSYMARG 26//遇到意外的文件结束:过程名后无括号和参数
#define SE_FE_PROCNOARG 27//遇到意外的文件结束:过程名后无参数
#define SE_ID_PROCARGNAMEFIRST 28//定义过程参数的变量名的第一个字符必须为字母
#define SE_ID_PROCARGNAMEMID 29//定义过程参数的变量名的中间字符或为字母或为数字
#define SE_FE_PROCNORSYM 30//遇到意外的文件结束:过程参数后应有')'
#define SE_PROCEND 31//定义完过程后必须以分号结束
#define SE_FE_PROCAGRNOEND 32//遇到意外的文件结束:过程参数还未写完
#define SE_FE_PROCEND 33//遇到意外的文件结束:定义完过程后必须以分号结束
#define SE_FE_PROCNOBLOCK 34//遇到意外的文件结束:过程无块
#define SE_FE_PROCNOPROC 35//遇到意外的文件结束:另一个过程还未定义
#define SE_BEGINHEAD 36//程序体必须以关键字Begin开头
#define SE_FE_BODYNOSTATE 37//遇到意外的文件结束:程序体无语句
#define SE_FE_BODYNOEND 38//遇到意外的文件结束:程序体应该以关键字End结束
#define SE_FE_BODYSYMNOSTATE 39//遇到意外的文件结束:语句后面的分号后面应该还有语句
#define SE_BODYEND 40//程序体应该以关键字End结束
#define SE_FE_EVELUATENOSYMEXP 41//遇到意外的文件结束:赋值语句没有赋值符号与表达式
#define SE_VAREVELUATE 42//赋值符号应为:=
#define SE_FE_EVELUATENOEXP 43//遇到意外的文件结束:赋值语句没有表达式
#define SE_FE_IFNOLEXPTHENLEXP 44//遇到意外的文件结束:if语句后没有表达式,关键字then和表达式
#define SE_NOTHEN 45//if语句没有关键字then
#define SE_FE_IFNOTHENLEXP 46//遇到意外的文件结束:if语句后没有关键字then和表达式
#define SE_FE_IFNOLEXP 47//遇到意外的文件结束:if语句的关键字then后没有表达式
#define SE_FE_IFELSENOLEXP 48//遇到意外的文件结束:if语句的关键字else后面没有表达式
#define SE_FE_WHILENOLEXPDOSTATE 49//遇到意外的文件结束:while语句后没有表达式,关键字do和语句
#define SE_FE_WHILENODOSTATE 50//遇到意外的文件结束:while语句后没有关键字do和语句
#define SE_NODO 51//while语句没有关键字do
#define SE_FE_WHILENOSTATE 52//遇到意外的文件结束:while语句后没有关键字do
#define SE_FE_CALLNOID 53//遇到意外的文件结束:call语句后过程名
#define SE_ID_CALLPROCFIRST 54//关键字call所调用的过程名的第一个字符必须为字母
#define SE_ID_CALLPROCMID 55//关键字call所调用的过程名的中间字符或为字母或为数字
#define SE_FE_CALLNOEXP 56//遇到意外的文件结束:call语句后无表达式
#define SE_FE_CALLNOEXPRSYM 57//遇到意外的文件结束:Call语句调用过程时'('后面必须有表达式和')'
#define SE_FE_CALLNORSYM 58//遇到意外的文件结束:Call语句调用过程时后面必须有')'
#define SE_CALLEND 59//Call语句调用过程时后面必须有')'
#define SE_FE_READNOLSYMIDRSYM 60//遇到意外的文件结束:Read语句后无'('和变量和')'
#define SE_READNOLSYM 61//Read语句后没有'('
#define SE_FE_READNOIDRSYM 62//遇到意外的文件结束:Read语句后无变量和')'
#define SE_ID_READIDFIRST 63//关键字Read后的变量的第一个字符必须为字母
#define SE_ID_READIDMID 64//关键字Read后的变量的中间字符或为字母或为数字
#define SE_FE_READNORSYM 65//遇到意外的文件结束:Read语句无')'
#define SE_READNORSYM 66//Read语句没有')'
#define SE_FE_READNOID 67//遇到意外的文件结束:Read语句中逗号','后无变量
#define SE_FE_WRITENOLSYMEXPRSYM 68//遇到意外的文件结束:write语句后无'(',表达式和')'
#define SE_WRITENOLSYM 69//Write语句没有'('
#define SE_FE_WRITENOEXPRSYM 70//遇到意外的文件结束:Write语句后无表达式和')'
#define SE_FE_WRITENORSYM 71//遇到意外的文件结束:Write语句后无')'
#define SE_WRITENORSYM 72//Write语句后没有')'
#define SE_FE_WRITENOID 73//遇到意外的文件结束:Write语句中逗号','后无变量
#define SE_ID_WRITEIDFIRST 74//关键字Write后的变量的第一个字符必须为字母
#define SE_ID_WriteIDMID 75//关键字Write后的变量的中间字符或为字母或为数字
#define SE_FE_FACTORNOLSYMEXPRSYM 76//遇到意外的文件结束:因子无'(',表达式和')'
#define SE_FACTORNORSYM 77//因子后没有')'
#define SE_FE_EXPNOTERM 78//遇到意外的文件结束:表达式后无项
#define SE_FE_EXPSYMNOTERM 79//遇到意外的文件结束:表达式中'+'或'-'后无项
#define SE_FE_LEXPNOEXPLOPEXP 80//遇到意外的文件结束:表达式后应有运算符和表达式
#define SE_LEXPNOLOP 81//表达式之间无运算符号
#define SE_FE_ODDNOEXP 82//遇到意外的文件结束:关键字Odd应有表达式
#define SE_FE_TERMNOFACTOR 83//遇到意外的文件结束:项无'(',表达式和')'
#define SE_UNWANTEDTAIL 84//多余的文件尾-程序以程序块结束,程序块后面不应再有程序
#define SE_FE_NOCODE 85//遇到意外的文件结束:源文件为空文件
//变量命名错误编号
#define ID_FIRSTERR 0//变量的第一个字符必须为字母
#define ID_MIDERR 1//变量的中间字符或者是字母或者是数字
//遇到意外的文件结束
#define FILEEND -2
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -