CBMC
|
#include <language.h>
Public Member Functions | |
virtual void | set_language_options (const optionst &, message_handlert &) |
Set language-specific options. More... | |
virtual bool | preprocess (std::istream &instream, const std::string &path, std::ostream &outstream, message_handlert &) |
virtual bool | parse (std::istream &instream, const std::string &path, message_handlert &message_handler)=0 |
virtual bool | generate_support_functions (symbol_table_baset &symbol_table, message_handlert &message_handler)=0 |
Create language-specific support functions, such as __CPROVER_start, __CPROVER_initialize and language-specific library functions. More... | |
virtual void | dependencies (const std::string &module, std::set< std::string > &modules) |
virtual void | modules_provided (std::set< std::string > &modules) |
virtual void | methods_provided (std::unordered_set< irep_idt > &methods) const |
Should fill methods with the symbol identifiers of all methods this languaget can provide a body for, but doesn't populate that body in languaget::typecheck (i.e. More... | |
virtual void | convert_lazy_method (const irep_idt &function_id, symbol_table_baset &symbol_table, message_handlert &message_handler) |
Requests this languaget should populate the body of method function_id in symbol_table . More... | |
virtual bool | final (symbol_table_baset &symbol_table) |
Final adjustments, e.g. More... | |
virtual bool | interfaces (symbol_table_baset &symbol_table, message_handlert &message_handler) |
virtual bool | typecheck (symbol_table_baset &symbol_table, const std::string &module, message_handlert &message_handler)=0 |
virtual bool | can_keep_file_local () |
Is it possible to call three-argument typecheck() on this object? More... | |
virtual bool | typecheck (symbol_table_baset &symbol_table, const std::string &module, message_handlert &message_handler, const bool keep_file_local) |
typecheck without removing specified entries from the symbol table More... | |
virtual std::string | id () const =0 |
virtual std::string | description () const =0 |
virtual std::set< std::string > | extensions () const =0 |
virtual void | show_parse (std::ostream &out, message_handlert &message_handler)=0 |
virtual bool | from_expr (const exprt &expr, std::string &code, const namespacet &ns) |
Formats the given expression in a language-specific way. More... | |
virtual bool | from_type (const typet &type, std::string &code, const namespacet &ns) |
Formats the given type in a language-specific way. More... | |
virtual bool | type_to_name (const typet &type, std::string &name, const namespacet &ns) |
Encodes the given type in a language-specific way. More... | |
virtual bool | to_expr (const std::string &code, const std::string &module, exprt &expr, const namespacet &ns, message_handlert &message_handler)=0 |
Parses the given string into an expression. More... | |
virtual std::unique_ptr< languaget > | new_language ()=0 |
languaget () | |
virtual | ~languaget () |
Definition at line 36 of file language.h.
|
inline |
Definition at line 219 of file language.h.
|
inlinevirtual |
Definition at line 220 of file language.h.
|
inlinevirtual |
Is it possible to call three-argument typecheck() on this object?
Reimplemented in statement_list_languaget, and ansi_c_languaget.
Definition at line 132 of file language.h.
|
inlinevirtual |
Requests this languaget
should populate the body of method function_id
in symbol_table
.
This will only be called if methods_provided
advertised the given function_id
could be provided by this languaget
instance.
Reimplemented in java_bytecode_languaget.
Definition at line 103 of file language.h.
|
virtual |
Definition at line 26 of file language.cpp.
|
pure virtual |
Implemented in statement_list_languaget, json_symtab_languaget, cpp_languaget, ansi_c_languaget, and java_bytecode_languaget.
|
pure virtual |
Implemented in statement_list_languaget, json_symtab_languaget, cpp_languaget, ansi_c_languaget, and java_bytecode_languaget.
|
virtual |
Final adjustments, e.g.
initializing stub functions and globals that were discovered during function loading
Reimplemented in java_bytecode_languaget.
Definition at line 16 of file language.cpp.
|
virtual |
Formats the given expression in a language-specific way.
expr | the expression to format |
code | the formatted expression |
ns | a namespace |
Reimplemented in statement_list_languaget, cpp_languaget, ansi_c_languaget, and java_bytecode_languaget.
Definition at line 32 of file language.cpp.
|
virtual |
Formats the given type in a language-specific way.
type | the type to format |
code | the formatted type |
ns | a namespace |
Reimplemented in statement_list_languaget, cpp_languaget, ansi_c_languaget, and java_bytecode_languaget.
Definition at line 41 of file language.cpp.
|
pure virtual |
Create language-specific support functions, such as __CPROVER_start, __CPROVER_initialize and language-specific library functions.
This runs after the typecheck
phase but before lazy function loading. Anything that must wait until lazy function loading is done can be deferred until final
, which runs after lazy function loading is complete. Functions introduced here are visible to lazy loading and can influence its decisions (e.g. picking the types of input parameters and globals), whereas anything introduced during final
cannot.
Implemented in cpp_languaget, ansi_c_languaget, java_bytecode_languaget, statement_list_languaget, and json_symtab_languaget.
|
pure virtual |
Implemented in statement_list_languaget, json_symtab_languaget, cpp_languaget, ansi_c_languaget, and java_bytecode_languaget.
|
virtual |
Definition at line 21 of file language.cpp.
|
inlinevirtual |
Should fill methods
with the symbol identifiers of all methods this languaget
can provide a body for, but doesn't populate that body in languaget::typecheck (i.e.
there is no need to mention methods whose bodies are eagerly generated). It should be prepared to handle a convert_lazy_method
call for any symbol added to methods
.
Reimplemented in java_bytecode_languaget.
Definition at line 94 of file language.h.
|
inlinevirtual |
Reimplemented in statement_list_languaget, cpp_languaget, ansi_c_languaget, and java_bytecode_languaget.
Definition at line 84 of file language.h.
|
pure virtual |
Implemented in statement_list_languaget, json_symtab_languaget, cpp_languaget, ansi_c_languaget, and java_bytecode_languaget.
|
pure virtual |
Implemented in statement_list_languaget, json_symtab_languaget, cpp_languaget, ansi_c_languaget, and java_bytecode_languaget.
|
inlinevirtual |
Reimplemented in cpp_languaget, ansi_c_languaget, and java_bytecode_languaget.
Definition at line 46 of file language.h.
|
inlinevirtual |
Set language-specific options.
Reimplemented in statement_list_languaget, cpp_languaget, ansi_c_languaget, and java_bytecode_languaget.
Definition at line 40 of file language.h.
|
pure virtual |
Implemented in statement_list_languaget, json_symtab_languaget, cpp_languaget, ansi_c_languaget, and java_bytecode_languaget.
|
pure virtual |
Parses the given string into an expression.
code | the string to parse |
module | prefix to be used for identifiers |
expr | the parsed expression |
ns | a namespace |
message_handler | a message handler |
Implemented in statement_list_languaget, cpp_languaget, ansi_c_languaget, java_bytecode_languaget, and json_symtab_languaget.
|
virtual |
Encodes the given type in a language-specific way.
type | the type to encode |
name | the encoded type |
ns | a namespace |
Reimplemented in statement_list_languaget, cpp_languaget, and ansi_c_languaget.
Definition at line 50 of file language.cpp.
|
pure virtual |
Implemented in json_symtab_languaget, cpp_languaget, ansi_c_languaget, statement_list_languaget, and java_bytecode_languaget.
|
inlinevirtual |
typecheck without removing specified entries from the symbol table
Some concrete subclasses of languaget discard unused symbols from a goto binary as part of typechecking it. This function allows the caller to specify a list of symbols that should be kept, even if that language's typecheck() implementation would normally discard those symbols.
This function should only be called on objects for which a call to can_keep_symbols() returns true
.
Reimplemented in statement_list_languaget, and ansi_c_languaget.
Definition at line 146 of file language.h.