Spicy
hilti
toolchain
include
compiler
detail
parser
driver.h
1
// Copyright (c) 2020-2021 by the Zeek Project. See LICENSE for details.
2
3
#pragma once
4
5
#include <utility>
6
#include <vector>
7
#ifdef yylex
8
#undef yylex
9
// Work-around for bison messing up the function name by adding the local namespace.
10
#define yylex lex
11
#endif
12
13
#include <memory.h>
14
15
#include <iostream>
16
#include <string>
17
18
#include <hilti/ast/all.h>
19
#include <hilti/base/result.h>
20
21
#undef YY_DECL
22
#define YY_DECL \
23
hilti::detail::parser::Parser::token_type \
24
hilti::detail::parser::Scanner::lex(hilti::detail::parser::Parser::semantic_type* yylval, \
25
hilti::detail::parser::location* yylloc, \
26
hilti::detail::parser::Driver* driver)
27
28
#ifndef __FLEX_LEXER_H
29
#define yyFlexLexer HiltiFlexLexer
30
#include <FlexLexer.h>
31
32
#undef yyFlexLexer
33
#endif
34
35
namespace
hilti
{
36
37
namespace
logging::debug {
38
inline
const
DebugStream Parser(
"parser"
);
39
}
// namespace logging::debug
40
41
namespace
detail {
42
namespace
parser {
43
44
class
Parser;
45
class
Scanner
;
46
48
class
Driver
{
49
public
:
50
Result<hilti::Node>
parse(std::istream& in,
const
std::string& filename);
51
52
Scanner
* scanner()
const
{
return
_scanner; }
53
Parser* parser()
const
{
return
_parser; }
54
55
// Methods for the parser.
56
57
std::string* currentFile() {
return
&_filename; }
58
void
error(
const
std::string& msg,
const
Meta
& m);
59
void
enablePatternMode();
60
void
disablePatternMode();
61
void
enableExpressionMode();
62
void
disableExpressionMode();
63
void
enableDottedIDMode();
64
void
disableDottedIDMode();
65
void
setDestinationModule(
Module
&& m) { _module = std::move(m); }
66
67
private
:
68
Module
_module;
69
std::string _filename;
70
Parser* _parser =
nullptr
;
71
Scanner
* _scanner =
nullptr
;
72
int
_expression_mode = 0;
73
};
74
75
}
// namespace parser
76
}
// namespace detail
77
}
// namespace hilti
hilti
hilti::Meta
Definition:
meta.h:18
hilti::detail::parser::Scanner
Definition:
scanner.h:17
hilti::Module
Definition:
module.h:21
hilti::detail::parser::Driver
Definition:
driver.h:48
hilti::rt::Result
Definition:
result.h:67
Generated by
1.8.13