Mercurial > octave-antonio
diff src/parse.y @ 3933:f9ea3dcf58ee
[project @ 2002-05-15 03:21:00 by jwe]
author | jwe |
---|---|
date | Wed, 15 May 2002 03:21:01 +0000 |
parents | 61d4427c016e |
children | 3dd8d3dc28d4 |
line wrap: on
line diff
--- a/src/parse.y Tue May 07 18:10:44 2002 +0000 +++ b/src/parse.y Wed May 15 03:21:01 2002 +0000 @@ -280,8 +280,8 @@ // Make an index expression. static tree_index_expression * -make_index_expression (tree_expression *expr, tree_argument_list *args, - tree_index_expression::type); +make_index_expression (tree_expression *expr, + tree_argument_list *args, char type); // Make an indirect reference expression. static tree_index_expression * @@ -697,25 +697,13 @@ postfix_expr : primary_expr { $$ = $1; } | postfix_expr '(' ')' - { - $$ = make_index_expression ($1, 0, - tree_index_expression::paren); - } + { $$ = make_index_expression ($1, 0, '('); } | postfix_expr '(' arg_list ')' - { - $$ = make_index_expression ($1, $3, - tree_index_expression::paren); - } + { $$ = make_index_expression ($1, $3, '('); } | postfix_expr '{' '}' - { - $$ = make_index_expression ($1, 0, - tree_index_expression::brace); - } + { $$ = make_index_expression ($1, 0, '{'); } | postfix_expr '{' arg_list '}' - { - $$ = make_index_expression ($1, $3, - tree_index_expression::brace); - } + { $$ = make_index_expression ($1, $3, '{'); } | postfix_expr PLUS_PLUS { $$ = make_postfix_op (PLUS_PLUS, $1, $2); } | postfix_expr MINUS_MINUS @@ -852,10 +840,7 @@ ; word_list_cmd : identifier word_list - { - $$ = make_index_expression ($1, $2, - tree_index_expression::paren); - } + { $$ = make_index_expression ($1, $2, '('); } ; word_list : TEXT @@ -2591,7 +2576,7 @@ static tree_index_expression * make_index_expression (tree_expression *expr, tree_argument_list *args, - tree_index_expression::type t) + char type) { tree_index_expression *retval = 0; @@ -2600,7 +2585,16 @@ expr->mark_postfix_indexed (); - retval = new tree_index_expression (expr, args, l, c, t); + if (expr->is_index_expression ()) + { + tree_index_expression *tmp = static_cast<tree_index_expression *> (expr); + + tmp->append (args, type); + + retval = tmp; + } + else + retval = new tree_index_expression (expr, args, l, c, type); return retval; } @@ -2615,7 +2609,16 @@ int l = expr->line (); int c = expr->column (); - retval = new tree_index_expression (expr, elt, l, c); + if (expr->is_index_expression ()) + { + tree_index_expression *tmp = static_cast<tree_index_expression *> (expr); + + tmp->append (elt); + + retval = tmp; + } + else + retval = new tree_index_expression (expr, elt, l, c); lexer_flags.looking_at_indirect_ref = false;