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

📄 lex.h

📁 词法分析程序
💻 H
字号:
#if !defined(AFX_LEX_H__2DA56795_0D75_4081_837C_233894591973__INCLUDED_)

#define AFX_LEX_H__2DA56795_0D75_4081_837C_233894591973__INCLUDED_

#if _MSC_VER > 1000

#pragma once

#endif 

enum keyword{

	identity=0,

	//关键字

	k_if=100,

	k_of,

	k_do,

	k_to,

	k_or,

	k_var,

	k_for,

	k_end,

	k_not,

	k_and,

	k_div,

	k_mod,

	k_type,

	k_then,

	k_else,

	k_const,

	k_begin,

	k_while,

	k_array,

	k_downto,

	k_record,

	k_program,

	k_function,

	k_procedure,

	//常量

	c_true=200,

	c_false,

	c_integer,

	c_real,

	c_string,

	c_char,

	c_maxint,

	//系统类型

	t_integer=300,

	t_char,

	t_boolean,

	t_real,

	t_string,

	//系统函数

	f_abs=400,

	f_sqr,

	f_ord,

	f_chr,

	f_succ,

	f_pred,

	f_odd,

	f_read,

	f_readln,

	f_write,

	f_writeln,

	//操作符和分隔符

	o_plus=500,//+

	o_minus,//-

	o_ls,//<

	o_le,//<=

	o_gt,//>

	o_ge,//>=

	o_ne,//<>

	o_eq,//=

	o_lparent,//[

	o_rparent,//]

	o_lbracket,//(

	o_rbracket,//)

	o_comma,//,

	o_semicolon,//;

	o_period,//.

	o_colon,//:

	o_becomes,//:=

	o_range,//..

	o_time,//*

	o_div///

};

typedef struct  tuple{

	keyword	flag;

	union	DATA{

		char c_val;

		struct int_val{

			int	int_val1;

			int	int_val2;

		}i_val;

		double d_val;

	}data;

}TUPLE;

extern TUPLE result_tuple;

extern int yy_linenum;

int	lex();

#ifdef _DEBUG

void print_result(FILE*o=stdout);

#endif

#define LEX_NOTUPLE		-1

#define LEX_END			0

#define LEX_SUCCESS		1

#define LEX_WITH_ERROR	2



#ifdef  _DEBUG

#define LEX_MAX_IDENTITY 512

#else 

#define LEX_MAX_IDENTITY 2048

#endif



//所有的字符串常量都保存在文件*.str中

#endif 

⌨️ 快捷键说明

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