pblackbox.h

来自「本工具提供一个词法分析器和语法分析器的集成开发环境」· C头文件 代码 · 共 92 行

H
92
字号
#ifndef PBLACKBOX_H#define PBLACKBOX_H/* * SOFTWARE RIGHTS * * We reserve no LEGAL rights to the Purdue Compiler Construction Tool * Set (PCCTS) -- PCCTS is in the public domain.  An individual or * company may do whatever they wish with source code distributed with * PCCTS or the code generated by PCCTS, including the incorporation of * PCCTS, or its output, into commerical software. * * We encourage users to develop software with PCCTS.  However, we do ask * that credit is given to us for developing PCCTS.  By "credit", * we mean that if you incorporate our source code into one of your * programs (commercial product, research project, or otherwise) that you * acknowledge this fact somewhere in the documentation, research report, * etc...  If you like PCCTS and have developed a nice tool with the * output, please mention that you developed it using PCCTS.  In * addition, we ask that this header remain intact in our source code. * As long as these guidelines are kept, we expect to continue enhancing * this system and expect to make other tools available as they are * completed. * * ANTLR 1.33 * Terence Parr * Parr Research Corporation * with Purdue University and AHPCRC, University of Minnesota * 1989-1998 */#include "pcctscfg.h"#include PCCTS_IOSTREAM_HPCCTS_NAMESPACE_STD////  The default buffer size of the lexer is given by the//   second argument of the lexer's ctor.  It is optional//   and defaults to 2000//template<class Lexer, class Parser, class Token>class DllExportPCCTS ParserBlackBox {protected:	DLGFileInput *in;	Lexer *scan;	_ANTLRTokenPtr tok;	ANTLRTokenBuffer *pipe;	Parser *_parser;	FILE *file;public:		ParserBlackBox(FILE *f)		{			file = f;			in = new DLGFileInput(f);			scan = new Lexer(in);			pipe = new ANTLRTokenBuffer(scan);			tok = new Token;			scan->setToken(tok);			_parser = new Parser(pipe);			_parser->init();		}	ParserBlackBox(char *fname)		{			FILE *f = fopen(fname, "r");			if ( f==NULL ) {cerr << "cannot open " << fname << "\n"; return;}			else {				file = f;				in = new DLGFileInput(f);				scan = new Lexer(in);				pipe = new ANTLRTokenBuffer(scan);				tok = new Token;				scan->setToken(tok);				_parser = new Parser(pipe);				_parser->init();			}		}	~ParserBlackBox()		{			delete in; delete scan; delete pipe; delete _parser; delete tok;			fclose(file);		}	Parser *parser()	   { return _parser; }    Lexer  *getLexer()     { return scan; }};#endif

⌨️ 快捷键说明

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