Mercurial > octave
diff src/pt-exp-base.h @ 666:fb4f6556b443
[project @ 1994-09-06 21:22:46 by jwe]
author | jwe |
---|---|
date | Tue, 06 Sep 1994 21:25:14 +0000 |
parents | e57b1bd85102 |
children | 1c072f20b522 |
line wrap: on
line diff
--- a/src/pt-exp-base.h Tue Sep 06 21:01:54 1994 +0000 +++ b/src/pt-exp-base.h Tue Sep 06 21:25:14 1994 +0000 @@ -115,6 +115,9 @@ ~tree_expression (void) { } + virtual int is_multi_val_ret_expression (void) const + { return 0; } + virtual int is_identifier (void) const { return 0; } @@ -132,9 +135,6 @@ virtual tree_constant eval (int print) = 0; - virtual Octave_object eval (int print, int nargout, - const Octave_object& args); - protected: type etype; }; @@ -185,20 +185,34 @@ tree_matrix *next; }; +// A base class for objects that can be return multiple values + +class +tree_multi_val_ret : public tree_expression +{ +public: + tree_multi_val_ret (int l = -1, int c = -1) : tree_expression (l, c) { } + + int is_multi_val_ret_expression (void) const + { return 1; } + + tree_constant eval (int print); + + virtual Octave_object eval (int print, int nargout, + const Octave_object& args) = 0; +}; + // A base class for objects that can be evaluated with argument lists. class -tree_fvc : public tree_expression +tree_fvc : public tree_multi_val_ret { public: - tree_fvc (int l = -1, int c = -1) : tree_expression (l, c) { } + tree_fvc (int l = -1, int c = -1) : tree_multi_val_ret (l, c) { } virtual int is_constant (void) const { return 0; } -// virtual int is_builtin (void) const -// { return 0; } - virtual tree_constant assign (tree_constant& t, const Octave_object& args); virtual char *name (void) const @@ -292,17 +306,17 @@ // Index expressions. class -tree_index_expression : public tree_expression +tree_index_expression : public tree_multi_val_ret { public: - tree_index_expression (int l = -1, int c = -1) : tree_expression (l, c) + tree_index_expression (int l = -1, int c = -1) : tree_multi_val_ret (l, c) { id = 0; list = 0; } tree_index_expression (tree_identifier *i, int l = -1, int c = -1) - : tree_expression (l, c) + : tree_multi_val_ret (l, c) { id = i; list = 0; @@ -310,7 +324,7 @@ tree_index_expression (tree_identifier *i, tree_argument_list *lst, int l = -1, int c = -1) - : tree_expression (l, c) + : tree_multi_val_ret (l, c) { id = i; list = lst; @@ -495,28 +509,10 @@ tree_expression *op2; }; -// Assignment expressions. - -class -tree_assignment_expression : public tree_expression -{ -public: - tree_assignment_expression (int l = -1, int c = -1) - : tree_expression (l, c) - { etype = tree_expression::assignment; } - - ~tree_assignment_expression (void) { } - - tree_constant eval (int print); - - int is_assignment_expression (void) const - { return 1; } -}; - // Simple assignment expressions. class -tree_simple_assignment_expression : public tree_assignment_expression +tree_simple_assignment_expression : public tree_expression { public: void init (int plhs, int ans_assign) @@ -531,14 +527,14 @@ tree_simple_assignment_expression (int plhs = 0, int ans_assign = 0, int l = -1, int c = -1) - : tree_assignment_expression (l, c) + : tree_expression (l, c) { init (plhs, ans_assign); } tree_simple_assignment_expression (tree_identifier *i, tree_expression *r, int plhs = 0, int ans_assign = 0, int l = -1, int c = -1) - : tree_assignment_expression (l, c) + : tree_expression (l, c) { init (plhs, ans_assign); lhs = i; @@ -549,7 +545,7 @@ tree_expression *r, int plhs = 0, int ans_assign = 0, int l = -1, int c = -1) - : tree_assignment_expression (l, c) + : tree_expression (l, c) { init (plhs, ans_assign); lhs = idx_expr->ident (); @@ -567,6 +563,9 @@ tree_constant eval (int print); + int is_assignment_expression (void) const + { return 1; } + void eval_error (void); void print_code (ostream& os); @@ -582,11 +581,11 @@ // Multi-valued assignment expressions. class -tree_multi_assignment_expression : public tree_assignment_expression +tree_multi_assignment_expression : public tree_multi_val_ret { public: tree_multi_assignment_expression (int l = -1, int c = -1) - : tree_assignment_expression (l, c) + : tree_multi_val_ret (l, c) { etype = tree_expression::multi_assignment; lhs = 0; @@ -594,9 +593,9 @@ } tree_multi_assignment_expression (tree_return_list *lst, - tree_expression *r, + tree_multi_val_ret *r, int l = -1, int c = -1) - : tree_assignment_expression (l, c) + : tree_multi_val_ret (l, c) { etype = tree_expression::multi_assignment; lhs = lst; @@ -609,13 +608,16 @@ Octave_object eval (int print, int nargout, const Octave_object& args); + int is_assignment_expression (void) const + { return 1; } + void eval_error (void); void print_code (ostream& os); private: tree_return_list *lhs; - tree_expression *rhs; + tree_multi_val_ret *rhs; }; // Colon expressions.