GNU Octave  8.1.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
base_parser Class Referenceabstract

#include "parse.h"

Inheritance diagram for base_parser:
Collaboration diagram for base_parser:

Classes

class  parent_scope_info
 

Public Member Functions

OCTINTERP_API base_parser (base_lexer &lxr)
 
 base_parser (const base_parser &)=delete
 
virtual ~base_parser (void)
 
OCTINTERP_API tree_args_block_validation_listappend_args_validation_list (tree_args_block_validation_list *list, tree_arg_validation *arg_validation)
 
OCTINTERP_API tree_argument_listappend_argument_list (tree_argument_list *list, tree_expression *expr)
 
OCTINTERP_API tree_cellappend_cell_row (tree_cell *cell, tree_argument_list *row)
 
OCTINTERP_API tree_classdef_attribute_listappend_classdef_attribute (tree_classdef_attribute_list *list, tree_classdef_attribute *elt)
 
OCTINTERP_API tree_classdef_enum_listappend_classdef_enum (tree_classdef_enum_list *list, tree_classdef_enum *elt)
 
OCTINTERP_API tree_classdef_bodyappend_classdef_enum_block (tree_classdef_body *body, tree_classdef_enum_block *block)
 
OCTINTERP_API tree_classdef_events_listappend_classdef_event (tree_classdef_events_list *list, tree_classdef_event *elt)
 
OCTINTERP_API tree_classdef_bodyappend_classdef_events_block (tree_classdef_body *body, tree_classdef_events_block *block)
 
OCTINTERP_API tree_classdef_methods_listappend_classdef_method (tree_classdef_methods_list *list, tree_function_def *fcn_def)
 
OCTINTERP_API tree_classdef_bodyappend_classdef_methods_block (tree_classdef_body *body, tree_classdef_methods_block *block)
 
OCTINTERP_API tree_classdef_bodyappend_classdef_properties_block (tree_classdef_body *body, tree_classdef_properties_block *block)
 
OCTINTERP_API tree_classdef_property_listappend_classdef_property (tree_classdef_property_list *list, tree_classdef_property *elt)
 
OCTINTERP_API tree_classdef_superclass_listappend_classdef_superclass (tree_classdef_superclass_list *list, tree_classdef_superclass *elt)
 
OCTINTERP_API tree_decl_init_listappend_decl_init_list (tree_decl_init_list *list, tree_decl_elt *elt)
 
OCTINTERP_API tree_statement_listappend_function_body (tree_statement_list *body, tree_statement_list *list)
 
OCTINTERP_API tree_if_command_listappend_if_clause (tree_if_command_list *list, tree_if_clause *clause)
 
OCTINTERP_API tree_matrixappend_matrix_row (tree_matrix *matrix, tree_argument_list *row)
 
OCTINTERP_API tree_parameter_listappend_parameter_list (tree_parameter_list *list, tree_decl_elt *t)
 
OCTINTERP_API tree_parameter_listappend_parameter_list (tree_parameter_list *list, tree_identifier *id)
 
OCTINTERP_API tree_statement_listappend_statement_list (tree_statement_list *list, char sep, tree_statement *stmt, bool warn_missing_semi)
 
OCTINTERP_API tree_switch_case_listappend_switch_case (tree_switch_case_list *list, tree_switch_case *elt)
 
bool at_end_of_input (void) const
 
OCTINTERP_API void bison_error (const parse_exception &pe)
 
OCTINTERP_API void bison_error (const std::list< parse_exception > &pe)
 
OCTINTERP_API void bison_error (const std::string &s)
 
OCTINTERP_API void bison_error (const std::string &s, const filepos &pos)
 
OCTINTERP_API 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
 
OCTINTERP_API void disallow_command_syntax (void)
 
OCTINTERP_API void end_token_error (token *tok, token::end_tok_type expected)
 
OCTINTERP_API bool end_token_ok (token *tok, token::end_tok_type expected)
 
void endfunction_found (bool flag)
 
bool endfunction_found (void) const
 
OCTINTERP_API tree_expressionfinish_array_list (tree_array_list *a, token *open_delim, token *close_delim)
 
OCTINTERP_API tree_expressionfinish_cell (tree_cell *c, token *open_delim, token *close_delim)
 
OCTINTERP_API tree_function_deffinish_classdef_external_method (octave_user_function *fcn, tree_parameter_list *ret_list, comment_list *cl)
 
OCTINTERP_API bool finish_classdef_file (tree_classdef *cls, tree_statement_list *local_fcns)
 
OCTINTERP_API tree_function_deffinish_function (tree_parameter_list *ret_list, octave_user_function *fcn, comment_list *lc, int l, int c)
 
OCTINTERP_API tree_if_commandfinish_if_command (token *if_tok, tree_if_command_list *list, token *end_tok, comment_list *lc)
 
OCTINTERP_API bool finish_input (tree_statement_list *lst, bool at_eof=false)
 
OCTINTERP_API tree_expressionfinish_matrix (tree_matrix *m, token *open_delim, token *close_delim)
 
OCTINTERP_API tree_switch_commandfinish_switch_command (token *switch_tok, tree_expression *expr, tree_switch_case_list *list, token *end_tok, comment_list *lc)
 
OCTINTERP_API octave_user_functionfrob_function (tree_identifier *id, octave_user_function *fcn)
 
base_lexerget_lexer (void) const
 
OCTINTERP_API tree_anon_fcn_handlemake_anon_fcn_handle (tree_parameter_list *param_list, tree_expression *expr, const filepos &at_pos)
 
OCTINTERP_API tree_arg_size_specmake_arg_size_spec (tree_argument_list *size_args)
 
OCTINTERP_API tree_arg_validationmake_arg_validation (tree_arg_size_spec *size_spec, tree_identifier *class_name, tree_arg_validation_fcns *validation_fcns, tree_expression *default_value)
 
OCTINTERP_API tree_arg_validation_fcnsmake_arg_validation_fcns (tree_argument_list *fcn_args)
 
OCTINTERP_API tree_args_block_attribute_listmake_args_attribute_list (tree_identifier *attribute_name)
 
OCTINTERP_API tree_args_block_validation_listmake_args_validation_list (tree_arg_validation *arg_validation)
 
OCTINTERP_API tree_argument_listmake_argument_list (tree_expression *expr)
 
OCTINTERP_API tree_arguments_blockmake_arguments_block (token *arguments_tok, tree_args_block_attribute_list *attr_list, tree_args_block_validation_list *validation_list, token *end_tok, comment_list *lc, comment_list *tc)
 
OCTINTERP_API tree_expressionmake_assign_op (int op, tree_argument_list *lhs, token *eq_tok, tree_expression *rhs)
 
OCTINTERP_API tree_expressionmake_binary_op (int op, tree_expression *op1, token *tok_val, tree_expression *op2)
 
OCTINTERP_API tree_black_holemake_black_hole (void)
 
OCTINTERP_API tree_expressionmake_boolean_op (int op, tree_expression *op1, token *tok_val, tree_expression *op2)
 
OCTINTERP_API tree_commandmake_break_command (token *break_tok)
 
OCTINTERP_API tree_cellmake_cell (tree_argument_list *row)
 
OCTINTERP_API 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)
 
OCTINTERP_API tree_classdef_attributemake_classdef_attribute (tree_identifier *id, tree_expression *expr=nullptr)
 
OCTINTERP_API tree_classdef_attribute_listmake_classdef_attribute_list (tree_classdef_attribute *attr)
 
OCTINTERP_API tree_classdef_bodymake_classdef_body (tree_classdef_enum_block *enb)
 
OCTINTERP_API tree_classdef_bodymake_classdef_body (tree_classdef_events_block *evb)
 
OCTINTERP_API tree_classdef_bodymake_classdef_body (tree_classdef_methods_block *mb)
 
OCTINTERP_API tree_classdef_bodymake_classdef_body (tree_classdef_properties_block *pb)
 
OCTINTERP_API tree_classdef_enummake_classdef_enum (tree_identifier *id, tree_expression *expr, comment_list *lc)
 
OCTINTERP_API 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)
 
OCTINTERP_API tree_classdef_enum_listmake_classdef_enum_list (tree_classdef_enum *e)
 
OCTINTERP_API tree_classdef_eventmake_classdef_event (comment_list *lc, tree_identifier *id)
 
OCTINTERP_API 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)
 
OCTINTERP_API tree_classdef_events_listmake_classdef_events_list (tree_classdef_event *e)
 
OCTINTERP_API 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)
 
OCTINTERP_API tree_classdef_methods_listmake_classdef_methods_list (tree_function_def *fcn_def)
 
OCTINTERP_API 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)
 
OCTINTERP_API tree_classdef_propertymake_classdef_property (comment_list *lc, tree_identifier *id, tree_arg_validation *av)
 
OCTINTERP_API tree_classdef_property_listmake_classdef_property_list (tree_classdef_property *prop)
 
OCTINTERP_API tree_classdef_superclassmake_classdef_superclass (token *fqident)
 
OCTINTERP_API tree_classdef_superclass_listmake_classdef_superclass_list (tree_classdef_superclass *sc)
 
OCTINTERP_API tree_expressionmake_colon_expression (tree_expression *base, tree_expression *limit, tree_expression *incr=nullptr)
 
OCTINTERP_API tree_constantmake_constant (token *tok_val)
 
OCTINTERP_API tree_commandmake_continue_command (token *continue_tok)
 
OCTINTERP_API tree_decl_commandmake_decl_command (int tok, token *tok_val, tree_decl_init_list *lst)
 
OCTINTERP_API tree_decl_eltmake_decl_elt (tree_identifier *id, token *eq_op=nullptr, tree_expression *expr=nullptr)
 
OCTINTERP_API tree_decl_init_listmake_decl_init_list (tree_decl_elt *elt)
 
OCTINTERP_API tree_switch_casemake_default_switch_case (token *default_tok, comment_list *lc, tree_statement_list *list)
 
OCTINTERP_API tree_commandmake_do_until_command (token *until_tok, tree_statement_list *body, tree_expression *expr, comment_list *lc)
 
OCTINTERP_API tree_if_clausemake_else_clause (token *else_tok, comment_list *lc, tree_statement_list *list)
 
OCTINTERP_API tree_if_clausemake_elseif_clause (token *elseif_tok, tree_expression *expr, tree_statement_list *list, comment_list *lc)
 
OCTINTERP_API tree_statementmake_end (const std::string &type, bool eof, const filepos &beg_pos, const filepos &end_pos)
 
OCTINTERP_API tree_fcn_handlemake_fcn_handle (token *tok_val)
 
OCTINTERP_API tree_identifiermake_fcn_name (tree_identifier *id)
 
OCTINTERP_API 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)
 
OCTINTERP_API 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)
 
OCTINTERP_API tree_identifiermake_identifier (token *ident)
 
OCTINTERP_API tree_index_expressionmake_index_expression (tree_expression *expr, tree_argument_list *args, char type)
 
OCTINTERP_API tree_index_expressionmake_indirect_ref (tree_expression *expr, const std::string &)
 
OCTINTERP_API tree_index_expressionmake_indirect_ref (tree_expression *expr, tree_expression *field)
 
OCTINTERP_API tree_matrixmake_matrix (tree_argument_list *row)
 
OCTINTERP_API tree_metaclass_querymake_metaclass_query (token *metaquery)
 
OCTINTERP_API tree_classdef_attributemake_not_classdef_attribute (tree_identifier *id)
 
OCTINTERP_API tree_parameter_listmake_parameter_list (tree_parameter_list::in_or_out io)
 
OCTINTERP_API tree_parameter_listmake_parameter_list (tree_parameter_list::in_or_out io, tree_decl_elt *t)
 
OCTINTERP_API tree_parameter_listmake_parameter_list (tree_parameter_list::in_or_out io, tree_identifier *id)
 
OCTINTERP_API tree_expressionmake_postfix_op (int op, tree_expression *op1, token *tok_val)
 
OCTINTERP_API tree_expressionmake_prefix_op (int op, tree_expression *op1, token *tok_val)
 
OCTINTERP_API tree_commandmake_return_command (token *return_tok)
 
OCTINTERP_API void make_script (tree_statement_list *cmds, tree_statement *end_script)
 
OCTINTERP_API tree_spmd_commandmake_spmd_command (token *spmd_tok, tree_statement_list *body, token *end_tok, comment_list *lc, comment_list *tc)
 
template<typename T >
tree_statementmake_statement (T *arg)
 
template<typename T >
OCTINTERP_API tree_statementmake_statement (T *arg)
 
OCTINTERP_API tree_statement_listmake_statement_list (tree_statement *stmt)
 
OCTINTERP_API tree_superclass_refmake_superclass_ref (token *superclassref)
 
OCTINTERP_API tree_switch_casemake_switch_case (token *case_tok, tree_expression *expr, tree_statement_list *list, comment_list *lc)
 
OCTINTERP_API tree_switch_case_listmake_switch_case_list (tree_switch_case *switch_case)
 
OCTINTERP_API 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)
 
OCTINTERP_API tree_commandmake_unwind_command (token *unwind_tok, tree_statement_list *body, tree_statement_list *cleanup, token *end_tok, comment_list *lc, comment_list *mc)
 
OCTINTERP_API tree_commandmake_while_command (token *while_tok, tree_expression *expr, tree_statement_list *body, token *end_tok, comment_list *lc)
 
OCTINTERP_API void maybe_convert_to_braindead_shortcircuit (tree_expression *&expr)
 
base_parseroperator= (const base_parser &)=delete
 
void parsing_local_functions (bool flag)
 
bool parsing_local_functions (void) const
 
void parsing_subfunctions (bool flag)
 
bool parsing_subfunctions (void) const
 
OCTINTERP_API bool push_fcn_symtab (void)
 
OCTINTERP_API void recover_from_parsing_function (void)
 
OCTINTERP_API void reset (void)
 
virtual int run (void)=0
 
OCTINTERP_API tree_statement_listset_stmt_print_flag (tree_statement_list *, char, bool)
 
OCTINTERP_API octave_user_functionstart_classdef_external_method (tree_identifier *id, tree_parameter_list *pl)
 
OCTINTERP_API octave_user_functionstart_function (tree_identifier *id, tree_parameter_list *param_list, tree_statement_list *body, tree_statement *end_function)
 
OCTINTERP_API tree_if_command_liststart_if_command (tree_expression *expr, tree_statement_list *list)
 
OCTINTERP_API void statement_list (std::shared_ptr< tree_statement_list > &lst)
 
std::shared_ptr< tree_statement_liststatement_list (void) const
 
OCTINTERP_API bool validate_array_list (tree_expression *e)
 
OCTINTERP_API tree_argument_listvalidate_matrix_for_assignment (tree_expression *e)
 
OCTINTERP_API bool validate_param_list (tree_parameter_list *lst, tree_parameter_list::in_or_out type)
 
OCTINTERP_API bool validate_primary_fcn (void)
 

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

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

Friends

OCTINTERP_API octave_value parse_fcn_file (interpreter &interp, const std::string &full_file, const std::string &file, const std::string &dir_name, const std::string &dispatch_type, const std::string &package_name, bool require_file, bool force_script, bool autoload, bool relative_lookup)
 

Detailed Description

Definition at line 109 of file parse.h.

Constructor & Destructor Documentation

◆ base_parser() [1/2]

base_parser::base_parser ( base_lexer lxr)

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

◆ base_parser() [2/2]

base_parser::base_parser ( const base_parser )
delete

◆ ~base_parser()

base_parser::~base_parser ( void  )
virtual

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

References m_lexer, m_parser_state, yypstate, and yypstate_delete.

Member Function Documentation

◆ append_args_validation_list()

tree_args_block_validation_list * base_parser::append_args_validation_list ( tree_args_block_validation_list list,
tree_arg_validation arg_validation 
)

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

References list_append().

Referenced by octave_push_parse().

◆ append_argument_list()

tree_argument_list * base_parser::append_argument_list ( tree_argument_list list,
tree_expression expr 
)

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

References list_append().

Referenced by octave_push_parse().

◆ append_cell_row()

tree_cell * base_parser::append_cell_row ( tree_cell cell,
tree_argument_list row 
)

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

References list_append(), and make_cell().

Referenced by octave_push_parse().

◆ append_classdef_attribute()

tree_classdef_attribute_list * base_parser::append_classdef_attribute ( tree_classdef_attribute_list list,
tree_classdef_attribute elt 
)

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

References list_append().

Referenced by octave_push_parse().

◆ append_classdef_enum()

tree_classdef_enum_list * base_parser::append_classdef_enum ( tree_classdef_enum_list list,
tree_classdef_enum elt 
)

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

References list_append().

Referenced by octave_push_parse().

◆ append_classdef_enum_block()

tree_classdef_body * base_parser::append_classdef_enum_block ( tree_classdef_body body,
tree_classdef_enum_block block 
)

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

References list_append().

Referenced by octave_push_parse().

◆ append_classdef_event()

tree_classdef_events_list * base_parser::append_classdef_event ( tree_classdef_events_list list,
tree_classdef_event elt 
)

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

References list_append().

Referenced by octave_push_parse().

◆ append_classdef_events_block()

tree_classdef_body * base_parser::append_classdef_events_block ( tree_classdef_body body,
tree_classdef_events_block block 
)

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

References list_append().

Referenced by octave_push_parse().

◆ append_classdef_method()

tree_classdef_methods_list * base_parser::append_classdef_method ( tree_classdef_methods_list list,
tree_function_def fcn_def 
)

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

References tree_function_def::function(), and list_append().

Referenced by octave_push_parse().

◆ append_classdef_methods_block()

tree_classdef_body * base_parser::append_classdef_methods_block ( tree_classdef_body body,
tree_classdef_methods_block block 
)

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

References list_append().

Referenced by octave_push_parse().

◆ append_classdef_properties_block()

tree_classdef_body * base_parser::append_classdef_properties_block ( tree_classdef_body body,
tree_classdef_properties_block block 
)

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

References list_append().

Referenced by octave_push_parse().

◆ append_classdef_property()

tree_classdef_property_list * base_parser::append_classdef_property ( tree_classdef_property_list list,
tree_classdef_property elt 
)

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

References list_append().

Referenced by octave_push_parse().

◆ append_classdef_superclass()

tree_classdef_superclass_list * base_parser::append_classdef_superclass ( tree_classdef_superclass_list list,
tree_classdef_superclass elt 
)

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

References list_append().

Referenced by octave_push_parse().

◆ append_decl_init_list()

tree_decl_init_list * base_parser::append_decl_init_list ( tree_decl_init_list list,
tree_decl_elt elt 
)

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

References list_append().

Referenced by octave_push_parse().

◆ append_function_body()

tree_statement_list * base_parser::append_function_body ( tree_statement_list body,
tree_statement_list list 
)

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

References list_append().

Referenced by octave_push_parse().

◆ append_if_clause()

tree_if_command_list * base_parser::append_if_clause ( tree_if_command_list list,
tree_if_clause clause 
)

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

References list_append().

Referenced by octave_push_parse().

◆ append_matrix_row()

tree_matrix * base_parser::append_matrix_row ( tree_matrix matrix,
tree_argument_list row 
)

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

References list_append(), and make_matrix().

Referenced by octave_push_parse().

◆ append_parameter_list() [1/2]

tree_parameter_list * base_parser::append_parameter_list ( tree_parameter_list list,
tree_decl_elt t 
)

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

References list_append().

Referenced by octave_push_parse().

◆ append_parameter_list() [2/2]

tree_parameter_list * base_parser::append_parameter_list ( tree_parameter_list list,
tree_identifier id 
)

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

References list_append().

◆ append_statement_list()

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

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

References list_append(), and set_stmt_print_flag().

Referenced by octave_push_parse().

◆ append_switch_case()

tree_switch_case_list * base_parser::append_switch_case ( tree_switch_case_list list,
tree_switch_case elt 
)

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

References list_append().

Referenced by octave_push_parse().

◆ at_end_of_input()

bool base_parser::at_end_of_input ( void  ) const
inline

Definition at line 178 of file parse.h.

Referenced by tree_evaluator::eval_string().

◆ bison_error() [1/5]

void base_parser::bison_error ( const parse_exception pe)

◆ bison_error() [2/5]

void base_parser::bison_error ( const std::list< parse_exception > &  pe)

◆ bison_error() [3/5]

◆ bison_error() [4/5]

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

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

References bison_error(), filepos::column(), and filepos::line().

◆ bison_error() [5/5]

◆ classdef_object() [1/2]

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

Definition at line 182 of file parse.h.

◆ classdef_object() [2/2]

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

Definition at line 187 of file parse.h.

◆ curr_fcn_depth()

int base_parser::curr_fcn_depth ( void  ) const
inline

Definition at line 219 of file parse.h.

◆ disallow_command_syntax()

void base_parser::disallow_command_syntax ( void  )

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

References lexical_feedback::m_allow_command_syntax, and m_lexer.

Referenced by tree_evaluator::eval_string().

◆ end_token_error()

◆ end_token_ok()

◆ endfunction_found() [1/2]

void base_parser::endfunction_found ( bool  flag)
inline

Definition at line 224 of file parse.h.

Referenced by octave_push_parse().

◆ endfunction_found() [2/2]

bool base_parser::endfunction_found ( void  ) const
inline

Definition at line 229 of file parse.h.

◆ finish_array_list()

◆ finish_cell()

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

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

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

Referenced by octave_push_parse().

◆ finish_classdef_external_method()

◆ finish_classdef_file()

◆ finish_function()

◆ finish_if_command()

◆ finish_input()

bool base_parser::finish_input ( tree_statement_list lst,
bool  at_eof = false 
)

◆ finish_matrix()

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

◆ finish_switch_command()

◆ frob_function()

OCTINTERP_API octave_user_function* base_parser::frob_function ( tree_identifier id,
octave_user_function fcn 
)

◆ get_lexer()

base_lexer& base_parser::get_lexer ( void  ) const
inline

Definition at line 176 of file parse.h.

◆ make_anon_fcn_handle()

◆ make_arg_size_spec()

tree_arg_size_spec * base_parser::make_arg_size_spec ( tree_argument_list size_args)

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

Referenced by octave_push_parse().

◆ make_arg_validation()

tree_arg_validation * base_parser::make_arg_validation ( tree_arg_size_spec size_spec,
tree_identifier class_name,
tree_arg_validation_fcns validation_fcns,
tree_expression default_value 
)

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

Referenced by octave_push_parse().

◆ make_arg_validation_fcns()

tree_arg_validation_fcns * base_parser::make_arg_validation_fcns ( tree_argument_list fcn_args)

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

Referenced by octave_push_parse().

◆ make_args_attribute_list()

tree_args_block_attribute_list * base_parser::make_args_attribute_list ( tree_identifier attribute_name)

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

Referenced by octave_push_parse().

◆ make_args_validation_list()

tree_args_block_validation_list * base_parser::make_args_validation_list ( tree_arg_validation arg_validation)

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

Referenced by octave_push_parse().

◆ make_argument_list()

tree_argument_list * base_parser::make_argument_list ( tree_expression expr)

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

Referenced by octave_push_parse().

◆ make_arguments_block()

tree_arguments_block * base_parser::make_arguments_block ( token arguments_tok,
tree_args_block_attribute_list attr_list,
tree_args_block_validation_list validation_list,
token end_tok,
comment_list lc,
comment_list tc 
)

◆ make_assign_op()

◆ make_binary_op()

◆ make_black_hole()

tree_black_hole * base_parser::make_black_hole ( void  )

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

Referenced by octave_push_parse().

◆ make_boolean_op()

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

◆ make_break_command()

tree_command * base_parser::make_break_command ( token break_tok)

◆ make_cell()

tree_cell * base_parser::make_cell ( tree_argument_list row)

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

Referenced by append_cell_row(), and octave_push_parse().

◆ make_classdef()

◆ make_classdef_attribute()

tree_classdef_attribute * base_parser::make_classdef_attribute ( tree_identifier id,
tree_expression expr = nullptr 
)

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

Referenced by octave_push_parse().

◆ make_classdef_attribute_list()

tree_classdef_attribute_list * base_parser::make_classdef_attribute_list ( tree_classdef_attribute attr)

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

Referenced by octave_push_parse().

◆ make_classdef_body() [1/4]

tree_classdef_body * base_parser::make_classdef_body ( tree_classdef_enum_block enb)

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

◆ make_classdef_body() [2/4]

tree_classdef_body * base_parser::make_classdef_body ( tree_classdef_events_block evb)

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

◆ make_classdef_body() [3/4]

tree_classdef_body * base_parser::make_classdef_body ( tree_classdef_methods_block mb)

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

◆ make_classdef_body() [4/4]

tree_classdef_body * base_parser::make_classdef_body ( tree_classdef_properties_block pb)

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

Referenced by octave_push_parse().

◆ make_classdef_enum()

tree_classdef_enum * base_parser::make_classdef_enum ( tree_identifier id,
tree_expression expr,
comment_list lc 
)

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

Referenced by octave_push_parse().

◆ make_classdef_enum_block()

tree_classdef_enum_block * 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 
)

◆ make_classdef_enum_list()

tree_classdef_enum_list * base_parser::make_classdef_enum_list ( tree_classdef_enum e)

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

Referenced by octave_push_parse().

◆ make_classdef_event()

tree_classdef_event * base_parser::make_classdef_event ( comment_list lc,
tree_identifier id 
)

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

Referenced by octave_push_parse().

◆ make_classdef_events_block()

tree_classdef_events_block * 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 
)

◆ make_classdef_events_list()

tree_classdef_events_list * base_parser::make_classdef_events_list ( tree_classdef_event e)

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

Referenced by octave_push_parse().

◆ make_classdef_methods_block()

tree_classdef_methods_block * 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 
)

◆ make_classdef_methods_list()

tree_classdef_methods_list * base_parser::make_classdef_methods_list ( tree_function_def fcn_def)

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

References tree_function_def::function().

Referenced by octave_push_parse().

◆ make_classdef_properties_block()

◆ make_classdef_property()

◆ make_classdef_property_list()

tree_classdef_property_list * base_parser::make_classdef_property_list ( tree_classdef_property prop)

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

Referenced by octave_push_parse().

◆ make_classdef_superclass()

tree_classdef_superclass * base_parser::make_classdef_superclass ( token fqident)

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

References token::text().

Referenced by octave_push_parse().

◆ make_classdef_superclass_list()

tree_classdef_superclass_list * base_parser::make_classdef_superclass_list ( tree_classdef_superclass sc)

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

Referenced by octave_push_parse().

◆ make_colon_expression()

◆ make_constant()

◆ make_continue_command()

tree_command * base_parser::make_continue_command ( token continue_tok)

◆ make_decl_command()

◆ make_decl_elt()

tree_decl_elt * base_parser::make_decl_elt ( tree_identifier id,
token eq_op = nullptr,
tree_expression expr = nullptr 
)

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

Referenced by octave_push_parse().

◆ make_decl_init_list()

tree_decl_init_list * base_parser::make_decl_init_list ( tree_decl_elt elt)

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

Referenced by octave_push_parse().

◆ make_default_switch_case()

tree_switch_case * base_parser::make_default_switch_case ( token default_tok,
comment_list lc,
tree_statement_list list 
)

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

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

Referenced by octave_push_parse().

◆ make_do_until_command()

◆ make_else_clause()

tree_if_clause * base_parser::make_else_clause ( token else_tok,
comment_list lc,
tree_statement_list list 
)

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

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

Referenced by octave_push_parse().

◆ make_elseif_clause()

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

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

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

Referenced by octave_push_parse().

◆ make_end()

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

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

References filepos::column(), filepos::line(), and make_statement().

Referenced by octave_push_parse().

◆ make_fcn_handle()

tree_fcn_handle * base_parser::make_fcn_handle ( token tok_val)

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

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

Referenced by octave_push_parse().

◆ make_fcn_name()

◆ make_for_command()

◆ make_function()

tree_function_def * base_parser::make_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 
)

◆ make_identifier()

◆ make_index_expression()

◆ make_indirect_ref() [1/2]

◆ make_indirect_ref() [2/2]

◆ make_matrix()

tree_matrix * base_parser::make_matrix ( tree_argument_list row)

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

Referenced by append_matrix_row(), and octave_push_parse().

◆ make_metaclass_query()

tree_metaclass_query * base_parser::make_metaclass_query ( token metaquery)

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

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

Referenced by octave_push_parse().

◆ make_not_classdef_attribute()

tree_classdef_attribute * base_parser::make_not_classdef_attribute ( tree_identifier id)

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

Referenced by octave_push_parse().

◆ make_parameter_list() [1/3]

tree_parameter_list * base_parser::make_parameter_list ( tree_parameter_list::in_or_out  io)

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

Referenced by octave_push_parse().

◆ make_parameter_list() [2/3]

tree_parameter_list * base_parser::make_parameter_list ( tree_parameter_list::in_or_out  io,
tree_decl_elt t 
)

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

◆ make_parameter_list() [3/3]

tree_parameter_list * base_parser::make_parameter_list ( tree_parameter_list::in_or_out  io,
tree_identifier id 
)

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

◆ make_postfix_op()

◆ make_prefix_op()

◆ make_return_command()

tree_command * base_parser::make_return_command ( token return_tok)

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

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

Referenced by octave_push_parse().

◆ make_script()

◆ make_spmd_command()

tree_spmd_command * base_parser::make_spmd_command ( token spmd_tok,
tree_statement_list body,
token end_tok,
comment_list lc,
comment_list tc 
)

◆ make_statement() [1/2]

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

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

References base_lexer::get_comment(), and m_lexer.

◆ make_statement() [2/2]

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

Referenced by make_end(), and octave_push_parse().

◆ make_statement_list()

tree_statement_list * base_parser::make_statement_list ( tree_statement stmt)

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

Referenced by octave_push_parse().

◆ make_superclass_ref()

tree_superclass_ref * base_parser::make_superclass_ref ( token superclassref)

◆ make_switch_case()

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

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

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

Referenced by octave_push_parse().

◆ make_switch_case_list()

tree_switch_case_list * base_parser::make_switch_case_list ( tree_switch_case switch_case)

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

Referenced by octave_push_parse().

◆ make_try_command()

◆ make_unwind_command()

tree_command * base_parser::make_unwind_command ( token unwind_tok,
tree_statement_list body,
tree_statement_list cleanup,
token end_tok,
comment_list lc,
comment_list mc 
)

◆ make_while_command()

◆ maybe_convert_to_braindead_shortcircuit()

◆ maybe_warn_assign_as_truth_value()

◆ maybe_warn_missing_semi()

◆ maybe_warn_variable_switch_label()

void base_parser::maybe_warn_variable_switch_label ( tree_expression expr)
private

◆ operator=()

base_parser& base_parser::operator= ( const base_parser )
delete

◆ parsing_local_functions() [1/2]

void base_parser::parsing_local_functions ( bool  flag)
inline

Definition at line 209 of file parse.h.

Referenced by octave_push_parse().

◆ parsing_local_functions() [2/2]

bool base_parser::parsing_local_functions ( void  ) const
inline

Definition at line 214 of file parse.h.

◆ parsing_subfunctions() [1/2]

void base_parser::parsing_subfunctions ( bool  flag)
inline

Definition at line 199 of file parse.h.

◆ parsing_subfunctions() [2/2]

bool base_parser::parsing_subfunctions ( void  ) const
inline

Definition at line 204 of file parse.h.

◆ push_fcn_symtab()

◆ recover_from_parsing_function()

◆ reset()

◆ run()

virtual int base_parser::run ( void  )
pure virtual

Implemented in push_parser, and parser.

◆ set_stmt_print_flag()

◆ start_classdef_external_method()

◆ start_function()

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

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

References base_list< elt_type >::append(), tree_statement::column(), lexical_feedback::symbol_table_context::curr_scope(), dir_sep_chars, octave_function::document(), octave_user_code::fcn_file_name(), base_lexer::comment_buffer::get_comment(), base_lexer::input_from_tmp_history_file(), tree_statement::line(), m_autoloading, base_lexer::m_comment_buf, m_curr_class_name, m_curr_fcn_depth, lexical_feedback::m_dir_name, m_fcn_file_from_relative_lookup, lexical_feedback::m_fcn_file_full_name, lexical_feedback::m_fcn_file_name, lexical_feedback::m_force_script, lexical_feedback::m_help_text, m_lexer, lexical_feedback::m_package_name, lexical_feedback::m_parsing_class_method, lexical_feedback::m_parsing_classdef, lexical_feedback::m_parsing_classdef_get_method, lexical_feedback::m_parsing_classdef_set_method, m_parsing_subfunctions, m_primary_fcn, lexical_feedback::m_reading_classdef_file, lexical_feedback::m_reading_fcn_file, lexical_feedback::m_reading_script_file, 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 make_function().

◆ start_if_command()

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

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

References maybe_warn_assign_as_truth_value().

Referenced by octave_push_parse().

◆ statement_list() [1/2]

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

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

References m_stmt_list.

Referenced by bp_table::condition_valid(), tree_evaluator::eval_string(), and debugger::repl().

◆ statement_list() [2/2]

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

Definition at line 194 of file parse.h.

Referenced by finish_input().

◆ validate_array_list()

bool base_parser::validate_array_list ( tree_expression e)

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

References bison_error(), and tree_expression::is_matrix().

Referenced by octave_push_parse().

◆ validate_matrix_for_assignment()

◆ validate_param_list()

◆ validate_primary_fcn()

bool base_parser::validate_primary_fcn ( void  )

Friends And Related Function Documentation

◆ parse_fcn_file

OCTINTERP_API octave_value parse_fcn_file ( interpreter interp,
const std::string &  full_file,
const std::string &  file,
const std::string &  dir_name,
const std::string &  dispatch_type,
const std::string &  package_name,
bool  require_file,
bool  force_script,
bool  autoload,
bool  relative_lookup 
)
friend

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

Member Data Documentation

◆ m_autoloading

bool base_parser::m_autoloading
protected

Definition at line 745 of file parse.h.

Referenced by reset(), and start_function().

◆ m_classdef_object

std::shared_ptr<tree_classdef> base_parser::m_classdef_object
protected

Definition at line 795 of file parse.h.

Referenced by finish_classdef_file(), and reset().

◆ m_curr_class_name

std::string base_parser::m_curr_class_name
protected

Definition at line 777 of file parse.h.

Referenced by reset(), start_classdef_external_method(), and start_function().

◆ m_curr_fcn_depth

int base_parser::m_curr_fcn_depth
protected

◆ m_curr_package_name

std::string base_parser::m_curr_package_name
protected

Definition at line 781 of file parse.h.

Referenced by make_classdef(), and reset().

◆ m_endfunction_found

bool base_parser::m_endfunction_found
protected

Definition at line 742 of file parse.h.

Referenced by finish_function(), and reset().

◆ m_fcn_file_from_relative_lookup

bool base_parser::m_fcn_file_from_relative_lookup
protected

Definition at line 749 of file parse.h.

Referenced by reset(), and start_function().

◆ m_function_scopes

parent_scope_info base_parser::m_function_scopes
protected

◆ m_lexer

◆ m_max_fcn_depth

int base_parser::m_max_fcn_depth
protected

Definition at line 762 of file parse.h.

Referenced by push_fcn_symtab(), and reset().

◆ m_parse_error_msg

std::string base_parser::m_parse_error_msg
protected

Definition at line 739 of file parse.h.

Referenced by bison_error(), push_parser::run(), and parser::run().

◆ m_parser_state

void* base_parser::m_parser_state
protected

Definition at line 804 of file parse.h.

Referenced by ~base_parser(), reset(), push_parser::run(), and parser::run().

◆ m_parsing_local_functions

bool base_parser::m_parsing_local_functions
protected

Definition at line 758 of file parse.h.

Referenced by make_fcn_name(), and reset().

◆ m_parsing_subfunctions

bool base_parser::m_parsing_subfunctions
protected

◆ m_primary_fcn

octave_value base_parser::m_primary_fcn
protected

Definition at line 787 of file parse.h.

Referenced by make_script(), reset(), start_function(), and validate_primary_fcn().

◆ m_primary_fcn_scope

symbol_scope base_parser::m_primary_fcn_scope
protected

Definition at line 773 of file parse.h.

Referenced by finish_function(), push_fcn_symtab(), and reset().

◆ m_stmt_list

std::shared_ptr<tree_statement_list> base_parser::m_stmt_list
protected

Definition at line 798 of file parse.h.

Referenced by reset(), and statement_list().

◆ m_subfunction_names

std::list<std::string> base_parser::m_subfunction_names
protected

Definition at line 792 of file parse.h.

Referenced by finish_function(), and reset().


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