Mercurial > hg > octave-nkf
diff src/pt-misc.h @ 2982:20f5cec4f11c
[project @ 1997-05-16 03:29:26 by jwe]
author | jwe |
---|---|
date | Fri, 16 May 1997 03:30:14 +0000 |
parents | ef3379196bcf |
children | daa1ed1f5462 |
line wrap: on
line diff
--- a/src/pt-misc.h +++ b/src/pt-misc.h @@ -27,152 +27,16 @@ #pragma interface #endif -class ostream; - -class string_vector; - -class octave_value_list; -class octave_value; -class tree_command; -class tree_expression; -class tree_simple_assignment; -class tree_index_expression; -class tree_identifier; -class symbol_record; -class symbol_table; - -class tree_statement; -class tree_statement_list; -class tree_argument_list; -class tree_parameter_list; -class tree_return_list; -class tree_va_return_list; -class tree_decl_elt; -class tree_decl_init_list; -class tree_if_clause; -class tree_if_command_list; -class tree_switch_case; -class tree_switch_case_list; - -class tree_walker; - #include <SLList.h> -// A statement is either a command to execute or an expression to -// evaluate. - -class -tree_statement -{ -public: - - tree_statement (void) - : cmd (0), expr (0), print_flag (true) { } - - tree_statement (tree_command *c) - : cmd (c), expr (0), print_flag (true) { } - - tree_statement (tree_expression *e) - : cmd (0), expr (e), print_flag (true) { } - - ~tree_statement (void); - - void set_print_flag (bool print) - { print_flag = print; } - - bool is_command (void) - { return cmd != 0; } - - bool is_expression (void) - { return expr != 0; } - - int line (void); - int column (void); - - void maybe_echo_code (bool in_function_body); - - bool print_result (void) { return print_flag; } - - tree_command *command (void) { return cmd; } - - octave_value_list eval (bool silent, int nargout, bool in_function_body); - - tree_expression *expression (void) { return expr; } - - void accept (tree_walker& tw); - -private: - - // Only one of cmd or expr can be valid at once. - - // Command to execute. - tree_command *cmd; - - // Expression to evaluate. - tree_expression *expr; - - // Print result of eval for this command? - bool print_flag; -}; +class octave_value; +class octave_value_list; -// A list of statements to evaluate. - -class -tree_statement_list : public SLList<tree_statement *> -{ -public: - - tree_statement_list (void) - : SLList<tree_statement *> (), function_body (false) { } - - tree_statement_list (tree_statement *s) - : SLList<tree_statement *> (), function_body (false) { append (s); } - - ~tree_statement_list (void) - { - while (! empty ()) - { - tree_statement *t = remove_front (); - delete t; - } - } - - void mark_as_function_body (void) { function_body = true; } - - octave_value_list eval (bool silent = false, int nargout = 0); - - void accept (tree_walker& tw); +class tree_identifier; +class tree_index_expression; +class tree_va_return_list; -private: - - // Does this list of statements make up the body of a function? - bool function_body; -}; - -// Argument lists. Used to hold the list of expressions that are the -// arguments in a function call or index expression. - -class -tree_argument_list : public SLList<tree_expression *> -{ -public: - - tree_argument_list (void) - : SLList<tree_expression *> () { } - - tree_argument_list (tree_expression *t) - : SLList<tree_expression *> () { append (t); } - - ~tree_argument_list (void); - - bool all_elements_are_constant (void) const; - - octave_value_list convert_to_const_vector (void); - - string_vector get_arg_names (void) const; - - void accept (tree_walker& tw); -}; +class tree_walker; // Parameter lists. Used to hold the list of input and output // parameters in a function definition. Elements are identifiers @@ -249,186 +113,6 @@ ~tree_va_return_list (void) { } }; -// List of expressions that make up a declaration statement. - -class -tree_decl_elt -{ -public: - - typedef void (*eval_fcn) (tree_decl_elt &, bool); - - tree_decl_elt (tree_identifier *i = 0, tree_expression *e = 0) - : id (i), expr (e) { } - - ~tree_decl_elt (void); - - void eval (void); - - tree_identifier *ident (void) { return id; } - - tree_expression *expression (void) { return expr; } - - void accept (tree_walker& tw); - -private: - - // An identifier to tag with the declared property. - tree_identifier *id; - - // An initializer expression (may be zero); - tree_expression *expr; -}; - -class -tree_decl_init_list : public SLList<tree_decl_elt *> -{ -public: - - tree_decl_init_list (void) - : SLList<tree_decl_elt *> () { } - - tree_decl_init_list (tree_decl_elt *t) - : SLList<tree_decl_elt *> () { append (t); } - - ~tree_decl_init_list (void) - { - while (! empty ()) - { - tree_decl_elt *t = remove_front (); - delete t; - } - } - - void eval (tree_decl_elt::eval_fcn, bool); - - void accept (tree_walker& tw); -}; - -class -tree_if_clause -{ -public: - - tree_if_clause (void) : expr (0), list (0) { } - - tree_if_clause (tree_statement_list *l) - : expr (0), list (l) { } - - tree_if_clause (tree_expression *e, tree_statement_list *l) - : expr (e), list (l) { } - - ~tree_if_clause (void); - - bool is_else_clause (void) - { return ! expr; } - - int eval (void); - - tree_expression *condition (void) { return expr; } - - tree_statement_list *commands (void) { return list; } - - void accept (tree_walker& tw); - -private: - - // The condition to test. - tree_expression *expr; - - // The list of statements to evaluate if expr is true. - tree_statement_list *list; -}; - -class -tree_if_command_list : public SLList<tree_if_clause *> -{ -public: - - tree_if_command_list (void) - : SLList<tree_if_clause *> () { } - - tree_if_command_list (tree_if_clause *t) - : SLList<tree_if_clause *> () { append (t); } - - ~tree_if_command_list (void) - { - while (! empty ()) - { - tree_if_clause *t = remove_front (); - delete t; - } - } - - void eval (void); - - void accept (tree_walker& tw); -}; - -class -tree_switch_case -{ -public: - - tree_switch_case (void) : label (0), list (0) { } - - tree_switch_case (tree_statement_list *l) - : label (0), list (l) { } - - tree_switch_case (tree_expression *e, tree_statement_list *l) - : label (e), list (l) { } - - ~tree_switch_case (void); - - bool is_default_case (void) - { return ! label; } - - bool label_matches (const octave_value& val); - - int eval (const octave_value& val); - - void eval_error (void); - - tree_expression *case_label (void) { return label; } - - tree_statement_list *commands (void) { return list; } - - void accept (tree_walker& tw); - -private: - - // The case label. - tree_expression *label; - - // The list of statements to evaluate if the label matches. - tree_statement_list *list; -}; - -class -tree_switch_case_list : public SLList<tree_switch_case *> -{ -public: - - tree_switch_case_list (void) - : SLList<tree_switch_case *> () { } - - tree_switch_case_list (tree_switch_case *t) - : SLList<tree_switch_case *> () { append (t); } - - ~tree_switch_case_list (void) - { - while (! empty ()) - { - tree_switch_case *t = remove_front (); - delete t; - } - } - - void eval (const octave_value& val); - - void accept (tree_walker& tw); -}; - #endif /*