1 ///////////////////////////////////////////////////////////////////////////////
3 // This file describes the interface to the meta-syntax compiler.
5 ///////////////////////////////////////////////////////////////////////////////
10 #include "parsegen.ph"
11 ///////////////////////////////////////////////////////////////////////////////
13 // Forward declarations
15 ///////////////////////////////////////////////////////////////////////////////
16 class MetaSyntaxCompilerImpl;
18 ///////////////////////////////////////////////////////////////////////////////
20 // The meta-syntax compiler is responsible for translating patterns and
21 // expressions written in meta-syntaxes into the equivalent in concrete
24 ///////////////////////////////////////////////////////////////////////////////
25 class MetaSyntaxCompiler : public virtual ParserCompiler {
26 MetaSyntaxCompiler (const MetaSyntaxCompiler&);
27 void operator = (const MetaSyntaxCompiler&);
29 ////////////////////////////////////////////////////////////////////////////
31 // Constructor and destructor
33 ////////////////////////////////////////////////////////////////////////////
34 MetaSyntaxCompiler ();
35 virtual ~MetaSyntaxCompiler ();
37 ////////////////////////////////////////////////////////////////////////////
39 // Methods to install a new grammar, parse expressions and patterns,
40 // and generate a new report.
42 ////////////////////////////////////////////////////////////////////////////
43 void install_grammar (Id grammar_name, GramExp grammar);
44 Exp parse_exp (Id grammar_name, const char *);
45 Pat parse_pat (Id grammar_name, const char *);
46 std::ostream& print_report (std::ostream&);
49 ////////////////////////////////////////////////////////////////////////////
51 // Private implementation stuff.
53 ////////////////////////////////////////////////////////////////////////////
54 MetaSyntaxCompilerImpl * impl;
55 void compile_new_grammar (Id grammar_name, GramExp grammar);
56 void flush_grammar (size_t memory_needed);