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

📄 constdef.h

📁 PL/0语言的词法分析
💻 H
字号:
//here define the const 
//for the word analyse

#if !defined(_CONSTDEF_H__60F3C9EA_875F_4CC2_82C6_4DB3EBAE2931__INCLUDED_)
#define _CONSTDEF_H__60F3C9EA_875F_4CC2_82C6_4DB3EBAE2931__INCLUDED_

#include "stdafx.h"

#define MAXIDLEN   10     // length of identifiers
#define MAXNUMLEN  14     // maximum number of digits in numbers

enum symtype
{
	SYM_NULL,            // 0

	//SYM TYPE
	SYM_IDENTIFIER,      // 1	
	SYM_NUMBER,          // 2

	//one char operator
	SYM_PLUS,            // 3	+
	SYM_MINUS,           // 4	-
	SYM_TIMES,           // 5	*
	SYM_SLASH,           //		/
	SYM_EQU,             //		=
	SYM_LPAREN,          // 8	(
	SYM_RPAREN,          //		)
	SYM_COMMA,           //	10	,
	SYM_SEMICOLON,       //		;
	SYM_PERIOD,          //	12	.

	SYM_LES,             //		< 
	SYM_NEQ,             //	14	<>
	SYM_LEQ,             //		<=

	SYM_GTR,             //	16	>
	SYM_GEQ,             //		>=

	SYM_BECOMES,         // 18	:=

	//keyword ,also order increasely, 
		//same as below array keyword[]

	SYM_BEGIN,           // 19	begin
	SYM_CALL,            // 20	call
	SYM_CONST,           //		const
	SYM_DO,              //		do
	SYM_END,             //		end
	SYM_IF,              //		if
	SYM_ODD,             //		odd
	SYM_PROCEDURE,       //	26	procedure
	SYM_READ,			 //		ead
	SYM_THEN,            //		then
	SYM_VAR,             //		var
	SYM_WHILE,           //		while
	SYM_WRITE			 // 31	write
};
const char* const keyword[]={	// increasely ordered
	"begin",	// 0
	"call",		// 1
	"const",	// 2
	"do",		// 3
	"end",		// 4
	"if",		// 5
	"odd",		// 6
	"procedure",// 7
	"read",		// 8
	"then",		// 9
	"var",		// 10
	"while",	// 11
	"write"		// 12
};
const int wsym[] =
{
	SYM_BEGIN,           //	19	begin
	SYM_CALL,            //		call
	SYM_CONST,           //		const
	SYM_DO,              //	22	do
	SYM_END,             //		end
	SYM_IF,              //		if
	SYM_ODD,             //	25	odd
	SYM_PROCEDURE,       //		procedure
	SYM_READ,			 //		read
	SYM_THEN,            //	28	then
	SYM_VAR,             //		var
	SYM_WHILE,           //		while
	SYM_WRITE			 // 31	write
};
const int keywordNum = sizeof(keyword)/sizeof(keyword[0]);

enum idtype
{
	ID_CONSTANT,	// 0
	ID_VARIABLE,	// 1
	ID_PROCEDURE	// 2
};



const int symString[keywordNum] =
{
	SYM_BEGIN, SYM_CALL, SYM_CONST, SYM_DO, SYM_END,
	SYM_IF, SYM_ODD, SYM_PROCEDURE, SYM_READ,SYM_THEN, 
	SYM_VAR, SYM_WHILE,SYM_WRITE
};

const char* const symCH[] = // symtype -> chinese
{
	"空", 
	"标志符", 
	"数字", 
	"加号", 
	"减号",
	"乘号", 
	"除号", 
	"Odd", 
	"等号",
	"不等号", 
	"小于", 
	"小于等于",
	"大于",
	"左括号",
	"右括号",
	"逗号",
	"分号",
	"点",
	"赋值号",
	"Bigin",
	"End",
	"if",
	"then",
	"while",
	"do",
	"call",
	"const",
	"var",
	"produre",
	"read",
	"write"
};

extern char ch;					// last character read
//extern char[20] word;			// last character read

extern int  sym;				// last symbol read
extern char id[MAXNUMLEN + 1];	// last identifier read
extern int  num;				// last number read

extern int  cc;				// character count
extern int  cch;			// character head count 
extern int  ll;				// line length
extern int  ln;				// line number

extern int  kk;
extern int  err;
extern int  cx;				// index of current instruction to be generated.
extern int  level;
extern int  tx;

extern char line[1024];

extern FILE* infile, *outfile;

#endif // !defined(_CONSTDEF_H__60F3C9EA_875F_4CC2_82C6_4DB3EBAE2931__INCLUDED_)

⌨️ 快捷键说明

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