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

📄 linetok.h

📁 < 虚拟机设计与实现> 的source code, linux版本
💻 H
字号:
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+                                                                   +
+ linetok.h - facilities to break a line of text into a             +
+                 series of tokens.                                 +
+                                                                   +
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

#ifndef _LINETOK_H
#define _LINETOK_H

#include "linux.h"
#include "lnscan.h"
#define TOK_IDENTIFIER	0
#define TOK_INT_REG		1
#define TOK_FLT_REG		2
#define TOK_DBL_REG		3
#define TOK_CHAR_CONST	4
#define TOK_INT_CONST	5
#define TOK_FLT_CONST	6
#define TOK_COMMA		7
#define TOK_NO_MORE		8
#define TOK_BAD			9

#define ID_SIZE	256		/* max. chars in identifier */

#define EOL		'\0'

//#define LINE_TOK_DEBUG		1

#ifdef LINE_TOK_DEBUG
#define	LINE_TOK_DEBUG0(arg);				printf(arg);
#define LINE_TOK_DEBUG1(arg1,arg2);			printf(arg1,arg2);
#define LINE_TOK_DEBUG2(arg1,arg2,arg3);	printf(arg1,arg2,arg3);
#else
#define	LINE_TOK_DEBUG0(arg);				
#define LINE_TOK_DEBUG1(arg1,arg2);			
#define LINE_TOK_DEBUG2(arg1,arg2,arg3);			
#endif

struct Token
{
	char text[ID_SIZE];
	char * fName;	/*file reading assembly code from*/
	U4 line;		/* line number in source file */
	U1 type;		/* type of token */
	S8 val;			/* register bytecode val, char val, integer const */
	F8 fval;		/* floating-pt val */
};

extern char * TokStr[];

void LineTokenizer_init(struct Line *ln);
struct Token getNextLineToken(); 	
U1 match(struct Token *tptr, int ttype);  /* big one */
void printToken(struct Token *tptr);

#endif

⌨️ 快捷键说明

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