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::parser {
42
43
class
Parser;
44
class
Scanner
;
45
47
class
Driver
{
48
public
:
49
Result<hilti::Node>
parse(std::istream& in,
const
std::string& filename);
50
51
Scanner
* scanner()
const
{
return
_scanner; }
52
Parser* parser()
const
{
return
_parser; }
53
54
// Methods for the parser.
55
56
std::string* currentFile() {
return
&_filename; }
57
void
error(
const
std::string& msg,
const
Meta
& m);
58
void
enablePatternMode();
59
void
disablePatternMode();
60
void
enableExpressionMode();
61
void
disableExpressionMode();
62
void
enableDottedIDMode();
63
void
disableDottedIDMode();
64
void
setDestinationModule(
Module
&& m) { _module = std::move(m); }
65
66
private
:
67
Module
_module;
68
std::string _filename;
69
Parser* _parser =
nullptr
;
70
Scanner
* _scanner =
nullptr
;
71
int
_expression_mode = 0;
72
};
73
74
}
// namespace detail::parser
75
}
// namespace hilti
hilti
hilti::Meta
Definition:
meta.h:19
hilti::detail::parser::Scanner
Definition:
scanner.h:17
hilti::Module
Definition:
module.h:21
hilti::detail::parser::Driver
Definition:
driver.h:47
hilti::rt::Result
Definition:
result.h:67
Generated by
1.8.13