cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
cpp_parser.cpp
Go to the documentation of this file.
1
/*******************************************************************\
2
3
Module: C++ Parser
4
5
Author: Daniel Kroening, kroening@cs.cmu.edu
6
7
\*******************************************************************/
8
11
12
#include "
cpp_parser.h
"
13
14
#include <
util/config.h
>
15
16
#include <
ansi-c/gcc_version.h
>
17
18
bool
cpp_parse
(
cpp_parsert
&,
message_handlert
&);
19
20
bool
cpp_parsert::parse
()
21
{
22
if
(!
support_float16
.has_value())
23
{
24
if
(
config
.ansi_c.preprocessor ==
configt::ansi_ct::preprocessort::GCC
)
25
{
26
gcc_versiont
gcc_version;
27
gcc_version.
get
(
"gcc"
);
28
support_float16
= gcc_version.
flavor
==
gcc_versiont::flavort::GCC
&&
29
gcc_version.
is_at_least
(13u);
30
}
31
else
32
support_float16
=
false
;
33
}
34
35
// We use the ANSI-C scanner
36
token_buffer
.ansi_c_parser.cpp98 =
true
;
37
token_buffer
.ansi_c_parser.cpp11 =
38
config
.cpp.cpp_standard ==
configt::cppt::cpp_standardt::CPP11
||
39
config
.cpp.cpp_standard ==
configt::cppt::cpp_standardt::CPP14
||
40
config
.cpp.cpp_standard ==
configt::cppt::cpp_standardt::CPP17
;
41
token_buffer
.ansi_c_parser.ts_18661_3_Floatn_types =
42
false
;
// these are still typedefs
43
token_buffer
.ansi_c_parser.__float128_is_keyword =
false
;
44
token_buffer
.ansi_c_parser.float16_type = *
support_float16
;
45
token_buffer
.ansi_c_parser.bf16_type = *
support_float16
;
46
token_buffer
.ansi_c_parser.fp16_type = *
support_float16
;
47
token_buffer
.ansi_c_parser.in =
in
;
48
token_buffer
.ansi_c_parser.mode =
mode
;
49
token_buffer
.ansi_c_parser.set_file(
get_file
());
50
51
return
cpp_parse
(*
this
,
log
.get_message_handler());
52
}
config
configt config
Definition
config.cpp:25
cpp_parsert
Definition
cpp_parser.h:25
cpp_parsert::token_buffer
cpp_token_buffert token_buffer
Definition
cpp_parser.h:49
cpp_parsert::support_float16
std::optional< bool > support_float16
Definition
cpp_parser.h:67
cpp_parsert::parse
virtual bool parse() override
Definition
cpp_parser.cpp:20
cpp_parsert::mode
ansi_c_parsert::modet mode
Definition
cpp_parser.h:43
gcc_versiont
Definition
gcc_version.h:20
gcc_versiont::is_at_least
bool is_at_least(unsigned v_major, unsigned v_minor=0, unsigned v_patchlevel=0) const
Definition
gcc_version.cpp:136
gcc_versiont::get
void get(const std::string &executable)
Definition
gcc_version.cpp:18
gcc_versiont::flavort::GCC
@ GCC
Definition
gcc_version.h:35
gcc_versiont::flavor
enum gcc_versiont::flavort flavor
message_handlert
Definition
message.h:27
parsert::in
std::istream * in
Definition
parser.h:27
parsert::log
messaget log
Definition
parser.h:149
parsert::get_file
irep_idt get_file() const
Definition
parser.h:91
config.h
cpp_parse
bool cpp_parse(cpp_parsert &, message_handlert &)
Definition
parse.cpp:8436
cpp_parser.h
C++ Parser.
gcc_version.h
configt::ansi_ct::preprocessort::GCC
@ GCC
Definition
config.h:285
configt::cppt::cpp_standardt::CPP11
@ CPP11
Definition
config.h:338
configt::cppt::cpp_standardt::CPP17
@ CPP17
Definition
config.h:340
configt::cppt::cpp_standardt::CPP14
@ CPP14
Definition
config.h:339
cpp
cpp_parser.cpp
Generated by
1.17.0