CBMC
statement_list_parsert Class Reference

Responsible for starting the parse process and to translate the result into a statement_list_parse_treet. More...

#include <statement_list_parser.h>

+ Inheritance diagram for statement_list_parsert:
+ Collaboration diagram for statement_list_parsert:

Public Member Functions

bool parse () override
 Starts the parsing process and saves the result inside of this instance's parse tree. More...
 
void add_function_block (const exprt &block)
 Adds a function block to the parse tree by converting the block expression tree. More...
 
void add_function (const exprt &function)
 Adds a function to the parse tree by converting the function expression tree. More...
 
void add_tag_list (const exprt &tag_list)
 Adds a tag list to the parse tree by converting the tag_list expression tree. More...
 
void print_tree (std::ostream &out) const
 Prints the parse tree of this instance to the given output stream. More...
 
void swap_tree (statement_list_parse_treet &other)
 Swaps the contents of the parse tree of this instance with other. More...
 
void clear () override
 Removes all functions and function blocks from the parse tree and clears the internal state of the parser. More...
 
- Public Member Functions inherited from parsert
 parsert ()
 
virtual ~parsert ()
 
bool read (char &ch)
 
bool eof ()
 
void parse_error (const std::string &message, const std::string &before)
 
void inc_line_no ()
 
void set_line_no (unsigned _line_no)
 
void set_file (const irep_idt &file)
 
irep_idt get_file () const
 
unsigned get_line_no () const
 
unsigned get_column () const
 
void set_column (unsigned _column)
 
void set_source_location (exprt &e)
 
void set_function (const irep_idt &function)
 
void advance_column (unsigned token_width)
 
- Public Member Functions inherited from messaget
virtual void set_message_handler (message_handlert &_message_handler)
 
message_handlertget_message_handler ()
 
 messaget ()
 
 messaget (const messaget &other)
 
messagetoperator= (const messaget &other)
 
 messaget (message_handlert &_message_handler)
 
virtual ~messaget ()
 
mstreamtget_mstream (unsigned message_level) const
 
mstreamterror () const
 
mstreamtwarning () const
 
mstreamtresult () const
 
mstreamtstatus () const
 
mstreamtstatistics () const
 
mstreamtprogress () const
 
mstreamtdebug () const
 
void conditional_output (mstreamt &mstream, const std::function< void(mstreamt &)> &output_generator) const
 Generate output to message_stream using output_generator if the configured verbosity is at least as high as that of message_stream. More...
 

Private Attributes

statement_list_parse_treet parse_tree
 Tree that is being filled by the parsing process. More...
 

Additional Inherited Members

- Public Types inherited from messaget
enum  message_levelt {
  M_ERROR =1, M_WARNING =2, M_RESULT =4, M_STATUS =6,
  M_STATISTICS =8, M_PROGRESS =9, M_DEBUG =10
}
 
- Static Public Member Functions inherited from messaget
static unsigned eval_verbosity (const std::string &user_input, const message_levelt default_verbosity, message_handlert &dest)
 Parse a (user-)provided string as a verbosity level and set it as the verbosity of dest. More...
 
static commandt command (unsigned c)
 Create an ECMA-48 SGR (Select Graphic Rendition) command. More...
 
- Public Attributes inherited from parsert
std::istream * in
 
std::string this_line
 
std::string last_line
 
std::vector< exprtstack
 
- Static Public Attributes inherited from messaget
static eomt eom
 
static const commandt reset
 return to default formatting, as defined by the terminal More...
 
static const commandt red
 render text with red foreground color More...
 
static const commandt green
 render text with green foreground color More...
 
static const commandt yellow
 render text with yellow foreground color More...
 
static const commandt blue
 render text with blue foreground color More...
 
static const commandt magenta
 render text with magenta foreground color More...
 
static const commandt cyan
 render text with cyan foreground color More...
 
static const commandt bright_red
 render text with bright red foreground color More...
 
static const commandt bright_green
 render text with bright green foreground color More...
 
static const commandt bright_yellow
 render text with bright yellow foreground color More...
 
static const commandt bright_blue
 render text with bright blue foreground color More...
 
static const commandt bright_magenta
 render text with bright magenta foreground color More...
 
static const commandt bright_cyan
 render text with bright cyan foreground color More...
 
static const commandt bold
 render text with bold font More...
 
static const commandt faint
 render text with faint font More...
 
static const commandt italic
 render italic text More...
 
static const commandt underline
 render underlined text More...
 
- Protected Attributes inherited from parsert
source_locationt source_location
 
unsigned line_no
 
unsigned previous_line_no
 
unsigned column
 
- Protected Attributes inherited from messaget
message_handlertmessage_handler
 
mstreamt mstream
 

Detailed Description

Responsible for starting the parse process and to translate the result into a statement_list_parse_treet.

This parser works by using the expression stack of its base class. During the parse process, expressions with different IDs and types are put on this stack and may get associated with each other. This way a tree structure with expressions as nodes is created. If the parser encounters a function or function block, it invokes add_function() or add_function_block(). These functions then convert the expression tree structure into a statement_list_parse_treet::functiont or statement_list_parse_treet::function_blockt and add it to the statement_list_parse_treet. See the implementation of scanner.l and parser.y for details about how and when the stack operations are performed.

Definition at line 34 of file statement_list_parser.h.

Member Function Documentation

◆ add_function()

void statement_list_parsert::add_function ( const exprt function)

Adds a function to the parse tree by converting the function expression tree.

Parameters
functionRoot of a function expression tree.

Definition at line 318 of file statement_list_parser.cpp.

◆ add_function_block()

void statement_list_parsert::add_function_block ( const exprt block)

Adds a function block to the parse tree by converting the block expression tree.

Parameters
blockRoot of a function block expression tree.

Definition at line 301 of file statement_list_parser.cpp.

◆ add_tag_list()

void statement_list_parsert::add_tag_list ( const exprt tag_list)

Adds a tag list to the parse tree by converting the tag_list expression tree.

Parameters
tag_listRoot of a tag list expression tree.

Definition at line 40 of file statement_list_parser.cpp.

◆ clear()

void statement_list_parsert::clear ( )
overridevirtual

Removes all functions and function blocks from the parse tree and clears the internal state of the parser.

Reimplemented from parsert.

Definition at line 346 of file statement_list_parser.cpp.

◆ parse()

bool statement_list_parsert::parse ( )
overridevirtual

Starts the parsing process and saves the result inside of this instance's parse tree.

Returns
False if successful.

Implements parsert.

Definition at line 335 of file statement_list_parser.cpp.

◆ print_tree()

void statement_list_parsert::print_tree ( std::ostream &  out) const

Prints the parse tree of this instance to the given output stream.

Parameters
outStream that should receive the result.

Definition at line 352 of file statement_list_parser.cpp.

◆ swap_tree()

void statement_list_parsert::swap_tree ( statement_list_parse_treet other)

Swaps the contents of the parse tree of this instance with other.

Parameters
otherParse tree which should be used in the swap operation.

Definition at line 357 of file statement_list_parser.cpp.

Member Data Documentation

◆ parse_tree

statement_list_parse_treet statement_list_parsert::parse_tree
private

Tree that is being filled by the parsing process.

Definition at line 71 of file statement_list_parser.h.


The documentation for this class was generated from the following files: