7 * We reserve no LEGAL rights to the Purdue Compiler Construction Tool
8 * Set (PCCTS) -- PCCTS is in the public domain. An individual or
9 * company may do whatever they wish with source code distributed with
10 * PCCTS or the code generated by PCCTS, including the incorporation of
11 * PCCTS, or its output, into commerical software.
13 * We encourage users to develop software with PCCTS. However, we do ask
14 * that credit is given to us for developing PCCTS. By "credit",
15 * we mean that if you incorporate our source code into one of your
16 * programs (commercial product, research project, or otherwise) that you
17 * acknowledge this fact somewhere in the documentation, research report,
18 * etc... If you like PCCTS and have developed a nice tool with the
19 * output, please mention that you developed it using PCCTS. In
20 * addition, we ask that this header remain intact in our source code.
21 * As long as these guidelines are kept, we expect to continue enhancing
22 * this system and expect to make other tools available as they are
27 * Parr Research Corporation
28 * with Purdue University and AHPCRC, University of Minnesota
34 #include "pccts_iostream.h"
38 // MR20 Added #include for "DLexerBase.h"
40 #include "DLexerBase.h"
43 // The default buffer size of the lexer is given by the
44 // second argument of the lexer's ctor. It is optional
45 // and defaults to 2000
48 template<class Lexer
, class Parser
, class Token
>
49 class DllExportPCCTS ParserBlackBox
{
54 ANTLRTokenBuffer
*pipe
;
57 int openByBlackBox
; /* MR21 Don't close what we haven't opened */
60 ParserBlackBox(FILE *f
)
62 openByBlackBox
= 0; /* MR21a */
64 in
= new DLGFileInput(f
);
66 pipe
= new ANTLRTokenBuffer(scan
);
69 _parser
= new Parser(pipe
);
72 ParserBlackBox(char *fname
)
74 FILE *f
= fopen(fname
, "r");
77 cerr
<< "cannot open " << fname
<< "\n"; return;
82 in
= new DLGFileInput(f
);
84 pipe
= new ANTLRTokenBuffer(scan
);
87 _parser
= new Parser(pipe
);
94 delete in
; delete scan
; delete pipe
; delete _parser
; delete tok
;
95 if (1 == openByBlackBox
) {
100 Parser
*parser() { return _parser
; }
101 Lexer
*getLexer() { return scan
; }