blob: 3597fac677ba43201218cb68655858999a27c713 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
// file : cli/parser.hxx
// author : Boris Kolpackov <boris@codesynthesis.com>
// copyright : Copyright (c) 2009 Code Synthesis Tools CC
// license : MIT; see accompanying LICENSE file
#ifndef CLI_PARSER_HXX
#define CLI_PARSER_HXX
#include <string>
#include <memory> // std::auto_ptr
#include <istream>
#include <semantics/elements.hxx>
#include <semantics/unit.hxx>
class token;
class lexer;
class parser
{
public:
struct invalid_input {};
std::auto_ptr<semantics::cli_unit>
parse (std::istream& is, semantics::path const& path);
private:
struct error {};
void
def_unit ();
void
include_decl ();
bool
decl (token&);
void
namespace_def ();
void
class_def ();
bool
option_def (token&);
bool
qualified_name (token&, std::string& name);
bool
fundamental_type (token&, std::string& name);
private:
void
recover (token& t);
private:
bool valid_;
semantics::path const* path_;
lexer* lexer_;
semantics::cli_unit* unit_;
semantics::scope* scope_;
};
#endif // CLI_PARSER_HXX
|