scanner.h

来自「用C++语言在VC6.0环境下编写的小型c语言编译器」· C头文件 代码 · 共 59 行

H
59
字号
// scanner.h: interface for the scanner class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SCANNER_H__3D856F03_4F43_45C7_82F9_33237896C414__INCLUDED_)
#define AFX_SCANNER_H__3D856F03_4F43_45C7_82F9_33237896C414__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include"stdio.h"
#include"stdlib.h"
#include"iostream.h"
#include"string.h"
#include"token.h"
#include "fstream.h"
#include "ctype.h"
#define FILENAME "d:\\source.txt"
#define FILENAME1 "d:\\sourceout09.txt"
#define MAXTOKEN  50              //字符最大长度
#define BUFLENTH  100             //每次读入缓冲区BUFFER的最大长度
               
typedef enum
{ START,INCOMMENT,INNUM,INID,INLTEQ,INGTEQ,INEQ,INNEQ,DONE}Statetype;

struct reservedwords
{  char * str;
   TokenType  tok;
} ;	


class scanner  
{ 

public:
    int  bufpos;                    //缓冲区中当前读取字符的位置
    int  linenum;                    //行号 
	int  trbufsize;
	char tokenstr[MAXTOKEN];          // 保存欲比较字符的数组
	char buffer[BUFLENTH] ;           // 缓冲区
	FILE *fp;
	FILE *fo;
	token flag;
	reservedwords rs[18];
	scan();
	token getToken();
	//TokenType getToken();
	foutput(FILE *f,TokenType tokentype,char *tokenstring);
	TokenType LookupReserved(char *string);
	backachar();
	char readachar();
	scanner();
	virtual ~scanner();
	

};

#endif // !defined(AFX_SCANNER_H__3D856F03_4F43_45C7_82F9_33237896C414__INCLUDED_)

⌨️ 快捷键说明

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