LRDE Tiger Compiler
1.34a $Id: 7fef12e1f5fa43449d667a0eec1d837c40fc1202 $
Main Page
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
tweast.hh
Go to the documentation of this file.
1
6
#ifndef PARSE_TWEAST_HH
7
# define PARSE_TWEAST_HH
8
9
# include <map>
10
# include <iostream>
11
# include <sstream>
12
# include <
ast/fwd.hh
>
13
# include <
misc/symbol.hh
>
14
# include <
misc/map.hh
>
15
# include <
parse/metavar-map.hh
>
16
17
namespace
parse
18
{
22
class
Tweast
23
:
public
MetavarMap
<ast::Exp>
24
,
public
MetavarMap
<ast::Var>
25
,
public
MetavarMap
<ast::NameTy>
26
,
public
MetavarMap
<ast::DecsList>
27
,
public
MetavarMap
<parse::Tweast>
28
{
29
public
:
30
Tweast
();
31
Tweast
(
const
std::string&
str
);
32
virtual
~Tweast
();
33
37
template
<
typename
T>
Tweast
&
operator<<
(
const
T& t);
38
40
template
<
typename
T> T*
take
(
unsigned
s);
41
44
void
flatten
();
45
47
std::string
input_get
()
const
;
48
50
std::ostream&
dump
(std::ostream& ostr)
const
;
51
52
protected
:
53
// Insert base class append members in the current scope.
54
using
MetavarMap<ast::Exp>::append_
;
55
using
MetavarMap<ast::Var>::append_
;
56
using
MetavarMap<ast::NameTy>::append_
;
57
using
MetavarMap<ast::DecsList>::append_
;
58
using
MetavarMap<Tweast>::append_
;
59
61
template
<
typename
T> T&
append_
(
unsigned
&, T& data)
const
;
62
63
template
<
typename
T>
64
void
move_metavars_
(
Tweast
& tweast, std::string& input);
65
66
protected
:
68
static
unsigned
count_
;
69
71
std::stringstream
input_
;
72
};
73
75
std::ostream&
operator<<
(std::ostream& ostr,
const
Tweast
& in);
76
77
}
78
79
# include <
parse/tweast.hxx
>
80
81
#endif // !PARSE_TWEAST_HH
parse
tweast.hh
Generated on Wed Mar 5 2014 15:47:37 for LRDE Tiger Compiler by
1.8.1.2