GNU Octave  9.1.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
pt-walk.cc
Go to the documentation of this file.
1 ////////////////////////////////////////////////////////////////////////
2 //
3 // Copyright (C) 2017-2024 The Octave Project Developers
4 //
5 // See the file COPYRIGHT.md in the top-level directory of this
6 // distribution or <https://octave.org/copyright/>.
7 //
8 // This file is part of Octave.
9 //
10 // Octave is free software: you can redistribute it and/or modify it
11 // under the terms of the GNU General Public License as published by
12 // the Free Software Foundation, either version 3 of the License, or
13 // (at your option) any later version.
14 //
15 // Octave is distributed in the hope that it will be useful, but
16 // WITHOUT ANY WARRANTY; without even the implied warranty of
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 // GNU General Public License for more details.
19 //
20 // You should have received a copy of the GNU General Public License
21 // along with Octave; see the file COPYING. If not, see
22 // <https://www.gnu.org/licenses/>.
23 //
24 ////////////////////////////////////////////////////////////////////////
25 
26 #if defined (HAVE_CONFIG_H)
27 # include "config.h"
28 #endif
29 
30 #include "pt-all.h"
31 
33 
34 void tree_walker::visit_anon_fcn_handle (tree_anon_fcn_handle& afh)
35 {
36  tree_parameter_list *parameter_list = afh.parameter_list ();
37 
38  if (parameter_list)
39  parameter_list->accept (*this);
40 
41  tree_expression *expression = afh.expression ();
42 
43  if (expression)
44  expression->accept (*this);
45 }
46 
47 void
49 {
50  auto p = lst.begin ();
51 
52  while (p != lst.end ())
53  {
54  tree_expression *elt = *p++;
55 
56  if (elt)
57  elt->accept (*this);
58  }
59 }
60 
61 void
63 {
64  tree_args_block_attribute_list *attribute_list = blk.attribute_list ();
65 
66  if (attribute_list)
67  attribute_list->accept (*this);
68 
69  tree_args_block_validation_list *validation_list = blk.validation_list ();
70 
71  if (validation_list)
72  validation_list->accept (*this);
73 }
74 
75 void
77 {
78  tree_identifier *attribute = lst.attribute ();
79 
80  if (attribute)
81  attribute->accept (*this);
82 }
83 
84 void
86 {
87  for (auto *elt : lst)
88  {
89  if (elt)
90  elt->accept (*this);
91  }
92 }
93 
94 void
96 {
97  tree_expression *arg_name = val.identifier_expression ();
98 
99  if (arg_name)
100  arg_name->accept (*this);
101 
102  tree_arg_size_spec *size_spec = val.size_spec ();
103 
104  if (size_spec)
105  size_spec->accept (*this);
106 
107  tree_identifier *class_name = val.class_name ();
108 
109  if (class_name)
110  class_name->accept (*this);
111 
112  tree_arg_validation_fcns *validation_fcns = val.validation_fcns ();
113 
114  if (validation_fcns)
115  validation_fcns->accept (*this);
116 
117  tree_expression *default_value = val.initializer_expression ();
118 
119  if (default_value)
120  default_value->accept (*this);
121 }
122 
123 void
125 {
126  tree_argument_list *size_args = spec.size_args ();
127 
128  if (size_args)
129  size_args->accept (*this);
130 }
131 
132 void
134 {
135  tree_argument_list *fcn_args = spec.fcn_args ();
136 
137  if (fcn_args)
138  fcn_args->accept (*this);
139 }
140 
141 void
143 {
144  tree_expression *op1 = expr.lhs ();
145 
146  if (op1)
147  op1->accept (*this);
148 
149  tree_expression *op2 = expr.rhs ();
150 
151  if (op2)
152  op2->accept (*this);
153 }
154 
155 void
157 {
159 }
160 
161 void
163 {
165 }
166 
167 void
169 {
170  // Nothing to do.
171 }
172 
173 void
175 {
176  tree_expression *op1 = expr.base ();
177 
178  if (op1)
179  op1->accept (*this);
180 
181  tree_expression *op3 = expr.increment ();
182 
183  if (op3)
184  op3->accept (*this);
185 
186  tree_expression *op2 = expr.limit ();
187 
188  if (op2)
189  op2->accept (*this);
190 }
191 
192 void
194 {
195  // Nothing to do.
196 }
197 
198 void
200 {
201  tree_decl_init_list *init_list = cmd.initializer_list ();
202 
203  if (init_list)
204  init_list->accept (*this);
205 }
206 
207 void
209 {
210  tree_identifier *id = cmd.ident ();
211 
212  if (id)
213  id->accept (*this);
214 
215  tree_expression *expr = cmd.expression ();
216 
217  if (expr)
218  expr->accept (*this);
219 }
220 
221 void
223 {
224  // FIXME: tree_decl_elt is not derived from tree, so should it
225  // really have an accept method?
226 
227  for (tree_decl_elt *elt : lst)
228  {
229  if (elt)
230  elt->accept (*this);
231  }
232 }
233 
234 void
236 {
237  tree_expression *lhs = cmd.left_hand_side ();
238 
239  if (lhs)
240  lhs->accept (*this);
241 
242  tree_expression *expr = cmd.control_expr ();
243 
244  if (expr)
245  expr->accept (*this);
246 
247  tree_expression *maxproc = cmd.maxproc_expr ();
248 
249  if (maxproc)
250  maxproc->accept (*this);
251 
252  tree_statement_list *list = cmd.body ();
253 
254  if (list)
255  list->accept (*this);
256 }
257 
258 void
260 {
261  tree_argument_list *lhs = cmd.left_hand_side ();
262 
263  if (lhs)
264  lhs->accept (*this);
265 
266  tree_expression *expr = cmd.control_expr ();
267 
268  if (expr)
269  expr->accept (*this);
270 
271  tree_statement_list *list = cmd.body ();
272 
273  if (list)
274  list->accept (*this);
275 }
276 
277 void
279 {
280  tree_statement_list *body = cmd.body ();
281 
282  if (body)
283  body->accept (*this);
284 }
285 
286 void
288 {
289  tree_statement_list *cmd_list = fcn.body ();
290 
291  if (cmd_list)
292  cmd_list->accept (*this);
293 }
294 
295 void
297 {
298  tree_statement_list *cmd_list = fcn.body ();
299 
300  if (cmd_list)
301  cmd_list->accept (*this);
302 }
303 
304 void
306 {
307  octave_value fcn = fdef.function ();
308 
309  octave_function *f = fcn.function_value ();
310 
311  if (f)
312  f->accept (*this);
313 }
314 
315 void
317 {
318  // Nothing to do.
319 }
320 
321 void
323 {
324  tree_expression *expr = cmd.condition ();
325 
326  if (expr)
327  expr->accept (*this);
328 
329  tree_statement_list *list = cmd.commands ();
330 
331  if (list)
332  list->accept (*this);
333 }
334 
335 void
337 {
338  tree_if_command_list *list = cmd.cmd_list ();
339 
340  if (list)
341  list->accept (*this);
342 }
343 
344 void
346 {
347  auto p = lst.begin ();
348 
349  while (p != lst.end ())
350  {
351  tree_if_clause *elt = *p++;
352 
353  if (elt)
354  elt->accept (*this);
355  }
356 }
357 
358 void
360 {
361  tree_expression *label = cs.case_label ();
362 
363  if (label)
364  label->accept (*this);
365 
366  tree_statement_list *list = cs.commands ();
367 
368  if (list)
369  list->accept (*this);
370 }
371 
372 void
374 {
375  auto p = lst.begin ();
376 
377  while (p != lst.end ())
378  {
379  tree_switch_case *elt = *p++;
380 
381  if (elt)
382  elt->accept (*this);
383  }
384 }
385 
386 void
388 {
389  tree_expression *expr = cmd.switch_value ();
390 
391  if (expr)
392  expr->accept (*this);
393 
394  tree_switch_case_list *list = cmd.case_list ();
395 
396  if (list)
397  list->accept (*this);
398 }
399 
400 void
402 {
403  tree_expression *e = expr.expression ();
404 
405  if (e)
406  e->accept (*this);
407 
408  std::list<tree_argument_list *> arg_lists = expr.arg_lists ();
409  std::list<string_vector> arg_names = expr.arg_names ();
410  std::list<tree_expression *> dyn_fields = expr.dyn_fields ();
411 
412  auto p_arg_lists = arg_lists.begin ();
413  auto p_arg_names = arg_names.begin ();
414  auto p_dyn_fields = dyn_fields.begin ();
415 
416  std::string type_tags = expr.type_tags ();
417  int n = type_tags.length ();
418 
419  for (int i = 0; i < n; i++)
420  {
421  switch (type_tags[i])
422  {
423  case '(':
424  case '{':
425  {
426  tree_argument_list *l = *p_arg_lists;
427  if (l)
428  l->accept (*this);
429  }
430  break;
431 
432  case '.':
433  {
434  std::string fn = (*p_arg_names)(0);
435  if (fn.empty ())
436  {
437  tree_expression *df = *p_dyn_fields;
438  if (df)
439  df->accept (*this);
440  }
441  }
442  break;
443 
444  default:
445  panic_impossible ();
446  }
447 
448  p_arg_lists++;
449  p_arg_names++;
450  p_dyn_fields++;
451  }
452 }
453 
454 void
456 {
457  auto p = lst.begin ();
458 
459  while (p != lst.end ())
460  {
461  tree_argument_list *elt = *p++;
462 
463  if (elt)
464  elt->accept (*this);
465  }
466 }
467 
468 void
470 {
471  auto p = lst.begin ();
472 
473  while (p != lst.end ())
474  {
475  tree_argument_list *elt = *p++;
476 
477  if (elt)
478  elt->accept (*this);
479  }
480 }
481 
482 void
484 {
485  tree_argument_list *lhs = expr.left_hand_side ();
486 
487  if (lhs)
488  lhs->accept (*this);
489 
490  tree_expression *rhs = expr.right_hand_side ();
491 
492  if (rhs)
493  rhs->accept (*this);
494 }
495 
496 void
498 {
499  // Nothing to do.
500 }
501 
502 void
504 {
505  // Nothing to do.
506 }
507 
508 void
510 {
511  // Nothing to do.
512 }
513 
514 void
516 {
517  auto p = lst.begin ();
518 
519  while (p != lst.end ())
520  {
521  tree_decl_elt *elt = *p++;
522 
523  if (elt)
524  elt->accept (*this);
525  }
526 }
527 
528 void
530 {
531  tree_expression *e = expr.operand ();
532 
533  if (e)
534  e->accept (*this);
535 }
536 
537 void
539 {
540  tree_expression *e = expr.operand ();
541 
542  if (e)
543  e->accept (*this);
544 }
545 
546 void
548 {
549  // Nothing to do.
550 }
551 
552 void
554 {
555  tree_expression *lhs = expr.left_hand_side ();
556 
557  if (lhs)
558  lhs->accept (*this);
559 
560  tree_expression *rhs = expr.right_hand_side ();
561 
562  if (rhs)
563  rhs->accept (*this);
564 }
565 
566 void
568 {
569  tree_command *cmd = stmt.command ();
570 
571  if (cmd)
572  cmd->accept (*this);
573  else
574  {
575  tree_expression *expr = stmt.expression ();
576 
577  if (expr)
578  expr->accept (*this);
579  }
580 }
581 
582 void
584 {
585  for (tree_statement *elt : lst)
586  {
587  if (elt)
588  elt->accept (*this);
589  }
590 }
591 
592 void
594 {
595  tree_statement_list *try_code = cmd.body ();
596 
597  if (try_code)
598  try_code->accept (*this);
599 
600  tree_identifier *expr_id = cmd.identifier ();
601 
602  if (expr_id)
603  expr_id->accept (*this);
604 
605  tree_statement_list *catch_code = cmd.cleanup ();
606 
607  if (catch_code)
608  catch_code->accept (*this);
609 }
610 
611 void
613 {
614  tree_statement_list *unwind_protect_code = cmd.body ();
615 
616  if (unwind_protect_code)
617  unwind_protect_code->accept (*this);
618 
619  tree_statement_list *cleanup_code = cmd.cleanup ();
620 
621  if (cleanup_code)
622  cleanup_code->accept (*this);
623 }
624 
625 void
627 {
628  tree_expression *expr = cmd.condition ();
629 
630  if (expr)
631  expr->accept (*this);
632 
633  tree_statement_list *list = cmd.body ();
634 
635  if (list)
636  list->accept (*this);
637 }
638 
639 void
641 {
642  tree_statement_list *list = cmd.body ();
643 
644  if (list)
645  list->accept (*this);
646 
647  tree_expression *expr = cmd.condition ();
648 
649  if (expr)
650  expr->accept (*this);
651 }
652 
653 void
655 {
656  // Nothing to do.
657 }
658 
659 void
661 {
662  // Nothing to do.
663 }
664 
665 void
667 {
668  tree_identifier *id = attr.ident ();
669 
670  if (id)
671  id->accept (*this);
672 
673  tree_expression *expr = attr.expression ();
674 
675  if (expr)
676  expr->accept (*this);
677 }
678 
679 void
681 {
682  for (auto *elt : lst)
683  {
684  if (elt)
685  elt->accept (*this);
686  }
687 }
688 
689 void
691 {
692  // Nothing to do.
693 }
694 
695 void
697 {
698  for (auto *elt : lst)
699  {
700  if (elt)
701  elt->accept (*this);
702  }
703 }
704 
705 void
707 {
708  // FIXME: Should we operate on the tree_arg_validation object or the
709  // identifier and expression parts separately?
710 }
711 
712 void
714 {
715  for (auto *elt : lst)
716  {
717  if (elt)
718  elt->accept (*this);
719  }
720 }
721 
722 void
724 {
726 
727  if (property_list)
728  property_list->accept (*this);
729 }
730 
731 void
733 {
734  for (auto ov_meth : lst)
735  {
736  octave_user_function *meth = ov_meth.user_function_value ();
737 
738  if (meth)
739  meth->accept (*this);
740  }
741 }
742 
743 void
745 {
746  tree_classdef_methods_list *methods_list = blk.element_list ();
747 
748  if (methods_list)
749  methods_list->accept (*this);
750 }
751 
752 void
754 {
755  // Nothing to do.
756 }
757 
758 void
760 {
761  for (auto *elt : lst)
762  {
763  if (elt)
764  elt->accept (*this);
765  }
766 }
767 
768 void
770 {
771  tree_classdef_events_list *events_list = blk.element_list ();
772 
773  if (events_list)
774  events_list->accept (*this);
775 }
776 
777 void
779 {
780  // Nothing to do.
781 }
782 
783 void
785 {
786  for (auto *elt : lst)
787  {
788  if (elt)
789  elt->accept (*this);
790  }
791 }
792 
793 void
795 {
796  tree_classdef_enum_list *enum_list = blk.element_list ();
797 
798  if (enum_list)
799  enum_list->accept (*this);
800 }
801 
802 void
804 {
805  for (auto *elt : body.properties_list ())
806  {
807  if (elt)
808  elt->accept (*this);
809  }
810 
811  for (auto *elt : body.methods_list ())
812  {
813  if (elt)
814  elt->accept (*this);
815  }
816 
817 
818  for (auto *elt : body.events_list ())
819  {
820  if (elt)
821  elt->accept (*this);
822  }
823 
824  for (auto *elt : body.enum_list ())
825  {
826  if (elt)
827  elt->accept (*this);
828  }
829 }
830 
831 void
833 {
834  tree_classdef_attribute_list *attribute_list = cdef.attribute_list ();
835 
836  if (attribute_list)
837  attribute_list->accept (*this);
838 
839  tree_identifier *ident = cdef.ident ();
840 
841  if (ident)
842  ident->accept (*this);
843 
844  tree_classdef_superclass_list *superclass_list = cdef.superclass_list ();
845 
846  if (superclass_list)
847  superclass_list->accept (*this);
848 
849  tree_classdef_body *body = cdef.body ();
850 
851  if (body)
852  body->accept (*this);
853 }
854 
855 OCTAVE_END_NAMESPACE(octave)
iterator end()
Definition: base-list.h:68
iterator begin()
Definition: base-list.h:65
octave::tree_statement_list * body()
Definition: ov-usr-fcn.h:118
octave_user_function * user_function_value(bool=false)
Definition: ov-usr-fcn.h:218
void accept(octave::tree_walker &tw)
Definition: ov-usr-fcn.cc:498
octave_function * function_value(bool silent=false) const
tree_argument_list * size_args()
Definition: pt-args-block.h:59
void accept(tree_walker &tw)
Definition: pt-args-block.h:61
void accept(tree_walker &tw)
Definition: pt-args-block.h:88
tree_argument_list * fcn_args()
Definition: pt-args-block.h:86
tree_expression * identifier_expression()
tree_identifier * class_name()
tree_expression * initializer_expression()
tree_arg_validation_fcns * validation_fcns()
tree_arg_size_spec * size_spec()
tree_identifier * attribute()
void accept(tree_walker &tw)
void accept(tree_walker &tw)
void accept(tree_walker &tw)
Definition: pt-arg-list.h:102
tree_args_block_attribute_list * attribute_list()
tree_args_block_validation_list * validation_list()
tree_expression * lhs()
Definition: pt-binop.h:86
tree_expression * rhs()
Definition: pt-binop.h:87
void accept(tree_walker &tw)
Definition: pt-classdef.h:184
tree_identifier * ident()
Definition: pt-classdef.h:150
tree_expression * expression()
Definition: pt-classdef.h:152
std::list< tree_classdef_properties_block * > properties_list()
Definition: pt-classdef.h:630
std::list< tree_classdef_methods_block * > methods_list()
Definition: pt-classdef.h:635
void accept(tree_walker &tw)
Definition: pt-classdef.h:656
std::list< tree_classdef_events_block * > events_list()
Definition: pt-classdef.h:640
std::list< tree_classdef_enum_block * > enum_list()
Definition: pt-classdef.h:645
void accept(tree_walker &tw)
Definition: pt-classdef.h:546
void accept(tree_walker &tw)
Definition: pt-classdef.h:461
void accept(tree_walker &tw)
Definition: pt-classdef.h:380
void accept(tree_walker &tw)
Definition: pt-classdef.h:234
tree_identifier * ident()
Definition: pt-classdef.h:711
tree_classdef_body * body()
Definition: pt-classdef.h:716
tree_classdef_superclass_list * superclass_list()
Definition: pt-classdef.h:714
tree_classdef_attribute_list * attribute_list()
Definition: pt-classdef.h:709
tree_expression * limit()
Definition: pt-colon.h:82
tree_expression * base()
Definition: pt-colon.h:80
tree_expression * increment()
Definition: pt-colon.h:84
tree_statement_list * body()
Definition: pt-loop.h:233
tree_argument_list * left_hand_side()
Definition: pt-loop.h:229
tree_expression * control_expr()
Definition: pt-loop.h:231
tree_decl_init_list * initializer_list()
Definition: pt-decl.h:189
void accept(tree_walker &tw)
Definition: pt-decl.h:92
tree_identifier * ident()
Definition: pt-decl.h:84
tree_expression * expression()
Definition: pt-decl.h:88
void accept(tree_walker &tw)
Definition: pt-decl.h:155
octave_value function()
Definition: pt-cmd.h:107
void accept(tree_walker &tw)
Definition: pt-id.h:101
void accept(tree_walker &tw)
Definition: pt-select.h:72
tree_expression * condition()
Definition: pt-select.h:66
tree_statement_list * commands()
Definition: pt-select.h:68
void accept(tree_walker &tw)
Definition: pt-select.h:109
tree_if_command_list * cmd_list()
Definition: pt-select.h:133
tree_expression * expression()
Definition: pt-idx.h:80
std::string type_tags()
Definition: pt-idx.h:84
std::list< tree_argument_list * > arg_lists()
Definition: pt-idx.h:82
std::list< string_vector > arg_names()
Definition: pt-idx.h:86
std::list< tree_expression * > dyn_fields()
Definition: pt-idx.h:88
tree_argument_list * left_hand_side()
Definition: pt-assign.h:140
tree_expression * right_hand_side()
Definition: pt-assign.h:142
void accept(tree_walker &tw)
Definition: pt-misc.h:98
tree_expression * left_hand_side()
Definition: pt-assign.h:73
tree_expression * right_hand_side()
Definition: pt-assign.h:75
tree_expression * left_hand_side()
Definition: pt-loop.h:165
tree_expression * control_expr()
Definition: pt-loop.h:167
tree_expression * maxproc_expr()
Definition: pt-loop.h:169
tree_statement_list * body()
Definition: pt-loop.h:171
tree_statement_list * body()
Definition: pt-spmd.h:55
void accept(tree_walker &tw)
Definition: pt-stmt.h:191
tree_command * command()
Definition: pt-stmt.h:95
tree_expression * expression()
Definition: pt-stmt.h:97
void accept(tree_walker &tw)
Definition: pt-select.h:224
tree_statement_list * commands()
Definition: pt-select.h:183
tree_expression * case_label()
Definition: pt-select.h:181
void accept(tree_walker &tw)
Definition: pt-select.h:187
tree_switch_case_list * case_list()
Definition: pt-select.h:250
tree_expression * switch_value()
Definition: pt-select.h:248
tree_statement_list * cleanup()
Definition: pt-except.h:70
tree_identifier * identifier()
Definition: pt-except.h:66
tree_statement_list * body()
Definition: pt-except.h:68
tree_expression * operand()
Definition: pt-unop.h:68
tree_statement_list * cleanup()
Definition: pt-except.h:132
tree_statement_list * body()
Definition: pt-except.h:130
virtual void visit_compound_binary_expression(tree_compound_binary_expression &)
Definition: pt-walk.cc:162
virtual void visit_classdef_attribute(tree_classdef_attribute &)
Definition: pt-walk.cc:666
virtual void visit_boolean_expression(tree_boolean_expression &)
Definition: pt-walk.cc:156
virtual void visit_unwind_protect_command(tree_unwind_protect_command &)
Definition: pt-walk.cc:612
virtual void visit_try_catch_command(tree_try_catch_command &)
Definition: pt-walk.cc:593
virtual void visit_if_command_list(tree_if_command_list &)
Definition: pt-walk.cc:345
virtual void visit_classdef_methods_list(tree_classdef_methods_list &)
Definition: pt-walk.cc:732
virtual void visit_multi_assignment(tree_multi_assignment &)
Definition: pt-walk.cc:483
virtual void visit_return_command(tree_return_command &)
Definition: pt-walk.cc:547
virtual void visit_classdef_methods_block(tree_classdef_methods_block &)
Definition: pt-walk.cc:744
virtual void visit_continue_command(tree_continue_command &)
Definition: pt-walk.cc:193
virtual void visit_classdef_enum_block(tree_classdef_enum_block &)
Definition: pt-walk.cc:794
virtual void visit_classdef(tree_classdef &)
Definition: pt-walk.cc:832
virtual void visit_switch_case_list(tree_switch_case_list &)
Definition: pt-walk.cc:373
virtual void visit_classdef_superclass(tree_classdef_superclass &)
Definition: pt-walk.cc:690
virtual void visit_classdef_property(tree_classdef_property &)
Definition: pt-walk.cc:706
virtual void visit_complex_for_command(tree_complex_for_command &)
Definition: pt-walk.cc:259
virtual void visit_break_command(tree_break_command &)
Definition: pt-walk.cc:168
virtual void visit_matrix(tree_matrix &)
Definition: pt-walk.cc:455
virtual void visit_args_block_validation_list(tree_args_block_validation_list &)
Definition: pt-walk.cc:85
virtual void visit_fcn_handle(tree_fcn_handle &)
Definition: pt-walk.cc:509
virtual void visit_colon_expression(tree_colon_expression &)
Definition: pt-walk.cc:174
virtual void visit_arg_size_spec(tree_arg_size_spec &)
Definition: pt-walk.cc:124
virtual void visit_spmd_command(tree_spmd_command &)
Definition: pt-walk.cc:278
virtual void visit_do_until_command(tree_do_until_command &)
Definition: pt-walk.cc:640
virtual void visit_no_op_command(tree_no_op_command &)
Definition: pt-walk.cc:497
virtual void visit_binary_expression(tree_binary_expression &)
Definition: pt-walk.cc:142
virtual void visit_classdef_events_block(tree_classdef_events_block &)
Definition: pt-walk.cc:769
virtual void visit_simple_for_command(tree_simple_for_command &)
Definition: pt-walk.cc:235
virtual void visit_classdef_property_list(tree_classdef_property_list &)
Definition: pt-walk.cc:713
virtual void visit_postfix_expression(tree_postfix_expression &)
Definition: pt-walk.cc:529
virtual void visit_prefix_expression(tree_prefix_expression &)
Definition: pt-walk.cc:538
virtual void visit_classdef_body(tree_classdef_body &)
Definition: pt-walk.cc:803
virtual void visit_classdef_enum(tree_classdef_enum &)
Definition: pt-walk.cc:778
virtual void visit_args_block_attribute_list(tree_args_block_attribute_list &)
Definition: pt-walk.cc:76
virtual void visit_parameter_list(tree_parameter_list &)
Definition: pt-walk.cc:515
virtual void visit_arguments_block(tree_arguments_block &)
Definition: pt-walk.cc:62
virtual void visit_statement(tree_statement &)
Definition: pt-walk.cc:567
virtual void visit_index_expression(tree_index_expression &)
Definition: pt-walk.cc:401
virtual void visit_decl_command(tree_decl_command &)
Definition: pt-walk.cc:199
virtual void visit_classdef_enum_list(tree_classdef_enum_list &)
Definition: pt-walk.cc:784
virtual void visit_switch_case(tree_switch_case &)
Definition: pt-walk.cc:359
virtual void visit_cell(tree_cell &)
Definition: pt-walk.cc:469
virtual void visit_identifier(tree_identifier &)
Definition: pt-walk.cc:316
virtual void visit_classdef_properties_block(tree_classdef_properties_block &)
Definition: pt-walk.cc:723
virtual void visit_classdef_superclass_list(tree_classdef_superclass_list &)
Definition: pt-walk.cc:696
virtual void visit_decl_init_list(tree_decl_init_list &)
Definition: pt-walk.cc:222
virtual void visit_if_clause(tree_if_clause &)
Definition: pt-walk.cc:322
virtual void visit_statement_list(tree_statement_list &)
Definition: pt-walk.cc:583
virtual void visit_arg_validation_fcns(tree_arg_validation_fcns &)
Definition: pt-walk.cc:133
virtual void visit_if_command(tree_if_command &)
Definition: pt-walk.cc:336
virtual void visit_argument_list(tree_argument_list &)
Definition: pt-walk.cc:48
virtual void visit_classdef_attribute_list(tree_classdef_attribute_list &)
Definition: pt-walk.cc:680
virtual void visit_decl_elt(tree_decl_elt &)
Definition: pt-walk.cc:208
virtual void visit_classdef_event(tree_classdef_event &)
Definition: pt-walk.cc:753
virtual void visit_classdef_events_list(tree_classdef_events_list &)
Definition: pt-walk.cc:759
virtual void visit_constant(tree_constant &)
Definition: pt-walk.cc:503
virtual void visit_simple_assignment(tree_simple_assignment &)
Definition: pt-walk.cc:553
virtual void visit_superclass_ref(tree_superclass_ref &)
Definition: pt-walk.cc:654
virtual void visit_octave_user_script(octave_user_script &)
Definition: pt-walk.cc:287
virtual void visit_arg_validation(tree_arg_validation &)
Definition: pt-walk.cc:95
virtual void visit_octave_user_function(octave_user_function &)
Definition: pt-walk.cc:296
virtual void visit_function_def(tree_function_def &)
Definition: pt-walk.cc:305
virtual void visit_metaclass_query(tree_metaclass_query &)
Definition: pt-walk.cc:660
virtual void visit_while_command(tree_while_command &)
Definition: pt-walk.cc:626
virtual void visit_switch_command(tree_switch_command &)
Definition: pt-walk.cc:387
tree_statement_list * body()
Definition: pt-loop.h:75
tree_expression * condition()
Definition: pt-loop.h:73
virtual void accept(tree_walker &tw)=0
OCTAVE_BEGIN_NAMESPACE(octave) static octave_value daspk_fcn
#define panic_impossible()
Definition: error.h:503
F77_RET_T const F77_DBLE const F77_DBLE * f
octave_idx_type n
Definition: mx-inlines.cc:761