lex.h

来自「词法分析程序」· C头文件 代码 · 共 111 行

H
111
字号
#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 + =
减小字号Ctrl + -
显示快捷键?