cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
json_symtab_language.cpp
Go to the documentation of this file.
1
/*******************************************************************\
2
3
Module: JSON symbol table language. Accepts a JSON format symbol
4
table that has been produced out-of-process, e.g. by using
5
a compiler's front-end.
6
7
Author: Chris Smowton, chris.smowton@diffblue.com
8
9
\*******************************************************************/
10
11
#include "
json_symtab_language.h
"
12
13
#include <
util/symbol_table.h
>
14
15
#include <
json/json_parser.h
>
16
#include <
linking/linking.h
>
17
18
#include "
json_symbol_table.h
"
19
25
bool
json_symtab_languaget::parse
(
26
std::istream &instream,
27
const
std::string &path,
28
message_handlert
&message_handler)
29
{
30
return
parse_json
(instream, path, message_handler,
parsed_json_file
);
31
}
32
38
bool
json_symtab_languaget::typecheck
(
39
symbol_table_baset
&symbol_table,
40
const
std::string &module,
41
message_handlert
&message_handler)
42
{
43
(void)module;
// unused parameter
44
45
symbol_tablet
new_symbol_table;
46
47
try
48
{
49
symbol_table_from_json
(
parsed_json_file
, new_symbol_table);
50
return
linking
(symbol_table, new_symbol_table, message_handler);
51
}
52
catch
(
const
std::string &str)
53
{
54
messaget
log(message_handler);
55
log.
error
() <<
"typecheck: "
<< str <<
messaget::eom
;
56
return
true
;
57
}
58
}
59
64
void
json_symtab_languaget::show_parse
(
65
std::ostream &out,
66
message_handlert
&message_handler)
67
{
68
(void)message_handler;
69
parsed_json_file
.output(out);
70
}
json_symtab_languaget::parse
bool parse(std::istream &instream, const std::string &path, message_handlert &message_handler) override
Parse a goto program in json form.
Definition
json_symtab_language.cpp:25
json_symtab_languaget::typecheck
bool typecheck(symbol_table_baset &symbol_table, const std::string &module, message_handlert &message_handler) override
Typecheck a goto program in json form.
Definition
json_symtab_language.cpp:38
json_symtab_languaget::parsed_json_file
jsont parsed_json_file
Definition
json_symtab_language.h:82
json_symtab_languaget::show_parse
void show_parse(std::ostream &out, message_handlert &) override
Output the result of the parsed json file to the output stream passed as a parameter to this function...
Definition
json_symtab_language.cpp:64
message_handlert
Definition
message.h:27
messaget
Class that provides messages with a built-in verbosity 'level'.
Definition
message.h:154
messaget::error
mstreamt & error() const
Definition
message.h:391
messaget::eom
static eomt eom
Definition
message.h:289
symbol_table_baset
The symbol table base class interface.
Definition
symbol_table_base.h:23
symbol_tablet
The symbol table.
Definition
symbol_table.h:14
parse_json
bool parse_json(std::istream &in, const std::string &filename, message_handlert &message_handler, jsont &dest)
Definition
json_parser.cpp:27
json_parser.h
symbol_table_from_json
void symbol_table_from_json(const jsont &in, symbol_table_baset &symbol_table)
Definition
json_symbol_table.cpp:17
json_symbol_table.h
json_symtab_language.h
linking
bool linking(symbol_table_baset &dest_symbol_table, const symbol_table_baset &new_symbol_table, message_handlert &message_handler)
Merges the symbol table new_symbol_table into dest_symbol_table, renaming symbols from new_symbol_tab...
Definition
linking.cpp:1128
linking.h
ANSI-C Linking.
symbol_table.h
Author: Diffblue Ltd.
json-symtab-language
json_symtab_language.cpp
Generated by
1.17.0