GNU Octave  6.2.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
octave::parser Class Reference

#include "parse.h"

Inheritance diagram for octave::parser:
Collaboration diagram for octave::parser:

Public Member Functions

 parser (const parser &)=delete
 
 parser (const std::string &eval_string, interpreter &interp)
 
 parser (FILE *file, interpreter &interp)
 
 parser (interpreter &interp)
 
 parser (lexer *lxr)
 
 ~parser (void)=default
 
tree_statement_listappend_statement_list (tree_statement_list *list, char sep, tree_statement *stmt, bool warn_missing_semi)
 
bool at_end_of_input (void) const
 
void bison_error (const std::string &s)
 
void bison_error (const std::string &s, const filepos &pos)
 
void bison_error (const std::string &s, int line, int column)
 
void classdef_object (const std::shared_ptr< tree_classdef > &obj)
 
std::shared_ptr< tree_classdefclassdef_object (void) const
 
int curr_fcn_depth (void) const
 
void disallow_command_syntax (void)
 
void end_token_error (token *tok, token::end_tok_type expected)
 
bool end_token_ok (token *tok, token::end_tok_type expected)
 
void endfunction_found (bool flag)
 
bool endfunction_found (void) const
 
tree_expressionfinish_array_list (tree_array_list *a, token *open_delim, token *close_delim)
 
tree_expressionfinish_cell (tree_cell *c, token *open_delim, token *close_delim)
 
tree_function_deffinish_classdef_external_method (octave_user_function *fcn, tree_parameter_list *ret_list, comment_list *cl)
 
void finish_classdef_file (tree_classdef *cls, tree_statement_list *local_fcns)
 
tree_function_deffinish_function (tree_parameter_list *ret_list, octave_user_function *fcn, comment_list *lc, int l, int c)
 
tree_if_commandfinish_if_command (token *if_tok, tree_if_command_list *list, token *end_tok, comment_list *lc)
 
tree_expressionfinish_matrix (tree_matrix *m, token *open_delim, token *close_delim)
 
tree_switch_commandfinish_switch_command (token *switch_tok, tree_expression *expr, tree_switch_case_list *list, token *end_tok, comment_list *lc)
 
octave_user_functionfrob_function (tree_identifier *id, octave_user_function *fcn)
 
base_lexerget_lexer (void) const
 
tree_anon_fcn_handlemake_anon_fcn_handle (tree_parameter_list *param_list, tree_expression *expr, const filepos &at_pos)
 
tree_expressionmake_assign_op (int op, tree_argument_list *lhs, token *eq_tok, tree_expression *rhs)
 
tree_expressionmake_binary_op (int op, tree_expression *op1, token *tok_val, tree_expression *op2)
 
tree_expressionmake_boolean_op (int op, tree_expression *op1, token *tok_val, tree_expression *op2)
 
tree_commandmake_break_command (token *break_tok)
 
tree_classdefmake_classdef (token *tok_val, tree_classdef_attribute_list *a, tree_identifier *id, tree_classdef_superclass_list *sc, tree_classdef_body *body, token *end_tok, comment_list *lc, comment_list *tc)
 
tree_classdef_enum_blockmake_classdef_enum_block (token *tok_val, tree_classdef_attribute_list *a, tree_classdef_enum_list *elist, token *end_tok, comment_list *lc, comment_list *tc)
 
tree_classdef_events_blockmake_classdef_events_block (token *tok_val, tree_classdef_attribute_list *a, tree_classdef_events_list *elist, token *end_tok, comment_list *lc, comment_list *tc)
 
tree_classdef_methods_blockmake_classdef_methods_block (token *tok_val, tree_classdef_attribute_list *a, tree_classdef_methods_list *mlist, token *end_tok, comment_list *lc, comment_list *tc)
 
tree_classdef_properties_blockmake_classdef_properties_block (token *tok_val, tree_classdef_attribute_list *a, tree_classdef_property_list *plist, token *end_tok, comment_list *lc, comment_list *tc)
 
tree_expressionmake_colon_expression (tree_expression *base, tree_expression *limit, tree_expression *incr=nullptr)
 
tree_constantmake_constant (int op, token *tok_val)
 
tree_commandmake_continue_command (token *continue_tok)
 
tree_decl_commandmake_decl_command (int tok, token *tok_val, tree_decl_init_list *lst)
 
tree_commandmake_do_until_command (token *until_tok, tree_statement_list *body, tree_expression *expr, comment_list *lc)
 
tree_if_clausemake_elseif_clause (token *elseif_tok, tree_expression *expr, tree_statement_list *list, comment_list *lc)
 
tree_statementmake_end (const std::string &type, bool eof, const filepos &beg_pos, const filepos &end_pos)
 
tree_fcn_handlemake_fcn_handle (token *tok_val)
 
tree_identifiermake_fcn_name (tree_identifier *id)
 
tree_commandmake_for_command (int tok_id, token *for_tok, tree_argument_list *lhs, tree_expression *expr, tree_expression *maxproc, tree_statement_list *body, token *end_tok, comment_list *lc)
 
tree_function_defmake_function (token *fcn_tok, tree_parameter_list *ret_list, tree_identifier *id, tree_parameter_list *param_list, tree_statement_list *body, tree_statement *end_fcn_stmt, comment_list *lc)
 
tree_index_expressionmake_index_expression (tree_expression *expr, tree_argument_list *args, char type)
 
tree_index_expressionmake_indirect_ref (tree_expression *expr, const std::string &)
 
tree_index_expressionmake_indirect_ref (tree_expression *expr, tree_expression *field)
 
tree_expressionmake_postfix_op (int op, tree_expression *op1, token *tok_val)
 
tree_expressionmake_prefix_op (int op, tree_expression *op1, token *tok_val)
 
tree_commandmake_return_command (token *return_tok)
 
void make_script (tree_statement_list *cmds, tree_statement *end_script)
 
template<typename T >
tree_statementmake_statement (T *arg)
 
tree_statement_listmake_statement_list (tree_statement *stmt)
 
tree_switch_casemake_switch_case (token *case_tok, tree_expression *expr, tree_statement_list *list, comment_list *lc)
 
tree_commandmake_try_command (token *try_tok, tree_statement_list *body, char catch_sep, tree_statement_list *cleanup, token *end_tok, comment_list *lc, comment_list *mc)
 
tree_commandmake_unwind_command (token *unwind_tok, tree_statement_list *body, tree_statement_list *cleanup, token *end_tok, comment_list *lc, comment_list *mc)
 
tree_commandmake_while_command (token *while_tok, tree_expression *expr, tree_statement_list *body, token *end_tok, comment_list *lc)
 
parseroperator= (const parser &)=delete
 
void parsing_local_functions (bool flag)
 
bool parsing_local_functions (void) const
 
void parsing_subfunctions (bool flag)
 
bool parsing_subfunctions (void) const
 
bool push_fcn_symtab (void)
 
void recover_from_parsing_function (void)
 
void reset (void)
 
int run (void)
 
tree_statement_listset_stmt_print_flag (tree_statement_list *, char, bool)
 
octave_user_functionstart_classdef_external_method (tree_identifier *id, tree_parameter_list *pl)
 
octave_user_functionstart_function (tree_identifier *id, tree_parameter_list *param_list, tree_statement_list *body, tree_statement *end_function)
 
tree_if_command_liststart_if_command (tree_expression *expr, tree_statement_list *list)
 
void statement_list (std::shared_ptr< tree_statement_list > &lst)
 
std::shared_ptr< tree_statement_liststatement_list (void) const
 
bool validate_array_list (tree_expression *e)
 
tree_argument_listvalidate_matrix_for_assignment (tree_expression *e)
 
bool validate_param_list (tree_parameter_list *lst, tree_parameter_list::in_or_out type)
 

Protected Attributes

bool m_autoloading
 
std::shared_ptr< tree_classdefm_classdef_object
 
std::string m_curr_class_name
 
int m_curr_fcn_depth
 
std::string m_curr_package_name
 
bool m_endfunction_found
 
bool m_fcn_file_from_relative_lookup
 
parent_scope_info m_function_scopes
 
base_lexerm_lexer
 
int m_max_fcn_depth
 
std::string m_parse_error_msg
 
void * m_parser_state
 
bool m_parsing_local_functions
 
bool m_parsing_subfunctions
 
octave_value m_primary_fcn
 
symbol_scope m_primary_fcn_scope
 
std::shared_ptr< tree_statement_listm_stmt_list
 
std::list< std::string > m_subfunction_names
 

Private Member Functions

void maybe_warn_assign_as_truth_value (tree_expression *expr)
 
void maybe_warn_missing_semi (tree_statement_list *)
 
void maybe_warn_variable_switch_label (tree_expression *expr)
 

Detailed Description

Definition at line 594 of file parse.h.

Constructor & Destructor Documentation

◆ parser() [1/5]

octave::parser::parser ( interpreter interp)
inline

Definition at line 598 of file parse.h.

◆ parser() [2/5]

octave::parser::parser ( FILE *  file,
interpreter interp 
)
inline

Definition at line 602 of file parse.h.

◆ parser() [3/5]

octave::parser::parser ( const std::string &  eval_string,
interpreter interp 
)
inline

Definition at line 606 of file parse.h.

◆ parser() [4/5]

octave::parser::parser ( lexer lxr)
inline

Definition at line 614 of file parse.h.

◆ parser() [5/5]

octave::parser::parser ( const parser )
delete

◆ ~parser()

octave::parser::~parser ( void  )
default

Member Function Documentation

◆ append_statement_list()

tree_statement_list * octave::base_parser::append_statement_list ( tree_statement_list list,
char  sep,
tree_statement stmt,
bool  warn_missing_semi 
)
inherited

◆ at_end_of_input()

bool octave::base_parser::at_end_of_input ( void  ) const
inlineinherited

◆ bison_error() [1/3]

◆ bison_error() [2/3]

void octave::base_parser::bison_error ( const std::string &  s,
const filepos pos 
)
inherited

◆ bison_error() [3/3]

◆ classdef_object() [1/2]

void octave::base_parser::classdef_object ( const std::shared_ptr< tree_classdef > &  obj)
inlineinherited

Definition at line 172 of file parse.h.

References octave::base_parser::m_classdef_object.

◆ classdef_object() [2/2]

std::shared_ptr<tree_classdef> octave::base_parser::classdef_object ( void  ) const
inlineinherited

Definition at line 177 of file parse.h.

References octave::base_parser::m_classdef_object.

◆ curr_fcn_depth()

int octave::base_parser::curr_fcn_depth ( void  ) const
inlineinherited

Definition at line 209 of file parse.h.

References octave::base_parser::m_curr_fcn_depth.

◆ disallow_command_syntax()

void octave::base_parser::disallow_command_syntax ( void  )
inherited

◆ end_token_error()

◆ end_token_ok()

◆ endfunction_found() [1/2]

void octave::base_parser::endfunction_found ( bool  flag)
inlineinherited

Definition at line 214 of file parse.h.

References octave::base_parser::m_endfunction_found.

Referenced by octave_push_parse().

◆ endfunction_found() [2/2]

bool octave::base_parser::endfunction_found ( void  ) const
inlineinherited

Definition at line 219 of file parse.h.

References octave::base_parser::m_endfunction_found.

◆ finish_array_list()

◆ finish_cell()

tree_expression * octave::base_parser::finish_cell ( tree_cell c,
token open_delim,
token close_delim 
)
inherited

◆ finish_classdef_external_method()

◆ finish_classdef_file()

◆ finish_function()

tree_function_def * octave::base_parser::finish_function ( tree_parameter_list ret_list,
octave_user_function fcn,
comment_list lc,
int  l,
int  c 
)
inherited

Definition at line 7938 of file oct-parse.cc.

References octave::symbol_scope::cache_dir_name(), octave::symbol_scope::cache_fcn_file_name(), octave::symbol_scope::cache_fcn_name(), octave_user_code::cache_function_text(), octave::symbol_scope::cache_name(), octave::symbol_scope::cache_parent_fcn_names(), octave_user_function::define_ret_list(), octave_user_code::fcn_file_name(), octave::symbol_scope::fcn_name(), octave::symbol_scope::install_nestfunction(), octave::symbol_scope::install_subfunction(), octave::lexical_feedback::m_buffer_function_text, octave::base_parser::m_curr_fcn_depth, octave::lexical_feedback::m_dir_name, octave::base_parser::m_endfunction_found, octave::lexical_feedback::m_fcn_file_name, octave::base_parser::m_function_scopes, octave::lexical_feedback::m_function_text, octave::base_parser::m_lexer, octave::base_parser::m_parsing_subfunctions, octave::base_parser::m_primary_fcn_scope, octave::lexical_feedback::m_reading_fcn_file, octave::base_parser::m_subfunction_names, octave::tree_parameter_list::mark_as_formal_parameters(), octave_user_function::mark_as_nested_function(), octave_user_function::mark_as_subfunction(), octave_function::name(), octave::tree_parameter_list::out, octave::symbol_scope::parent_fcn_names(), octave::base_parser::parent_scope_info::parent_scope(), retval, octave_user_code::scope(), octave::symbol_scope::set_nesting_depth(), octave::symbol_scope::set_parent(), octave::symbol_scope::set_primary_parent(), octave::base_parser::parent_scope_info::size(), octave_user_function::stash_fcn_location(), octave_user_function::stash_leading_comment(), octave_user_function::stash_parent_fcn_name(), octave_user_code::time_parsed(), and octave::symbol_scope::update_nest().

Referenced by octave::base_parser::make_function().

◆ finish_if_command()

◆ finish_matrix()

tree_expression * octave::base_parser::finish_matrix ( tree_matrix m,
token open_delim,
token close_delim 
)
inherited

◆ finish_switch_command()

◆ frob_function()

octave_user_function* octave::base_parser::frob_function ( tree_identifier id,
octave_user_function fcn 
)
inherited

◆ get_lexer()

base_lexer& octave::base_parser::get_lexer ( void  ) const
inlineinherited

Definition at line 166 of file parse.h.

References octave::base_parser::m_lexer.

◆ make_anon_fcn_handle()

◆ make_assign_op()

◆ make_binary_op()

◆ make_boolean_op()

tree_expression * octave::base_parser::make_boolean_op ( int  op,
tree_expression op1,
token tok_val,
tree_expression op2 
)
inherited

◆ make_break_command()

tree_command * octave::base_parser::make_break_command ( token break_tok)
inherited

◆ make_classdef()

◆ make_classdef_enum_block()

tree_classdef_enum_block * octave::base_parser::make_classdef_enum_block ( token tok_val,
tree_classdef_attribute_list a,
tree_classdef_enum_list elist,
token end_tok,
comment_list lc,
comment_list tc 
)
inherited

◆ make_classdef_events_block()

tree_classdef_events_block * octave::base_parser::make_classdef_events_block ( token tok_val,
tree_classdef_attribute_list a,
tree_classdef_events_list elist,
token end_tok,
comment_list lc,
comment_list tc 
)
inherited

◆ make_classdef_methods_block()

tree_classdef_methods_block * octave::base_parser::make_classdef_methods_block ( token tok_val,
tree_classdef_attribute_list a,
tree_classdef_methods_list mlist,
token end_tok,
comment_list lc,
comment_list tc 
)
inherited

◆ make_classdef_properties_block()

◆ make_colon_expression()

◆ make_constant()

◆ make_continue_command()

tree_command * octave::base_parser::make_continue_command ( token continue_tok)
inherited

◆ make_decl_command()

◆ make_do_until_command()

◆ make_elseif_clause()

tree_if_clause * octave::base_parser::make_elseif_clause ( token elseif_tok,
tree_expression expr,
tree_statement_list list,
comment_list lc 
)
inherited

◆ make_end()

tree_statement * octave::base_parser::make_end ( const std::string &  type,
bool  eof,
const filepos beg_pos,
const filepos end_pos 
)
inherited

◆ make_fcn_handle()

tree_fcn_handle * octave::base_parser::make_fcn_handle ( token tok_val)
inherited

◆ make_fcn_name()

◆ make_for_command()

◆ make_function()

◆ make_index_expression()

◆ make_indirect_ref() [1/2]

◆ make_indirect_ref() [2/2]

◆ make_postfix_op()

◆ make_prefix_op()

◆ make_return_command()

tree_command * octave::base_parser::make_return_command ( token return_tok)
inherited

Definition at line 7436 of file oct-parse.cc.

References octave::token::column(), and octave::token::line().

Referenced by octave_push_parse().

◆ make_script()

◆ make_statement()

template<typename T >
tree_statement * octave::base_parser::make_statement ( T *  arg)
inherited

◆ make_statement_list()

tree_statement_list * octave::base_parser::make_statement_list ( tree_statement stmt)
inherited

Definition at line 8848 of file oct-parse.cc.

Referenced by octave_push_parse().

◆ make_switch_case()

tree_switch_case * octave::base_parser::make_switch_case ( token case_tok,
tree_expression expr,
tree_statement_list list,
comment_list lc 
)
inherited

◆ make_try_command()

◆ make_unwind_command()

◆ make_while_command()

◆ maybe_warn_assign_as_truth_value()

◆ maybe_warn_missing_semi()

◆ maybe_warn_variable_switch_label()

void octave::base_parser::maybe_warn_variable_switch_label ( tree_expression expr)
privateinherited

◆ operator=()

parser& octave::parser::operator= ( const parser )
delete

◆ parsing_local_functions() [1/2]

void octave::base_parser::parsing_local_functions ( bool  flag)
inlineinherited

Definition at line 199 of file parse.h.

References octave::base_parser::m_parsing_local_functions.

Referenced by octave_push_parse().

◆ parsing_local_functions() [2/2]

bool octave::base_parser::parsing_local_functions ( void  ) const
inlineinherited

Definition at line 204 of file parse.h.

References octave::base_parser::m_parsing_local_functions.

◆ parsing_subfunctions() [1/2]

void octave::base_parser::parsing_subfunctions ( bool  flag)
inlineinherited

Definition at line 189 of file parse.h.

References octave::base_parser::m_parsing_subfunctions.

◆ parsing_subfunctions() [2/2]

bool octave::base_parser::parsing_subfunctions ( void  ) const
inlineinherited

Definition at line 194 of file parse.h.

References octave::base_parser::m_parsing_subfunctions.

◆ push_fcn_symtab()

◆ recover_from_parsing_function()

◆ reset()

◆ run()

◆ set_stmt_print_flag()

◆ start_classdef_external_method()

octave_user_function * octave::base_parser::start_classdef_external_method ( tree_identifier id,
tree_parameter_list pl 
)
inherited

◆ start_function()

octave_user_function * octave::base_parser::start_function ( tree_identifier id,
tree_parameter_list param_list,
tree_statement_list body,
tree_statement end_function 
)
inherited

Definition at line 7794 of file oct-parse.cc.

References octave::base_list< elt_type >::append(), octave::tree_statement::column(), octave::lexical_feedback::symbol_table_context::curr_scope(), octave::sys::file_ops::dir_sep_chars(), octave_function::document(), octave_user_code::fcn_file_name(), octave::base_lexer::comment_buffer::get_comment(), octave::base_lexer::input_from_tmp_history_file(), octave::sys::base_file_stat::is_newer(), octave::tree_statement::line(), octave::base_parser::m_autoloading, octave::base_lexer::m_comment_buf, octave::base_parser::m_curr_class_name, octave::base_parser::m_curr_fcn_depth, octave::lexical_feedback::m_dir_name, octave::base_parser::m_fcn_file_from_relative_lookup, octave::lexical_feedback::m_fcn_file_full_name, octave::lexical_feedback::m_fcn_file_name, octave::lexical_feedback::m_force_script, octave::lexical_feedback::m_help_text, octave::base_parser::m_lexer, octave::lexical_feedback::m_package_name, octave::lexical_feedback::m_parsing_class_method, octave::lexical_feedback::m_parsing_classdef, octave::lexical_feedback::m_parsing_classdef_get_method, octave::lexical_feedback::m_parsing_classdef_set_method, octave::base_parser::m_parsing_subfunctions, octave::base_parser::m_primary_fcn, octave::lexical_feedback::m_reading_classdef_file, octave::lexical_feedback::m_reading_fcn_file, octave::lexical_feedback::m_reading_script_file, octave::lexical_feedback::m_symtab_context, octave_user_function::mark_as_classdef_constructor(), octave_user_function::mark_as_classdef_method(), octave_user_function::mark_as_legacy_constructor(), octave_user_function::mark_as_legacy_method(), octave_user_function::mark_as_system_fcn_file(), octave_function::mark_relative(), octave_function::name(), octave_value(), octave_function::stash_dir_name(), octave_function::stash_dispatch_class(), octave_user_function::stash_fcn_end_location(), octave_user_code::stash_fcn_file_name(), octave_user_code::stash_fcn_file_time(), octave_user_function::stash_function_name(), octave_function::stash_package_name(), octave_user_function::stash_trailing_comment(), warning(), and warning_with_id().

Referenced by octave::base_parser::make_function().

◆ start_if_command()

tree_if_command_list * octave::base_parser::start_if_command ( tree_expression expr,
tree_statement_list list 
)
inherited

Definition at line 7447 of file oct-parse.cc.

References octave::base_parser::maybe_warn_assign_as_truth_value().

Referenced by octave_push_parse().

◆ statement_list() [1/2]

void octave::base_parser::statement_list ( std::shared_ptr< tree_statement_list > &  lst)
inherited

◆ statement_list() [2/2]

std::shared_ptr<tree_statement_list> octave::base_parser::statement_list ( void  ) const
inlineinherited

Definition at line 184 of file parse.h.

References octave::base_parser::m_stmt_list.

◆ validate_array_list()

bool octave::base_parser::validate_array_list ( tree_expression e)
inherited

◆ validate_matrix_for_assignment()

◆ validate_param_list()

Member Data Documentation

◆ m_autoloading

bool octave::base_parser::m_autoloading
protectedinherited

Definition at line 511 of file parse.h.

Referenced by octave::base_parser::reset(), and octave::base_parser::start_function().

◆ m_classdef_object

std::shared_ptr<tree_classdef> octave::base_parser::m_classdef_object
protectedinherited

◆ m_curr_class_name

std::string octave::base_parser::m_curr_class_name
protectedinherited

◆ m_curr_fcn_depth

◆ m_curr_package_name

std::string octave::base_parser::m_curr_package_name
protectedinherited

Definition at line 547 of file parse.h.

Referenced by octave::base_parser::make_classdef(), and octave::base_parser::reset().

◆ m_endfunction_found

bool octave::base_parser::m_endfunction_found
protectedinherited

◆ m_fcn_file_from_relative_lookup

bool octave::base_parser::m_fcn_file_from_relative_lookup
protectedinherited

Definition at line 515 of file parse.h.

Referenced by octave::base_parser::reset(), and octave::base_parser::start_function().

◆ m_function_scopes

◆ m_lexer

◆ m_max_fcn_depth

int octave::base_parser::m_max_fcn_depth
protectedinherited

Definition at line 528 of file parse.h.

Referenced by octave::base_parser::push_fcn_symtab(), and octave::base_parser::reset().

◆ m_parse_error_msg

std::string octave::base_parser::m_parse_error_msg
protectedinherited

Definition at line 505 of file parse.h.

Referenced by octave::base_parser::bison_error(), octave::push_parser::run(), and run().

◆ m_parser_state

void* octave::base_parser::m_parser_state
protectedinherited

◆ m_parsing_local_functions

bool octave::base_parser::m_parsing_local_functions
protectedinherited

◆ m_parsing_subfunctions

◆ m_primary_fcn

octave_value octave::base_parser::m_primary_fcn
protectedinherited

◆ m_primary_fcn_scope

symbol_scope octave::base_parser::m_primary_fcn_scope
protectedinherited

◆ m_stmt_list

std::shared_ptr<tree_statement_list> octave::base_parser::m_stmt_list
protectedinherited

Definition at line 564 of file parse.h.

Referenced by octave::base_parser::reset(), and octave::base_parser::statement_list().

◆ m_subfunction_names

std::list<std::string> octave::base_parser::m_subfunction_names
protectedinherited

Definition at line 558 of file parse.h.

Referenced by octave::base_parser::finish_function(), and octave::base_parser::reset().


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